mis-crystal-design-system 14.0.55 → 14.0.56-test

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.
@@ -1,4 +1,4 @@
1
- import { Component, EventEmitter, Input, Output } from "@angular/core";
1
+ import { Component, ContentChild, EventEmitter, Input, Output } from "@angular/core";
2
2
  import { UntypedFormArray, UntypedFormControl, UntypedFormGroup, Validators } from "@angular/forms";
3
3
  import moment from "moment-timezone";
4
4
  import "moment-timezone";
@@ -9,7 +9,15 @@ import * as i3 from "mis-crystal-design-system/dropdown";
9
9
  import * as i4 from "mis-crystal-design-system/switch";
10
10
  import * as i5 from "mis-crystal-design-system/multi-select-dropdown";
11
11
  import * as i6 from "mis-crystal-design-system/datepicker_v2";
12
- const _c0 = function (a0, a1) { return { $implicit: a0, control: a1 }; };
12
+ const _c0 = ["customInputTextNumber"];
13
+ const _c1 = ["customInputTextarea"];
14
+ const _c2 = ["customInputDate"];
15
+ const _c3 = ["customBooleanToggle"];
16
+ const _c4 = ["customSingleSelectDropdown"];
17
+ const _c5 = ["customSingleSelectRadio"];
18
+ const _c6 = ["customMultiSelectCheckbox"];
19
+ const _c7 = ["customMultiSelectDropdown"];
20
+ const _c8 = function (a0, a1) { return { $implicit: a0, control: a1 }; };
13
21
  function DynamicFormComponent_ng_container_2_div_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
14
22
  i0.ɵɵelementContainerStart(0);
15
23
  i0.ɵɵelementContainer(1, 6);
@@ -23,7 +31,7 @@ function DynamicFormComponent_ng_container_2_div_2_ng_container_1_Template(rf, c
23
31
  const ctx_r8 = i0.ɵɵnextContext();
24
32
  const _r1 = i0.ɵɵreference(4);
25
33
  i0.ɵɵadvance(1);
26
- i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c0, ctx_r8.findSelectedSubFieldConfig(ctx_r8.formFields[i_r6] == null ? null : ctx_r8.formFields[i_r6].subFields, fieldControl_r5.controls.value.value.value, j_r10), subFieldControl_r9));
34
+ i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c8, ctx_r8.findSelectedSubFieldConfig(ctx_r8.formFields[i_r6] == null ? null : ctx_r8.formFields[i_r6].subFields, fieldControl_r5.controls.value.value.value, j_r10), subFieldControl_r9));
27
35
  } }
28
36
  function DynamicFormComponent_ng_container_2_div_2_Template(rf, ctx) { if (rf & 1) {
29
37
  i0.ɵɵelementStart(0, "div", 8);
@@ -34,7 +42,7 @@ function DynamicFormComponent_ng_container_2_div_2_Template(rf, ctx) { if (rf &
34
42
  i0.ɵɵadvance(1);
35
43
  i0.ɵɵproperty("ngForOf", fieldControl_r5.controls.subFields.controls);
36
44
  } }
37
- const _c1 = function (a0, a1, a2) { return { $implicit: a0, formGroup: a1, control: a2 }; };
45
+ const _c9 = function (a0, a1, a2) { return { $implicit: a0, formGroup: a1, control: a2 }; };
38
46
  function DynamicFormComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
39
47
  i0.ɵɵelementContainerStart(0, 5);
40
48
  i0.ɵɵelementContainer(1, 6);
@@ -47,137 +55,202 @@ function DynamicFormComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
47
55
  const _r1 = i0.ɵɵreference(4);
48
56
  i0.ɵɵproperty("formGroupName", i_r6);
49
57
  i0.ɵɵadvance(1);
50
- i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction3(4, _c1, ctx_r0.formFields[i_r6], fieldControl_r5, fieldControl_r5.controls.value));
58
+ i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction3(4, _c9, ctx_r0.formFields[i_r6], fieldControl_r5, fieldControl_r5.controls.value));
51
59
  i0.ɵɵadvance(1);
52
60
  i0.ɵɵproperty("ngIf", fieldControl_r5.value && (!!(ctx_r0.formFields[i_r6] == null ? null : ctx_r0.formFields[i_r6].subFields) && (ctx_r0.formFields[i_r6] == null ? null : ctx_r0.formFields[i_r6].subFields == null ? null : ctx_r0.formFields[i_r6].subFields.length) > 0 && ctx_r0.matchParentConfig(ctx_r0.formFields[i_r6] == null ? null : ctx_r0.formFields[i_r6].subFields, fieldControl_r5.controls.value.value.value)));
53
61
  } }
54
- function DynamicFormComponent_ng_template_3_div_0_span_3_Template(rf, ctx) { if (rf & 1) {
62
+ function DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_ng_template_1_Template(rf, ctx) { }
63
+ const _c10 = function (a0, a1, a2) { return { field: a0, control: a1, formgroup: a2 }; };
64
+ function DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
65
+ i0.ɵɵelementContainerStart(0);
66
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
67
+ i0.ɵɵelementContainerEnd();
68
+ } if (rf & 2) {
69
+ const ctx_r28 = i0.ɵɵnextContext(2);
70
+ const field_r13 = ctx_r28.$implicit;
71
+ const control_r14 = ctx_r28.control;
72
+ const formgroup_r15 = ctx_r28.formGroup;
73
+ const ctx_r24 = i0.ɵɵnextContext();
74
+ i0.ɵɵadvance(1);
75
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r24.customInputTextNumber)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
76
+ } }
77
+ function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
55
78
  i0.ɵɵelementStart(0, "span");
56
79
  i0.ɵɵtext(1, " *");
57
80
  i0.ɵɵelementEnd();
58
81
  } }
59
- const _c2 = function (a0) { return { $implicit: a0 }; };
60
- function DynamicFormComponent_ng_template_3_div_0_ng_container_6_Template(rf, ctx) { if (rf & 1) {
82
+ const _c11 = function (a0) { return { $implicit: a0 }; };
83
+ function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_ng_container_6_Template(rf, ctx) { if (rf & 1) {
61
84
  i0.ɵɵelementContainer(0, 6);
62
85
  } if (rf & 2) {
63
- const control_r14 = i0.ɵɵnextContext(2).control;
86
+ const control_r14 = i0.ɵɵnextContext(3).control;
64
87
  i0.ɵɵnextContext();
65
88
  const _r3 = i0.ɵɵreference(6);
66
- i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r14.errors));
89
+ i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
67
90
  } }
68
- const _c3 = function (a0) { return { "border-bottom": a0 }; };
69
- const _c4 = function (a0) { return { "border": a0 }; };
70
- function DynamicFormComponent_ng_template_3_div_0_Template(rf, ctx) { if (rf & 1) {
71
- const _r29 = i0.ɵɵgetCurrentView();
72
- i0.ɵɵelementStart(0, "div", 12)(1, "p", 13);
91
+ const _c12 = function (a0) { return { "border-bottom": a0 }; };
92
+ const _c13 = function (a0) { return { "border": a0 }; };
93
+ function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {
94
+ const _r34 = i0.ɵɵgetCurrentView();
95
+ i0.ɵɵelementStart(0, "div", 13)(1, "p", 14);
73
96
  i0.ɵɵtext(2);
74
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_div_0_span_3_Template, 2, 0, "span", 14);
97
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_span_3_Template, 2, 0, "span", 10);
75
98
  i0.ɵɵelementEnd();
76
99
  i0.ɵɵelement(4, "div", 15);
77
100
  i0.ɵɵelementStart(5, "input", 16);
78
- i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_div_0_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(); const field_r13 = ctx_r28.$implicit; const formgroup_r15 = ctx_r28.formGroup; const ctx_r27 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r27.updateSubDynamicFields(field_r13, formgroup_r15, $event)); });
101
+ i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(2); const field_r13 = ctx_r33.$implicit; const formgroup_r15 = ctx_r33.formGroup; const ctx_r32 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r32.updateSubDynamicFields(field_r13, formgroup_r15, $event)); });
79
102
  i0.ɵɵelementEnd();
80
- i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_0_ng_container_6_Template, 1, 4, "ng-container", 17);
103
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_ng_container_6_Template, 1, 4, "ng-container", 17);
81
104
  i0.ɵɵelementEnd();
82
105
  } if (rf & 2) {
83
- const ctx_r30 = i0.ɵɵnextContext();
84
- const formgroup_r15 = ctx_r30.formGroup;
85
- const field_r13 = ctx_r30.$implicit;
86
- const control_r14 = ctx_r30.control;
87
- const ctx_r16 = i0.ɵɵnextContext();
88
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c3, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r16.removeSepratorForSubFields ? "none" : ""));
106
+ const ctx_r35 = i0.ɵɵnextContext(2);
107
+ const formgroup_r15 = ctx_r35.formGroup;
108
+ const field_r13 = ctx_r35.$implicit;
109
+ const control_r14 = ctx_r35.control;
110
+ const ctx_r26 = i0.ɵɵnextContext();
111
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r26.removeSepratorForSubFields ? "none" : ""));
89
112
  i0.ɵɵadvance(2);
90
- i0.ɵɵtextInterpolate1(" ", field_r13.title, " ");
113
+ i0.ɵɵtextInterpolate1(" ", field_r13 == null ? null : field_r13.title, " ");
91
114
  i0.ɵɵadvance(1);
92
115
  i0.ɵɵproperty("ngIf", field_r13.validators && field_r13.validators.length > 0);
93
116
  i0.ɵɵadvance(2);
94
- i0.ɵɵproperty("type", field_r13.fieldInputType)("formControl", control_r14)("ngStyle", i0.ɵɵpureFunction1(11, _c4, control_r14.touched && control_r14.errors ? "1px solid #B00020" : ""))("placeholder", field_r13.placeholderText ? field_r13.placeholderText : "Input Text")("min", field_r13.fieldInputType === "number" ? 0 : "");
117
+ i0.ɵɵproperty("type", field_r13.fieldInputType)("formControl", control_r14)("ngStyle", i0.ɵɵpureFunction1(11, _c13, control_r14.touched && control_r14.errors ? "1px solid #B00020" : ""))("placeholder", field_r13.placeholderText ? field_r13.placeholderText : "Input Text")("min", field_r13.fieldInputType === "number" ? 0 : "");
95
118
  i0.ɵɵadvance(1);
96
119
  i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
97
120
  } }
98
- function DynamicFormComponent_ng_template_3_div_1_span_3_Template(rf, ctx) { if (rf & 1) {
121
+ function DynamicFormComponent_ng_template_3_ng_container_0_Template(rf, ctx) { if (rf & 1) {
122
+ i0.ɵɵelementContainerStart(0);
123
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_Template, 2, 6, "ng-container", 11);
124
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template, 7, 13, "ng-template", null, 12, i0.ɵɵtemplateRefExtractor);
125
+ i0.ɵɵelementContainerEnd();
126
+ } if (rf & 2) {
127
+ const _r25 = i0.ɵɵreference(3);
128
+ const ctx_r16 = i0.ɵɵnextContext(2);
129
+ i0.ɵɵadvance(1);
130
+ i0.ɵɵproperty("ngIf", ctx_r16.customInputTextNumber)("ngIfElse", _r25);
131
+ } }
132
+ function DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_ng_template_1_Template(rf, ctx) { }
133
+ function DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
134
+ i0.ɵɵelementContainerStart(0);
135
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
136
+ i0.ɵɵelementContainerEnd();
137
+ } if (rf & 2) {
138
+ const ctx_r40 = i0.ɵɵnextContext(2);
139
+ const field_r13 = ctx_r40.$implicit;
140
+ const control_r14 = ctx_r40.control;
141
+ const formgroup_r15 = ctx_r40.formGroup;
142
+ const ctx_r36 = i0.ɵɵnextContext();
143
+ i0.ɵɵadvance(1);
144
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r36.customInputTextarea)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
145
+ } }
146
+ function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
99
147
  i0.ɵɵelementStart(0, "span");
100
148
  i0.ɵɵtext(1, " *");
101
149
  i0.ɵɵelementEnd();
102
150
  } }
103
- function DynamicFormComponent_ng_template_3_div_1_ng_container_6_Template(rf, ctx) { if (rf & 1) {
151
+ function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_ng_container_6_Template(rf, ctx) { if (rf & 1) {
104
152
  i0.ɵɵelementContainer(0, 6);
105
153
  } if (rf & 2) {
106
- const control_r14 = i0.ɵɵnextContext(2).control;
154
+ const control_r14 = i0.ɵɵnextContext(3).control;
107
155
  i0.ɵɵnextContext();
108
156
  const _r3 = i0.ɵɵreference(6);
109
- i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r14.errors));
157
+ i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
110
158
  } }
111
- function DynamicFormComponent_ng_template_3_div_1_Template(rf, ctx) { if (rf & 1) {
112
- const _r36 = i0.ɵɵgetCurrentView();
113
- i0.ɵɵelementStart(0, "div", 12)(1, "p", 13);
159
+ function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
160
+ const _r46 = i0.ɵɵgetCurrentView();
161
+ i0.ɵɵelementStart(0, "div", 13)(1, "p", 14);
114
162
  i0.ɵɵtext(2);
115
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_div_1_span_3_Template, 2, 0, "span", 14);
163
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_span_3_Template, 2, 0, "span", 10);
116
164
  i0.ɵɵelementEnd();
117
165
  i0.ɵɵelement(4, "div", 15);
118
- i0.ɵɵelementStart(5, "textarea", 18);
119
- i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_div_1_Template_textarea_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(); const field_r13 = ctx_r35.$implicit; const formgroup_r15 = ctx_r35.formGroup; const ctx_r34 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r34.updateSubDynamicFields(field_r13, formgroup_r15, $event)); });
166
+ i0.ɵɵelementStart(5, "textarea", 19);
167
+ i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template_textarea_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r46); const ctx_r45 = i0.ɵɵnextContext(2); const field_r13 = ctx_r45.$implicit; const formgroup_r15 = ctx_r45.formGroup; const ctx_r44 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r44.updateSubDynamicFields(field_r13, formgroup_r15, $event)); });
120
168
  i0.ɵɵelementEnd();
121
- i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_1_ng_container_6_Template, 1, 4, "ng-container", 17);
169
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_ng_container_6_Template, 1, 4, "ng-container", 17);
122
170
  i0.ɵɵelementEnd();
123
171
  } if (rf & 2) {
124
- const ctx_r37 = i0.ɵɵnextContext();
125
- const formgroup_r15 = ctx_r37.formGroup;
126
- const field_r13 = ctx_r37.$implicit;
127
- const control_r14 = ctx_r37.control;
128
- const ctx_r17 = i0.ɵɵnextContext();
129
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(7, _c3, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r17.removeSepratorForSubFields ? "none" : ""));
172
+ const ctx_r47 = i0.ɵɵnextContext(2);
173
+ const formgroup_r15 = ctx_r47.formGroup;
174
+ const field_r13 = ctx_r47.$implicit;
175
+ const control_r14 = ctx_r47.control;
176
+ const ctx_r38 = i0.ɵɵnextContext();
177
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(7, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r38.removeSepratorForSubFields ? "none" : ""));
130
178
  i0.ɵɵadvance(2);
131
179
  i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
132
180
  i0.ɵɵadvance(1);
133
181
  i0.ɵɵproperty("ngIf", field_r13.validators && field_r13.validators.length > 0);
134
182
  i0.ɵɵadvance(2);
135
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c4, control_r14.touched && control_r14.errors ? "1px solid #B00020" : ""))("placeholder", field_r13.placeholderText ? field_r13.placeholderText : "Input Text")("formControl", control_r14);
183
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c13, control_r14.touched && control_r14.errors ? "1px solid #B00020" : ""))("placeholder", field_r13.placeholderText ? field_r13.placeholderText : "Input Text")("formControl", control_r14);
136
184
  i0.ɵɵadvance(1);
137
185
  i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
138
186
  } }
139
- function DynamicFormComponent_ng_template_3_div_2_span_3_Template(rf, ctx) { if (rf & 1) {
187
+ function DynamicFormComponent_ng_template_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
188
+ i0.ɵɵelementContainerStart(0);
189
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_Template, 2, 6, "ng-container", 11);
190
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template, 7, 11, "ng-template", null, 18, i0.ɵɵtemplateRefExtractor);
191
+ i0.ɵɵelementContainerEnd();
192
+ } if (rf & 2) {
193
+ const _r37 = i0.ɵɵreference(3);
194
+ const ctx_r17 = i0.ɵɵnextContext(2);
195
+ i0.ɵɵadvance(1);
196
+ i0.ɵɵproperty("ngIf", ctx_r17.customInputTextarea)("ngIfElse", _r37);
197
+ } }
198
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_ng_template_1_Template(rf, ctx) { }
199
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
200
+ i0.ɵɵelementContainerStart(0);
201
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
202
+ i0.ɵɵelementContainerEnd();
203
+ } if (rf & 2) {
204
+ const ctx_r52 = i0.ɵɵnextContext(2);
205
+ const field_r13 = ctx_r52.$implicit;
206
+ const control_r14 = ctx_r52.control;
207
+ const formgroup_r15 = ctx_r52.formGroup;
208
+ const ctx_r48 = i0.ɵɵnextContext();
209
+ i0.ɵɵadvance(1);
210
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r48.customInputDate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
211
+ } }
212
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_span_3_Template(rf, ctx) { if (rf & 1) {
140
213
  i0.ɵɵelementStart(0, "span");
141
214
  i0.ɵɵtext(1, " *");
142
215
  i0.ɵɵelementEnd();
143
216
  } }
144
- function DynamicFormComponent_ng_template_3_div_2_img_7_Template(rf, ctx) { if (rf & 1) {
145
- const _r43 = i0.ɵɵgetCurrentView();
146
- i0.ɵɵelementStart(0, "img", 25);
147
- i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_div_2_img_7_Template_img_click_0_listener() { i0.ɵɵrestoreView(_r43); i0.ɵɵnextContext(); const _r39 = i0.ɵɵreference(6); return i0.ɵɵresetView(_r39.click()); });
217
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template(rf, ctx) { if (rf & 1) {
218
+ const _r59 = i0.ɵɵgetCurrentView();
219
+ i0.ɵɵelementStart(0, "img", 28);
220
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template_img_click_0_listener() { i0.ɵɵrestoreView(_r59); i0.ɵɵnextContext(); const _r55 = i0.ɵɵreference(6); return i0.ɵɵresetView(_r55.click()); });
148
221
  i0.ɵɵelementEnd();
149
222
  } if (rf & 2) {
150
- const ctx_r40 = i0.ɵɵnextContext(3);
151
- i0.ɵɵproperty("src", ctx_r40.calendarIconUrl, i0.ɵɵsanitizeUrl);
223
+ const ctx_r56 = i0.ɵɵnextContext(5);
224
+ i0.ɵɵproperty("src", ctx_r56.calendarIconUrl, i0.ɵɵsanitizeUrl);
152
225
  } }
153
- function DynamicFormComponent_ng_template_3_div_2_ng_container_8_Template(rf, ctx) { if (rf & 1) {
226
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_ng_container_8_Template(rf, ctx) { if (rf & 1) {
154
227
  i0.ɵɵelementContainer(0, 6);
155
228
  } if (rf & 2) {
156
- const control_r14 = i0.ɵɵnextContext(2).control;
229
+ const control_r14 = i0.ɵɵnextContext(4).control;
157
230
  i0.ɵɵnextContext();
158
231
  const _r3 = i0.ɵɵreference(6);
159
- i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r14.errors));
232
+ i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
160
233
  } }
161
- function DynamicFormComponent_ng_template_3_div_2_Template(rf, ctx) { if (rf & 1) {
162
- const _r47 = i0.ɵɵgetCurrentView();
163
- i0.ɵɵelementStart(0, "div", 19)(1, "p", 20);
234
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template(rf, ctx) { if (rf & 1) {
235
+ const _r63 = i0.ɵɵgetCurrentView();
236
+ i0.ɵɵelementStart(0, "div", 22)(1, "p", 23);
164
237
  i0.ɵɵtext(2);
165
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_div_2_span_3_Template, 2, 0, "span", 14);
238
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_span_3_Template, 2, 0, "span", 10);
166
239
  i0.ɵɵelementEnd();
167
- i0.ɵɵelementStart(4, "div", 21)(5, "input", 22, 23);
168
- i0.ɵɵlistener("dateChange", function DynamicFormComponent_ng_template_3_div_2_Template_input_dateChange_5_listener($event) { i0.ɵɵrestoreView(_r47); const control_r14 = i0.ɵɵnextContext().control; return i0.ɵɵresetView(control_r14.setValue($event)); });
240
+ i0.ɵɵelementStart(4, "div", 24)(5, "input", 25, 26);
241
+ i0.ɵɵlistener("dateChange", function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template_input_dateChange_5_listener($event) { i0.ɵɵrestoreView(_r63); const control_r14 = i0.ɵɵnextContext(3).control; return i0.ɵɵresetView(control_r14.setValue($event)); });
169
242
  i0.ɵɵelementEnd();
170
- i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_div_2_img_7_Template, 1, 1, "img", 24);
243
+ i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template, 1, 1, "img", 27);
171
244
  i0.ɵɵelementEnd();
172
- i0.ɵɵtemplate(8, DynamicFormComponent_ng_template_3_div_2_ng_container_8_Template, 1, 4, "ng-container", 17);
245
+ i0.ɵɵtemplate(8, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_ng_container_8_Template, 1, 4, "ng-container", 17);
173
246
  i0.ɵɵelementEnd();
174
247
  } if (rf & 2) {
175
- const ctx_r48 = i0.ɵɵnextContext();
176
- const formgroup_r15 = ctx_r48.formGroup;
177
- const field_r13 = ctx_r48.$implicit;
178
- const control_r14 = ctx_r48.control;
179
- const ctx_r18 = i0.ɵɵnextContext();
180
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c3, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r18.removeSepratorForSubFields ? "none" : ""));
248
+ const ctx_r64 = i0.ɵɵnextContext(3);
249
+ const formgroup_r15 = ctx_r64.formGroup;
250
+ const field_r13 = ctx_r64.$implicit;
251
+ const control_r14 = ctx_r64.control;
252
+ const ctx_r53 = i0.ɵɵnextContext();
253
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r53.removeSepratorForSubFields ? "none" : ""));
181
254
  i0.ɵɵadvance(2);
182
255
  i0.ɵɵtextInterpolate1(" ", field_r13.title, " ");
183
256
  i0.ɵɵadvance(1);
@@ -185,41 +258,72 @@ function DynamicFormComponent_ng_template_3_div_2_Template(rf, ctx) { if (rf & 1
185
258
  i0.ɵɵadvance(2);
186
259
  i0.ɵɵproperty("dpConfig", field_r13.fieldConfig)("selectedDate", control_r14.value)("offsetY", 0)("value", control_r14.value);
187
260
  i0.ɵɵadvance(2);
188
- i0.ɵɵproperty("ngIf", ctx_r18.calendarIconUrl);
261
+ i0.ɵɵproperty("ngIf", ctx_r53.calendarIconUrl);
189
262
  i0.ɵɵadvance(1);
190
263
  i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
191
264
  } }
192
- function DynamicFormComponent_ng_template_3_div_3_span_3_Template(rf, ctx) { if (rf & 1) {
265
+ function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
266
+ i0.ɵɵtemplate(0, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template, 9, 11, "div", 21);
267
+ } if (rf & 2) {
268
+ const field_r13 = i0.ɵɵnextContext(2).$implicit;
269
+ i0.ɵɵproperty("ngIf", field_r13.fieldType === "input" && field_r13.fieldInputType === "date");
270
+ } }
271
+ function DynamicFormComponent_ng_template_3_ng_container_2_Template(rf, ctx) { if (rf & 1) {
272
+ i0.ɵɵelementContainerStart(0);
273
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_Template, 2, 6, "ng-container", 11);
274
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_Template, 1, 1, "ng-template", null, 20, i0.ɵɵtemplateRefExtractor);
275
+ i0.ɵɵelementContainerEnd();
276
+ } if (rf & 2) {
277
+ const _r49 = i0.ɵɵreference(3);
278
+ const ctx_r18 = i0.ɵɵnextContext(2);
279
+ i0.ɵɵadvance(1);
280
+ i0.ɵɵproperty("ngIf", ctx_r18.customInputDate)("ngIfElse", _r49);
281
+ } }
282
+ function DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_ng_template_1_Template(rf, ctx) { }
283
+ function DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
284
+ i0.ɵɵelementContainerStart(0);
285
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
286
+ i0.ɵɵelementContainerEnd();
287
+ } if (rf & 2) {
288
+ const ctx_r70 = i0.ɵɵnextContext(2);
289
+ const field_r13 = ctx_r70.$implicit;
290
+ const control_r14 = ctx_r70.control;
291
+ const formgroup_r15 = ctx_r70.formGroup;
292
+ const ctx_r66 = i0.ɵɵnextContext();
293
+ i0.ɵɵadvance(1);
294
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r66.customBooleanToggle)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
295
+ } }
296
+ function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
193
297
  i0.ɵɵelementStart(0, "span");
194
298
  i0.ɵɵtext(1, " *");
195
299
  i0.ɵɵelementEnd();
196
300
  } }
197
- function DynamicFormComponent_ng_template_3_div_3_ng_container_5_Template(rf, ctx) { if (rf & 1) {
301
+ function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
198
302
  i0.ɵɵelementContainer(0, 6);
199
303
  } if (rf & 2) {
200
- const control_r14 = i0.ɵɵnextContext(2).control;
304
+ const control_r14 = i0.ɵɵnextContext(3).control;
201
305
  i0.ɵɵnextContext();
202
306
  const _r3 = i0.ɵɵreference(6);
203
- i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r14.errors));
307
+ i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
204
308
  } }
205
- function DynamicFormComponent_ng_template_3_div_3_Template(rf, ctx) { if (rf & 1) {
206
- const _r54 = i0.ɵɵgetCurrentView();
207
- i0.ɵɵelementStart(0, "div", 19)(1, "p", 20);
309
+ function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {
310
+ const _r76 = i0.ɵɵgetCurrentView();
311
+ i0.ɵɵelementStart(0, "div", 22)(1, "p", 23);
208
312
  i0.ɵɵtext(2);
209
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_div_3_span_3_Template, 2, 0, "span", 14);
313
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_span_3_Template, 2, 0, "span", 10);
210
314
  i0.ɵɵelementEnd();
211
- i0.ɵɵelementStart(4, "mis-switch", 26);
212
- i0.ɵɵlistener("valueChanged", function DynamicFormComponent_ng_template_3_div_3_Template_mis_switch_valueChanged_4_listener($event) { i0.ɵɵrestoreView(_r54); const ctx_r53 = i0.ɵɵnextContext(); const field_r13 = ctx_r53.$implicit; const formgroup_r15 = ctx_r53.formGroup; const ctx_r52 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r52.updateSubDynamicFields(field_r13, formgroup_r15, $event)); });
315
+ i0.ɵɵelementStart(4, "mis-switch", 30);
316
+ i0.ɵɵlistener("valueChanged", function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template_mis_switch_valueChanged_4_listener($event) { i0.ɵɵrestoreView(_r76); const ctx_r75 = i0.ɵɵnextContext(2); const field_r13 = ctx_r75.$implicit; const formgroup_r15 = ctx_r75.formGroup; const ctx_r74 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r74.updateSubDynamicFields(field_r13, formgroup_r15, $event)); });
213
317
  i0.ɵɵelementEnd();
214
- i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_3_ng_container_5_Template, 1, 4, "ng-container", 17);
318
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_ng_container_5_Template, 1, 4, "ng-container", 17);
215
319
  i0.ɵɵelementEnd();
216
320
  } if (rf & 2) {
217
- const ctx_r55 = i0.ɵɵnextContext();
218
- const formgroup_r15 = ctx_r55.formGroup;
219
- const field_r13 = ctx_r55.$implicit;
220
- const control_r14 = ctx_r55.control;
221
- const ctx_r19 = i0.ɵɵnextContext();
222
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c3, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r19.removeSepratorForSubFields ? "none" : ""));
321
+ const ctx_r77 = i0.ɵɵnextContext(2);
322
+ const formgroup_r15 = ctx_r77.formGroup;
323
+ const field_r13 = ctx_r77.$implicit;
324
+ const control_r14 = ctx_r77.control;
325
+ const ctx_r68 = i0.ɵɵnextContext();
326
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r68.removeSepratorForSubFields ? "none" : ""));
223
327
  i0.ɵɵadvance(2);
224
328
  i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
225
329
  i0.ɵɵadvance(1);
@@ -229,118 +333,168 @@ function DynamicFormComponent_ng_template_3_div_3_Template(rf, ctx) { if (rf & 1
229
333
  i0.ɵɵadvance(1);
230
334
  i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
231
335
  } }
232
- function DynamicFormComponent_ng_template_3_div_4_span_3_Template(rf, ctx) { if (rf & 1) {
336
+ function DynamicFormComponent_ng_template_3_ng_container_3_Template(rf, ctx) { if (rf & 1) {
337
+ i0.ɵɵelementContainerStart(0);
338
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_Template, 2, 6, "ng-container", 11);
339
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template, 6, 7, "ng-template", null, 29, i0.ɵɵtemplateRefExtractor);
340
+ i0.ɵɵelementContainerEnd();
341
+ } if (rf & 2) {
342
+ const _r67 = i0.ɵɵreference(3);
343
+ const ctx_r19 = i0.ɵɵnextContext(2);
344
+ i0.ɵɵadvance(1);
345
+ i0.ɵɵproperty("ngIf", ctx_r19.customBooleanToggle)("ngIfElse", _r67);
346
+ } }
347
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_ng_template_1_Template(rf, ctx) { }
348
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
349
+ i0.ɵɵelementContainerStart(0);
350
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
351
+ i0.ɵɵelementContainerEnd();
352
+ } if (rf & 2) {
353
+ const ctx_r82 = i0.ɵɵnextContext(2);
354
+ const field_r13 = ctx_r82.$implicit;
355
+ const control_r14 = ctx_r82.control;
356
+ const formgroup_r15 = ctx_r82.formGroup;
357
+ const ctx_r78 = i0.ɵɵnextContext();
358
+ i0.ɵɵadvance(1);
359
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r78.customSingleSelectDropdown)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
360
+ } }
361
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
233
362
  i0.ɵɵelementStart(0, "span");
234
363
  i0.ɵɵtext(1, " *");
235
364
  i0.ɵɵelementEnd();
236
365
  } }
237
- function DynamicFormComponent_ng_template_3_div_4_img_6_Template(rf, ctx) { if (rf & 1) {
238
- const _r61 = i0.ɵɵgetCurrentView();
239
- i0.ɵɵelementStart(0, "img", 30);
240
- i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_div_4_img_6_Template_img_click_0_listener() { i0.ɵɵrestoreView(_r61); const field_r13 = i0.ɵɵnextContext(2).$implicit; const ctx_r59 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r59.fieldRemoved.emit(field_r13)); });
366
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template(rf, ctx) { if (rf & 1) {
367
+ const _r88 = i0.ɵɵgetCurrentView();
368
+ i0.ɵɵelementStart(0, "img", 35);
369
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template_img_click_0_listener() { i0.ɵɵrestoreView(_r88); const field_r13 = i0.ɵɵnextContext(3).$implicit; const ctx_r86 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r86.fieldRemoved.emit(field_r13)); });
241
370
  i0.ɵɵelementEnd();
242
371
  } if (rf & 2) {
243
- const ctx_r57 = i0.ɵɵnextContext(3);
244
- i0.ɵɵproperty("src", ctx_r57.removeIconUrl, i0.ɵɵsanitizeUrl);
372
+ const ctx_r84 = i0.ɵɵnextContext(4);
373
+ i0.ɵɵproperty("src", ctx_r84.removeIconUrl, i0.ɵɵsanitizeUrl);
245
374
  } }
246
- function DynamicFormComponent_ng_template_3_div_4_ng_container_7_Template(rf, ctx) { if (rf & 1) {
375
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
247
376
  i0.ɵɵelementContainer(0, 6);
248
377
  } if (rf & 2) {
249
- const control_r14 = i0.ɵɵnextContext(2).control;
378
+ const control_r14 = i0.ɵɵnextContext(3).control;
250
379
  i0.ɵɵnextContext();
251
380
  const _r3 = i0.ɵɵreference(6);
252
- i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r14.errors));
381
+ i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
253
382
  } }
254
- const _c5 = function (a0) { return { "removeable-container": a0 }; };
255
- function DynamicFormComponent_ng_template_3_div_4_Template(rf, ctx) { if (rf & 1) {
256
- const _r65 = i0.ɵɵgetCurrentView();
257
- i0.ɵɵelementStart(0, "div", 19)(1, "p", 20);
383
+ const _c14 = function (a0) { return { "removeable-container": a0 }; };
384
+ function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template(rf, ctx) { if (rf & 1) {
385
+ const _r92 = i0.ɵɵgetCurrentView();
386
+ i0.ɵɵelementStart(0, "div", 22)(1, "p", 23);
258
387
  i0.ɵɵtext(2);
259
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_div_4_span_3_Template, 2, 0, "span", 14);
388
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_span_3_Template, 2, 0, "span", 10);
260
389
  i0.ɵɵelementEnd();
261
- i0.ɵɵelementStart(4, "div", 27)(5, "mis-dropdown", 28);
262
- i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_div_4_Template_mis_dropdown_onChange_5_listener($event) { i0.ɵɵrestoreView(_r65); const ctx_r64 = i0.ɵɵnextContext(); const field_r13 = ctx_r64.$implicit; const control_r14 = ctx_r64.control; const formgroup_r15 = ctx_r64.formGroup; const ctx_r63 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r63.updateSelectedValueForSingleSelect(field_r13, control_r14, formgroup_r15, $event)); });
390
+ i0.ɵɵelementStart(4, "div", 32)(5, "mis-dropdown", 33);
391
+ i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template_mis_dropdown_onChange_5_listener($event) { i0.ɵɵrestoreView(_r92); const ctx_r91 = i0.ɵɵnextContext(2); const field_r13 = ctx_r91.$implicit; const control_r14 = ctx_r91.control; const formgroup_r15 = ctx_r91.formGroup; const ctx_r90 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r90.updateSelectedValueForSingleSelect(field_r13, control_r14, formgroup_r15, $event)); });
263
392
  i0.ɵɵelementEnd();
264
- i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_4_img_6_Template, 1, 1, "img", 29);
393
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template, 1, 1, "img", 34);
265
394
  i0.ɵɵelementEnd();
266
- i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_div_4_ng_container_7_Template, 1, 4, "ng-container", 17);
395
+ i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 17);
267
396
  i0.ɵɵelementEnd();
268
397
  } if (rf & 2) {
269
- const ctx_r66 = i0.ɵɵnextContext();
270
- const formgroup_r15 = ctx_r66.formGroup;
271
- const field_r13 = ctx_r66.$implicit;
272
- const control_r14 = ctx_r66.control;
273
- const ctx_r20 = i0.ɵɵnextContext();
274
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(10, _c3, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r20.removeSepratorForSubFields ? "none" : ""));
398
+ const ctx_r93 = i0.ɵɵnextContext(2);
399
+ const formgroup_r15 = ctx_r93.formGroup;
400
+ const field_r13 = ctx_r93.$implicit;
401
+ const control_r14 = ctx_r93.control;
402
+ const ctx_r80 = i0.ɵɵnextContext();
403
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(10, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r80.removeSepratorForSubFields ? "none" : ""));
275
404
  i0.ɵɵadvance(2);
276
405
  i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
277
406
  i0.ɵɵadvance(1);
278
407
  i0.ɵɵproperty("ngIf", field_r13.validators && field_r13.validators.length > 0);
279
408
  i0.ɵɵadvance(1);
280
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(12, _c5, field_r13 == null ? null : field_r13.isRemoveable));
409
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(12, _c14, field_r13 == null ? null : field_r13.isRemoveable));
281
410
  i0.ɵɵadvance(1);
282
411
  i0.ɵɵproperty("searchEnabled", false)("width", "140px")("data", field_r13.itemsList)("selectedItem", control_r14.value);
283
412
  i0.ɵɵadvance(1);
284
- i0.ɵɵproperty("ngIf", field_r13.isRemoveable && ctx_r20.removeIconUrl);
413
+ i0.ɵɵproperty("ngIf", field_r13.isRemoveable && ctx_r80.removeIconUrl);
285
414
  i0.ɵɵadvance(1);
286
415
  i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
287
416
  } }
288
- function DynamicFormComponent_ng_template_3_div_5_span_3_Template(rf, ctx) { if (rf & 1) {
417
+ function DynamicFormComponent_ng_template_3_ng_container_4_Template(rf, ctx) { if (rf & 1) {
418
+ i0.ɵɵelementContainerStart(0);
419
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_Template, 2, 6, "ng-container", 11);
420
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template, 8, 14, "ng-template", null, 31, i0.ɵɵtemplateRefExtractor);
421
+ i0.ɵɵelementContainerEnd();
422
+ } if (rf & 2) {
423
+ const _r79 = i0.ɵɵreference(3);
424
+ const ctx_r20 = i0.ɵɵnextContext(2);
425
+ i0.ɵɵadvance(1);
426
+ i0.ɵɵproperty("ngIf", ctx_r20.customSingleSelectDropdown)("ngIfElse", _r79);
427
+ } }
428
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_ng_template_1_Template(rf, ctx) { }
429
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
430
+ i0.ɵɵelementContainerStart(0);
431
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
432
+ i0.ɵɵelementContainerEnd();
433
+ } if (rf & 2) {
434
+ const ctx_r98 = i0.ɵɵnextContext(2);
435
+ const field_r13 = ctx_r98.$implicit;
436
+ const control_r14 = ctx_r98.control;
437
+ const formgroup_r15 = ctx_r98.formGroup;
438
+ const ctx_r94 = i0.ɵɵnextContext();
439
+ i0.ɵɵadvance(1);
440
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r94.customSingleSelectRadio)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
441
+ } }
442
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
289
443
  i0.ɵɵelementStart(0, "span");
290
444
  i0.ɵɵtext(1, " *");
291
445
  i0.ɵɵelementEnd();
292
446
  } }
293
- function DynamicFormComponent_ng_template_3_div_5_div_6_img_1_Template(rf, ctx) { if (rf & 1) {
294
- i0.ɵɵelement(0, "img", 35);
447
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_img_1_Template(rf, ctx) { if (rf & 1) {
448
+ i0.ɵɵelement(0, "img", 41);
295
449
  } if (rf & 2) {
296
- const ctx_r71 = i0.ɵɵnextContext(4);
297
- i0.ɵɵproperty("src", ctx_r71.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
450
+ const ctx_r103 = i0.ɵɵnextContext(5);
451
+ i0.ɵɵproperty("src", ctx_r103.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
298
452
  } }
299
- const _c6 = function (a0) { return { "checkbox-active": a0 }; };
300
- function DynamicFormComponent_ng_template_3_div_5_div_6_Template(rf, ctx) { if (rf & 1) {
301
- const _r74 = i0.ɵɵgetCurrentView();
302
- i0.ɵɵelementStart(0, "div", 33);
303
- i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_div_5_div_6_Template_div_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r74); const item_r70 = restoredCtx.$implicit; const ctx_r73 = i0.ɵɵnextContext(2); const field_r13 = ctx_r73.$implicit; const control_r14 = ctx_r73.control; const formgroup_r15 = ctx_r73.formGroup; const ctx_r72 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r72.updateSelectedValueForSingleSelect(field_r13, control_r14, formgroup_r15, item_r70)); });
304
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_div_5_div_6_img_1_Template, 1, 1, "img", 34);
305
- i0.ɵɵelementStart(2, "p", 20);
453
+ const _c15 = function (a0) { return { "checkbox-active": a0 }; };
454
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template(rf, ctx) { if (rf & 1) {
455
+ const _r106 = i0.ɵɵgetCurrentView();
456
+ i0.ɵɵelementStart(0, "div", 39);
457
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template_div_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r106); const item_r102 = restoredCtx.$implicit; const ctx_r105 = i0.ɵɵnextContext(3); const field_r13 = ctx_r105.$implicit; const control_r14 = ctx_r105.control; const formgroup_r15 = ctx_r105.formGroup; const ctx_r104 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r104.updateSelectedValueForSingleSelect(field_r13, control_r14, formgroup_r15, item_r102)); });
458
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_img_1_Template, 1, 1, "img", 40);
459
+ i0.ɵɵelementStart(2, "p", 23);
306
460
  i0.ɵɵtext(3);
307
461
  i0.ɵɵelementEnd()();
308
462
  } if (rf & 2) {
309
- const item_r70 = ctx.$implicit;
310
- const control_r14 = i0.ɵɵnextContext(2).control;
311
- const ctx_r68 = i0.ɵɵnextContext();
312
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c6, item_r70.label === (control_r14.value == null ? null : control_r14.value.label)));
463
+ const item_r102 = ctx.$implicit;
464
+ const control_r14 = i0.ɵɵnextContext(3).control;
465
+ const ctx_r100 = i0.ɵɵnextContext();
466
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c15, item_r102.label === (control_r14.value == null ? null : control_r14.value.label)));
313
467
  i0.ɵɵadvance(1);
314
- i0.ɵɵproperty("ngIf", item_r70.label === (control_r14.value == null ? null : control_r14.value.label) && ctx_r68.activeBtnIconUrl);
468
+ i0.ɵɵproperty("ngIf", item_r102.label === (control_r14.value == null ? null : control_r14.value.label) && ctx_r100.activeBtnIconUrl);
315
469
  i0.ɵɵadvance(2);
316
- i0.ɵɵtextInterpolate(item_r70.label);
470
+ i0.ɵɵtextInterpolate(item_r102.label);
317
471
  } }
318
- function DynamicFormComponent_ng_template_3_div_5_ng_container_7_Template(rf, ctx) { if (rf & 1) {
472
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
319
473
  i0.ɵɵelementContainer(0, 6);
320
474
  } if (rf & 2) {
321
- const control_r14 = i0.ɵɵnextContext(2).control;
475
+ const control_r14 = i0.ɵɵnextContext(3).control;
322
476
  i0.ɵɵnextContext();
323
477
  const _r3 = i0.ɵɵreference(6);
324
- i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r14.errors));
478
+ i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
325
479
  } }
326
- function DynamicFormComponent_ng_template_3_div_5_Template(rf, ctx) { if (rf & 1) {
327
- i0.ɵɵelementStart(0, "div", 12)(1, "p", 13);
480
+ function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_Template(rf, ctx) { if (rf & 1) {
481
+ i0.ɵɵelementStart(0, "div", 13)(1, "p", 14);
328
482
  i0.ɵɵtext(2);
329
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_div_5_span_3_Template, 2, 0, "span", 14);
483
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_span_3_Template, 2, 0, "span", 10);
330
484
  i0.ɵɵelementEnd();
331
485
  i0.ɵɵelement(4, "div", 15);
332
- i0.ɵɵelementStart(5, "div", 31);
333
- i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_5_div_6_Template, 4, 5, "div", 32);
486
+ i0.ɵɵelementStart(5, "div", 37);
487
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template, 4, 5, "div", 38);
334
488
  i0.ɵɵelementEnd();
335
- i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_div_5_ng_container_7_Template, 1, 4, "ng-container", 17);
489
+ i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 17);
336
490
  i0.ɵɵelementEnd();
337
491
  } if (rf & 2) {
338
- const ctx_r77 = i0.ɵɵnextContext();
339
- const formgroup_r15 = ctx_r77.formGroup;
340
- const field_r13 = ctx_r77.$implicit;
341
- const control_r14 = ctx_r77.control;
342
- const ctx_r21 = i0.ɵɵnextContext();
343
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c3, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r21.removeSepratorForSubFields ? "none" : ""));
492
+ const ctx_r109 = i0.ɵɵnextContext(2);
493
+ const formgroup_r15 = ctx_r109.formGroup;
494
+ const field_r13 = ctx_r109.$implicit;
495
+ const control_r14 = ctx_r109.control;
496
+ const ctx_r96 = i0.ɵɵnextContext();
497
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r96.removeSepratorForSubFields ? "none" : ""));
344
498
  i0.ɵɵadvance(2);
345
499
  i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
346
500
  i0.ɵɵadvance(1);
@@ -350,61 +504,86 @@ function DynamicFormComponent_ng_template_3_div_5_Template(rf, ctx) { if (rf & 1
350
504
  i0.ɵɵadvance(1);
351
505
  i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
352
506
  } }
353
- function DynamicFormComponent_ng_template_3_div_6_span_3_Template(rf, ctx) { if (rf & 1) {
507
+ function DynamicFormComponent_ng_template_3_ng_container_5_Template(rf, ctx) { if (rf & 1) {
508
+ i0.ɵɵelementContainerStart(0);
509
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_Template, 2, 6, "ng-container", 11);
510
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_Template, 8, 7, "ng-template", null, 36, i0.ɵɵtemplateRefExtractor);
511
+ i0.ɵɵelementContainerEnd();
512
+ } if (rf & 2) {
513
+ const _r95 = i0.ɵɵreference(3);
514
+ const ctx_r21 = i0.ɵɵnextContext(2);
515
+ i0.ɵɵadvance(1);
516
+ i0.ɵɵproperty("ngIf", ctx_r21.customSingleSelectRadio)("ngIfElse", _r95);
517
+ } }
518
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_ng_template_1_Template(rf, ctx) { }
519
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
520
+ i0.ɵɵelementContainerStart(0);
521
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
522
+ i0.ɵɵelementContainerEnd();
523
+ } if (rf & 2) {
524
+ const ctx_r114 = i0.ɵɵnextContext(2);
525
+ const field_r13 = ctx_r114.$implicit;
526
+ const control_r14 = ctx_r114.control;
527
+ const formgroup_r15 = ctx_r114.formGroup;
528
+ const ctx_r110 = i0.ɵɵnextContext();
529
+ i0.ɵɵadvance(1);
530
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r110.customMultiSelectCheckbox)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
531
+ } }
532
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
354
533
  i0.ɵɵelementStart(0, "span");
355
534
  i0.ɵɵtext(1, " *");
356
535
  i0.ɵɵelementEnd();
357
536
  } }
358
- function DynamicFormComponent_ng_template_3_div_6_div_6_img_1_Template(rf, ctx) { if (rf & 1) {
359
- i0.ɵɵelement(0, "img", 35);
537
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_img_1_Template(rf, ctx) { if (rf & 1) {
538
+ i0.ɵɵelement(0, "img", 41);
360
539
  } if (rf & 2) {
361
- const ctx_r82 = i0.ɵɵnextContext(4);
362
- i0.ɵɵproperty("src", ctx_r82.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
540
+ const ctx_r119 = i0.ɵɵnextContext(5);
541
+ i0.ɵɵproperty("src", ctx_r119.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
363
542
  } }
364
- function DynamicFormComponent_ng_template_3_div_6_div_6_Template(rf, ctx) { if (rf & 1) {
365
- const _r85 = i0.ɵɵgetCurrentView();
366
- i0.ɵɵelementStart(0, "div", 33);
367
- i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_div_6_div_6_Template_div_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r85); const item_r81 = restoredCtx.$implicit; const ctx_r84 = i0.ɵɵnextContext(2); const field_r13 = ctx_r84.$implicit; const control_r14 = ctx_r84.control; const formgroup_r15 = ctx_r84.formGroup; const ctx_r83 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r83.updateSelectedValueForMultiSelect(field_r13, control_r14, formgroup_r15, [item_r81])); });
368
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_div_6_div_6_img_1_Template, 1, 1, "img", 34);
369
- i0.ɵɵelementStart(2, "p", 20);
543
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template(rf, ctx) { if (rf & 1) {
544
+ const _r122 = i0.ɵɵgetCurrentView();
545
+ i0.ɵɵelementStart(0, "div", 39);
546
+ i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template_div_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r122); const item_r118 = restoredCtx.$implicit; const ctx_r121 = i0.ɵɵnextContext(3); const field_r13 = ctx_r121.$implicit; const control_r14 = ctx_r121.control; const formgroup_r15 = ctx_r121.formGroup; const ctx_r120 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r120.updateSelectedValueForMultiSelect(field_r13, control_r14, formgroup_r15, [item_r118])); });
547
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_img_1_Template, 1, 1, "img", 40);
548
+ i0.ɵɵelementStart(2, "p", 23);
370
549
  i0.ɵɵtext(3);
371
550
  i0.ɵɵelementEnd()();
372
551
  } if (rf & 2) {
373
- const item_r81 = ctx.$implicit;
374
- const control_r14 = i0.ɵɵnextContext(2).control;
375
- const ctx_r79 = i0.ɵɵnextContext();
376
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c6, ctx_r79.isCheckBoxSelected(item_r81.label, control_r14.value)));
552
+ const item_r118 = ctx.$implicit;
553
+ const control_r14 = i0.ɵɵnextContext(3).control;
554
+ const ctx_r116 = i0.ɵɵnextContext();
555
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c15, ctx_r116.isCheckBoxSelected(item_r118.label, control_r14.value)));
377
556
  i0.ɵɵadvance(1);
378
- i0.ɵɵproperty("ngIf", ctx_r79.isCheckBoxSelected(item_r81.label, control_r14.value) && ctx_r79.activeBtnIconUrl);
557
+ i0.ɵɵproperty("ngIf", ctx_r116.isCheckBoxSelected(item_r118.label, control_r14.value) && ctx_r116.activeBtnIconUrl);
379
558
  i0.ɵɵadvance(2);
380
- i0.ɵɵtextInterpolate(item_r81.label);
559
+ i0.ɵɵtextInterpolate(item_r118.label);
381
560
  } }
382
- function DynamicFormComponent_ng_template_3_div_6_ng_container_7_Template(rf, ctx) { if (rf & 1) {
561
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
383
562
  i0.ɵɵelementContainer(0, 6);
384
563
  } if (rf & 2) {
385
- const control_r14 = i0.ɵɵnextContext(2).control;
564
+ const control_r14 = i0.ɵɵnextContext(3).control;
386
565
  i0.ɵɵnextContext();
387
566
  const _r3 = i0.ɵɵreference(6);
388
- i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r14.errors));
567
+ i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
389
568
  } }
390
- function DynamicFormComponent_ng_template_3_div_6_Template(rf, ctx) { if (rf & 1) {
391
- i0.ɵɵelementStart(0, "div", 12)(1, "p", 13);
569
+ function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_Template(rf, ctx) { if (rf & 1) {
570
+ i0.ɵɵelementStart(0, "div", 13)(1, "p", 14);
392
571
  i0.ɵɵtext(2);
393
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_div_6_span_3_Template, 2, 0, "span", 14);
572
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_span_3_Template, 2, 0, "span", 10);
394
573
  i0.ɵɵelementEnd();
395
574
  i0.ɵɵelement(4, "div", 15);
396
- i0.ɵɵelementStart(5, "div", 31);
397
- i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_6_div_6_Template, 4, 5, "div", 32);
575
+ i0.ɵɵelementStart(5, "div", 37);
576
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template, 4, 5, "div", 38);
398
577
  i0.ɵɵelementEnd();
399
- i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_div_6_ng_container_7_Template, 1, 4, "ng-container", 17);
578
+ i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 17);
400
579
  i0.ɵɵelementEnd();
401
580
  } if (rf & 2) {
402
- const ctx_r88 = i0.ɵɵnextContext();
403
- const formgroup_r15 = ctx_r88.formGroup;
404
- const field_r13 = ctx_r88.$implicit;
405
- const control_r14 = ctx_r88.control;
406
- const ctx_r22 = i0.ɵɵnextContext();
407
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c3, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r22.removeSepratorForSubFields ? "none" : ""));
581
+ const ctx_r125 = i0.ɵɵnextContext(2);
582
+ const formgroup_r15 = ctx_r125.formGroup;
583
+ const field_r13 = ctx_r125.$implicit;
584
+ const control_r14 = ctx_r125.control;
585
+ const ctx_r112 = i0.ɵɵnextContext();
586
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r112.removeSepratorForSubFields ? "none" : ""));
408
587
  i0.ɵɵadvance(2);
409
588
  i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
410
589
  i0.ɵɵadvance(1);
@@ -414,37 +593,62 @@ function DynamicFormComponent_ng_template_3_div_6_Template(rf, ctx) { if (rf & 1
414
593
  i0.ɵɵadvance(1);
415
594
  i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
416
595
  } }
417
- function DynamicFormComponent_ng_template_3_div_7_span_3_Template(rf, ctx) { if (rf & 1) {
596
+ function DynamicFormComponent_ng_template_3_ng_container_6_Template(rf, ctx) { if (rf & 1) {
597
+ i0.ɵɵelementContainerStart(0);
598
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_Template, 2, 6, "ng-container", 11);
599
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_Template, 8, 7, "ng-template", null, 42, i0.ɵɵtemplateRefExtractor);
600
+ i0.ɵɵelementContainerEnd();
601
+ } if (rf & 2) {
602
+ const _r111 = i0.ɵɵreference(3);
603
+ const ctx_r22 = i0.ɵɵnextContext(2);
604
+ i0.ɵɵadvance(1);
605
+ i0.ɵɵproperty("ngIf", ctx_r22.customMultiSelectCheckbox)("ngIfElse", _r111);
606
+ } }
607
+ function DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_ng_template_1_Template(rf, ctx) { }
608
+ function DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
609
+ i0.ɵɵelementContainerStart(0);
610
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
611
+ i0.ɵɵelementContainerEnd();
612
+ } if (rf & 2) {
613
+ const ctx_r130 = i0.ɵɵnextContext(2);
614
+ const field_r13 = ctx_r130.$implicit;
615
+ const control_r14 = ctx_r130.control;
616
+ const formgroup_r15 = ctx_r130.formGroup;
617
+ const ctx_r126 = i0.ɵɵnextContext();
618
+ i0.ɵɵadvance(1);
619
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r126.customMultiSelectDropdown)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
620
+ } }
621
+ function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
418
622
  i0.ɵɵelementStart(0, "span");
419
623
  i0.ɵɵtext(1, " *");
420
624
  i0.ɵɵelementEnd();
421
625
  } }
422
- function DynamicFormComponent_ng_template_3_div_7_ng_container_5_Template(rf, ctx) { if (rf & 1) {
626
+ function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
423
627
  i0.ɵɵelementContainer(0, 6);
424
628
  } if (rf & 2) {
425
- const control_r14 = i0.ɵɵnextContext(2).control;
629
+ const control_r14 = i0.ɵɵnextContext(3).control;
426
630
  i0.ɵɵnextContext();
427
631
  const _r3 = i0.ɵɵreference(6);
428
- i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c2, control_r14.errors));
632
+ i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
429
633
  } }
430
- function DynamicFormComponent_ng_template_3_div_7_Template(rf, ctx) { if (rf & 1) {
431
- const _r94 = i0.ɵɵgetCurrentView();
432
- i0.ɵɵelementStart(0, "div", 19)(1, "p", 20);
634
+ function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template(rf, ctx) { if (rf & 1) {
635
+ const _r136 = i0.ɵɵgetCurrentView();
636
+ i0.ɵɵelementStart(0, "div", 22)(1, "p", 23);
433
637
  i0.ɵɵtext(2);
434
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_div_7_span_3_Template, 2, 0, "span", 14);
638
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_span_3_Template, 2, 0, "span", 10);
435
639
  i0.ɵɵelementEnd();
436
- i0.ɵɵelementStart(4, "mis-multi-select-dropdown", 36);
437
- i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_div_7_Template_mis_multi_select_dropdown_onChange_4_listener($event) { i0.ɵɵrestoreView(_r94); const ctx_r93 = i0.ɵɵnextContext(); const field_r13 = ctx_r93.$implicit; const control_r14 = ctx_r93.control; const formgroup_r15 = ctx_r93.formGroup; const ctx_r92 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r92.updateSelectedValueForMultiSelect(field_r13, control_r14, formgroup_r15, $event)); });
640
+ i0.ɵɵelementStart(4, "mis-multi-select-dropdown", 44);
641
+ i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template_mis_multi_select_dropdown_onChange_4_listener($event) { i0.ɵɵrestoreView(_r136); const ctx_r135 = i0.ɵɵnextContext(2); const field_r13 = ctx_r135.$implicit; const control_r14 = ctx_r135.control; const formgroup_r15 = ctx_r135.formGroup; const ctx_r134 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r134.updateSelectedValueForMultiSelect(field_r13, control_r14, formgroup_r15, $event)); });
438
642
  i0.ɵɵelementEnd();
439
- i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_7_ng_container_5_Template, 1, 4, "ng-container", 17);
643
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_ng_container_5_Template, 1, 4, "ng-container", 17);
440
644
  i0.ɵɵelementEnd();
441
645
  } if (rf & 2) {
442
- const ctx_r95 = i0.ɵɵnextContext();
443
- const formgroup_r15 = ctx_r95.formGroup;
444
- const field_r13 = ctx_r95.$implicit;
445
- const control_r14 = ctx_r95.control;
446
- const ctx_r23 = i0.ɵɵnextContext();
447
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(11, _c3, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r23.removeSepratorForSubFields ? "none" : ""));
646
+ const ctx_r137 = i0.ɵɵnextContext(2);
647
+ const formgroup_r15 = ctx_r137.formGroup;
648
+ const field_r13 = ctx_r137.$implicit;
649
+ const control_r14 = ctx_r137.control;
650
+ const ctx_r128 = i0.ɵɵnextContext();
651
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(11, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r128.removeSepratorForSubFields ? "none" : ""));
448
652
  i0.ɵɵadvance(2);
449
653
  i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
450
654
  i0.ɵɵadvance(1);
@@ -454,15 +658,26 @@ function DynamicFormComponent_ng_template_3_div_7_Template(rf, ctx) { if (rf & 1
454
658
  i0.ɵɵadvance(1);
455
659
  i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
456
660
  } }
661
+ function DynamicFormComponent_ng_template_3_ng_container_7_Template(rf, ctx) { if (rf & 1) {
662
+ i0.ɵɵelementContainerStart(0);
663
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_Template, 2, 6, "ng-container", 11);
664
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template, 6, 13, "ng-template", null, 43, i0.ɵɵtemplateRefExtractor);
665
+ i0.ɵɵelementContainerEnd();
666
+ } if (rf & 2) {
667
+ const _r127 = i0.ɵɵreference(3);
668
+ const ctx_r23 = i0.ɵɵnextContext(2);
669
+ i0.ɵɵadvance(1);
670
+ i0.ɵɵproperty("ngIf", ctx_r23.customMultiSelectDropdown)("ngIfElse", _r127);
671
+ } }
457
672
  function DynamicFormComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
458
- i0.ɵɵtemplate(0, DynamicFormComponent_ng_template_3_div_0_Template, 7, 13, "div", 10);
459
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_div_1_Template, 7, 11, "div", 10);
460
- i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_div_2_Template, 9, 11, "div", 11);
461
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_div_3_Template, 6, 7, "div", 11);
462
- i0.ɵɵtemplate(4, DynamicFormComponent_ng_template_3_div_4_Template, 8, 14, "div", 11);
463
- i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_div_5_Template, 8, 7, "div", 10);
464
- i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_div_6_Template, 8, 7, "div", 10);
465
- i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_div_7_Template, 6, 13, "div", 11);
673
+ i0.ɵɵtemplate(0, DynamicFormComponent_ng_template_3_ng_container_0_Template, 4, 2, "ng-container", 10);
674
+ i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_1_Template, 4, 2, "ng-container", 10);
675
+ i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_2_Template, 4, 2, "ng-container", 10);
676
+ i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_3_Template, 4, 2, "ng-container", 10);
677
+ i0.ɵɵtemplate(4, DynamicFormComponent_ng_template_3_ng_container_4_Template, 4, 2, "ng-container", 10);
678
+ i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_ng_container_5_Template, 4, 2, "ng-container", 10);
679
+ i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_6_Template, 4, 2, "ng-container", 10);
680
+ i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_7_Template, 4, 2, "ng-container", 10);
466
681
  } if (rf & 2) {
467
682
  const field_r13 = ctx.$implicit;
468
683
  i0.ɵɵproperty("ngIf", field_r13.fieldType === "input" && (field_r13.fieldInputType === "text" || field_r13.fieldInputType === "number"));
@@ -483,25 +698,25 @@ function DynamicFormComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
483
698
  } }
484
699
  function DynamicFormComponent_ng_template_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
485
700
  i0.ɵɵelementContainerStart(0);
486
- i0.ɵɵelementStart(1, "p", 38);
701
+ i0.ɵɵelementStart(1, "p", 46);
487
702
  i0.ɵɵtext(2);
488
703
  i0.ɵɵelementEnd();
489
- i0.ɵɵelement(3, "div", 39);
704
+ i0.ɵɵelement(3, "div", 47);
490
705
  i0.ɵɵelementContainerEnd();
491
706
  } if (rf & 2) {
492
- const error_r98 = ctx.$implicit;
707
+ const error_r140 = ctx.$implicit;
493
708
  i0.ɵɵadvance(2);
494
- i0.ɵɵtextInterpolate1(" ", " \u2022 \u00A0" + error_r98.value, " ");
709
+ i0.ɵɵtextInterpolate1(" ", " \u2022 \u00A0" + error_r140.value, " ");
495
710
  } }
496
711
  function DynamicFormComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
497
- i0.ɵɵelementStart(0, "div", 37);
712
+ i0.ɵɵelementStart(0, "div", 45);
498
713
  i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_5_ng_container_1_Template, 4, 1, "ng-container", 9);
499
714
  i0.ɵɵpipe(2, "keyvalue");
500
715
  i0.ɵɵelementEnd();
501
716
  } if (rf & 2) {
502
- const errors_r96 = ctx.$implicit;
717
+ const errors_r138 = ctx.$implicit;
503
718
  i0.ɵɵadvance(1);
504
- i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, errors_r96));
719
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, errors_r138));
505
720
  } }
506
721
  export class DynamicFormComponent {
507
722
  constructor() {
@@ -745,7 +960,26 @@ export class DynamicFormComponent {
745
960
  }
746
961
  }
747
962
  DynamicFormComponent.ɵfac = function DynamicFormComponent_Factory(t) { return new (t || DynamicFormComponent)(); };
748
- DynamicFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DynamicFormComponent, selectors: [["mis-dynamic-form"]], inputs: { formFields: "formFields", formValues: "formValues", activeBtnIconUrl: "activeBtnIconUrl", calendarIconUrl: "calendarIconUrl", removeIconUrl: "removeIconUrl", removeSepratorForSubFields: "removeSepratorForSubFields" }, outputs: { formUpdated: "formUpdated", formValid: "formValid", formInitialized: "formInitialized", fieldRemoved: "fieldRemoved" }, decls: 7, vars: 2, consts: [[3, "formGroup"], ["formArrayName", "dynamicFields"], [3, "formGroupName", 4, "ngFor", "ngForOf"], ["dynamicField", ""], ["dynamicFieldErrors", ""], [3, "formGroupName"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], ["class", "sub-dynamic-form", 4, "ngIf"], [1, "sub-dynamic-form"], [4, "ngFor", "ngForOf"], ["class", "dynamic-field multi-line-field-container", 3, "ngStyle", 4, "ngIf"], ["class", "dynamic-field single-line-field-container", 3, "ngStyle", 4, "ngIf"], [1, "dynamic-field", "multi-line-field-container", 3, "ngStyle"], [1, "h7", "field-title-sm"], [4, "ngIf"], [2, "flex-basis", "100%"], [1, "input-field", "ip-text", 3, "type", "formControl", "ngStyle", "placeholder", "min", "ngModelChange"], [3, "ngTemplateOutlet", "ngTemplateOutletContext", 4, "ngIf"], ["type", "text", 1, "input-field", "ip-textarea", 3, "ngStyle", "placeholder", "formControl", "ngModelChange"], [1, "dynamic-field", "single-line-field-container", 3, "ngStyle"], [1, "h6"], [1, "date-picker-container"], ["readonly", "", "misTzDp", "", 1, "date-picker", 3, "dpConfig", "selectedDate", "offsetY", "value", "dateChange"], ["dp", ""], ["alt", "data-picker", "class", "date-picker-icon", 3, "src", "click", 4, "ngIf"], ["alt", "data-picker", 1, "date-picker-icon", 3, "src", "click"], [3, "control", "valueChanged"], [3, "ngClass"], [3, "searchEnabled", "width", "data", "selectedItem", "onChange"], ["class", "remove-icon", 3, "src", "click", 4, "ngIf"], [1, "remove-icon", 3, "src", "click"], ["id", "checkboxes-container"], ["class", "radio-checkbox-common", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "radio-checkbox-common", 3, "ngClass", "click"], ["alt", "", 3, "src", 4, "ngIf"], ["alt", "", 3, "src"], [3, "width", "showSelectedCount", "dropdownListWidth", "searchEnabled", "hideApplyButton", "data", "selectedItems", "onChange"], ["id", "error-messages-container"], [1, "h8"], [2, "flex-basis", "100%", "height", "0"]], template: function DynamicFormComponent_Template(rf, ctx) { if (rf & 1) {
963
+ DynamicFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DynamicFormComponent, selectors: [["mis-dynamic-form"]], contentQueries: function DynamicFormComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
964
+ i0.ɵɵcontentQuery(dirIndex, _c0, 5);
965
+ i0.ɵɵcontentQuery(dirIndex, _c1, 5);
966
+ i0.ɵɵcontentQuery(dirIndex, _c2, 5);
967
+ i0.ɵɵcontentQuery(dirIndex, _c3, 5);
968
+ i0.ɵɵcontentQuery(dirIndex, _c4, 5);
969
+ i0.ɵɵcontentQuery(dirIndex, _c5, 5);
970
+ i0.ɵɵcontentQuery(dirIndex, _c6, 5);
971
+ i0.ɵɵcontentQuery(dirIndex, _c7, 5);
972
+ } if (rf & 2) {
973
+ let _t;
974
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputTextNumber = _t.first);
975
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputTextarea = _t.first);
976
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputDate = _t.first);
977
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customBooleanToggle = _t.first);
978
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customSingleSelectDropdown = _t.first);
979
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customSingleSelectRadio = _t.first);
980
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customMultiSelectCheckbox = _t.first);
981
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customMultiSelectDropdown = _t.first);
982
+ } }, inputs: { formFields: "formFields", formValues: "formValues", activeBtnIconUrl: "activeBtnIconUrl", calendarIconUrl: "calendarIconUrl", removeIconUrl: "removeIconUrl", removeSepratorForSubFields: "removeSepratorForSubFields" }, outputs: { formUpdated: "formUpdated", formValid: "formValid", formInitialized: "formInitialized", fieldRemoved: "fieldRemoved" }, decls: 7, vars: 2, consts: [[3, "formGroup"], ["formArrayName", "dynamicFields"], [3, "formGroupName", 4, "ngFor", "ngForOf"], ["dynamicField", ""], ["dynamicFieldErrors", ""], [3, "formGroupName"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], ["class", "sub-dynamic-form", 4, "ngIf"], [1, "sub-dynamic-form"], [4, "ngFor", "ngForOf"], [4, "ngIf"], [4, "ngIf", "ngIfElse"], ["defaultInputTextNumber", ""], [1, "dynamic-field", "multi-line-field-container", 3, "ngStyle"], [1, "h7", "field-title-sm"], [2, "flex-basis", "100%"], [1, "input-field", "ip-text", 3, "type", "formControl", "ngStyle", "placeholder", "min", "ngModelChange"], [3, "ngTemplateOutlet", "ngTemplateOutletContext", 4, "ngIf"], ["defaultInputTextarea", ""], ["type", "text", 1, "input-field", "ip-textarea", 3, "ngStyle", "placeholder", "formControl", "ngModelChange"], ["defaultInputDate", ""], ["class", "dynamic-field single-line-field-container", 3, "ngStyle", 4, "ngIf"], [1, "dynamic-field", "single-line-field-container", 3, "ngStyle"], [1, "h6"], [1, "date-picker-container"], ["readonly", "", "misTzDp", "", 1, "date-picker", 3, "dpConfig", "selectedDate", "offsetY", "value", "dateChange"], ["dp", ""], ["alt", "data-picker", "class", "date-picker-icon", 3, "src", "click", 4, "ngIf"], ["alt", "data-picker", 1, "date-picker-icon", 3, "src", "click"], ["defaultBooleanToggle", ""], [3, "control", "valueChanged"], ["defaultSingleSelectDropdown", ""], [3, "ngClass"], [3, "searchEnabled", "width", "data", "selectedItem", "onChange"], ["class", "remove-icon", 3, "src", "click", 4, "ngIf"], [1, "remove-icon", 3, "src", "click"], ["defaultSingleSelectRadio", ""], ["id", "checkboxes-container"], ["class", "radio-checkbox-common", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "radio-checkbox-common", 3, "ngClass", "click"], ["alt", "", 3, "src", 4, "ngIf"], ["alt", "", 3, "src"], ["defaultMultiSelectCheckbox", ""], ["defaultMultiSelectDropdown", ""], [3, "width", "showSelectedCount", "dropdownListWidth", "searchEnabled", "hideApplyButton", "data", "selectedItems", "onChange"], ["id", "error-messages-container"], [1, "h8"], [2, "flex-basis", "100%", "height", "0"]], template: function DynamicFormComponent_Template(rf, ctx) { if (rf & 1) {
749
983
  i0.ɵɵelementStart(0, "form", 0);
750
984
  i0.ɵɵelementContainerStart(1, 1);
751
985
  i0.ɵɵtemplate(2, DynamicFormComponent_ng_container_2_Template, 3, 8, "ng-container", 2);
@@ -760,7 +994,7 @@ DynamicFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Dynami
760
994
  } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormControlDirective, i2.FormGroupDirective, i2.FormGroupName, i2.FormArrayName, i3.DropdownComponent, i4.SwitchComponent, i5.MultiSelectDropdownComponent, i6.TzDatepickerDirective, i1.KeyValuePipe], styles: ["p[_ngcontent-%COMP%]{margin:0;cursor:default} .main-container{margin:0;max-width:100%}.sub-dynamic-form[_ngcontent-%COMP%]{padding-left:24px;border-bottom:1px solid var(--grey-seperators)}.dynamic-field[_ngcontent-%COMP%] .container{height:32px!important}.single-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm[_ngcontent-%COMP%]{margin-bottom:8px;cursor:default}.input-field[_ngcontent-%COMP%]{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text[_ngcontent-%COMP%]{height:44px;padding:8px 12px}.ip-textarea[_ngcontent-%COMP%]{max-height:94px;padding:8px}input[_ngcontent-%COMP%]:focus{outline:none}input[_ngcontent-%COMP%]::placeholder{color:var(--grey-seperators)}textarea[_ngcontent-%COMP%]:focus{outline:none}.date-picker-container[_ngcontent-%COMP%]{position:relative;width:140px}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]:hover{background-color:var(--grey-hover)}.date-picker-container[_ngcontent-%COMP%] .date-picker-icon[_ngcontent-%COMP%]{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form[_ngcontent-%COMP%] .dynamic-field[_ngcontent-%COMP%]:last-child{border-bottom:none!important}#checkboxes-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-muted);cursor:pointer}.radio-checkbox-common[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{margin-right:8px}.checkbox-active[_ngcontent-%COMP%]{background-color:var(--pmry-500)}.checkbox-active[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-white)}#error-messages-container[_ngcontent-%COMP%]{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--sem-error)}.removeable-container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center}.removeable-container[_ngcontent-%COMP%] .remove-icon[_ngcontent-%COMP%]{cursor:pointer;margin-left:8px;max-width:24px}span[_ngcontent-%COMP%]{color:var(--sem-error)}"] });
761
995
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicFormComponent, [{
762
996
  type: Component,
763
- args: [{ selector: "mis-dynamic-form", template: "<form [formGroup]=\"dynamicForm\">\n <ng-container formArrayName=\"dynamicFields\">\n <ng-container [formGroupName]=\"i\" *ngFor=\"let fieldControl of getDynamicFieldsControls().controls; let i = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i],\n formGroup: fieldControl,\n control: fieldControl.controls.value\n }\"\n >\n </ng-container>\n <div class=\"sub-dynamic-form\" *ngIf=\"fieldControl.value && (!!formFields[i]?.subFields && formFields[i]?.subFields?.length > 0 && matchParentConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value))\">\n <ng-container *ngFor=\"let subFieldControl of fieldControl.controls.subFields.controls; let j = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: findSelectedSubFieldConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value,j),\n control: subFieldControl\n }\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</form>\n\n\n<ng-template #dynamicField let-field let-control=\"control\" let-formgroup=\"formGroup\">\n\n <!-- fieldType: 'input' fieldInputType: 'text' | 'number' -->\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <input class=\"input-field ip-text\" [type]=\"field.fieldInputType\" [formControl]=\"control\"\n (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\" \n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" \n [min]=\"field.fieldInputType === 'number' ? 0 : '' \"/>\n <ng-container *ngIf=\"control.touched && control.errors\"\n [ngTemplateOutlet]=\"dynamicFieldErrors\" \n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\"\n >\n </ng-container>\n </div>\n\n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <textarea class=\"input-field ip-textarea\" type=\"text\"\n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" [formControl]=\"control\" (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\"></textarea>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div class=\"date-picker-container\">\n <input class=\"date-picker\" readonly misTzDp [dpConfig]=\"field.fieldConfig\"\n (dateChange)=\"control.setValue($event)\" [selectedDate]=\"control.value\" [offsetY]=\"0\"\n [value]=\"control.value\" #dp />\n <img alt=\"data-picker\" *ngIf=\"calendarIconUrl\" class=\"date-picker-icon\" [src]=\"calendarIconUrl\"\n (click)=\"dp.click()\" />\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-switch [control]=\"control\" (valueChanged)=\"updateSubDynamicFields(field, formgroup, $event)\"></mis-switch>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div [ngClass]=\"{'removeable-container' : field?.isRemoveable}\">\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <img *ngIf=\"field.isRemoveable && removeIconUrl\" class=\"remove-icon\" [src]=\"removeIconUrl\" (click)=\"fieldRemoved.emit(field)\">\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': item.label === control.value?.label }\"\n (click)=\"updateSelectedValueForSingleSelect(field, control, formgroup, item);\">\n <img *ngIf=\"(item.label === control.value?.label) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\" alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': isCheckBoxSelected(item.label, control.value) }\"\n (click)=\"updateSelectedValueForMultiSelect(field, control, formgroup, [item])\">\n <img *ngIf=\"isCheckBoxSelected(item.label, control.value) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\"\n alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-multi-select-dropdown [width]=\"'140px'\" [showSelectedCount]=\"true\" [dropdownListWidth]=\"'256px'\"\n [searchEnabled]=\"false\" [hideApplyButton]=\"true\" [data]=\"field.itemsList\"\n [selectedItems]=\"control.value\" (onChange)=\"updateSelectedValueForMultiSelect(field, control, formgroup, $event);\"></mis-multi-select-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n\n</ng-template>\n\n<ng-template #dynamicFieldErrors let-errors>\n <div id=\"error-messages-container\">\n <ng-container *ngFor=\"let error of errors | keyvalue\">\n <p class=\"h8\">\n {{\" \u2022 &nbsp;\" + error.value}}\n </p>\n <div style=\"flex-basis: 100%; height: 0\"></div>\n </ng-container>\n </div>\n</ng-template>", styles: ["p{margin:0;cursor:default}::ng-deep .main-container{margin:0;max-width:100%}.sub-dynamic-form{padding-left:24px;border-bottom:1px solid var(--grey-seperators)}.dynamic-field ::ng-deep .container{height:32px!important}.single-line-field-container{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm{margin-bottom:8px;cursor:default}.input-field{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text{height:44px;padding:8px 12px}.ip-textarea{max-height:94px;padding:8px}input:focus{outline:none}input::placeholder{color:var(--grey-seperators)}textarea:focus{outline:none}.date-picker-container{position:relative;width:140px}.date-picker-container .date-picker{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container .date-picker:hover{background-color:var(--grey-hover)}.date-picker-container .date-picker-icon{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form .dynamic-field:last-child{border-bottom:none!important}#checkboxes-container{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common p{color:var(--text-muted);cursor:pointer}.radio-checkbox-common img{margin-right:8px}.checkbox-active{background-color:var(--pmry-500)}.checkbox-active p{color:var(--text-white)}#error-messages-container{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container p{color:var(--sem-error)}.removeable-container{display:flex;justify-content:center;align-items:center}.removeable-container .remove-icon{cursor:pointer;margin-left:8px;max-width:24px}span{color:var(--sem-error)}\n"] }]
997
+ args: [{ selector: "mis-dynamic-form", template: "<form [formGroup]=\"dynamicForm\">\n <ng-container formArrayName=\"dynamicFields\">\n <ng-container [formGroupName]=\"i\" *ngFor=\"let fieldControl of getDynamicFieldsControls().controls; let i = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i],\n formGroup: fieldControl,\n control: fieldControl.controls.value\n }\"\n >\n </ng-container>\n <div class=\"sub-dynamic-form\" *ngIf=\"fieldControl.value && (!!formFields[i]?.subFields && formFields[i]?.subFields?.length > 0 && matchParentConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value))\">\n <ng-container *ngFor=\"let subFieldControl of fieldControl.controls.subFields.controls; let j = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: findSelectedSubFieldConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value,j),\n control: subFieldControl\n }\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</form>\n\n\n<ng-template #dynamicField let-field let-control=\"control\" let-formgroup=\"formGroup\">\n\n <!-- fieldType: 'input' fieldInputType: 'text' | 'number' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <ng-container *ngIf=\"customInputTextNumber; else defaultInputTextNumber\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextNumber\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextNumber>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field?.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <input class=\"input-field ip-text\" [type]=\"field.fieldInputType\" [formControl]=\"control\"\n (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\" \n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" \n [min]=\"field.fieldInputType === 'number' ? 0 : '' \"/>\n <ng-container *ngIf=\"control.touched && control.errors\"\n [ngTemplateOutlet]=\"dynamicFieldErrors\" \n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\"\n >\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <ng-container *ngIf=\"customInputTextarea; else defaultInputTextarea\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextarea\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextarea>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <textarea class=\"input-field ip-textarea\" type=\"text\"\n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" [formControl]=\"control\" (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\"></textarea>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <ng-container *ngIf=\"customInputDate; else defaultInputDate\">\n <ng-template\n [ngTemplateOutlet]=\"customInputDate\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputDate>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div class=\"date-picker-container\">\n <input class=\"date-picker\" readonly misTzDp [dpConfig]=\"field.fieldConfig\"\n (dateChange)=\"control.setValue($event)\" [selectedDate]=\"control.value\" [offsetY]=\"0\"\n [value]=\"control.value\" #dp />\n <img alt=\"data-picker\" *ngIf=\"calendarIconUrl\" class=\"date-picker-icon\" [src]=\"calendarIconUrl\"\n (click)=\"dp.click()\" />\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <ng-container *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <ng-container *ngIf=\"customBooleanToggle; else defaultBooleanToggle\">\n <ng-template\n [ngTemplateOutlet]=\"customBooleanToggle\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultBooleanToggle>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-switch [control]=\"control\" (valueChanged)=\"updateSubDynamicFields(field, formgroup, $event)\"></mis-switch>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div> \n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customSingleSelectDropdown; else defaultSingleSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div [ngClass]=\"{'removeable-container' : field?.isRemoveable}\">\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <img *ngIf=\"field.isRemoveable && removeIconUrl\" class=\"remove-icon\" [src]=\"removeIconUrl\" (click)=\"fieldRemoved.emit(field)\">\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container >\n \n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <ng-container *ngIf=\"customSingleSelectRadio; else defaultSingleSelectRadio\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectRadio\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectRadio>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': item.label === control.value?.label }\"\n (click)=\"updateSelectedValueForSingleSelect(field, control, formgroup, item);\">\n <img *ngIf=\"(item.label === control.value?.label) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\" alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <ng-container *ngIf=\"customMultiSelectCheckbox; else defaultMultiSelectCheckbox\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectCheckbox\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectCheckbox>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': isCheckBoxSelected(item.label, control.value) }\"\n (click)=\"updateSelectedValueForMultiSelect(field, control, formgroup, [item])\">\n <img *ngIf=\"isCheckBoxSelected(item.label, control.value) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\"\n alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customMultiSelectDropdown; else defaultMultiSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-multi-select-dropdown [width]=\"'140px'\" [showSelectedCount]=\"true\" [dropdownListWidth]=\"'256px'\"\n [searchEnabled]=\"false\" [hideApplyButton]=\"true\" [data]=\"field.itemsList\"\n [selectedItems]=\"control.value\" (onChange)=\"updateSelectedValueForMultiSelect(field, control, formgroup, $event);\"></mis-multi-select-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #dynamicFieldErrors let-errors>\n <div id=\"error-messages-container\">\n <ng-container *ngFor=\"let error of errors | keyvalue\">\n <p class=\"h8\">\n {{\" \u2022 &nbsp;\" + error.value}}\n </p>\n <div style=\"flex-basis: 100%; height: 0\"></div>\n </ng-container>\n </div>\n</ng-template>", styles: ["p{margin:0;cursor:default}::ng-deep .main-container{margin:0;max-width:100%}.sub-dynamic-form{padding-left:24px;border-bottom:1px solid var(--grey-seperators)}.dynamic-field ::ng-deep .container{height:32px!important}.single-line-field-container{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm{margin-bottom:8px;cursor:default}.input-field{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text{height:44px;padding:8px 12px}.ip-textarea{max-height:94px;padding:8px}input:focus{outline:none}input::placeholder{color:var(--grey-seperators)}textarea:focus{outline:none}.date-picker-container{position:relative;width:140px}.date-picker-container .date-picker{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container .date-picker:hover{background-color:var(--grey-hover)}.date-picker-container .date-picker-icon{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form .dynamic-field:last-child{border-bottom:none!important}#checkboxes-container{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common p{color:var(--text-muted);cursor:pointer}.radio-checkbox-common img{margin-right:8px}.checkbox-active{background-color:var(--pmry-500)}.checkbox-active p{color:var(--text-white)}#error-messages-container{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container p{color:var(--sem-error)}.removeable-container{display:flex;justify-content:center;align-items:center}.removeable-container .remove-icon{cursor:pointer;margin-left:8px;max-width:24px}span{color:var(--sem-error)}\n"] }]
764
998
  }], function () { return []; }, { formFields: [{
765
999
  type: Input
766
1000
  }], formValues: [{
@@ -781,6 +1015,30 @@ DynamicFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Dynami
781
1015
  type: Output
782
1016
  }], fieldRemoved: [{
783
1017
  type: Output
1018
+ }], customInputTextNumber: [{
1019
+ type: ContentChild,
1020
+ args: ["customInputTextNumber", { static: false }]
1021
+ }], customInputTextarea: [{
1022
+ type: ContentChild,
1023
+ args: ["customInputTextarea", { static: false }]
1024
+ }], customInputDate: [{
1025
+ type: ContentChild,
1026
+ args: ["customInputDate", { static: false }]
1027
+ }], customBooleanToggle: [{
1028
+ type: ContentChild,
1029
+ args: ["customBooleanToggle", { static: false }]
1030
+ }], customSingleSelectDropdown: [{
1031
+ type: ContentChild,
1032
+ args: ["customSingleSelectDropdown", { static: false }]
1033
+ }], customSingleSelectRadio: [{
1034
+ type: ContentChild,
1035
+ args: ["customSingleSelectRadio", { static: false }]
1036
+ }], customMultiSelectCheckbox: [{
1037
+ type: ContentChild,
1038
+ args: ["customMultiSelectCheckbox", { static: false }]
1039
+ }], customMultiSelectDropdown: [{
1040
+ type: ContentChild,
1041
+ args: ["customMultiSelectDropdown", { static: false }]
784
1042
  }] }); })();
785
1043
  export const dynamicFieldValidator = (validators) => {
786
1044
  return (control) => {
@@ -832,4 +1090,4 @@ export const dynamicFieldValidator = (validators) => {
832
1090
  return errors;
833
1091
  };
834
1092
  };
835
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBZ0IsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEcsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBaUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEosT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDckMsT0FBTyxpQkFBaUIsQ0FBQzs7Ozs7Ozs7OztJQ1FqQiw2QkFBc0c7SUFDcEcsMkJBTWU7SUFDakIsMEJBQWU7Ozs7Ozs7OztJQU5YLGVBQWlDO0lBQWpDLHNDQUFpQyw2T0FBQTs7O0lBSHZDLDhCQUF5TjtJQUN2Tiw0R0FRZTtJQUNqQixpQkFBTTs7O0lBVHNDLGVBQTZDO0lBQTdDLHFFQUE2Qzs7OztJQVgzRixnQ0FBa0g7SUFDOUcsMkJBUWE7SUFDZixvRkFVTTtJQUNSLDBCQUFlOzs7Ozs7SUFyQkQsb0NBQW1CO0lBRTdCLGVBQWlDO0lBQWpDLHNDQUFpQyxpSUFBQTtJQVFKLGVBQXdMO0lBQXhMLGthQUF3TDs7O0lBdUJyTSw0QkFBOEQ7SUFBQyxrQkFBQztJQUFBLGlCQUFPOzs7O0lBUTNGLDJCQUllOzs7OztJQUhiLHNDQUF1QywyRUFBQTs7Ozs7O0lBYjNDLCtCQUVnSCxZQUFBO0lBRTVHLFlBQWtCO0lBQUEsNEZBQXVFO0lBQzNGLGlCQUFJO0lBQ0osMEJBQW9DO0lBQ3BDLGlDQUl1RDtJQUhy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QUFDLENBQUE7b0JBQ25DLE1BQU07Z0JBQ1I7b0JBQ0UsTUFBTTthQUNUO1lBQ0QsSUFBSSxLQUFLO2dCQUFFLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUE7UUFDN0MsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUMsQ0FBQTtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5zRHluYW1pY0Zvcm0gfSBmcm9tIFwiLi9keW5hbWljLWZvcm0ubmFtZXNwYWNlXCI7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtZHluYW1pYy1mb3JtXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9keW5hbWljLWZvcm0uY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBmb3JtRmllbGRzOiAgRHluYW1pYyBmaWVsZHMgcmVjaWV2ZWQgZnJvbSB0aGUgQVBJIG1ldGFkYXRhIHRvIGJ1aWxkIGEgZHluYW1pYyBmb3JtXG4gICAqIGZvcm1WYWx1ZXM6ICBIb2xkcyB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZm9ybSB3aXRoIFwia2V5XCIgYmVpbmcgZHluYW1pYyBmaWVsZCBcInRpdGxlXCJcbiAgICogICAgICAgICAgICAgIGFuZCB2YWx1ZSBiZWluZyB0aGUgdXNlciBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIGZvcm1GaWVsZHM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZD4gPSBbXTtcbiAgQElucHV0KCkgZm9ybVZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAvLyBOZWVkIHRvIGRlcHJlY2F0ZSB0aGVzZSBpbnB1dHMgYW5kIHVzZSBjb25zdGFudHMuXG4gIEBJbnB1dCgpIGFjdGl2ZUJ0bkljb25VcmwgPSBcIlwiO1xuICBASW5wdXQoKSBjYWxlbmRhckljb25VcmwgPSBcIlwiO1xuICBASW5wdXQoKSByZW1vdmVJY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMgPSBmYWxzZTtcbiAgLyoqXG4gICAqIGR5bmFtaWNGb3JtOiBDb25zdHJ1Y3RlZCB1c2luZyBmb3JtRmllbGRzIGFuZCBmb3JtVmFsdWVzKGluIGNhc2Ugb2YgZWRpdClcbiAgICovXG4gIGR5bmFtaWNGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIC8qKlxuICAgKiBmb3JtVXBkYXRlZDogRW1pdHMgZm9ybVZhbHVlcyBPYmplY3Qgd2hlbmV2ZXIgdGhlcmUgaXMgYSBjaGFuZ2UgaW4gdGhlIGR5bmFtaWMgZm9ybS5cbiAgICovXG4gIEBPdXRwdXQoKSBmb3JtVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBba2V5OiBzdHJpbmddOiBhbnkgfT4oKTtcbiAgLyoqXG4gICAqIGZvcm1WYWxpZDogRW1pdHMgYm9vbGVhbiBkZXBlbmRpbmcgb24gdmFsaWRpdHkgb2YgdGhlIGZvcm1cbiAgICovXG4gIEBPdXRwdXQoKSBmb3JtVmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIC8qKlxuICAgKiBmb3JtSW5pdGlhbGl6ZWQ6IEVtaXRzIGR5bmFtaWMgZm9ybSBBUEkgb24gZm9ybSBpbml0aWxpemF0aW9uXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybUluaXRpYWxpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBmaWVsZFJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZD4oKTtcblxuICBkeW5hbWljRm9ybUFQSTogTnNEeW5hbWljRm9ybS5JRHluYW1pY0Zvcm1BUEk7XG4gIHZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiQ6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gQnVpbGRpbmcgdGhlIGZvcm1cbiAgICB0aGlzLmR5bmFtaWNGb3JtID0gdGhpcy5nZW5lcmF0ZUR5bmFtaWNGb3JtKHRoaXMuZm9ybUZpZWxkcywgdGhpcy5mb3JtVmFsdWVzKTtcblxuICAgIC8vIFN1YnNjcmliaW5nIHRvIGZvcm0gY2hhbmdlcyBhbmQgZW1pdGluZyB2YWx1ZXMuXG4gICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24kID0gdGhpcy5keW5hbWljRm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGZvcm1WYWx1ZSA9PiB7XG4gICAgICB0aGlzLm9uRm9ybVZhbHVlQ2hhbmdlcygpO1xuICAgIH0pO1xuXG4gICAgLy9hcGkgdG8gZXhwb3NlIGZ1bmN0aW9uc1xuICAgIHRoaXMuZHluYW1pY0Zvcm1BUEkgPSB7XG4gICAgICBkZWZhdWx0Rm9ybVZhbHVlczogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUR5bmFtaWNGaWVsZHNWYWx1ZU9iamVjdCh0aGlzLmR5bmFtaWNGb3JtLnZhbHVlLmR5bmFtaWNGaWVsZHMpO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5mb3JtSW5pdGlhbGl6ZWQuZW1pdCh0aGlzLmR5bmFtaWNGb3JtQVBJKTtcbiAgICB0aGlzLmZvcm1WYWxpZC5lbWl0KHRoaXMuZHluYW1pY0Zvcm0udmFsaWQpO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uJD8udW5zdWJzY3JpYmUoKTtcbiAgfVxuICBvbkZvcm1WYWx1ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgbGV0IGZvcm1WYWx1ZXMgPSB0aGlzLmdlbmVyYXRlRHluYW1pY0ZpZWxkc1ZhbHVlT2JqZWN0KHRoaXMuZHluYW1pY0Zvcm0udmFsdWUuZHluYW1pY0ZpZWxkcyk7XG4gICAgdGhpcy5mb3JtVmFsaWQuZW1pdCh0aGlzLmR5bmFtaWNGb3JtLnZhbGlkKTtcbiAgICB0aGlzLmZvcm1VcGRhdGVkLmVtaXQoZm9ybVZhbHVlcyk7XG4gICAgY29uc29sZS5sb2coZm9ybVZhbHVlcylcbiAgfVxuICBnZW5lcmF0ZUR5bmFtaWNGaWVsZHNWYWx1ZU9iamVjdChmb3JtVmFsdWVzOiBBcnJheTxhbnk+KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgbGV0IGR5bmFtaWNGaWVsZHNWYWx1ZSA9IHt9O1xuICAgIGZvcm1WYWx1ZXMuZm9yRWFjaCgoZmllbGRWYWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMubWFwRm9ybUZpZWxkVG9Gb3JtVmFsdWUodGhpcy5mb3JtRmllbGRzW2luZGV4XSwgZmllbGRWYWx1ZS52YWx1ZSk7XG4gICAgICBpZiAoZmllbGRWYWx1ZS5zdWJGaWVsZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGZvcm1hdHRlZFN1YkZpZWxkc1ZhbHVlcyA9IHt9XG4gICAgICAgIGxldCBzdWJGaWVsZCA9IHRoaXMuZm9ybUZpZWxkc1tpbmRleF0uc3ViRmllbGRzXG4gICAgICAgIGlmKHRoaXMuZm9ybUZpZWxkc1tpbmRleF0uZmllbGRUeXBlID09PSAnc2luZ2xlU2VsZWN0JyB8fCB0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLmZpZWxkVHlwZSA9PT0gJ211bHRpU2VsZWN0Jykge1xuICAgICAgICAgIHN1YkZpZWxkID0gc3ViRmllbGQuZmlsdGVyKChzdWJGaWVsZCkgPT4gc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUgPT09IGZpZWxkVmFsdWUudmFsdWUudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkVmFsdWUuc3ViRmllbGRzLmZvckVhY2goKHN1YkZpZWxkVmFsdWUsIHN1YkluZGV4KSA9PiB7XG4gICAgICAgICAgbGV0IHN1YkZvcm1GaWVsZCA9IHN1YkZpZWxkW3N1YkluZGV4XVxuICAgICAgICAgIGZvcm1hdHRlZFN1YkZpZWxkc1ZhbHVlc1tzdWJGb3JtRmllbGQuY29uZmlnTmFtZV0gPSB0aGlzLm1hcEZvcm1GaWVsZFRvRm9ybVZhbHVlKHN1YkZvcm1GaWVsZCwgc3ViRmllbGRWYWx1ZSlcbiAgICAgICAgfSlcbiAgICAgICAgZHluYW1pY0ZpZWxkc1ZhbHVlW3RoaXMuZm9ybUZpZWxkc1tpbmRleF0uY29uZmlnTmFtZV0gPSB7XG4gICAgICAgICAgdmFsdWU6IGZvcm1hdHRlZFZhbHVlLFxuICAgICAgICAgIHN1YkZpZWxkczogZm9ybWF0dGVkU3ViRmllbGRzVmFsdWVzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBkeW5hbWljRmllbGRzVmFsdWVbdGhpcy5mb3JtRmllbGRzW2luZGV4XS5jb25maWdOYW1lXSA9IGZvcm1hdHRlZFZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkeW5hbWljRmllbGRzVmFsdWU7XG4gIH1cbiAgZ2VuZXJhdGVEeW5hbWljRm9ybShcbiAgICBmb3JtRmllbGRzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+LFxuICAgIGZvcm1WYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH1cbiAgKTogVW50eXBlZEZvcm1Hcm91cCB7XG4gICAgbGV0IGZvcm1BcnJheSA9IG5ldyBVbnR5cGVkRm9ybUFycmF5KFtdKVxuXG4gICAgZm9yIChsZXQgZmllbGQgb2YgZm9ybUZpZWxkcykge1xuICAgICAgbGV0IGZpZWxkVmFsdWUgPSBmb3JtVmFsdWVzW2ZpZWxkLmNvbmZpZ05hbWVdPy52YWx1ZSA/IGZvcm1WYWx1ZXNbZmllbGQuY29uZmlnTmFtZV0udmFsdWUgOiBmb3JtVmFsdWVzW2ZpZWxkLmNvbmZpZ05hbWVdXG4gICAgICBsZXQgZmllbGRDb250cm9sID0gdGhpcy5tYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChmaWVsZCwgZmllbGRWYWx1ZSk7XG4gICAgICBsZXQgc3ViRmllbGRzQ29udHJvbHMgPSB0aGlzLmdlbmVyYXRlU3ViRHluYW1pY0ZpZWxkcyhmb3JtVmFsdWVzLCBmaWVsZCwgZmllbGRDb250cm9sLnZhbHVlKTtcbiAgICAgIGZvcm1BcnJheS5wdXNoKG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICAgICAgdmFsdWU6IGZpZWxkQ29udHJvbCxcbiAgICAgICAgc3ViRmllbGRzOiBzdWJGaWVsZHNDb250cm9sc1xuICAgICAgfSkpXG4gICAgfSAgXG4gICAgcmV0dXJuIG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICAgIGR5bmFtaWNGaWVsZHM6IGZvcm1BcnJheVxuICAgIH0pXG4gIH1cbiAgXG4gIGdldER5bmFtaWNGaWVsZHNDb250cm9scygpOiBVbnR5cGVkRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5keW5hbWljRm9ybS5nZXQoXCJkeW5hbWljRmllbGRzXCIpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gIH1cbiAgdXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhcbiAgICBmaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcbiAgICB2YWx1ZTogYW55XG4gICk6IHZvaWQge1xuICAgIGlmIChmaWVsZC5zdWJGaWVsZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBzdWJGaWVsZHNDb250cm9scyA9IHRoaXMuZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKHRoaXMuZm9ybVZhbHVlcywgZmllbGQsIHZhbHVlKTtcbiAgICAgIGZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdzdWJGaWVsZHMnKVxuICAgICAgZm9ybUdyb3VwLmFkZENvbnRyb2woJ3N1YkZpZWxkcycsIHN1YkZpZWxkc0NvbnRyb2xzKVxuICAgIH1cbiAgfVxuICB1cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0KFxuICAgIGZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsXG4gICAgY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLFxuICAgIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcbiAgICB2YWx1ZTogYW55XG4gICk6IHZvaWQge1xuICAgIGlmIChjb250cm9sLnZhbHVlPy52YWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMudXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybUdyb3VwLCB2YWx1ZSk7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbiAgdXBkYXRlU2VsZWN0ZWRWYWx1ZUZvck11bHRpU2VsZWN0KFxuICAgIGZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsXG4gICAgY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLFxuICAgIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcbiAgICB2YWx1ZXM6IEFycmF5PGFueT5cbiAgKTogdm9pZCB7XG4gICAgbGV0IHNlbGVjdGVkVmFsdWVzOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBhbnkgfT4gPSBjb250cm9sLnZhbHVlO1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgbGV0IGl0ZW1JbmRleCA9IHNlbGVjdGVkVmFsdWVzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0ubGFiZWwgPT09IHZhbHVlLmxhYmVsKTtcbiAgICAgIGlmIChpdGVtSW5kZXggPiAtMSkge1xuICAgICAgICBzZWxlY3RlZFZhbHVlcy5zcGxpY2UoaXRlbUluZGV4LCAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGVjdGVkVmFsdWVzLnB1c2goeyAuLi52YWx1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlcyk7XG4gICAgdGhpcy51cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtR3JvdXAsIHZhbHVlcyk7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbiAgaXNDaGVja0JveFNlbGVjdGVkKHZhbHVlOiBzdHJpbmcsIHNlbGVjdGVkVmFsdWVzOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRWYWx1ZXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5sYWJlbCA9PT0gdmFsdWUpID4gLTE7XG4gIH1cblxuICBmaW5kU2VsZWN0ZWRTdWJGaWVsZENvbmZpZyhzdWJmaWVsZHMsIHZhbHVlLCBzdWJGaWVsZEluZGV4KSB7XG4gICAgdHJ5e1xuICAgICAgY29uc3Qgc2VsZWN0ZWRTdWJGaWVsZENvbmZpZyA9IHN1YmZpZWxkcy5maWx0ZXIoaXRlbSA9PiBpdGVtLnBhcmVudENvbmZpZ1ZhbHVlID09PSB2YWx1ZSlbc3ViRmllbGRJbmRleF07XG4gICAgICByZXR1cm4gc2VsZWN0ZWRTdWJGaWVsZENvbmZpZztcbiAgICB9XG4gICAgY2F0Y2goZSl7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N1YmZpZWxkIGluZGV4IG5vdCBmb3VuZCcpO1xuICAgIH1cbiAgfVxuXG4gIG1hdGNoUGFyZW50Q29uZmlnKHN1YmZpZWxkcywgdmFsdWUpIHtcbiAgICBpZiAoIXN1YmZpZWxkcyB8fCBzdWJmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBzdWJmaWVsZHMuc29tZShpdGVtID0+IGl0ZW0ucGFyZW50Q29uZmlnVmFsdWUgPT09IHZhbHVlKTtcbiAgfVxuXG4gIGdlbmVyYXRlU3ViRHluYW1pY0ZpZWxkcyhcbiAgICBmb3JtVmFsdWVzOiBhbnksXG4gICAgcGFyZW50RmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBwYXJlbnRWYWx1ZTogQXJyYXk8eyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0+IHwge2xhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfSB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW5cbiAgKTogVW50eXBlZEZvcm1BcnJheSB7XG4gICAgbGV0IGNvbnRyb2xzID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoW10pXG4gICAgbGV0IHN1YkZpZWxkcyA9IHBhcmVudEZpZWxkLnN1YkZpZWxkc1xuICAgIGxldCBzdWJGaWVsZHNWYWx1ZXMgPSBmb3JtVmFsdWVzW3BhcmVudEZpZWxkLmNvbmZpZ05hbWVdPy5zdWJGaWVsZHMgPyBmb3JtVmFsdWVzW3BhcmVudEZpZWxkLmNvbmZpZ05hbWVdLnN1YkZpZWxkcyA6IHt9XG4gICAgaWYoIXN1YkZpZWxkcykgcmV0dXJuIGNvbnRyb2xzO1xuICAgIGlmIChwYXJlbnRGaWVsZC5maWVsZFR5cGUgPT09ICdzaW5nbGVTZWxlY3QnKSB7XG4gICAgICBzdWJGaWVsZHMgPSBzdWJGaWVsZHMuZmlsdGVyKChzdWJGaWVsZCkgPT4gc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUgPT09ICg8e2xhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfT5wYXJlbnRWYWx1ZSk/LnZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAocGFyZW50RmllbGQuZmllbGRUeXBlID09PSAnbXVsdGlTZWxlY3QnKSB7XG4gICAgICBsZXQgcGFyZW50VmFsdWVzID0gbmV3IFNldCgoPEFycmF5PHsgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bWJlciB9Pj5wYXJlbnRWYWx1ZSkubWFwKCh2YWx1ZSkgPT4gdmFsdWUudmFsdWUpKTtcbiAgICAgIHN1YkZpZWxkcyA9IHN1YkZpZWxkcy5maWx0ZXIoKHN1YkZpZWxkKSA9PiBwYXJlbnRWYWx1ZXMuaGFzKHN1YkZpZWxkLnBhcmVudENvbmZpZ1ZhbHVlKSk7XG4gICAgfVxuXG4gICAgaWYgKHN1YkZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3IgKGxldCBzdWJGaWVsZCBvZiBzdWJGaWVsZHMpIHtcbiAgICAgICAgICBjb250cm9scy5wdXNoKHRoaXMubWFwRm9ybVZhbHVlVG9Gb3JtRmllbGQoc3ViRmllbGQsIHN1YkZpZWxkc1ZhbHVlc1tzdWJGaWVsZC5jb25maWdOYW1lXSkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICByZXR1cm4gY29udHJvbHM7XG4gIH1cbiAgbWFwRm9ybVZhbHVlVG9Gb3JtRmllbGQoZm9ybUZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsIGZvcm1WYWx1ZTogYW55KTogYW55IHtcbiAgICBsZXQgdmFsaWRhdG9ycyA9IGZvcm1GaWVsZC52YWxpZGF0b3JzID8gW2R5bmFtaWNGaWVsZFZhbGlkYXRvcihmb3JtRmllbGQudmFsaWRhdG9ycyldOiBbXVxuICAgIGxldCBjb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImlucHV0XCIpIHtcbiAgICAgIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwidGV4dFwiIHx8IGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0YXJlYVwiKSBjb250cm9sLnNldFZhbHVlKGZvcm1WYWx1ZSA/IGZvcm1WYWx1ZSA6IFwiXCIpO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcIm51bWJlclwiKSBjb250cm9sLnNldFZhbHVlKGZvcm1WYWx1ZSA/IGZvcm1WYWx1ZSA6IDApO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcImRhdGVcIikge1xuICAgICAgICBpZiAoZm9ybVZhbHVlICYmIHR5cGVvZiBmb3JtVmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG1vbWVudChmb3JtVmFsdWUpLnR6KGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkuZm9ybWF0KGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG1vbWVudCgpLnR6KGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkuZm9ybWF0KGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJzaW5nbGVTZWxlY3RcIikge1xuICAgICAgY29uc3QgZmluZFNlbGVjdGVkVmFsdWUgPSAoKSA9PiB7XG4gICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gZm9ybVZhbHVlKVxuICAgICAgICByZXR1cm4gaW5kZXggPj0gMCA/IGZvcm1GaWVsZC5pdGVtc0xpc3RbaW5kZXhdOiBcIlwiO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkcm9wZG93blwiKSB7XG4gICAgICAgIGlmICghZm9ybVZhbHVlKSBjb250cm9sLnNldFZhbHVlKGZvcm1GaWVsZC5pdGVtc0xpc3RbMF0pO1xuICAgICAgICBlbHNlIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJyYWRpb1wiKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwibXVsdGlTZWxlY3RcIikge1xuICAgICAgaWYgKGZvcm1WYWx1ZSAmJiBBcnJheS5pc0FycmF5KGZvcm1WYWx1ZSkpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkVmFsdWVzID0gW107XG4gICAgICAgIGZvciAobGV0IHZhbHVlIG9mIGZvcm1WYWx1ZSkge1xuICAgICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUpO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSBzZWxlY3RlZFZhbHVlcy5wdXNoKHsgLi4uZm9ybUZpZWxkLml0ZW1zTGlzdFtpbmRleF0gfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKFtdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICBjb250cm9sLnNldFZhbHVlKCEhZm9ybVZhbHVlKTtcbiAgICB9IGVsc2UgY29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICByZXR1cm4gY29udHJvbDtcbiAgfVxuICBtYXBGb3JtRmllbGRUb0Zvcm1WYWx1ZShmb3JtRmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCwgZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImlucHV0XCIpIHtcbiAgICAgIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwidGV4dFwiIHx8IGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0YXJlYVwiKSByZXR1cm4gZm9ybVZhbHVlO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcIm51bWJlclwiKSByZXR1cm4gK2Zvcm1WYWx1ZTtcbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkYXRlXCIpIHtcbiAgICAgICAgcmV0dXJuIG1vbWVudC50eihmb3JtVmFsdWUsIGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQsIGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkudmFsdWVPZigpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJzaW5nbGVTZWxlY3RcIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZT8udmFsdWUgPz8gJyc7XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcIm11bHRpU2VsZWN0XCIpIHtcbiAgICAgIHJldHVybiBmb3JtVmFsdWU/Lm1hcChpdGVtID0+IGl0ZW0udmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiBmb3JtVmFsdWU7XG4gICAgfSBlbHNlIHJldHVybiBmb3JtVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGR5bmFtaWNGaWVsZFZhbGlkYXRvciA9ICh2YWxpZGF0b3JzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGRWYWxpZGF0b3I+KTogVmFsaWRhdG9yRm4gPT4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBsZXQgdmFsdWUgPSBjb250cm9sLnZhbHVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgdmFsdWUgPSB2YWx1ZT8udmFsdWUgPyB2YWx1ZS52YWx1ZSA6ICcnXG4gICAgfVxuICAgIGxldCBlcnJvcnMgPSBudWxsXG5cbiAgICB2YWxpZGF0b3JzLmZvckVhY2goKHZhbGlkYXRvcikgPT4ge1xuICAgICAgbGV0IGVycm9yID0gbnVsbFxuICAgICAgbGV0IG1lc3NhZ2UgPSB2YWxpZGF0b3IubWVzc2FnZVxuICAgICAgc3dpdGNoICh2YWxpZGF0b3IudHlwZSkge1xuICAgICAgICBjYXNlIFwiUmVxdWlyZWRcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMucmVxdWlyZWQoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7UmVxdWlyZWQ6IG1lc3NhZ2V9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJNaW5MZW5ndGhcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMubWluTGVuZ3RoKCt2YWxpZGF0b3IudmFsdWUpKGNvbnRyb2wpXG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgnJHswfScsIGVycm9yPy5taW5sZW5ndGgucmVxdWlyZWRMZW5ndGgpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0geyBNaW5MZW5ndGg6IG1lc3NhZ2UgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiTWF4TGVuZ3RoXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLm1heExlbmd0aCgrdmFsaWRhdG9yLnZhbHVlKShjb250cm9sKVxuICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoJyR7MH0nLCBlcnJvcj8uYWN0dWFsTGVuZ3RoKVxuICAgICAgICAgIGlmKGVycm9yKSBlcnJvciA9IHsgTWF4TGVuZ3RoOiBtZXNzYWdlIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkVtYWlsXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLmVtYWlsKGNvbnRyb2wpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0ge0VtYWlsOiBtZXNzYWdlfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQ3VzdG9tXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLnBhdHRlcm4oYCR7dmFsaWRhdG9yLnZhbHVlfWApKGNvbnRyb2wpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0ge0N1c3RvbTogbWVzc2FnZX1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChlcnJvcikgZXJyb3JzID0geyAuLi5lcnJvcnMsIC4uLmVycm9yIH1cbiAgICB9KVxuICAgIHJldHVybiBlcnJvcnNcbiAgfVxufSIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZHluYW1pY0Zvcm1cIj5cbiAgPG5nLWNvbnRhaW5lciBmb3JtQXJyYXlOYW1lPVwiZHluYW1pY0ZpZWxkc1wiPlxuICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiICpuZ0Zvcj1cImxldCBmaWVsZENvbnRyb2wgb2YgZ2V0RHluYW1pY0ZpZWxkc0NvbnRyb2xzKCkuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICRpbXBsaWNpdDogZm9ybUZpZWxkc1tpXSxcbiAgICAgICAgICBmb3JtR3JvdXA6IGZpZWxkQ29udHJvbCxcbiAgICAgICAgICBjb250cm9sOiBmaWVsZENvbnRyb2wuY29udHJvbHMudmFsdWVcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdWItZHluYW1pYy1mb3JtXCIgKm5nSWY9XCJmaWVsZENvbnRyb2wudmFsdWUgJiYgKCEhZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzICYmIGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcz8ubGVuZ3RoID4gMCAmJiBtYXRjaFBhcmVudENvbmZpZyhmb3JtRmllbGRzW2ldPy5zdWJGaWVsZHMsIGZpZWxkQ29udHJvbC5jb250cm9scy52YWx1ZS52YWx1ZS52YWx1ZSkpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YkZpZWxkQ29udHJvbCBvZiBmaWVsZENvbnRyb2wuY29udHJvbHMuc3ViRmllbGRzLmNvbnRyb2xzOyBsZXQgaiA9IGluZGV4XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDogZmluZFNlbGVjdGVkU3ViRmllbGRDb25maWcoZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzLCBmaWVsZENvbnRyb2wuY29udHJvbHMudmFsdWUudmFsdWUudmFsdWUsaiksXG4gICAgICAgICAgICAgIGNvbnRyb2w6IHN1YkZpZWxkQ29udHJvbFxuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZm9ybT5cblxuXG48bmctdGVtcGxhdGUgI2R5bmFtaWNGaWVsZCBsZXQtZmllbGQgbGV0LWNvbnRyb2w9XCJjb250cm9sXCIgbGV0LWZvcm1ncm91cD1cImZvcm1Hcm91cFwiPlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnaW5wdXQnIGZpZWxkSW5wdXRUeXBlOiAndGV4dCcgfCAnbnVtYmVyJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIlxuICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnaW5wdXQnICYmIChmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RleHQnIHx8IGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnbnVtYmVyJylcIj5cbiAgICA8cCBjbGFzcz1cImg3IGZpZWxkLXRpdGxlLXNtXCI+XG4gICAgICB7eyBmaWVsZC50aXRsZSB9fSA8c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgPC9wPlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgPGlucHV0IGNsYXNzPVwiaW5wdXQtZmllbGQgaXAtdGV4dFwiIFt0eXBlXT1cImZpZWxkLmZpZWxkSW5wdXRUeXBlXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCIgXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcic6IGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycyA/ICcxcHggc29saWQgI0IwMDAyMCc6ICcnfVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJUZXh0ID8gZmllbGQucGxhY2Vob2xkZXJUZXh0IDogJ0lucHV0IFRleHQnXCIgXG4gICAgICBbbWluXT1cImZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnbnVtYmVyJyA/IDAgOiAnJyBcIi8+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIiBcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ2lucHV0JyBmaWVsZElucHV0VHlwZTogJ3RleHRhcmVhJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCJcbiAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RleHRhcmVhJ1wiPlxuICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgIDwvcD5cbiAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJVwiPjwvZGl2PlxuICAgIDx0ZXh0YXJlYSBjbGFzcz1cImlucHV0LWZpZWxkIGlwLXRleHRhcmVhXCIgdHlwZT1cInRleHRcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXInOiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnMgPyAnMXB4IHNvbGlkICNCMDAwMjAnOiAnJ31cIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyVGV4dCA/IGZpZWxkLnBsYWNlaG9sZGVyVGV4dCA6ICdJbnB1dCBUZXh0J1wiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCI+PC90ZXh0YXJlYT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ2lucHV0JyBmaWVsZElucHV0VHlwZTogJ2RhdGUnIC0tPlxuICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCJcbiAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2RhdGUnXCI+XG4gICAgPHAgY2xhc3M9XCJoNlwiPlxuICAgICAge3sgZmllbGQudGl0bGUgfX0gPHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgIDwvcD5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItY29udGFpbmVyXCI+XG4gICAgICA8aW5wdXQgY2xhc3M9XCJkYXRlLXBpY2tlclwiIHJlYWRvbmx5IG1pc1R6RHAgW2RwQ29uZmlnXT1cImZpZWxkLmZpZWxkQ29uZmlnXCJcbiAgICAgICAgKGRhdGVDaGFuZ2UpPVwiY29udHJvbC5zZXRWYWx1ZSgkZXZlbnQpXCIgW3NlbGVjdGVkRGF0ZV09XCJjb250cm9sLnZhbHVlXCIgW29mZnNldFldPVwiMFwiXG4gICAgICAgIFt2YWx1ZV09XCJjb250cm9sLnZhbHVlXCIgI2RwIC8+XG4gICAgICA8aW1nIGFsdD1cImRhdGEtcGlja2VyXCIgKm5nSWY9XCJjYWxlbmRhckljb25VcmxcIiBjbGFzcz1cImRhdGUtcGlja2VyLWljb25cIiBbc3JjXT1cImNhbGVuZGFySWNvblVybFwiXG4gICAgICAgIChjbGljayk9XCJkcC5jbGljaygpXCIgLz5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ2Jvb2xlYW4nIGZpZWxkSW5wdXRUeXBlOiAndG9nZ2xlJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiXG4gICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdib29sZWFuJyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RvZ2dsZSdcIj5cbiAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICA8L3A+XG4gICAgPG1pcy1zd2l0Y2ggW2NvbnRyb2xdPVwiY29udHJvbFwiICh2YWx1ZUNoYW5nZWQpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCI+PC9taXMtc3dpdGNoPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnc2luZ2xlU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2Ryb3Bkb3duJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCJcbiAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkcm9wZG93bidcIj5cbiAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICA8L3A+XG4gICAgPGRpdiBbbmdDbGFzc109XCJ7J3JlbW92ZWFibGUtY29udGFpbmVyJyA6IGZpZWxkPy5pc1JlbW92ZWFibGV9XCI+XG4gICAgICA8bWlzLWRyb3Bkb3duIFtzZWFyY2hFbmFibGVkXT1cImZhbHNlXCIgW3dpZHRoXT1cIicxNDBweCdcIiBbZGF0YV09XCJmaWVsZC5pdGVtc0xpc3RcIiBbc2VsZWN0ZWRJdGVtXT1cImNvbnRyb2wudmFsdWVcIlxuICAgICAgKG9uQ2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JTaW5nbGVTZWxlY3QoZmllbGQsIGNvbnRyb2wsIGZvcm1ncm91cCwgJGV2ZW50KTtcIj5cbiAgICAgIDwvbWlzLWRyb3Bkb3duPlxuICAgICAgPGltZyAqbmdJZj1cImZpZWxkLmlzUmVtb3ZlYWJsZSAmJiByZW1vdmVJY29uVXJsXCIgY2xhc3M9XCJyZW1vdmUtaWNvblwiIFtzcmNdPVwicmVtb3ZlSWNvblVybFwiIChjbGljayk9XCJmaWVsZFJlbW92ZWQuZW1pdChmaWVsZClcIj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ3NpbmdsZVNlbGVjdCcgZmllbGRJbnB1dFR5cGU6ICdyYWRpbycgLS0+XG4gIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIG11bHRpLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiXG4gICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdzaW5nbGVTZWxlY3QnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAncmFkaW8nXCI+XG4gICAgPHAgY2xhc3M9XCJoNyBmaWVsZC10aXRsZS1zbVwiPlxuICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgPC9wPlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgPGRpdiBpZD1cImNoZWNrYm94ZXMtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY2hlY2tib3gtY29tbW9uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQuaXRlbXNMaXN0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnY2hlY2tib3gtYWN0aXZlJzogaXRlbS5sYWJlbCA9PT0gY29udHJvbC52YWx1ZT8ubGFiZWwgfVwiXG4gICAgICAgIChjbGljayk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsIGl0ZW0pO1wiPlxuICAgICAgICA8aW1nICpuZ0lmPVwiKGl0ZW0ubGFiZWwgPT09IGNvbnRyb2wudmFsdWU/LmxhYmVsKSAmJiBhY3RpdmVCdG5JY29uVXJsXCIgW3NyY109XCJhY3RpdmVCdG5JY29uVXJsXCIgYWx0PVwiXCIgLz5cbiAgICAgICAgPHAgY2xhc3M9XCJoNlwiPnt7IGl0ZW0ubGFiZWwgfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ211bHRpU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2NoZWNrYm94JyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCJcbiAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ211bHRpU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2NoZWNrYm94J1wiPlxuICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgIDwvcD5cbiAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJVwiPjwvZGl2PlxuICAgIDxkaXYgaWQ9XCJjaGVja2JveGVzLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWNoZWNrYm94LWNvbW1vblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLml0ZW1zTGlzdFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2NoZWNrYm94LWFjdGl2ZSc6IGlzQ2hlY2tCb3hTZWxlY3RlZChpdGVtLmxhYmVsLCBjb250cm9sLnZhbHVlKSB9XCJcbiAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JNdWx0aVNlbGVjdChmaWVsZCwgY29udHJvbCwgZm9ybWdyb3VwLCBbaXRlbV0pXCI+XG4gICAgICAgIDxpbWcgKm5nSWY9XCJpc0NoZWNrQm94U2VsZWN0ZWQoaXRlbS5sYWJlbCwgY29udHJvbC52YWx1ZSkgJiYgYWN0aXZlQnRuSWNvblVybFwiIFtzcmNdPVwiYWN0aXZlQnRuSWNvblVybFwiXG4gICAgICAgICAgYWx0PVwiXCIgLz5cbiAgICAgICAgPHAgY2xhc3M9XCJoNlwiPnt7IGl0ZW0ubGFiZWwgfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ211bHRpU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2Ryb3Bkb3duJyAtLT5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiXG4gICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkcm9wZG93bidcIj5cbiAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICA8L3A+XG4gICAgPG1pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24gW3dpZHRoXT1cIicxNDBweCdcIiBbc2hvd1NlbGVjdGVkQ291bnRdPVwidHJ1ZVwiIFtkcm9wZG93bkxpc3RXaWR0aF09XCInMjU2cHgnXCJcbiAgICAgIFtzZWFyY2hFbmFibGVkXT1cImZhbHNlXCIgW2hpZGVBcHBseUJ1dHRvbl09XCJ0cnVlXCIgW2RhdGFdPVwiZmllbGQuaXRlbXNMaXN0XCJcbiAgICAgIFtzZWxlY3RlZEl0ZW1zXT1cImNvbnRyb2wudmFsdWVcIiAob25DaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvck11bHRpU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsICRldmVudCk7XCI+PC9taXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2R5bmFtaWNGaWVsZEVycm9ycyBsZXQtZXJyb3JzPlxuICA8ZGl2IGlkPVwiZXJyb3ItbWVzc2FnZXMtY29udGFpbmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JzIHwga2V5dmFsdWVcIj5cbiAgICAgIDxwIGNsYXNzPVwiaDhcIj5cbiAgICAgICAge3tcIiDigKIgJm5ic3A7XCIgKyBlcnJvci52YWx1ZX19XG4gICAgICA8L3A+XG4gICAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJTsgaGVpZ2h0OiAwXCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
1093
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQWdCLEtBQUssRUFBcUIsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRW5JLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQWlDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBKLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JDLE9BQU8saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ1FqQiw2QkFBc0c7SUFDcEcsMkJBTWU7SUFDakIsMEJBQWU7Ozs7Ozs7OztJQU5YLGVBQWlDO0lBQWpDLHNDQUFpQyw2T0FBQTs7O0lBSHZDLDhCQUF5TjtJQUN2Tiw0R0FRZTtJQUNqQixpQkFBTTs7O0lBVHNDLGVBQTZDO0lBQTdDLHFFQUE2Qzs7OztJQVgzRixnQ0FBa0g7SUFDOUcsMkJBUWE7SUFDZixvRkFVTTtJQUNSLDBCQUFlOzs7Ozs7SUFyQkQsb0NBQW1CO0lBRTdCLGVBQWlDO0lBQWpDLHNDQUFpQyxpSUFBQTtJQVFKLGVBQXdMO0lBQXhMLGthQUF3TDs7Ozs7SUFvQnpOLDZCQUF5RTtJQUN2RSxpSUFHZTtJQUNqQiwwQkFBZTs7Ozs7OztJQUhYLGVBQTBDO0lBQTFDLGdFQUEwQywrRkFBQTs7O0lBUXJCLDRCQUE4RDtJQUFDLGtCQUFDO0lBQUEsaUJBQU87Ozs7SUFRNUYsMkJBSWU7Ozs7O0lBSGIsc0NBQXVD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QU8sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO29CQUN6RCxJQUFHLEtBQUs7d0JBQUUsS0FBSyxHQUFHLEVBQUMsTUFBTSxFQUFFLE9BQU8sRUFBQyxDQUFBO29CQUNuQyxNQUFNO2dCQUNSO29CQUNFLE1BQU07YUFDVDtZQUNELElBQUksS0FBSztnQkFBRSxNQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFBO1FBQzdDLENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDLENBQUE7QUFDSCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBOc0R5bmFtaWNGb3JtIH0gZnJvbSBcIi4vZHluYW1pYy1mb3JtLm5hbWVzcGFjZVwiO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBVbnR5cGVkRm9ybUFycmF5LCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLWR5bmFtaWMtZm9ybVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogZm9ybUZpZWxkczogIER5bmFtaWMgZmllbGRzIHJlY2lldmVkIGZyb20gdGhlIEFQSSBtZXRhZGF0YSB0byBidWlsZCBhIGR5bmFtaWMgZm9ybVxuICAgKiBmb3JtVmFsdWVzOiAgSG9sZHMgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZvcm0gd2l0aCBcImtleVwiIGJlaW5nIGR5bmFtaWMgZmllbGQgXCJ0aXRsZVwiXG4gICAqICAgICAgICAgICAgICBhbmQgdmFsdWUgYmVpbmcgdGhlIHVzZXIgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBmb3JtRmllbGRzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+ID0gW107XG4gIEBJbnB1dCgpIGZvcm1WYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgLy8gTmVlZCB0byBkZXByZWNhdGUgdGhlc2UgaW5wdXRzIGFuZCB1c2UgY29uc3RhbnRzLlxuICBASW5wdXQoKSBhY3RpdmVCdG5JY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgY2FsZW5kYXJJY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgcmVtb3ZlSWNvblVybCA9IFwiXCI7XG4gIEBJbnB1dCgpIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzID0gZmFsc2U7XG4gIC8qKlxuICAgKiBkeW5hbWljRm9ybTogQ29uc3RydWN0ZWQgdXNpbmcgZm9ybUZpZWxkcyBhbmQgZm9ybVZhbHVlcyhpbiBjYXNlIG9mIGVkaXQpXG4gICAqL1xuICBkeW5hbWljRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcblxuICAvKipcbiAgICogZm9ybVVwZGF0ZWQ6IEVtaXRzIGZvcm1WYWx1ZXMgT2JqZWN0IHdoZW5ldmVyIHRoZXJlIGlzIGEgY2hhbmdlIGluIHRoZSBkeW5hbWljIGZvcm0uXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybVVwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgW2tleTogc3RyaW5nXTogYW55IH0+KCk7XG4gIC8qKlxuICAgKiBmb3JtVmFsaWQ6IEVtaXRzIGJvb2xlYW4gZGVwZW5kaW5nIG9uIHZhbGlkaXR5IG9mIHRoZSBmb3JtXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybVZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAvKipcbiAgICogZm9ybUluaXRpYWxpemVkOiBFbWl0cyBkeW5hbWljIGZvcm0gQVBJIG9uIGZvcm0gaW5pdGlsaXphdGlvblxuICAgKi9cbiAgQE91dHB1dCgpIGZvcm1Jbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZmllbGRSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+KCk7XG5cbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbUlucHV0VGV4dE51bWJlclwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tSW5wdXRUZXh0TnVtYmVyOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcbiAgXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21JbnB1dFRleHRhcmVhXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21JbnB1dFRleHRhcmVhOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tSW5wdXREYXRlXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21JbnB1dERhdGU6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21Cb29sZWFuVG9nZ2xlXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21Cb29sZWFuVG9nZ2xlOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tU2luZ2xlU2VsZWN0RHJvcGRvd25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbVNpbmdsZVNlbGVjdERyb3Bkb3duOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tU2luZ2xlU2VsZWN0UmFkaW9cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbVNpbmdsZVNlbGVjdFJhZGlvOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tTXVsdGlTZWxlY3RDaGVja2JveFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tTXVsdGlTZWxlY3RDaGVja2JveDogVGVtcGxhdGVSZWY8RWxlbWVudD47XG5cbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbU11bHRpU2VsZWN0RHJvcGRvd25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbU11bHRpU2VsZWN0RHJvcGRvd246IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIGR5bmFtaWNGb3JtQVBJOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRm9ybUFQSTtcbiAgdmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBCdWlsZGluZyB0aGUgZm9ybVxuICAgIHRoaXMuZHluYW1pY0Zvcm0gPSB0aGlzLmdlbmVyYXRlRHluYW1pY0Zvcm0odGhpcy5mb3JtRmllbGRzLCB0aGlzLmZvcm1WYWx1ZXMpO1xuXG4gICAgLy8gU3Vic2NyaWJpbmcgdG8gZm9ybSBjaGFuZ2VzIGFuZCBlbWl0aW5nIHZhbHVlcy5cbiAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiQgPSB0aGlzLmR5bmFtaWNGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoZm9ybVZhbHVlID0+IHtcbiAgICAgIHRoaXMub25Gb3JtVmFsdWVDaGFuZ2VzKCk7XG4gICAgfSk7XG5cbiAgICAvL2FwaSB0byBleHBvc2UgZnVuY3Rpb25zXG4gICAgdGhpcy5keW5hbWljRm9ybUFQSSA9IHtcbiAgICAgIGRlZmF1bHRGb3JtVmFsdWVzOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlRHluYW1pY0ZpZWxkc1ZhbHVlT2JqZWN0KHRoaXMuZHluYW1pY0Zvcm0udmFsdWUuZHluYW1pY0ZpZWxkcyk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLmZvcm1Jbml0aWFsaXplZC5lbWl0KHRoaXMuZHluYW1pY0Zvcm1BUEkpO1xuICAgIHRoaXMuZm9ybVZhbGlkLmVtaXQodGhpcy5keW5hbWljRm9ybS52YWxpZCk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24kPy51bnN1YnNjcmliZSgpO1xuICB9XG4gIG9uRm9ybVZhbHVlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBsZXQgZm9ybVZhbHVlcyA9IHRoaXMuZ2VuZXJhdGVEeW5hbWljRmllbGRzVmFsdWVPYmplY3QodGhpcy5keW5hbWljRm9ybS52YWx1ZS5keW5hbWljRmllbGRzKTtcbiAgICB0aGlzLmZvcm1WYWxpZC5lbWl0KHRoaXMuZHluYW1pY0Zvcm0udmFsaWQpO1xuICAgIHRoaXMuZm9ybVVwZGF0ZWQuZW1pdChmb3JtVmFsdWVzKTtcbiAgICBjb25zb2xlLmxvZyhmb3JtVmFsdWVzKVxuICB9XG4gIGdlbmVyYXRlRHluYW1pY0ZpZWxkc1ZhbHVlT2JqZWN0KGZvcm1WYWx1ZXM6IEFycmF5PGFueT4pOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBsZXQgZHluYW1pY0ZpZWxkc1ZhbHVlID0ge307XG4gICAgZm9ybVZhbHVlcy5mb3JFYWNoKChmaWVsZFZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5tYXBGb3JtRmllbGRUb0Zvcm1WYWx1ZSh0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLCBmaWVsZFZhbHVlLnZhbHVlKTtcbiAgICAgIGlmIChmaWVsZFZhbHVlLnN1YkZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBsZXQgZm9ybWF0dGVkU3ViRmllbGRzVmFsdWVzID0ge31cbiAgICAgICAgbGV0IHN1YkZpZWxkID0gdGhpcy5mb3JtRmllbGRzW2luZGV4XS5zdWJGaWVsZHNcbiAgICAgICAgaWYodGhpcy5mb3JtRmllbGRzW2luZGV4XS5maWVsZFR5cGUgPT09ICdzaW5nbGVTZWxlY3QnIHx8IHRoaXMuZm9ybUZpZWxkc1tpbmRleF0uZmllbGRUeXBlID09PSAnbXVsdGlTZWxlY3QnKSB7XG4gICAgICAgICAgc3ViRmllbGQgPSBzdWJGaWVsZC5maWx0ZXIoKHN1YkZpZWxkKSA9PiBzdWJGaWVsZC5wYXJlbnRDb25maWdWYWx1ZSA9PT0gZmllbGRWYWx1ZS52YWx1ZS52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZmllbGRWYWx1ZS5zdWJGaWVsZHMuZm9yRWFjaCgoc3ViRmllbGRWYWx1ZSwgc3ViSW5kZXgpID0+IHtcbiAgICAgICAgICBsZXQgc3ViRm9ybUZpZWxkID0gc3ViRmllbGRbc3ViSW5kZXhdXG4gICAgICAgICAgZm9ybWF0dGVkU3ViRmllbGRzVmFsdWVzW3N1YkZvcm1GaWVsZC5jb25maWdOYW1lXSA9IHRoaXMubWFwRm9ybUZpZWxkVG9Gb3JtVmFsdWUoc3ViRm9ybUZpZWxkLCBzdWJGaWVsZFZhbHVlKVxuICAgICAgICB9KVxuICAgICAgICBkeW5hbWljRmllbGRzVmFsdWVbdGhpcy5mb3JtRmllbGRzW2luZGV4XS5jb25maWdOYW1lXSA9IHtcbiAgICAgICAgICB2YWx1ZTogZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgICAgc3ViRmllbGRzOiBmb3JtYXR0ZWRTdWJGaWVsZHNWYWx1ZXNcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGR5bmFtaWNGaWVsZHNWYWx1ZVt0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLmNvbmZpZ05hbWVdID0gZm9ybWF0dGVkVmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGR5bmFtaWNGaWVsZHNWYWx1ZTtcbiAgfVxuICBnZW5lcmF0ZUR5bmFtaWNGb3JtKFxuICAgIGZvcm1GaWVsZHM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZD4sXG4gICAgZm9ybVZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxuICApOiBVbnR5cGVkRm9ybUdyb3VwIHtcbiAgICBsZXQgZm9ybUFycmF5ID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoW10pXG5cbiAgICBmb3IgKGxldCBmaWVsZCBvZiBmb3JtRmllbGRzKSB7XG4gICAgICBsZXQgZmllbGRWYWx1ZSA9IGZvcm1WYWx1ZXNbZmllbGQuY29uZmlnTmFtZV0/LnZhbHVlID8gZm9ybVZhbHVlc1tmaWVsZC5jb25maWdOYW1lXS52YWx1ZSA6IGZvcm1WYWx1ZXNbZmllbGQuY29uZmlnTmFtZV1cbiAgICAgIGxldCBmaWVsZENvbnRyb2wgPSB0aGlzLm1hcEZvcm1WYWx1ZVRvRm9ybUZpZWxkKGZpZWxkLCBmaWVsZFZhbHVlKTtcbiAgICAgIGxldCBzdWJGaWVsZHNDb250cm9scyA9IHRoaXMuZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKGZvcm1WYWx1ZXMsIGZpZWxkLCBmaWVsZENvbnRyb2wudmFsdWUpO1xuICAgICAgZm9ybUFycmF5LnB1c2gobmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgICB2YWx1ZTogZmllbGRDb250cm9sLFxuICAgICAgICBzdWJGaWVsZHM6IHN1YkZpZWxkc0NvbnRyb2xzXG4gICAgICB9KSlcbiAgICB9ICBcbiAgICByZXR1cm4gbmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgZHluYW1pY0ZpZWxkczogZm9ybUFycmF5XG4gICAgfSlcbiAgfVxuICBcbiAgZ2V0RHluYW1pY0ZpZWxkc0NvbnRyb2xzKCk6IFVudHlwZWRGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmR5bmFtaWNGb3JtLmdldChcImR5bmFtaWNGaWVsZHNcIikgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgfVxuICB1cGRhdGVTdWJEeW5hbWljRmllbGRzKFxuICAgIGZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlOiBhbnlcbiAgKTogdm9pZCB7XG4gICAgaWYgKGZpZWxkLnN1YkZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IHN1YkZpZWxkc0NvbnRyb2xzID0gdGhpcy5nZW5lcmF0ZVN1YkR5bmFtaWNGaWVsZHModGhpcy5mb3JtVmFsdWVzLCBmaWVsZCwgdmFsdWUpO1xuICAgICAgZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3N1YkZpZWxkcycpXG4gICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbCgnc3ViRmllbGRzJywgc3ViRmllbGRzQ29udHJvbHMpXG4gICAgfVxuICB9XG4gIHVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JTaW5nbGVTZWxlY3QoXG4gICAgZmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlOiBhbnlcbiAgKTogdm9pZCB7XG4gICAgaWYgKGNvbnRyb2wudmFsdWU/LnZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgY29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy51cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtR3JvdXAsIHZhbHVlKTtcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICB1cGRhdGVTZWxlY3RlZFZhbHVlRm9yTXVsdGlTZWxlY3QoXG4gICAgZmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlczogQXJyYXk8YW55PlxuICApOiB2b2lkIHtcbiAgICBsZXQgc2VsZWN0ZWRWYWx1ZXM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IGFueSB9PiA9IGNvbnRyb2wudmFsdWU7XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBsZXQgaXRlbUluZGV4ID0gc2VsZWN0ZWRWYWx1ZXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5sYWJlbCA9PT0gdmFsdWUubGFiZWwpO1xuICAgICAgaWYgKGl0ZW1JbmRleCA+IC0xKSB7XG4gICAgICAgIHNlbGVjdGVkVmFsdWVzLnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZXMucHVzaCh7IC4uLnZhbHVlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBjb250cm9sLnNldFZhbHVlKHNlbGVjdGVkVmFsdWVzKTtcbiAgICB0aGlzLnVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1Hcm91cCwgdmFsdWVzKTtcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICBpc0NoZWNrQm94U2VsZWN0ZWQodmFsdWU6IHN0cmluZywgc2VsZWN0ZWRWYWx1ZXM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzZWxlY3RlZFZhbHVlcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmxhYmVsID09PSB2YWx1ZSkgPiAtMTtcbiAgfVxuXG4gIGZpbmRTZWxlY3RlZFN1YkZpZWxkQ29uZmlnKHN1YmZpZWxkcywgdmFsdWUsIHN1YkZpZWxkSW5kZXgpIHtcbiAgICB0cnl7XG4gICAgICBjb25zdCBzZWxlY3RlZFN1YkZpZWxkQ29uZmlnID0gc3ViZmllbGRzLmZpbHRlcihpdGVtID0+IGl0ZW0ucGFyZW50Q29uZmlnVmFsdWUgPT09IHZhbHVlKVtzdWJGaWVsZEluZGV4XTtcbiAgICAgIHJldHVybiBzZWxlY3RlZFN1YkZpZWxkQ29uZmlnO1xuICAgIH1cbiAgICBjYXRjaChlKXtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3ViZmllbGQgaW5kZXggbm90IGZvdW5kJyk7XG4gICAgfVxuICB9XG5cbiAgbWF0Y2hQYXJlbnRDb25maWcoc3ViZmllbGRzLCB2YWx1ZSkge1xuICAgIGlmICghc3ViZmllbGRzIHx8IHN1YmZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1YmZpZWxkcy5zb21lKGl0ZW0gPT4gaXRlbS5wYXJlbnRDb25maWdWYWx1ZSA9PT0gdmFsdWUpO1xuICB9XG5cbiAgZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKFxuICAgIGZvcm1WYWx1ZXM6IGFueSxcbiAgICBwYXJlbnRGaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIHBhcmVudFZhbHVlOiBBcnJheTx7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfT4gfCB7bGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9IHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhblxuICApOiBVbnR5cGVkRm9ybUFycmF5IHtcbiAgICBsZXQgY29udHJvbHMgPSBuZXcgVW50eXBlZEZvcm1BcnJheShbXSlcbiAgICBsZXQgc3ViRmllbGRzID0gcGFyZW50RmllbGQuc3ViRmllbGRzXG4gICAgbGV0IHN1YkZpZWxkc1ZhbHVlcyA9IGZvcm1WYWx1ZXNbcGFyZW50RmllbGQuY29uZmlnTmFtZV0/LnN1YkZpZWxkcyA/IGZvcm1WYWx1ZXNbcGFyZW50RmllbGQuY29uZmlnTmFtZV0uc3ViRmllbGRzIDoge31cbiAgICBpZighc3ViRmllbGRzKSByZXR1cm4gY29udHJvbHM7XG4gICAgaWYgKHBhcmVudEZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcpIHtcbiAgICAgIHN1YkZpZWxkcyA9IHN1YkZpZWxkcy5maWx0ZXIoKHN1YkZpZWxkKSA9PiBzdWJGaWVsZC5wYXJlbnRDb25maWdWYWx1ZSA9PT0gKDx7bGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9PnBhcmVudFZhbHVlKT8udmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChwYXJlbnRGaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcpIHtcbiAgICAgIGxldCBwYXJlbnRWYWx1ZXMgPSBuZXcgU2V0KCg8QXJyYXk8eyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0+PnBhcmVudFZhbHVlKS5tYXAoKHZhbHVlKSA9PiB2YWx1ZS52YWx1ZSkpO1xuICAgICAgc3ViRmllbGRzID0gc3ViRmllbGRzLmZpbHRlcigoc3ViRmllbGQpID0+IHBhcmVudFZhbHVlcy5oYXMoc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUpKTtcbiAgICB9XG5cbiAgICBpZiAoc3ViRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAobGV0IHN1YkZpZWxkIG9mIHN1YkZpZWxkcykge1xuICAgICAgICAgIGNvbnRyb2xzLnB1c2godGhpcy5tYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChzdWJGaWVsZCwgc3ViRmllbGRzVmFsdWVzW3N1YkZpZWxkLmNvbmZpZ05hbWVdKSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIHJldHVybiBjb250cm9scztcbiAgfVxuICBtYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChmb3JtRmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCwgZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGxldCB2YWxpZGF0b3JzID0gZm9ybUZpZWxkLnZhbGlkYXRvcnMgPyBbZHluYW1pY0ZpZWxkVmFsaWRhdG9yKGZvcm1GaWVsZC52YWxpZGF0b3JzKV06IFtdXG4gICAgbGV0IGNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiaW5wdXRcIikge1xuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0XCIgfHwgZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInRleHRhcmVhXCIpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybVZhbHVlID8gZm9ybVZhbHVlIDogXCJcIik7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwibnVtYmVyXCIpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybVZhbHVlID8gZm9ybVZhbHVlIDogMCk7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwiZGF0ZVwiKSB7XG4gICAgICAgIGlmIChmb3JtVmFsdWUgJiYgdHlwZW9mIGZvcm1WYWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobW9tZW50KGZvcm1WYWx1ZSkudHooZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS5mb3JtYXQoZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobW9tZW50KCkudHooZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS5mb3JtYXQoZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcInNpbmdsZVNlbGVjdFwiKSB7XG4gICAgICBjb25zdCBmaW5kU2VsZWN0ZWRWYWx1ZSA9ICgpID0+IHtcbiAgICAgICAgbGV0IGluZGV4ID0gZm9ybUZpZWxkLml0ZW1zTGlzdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnZhbHVlID09PSBmb3JtVmFsdWUpXG4gICAgICAgIHJldHVybiBpbmRleCA+PSAwID8gZm9ybUZpZWxkLml0ZW1zTGlzdFtpbmRleF06IFwiXCI7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcImRyb3Bkb3duXCIpIHtcbiAgICAgICAgaWYgKCFmb3JtVmFsdWUpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybUZpZWxkLml0ZW1zTGlzdFswXSk7XG4gICAgICAgIGVsc2UgY29udHJvbC5zZXRWYWx1ZShmaW5kU2VsZWN0ZWRWYWx1ZSgpKVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInJhZGlvXCIpIHtcbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShmaW5kU2VsZWN0ZWRWYWx1ZSgpKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJtdWx0aVNlbGVjdFwiKSB7XG4gICAgICBpZiAoZm9ybVZhbHVlICYmIEFycmF5LmlzQXJyYXkoZm9ybVZhbHVlKSkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgZm9ybVZhbHVlKSB7XG4gICAgICAgICAgbGV0IGluZGV4ID0gZm9ybUZpZWxkLml0ZW1zTGlzdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnZhbHVlID09PSB2YWx1ZSk7XG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHNlbGVjdGVkVmFsdWVzLnB1c2goeyAuLi5mb3JtRmllbGQuaXRlbXNMaXN0W2luZGV4XSB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb250cm9sLnNldFZhbHVlKHNlbGVjdGVkVmFsdWVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoW10pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUoISFmb3JtVmFsdWUpO1xuICAgIH0gZWxzZSBjb250cm9sLnNldFZhbHVlKG51bGwpO1xuICAgIHJldHVybiBjb250cm9sO1xuICB9XG4gIG1hcEZvcm1GaWVsZFRvRm9ybVZhbHVlKGZvcm1GaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLCBmb3JtVmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiaW5wdXRcIikge1xuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0XCIgfHwgZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInRleHRhcmVhXCIpIHJldHVybiBmb3JtVmFsdWU7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwibnVtYmVyXCIpIHJldHVybiArZm9ybVZhbHVlO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcImRhdGVcIikge1xuICAgICAgICByZXR1cm4gbW9tZW50LnR6KGZvcm1WYWx1ZSwgZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCwgZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS52YWx1ZU9mKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcInNpbmdsZVNlbGVjdFwiKSB7XG4gICAgICByZXR1cm4gZm9ybVZhbHVlPy52YWx1ZSA/PyAnJztcbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwibXVsdGlTZWxlY3RcIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZT8ubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgICB9IGVsc2UgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZHluYW1pY0ZpZWxkVmFsaWRhdG9yID0gKHZhbGlkYXRvcnM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZFZhbGlkYXRvcj4pOiBWYWxpZGF0b3JGbiA9PiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGxldCB2YWx1ZSA9IGNvbnRyb2wudmFsdWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlPy52YWx1ZSA/IHZhbHVlLnZhbHVlIDogJydcbiAgICB9XG4gICAgbGV0IGVycm9ycyA9IG51bGxcblxuICAgIHZhbGlkYXRvcnMuZm9yRWFjaCgodmFsaWRhdG9yKSA9PiB7XG4gICAgICBsZXQgZXJyb3IgPSBudWxsXG4gICAgICBsZXQgbWVzc2FnZSA9IHZhbGlkYXRvci5tZXNzYWdlXG4gICAgICBzd2l0Y2ggKHZhbGlkYXRvci50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJSZXF1aXJlZFwiOlxuICAgICAgICAgIGVycm9yID0gVmFsaWRhdG9ycy5yZXF1aXJlZChjb250cm9sKVxuICAgICAgICAgIGlmKGVycm9yKSBlcnJvciA9IHtSZXF1aXJlZDogbWVzc2FnZX1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIk1pbkxlbmd0aFwiOlxuICAgICAgICAgIGVycm9yID0gVmFsaWRhdG9ycy5taW5MZW5ndGgoK3ZhbGlkYXRvci52YWx1ZSkoY29udHJvbClcbiAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKCckezB9JywgZXJyb3I/Lm1pbmxlbmd0aC5yZXF1aXJlZExlbmd0aClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7IE1pbkxlbmd0aDogbWVzc2FnZSB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJNYXhMZW5ndGhcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMubWF4TGVuZ3RoKCt2YWxpZGF0b3IudmFsdWUpKGNvbnRyb2wpXG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgnJHswfScsIGVycm9yPy5hY3R1YWxMZW5ndGgpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0geyBNYXhMZW5ndGg6IG1lc3NhZ2UgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiRW1haWxcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMuZW1haWwoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7RW1haWw6IG1lc3NhZ2V9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJDdXN0b21cIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMucGF0dGVybihgJHt2YWxpZGF0b3IudmFsdWV9YCkoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7Q3VzdG9tOiBtZXNzYWdlfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGVycm9yKSBlcnJvcnMgPSB7IC4uLmVycm9ycywgLi4uZXJyb3IgfVxuICAgIH0pXG4gICAgcmV0dXJuIGVycm9yc1xuICB9XG59IiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJkeW5hbWljRm9ybVwiPlxuICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJkeW5hbWljRmllbGRzXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwTmFtZV09XCJpXCIgKm5nRm9yPVwibGV0IGZpZWxkQ29udHJvbCBvZiBnZXREeW5hbWljRmllbGRzQ29udHJvbHMoKS5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgJGltcGxpY2l0OiBmb3JtRmllbGRzW2ldLFxuICAgICAgICAgIGZvcm1Hcm91cDogZmllbGRDb250cm9sLFxuICAgICAgICAgIGNvbnRyb2w6IGZpZWxkQ29udHJvbC5jb250cm9scy52YWx1ZVxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdiBjbGFzcz1cInN1Yi1keW5hbWljLWZvcm1cIiAqbmdJZj1cImZpZWxkQ29udHJvbC52YWx1ZSAmJiAoISFmb3JtRmllbGRzW2ldPy5zdWJGaWVsZHMgJiYgZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzPy5sZW5ndGggPiAwICYmIG1hdGNoUGFyZW50Q29uZmlnKGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcywgZmllbGRDb250cm9sLmNvbnRyb2xzLnZhbHVlLnZhbHVlLnZhbHVlKSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViRmllbGRDb250cm9sIG9mIGZpZWxkQ29udHJvbC5jb250cm9scy5zdWJGaWVsZHMuY29udHJvbHM7IGxldCBqID0gaW5kZXhcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgJGltcGxpY2l0OiBmaW5kU2VsZWN0ZWRTdWJGaWVsZENvbmZpZyhmb3JtRmllbGRzW2ldPy5zdWJGaWVsZHMsIGZpZWxkQ29udHJvbC5jb250cm9scy52YWx1ZS52YWx1ZS52YWx1ZSxqKSxcbiAgICAgICAgICAgICAgY29udHJvbDogc3ViRmllbGRDb250cm9sXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9mb3JtPlxuXG5cbjxuZy10ZW1wbGF0ZSAjZHluYW1pY0ZpZWxkIGxldC1maWVsZCBsZXQtY29udHJvbD1cImNvbnRyb2xcIiBsZXQtZm9ybWdyb3VwPVwiZm9ybUdyb3VwXCI+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdpbnB1dCcgZmllbGRJbnB1dFR5cGU6ICd0ZXh0JyB8ICdudW1iZXInIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnaW5wdXQnICYmIChmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RleHQnIHx8IGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnbnVtYmVyJylcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tSW5wdXRUZXh0TnVtYmVyOyBlbHNlIGRlZmF1bHRJbnB1dFRleHROdW1iZXJcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21JbnB1dFRleHROdW1iZXJcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SW5wdXRUZXh0TnVtYmVyPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgICAgICB7eyBmaWVsZD8udGl0bGUgfX0gPHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0LWZpZWxkIGlwLXRleHRcIiBbdHlwZV09XCJmaWVsZC5maWVsZElucHV0VHlwZVwiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtZ3JvdXAsICRldmVudClcIiBcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcic6IGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycyA/ICcxcHggc29saWQgI0IwMDAyMCc6ICcnfVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyVGV4dCA/IGZpZWxkLnBsYWNlaG9sZGVyVGV4dCA6ICdJbnB1dCBUZXh0J1wiIFxuICAgICAgICAgIFttaW5dPVwiZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdudW1iZXInID8gMCA6ICcnIFwiLz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCIgXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICBcbiAgPCEtLSBmaWVsZFR5cGU6ICdpbnB1dCcgZmllbGRJbnB1dFR5cGU6ICd0ZXh0YXJlYScgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdpbnB1dCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICd0ZXh0YXJlYSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tSW5wdXRUZXh0YXJlYTsgZWxzZSBkZWZhdWx0SW5wdXRUZXh0YXJlYVwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21JbnB1dFRleHRhcmVhXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SW5wdXRUZXh0YXJlYT5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIG11bHRpLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNyBmaWVsZC10aXRsZS1zbVwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImlucHV0LWZpZWxkIGlwLXRleHRhcmVhXCIgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyJzogY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzID8gJzFweCBzb2xpZCAjQjAwMDIwJzogJyd9XCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJUZXh0ID8gZmllbGQucGxhY2Vob2xkZXJUZXh0IDogJ0lucHV0IFRleHQnXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIiAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtZ3JvdXAsICRldmVudClcIj48L3RleHRhcmVhPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgXG4gIDwhLS0gZmllbGRUeXBlOiAnaW5wdXQnIGZpZWxkSW5wdXRUeXBlOiAnZGF0ZScgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdpbnB1dCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkYXRlJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21JbnB1dERhdGU7IGVsc2UgZGVmYXVsdElucHV0RGF0ZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUlucHV0RGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRJbnB1dERhdGU+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiXG4gICAgICAgICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnaW5wdXQnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnZGF0ZSdcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNlwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19IDxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZGF0ZS1waWNrZXJcIiByZWFkb25seSBtaXNUekRwIFtkcENvbmZpZ109XCJmaWVsZC5maWVsZENvbmZpZ1wiXG4gICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJjb250cm9sLnNldFZhbHVlKCRldmVudClcIiBbc2VsZWN0ZWREYXRlXT1cImNvbnRyb2wudmFsdWVcIiBbb2Zmc2V0WV09XCIwXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJjb250cm9sLnZhbHVlXCIgI2RwIC8+XG4gICAgICAgICAgPGltZyBhbHQ9XCJkYXRhLXBpY2tlclwiICpuZ0lmPVwiY2FsZW5kYXJJY29uVXJsXCIgY2xhc3M9XCJkYXRlLXBpY2tlci1pY29uXCIgW3NyY109XCJjYWxlbmRhckljb25VcmxcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRwLmNsaWNrKClcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdib29sZWFuJyBmaWVsZElucHV0VHlwZTogJ3RvZ2dsZScgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdib29sZWFuJyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RvZ2dsZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tQm9vbGVhblRvZ2dsZTsgZWxzZSBkZWZhdWx0Qm9vbGVhblRvZ2dsZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUJvb2xlYW5Ub2dnbGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Qm9vbGVhblRvZ2dsZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIHNpbmdsZS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDZcIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8bWlzLXN3aXRjaCBbY29udHJvbF09XCJjb250cm9sXCIgKHZhbHVlQ2hhbmdlZCk9XCJ1cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtZ3JvdXAsICRldmVudClcIj48L21pcy1zd2l0Y2g+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PiAgICBcbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ3NpbmdsZVNlbGVjdCcgZmllbGRJbnB1dFR5cGU6ICdkcm9wZG93bicgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdzaW5nbGVTZWxlY3QnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnZHJvcGRvd24nXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVNpbmdsZVNlbGVjdERyb3Bkb3duOyBlbHNlIGRlZmF1bHRTaW5nbGVTZWxlY3REcm9wZG93blwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbVNpbmdsZVNlbGVjdERyb3Bkb3duXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNpbmdsZVNlbGVjdERyb3Bkb3duPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J3JlbW92ZWFibGUtY29udGFpbmVyJyA6IGZpZWxkPy5pc1JlbW92ZWFibGV9XCI+XG4gICAgICAgICAgPG1pcy1kcm9wZG93biBbc2VhcmNoRW5hYmxlZF09XCJmYWxzZVwiIFt3aWR0aF09XCInMTQwcHgnXCIgW2RhdGFdPVwiZmllbGQuaXRlbXNMaXN0XCIgW3NlbGVjdGVkSXRlbV09XCJjb250cm9sLnZhbHVlXCJcbiAgICAgICAgICAob25DaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvclNpbmdsZVNlbGVjdChmaWVsZCwgY29udHJvbCwgZm9ybWdyb3VwLCAkZXZlbnQpO1wiPlxuICAgICAgICAgIDwvbWlzLWRyb3Bkb3duPlxuICAgICAgICAgIDxpbWcgKm5nSWY9XCJmaWVsZC5pc1JlbW92ZWFibGUgJiYgcmVtb3ZlSWNvblVybFwiIGNsYXNzPVwicmVtb3ZlLWljb25cIiBbc3JjXT1cInJlbW92ZUljb25VcmxcIiAoY2xpY2spPVwiZmllbGRSZW1vdmVkLmVtaXQoZmllbGQpXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lciA+XG4gIFxuXG4gIDwhLS0gZmllbGRUeXBlOiAnc2luZ2xlU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ3JhZGlvJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdyYWRpbydcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tU2luZ2xlU2VsZWN0UmFkaW87IGVsc2UgZGVmYXVsdFNpbmdsZVNlbGVjdFJhZGlvXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tU2luZ2xlU2VsZWN0UmFkaW9cIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2luZ2xlU2VsZWN0UmFkaW8+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBtdWx0aS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiY2hlY2tib3hlcy1jb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY2hlY2tib3gtY29tbW9uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQuaXRlbXNMaXN0XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2NoZWNrYm94LWFjdGl2ZSc6IGl0ZW0ubGFiZWwgPT09IGNvbnRyb2wudmFsdWU/LmxhYmVsIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JTaW5nbGVTZWxlY3QoZmllbGQsIGNvbnRyb2wsIGZvcm1ncm91cCwgaXRlbSk7XCI+XG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiKGl0ZW0ubGFiZWwgPT09IGNvbnRyb2wudmFsdWU/LmxhYmVsKSAmJiBhY3RpdmVCdG5JY29uVXJsXCIgW3NyY109XCJhY3RpdmVCdG5JY29uVXJsXCIgYWx0PVwiXCIgLz5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiaDZcIj57eyBpdGVtLmxhYmVsIH19PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIFxuXG4gIDwhLS0gZmllbGRUeXBlOiAnbXVsdGlTZWxlY3QnIGZpZWxkSW5wdXRUeXBlOiAnY2hlY2tib3gnIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnbXVsdGlTZWxlY3QnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnY2hlY2tib3gnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbU11bHRpU2VsZWN0Q2hlY2tib3g7IGVsc2UgZGVmYXVsdE11bHRpU2VsZWN0Q2hlY2tib3hcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21NdWx0aVNlbGVjdENoZWNrYm94XCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE11bHRpU2VsZWN0Q2hlY2tib3g+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBtdWx0aS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiY2hlY2tib3hlcy1jb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY2hlY2tib3gtY29tbW9uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQuaXRlbXNMaXN0XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2NoZWNrYm94LWFjdGl2ZSc6IGlzQ2hlY2tCb3hTZWxlY3RlZChpdGVtLmxhYmVsLCBjb250cm9sLnZhbHVlKSB9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yTXVsdGlTZWxlY3QoZmllbGQsIGNvbnRyb2wsIGZvcm1ncm91cCwgW2l0ZW1dKVwiPlxuICAgICAgICAgICAgPGltZyAqbmdJZj1cImlzQ2hlY2tCb3hTZWxlY3RlZChpdGVtLmxhYmVsLCBjb250cm9sLnZhbHVlKSAmJiBhY3RpdmVCdG5JY29uVXJsXCIgW3NyY109XCJhY3RpdmVCdG5JY29uVXJsXCJcbiAgICAgICAgICAgICAgYWx0PVwiXCIgLz5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiaDZcIj57eyBpdGVtLmxhYmVsIH19PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG5cblxuICA8IS0tIGZpZWxkVHlwZTogJ211bHRpU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2Ryb3Bkb3duJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ211bHRpU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2Ryb3Bkb3duJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21NdWx0aVNlbGVjdERyb3Bkb3duOyBlbHNlIGRlZmF1bHRNdWx0aVNlbGVjdERyb3Bkb3duXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tTXVsdGlTZWxlY3REcm9wZG93blwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRNdWx0aVNlbGVjdERyb3Bkb3duPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNlwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxtaXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duIFt3aWR0aF09XCInMTQwcHgnXCIgW3Nob3dTZWxlY3RlZENvdW50XT1cInRydWVcIiBbZHJvcGRvd25MaXN0V2lkdGhdPVwiJzI1NnB4J1wiXG4gICAgICAgICAgW3NlYXJjaEVuYWJsZWRdPVwiZmFsc2VcIiBbaGlkZUFwcGx5QnV0dG9uXT1cInRydWVcIiBbZGF0YV09XCJmaWVsZC5pdGVtc0xpc3RcIlxuICAgICAgICAgIFtzZWxlY3RlZEl0ZW1zXT1cImNvbnRyb2wudmFsdWVcIiAob25DaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvck11bHRpU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsICRldmVudCk7XCI+PC9taXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkeW5hbWljRmllbGRFcnJvcnMgbGV0LWVycm9ycz5cbiAgPGRpdiBpZD1cImVycm9yLW1lc3NhZ2VzLWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVycm9yIG9mIGVycm9ycyB8IGtleXZhbHVlXCI+XG4gICAgICA8cCBjbGFzcz1cImg4XCI+XG4gICAgICAgIHt7XCIg4oCiICZuYnNwO1wiICsgZXJyb3IudmFsdWV9fVxuICAgICAgPC9wPlxuICAgICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCU7IGhlaWdodDogMFwiPjwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19