@tilde-nlp/ngx-common 6.1.95 → 6.1.96

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.
@@ -26,13 +26,13 @@ import * as i14 from "@angular/material/icon";
26
26
  import * as i15 from "@angular/material/paginator";
27
27
  const _c0 = ["tableContainer"];
28
28
  const _c1 = ["filterBar"];
29
- const _c2 = [[["", "additionalActions", ""]], [["", "batchActions", ""]], "*"];
30
- const _c3 = ["[additionalActions]", "[batchActions]", "*"];
29
+ const _c2 = [[["", "tableTitleBlock", ""]], [["", "additionalActions", ""]], [["", "batchActions", ""]], "*"];
30
+ const _c3 = ["[tableTitleBlock]", "[additionalActions]", "[batchActions]", "*"];
31
31
  const _c4 = () => [10];
32
- function MultiFunctionalTableComponent_button_3_Template(rf, ctx) { if (rf & 1) {
32
+ function MultiFunctionalTableComponent_button_4_Template(rf, ctx) { if (rf & 1) {
33
33
  const _r2 = i0.ɵɵgetCurrentView();
34
34
  i0.ɵɵelementStart(0, "button", 25);
35
- i0.ɵɵlistener("click", function MultiFunctionalTableComponent_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.export()); });
35
+ i0.ɵɵlistener("click", function MultiFunctionalTableComponent_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.export()); });
36
36
  i0.ɵɵelementStart(1, "span", 26);
37
37
  i0.ɵɵtext(2, "cloud_download");
38
38
  i0.ɵɵelementEnd();
@@ -44,18 +44,18 @@ function MultiFunctionalTableComponent_button_3_Template(rf, ctx) { if (rf & 1)
44
44
  i0.ɵɵadvance(4);
45
45
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 1, "MULTI_FUNCTIONAL_TABLE.EXPORT"));
46
46
  } }
47
- function MultiFunctionalTableComponent_div_4_div_7_Template(rf, ctx) { if (rf & 1) {
47
+ function MultiFunctionalTableComponent_div_5_div_7_Template(rf, ctx) { if (rf & 1) {
48
48
  const _r5 = i0.ɵɵgetCurrentView();
49
49
  i0.ɵɵelementStart(0, "div", 31)(1, "button", 32);
50
- i0.ɵɵlistener("click", function MultiFunctionalTableComponent_div_4_div_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.clearFilters()); });
50
+ i0.ɵɵlistener("click", function MultiFunctionalTableComponent_div_5_div_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.clearFilters()); });
51
51
  i0.ɵɵelementStart(2, "mat-icon");
52
52
  i0.ɵɵtext(3, "close");
53
53
  i0.ɵɵelementEnd()()();
54
54
  } }
55
- function MultiFunctionalTableComponent_div_4_Template(rf, ctx) { if (rf & 1) {
55
+ function MultiFunctionalTableComponent_div_5_Template(rf, ctx) { if (rf & 1) {
56
56
  const _r4 = i0.ɵɵgetCurrentView();
57
57
  i0.ɵɵelementStart(0, "div", 27)(1, "button", 28);
58
- i0.ɵɵlistener("click", function MultiFunctionalTableComponent_div_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleFilterBar()); });
58
+ i0.ɵɵlistener("click", function MultiFunctionalTableComponent_div_5_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleFilterBar()); });
59
59
  i0.ɵɵelementStart(2, "span", 29);
60
60
  i0.ɵɵtext(3, "filter_list");
61
61
  i0.ɵɵelementEnd();
@@ -63,7 +63,7 @@ function MultiFunctionalTableComponent_div_4_Template(rf, ctx) { if (rf & 1) {
63
63
  i0.ɵɵtext(5);
64
64
  i0.ɵɵpipe(6, "translate");
65
65
  i0.ɵɵelementEnd()();
66
- i0.ɵɵtemplate(7, MultiFunctionalTableComponent_div_4_div_7_Template, 4, 0, "div", 30);
66
+ i0.ɵɵtemplate(7, MultiFunctionalTableComponent_div_5_div_7_Template, 4, 0, "div", 30);
67
67
  i0.ɵɵelementEnd();
68
68
  } if (rf & 2) {
69
69
  const ctx_r2 = i0.ɵɵnextContext();
@@ -74,15 +74,15 @@ function MultiFunctionalTableComponent_div_4_Template(rf, ctx) { if (rf & 1) {
74
74
  i0.ɵɵadvance(2);
75
75
  i0.ɵɵproperty("ngIf", ctx_r2.showFilterReset);
76
76
  } }
77
- function MultiFunctionalTableComponent_div_5_button_7_Template(rf, ctx) { if (rf & 1) {
77
+ function MultiFunctionalTableComponent_div_6_button_7_Template(rf, ctx) { if (rf & 1) {
78
78
  const _r7 = i0.ɵɵgetCurrentView();
79
79
  i0.ɵɵelementStart(0, "button", 37);
80
- i0.ɵɵlistener("click", function MultiFunctionalTableComponent_div_5_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); i0.ɵɵnextContext(); const wildSearch_r8 = i0.ɵɵreference(5); const ctx_r2 = i0.ɵɵnextContext(); wildSearch_r8.value = ""; return i0.ɵɵresetView(ctx_r2.search({ target: { value: "" } })); });
80
+ i0.ɵɵlistener("click", function MultiFunctionalTableComponent_div_6_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); i0.ɵɵnextContext(); const wildSearch_r8 = i0.ɵɵreference(5); const ctx_r2 = i0.ɵɵnextContext(); wildSearch_r8.value = ""; return i0.ɵɵresetView(ctx_r2.search({ target: { value: "" } })); });
81
81
  i0.ɵɵelementStart(1, "mat-icon");
82
82
  i0.ɵɵtext(2, "close");
83
83
  i0.ɵɵelementEnd()();
84
84
  } }
85
- function MultiFunctionalTableComponent_div_5_Template(rf, ctx) { if (rf & 1) {
85
+ function MultiFunctionalTableComponent_div_6_Template(rf, ctx) { if (rf & 1) {
86
86
  const _r6 = i0.ɵɵgetCurrentView();
87
87
  i0.ɵɵelementStart(0, "div", 33)(1, "mat-icon", 34);
88
88
  i0.ɵɵpipe(2, "translate");
@@ -90,9 +90,9 @@ function MultiFunctionalTableComponent_div_5_Template(rf, ctx) { if (rf & 1) {
90
90
  i0.ɵɵelementEnd();
91
91
  i0.ɵɵelementStart(4, "input", 35, 3);
92
92
  i0.ɵɵpipe(6, "translate");
93
- i0.ɵɵlistener("keyup", function MultiFunctionalTableComponent_div_5_Template_input_keyup_4_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.search($event)); });
93
+ i0.ɵɵlistener("keyup", function MultiFunctionalTableComponent_div_6_Template_input_keyup_4_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.search($event)); });
94
94
  i0.ɵɵelementEnd();
95
- i0.ɵɵtemplate(7, MultiFunctionalTableComponent_div_5_button_7_Template, 3, 0, "button", 36);
95
+ i0.ɵɵtemplate(7, MultiFunctionalTableComponent_div_6_button_7_Template, 3, 0, "button", 36);
96
96
  i0.ɵɵelementEnd();
97
97
  } if (rf & 2) {
98
98
  let tmp_6_0;
@@ -105,21 +105,21 @@ function MultiFunctionalTableComponent_div_5_Template(rf, ctx) { if (rf & 1) {
105
105
  i0.ɵɵadvance(3);
106
106
  i0.ɵɵproperty("ngIf", ctx_r2.showSearchClearButton && wildSearch_r8.value);
107
107
  } }
108
- function MultiFunctionalTableComponent_tld_filter_bar_7_Template(rf, ctx) { if (rf & 1) {
108
+ function MultiFunctionalTableComponent_tld_filter_bar_8_Template(rf, ctx) { if (rf & 1) {
109
109
  const _r9 = i0.ɵɵgetCurrentView();
110
110
  i0.ɵɵelementStart(0, "tld-filter-bar", 38, 4);
111
- i0.ɵɵlistener("filterBarChange", function MultiFunctionalTableComponent_tld_filter_bar_7_Template_tld_filter_bar_filterBarChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.filtersChanged($event)); });
111
+ i0.ɵɵlistener("filterBarChange", function MultiFunctionalTableComponent_tld_filter_bar_8_Template_tld_filter_bar_filterBarChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.filtersChanged($event)); });
112
112
  i0.ɵɵelementEnd();
113
113
  } if (rf & 2) {
114
114
  const ctx_r2 = i0.ɵɵnextContext();
115
115
  i0.ɵɵproperty("filterRowVisible", ctx_r2.filterBarVisible)("settings", ctx_r2.config.filter.settings);
116
116
  } }
117
- function MultiFunctionalTableComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
117
+ function MultiFunctionalTableComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
118
118
  const _r10 = i0.ɵɵgetCurrentView();
119
119
  i0.ɵɵdeclareLet(0);
120
120
  i0.ɵɵelementStart(1, "mat-paginator", 39);
121
121
  i0.ɵɵpipe(2, "translate");
122
- i0.ɵɵlistener("page", function MultiFunctionalTableComponent_Conditional_9_Template_mat_paginator_page_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.paginatorChange($event)); });
122
+ i0.ɵɵlistener("page", function MultiFunctionalTableComponent_Conditional_10_Template_mat_paginator_page_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.paginatorChange($event)); });
123
123
  i0.ɵɵelementEnd();
124
124
  } if (rf & 2) {
125
125
  let tmp_7_0;
@@ -128,31 +128,31 @@ function MultiFunctionalTableComponent_Conditional_9_Template(rf, ctx) { if (rf
128
128
  i0.ɵɵproperty("hidePageSize", !paginatorConfig_r11.showPageSize)("showFirstLastButtons", paginatorConfig_r11.showFirstLastButtons)("pageSizeOptions", (tmp_7_0 = paginatorConfig_r11.pageSizeOptions) !== null && tmp_7_0 !== undefined ? tmp_7_0 : i0.ɵɵpureFunction0(6, _c4));
129
129
  i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(2, 4, "MULTI_FUNCTIONAL_TABLE.PAGINATOR_LABEL"));
130
130
  } }
131
- function MultiFunctionalTableComponent_th_16_Template(rf, ctx) { if (rf & 1) {
131
+ function MultiFunctionalTableComponent_th_17_Template(rf, ctx) { if (rf & 1) {
132
132
  const _r12 = i0.ɵɵgetCurrentView();
133
133
  i0.ɵɵelementStart(0, "th", 40)(1, "mat-checkbox", 41);
134
134
  i0.ɵɵpipe(2, "translate");
135
- i0.ɵɵlistener("change", function MultiFunctionalTableComponent_th_16_Template_mat_checkbox_change_1_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleAllRowSelection()); });
135
+ i0.ɵɵlistener("change", function MultiFunctionalTableComponent_th_17_Template_mat_checkbox_change_1_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleAllRowSelection()); });
136
136
  i0.ɵɵelementEnd()();
137
137
  } if (rf & 2) {
138
138
  const ctx_r2 = i0.ɵɵnextContext();
139
139
  i0.ɵɵadvance();
140
140
  i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(2, 4, "MULTI_FUNCTIONAL_TABLE.SELECT_ALL"))("disabled", ctx_r2.config.batchConfig.checkBoxesDisabled)("checked", ctx_r2.matSelection.hasValue() && ctx_r2.isAllSelected())("indeterminate", ctx_r2.matSelection.hasValue() && !ctx_r2.isAllSelected());
141
141
  } }
142
- function MultiFunctionalTableComponent_td_17_mat_checkbox_1_Template(rf, ctx) { if (rf & 1) {
142
+ function MultiFunctionalTableComponent_td_18_mat_checkbox_1_Template(rf, ctx) { if (rf & 1) {
143
143
  const _r13 = i0.ɵɵgetCurrentView();
144
144
  i0.ɵɵelementStart(0, "mat-checkbox", 44);
145
145
  i0.ɵɵpipe(1, "translate");
146
- i0.ɵɵlistener("click", function MultiFunctionalTableComponent_td_17_mat_checkbox_1_Template_mat_checkbox_click_0_listener($event) { i0.ɵɵrestoreView(_r13); return i0.ɵɵresetView($event.stopPropagation()); })("change", function MultiFunctionalTableComponent_td_17_mat_checkbox_1_Template_mat_checkbox_change_0_listener() { i0.ɵɵrestoreView(_r13); const element_r14 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleElementSelection(element_r14)); });
146
+ i0.ɵɵlistener("click", function MultiFunctionalTableComponent_td_18_mat_checkbox_1_Template_mat_checkbox_click_0_listener($event) { i0.ɵɵrestoreView(_r13); return i0.ɵɵresetView($event.stopPropagation()); })("change", function MultiFunctionalTableComponent_td_18_mat_checkbox_1_Template_mat_checkbox_change_0_listener() { i0.ɵɵrestoreView(_r13); const element_r14 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleElementSelection(element_r14)); });
147
147
  i0.ɵɵelementEnd();
148
148
  } if (rf & 2) {
149
149
  const element_r14 = i0.ɵɵnextContext().$implicit;
150
150
  const ctx_r2 = i0.ɵɵnextContext();
151
151
  i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 3, "MULTI_FUNCTIONAL_TABLE.SELECT"))("disabled", ctx_r2.config.batchConfig.checkBoxesDisabled || ctx_r2.preselectedItems.includes(element_r14) && ctx_r2.disablePreselectedItems)("checked", ctx_r2.matSelection.isSelected(element_r14));
152
152
  } }
153
- function MultiFunctionalTableComponent_td_17_Template(rf, ctx) { if (rf & 1) {
153
+ function MultiFunctionalTableComponent_td_18_Template(rf, ctx) { if (rf & 1) {
154
154
  i0.ɵɵelementStart(0, "td", 42);
155
- i0.ɵɵtemplate(1, MultiFunctionalTableComponent_td_17_mat_checkbox_1_Template, 2, 5, "mat-checkbox", 43);
155
+ i0.ɵɵtemplate(1, MultiFunctionalTableComponent_td_18_mat_checkbox_1_Template, 2, 5, "mat-checkbox", 43);
156
156
  i0.ɵɵelementEnd();
157
157
  } if (rf & 2) {
158
158
  const element_r14 = ctx.$implicit;
@@ -160,13 +160,13 @@ function MultiFunctionalTableComponent_td_17_Template(rf, ctx) { if (rf & 1) {
160
160
  i0.ɵɵadvance();
161
161
  i0.ɵɵproperty("ngIf", ctx_r2.isRowCheckboxAlwaysVisible || ctx_r2.hoveredRow === element_r14 || ctx_r2.matSelection.isSelected(element_r14));
162
162
  } }
163
- function MultiFunctionalTableComponent_tr_18_Template(rf, ctx) { if (rf & 1) {
163
+ function MultiFunctionalTableComponent_tr_19_Template(rf, ctx) { if (rf & 1) {
164
164
  i0.ɵɵelement(0, "tr", 45);
165
165
  } }
166
- function MultiFunctionalTableComponent_tr_19_Template(rf, ctx) { if (rf & 1) {
166
+ function MultiFunctionalTableComponent_tr_20_Template(rf, ctx) { if (rf & 1) {
167
167
  const _r15 = i0.ɵɵgetCurrentView();
168
168
  i0.ɵɵelementStart(0, "tr", 46);
169
- i0.ɵɵlistener("click", function MultiFunctionalTableComponent_tr_19_Template_tr_click_0_listener() { const row_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView((ctx_r2.config == null ? null : ctx_r2.config.rowClickCallback) && (!ctx_r2.config.disableRowClick || !(ctx_r2.config == null ? null : ctx_r2.config.disableRowClick(row_r16))) ? ctx_r2.config == null ? null : ctx_r2.config.rowClickCallback(row_r16) : null); })("mouseover", function MultiFunctionalTableComponent_tr_19_Template_tr_mouseover_0_listener() { const ctx_r16 = i0.ɵɵrestoreView(_r15); const row_r16 = ctx_r16.$implicit; const index_r18 = ctx_r16.index; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.rowHovered(index_r18, row_r16)); })("mouseleave", function MultiFunctionalTableComponent_tr_19_Template_tr_mouseleave_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.rowHoverLeave()); });
169
+ i0.ɵɵlistener("click", function MultiFunctionalTableComponent_tr_20_Template_tr_click_0_listener() { const row_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView((ctx_r2.config == null ? null : ctx_r2.config.rowClickCallback) && (!ctx_r2.config.disableRowClick || !(ctx_r2.config == null ? null : ctx_r2.config.disableRowClick(row_r16))) ? ctx_r2.config == null ? null : ctx_r2.config.rowClickCallback(row_r16) : null); })("mouseover", function MultiFunctionalTableComponent_tr_20_Template_tr_mouseover_0_listener() { const ctx_r16 = i0.ɵɵrestoreView(_r15); const row_r16 = ctx_r16.$implicit; const index_r18 = ctx_r16.index; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.rowHovered(index_r18, row_r16)); })("mouseleave", function MultiFunctionalTableComponent_tr_20_Template_tr_mouseleave_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.rowHoverLeave()); });
170
170
  i0.ɵɵelementEnd();
171
171
  } if (rf & 2) {
172
172
  const row_r16 = ctx.$implicit;
@@ -174,20 +174,20 @@ function MultiFunctionalTableComponent_tr_19_Template(rf, ctx) { if (rf & 1) {
174
174
  const ctx_r2 = i0.ɵɵnextContext();
175
175
  i0.ɵɵclassProp("row-clickable", (ctx_r2.config == null ? null : ctx_r2.config.rowClickCallback) && (!ctx_r2.config.disableRowClick || !(ctx_r2.config == null ? null : ctx_r2.config.disableRowClick(row_r16))))("highlight-error", ctx_r2.highlightErrorElement(index_r18, row_r16))("highlight", ctx_r2.isElementHighlighted(index_r18, row_r16));
176
176
  } }
177
- function MultiFunctionalTableComponent_th_21_Template(rf, ctx) { if (rf & 1) {
177
+ function MultiFunctionalTableComponent_th_22_Template(rf, ctx) { if (rf & 1) {
178
178
  i0.ɵɵelementStart(0, "th", 40)(1, "div", 47)(2, "button", 48)(3, "span", 29);
179
179
  i0.ɵɵtext(4, "more_vert");
180
180
  i0.ɵɵelementEnd()()()();
181
181
  } if (rf & 2) {
182
182
  i0.ɵɵnextContext();
183
- const columnMenu_r19 = i0.ɵɵreference(25);
183
+ const columnMenu_r19 = i0.ɵɵreference(26);
184
184
  i0.ɵɵadvance(2);
185
185
  i0.ɵɵproperty("matMenuTriggerFor", columnMenu_r19);
186
186
  } }
187
- function MultiFunctionalTableComponent_td_22_Template(rf, ctx) { if (rf & 1) {
187
+ function MultiFunctionalTableComponent_td_23_Template(rf, ctx) { if (rf & 1) {
188
188
  i0.ɵɵelement(0, "td", 42);
189
189
  } }
190
- function MultiFunctionalTableComponent_ng_container_23_tr_1_Template(rf, ctx) { if (rf & 1) {
190
+ function MultiFunctionalTableComponent_ng_container_24_tr_1_Template(rf, ctx) { if (rf & 1) {
191
191
  i0.ɵɵelementStart(0, "tr")(1, "td", 50);
192
192
  i0.ɵɵelement(2, "lib-status-display", 51);
193
193
  i0.ɵɵelementEnd()();
@@ -196,15 +196,15 @@ function MultiFunctionalTableComponent_ng_container_23_tr_1_Template(rf, ctx) {
196
196
  i0.ɵɵadvance(2);
197
197
  i0.ɵɵproperty("config", ctx_r2.noDataRowConfig);
198
198
  } }
199
- function MultiFunctionalTableComponent_ng_container_23_Template(rf, ctx) { if (rf & 1) {
199
+ function MultiFunctionalTableComponent_ng_container_24_Template(rf, ctx) { if (rf & 1) {
200
200
  i0.ɵɵelementContainerStart(0);
201
- i0.ɵɵtemplate(1, MultiFunctionalTableComponent_ng_container_23_tr_1_Template, 3, 1, "tr", 49);
201
+ i0.ɵɵtemplate(1, MultiFunctionalTableComponent_ng_container_24_tr_1_Template, 3, 1, "tr", 49);
202
202
  i0.ɵɵelementContainerEnd();
203
203
  } }
204
- function MultiFunctionalTableComponent_div_27_Template(rf, ctx) { if (rf & 1) {
204
+ function MultiFunctionalTableComponent_div_28_Template(rf, ctx) { if (rf & 1) {
205
205
  const _r20 = i0.ɵɵgetCurrentView();
206
206
  i0.ɵɵelementStart(0, "div")(1, "mat-checkbox", 52);
207
- i0.ɵɵtwoWayListener("ngModelChange", function MultiFunctionalTableComponent_div_27_Template_mat_checkbox_ngModelChange_1_listener($event) { const column_r21 = i0.ɵɵrestoreView(_r20).$implicit; i0.ɵɵtwoWayBindingSet(column_r21.selected, $event) || (column_r21.selected = $event); return i0.ɵɵresetView($event); });
207
+ i0.ɵɵtwoWayListener("ngModelChange", function MultiFunctionalTableComponent_div_28_Template_mat_checkbox_ngModelChange_1_listener($event) { const column_r21 = i0.ɵɵrestoreView(_r20).$implicit; i0.ɵɵtwoWayBindingSet(column_r21.selected, $event) || (column_r21.selected = $event); return i0.ɵɵresetView($event); });
208
208
  i0.ɵɵtext(2);
209
209
  i0.ɵɵpipe(3, "translate");
210
210
  i0.ɵɵelementEnd()();
@@ -565,43 +565,44 @@ export class MultiFunctionalTableComponent {
565
565
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterBar = _t.first);
566
566
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.paginator = _t.first);
567
567
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tableElementRef = _t.first);
568
- } }, inputs: { config: "config", highlightedElements: "highlightedElements", trackByFn: "trackByFn", highlightedErrorElements: "highlightedErrorElements", selection: "selection", isRowCheckboxAlwaysVisible: "isRowCheckboxAlwaysVisible", disablePreselectedItems: "disablePreselectedItems", data: [1, "data"] }, outputs: { filterBarChange: "filterBarChange", paginatorUpdate: "paginatorUpdate", exported: "exported", selectionChange: "selectionChange" }, ngContentSelectors: _c3, decls: 32, vars: 22, consts: [["tableContainer", ""], ["table", ""], ["columnMenu", "matMenu"], ["wildSearch", ""], ["filterBar", ""], ["fxLayout", "column", "fxLayoutGap", "0.75rem", 3, "ngClass.lt-md"], ["fxLayout", "row", "fxLayout.lt-md", "column", "fxLayoutGap.lt-md", "0.75rem"], ["fxFlex", "", "fxLayout.lt-md", "column", "fxLayoutGap", "0.75rem", "fxLayoutAlign", "start center", "fxLayoutAlign.lt-md", "start start", 1, "action-row"], ["class", "export-data", "mat-stroked-button", "", "color", "accent", 3, "click", 4, "ngIf"], ["fxFlex", "", "fxLayoutGap", "0.5rem", "fxLayoutAlign", "start center", 4, "ngIf"], ["fxLayout", "row", "fxLayoutAlign", "start center", "class", "wild-search-wrapper", 4, "ngIf"], [3, "filterRowVisible", "settings", "filterBarChange", 4, "ngIf"], [3, "hidePageSize", "showFirstLastButtons", "pageSizeOptions"], [1, "table-overflow", 3, "mousedown", "mouseup", "mouseleave", "mousemove"], ["mat-table", "", 3, "dataSource", "trackBy"], [3, "matColumnDef"], ["class", "row-select", "mat-header-cell", "", "disable-export", "", 4, "matHeaderCellDef"], ["class", "row-select", "mat-cell", "", "disable-export", "", 4, "matCellDef"], ["mat-header-row", "", 4, "matHeaderRowDef", "matHeaderRowDefSticky"], ["mat-row", "", 3, "row-clickable", "highlight-error", "highlight", "click", "mouseover", "mouseleave", 4, "matRowDef", "matRowDefColumns"], [4, "ngIf"], [1, "column-select-menu", 3, "click"], [4, "ngFor", "ngForOf"], [1, "column-select-save"], ["mat-flat-button", "", "color", "accent", 3, "click"], ["mat-stroked-button", "", "color", "accent", 1, "export-data", 3, "click"], [1, "material-icons-outlined"], ["fxFlex", "", "fxLayoutGap", "0.5rem", "fxLayoutAlign", "start center"], ["mat-stroked-button", "", "color", "accent", 3, "click"], [1, "material-icons"], ["class", "clear-filters-wrapper", 4, "ngIf"], [1, "clear-filters-wrapper"], ["mat-icon-button", "", 3, "click"], ["fxLayout", "row", "fxLayoutAlign", "start center", 1, "wild-search-wrapper"], [1, "search-icon", 3, "matTooltip"], ["type", "text", 3, "keyup", "value", "placeholder"], ["mat-icon-button", "", "class", "wild-search-clear-btn", 3, "click", 4, "ngIf"], ["mat-icon-button", "", 1, "wild-search-clear-btn", 3, "click"], [3, "filterBarChange", "filterRowVisible", "settings"], [3, "page", "hidePageSize", "showFirstLastButtons", "pageSizeOptions"], ["mat-header-cell", "", "disable-export", "", 1, "row-select"], [3, "change", "matTooltip", "disabled", "checked", "indeterminate"], ["mat-cell", "", "disable-export", "", 1, "row-select"], [3, "matTooltip", "disabled", "checked", "click", "change", 4, "ngIf"], [3, "click", "change", "matTooltip", "disabled", "checked"], ["mat-header-row", ""], ["mat-row", "", 3, "click", "mouseover", "mouseleave"], [1, "column-selector-wrapper"], ["mat-icon-button", "", "color", "accent", 1, "column-selector", 3, "matMenuTriggerFor"], [4, "matNoDataRow"], ["colspan", "99"], [3, "config"], [3, "ngModelChange", "ngModel"]], template: function MultiFunctionalTableComponent_Template(rf, ctx) { if (rf & 1) {
568
+ } }, inputs: { config: "config", highlightedElements: "highlightedElements", trackByFn: "trackByFn", highlightedErrorElements: "highlightedErrorElements", selection: "selection", isRowCheckboxAlwaysVisible: "isRowCheckboxAlwaysVisible", disablePreselectedItems: "disablePreselectedItems", data: [1, "data"] }, outputs: { filterBarChange: "filterBarChange", paginatorUpdate: "paginatorUpdate", exported: "exported", selectionChange: "selectionChange" }, ngContentSelectors: _c3, decls: 33, vars: 22, consts: [["tableContainer", ""], ["table", ""], ["columnMenu", "matMenu"], ["wildSearch", ""], ["filterBar", ""], ["fxLayout", "column", "fxLayoutGap", "0.75rem", 3, "ngClass.lt-md"], ["fxLayout", "row", "fxLayout.lt-md", "column", "fxLayoutGap.lt-md", "0.75rem"], ["fxFlex", "", "fxLayout.lt-md", "column", "fxLayoutGap", "0.75rem", "fxLayoutAlign", "start center", "fxLayoutAlign.lt-md", "start start", 1, "action-row"], ["class", "export-data", "mat-stroked-button", "", "color", "accent", 3, "click", 4, "ngIf"], ["fxFlex", "", "fxLayoutGap", "0.5rem", "fxLayoutAlign", "start center", 4, "ngIf"], ["fxLayout", "row", "fxLayoutAlign", "start center", "class", "wild-search-wrapper", 4, "ngIf"], [3, "filterRowVisible", "settings", "filterBarChange", 4, "ngIf"], [3, "hidePageSize", "showFirstLastButtons", "pageSizeOptions"], [1, "table-overflow", 3, "mousedown", "mouseup", "mouseleave", "mousemove"], ["mat-table", "", 3, "dataSource", "trackBy"], [3, "matColumnDef"], ["class", "row-select", "mat-header-cell", "", "disable-export", "", 4, "matHeaderCellDef"], ["class", "row-select", "mat-cell", "", "disable-export", "", 4, "matCellDef"], ["mat-header-row", "", 4, "matHeaderRowDef", "matHeaderRowDefSticky"], ["mat-row", "", 3, "row-clickable", "highlight-error", "highlight", "click", "mouseover", "mouseleave", 4, "matRowDef", "matRowDefColumns"], [4, "ngIf"], [1, "column-select-menu", 3, "click"], [4, "ngFor", "ngForOf"], [1, "column-select-save"], ["mat-flat-button", "", "color", "accent", 3, "click"], ["mat-stroked-button", "", "color", "accent", 1, "export-data", 3, "click"], [1, "material-icons-outlined"], ["fxFlex", "", "fxLayoutGap", "0.5rem", "fxLayoutAlign", "start center"], ["mat-stroked-button", "", "color", "accent", 3, "click"], [1, "material-icons"], ["class", "clear-filters-wrapper", 4, "ngIf"], [1, "clear-filters-wrapper"], ["mat-icon-button", "", 3, "click"], ["fxLayout", "row", "fxLayoutAlign", "start center", 1, "wild-search-wrapper"], [1, "search-icon", 3, "matTooltip"], ["type", "text", 3, "keyup", "value", "placeholder"], ["mat-icon-button", "", "class", "wild-search-clear-btn", 3, "click", 4, "ngIf"], ["mat-icon-button", "", 1, "wild-search-clear-btn", 3, "click"], [3, "filterBarChange", "filterRowVisible", "settings"], [3, "page", "hidePageSize", "showFirstLastButtons", "pageSizeOptions"], ["mat-header-cell", "", "disable-export", "", 1, "row-select"], [3, "change", "matTooltip", "disabled", "checked", "indeterminate"], ["mat-cell", "", "disable-export", "", 1, "row-select"], [3, "matTooltip", "disabled", "checked", "click", "change", 4, "ngIf"], [3, "click", "change", "matTooltip", "disabled", "checked"], ["mat-header-row", ""], ["mat-row", "", 3, "click", "mouseover", "mouseleave"], [1, "column-selector-wrapper"], ["mat-icon-button", "", "color", "accent", 1, "column-selector", 3, "matMenuTriggerFor"], [4, "matNoDataRow"], ["colspan", "99"], [3, "config"], [3, "ngModelChange", "ngModel"]], template: function MultiFunctionalTableComponent_Template(rf, ctx) { if (rf & 1) {
569
569
  const _r1 = i0.ɵɵgetCurrentView();
570
570
  i0.ɵɵprojectionDef(_c2);
571
571
  i0.ɵɵelementStart(0, "div", 5)(1, "div", 6)(2, "div", 7);
572
- i0.ɵɵtemplate(3, MultiFunctionalTableComponent_button_3_Template, 6, 3, "button", 8)(4, MultiFunctionalTableComponent_div_4_Template, 8, 6, "div", 9);
572
+ i0.ɵɵprojection(3);
573
+ i0.ɵɵtemplate(4, MultiFunctionalTableComponent_button_4_Template, 6, 3, "button", 8)(5, MultiFunctionalTableComponent_div_5_Template, 8, 6, "div", 9);
573
574
  i0.ɵɵelementEnd();
574
- i0.ɵɵtemplate(5, MultiFunctionalTableComponent_div_5_Template, 8, 8, "div", 10);
575
- i0.ɵɵprojection(6);
575
+ i0.ɵɵtemplate(6, MultiFunctionalTableComponent_div_6_Template, 8, 8, "div", 10);
576
+ i0.ɵɵprojection(7, 1);
576
577
  i0.ɵɵelementEnd();
577
- i0.ɵɵtemplate(7, MultiFunctionalTableComponent_tld_filter_bar_7_Template, 2, 2, "tld-filter-bar", 11);
578
- i0.ɵɵprojection(8, 1);
579
- i0.ɵɵtemplate(9, MultiFunctionalTableComponent_Conditional_9_Template, 3, 7, "mat-paginator", 12);
580
- i0.ɵɵelementStart(10, "div", 13, 0);
581
- i0.ɵɵlistener("mousedown", function MultiFunctionalTableComponent_Template_div_mousedown_10_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onMouseDown($event)); })("mouseup", function MultiFunctionalTableComponent_Template_div_mouseup_10_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onMouseUp()); })("mouseleave", function MultiFunctionalTableComponent_Template_div_mouseleave_10_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onMouseUp()); })("mousemove", function MultiFunctionalTableComponent_Template_div_mousemove_10_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onMouseMove($event)); });
582
- i0.ɵɵelementStart(12, "table", 14, 1);
583
- i0.ɵɵprojection(14, 2);
584
- i0.ɵɵelementContainerStart(15, 15);
585
- i0.ɵɵtemplate(16, MultiFunctionalTableComponent_th_16_Template, 3, 6, "th", 16)(17, MultiFunctionalTableComponent_td_17_Template, 2, 1, "td", 17);
578
+ i0.ɵɵtemplate(8, MultiFunctionalTableComponent_tld_filter_bar_8_Template, 2, 2, "tld-filter-bar", 11);
579
+ i0.ɵɵprojection(9, 2);
580
+ i0.ɵɵtemplate(10, MultiFunctionalTableComponent_Conditional_10_Template, 3, 7, "mat-paginator", 12);
581
+ i0.ɵɵelementStart(11, "div", 13, 0);
582
+ i0.ɵɵlistener("mousedown", function MultiFunctionalTableComponent_Template_div_mousedown_11_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onMouseDown($event)); })("mouseup", function MultiFunctionalTableComponent_Template_div_mouseup_11_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onMouseUp()); })("mouseleave", function MultiFunctionalTableComponent_Template_div_mouseleave_11_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onMouseUp()); })("mousemove", function MultiFunctionalTableComponent_Template_div_mousemove_11_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onMouseMove($event)); });
583
+ i0.ɵɵelementStart(13, "table", 14, 1);
584
+ i0.ɵɵprojection(15, 3);
585
+ i0.ɵɵelementContainerStart(16, 15);
586
+ i0.ɵɵtemplate(17, MultiFunctionalTableComponent_th_17_Template, 3, 6, "th", 16)(18, MultiFunctionalTableComponent_td_18_Template, 2, 1, "td", 17);
586
587
  i0.ɵɵelementContainerEnd();
587
- i0.ɵɵtemplate(18, MultiFunctionalTableComponent_tr_18_Template, 1, 0, "tr", 18)(19, MultiFunctionalTableComponent_tr_19_Template, 1, 6, "tr", 19);
588
- i0.ɵɵelementContainerStart(20, 15);
589
- i0.ɵɵtemplate(21, MultiFunctionalTableComponent_th_21_Template, 5, 1, "th", 16)(22, MultiFunctionalTableComponent_td_22_Template, 1, 0, "td", 17);
588
+ i0.ɵɵtemplate(19, MultiFunctionalTableComponent_tr_19_Template, 1, 0, "tr", 18)(20, MultiFunctionalTableComponent_tr_20_Template, 1, 6, "tr", 19);
589
+ i0.ɵɵelementContainerStart(21, 15);
590
+ i0.ɵɵtemplate(22, MultiFunctionalTableComponent_th_22_Template, 5, 1, "th", 16)(23, MultiFunctionalTableComponent_td_23_Template, 1, 0, "td", 17);
590
591
  i0.ɵɵelementContainerEnd();
591
- i0.ɵɵtemplate(23, MultiFunctionalTableComponent_ng_container_23_Template, 2, 0, "ng-container", 20);
592
+ i0.ɵɵtemplate(24, MultiFunctionalTableComponent_ng_container_24_Template, 2, 0, "ng-container", 20);
592
593
  i0.ɵɵelementEnd()()();
593
- i0.ɵɵelementStart(24, "mat-menu", null, 2)(26, "div", 21);
594
- i0.ɵɵlistener("click", function MultiFunctionalTableComponent_Template_div_click_26_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
595
- i0.ɵɵtemplate(27, MultiFunctionalTableComponent_div_27_Template, 4, 4, "div", 22);
596
- i0.ɵɵelementStart(28, "div", 23)(29, "button", 24);
597
- i0.ɵɵlistener("click", function MultiFunctionalTableComponent_Template_button_click_29_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.updateDisplayColumns()); });
598
- i0.ɵɵtext(30);
599
- i0.ɵɵpipe(31, "translate");
594
+ i0.ɵɵelementStart(25, "mat-menu", null, 2)(27, "div", 21);
595
+ i0.ɵɵlistener("click", function MultiFunctionalTableComponent_Template_div_click_27_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
596
+ i0.ɵɵtemplate(28, MultiFunctionalTableComponent_div_28_Template, 4, 4, "div", 22);
597
+ i0.ɵɵelementStart(29, "div", 23)(30, "button", 24);
598
+ i0.ɵɵlistener("click", function MultiFunctionalTableComponent_Template_button_click_30_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.updateDisplayColumns()); });
599
+ i0.ɵɵtext(31);
600
+ i0.ɵɵpipe(32, "translate");
600
601
  i0.ɵɵelementEnd()()()();
601
602
  } if (rf & 2) {
602
603
  let tmp_15_0;
603
604
  i0.ɵɵproperty("ngClass.lt-md", "mobile");
604
- i0.ɵɵadvance(3);
605
+ i0.ɵɵadvance(4);
605
606
  i0.ɵɵproperty("ngIf", ctx.exportActive);
606
607
  i0.ɵɵadvance();
607
608
  i0.ɵɵproperty("ngIf", ctx.filterActive && ctx.showFilterToggle);
@@ -610,7 +611,7 @@ export class MultiFunctionalTableComponent {
610
611
  i0.ɵɵadvance(2);
611
612
  i0.ɵɵproperty("ngIf", ctx.config.filter && ctx.config.filter.enabled);
612
613
  i0.ɵɵadvance(2);
613
- i0.ɵɵconditional((ctx.config.paginator == null ? null : ctx.config.paginator.enabled) ? 9 : -1);
614
+ i0.ɵɵconditional((ctx.config.paginator == null ? null : ctx.config.paginator.enabled) ? 10 : -1);
614
615
  i0.ɵɵadvance();
615
616
  i0.ɵɵclassProp("table-sticky-header", ctx.config == null ? null : ctx.config.stickyHeader)("table-dragable", ctx.tableOverflow && !(ctx.config == null ? null : ctx.config.disableMouseDragging));
616
617
  i0.ɵɵadvance(2);
@@ -628,12 +629,12 @@ export class MultiFunctionalTableComponent {
628
629
  i0.ɵɵadvance(4);
629
630
  i0.ɵɵproperty("ngForOf", ctx.configurableColumns);
630
631
  i0.ɵɵadvance(3);
631
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(31, 20, "MULTI_FUNCTIONAL_TABLE.COLUMN_SELECT_SAVE"), " ");
632
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(32, 20, "MULTI_FUNCTIONAL_TABLE.COLUMN_SELECT_SAVE"), " ");
632
633
  } }, dependencies: [i3.NgForOf, i3.NgIf, i4.MatTable, i4.MatHeaderCellDef, i4.MatHeaderRowDef, i4.MatColumnDef, i4.MatCellDef, i4.MatRowDef, i4.MatHeaderCell, i4.MatCell, i4.MatHeaderRow, i4.MatRow, i4.MatNoDataRow, i5.MatButton, i5.MatIconButton, i6.MatMenu, i6.MatMenuTrigger, i7.MatCheckbox, i8.NgControlStatus, i8.NgModel, i9.FilterBarComponent, i10.DefaultLayoutDirective, i10.DefaultLayoutGapDirective, i10.DefaultLayoutAlignDirective, i10.DefaultFlexDirective, i11.DefaultClassDirective, i12.MatTooltip, i13.StatusDisplayComponent, i14.MatIcon, i15.MatPaginator, i2.TranslatePipe], styles: ["[_nghost-%COMP%] th, [_nghost-%COMP%] tr{white-space:nowrap}[_nghost-%COMP%] td:not(:first-of-type){padding-right:10px!important}[_nghost-%COMP%] tr.mat-mdc-row:hover, [_nghost-%COMP%] tr.mat-mdc-row.highlight{background-color:var(--base-95)}[_nghost-%COMP%] tr.mat-mdc-row.highlight-error{background-color:var(--warning-light)}[_nghost-%COMP%] .export-data .mdc-button__label{display:flex;align-items:center}[_nghost-%COMP%] .mat-mdc-cell, [_nghost-%COMP%] .mat-mdc-header-cell, [_nghost-%COMP%] .mdc-data-table__row:last-child{border-bottom-color:var(--base-70)}[_nghost-%COMP%] .mdc-data-table__row:last-child{border-bottom-width:1px;border-bottom-style:solid}[_nghost-%COMP%] .mdc-data-table__cell:nth-child(2), [_nghost-%COMP%] .mdc-data-table__header-cell:nth-child(2){padding:0 16px 0 10px}[_nghost-%COMP%] td+.cdk-column-columnSelect{display:none}[_nghost-%COMP%] .clear-filters-wrapper .mat-mdc-icon-button, [_nghost-%COMP%] .clear-filters-wrapper .mat-mdc-icon-button .mat-mdc-button-touch-target{height:36px!important;width:36px!important}[_nghost-%COMP%] .clear-filters-wrapper mat-icon{margin-top:-2px;margin-left:-2px}[_nghost-%COMP%] .filter-active{background-color:var(--neutral-95)}[_nghost-%COMP%] .row-actions{opacity:0}[_nghost-%COMP%] .mobile .row-actions, [_nghost-%COMP%] .highlight .row-actions{opacity:1}[_nghost-%COMP%] .mat-mdc-paginator-range-actions button{padding:8px}table[_ngcontent-%COMP%]{width:100%}.wild-search-wrapper[_ngcontent-%COMP%]{position:relative;padding:5px 10px;border-radius:4px;border:1px solid var(--neutral-50);margin:0 8px}.wild-search-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{margin-right:30px}.wild-search-wrapper[_ngcontent-%COMP%] .search-icon[_ngcontent-%COMP%]{color:var(--base-40)}.wild-search-wrapper[_ngcontent-%COMP%] .wild-search-clear-btn[_ngcontent-%COMP%]{position:absolute;right:3px}.wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%], .wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] .mat-mdc-button-touch-target[_ngcontent-%COMP%]{height:33px!important;width:33px!important}.wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%], .wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] .material-icons[_ngcontent-%COMP%], .wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] .material-icons-outlined[_ngcontent-%COMP%]{top:5px!important;left:5px!important}.mobile[_ngcontent-%COMP%] .wild-search-wrapper[_ngcontent-%COMP%]{margin:0}.column-selector-wrapper[_ngcontent-%COMP%]{display:flex;justify-content:end}.column-select-menu[_ngcontent-%COMP%]{padding:8px 18px 8px 8px}.column-select-save[_ngcontent-%COMP%]{padding-left:8px;padding-top:8px}.column-select-save[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:100%}.row-clickable[_ngcontent-%COMP%]{cursor:pointer}.row-clickable[_ngcontent-%COMP%]:active{background-color:var(--base-70)!important}.material-icons[_ngcontent-%COMP%], .material-icons-outlined[_ngcontent-%COMP%]{margin-right:.5rem}.table-action-button[_ngcontent-%COMP%]{margin-bottom:1rem}th.mat-mdc-header-cell[_ngcontent-%COMP%]:first-of-type, td.mat-mdc-cell[_ngcontent-%COMP%]:first-of-type, td.mat-mdc-footer-cell[_ngcontent-%COMP%]:first-of-type{padding:0 0 0 10px}.row-select[_ngcontent-%COMP%]{width:0}.table-overflow[_ngcontent-%COMP%]{overflow-x:auto}.table-dragable[_ngcontent-%COMP%]{cursor:grab;-webkit-user-select:none;user-select:none}.table-dragable[_ngcontent-%COMP%]:active{cursor:grabbing}.table-sticky-header[_ngcontent-%COMP%]{max-height:70vh}"] }); }
633
634
  }
634
635
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MultiFunctionalTableComponent, [{
635
636
  type: Component,
636
- args: [{ selector: 'tld-multi-functional-table', template: "<div [ngClass.lt-md]=\"'mobile'\" fxLayout=\"column\" fxLayoutGap=\"0.75rem\">\r\n <div fxLayout=\"row\" fxLayout.lt-md=\"column\" fxLayoutGap.lt-md=\"0.75rem\">\r\n <div\r\n fxFlex\r\n fxLayout.lt-md=\"column\"\r\n fxLayoutGap=\"0.75rem\"\r\n fxLayoutAlign=\"start center\"\r\n fxLayoutAlign.lt-md=\"start start\"\r\n class=\"action-row\"\r\n >\r\n <button\r\n class=\"export-data\"\r\n mat-stroked-button\r\n color=\"accent\"\r\n *ngIf=\"exportActive\"\r\n (click)=\"export()\"\r\n >\r\n <span class=\"material-icons-outlined\">cloud_download</span>\r\n <span>{{ \"MULTI_FUNCTIONAL_TABLE.EXPORT\" | translate }}</span>\r\n </button>\r\n\r\n <div\r\n *ngIf=\"filterActive && showFilterToggle\"\r\n fxFlex\r\n fxLayoutGap=\"0.5rem\"\r\n fxLayoutAlign=\"start center\"\r\n >\r\n <button\r\n [class.filter-active]=\"filterBarVisible\"\r\n mat-stroked-button\r\n color=\"accent\"\r\n (click)=\"toggleFilterBar()\"\r\n >\r\n <span class=\"material-icons\">filter_list</span>\r\n <span>{{ \"MULTI_FUNCTIONAL_TABLE.FILTER_TOGGLE\" | translate }}</span>\r\n </button>\r\n\r\n <div *ngIf=\"showFilterReset\" class=\"clear-filters-wrapper\">\r\n <button mat-icon-button (click)=\"clearFilters()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"showSearch\"\r\n fxLayout=\"row\"\r\n fxLayoutAlign=\"start center\"\r\n class=\"wild-search-wrapper\"\r\n >\r\n <mat-icon\r\n class=\"search-icon\"\r\n [matTooltip]=\"hideSearchTooltip ? '' : (searchTooltip | translate)\"\r\n >search</mat-icon\r\n >\r\n <input\r\n [value]=\"config.filter?.settings?.searchValue ?? ''\"\r\n #wildSearch\r\n type=\"text\"\r\n [placeholder]=\"searchTitle | translate\"\r\n (keyup)=\"search($event)\"\r\n />\r\n <button\r\n *ngIf=\"showSearchClearButton && wildSearch.value\"\r\n mat-icon-button\r\n class=\"wild-search-clear-btn\"\r\n (click)=\"wildSearch.value = ''; search({ target: { value: '' } })\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <ng-content select=\"[additionalActions]\"></ng-content>\r\n </div>\r\n\r\n <tld-filter-bar\r\n *ngIf=\"config.filter && config.filter.enabled\"\r\n #filterBar\r\n [filterRowVisible]=\"filterBarVisible\"\r\n [settings]=\"config.filter.settings\"\r\n (filterBarChange)=\"filtersChanged($event)\"\r\n >\r\n </tld-filter-bar>\r\n\r\n <ng-content select=\"[batchActions]\"></ng-content>\r\n\r\n @if(config.paginator?.enabled){\r\n @let paginatorConfig = config.paginator!;\r\n\r\n <mat-paginator [hidePageSize]=\"!paginatorConfig.showPageSize\" [showFirstLastButtons]=\"paginatorConfig.showFirstLastButtons\"\r\n [attr.aria-label]=\"'MULTI_FUNCTIONAL_TABLE.PAGINATOR_LABEL' | translate\" [pageSizeOptions]=\"paginatorConfig.pageSizeOptions ?? [10]\" (page)=\"paginatorChange($event)\">\r\n </mat-paginator>\r\n }\r\n <div\r\n #tableContainer\r\n class=\"table-overflow\"\r\n [class.table-sticky-header]=\"config?.stickyHeader\"\r\n [class.table-dragable]=\"tableOverflow && !config?.disableMouseDragging\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (mouseup)=\"onMouseUp()\"\r\n (mouseleave)=\"onMouseUp()\"\r\n (mousemove)=\"onMouseMove($event)\"\r\n >\r\n <table\r\n #table\r\n mat-table\r\n [dataSource]=\"dataSource!\"\r\n [trackBy]=\"trackByFn\"\r\n >\r\n <ng-content></ng-content>\r\n <ng-container [matColumnDef]=\"batchColumnName\">\r\n <th class=\"row-select\" mat-header-cell *matHeaderCellDef disable-export>\r\n <mat-checkbox\r\n [matTooltip]=\"'MULTI_FUNCTIONAL_TABLE.SELECT_ALL' | translate\"\r\n [disabled]=\"config.batchConfig!.checkBoxesDisabled\"\r\n (change)=\"toggleAllRowSelection()\"\r\n [checked]=\"matSelection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"matSelection.hasValue() && !isAllSelected()\"\r\n >\r\n </mat-checkbox>\r\n </th>\r\n <td\r\n class=\"row-select\"\r\n mat-cell\r\n *matCellDef=\"let element\"\r\n disable-export\r\n >\r\n <mat-checkbox\r\n [matTooltip]=\"'MULTI_FUNCTIONAL_TABLE.SELECT' | translate\"\r\n *ngIf=\"\r\n isRowCheckboxAlwaysVisible ||\r\n hoveredRow === element ||\r\n matSelection.isSelected(element)\r\n \"\r\n [disabled]=\"\r\n config.batchConfig!.checkBoxesDisabled ||\r\n (preselectedItems.includes(element) && disablePreselectedItems)\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"toggleElementSelection(element)\"\r\n [checked]=\"matSelection.isSelected(element)\"\r\n >\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n <tr\r\n mat-header-row\r\n *matHeaderRowDef=\"displayColumns; sticky: config?.stickyHeader ?? false\"\r\n ></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; let index = index; columns: displayColumns\"\r\n (click)=\"\r\n config?.rowClickCallback && (!config.disableRowClick || !config?.disableRowClick(row))\r\n ? config?.rowClickCallback(row)\r\n : null\r\n \"\r\n (mouseover)=\"rowHovered(index,row)\"\r\n (mouseleave)=\"rowHoverLeave()\"\r\n [class.row-clickable]=\"\r\n config?.rowClickCallback && (!config.disableRowClick || !config?.disableRowClick(row))\r\n \"\r\n [class.highlight-error]=\"highlightErrorElement(index, row)\"\r\n [class.highlight]=\"isElementHighlighted(index,row)\"\r\n ></tr>\r\n\r\n <ng-container [matColumnDef]=\"columnSelectColumnName\">\r\n <th class=\"row-select\" mat-header-cell *matHeaderCellDef disable-export>\r\n <div class=\"column-selector-wrapper\">\r\n <button\r\n class=\"column-selector\"\r\n mat-icon-button\r\n color=\"accent\"\r\n [matMenuTriggerFor]=\"columnMenu\"\r\n >\r\n <span class=\"material-icons\">more_vert</span>\r\n </button>\r\n </div>\r\n </th>\r\n <td\r\n class=\"row-select\"\r\n mat-cell\r\n *matCellDef=\"let element\"\r\n disable-export\r\n ></td>\r\n </ng-container>\r\n <ng-container *ngIf=\"noDataRowActive\">\r\n <tr *matNoDataRow>\r\n <!-- add random number to make sure it takes full width -->\r\n <td colspan=\"99\">\r\n <lib-status-display [config]=\"noDataRowConfig\"></lib-status-display>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n</div>\r\n\r\n<mat-menu #columnMenu=\"matMenu\">\r\n <div class=\"column-select-menu\" (click)=\"$event.stopPropagation()\">\r\n <div *ngFor=\"let column of configurableColumns\">\r\n <mat-checkbox [(ngModel)]=\"column.selected\">\r\n {{ column.displayName | translate }}\r\n </mat-checkbox>\r\n </div>\r\n\r\n <div class=\"column-select-save\">\r\n <button\r\n mat-flat-button\r\n color=\"accent\"\r\n (click)=\"updateDisplayColumns()\"\r\n >\r\n {{ \"MULTI_FUNCTIONAL_TABLE.COLUMN_SELECT_SAVE\" | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n", styles: [":host ::ng-deep th,:host ::ng-deep tr{white-space:nowrap}:host ::ng-deep td:not(:first-of-type){padding-right:10px!important}:host ::ng-deep tr.mat-mdc-row:hover,:host ::ng-deep tr.mat-mdc-row.highlight{background-color:var(--base-95)}:host ::ng-deep tr.mat-mdc-row.highlight-error{background-color:var(--warning-light)}:host ::ng-deep .export-data .mdc-button__label{display:flex;align-items:center}:host ::ng-deep .mat-mdc-cell,:host ::ng-deep .mat-mdc-header-cell,:host ::ng-deep .mdc-data-table__row:last-child{border-bottom-color:var(--base-70)}:host ::ng-deep .mdc-data-table__row:last-child{border-bottom-width:1px;border-bottom-style:solid}:host ::ng-deep .mdc-data-table__cell:nth-child(2),:host ::ng-deep .mdc-data-table__header-cell:nth-child(2){padding:0 16px 0 10px}:host ::ng-deep td+.cdk-column-columnSelect{display:none}:host ::ng-deep .clear-filters-wrapper .mat-mdc-icon-button,:host ::ng-deep .clear-filters-wrapper .mat-mdc-icon-button .mat-mdc-button-touch-target{height:36px!important;width:36px!important}:host ::ng-deep .clear-filters-wrapper mat-icon{margin-top:-2px;margin-left:-2px}:host ::ng-deep .filter-active{background-color:var(--neutral-95)}:host ::ng-deep .row-actions{opacity:0}:host ::ng-deep .mobile .row-actions,:host ::ng-deep .highlight .row-actions{opacity:1}:host ::ng-deep .mat-mdc-paginator-range-actions button{padding:8px}table{width:100%}.wild-search-wrapper{position:relative;padding:5px 10px;border-radius:4px;border:1px solid var(--neutral-50);margin:0 8px}.wild-search-wrapper input{margin-right:30px}.wild-search-wrapper .search-icon{color:var(--base-40)}.wild-search-wrapper .wild-search-clear-btn{position:absolute;right:3px}.wild-search-wrapper .mat-mdc-icon-button,.wild-search-wrapper .mat-mdc-icon-button .mat-mdc-button-touch-target{height:33px!important;width:33px!important}.wild-search-wrapper .mat-mdc-icon-button mat-icon,.wild-search-wrapper .mat-mdc-icon-button .material-icons,.wild-search-wrapper .mat-mdc-icon-button .material-icons-outlined{top:5px!important;left:5px!important}.mobile .wild-search-wrapper{margin:0}.column-selector-wrapper{display:flex;justify-content:end}.column-select-menu{padding:8px 18px 8px 8px}.column-select-save{padding-left:8px;padding-top:8px}.column-select-save button{width:100%}.row-clickable{cursor:pointer}.row-clickable:active{background-color:var(--base-70)!important}.material-icons,.material-icons-outlined{margin-right:.5rem}.table-action-button{margin-bottom:1rem}th.mat-mdc-header-cell:first-of-type,td.mat-mdc-cell:first-of-type,td.mat-mdc-footer-cell:first-of-type{padding:0 0 0 10px}.row-select{width:0}.table-overflow{overflow-x:auto}.table-dragable{cursor:grab;-webkit-user-select:none;user-select:none}.table-dragable:active{cursor:grabbing}.table-sticky-header{max-height:70vh}\n"] }]
637
+ args: [{ selector: 'tld-multi-functional-table', template: "<div [ngClass.lt-md]=\"'mobile'\" fxLayout=\"column\" fxLayoutGap=\"0.75rem\">\r\n\t<div fxLayout=\"row\" fxLayout.lt-md=\"column\" fxLayoutGap.lt-md=\"0.75rem\">\r\n\t\t<div fxFlex fxLayout.lt-md=\"column\" fxLayoutGap=\"0.75rem\" fxLayoutAlign=\"start center\" fxLayoutAlign.lt-md=\"start start\" class=\"action-row\">\r\n\t\t\t<ng-content select=\"[tableTitleBlock]\"></ng-content>\r\n\t\t\t<button class=\"export-data\" mat-stroked-button color=\"accent\" *ngIf=\"exportActive\" (click)=\"export()\">\r\n\t\t\t\t<span class=\"material-icons-outlined\">cloud_download</span>\r\n\t\t\t\t<span>{{ \"MULTI_FUNCTIONAL_TABLE.EXPORT\" | translate }}</span>\r\n\t\t\t</button>\r\n\r\n\t\t\t<div *ngIf=\"filterActive && showFilterToggle\" fxFlex fxLayoutGap=\"0.5rem\" fxLayoutAlign=\"start center\">\r\n\t\t\t\t<button [class.filter-active]=\"filterBarVisible\" mat-stroked-button color=\"accent\" (click)=\"toggleFilterBar()\">\r\n\t\t\t\t\t<span class=\"material-icons\">filter_list</span>\r\n\t\t\t\t\t<span>{{ \"MULTI_FUNCTIONAL_TABLE.FILTER_TOGGLE\" | translate }}</span>\r\n\t\t\t\t</button>\r\n\r\n\t\t\t\t<div *ngIf=\"showFilterReset\" class=\"clear-filters-wrapper\">\r\n\t\t\t\t\t<button mat-icon-button (click)=\"clearFilters()\">\r\n\t\t\t\t\t\t<mat-icon>close</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t\t<div *ngIf=\"showSearch\" fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"wild-search-wrapper\">\r\n\t\t\t<mat-icon class=\"search-icon\" [matTooltip]=\"hideSearchTooltip ? '' : (searchTooltip | translate)\">search</mat-icon>\r\n\t\t\t<input [value]=\"config.filter?.settings?.searchValue ?? ''\" #wildSearch type=\"text\" [placeholder]=\"searchTitle | translate\" (keyup)=\"search($event)\" />\r\n\t\t\t<button *ngIf=\"showSearchClearButton && wildSearch.value\" mat-icon-button class=\"wild-search-clear-btn\" (click)=\"wildSearch.value = ''; search({ target: { value: '' } })\">\r\n\t\t\t\t<mat-icon>close</mat-icon>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\r\n\t\t<ng-content select=\"[additionalActions]\"></ng-content>\r\n\t</div>\r\n\r\n\t<tld-filter-bar\r\n\t\t*ngIf=\"config.filter && config.filter.enabled\"\r\n\t\t#filterBar\r\n\t\t[filterRowVisible]=\"filterBarVisible\"\r\n\t\t[settings]=\"config.filter.settings\"\r\n\t\t(filterBarChange)=\"filtersChanged($event)\"\r\n\t>\r\n\t</tld-filter-bar>\r\n\r\n\t<ng-content select=\"[batchActions]\"></ng-content>\r\n\r\n\t@if(config.paginator?.enabled){ @let paginatorConfig = config.paginator!;\r\n\r\n\t<mat-paginator\r\n\t\t[hidePageSize]=\"!paginatorConfig.showPageSize\"\r\n\t\t[showFirstLastButtons]=\"paginatorConfig.showFirstLastButtons\"\r\n\t\t[attr.aria-label]=\"'MULTI_FUNCTIONAL_TABLE.PAGINATOR_LABEL' | translate\"\r\n\t\t[pageSizeOptions]=\"paginatorConfig.pageSizeOptions ?? [10]\"\r\n\t\t(page)=\"paginatorChange($event)\"\r\n\t>\r\n\t</mat-paginator>\r\n\t}\r\n\t<div\r\n\t\t#tableContainer\r\n\t\tclass=\"table-overflow\"\r\n\t\t[class.table-sticky-header]=\"config?.stickyHeader\"\r\n\t\t[class.table-dragable]=\"tableOverflow && !config?.disableMouseDragging\"\r\n\t\t(mousedown)=\"onMouseDown($event)\"\r\n\t\t(mouseup)=\"onMouseUp()\"\r\n\t\t(mouseleave)=\"onMouseUp()\"\r\n\t\t(mousemove)=\"onMouseMove($event)\"\r\n\t>\r\n\t\t<table #table mat-table [dataSource]=\"dataSource!\" [trackBy]=\"trackByFn\">\r\n\t\t\t<ng-content></ng-content>\r\n\t\t\t<ng-container [matColumnDef]=\"batchColumnName\">\r\n\t\t\t\t<th class=\"row-select\" mat-header-cell *matHeaderCellDef disable-export>\r\n\t\t\t\t\t<mat-checkbox\r\n\t\t\t\t\t\t[matTooltip]=\"'MULTI_FUNCTIONAL_TABLE.SELECT_ALL' | translate\"\r\n\t\t\t\t\t\t[disabled]=\"config.batchConfig!.checkBoxesDisabled\"\r\n\t\t\t\t\t\t(change)=\"toggleAllRowSelection()\"\r\n\t\t\t\t\t\t[checked]=\"matSelection.hasValue() && isAllSelected()\"\r\n\t\t\t\t\t\t[indeterminate]=\"matSelection.hasValue() && !isAllSelected()\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t</mat-checkbox>\r\n\t\t\t\t</th>\r\n\t\t\t\t<td class=\"row-select\" mat-cell *matCellDef=\"let element\" disable-export>\r\n\t\t\t\t\t<mat-checkbox\r\n\t\t\t\t\t\t[matTooltip]=\"'MULTI_FUNCTIONAL_TABLE.SELECT' | translate\"\r\n\t\t\t\t\t\t*ngIf=\"isRowCheckboxAlwaysVisible || hoveredRow === element || matSelection.isSelected(element)\"\r\n\t\t\t\t\t\t[disabled]=\"config.batchConfig!.checkBoxesDisabled || (preselectedItems.includes(element) && disablePreselectedItems)\"\r\n\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\r\n\t\t\t\t\t\t(change)=\"toggleElementSelection(element)\"\r\n\t\t\t\t\t\t[checked]=\"matSelection.isSelected(element)\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t</mat-checkbox>\r\n\t\t\t\t</td>\r\n\t\t\t</ng-container>\r\n\t\t\t<tr mat-header-row *matHeaderRowDef=\"displayColumns; sticky: config?.stickyHeader ?? false\"></tr>\r\n\t\t\t<tr\r\n\t\t\t\tmat-row\r\n\t\t\t\t*matRowDef=\"let row; let index = index; columns: displayColumns\"\r\n\t\t\t\t(click)=\"config?.rowClickCallback && (!config.disableRowClick || !config?.disableRowClick(row)) ? config?.rowClickCallback(row) : null\"\r\n\t\t\t\t(mouseover)=\"rowHovered(index, row)\"\r\n\t\t\t\t(mouseleave)=\"rowHoverLeave()\"\r\n\t\t\t\t[class.row-clickable]=\"config?.rowClickCallback && (!config.disableRowClick || !config?.disableRowClick(row))\"\r\n\t\t\t\t[class.highlight-error]=\"highlightErrorElement(index, row)\"\r\n\t\t\t\t[class.highlight]=\"isElementHighlighted(index, row)\"\r\n\t\t\t></tr>\r\n\r\n\t\t\t<ng-container [matColumnDef]=\"columnSelectColumnName\">\r\n\t\t\t\t<th class=\"row-select\" mat-header-cell *matHeaderCellDef disable-export>\r\n\t\t\t\t\t<div class=\"column-selector-wrapper\">\r\n\t\t\t\t\t\t<button class=\"column-selector\" mat-icon-button color=\"accent\" [matMenuTriggerFor]=\"columnMenu\">\r\n\t\t\t\t\t\t\t<span class=\"material-icons\">more_vert</span>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</th>\r\n\t\t\t\t<td class=\"row-select\" mat-cell *matCellDef=\"let element\" disable-export></td>\r\n\t\t\t</ng-container>\r\n\t\t\t<ng-container *ngIf=\"noDataRowActive\">\r\n\t\t\t\t<tr *matNoDataRow>\r\n\t\t\t\t\t<!-- add random number to make sure it takes full width -->\r\n\t\t\t\t\t<td colspan=\"99\">\r\n\t\t\t\t\t\t<lib-status-display [config]=\"noDataRowConfig\"></lib-status-display>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t</ng-container>\r\n\t\t</table>\r\n\t</div>\r\n</div>\r\n\r\n<mat-menu #columnMenu=\"matMenu\">\r\n\t<div class=\"column-select-menu\" (click)=\"$event.stopPropagation()\">\r\n\t\t<div *ngFor=\"let column of configurableColumns\">\r\n\t\t\t<mat-checkbox [(ngModel)]=\"column.selected\">\r\n\t\t\t\t{{ column.displayName | translate }}\r\n\t\t\t</mat-checkbox>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"column-select-save\">\r\n\t\t\t<button mat-flat-button color=\"accent\" (click)=\"updateDisplayColumns()\">\r\n\t\t\t\t{{ \"MULTI_FUNCTIONAL_TABLE.COLUMN_SELECT_SAVE\" | translate }}\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t</div>\r\n</mat-menu>\r\n", styles: [":host ::ng-deep th,:host ::ng-deep tr{white-space:nowrap}:host ::ng-deep td:not(:first-of-type){padding-right:10px!important}:host ::ng-deep tr.mat-mdc-row:hover,:host ::ng-deep tr.mat-mdc-row.highlight{background-color:var(--base-95)}:host ::ng-deep tr.mat-mdc-row.highlight-error{background-color:var(--warning-light)}:host ::ng-deep .export-data .mdc-button__label{display:flex;align-items:center}:host ::ng-deep .mat-mdc-cell,:host ::ng-deep .mat-mdc-header-cell,:host ::ng-deep .mdc-data-table__row:last-child{border-bottom-color:var(--base-70)}:host ::ng-deep .mdc-data-table__row:last-child{border-bottom-width:1px;border-bottom-style:solid}:host ::ng-deep .mdc-data-table__cell:nth-child(2),:host ::ng-deep .mdc-data-table__header-cell:nth-child(2){padding:0 16px 0 10px}:host ::ng-deep td+.cdk-column-columnSelect{display:none}:host ::ng-deep .clear-filters-wrapper .mat-mdc-icon-button,:host ::ng-deep .clear-filters-wrapper .mat-mdc-icon-button .mat-mdc-button-touch-target{height:36px!important;width:36px!important}:host ::ng-deep .clear-filters-wrapper mat-icon{margin-top:-2px;margin-left:-2px}:host ::ng-deep .filter-active{background-color:var(--neutral-95)}:host ::ng-deep .row-actions{opacity:0}:host ::ng-deep .mobile .row-actions,:host ::ng-deep .highlight .row-actions{opacity:1}:host ::ng-deep .mat-mdc-paginator-range-actions button{padding:8px}table{width:100%}.wild-search-wrapper{position:relative;padding:5px 10px;border-radius:4px;border:1px solid var(--neutral-50);margin:0 8px}.wild-search-wrapper input{margin-right:30px}.wild-search-wrapper .search-icon{color:var(--base-40)}.wild-search-wrapper .wild-search-clear-btn{position:absolute;right:3px}.wild-search-wrapper .mat-mdc-icon-button,.wild-search-wrapper .mat-mdc-icon-button .mat-mdc-button-touch-target{height:33px!important;width:33px!important}.wild-search-wrapper .mat-mdc-icon-button mat-icon,.wild-search-wrapper .mat-mdc-icon-button .material-icons,.wild-search-wrapper .mat-mdc-icon-button .material-icons-outlined{top:5px!important;left:5px!important}.mobile .wild-search-wrapper{margin:0}.column-selector-wrapper{display:flex;justify-content:end}.column-select-menu{padding:8px 18px 8px 8px}.column-select-save{padding-left:8px;padding-top:8px}.column-select-save button{width:100%}.row-clickable{cursor:pointer}.row-clickable:active{background-color:var(--base-70)!important}.material-icons,.material-icons-outlined{margin-right:.5rem}.table-action-button{margin-bottom:1rem}th.mat-mdc-header-cell:first-of-type,td.mat-mdc-cell:first-of-type,td.mat-mdc-footer-cell:first-of-type{padding:0 0 0 10px}.row-select{width:0}.table-overflow{overflow-x:auto}.table-dragable{cursor:grab;-webkit-user-select:none;user-select:none}.table-dragable:active{cursor:grabbing}.table-sticky-header{max-height:70vh}\n"] }]
637
638
  }], () => [{ type: i1.DOMService }, { type: i2.TranslateService }], { config: [{
638
639
  type: Input
639
640
  }], highlightedElements: [{
@@ -688,4 +689,4 @@ export class MultiFunctionalTableComponent {
688
689
  args: [MatTable, { read: ElementRef }]
689
690
  }] }); })();
690
691
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MultiFunctionalTableComponent, { className: "MultiFunctionalTableComponent", filePath: "lib\\multi-functional-table\\multi-functional-table.component.ts", lineNumber: 26 }); })();
691
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktZnVuY3Rpb25hbC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tbW9uL3NyYy9saWIvbXVsdGktZnVuY3Rpb25hbC10YWJsZS9tdWx0aS1mdW5jdGlvbmFsLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi9tdWx0aS1mdW5jdGlvbmFsLXRhYmxlL211bHRpLWZ1bmN0aW9uYWwtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBbUMsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hNLE9BQU8sRUFBRSxZQUFZLEVBQWEsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUvSCxPQUFPLEVBQUUsR0FBRyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRzdELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7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QURFLG9HQUNGOzs7aUZEN0xPLDZCQUE2QjtjQU56QyxTQUFTOzJCQUVFLDRCQUE0QjswRUFZN0IsTUFBTTtrQkFBZCxLQUFLO1lBQ0csbUJBQW1CO2tCQUEzQixLQUFLO1lBQ0csU0FBUztrQkFBakIsS0FBSztZQUNHLHdCQUF3QjtrQkFBaEMsS0FBSztZQUNPLFNBQVM7a0JBQXJCLEtBQUs7WUFLRywwQkFBMEI7a0JBQWxDLEtBQUs7WUFDRyx1QkFBdUI7a0JBQS9CLEtBQUs7WUFHSSxlQUFlO2tCQUF4QixNQUFNO1lBQ0csZUFBZTtrQkFBeEIsTUFBTTtZQUNHLFFBQVE7a0JBQWpCLE1BQU07WUFDRyxlQUFlO2tCQUF4QixNQUFNO1lBSTJCLGFBQWE7a0JBQTlDLGVBQWU7bUJBQUMsZUFBZTtZQUNtQixPQUFPO2tCQUF6RCxlQUFlO21CQUFDLFNBQVMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7WUFDbEIsVUFBVTtrQkFBeEMsZUFBZTttQkFBQyxZQUFZO1lBQ0QsU0FBUztrQkFBcEMsWUFBWTttQkFBQyxZQUFZO1lBRWEsS0FBSztrQkFBM0MsU0FBUzttQkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ2pCLElBQUk7a0JBQXZCLFNBQVM7bUJBQUMsT0FBTztZQUVXLGNBQWM7a0JBQTFDLFNBQVM7bUJBQUMsZ0JBQWdCO1lBQ0gsU0FBUztrQkFBaEMsU0FBUzttQkFBQyxXQUFXO1lBQ0csU0FBUztrQkFBakMsU0FBUzttQkFBQyxZQUFZO1lBSW9CLGVBQWU7a0JBQXpELFNBQVM7bUJBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTs7a0ZBMUM5Qiw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XHJcbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBDb250ZW50Q2hpbGRyZW4sIGVmZmVjdCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBpbnB1dCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IsIFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgTWF0Q29sdW1uRGVmLCBNYXRIZWFkZXJSb3dEZWYsIE1hdE5vRGF0YVJvdywgTWF0Um93RGVmLCBNYXRUYWJsZSwgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJCYXJDb21wb25lbnQgfSBmcm9tICcuLi9maWx0ZXItYmFyJztcclxuaW1wb3J0IHsgRmlsdGVyQmFyQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi9maWx0ZXItYmFyL21vZGVscy9maWx0ZXItYmFyLWNoYW5nZS1ldmVudC5tb2RlbCc7XHJcbmltcG9ydCB7IEh0bWxFbGVtZW50UGFyc2VIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzJztcclxuaW1wb3J0IHsgU2F2ZUZpbGVIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL3NhdmUtZmlsZS5oZWxwZXInO1xyXG5pbXBvcnQgeyBET01TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBTdGF0dXNEaXNwbGF5Q29uZmlnIH0gZnJvbSAnLi4vc3RhdHVzLWRpc3BsYXkvbW9kZWxzL3N0YXR1cy1kaXNwbGF5LWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IERJU0FCTEVfRVhQT1JUX0FUVFJJQlVURV9OQU1FIH0gZnJvbSAnLi9jb25zdGFudHMvZGlzYWJsZS1leHBvcnQtYXR0cmlidXRlLW5hbWUuY29uc3QnO1xyXG5pbXBvcnQgeyBFeHBvcnRGb3JtYXQgfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IENvbHVtbkNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL2NvbHVtbi1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBNdWx0aUZ1bmN0aW9uYWxUYWJsZUNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL211bHRpLWZ1bmN0aW9uYWwtdGFibGUtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgU2VsZWN0ZWRDb2x1bW5Mb2NhbFN0b3JhZ2VDb25maWcgfSBmcm9tICcuL21vZGVscy9zZWxlY3RlZC1jb2x1bW4tbG9jYWwtc3RvcmFnZS1jb25maWcubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ3RsZC1tdWx0aS1mdW5jdGlvbmFsLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGktZnVuY3Rpb25hbC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbXVsdGktZnVuY3Rpb25hbC10YWJsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdWx0aUZ1bmN0aW9uYWxUYWJsZUNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcmVhZG9ubHkgbWF0U2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPFQ+KHRydWUsIFtdKTtcclxuXHJcbiAgI2RhdGFTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxUPiB8IHVuZGVmaW5lZDtcclxuICBnZXQgZGF0YVNvdXJjZSgpOiBNYXRUYWJsZURhdGFTb3VyY2U8VD4ge1xyXG4gICAgcmV0dXJuICh0aGlzLiNkYXRhU291cmNlID8/IHRoaXMuY29uZmlnLmRhdGFTb3VyY2UpITtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGNvbmZpZyE6IE11bHRpRnVuY3Rpb25hbFRhYmxlQ29uZmlnPFQ+O1xyXG4gIEBJbnB1dCgpIGhpZ2hsaWdodGVkRWxlbWVudHMhOiBUW107XHJcbiAgQElucHV0KCkgdHJhY2tCeUZuOiAoaXg6IG51bWJlciwgcm93OiBUKSA9PiBzdHJpbmcgfCBudW1iZXIgPSB0aGlzLmRlZmF1bHRUcmFja0J5O1xyXG4gIEBJbnB1dCgpIGhpZ2hsaWdodGVkRXJyb3JFbGVtZW50cyE6IFRbXTtcclxuICBASW5wdXQoKSBzZXQgc2VsZWN0aW9uKHZhbHVlOiBUW10pIHtcclxuICAgIHRoaXMubWF0U2VsZWN0aW9uLnNldFNlbGVjdGlvbiguLi4odmFsdWUgPz8gW10pKTtcclxuICB9XHJcblxyXG4gIC8vIFNldCB0aGlzIHRvIGZhbHNlIGlmIHlvdSB3YW50IHRvIGRpc3BsYXkgY2hlY2tib3hlcyBvbmx5IG9uIHJvdyBob3Zlci5cclxuICBASW5wdXQoKSBpc1Jvd0NoZWNrYm94QWx3YXlzVmlzaWJsZSA9IHRydWU7XHJcbiAgQElucHV0KCkgZGlzYWJsZVByZXNlbGVjdGVkSXRlbXMgPSBmYWxzZTtcclxuXHJcbiAgLy8jcmVnaW9uIE91dHB1dCBwcm9wZXJ0aWVzXHJcbiAgQE91dHB1dCgpIGZpbHRlckJhckNoYW5nZTogRXZlbnRFbWl0dGVyPEZpbHRlckJhckNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyQmFyQ2hhbmdlRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIHBhZ2luYXRvclVwZGF0ZTogRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgZXhwb3J0ZWQ6IEV2ZW50RW1pdHRlcjxUW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZTogT2JzZXJ2YWJsZTxUW10+ID0gdGhpcy5tYXRTZWxlY3Rpb24uY2hhbmdlZC5hc09ic2VydmFibGUoKS5waXBlKG1hcCgoKSA9PiB7IHJldHVybiB0aGlzLm1hdFNlbGVjdGlvbi5zZWxlY3RlZDsgfSkpO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyAjcmVnaW9uIFByb3BlcnRpZXMgZm9yIG1hdCB0YWJsZSB3cmFwcGVyXHJcbiAgQENvbnRlbnRDaGlsZHJlbihNYXRIZWFkZXJSb3dEZWYpIGhlYWRlclJvd0RlZnMhOiBRdWVyeUxpc3Q8TWF0SGVhZGVyUm93RGVmPjtcclxuICBAQ29udGVudENoaWxkcmVuKE1hdFJvd0RlZiwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSByb3dEZWZzITogUXVlcnlMaXN0PE1hdFJvd0RlZjxUPj47XHJcbiAgQENvbnRlbnRDaGlsZHJlbihNYXRDb2x1bW5EZWYpIGNvbHVtbkRlZnMhOiBRdWVyeUxpc3Q8TWF0Q29sdW1uRGVmPjtcclxuICBAQ29udGVudENoaWxkKE1hdE5vRGF0YVJvdykgbm9EYXRhUm93ITogTWF0Tm9EYXRhUm93O1xyXG5cclxuICBAVmlld0NoaWxkKE1hdFRhYmxlLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJsZSE6IE1hdFRhYmxlPFQ+O1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc29ydCE6IE1hdFNvcnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlQ29udGFpbmVyJykgdGFibGVDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdmaWx0ZXJCYXInKSBmaWx0ZXJCYXIhOiBGaWx0ZXJCYXJDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIEBWaWV3Q2hpbGQoTWF0VGFibGUsIHsgcmVhZDogRWxlbWVudFJlZiB9KSB0YWJsZUVsZW1lbnRSZWYhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgLyoqIFRoaXMgcHJvcGVydHkgd2lsbCBiZSB0YWtlbiBpbnRvIGFjY291bnQgb25seSBpZiBjb25maWcuRGF0YVNvdXJjZSBub3Qgc2V0LiAqL1xyXG4gIGRhdGEgPSBpbnB1dDxUW10+KCk7XHJcbiAgZGF0YVNvdXJjZVVwZGF0ZUVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7IHRoaXMudXBkYXRlRGF0YVNvdXJjZURhdGEoKTsgfSlcclxuXHJcbiAgcHJlc2VsZWN0ZWRJdGVtcyE6IFRbXTtcclxuXHJcbiAgZ2V0IGlnbm9yZUF0dHJpYnV0ZU5hbWUoKSB7IHJldHVybiBESVNBQkxFX0VYUE9SVF9BVFRSSUJVVEVfTkFNRSB9XHJcbiAgZGlzcGxheUNvbHVtbnMhOiBzdHJpbmdbXTtcclxuXHJcbiAgY29sdW1uU2VsZWN0QWN0aXZlITogYm9vbGVhbjtcclxuICBleHBvcnRBY3RpdmUhOiBib29sZWFuO1xyXG4gIG5vRGF0YVJvd0FjdGl2ZSE6IGJvb2xlYW47XHJcblxyXG4gIGZpbHRlcnMhOiBGaWx0ZXJCYXJDaGFuZ2VFdmVudDtcclxuICBmaWx0ZXJCYXJWaXNpYmxlITogYm9vbGVhbjtcclxuXHJcbiAgaGlkZVNlYXJjaFRvb2x0aXAhOiBib29sZWFuO1xyXG4gIHNob3dTZWFyY2ghOiBib29sZWFuO1xyXG4gIHNob3dTZWFyY2hDbGVhckJ1dHRvbiE6IGJvb2xlYW47XHJcbiAgc2VhcmNoVGl0bGUhOiBzdHJpbmc7XHJcbiAgc2VhcmNoVG9vbHRpcCE6IHN0cmluZztcclxuXHJcbiAgbm9EYXRhUm93Q29uZmlnITogU3RhdHVzRGlzcGxheUNvbmZpZztcclxuICBub0RhdGFSb3dJY29uID0gXCJtYW5hZ2Vfc2VhcmNoXCI7XHJcblxyXG4gIGNvbmZpZ3VyYWJsZUNvbHVtbnMhOiBDb2x1bW5Db25maWdbXTtcclxuICBiYXRjaFNlbGVjdGVkRW5hYmxlZCE6IGJvb2xlYW47XHJcblxyXG4gIC8vIGlzIHVzZWQgaW4gaHRtbCB0byBkaXNwbGF5IGJhdGNoIGNoZWNrYm94IG9uIGhvdmVyZWQgcm93XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBob3ZlcmVkUm93OiBhbnk7XHJcbiAgaG92ZXJlZFJvd0luZGV4OiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8vIHByb3BlcnRpZXMgZm9yIG92ZXJmbG93IHNjcm9sbGluZyB3aXRoIG1vdXNlIGNsaWNrXHJcbiAgdGFibGVPdmVyZmxvdyE6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBzY3JvbGxNb3ZlbWVudCE6IG51bWJlciB8IG51bGw7XHJcbiAgcHJpdmF0ZSBpc0RyYWdnaW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBzdGFydFggPSAwO1xyXG4gIHByaXZhdGUgc3RhcnRZID0gMDtcclxuICBwcml2YXRlIHNjcm9sbExlZnQgPSAwO1xyXG4gIHByaXZhdGUgc2Nyb2xsVG9wID0gMDtcclxuXHJcbiAgZ2V0IGZpbHRlckFjdGl2ZSgpIHsgcmV0dXJuIHRoaXMuY29uZmlnLmZpbHRlcj8uZW5hYmxlZDsgfVxyXG4gIGdldCBzaG93RmlsdGVyVG9nZ2xlKCkgeyByZXR1cm4gIXRoaXMuY29uZmlnLmZpbHRlcj8uaGlkZUZpbHRlclRvZ2dsZTsgfVxyXG5cclxuICBnZXQgc2hvd0ZpbHRlclJlc2V0KCkgeyByZXR1cm4gdGhpcy5jb25maWcuZmlsdGVyPy5zZXR0aW5ncy5maWx0ZXJzPy5maW5kKGZpbHRlciA9PiBmaWx0ZXIuc2VsZWN0ZWRWYWx1ZXM/Lmxlbmd0aCkgfVxyXG5cclxuICBwcml2YXRlIGxvY2FsU3RvcmFnZVZhbHVlITogU2VsZWN0ZWRDb2x1bW5Mb2NhbFN0b3JhZ2VDb25maWc7XHJcbiAgcmVhZG9ubHkgYmF0Y2hDb2x1bW5OYW1lID0gXCJiYXRjaFwiO1xyXG4gIHJlYWRvbmx5IGNvbHVtblNlbGVjdENvbHVtbk5hbWUgPSBcImNvbHVtblNlbGVjdFwiO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRvbVNlcnZpY2U6IERPTVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHsgfVxyXG5cclxuICAvLyNyZWdpb24gQW5ndWxhciBsaWZlY3ljbGUgaG9va3NcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3JlYXRlRGF0YVNvdXJjZSgpO1xyXG4gICAgdGhpcy5yZWFkRnJvbUxvY2FsU3RvcmFnZSgpO1xyXG4gICAgdGhpcy5zZXRGaWx0ZXJWaXNpYmlsaXR5KCk7XHJcbiAgICB0aGlzLnNldENvbHVtblNlbGVjdFByb3BlcnRpZXMoKTtcclxuICAgIHRoaXMuc2V0RXhwb3J0UHJvcGVydGllcygpO1xyXG4gICAgdGhpcy5zZXROb0RhdGFSb3dQcm9wZXJ0aWVzKCk7XHJcbiAgICB0aGlzLnByZXNlbGVjdGVkSXRlbXMgPSB0aGlzLm1hdFNlbGVjdGlvbi5zZWxlY3RlZDtcclxuICAgIHRoaXMuc2VhcmNoVG9vbHRpcCA9IHRoaXMuY29uZmlnLmZpbHRlcj8uc2V0dGluZ3M/LnNlYXJjaFRvb2x0aXAgPz8gJ0ZJTFRFUl9CQVIuU0VBUkNIX1RPT0xUSVAnO1xyXG4gICAgdGhpcy5zZWFyY2hUaXRsZSA9IHRoaXMuY29uZmlnLmZpbHRlcj8uc2V0dGluZ3M/LnNlYXJjaFRpdGxlID8/ICdGSUxURVJfQkFSLlNFQVJDSCc7XHJcbiAgICB0aGlzLnNob3dTZWFyY2ggPSAhdGhpcy5jb25maWcuZmlsdGVyPy5zZXR0aW5ncz8uaGlkZVNlYXJjaDtcclxuICAgIHRoaXMuc2hvd1NlYXJjaENsZWFyQnV0dG9uID0gdGhpcy5jb25maWcuZmlsdGVyPy5zZXR0aW5ncz8uc2hvd1NlYXJjaENsZWFyQnV0dG9uID8/IHRydWU7XHJcbiAgICB0aGlzLmhpZGVTZWFyY2hUb29sdGlwID0gIXRoaXMuY29uZmlnLmZpbHRlcj8uc2V0dGluZ3M/LmhpZGVUb29sdGlwO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgdGhpcy5jb2x1bW5EZWZzLmZvckVhY2goY29sdW1uRGVmID0+IHRoaXMudGFibGUuYWRkQ29sdW1uRGVmKGNvbHVtbkRlZikpO1xyXG4gICAgdGhpcy5yb3dEZWZzLmZvckVhY2gocm93RGVmID0+IHRoaXMudGFibGUuYWRkUm93RGVmKHJvd0RlZikpO1xyXG4gICAgdGhpcy5oZWFkZXJSb3dEZWZzLmZvckVhY2goaGVhZGVyUm93RGVmID0+IHRoaXMudGFibGUuYWRkSGVhZGVyUm93RGVmKGhlYWRlclJvd0RlZikpO1xyXG4gICAgdGhpcy5oZWFkZXJSb3dEZWZzLmZvckVhY2goaGVhZGVyUm93RGVmID0+IHRoaXMudGFibGUuYWRkSGVhZGVyUm93RGVmKGhlYWRlclJvd0RlZikpO1xyXG4gICAgdGhpcy50YWJsZS5zZXROb0RhdGFSb3codGhpcy5ub0RhdGFSb3cpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdpbmF0b3I7XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2luYXRvcj8uaW5pdGlhbFBhZ2UpIHtcclxuICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gdGhpcy5jb25maWcucGFnaW5hdG9yLmluaXRpYWxQYWdlO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgc2VhcmNoKGV2ZW50OiB7IHRhcmdldDogeyB2YWx1ZTogc3RyaW5nIH0gfSB8IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlucHV0ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KT8udmFsdWU7XHJcbiAgICB0aGlzLmNvbmZpZy5maWx0ZXIhLnNldHRpbmdzLnNlYXJjaElucHV0ID0gaW5wdXQ7XHJcbiAgICB0aGlzLmZpbHRlckJhckNoYW5nZS5lbWl0KHsgLi4udGhpcy5maWx0ZXJzLCBpbnB1dCB9KTtcclxuICAgIHRoaXMudXBkYXRlUGFnaW5hdG9yKDApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGlzcGxheUNvbHVtbnMoaW5pdGlhbCA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLmJhdGNoU2VsZWN0ZWRFbmFibGVkID0gdGhpcy5jb25maWcuYmF0Y2hDb25maWc/LmVuYWJsZWQgPyB0cnVlIDogZmFsc2U7XHJcbiAgICBjb25zdCBhbGxDb2x1bW5zID0gdGhpcy5jb25maWcuY29sdW1uU2VsZWN0Py5jb2x1bW5zID8/IFtdO1xyXG4gICAgdGhpcy5kaXNwbGF5Q29sdW1ucyA9IFtdO1xyXG4gICAgdGhpcy5jb25maWd1cmFibGVDb2x1bW5zID0gYWxsQ29sdW1ucy5maWx0ZXIoY29sdW1uID0+ICFjb2x1bW4ubm90Q29uZmlndXJhYmxlKTtcclxuXHJcbiAgICBpZiAodGhpcy5iYXRjaFNlbGVjdGVkRW5hYmxlZCkge1xyXG4gICAgICB0aGlzLmRpc3BsYXlDb2x1bW5zLnB1c2godGhpcy5iYXRjaENvbHVtbk5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghYWxsQ29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGxvY2FsU3RvcmFnZVZhbHVlID0gdGhpcy5sb2NhbFN0b3JhZ2VWYWx1ZSA/PyB7fTtcclxuICAgIGlmICghbG9jYWxTdG9yYWdlVmFsdWUuY29sdW1ucykge1xyXG4gICAgICBsb2NhbFN0b3JhZ2VWYWx1ZS5jb2x1bW5zID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgYWxsQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgaWYgKGluaXRpYWwpIHtcclxuICAgICAgICBjb2x1bW4uc2VsZWN0ZWQgPSBsb2NhbFN0b3JhZ2VWYWx1ZS5jb2x1bW5zPy5bY29sdW1uLm5hbWVdID8/IGNvbHVtbi5zZWxlY3RlZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgICAgIGxvY2FsU3RvcmFnZVZhbHVlLmNvbHVtbnMhW2NvbHVtbi5uYW1lXSA9IGNvbHVtbi5zZWxlY3RlZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGNvbHVtbi5zZWxlY3RlZCkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbHVtbnMucHVzaChjb2x1bW4ubmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgaWYgKHRoaXMuY29sdW1uU2VsZWN0QWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheUNvbHVtbnMucHVzaCh0aGlzLmNvbHVtblNlbGVjdENvbHVtbk5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghaW5pdGlhbCkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUxvY2FsU3RvcmFnZShsb2NhbFN0b3JhZ2VWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b2dnbGVGaWx0ZXJCYXIoKSB7XHJcbiAgICBjb25zdCBsb2NhbHN0b3JhZ2VPYmplY3QgPSB0aGlzLmxvY2FsU3RvcmFnZVZhbHVlID8/IHt9O1xyXG4gICAgaWYgKCFsb2NhbHN0b3JhZ2VPYmplY3QuZmlsdGVyKSB7XHJcbiAgICAgIGxvY2Fsc3RvcmFnZU9iamVjdC5maWx0ZXIgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpbHRlckJhclZpc2libGUgPSAhdGhpcy5maWx0ZXJCYXJWaXNpYmxlO1xyXG4gICAgbG9jYWxzdG9yYWdlT2JqZWN0LmZpbHRlci52aXNpYmxlID0gdGhpcy5maWx0ZXJCYXJWaXNpYmxlO1xyXG4gICAgdGhpcy51cGRhdGVMb2NhbFN0b3JhZ2UobG9jYWxzdG9yYWdlT2JqZWN0KTtcclxuICB9XHJcblxyXG4gIGZpbHRlcnNDaGFuZ2VkKGZpbHRlcnM6IEZpbHRlckJhckNoYW5nZUV2ZW50KSB7XHJcbiAgICB0aGlzLmZpbHRlcnMgPSB7IC4uLmZpbHRlcnMsIGlucHV0OiB0aGlzLmNvbmZpZy5maWx0ZXIhLnNldHRpbmdzLnNlYXJjaElucHV0ID8/ICcnIH07XHJcbiAgICB0aGlzLmZpbHRlckJhckNoYW5nZS5lbWl0KHRoaXMuZmlsdGVycyk7XHJcbiAgfVxyXG5cclxuICBjbGVhckZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmNvbmZpZy5maWx0ZXI/LnNldHRpbmdzLmZpbHRlcnM/LmZvckVhY2goKGZpbHRlcikgPT4ge1xyXG4gICAgICBmaWx0ZXIuc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5maWx0ZXJCYXIucmVtb3ZlQWxsRmlsdGVycygpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0KCkge1xyXG4gICAgdGhpcy5kYXRhU291cmNlIS5jb25uZWN0KCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy5leHBvcnRlZC5lbWl0KGRhdGEpO1xyXG4gICAgfSlcclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcuZXhwb3J0Py5maWxlT3B0aW9ucykge1xyXG4gICAgICB0aGlzLmV4cG9ydFRvRmlsZSgpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0VsZW1lbnRIaWdobGlnaHRlZChpeDogbnVtYmVyLCBlbGVtZW50OiBUKSB7XHJcbiAgICBsZXQgaXNIb3ZlcmVkID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5ob3ZlcmVkUm93ICYmIHRoaXMuaG92ZXJlZFJvd0luZGV4ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgaXNIb3ZlcmVkID0gdGhpcy50cmFja0J5Rm4odGhpcy5ob3ZlcmVkUm93SW5kZXgsIHRoaXMuaG92ZXJlZFJvdykgPT09IHRoaXMudHJhY2tCeUZuKGl4LCBlbGVtZW50KTtcclxuICAgIH1cclxuICAgIHJldHVybiBpc0hvdmVyZWQgfHxcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZEVsZW1lbnRzPy5zb21lKChoaWdobGlnaHRFbGVtZW50LCBoaWdobGlnaHRFbGVtZW50SXgpID0+IHRoaXMudHJhY2tCeUZuKGhpZ2hsaWdodEVsZW1lbnRJeCwgaGlnaGxpZ2h0RWxlbWVudCkgPT09IHRoaXMudHJhY2tCeUZuKGl4LCBlbGVtZW50KSk7XHJcbiAgfVxyXG5cclxuICBoaWdobGlnaHRFcnJvckVsZW1lbnQoaXg6IG51bWJlciwgZWxlbWVudDogVCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0ZWRFcnJvckVsZW1lbnRzPy5zb21lKChoaWdobGlnaHRFbGVtZW50LCBoaWdobGlnaHRFbGVtZW50SXgpID0+IHRoaXMudHJhY2tCeUZuKGhpZ2hsaWdodEVsZW1lbnRJeCwgaGlnaGxpZ2h0RWxlbWVudCkgPT09IHRoaXMudHJhY2tCeUZuKGl4LCBlbGVtZW50KSk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gTWV0aG9kcyBmb3IgYmF0Y2ggc2VsZWN0aW9uXHJcbiAgaXNBbGxTZWxlY3RlZCgpIHtcclxuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5tYXRTZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoO1xyXG4gICAgY29uc3QgbnVtUm93cyA9IHRoaXMuZGF0YVNvdXJjZT8uZGF0YS5sZW5ndGg7XHJcbiAgICByZXR1cm4gbnVtU2VsZWN0ZWQgPT09IG51bVJvd3M7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBbGxSb3dTZWxlY3Rpb24oKSB7XHJcbiAgICBpZiAodGhpcy5pc0FsbFNlbGVjdGVkKCkpIHtcclxuICAgICAgaWYgKHRoaXMuZGlzYWJsZVByZXNlbGVjdGVkSXRlbXMpIHtcclxuICAgICAgICAvLyBkZXNlbGVjdCBvbmx5IHRob3NlIGl0ZW1zIHdoaWNoIHdlcmUgbm90IGFscmVhZHkgcHJlc2VsZWN0ZWRcclxuICAgICAgICB0aGlzLm1hdFNlbGVjdGlvbi5kZXNlbGVjdChcclxuICAgICAgICAgIC4uLnRoaXMubWF0U2VsZWN0aW9uLnNlbGVjdGVkLmZpbHRlcihlbG0gPT4gIXRoaXMucHJlc2VsZWN0ZWRJdGVtcy5tYXAoZWxtID0+IGVsbSkuaW5jbHVkZXMoZWxtKSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm1hdFNlbGVjdGlvbi5jbGVhcigpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubWF0U2VsZWN0aW9uLnNlbGVjdCguLi50aGlzLmRhdGFTb3VyY2U/LmRhdGEgPz8gW10pO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRWxlbWVudFNlbGVjdGlvbihlbGVtZW50OiBUKSB7XHJcbiAgICB0aGlzLm1hdFNlbGVjdGlvbi50b2dnbGUoZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLmRpc2FibGVNb3VzZURyYWdnaW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zdGFydFggPSBldmVudC5wYWdlWCAtIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgdGhpcy5zdGFydFkgPSBldmVudC5wYWdlWSAtIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICB0aGlzLnNjcm9sbExlZnQgPSB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdDtcclxuICAgIHRoaXMuc2Nyb2xsVG9wID0gdGhpcy50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDtcclxuXHJcbiAgICAvLyBjYW5jZWxpbmcgYW55IHByZXZpb3VzIGFuaW1hdGlvbiBmcmFtZVxyXG4gICAgaWYgKHRoaXMuc2Nyb2xsTW92ZW1lbnQgIT09IG51bGwpIHtcclxuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5zY3JvbGxNb3ZlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLmRpc2FibGVNb3VzZURyYWdnaW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNoZWNrVGFibGVPdmVyZmxvdygpO1xyXG5cclxuICAgIGlmICghdGhpcy5pc0RyYWdnaW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgZm9yIHNtb290aGVyIHVwZGF0ZXNcclxuICAgIGlmICh0aGlzLnNjcm9sbE1vdmVtZW50ID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuc2Nyb2xsTW92ZW1lbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy50YWJsZU92ZXJmbG93KSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB4ID0gZXZlbnQucGFnZVggLSB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcclxuICAgICAgICBjb25zdCB5ID0gZXZlbnQucGFnZVkgLSB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xyXG5cclxuICAgICAgICAvLyBjYWxjdWxhdGluZyB0aGUgZGlmZmVyZW5jZXMgaW4gbW92ZW1lbnRcclxuICAgICAgICBjb25zdCB3YWxrWCA9ICh4IC0gdGhpcy5zdGFydFgpICogMjtcclxuICAgICAgICBjb25zdCB3YWxrWSA9ICh5IC0gdGhpcy5zdGFydFkpICogMjtcclxuXHJcbiAgICAgICAgLy8gdXBkYXRpbmcgc2Nyb2xsIHBvc2l0aW9uc1xyXG4gICAgICAgIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGhpcy5zY3JvbGxMZWZ0IC0gd2Fsa1g7XHJcbiAgICAgICAgdGhpcy50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHRoaXMuc2Nyb2xsVG9wIC0gd2Fsa1k7XHJcblxyXG4gICAgICAgIHRoaXMuc2Nyb2xsTW92ZW1lbnQgPSBudWxsO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTW91c2VVcCgpIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5kaXNhYmxlTW91c2VEcmFnZ2luZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XHJcblxyXG4gICAgLy8gY2FuY2VsaW5nIGFueSBwZW5kaW5nIGFuaW1hdGlvblxyXG4gICAgaWYgKHRoaXMuc2Nyb2xsTW92ZW1lbnQgIT09IG51bGwpIHtcclxuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5zY3JvbGxNb3ZlbWVudCk7XHJcbiAgICAgIHRoaXMuc2Nyb2xsTW92ZW1lbnQgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcGFnaW5hdG9yQ2hhbmdlKGNoYW5nZTogUGFnZUV2ZW50KSB7XHJcbiAgICB0aGlzLnBhZ2luYXRvclVwZGF0ZS5lbWl0KGNoYW5nZSk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICByb3dIb3ZlcmVkKGluZGV4OiBudW1iZXIsIHJvdzogVCkge1xyXG4gICAgdGhpcy5ob3ZlcmVkUm93ID0gcm93O1xyXG4gICAgdGhpcy5ob3ZlcmVkUm93SW5kZXggPSBpbmRleDtcclxuICB9XHJcblxyXG4gIHJvd0hvdmVyTGVhdmUoKSB7XHJcbiAgICB0aGlzLmhvdmVyZWRSb3cgPSBudWxsO1xyXG4gICAgdGhpcy5ob3ZlcmVkUm93SW5kZXggPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBkZWZhdWx0VHJhY2tCeShpeDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpeDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tUYWJsZU92ZXJmbG93KCk6IHZvaWQge1xyXG4gICAgLy8gd2hlbiBkYXRhIGlzIGF2YWlsYWJsZSB3ZSBzaG91bGQgY2hlY2sgb25jZSBmb3IgdGFibGUgb3ZlcmZsb3dcclxuICAgIC8vIHdoZW4gdGhlcmUgd2FzbnQgb3ZlcmZsb3csIGJ1dCB3aWR0aCBvZiB0aGUgdGFibGUgYmVjYW1lIGJpZ2dlciwgdGhlbiB3ZSBhcmUgcmVzZXRpbmcgdGFibGVPdmVyZmxvdyB2YXJpYWJsZVxyXG4gICAgLy8gc2FtZSBmb3Igd2hlbiB0aGVyZSB3YXMgb3ZlcmZsb3csIGJ1dCBzaXplIG9mIHRoZSB0YWJsZSBpcyBzYW1lIGFzIGNvbnRhaW5lciwgc28gb3ZlcmZsb3cgaXMgZ29uZSBhbmQgd2UgcmVzZXRpbmcgdGFibGVPdmVyZmxvdyB2YXJpYWJsZSBhZ2FpblxyXG4gICAgaWYgKCh0aGlzLmRhdGFTb3VyY2U/LmRhdGEubGVuZ3RoICYmIHRoaXMudGFibGVPdmVyZmxvdyA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAoIXRoaXMudGFibGVPdmVyZmxvdyAmJiB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggPCB0aGlzLnRhYmxlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoKSB8fFxyXG4gICAgICAodGhpcy50YWJsZU92ZXJmbG93ICYmIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCA9PT0gdGhpcy50YWJsZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCkpIHtcclxuXHJcbiAgICAgIGlmICh0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggPCB0aGlzLnRhYmxlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoKSB7XHJcbiAgICAgICAgdGhpcy50YWJsZU92ZXJmbG93ID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnRhYmxlT3ZlcmZsb3cgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBvcnRUb0ZpbGUoKSB7XHJcbiAgICBpZiAoIXRoaXMuY29uZmlnLmV4cG9ydD8uZmlsZU9wdGlvbnM/LnNhdmVUb0ZpbGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBmaWxlU3RyaW5nID0gXCJcIjtcclxuICAgIGxldCBleHRlbnNpb24hOiBFeHBvcnRGb3JtYXQ7XHJcbiAgICBzd2l0Y2ggKHRoaXMuY29uZmlnLmV4cG9ydC5maWxlT3B0aW9ucy5mb3JtYXQpIHtcclxuICAgICAgY2FzZSBFeHBvcnRGb3JtYXQuQ1NWOlxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGV4dGVuc2lvbiA9IEV4cG9ydEZvcm1hdC5DU1Y7XHJcbiAgICAgICAgZmlsZVN0cmluZyA9IEh0bWxFbGVtZW50UGFyc2VIZWxwZXIudGFibGVBc0Nzdih0aGlzLnRhYmxlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLmlnbm9yZUF0dHJpYnV0ZU5hbWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdHJhbnNsYXRlZEZpbGVOYW1lID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5jb25maWcuZXhwb3J0LmZpbGVPcHRpb25zLmZpbGVOYW1lKTtcclxuICAgIFNhdmVGaWxlSGVscGVyLnNhdmVGaWxlKGZpbGVTdHJpbmcsIGAke3RyYW5zbGF0ZWRGaWxlTmFtZX0uJHtleHRlbnNpb259YCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUxvY2FsU3RvcmFnZShuZXdWYWx1ZTogU2VsZWN0ZWRDb2x1bW5Mb2NhbFN0b3JhZ2VDb25maWcpIHtcclxuICAgIHRoaXMubG9jYWxTdG9yYWdlVmFsdWUgPSBuZXdWYWx1ZTtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5sb2NhbFN0b3JhZ2VLZXkgJiYgbmV3VmFsdWUpIHtcclxuICAgICAgdGhpcy5kb21TZXJ2aWNlLmxvY2FsU3RvcmFnZT8uc2V0SXRlbSh0aGlzLmNvbmZpZy5sb2NhbFN0b3JhZ2VLZXksIEpTT04uc3RyaW5naWZ5KG5ld1ZhbHVlKSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgcmVhZEZyb21Mb2NhbFN0b3JhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5jb25maWcubG9jYWxTdG9yYWdlS2V5KSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgbG9jYWxTdG9yYWdlU3RyaW5nID0gdGhpcy5kb21TZXJ2aWNlLmxvY2FsU3RvcmFnZT8uZ2V0SXRlbSh0aGlzLmNvbmZpZy5sb2NhbFN0b3JhZ2VLZXkpO1xyXG4gICAgICAgIGlmIChsb2NhbFN0b3JhZ2VTdHJpbmcpIHtcclxuICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlVmFsdWUgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZVN0cmluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eVxyXG4gICAgICBjYXRjaCB7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q29sdW1uU2VsZWN0UHJvcGVydGllcygpIHtcclxuICAgIHRoaXMuY29sdW1uU2VsZWN0QWN0aXZlID0gdGhpcy5jb25maWcuY29sdW1uU2VsZWN0Py5lbmFibGVkID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy51cGRhdGVEaXNwbGF5Q29sdW1ucyh0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RmlsdGVyVmlzaWJpbGl0eSgpIHtcclxuICAgIHRoaXMuZmlsdGVyQmFyVmlzaWJsZSA9IHRoaXMubG9jYWxTdG9yYWdlVmFsdWU/LmZpbHRlcj8udmlzaWJsZSA/PyB0aGlzLmNvbmZpZz8uZmlsdGVyPy52aXNpYmxlID8/IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXROb0RhdGFSb3dQcm9wZXJ0aWVzKCkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLm5vRGF0YVJvdykge1xyXG4gICAgICB0aGlzLm5vRGF0YVJvd0FjdGl2ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMubm9EYXRhUm93Q29uZmlnID0gdGhpcy5jb25maWcubm9EYXRhUm93O1xyXG4gICAgICB0aGlzLm5vRGF0YVJvd0NvbmZpZy5pY29uID0gdGhpcy5jb25maWcubm9EYXRhUm93Py5pY29uID8/IHRoaXMubm9EYXRhUm93SWNvbjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RXhwb3J0UHJvcGVydGllcygpIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5leHBvcnQ/LmVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5leHBvcnRBY3RpdmUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVEYXRhU291cmNlKCkge1xyXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5kYXRhU291cmNlKSB7XHJcbiAgICAgIHRoaXMuI2RhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPFQ+KHRoaXMuZGF0YSgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRGF0YVNvdXJjZURhdGEoKSB7XHJcbiAgICBjb25zdCBkYXRhID0gdGhpcy5kYXRhKCk7XHJcbiAgICBpZiAoIWRhdGEgfHwgIXRoaXMuI2RhdGFTb3VyY2UpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNob3VsZEluaXRpYWxpemVQYWdpbmF0b3IgPSAhdGhpcy4jZGF0YVNvdXJjZS5kYXRhLmxlbmd0aDtcclxuICAgIHRoaXMuI2RhdGFTb3VyY2UuZGF0YSA9IGRhdGE7XHJcblxyXG4gICAgLy8gaWYgZGF0YSBpcyBhc3luYyBsb2FkZWQsIHBhZ2UgbmVlZHMgdG8gYmUgc2V0IG9uIGZpcnN0IGxvYWQuXHJcbiAgICBpZiAoc2hvdWxkSW5pdGlhbGl6ZVBhZ2luYXRvcikge1xyXG4gICAgICB0aGlzLnVwZGF0ZVBhZ2luYXRvcih0aGlzLmNvbmZpZy5wYWdpbmF0b3I/LmluaXRpYWxQYWdlID8/IDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVQYWdpbmF0b3IocGFnZUluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IHBhZ2VJbmRleDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBbbmdDbGFzcy5sdC1tZF09XCInbW9iaWxlJ1wiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRHYXA9XCIwLjc1cmVtXCI+XHJcbiAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0Lmx0LW1kPVwiY29sdW1uXCIgZnhMYXlvdXRHYXAubHQtbWQ9XCIwLjc1cmVtXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGZ4RmxleFxyXG4gICAgICBmeExheW91dC5sdC1tZD1cImNvbHVtblwiXHJcbiAgICAgIGZ4TGF5b3V0R2FwPVwiMC43NXJlbVwiXHJcbiAgICAgIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIlxyXG4gICAgICBmeExheW91dEFsaWduLmx0LW1kPVwic3RhcnQgc3RhcnRcIlxyXG4gICAgICBjbGFzcz1cImFjdGlvbi1yb3dcIlxyXG4gICAgPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJleHBvcnQtZGF0YVwiXHJcbiAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXHJcbiAgICAgICAgY29sb3I9XCJhY2NlbnRcIlxyXG4gICAgICAgICpuZ0lmPVwiZXhwb3J0QWN0aXZlXCJcclxuICAgICAgICAoY2xpY2spPVwiZXhwb3J0KClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPmNsb3VkX2Rvd25sb2FkPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuPnt7IFwiTVVMVElfRlVOQ1RJT05BTF9UQUJMRS5FWFBPUlRcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJmaWx0ZXJBY3RpdmUgJiYgc2hvd0ZpbHRlclRvZ2dsZVwiXHJcbiAgICAgICAgZnhGbGV4XHJcbiAgICAgICAgZnhMYXlvdXRHYXA9XCIwLjVyZW1cIlxyXG4gICAgICAgIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgW2NsYXNzLmZpbHRlci1hY3RpdmVdPVwiZmlsdGVyQmFyVmlzaWJsZVwiXHJcbiAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cclxuICAgICAgICAgIGNvbG9yPVwiYWNjZW50XCJcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGaWx0ZXJCYXIoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmZpbHRlcl9saXN0PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4+e3sgXCJNVUxUSV9GVU5DVElPTkFMX1RBQkxFLkZJTFRFUl9UT0dHTEVcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dGaWx0ZXJSZXNldFwiIGNsYXNzPVwiY2xlYXItZmlsdGVycy13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xlYXJGaWx0ZXJzKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJzaG93U2VhcmNoXCJcclxuICAgICAgZnhMYXlvdXQ9XCJyb3dcIlxyXG4gICAgICBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcclxuICAgICAgY2xhc3M9XCJ3aWxkLXNlYXJjaC13cmFwcGVyXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uXHJcbiAgICAgICAgY2xhc3M9XCJzZWFyY2gtaWNvblwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiaGlkZVNlYXJjaFRvb2x0aXAgPyAnJyA6IChzZWFyY2hUb29sdGlwIHwgdHJhbnNsYXRlKVwiXHJcbiAgICAgICAgPnNlYXJjaDwvbWF0LWljb25cclxuICAgICAgPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBbdmFsdWVdPVwiY29uZmlnLmZpbHRlcj8uc2V0dGluZ3M/LnNlYXJjaFZhbHVlID8/ICcnXCJcclxuICAgICAgICAjd2lsZFNlYXJjaFxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoVGl0bGUgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIChrZXl1cCk9XCJzZWFyY2goJGV2ZW50KVwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICAqbmdJZj1cInNob3dTZWFyY2hDbGVhckJ1dHRvbiAmJiB3aWxkU2VhcmNoLnZhbHVlXCJcclxuICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICBjbGFzcz1cIndpbGQtc2VhcmNoLWNsZWFyLWJ0blwiXHJcbiAgICAgICAgKGNsaWNrKT1cIndpbGRTZWFyY2gudmFsdWUgPSAnJzsgc2VhcmNoKHsgdGFyZ2V0OiB7IHZhbHVlOiAnJyB9IH0pXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2FkZGl0aW9uYWxBY3Rpb25zXVwiPjwvbmctY29udGVudD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPHRsZC1maWx0ZXItYmFyXHJcbiAgICAqbmdJZj1cImNvbmZpZy5maWx0ZXIgJiYgY29uZmlnLmZpbHRlci5lbmFibGVkXCJcclxuICAgICNmaWx0ZXJCYXJcclxuICAgIFtmaWx0ZXJSb3dWaXNpYmxlXT1cImZpbHRlckJhclZpc2libGVcIlxyXG4gICAgW3NldHRpbmdzXT1cImNvbmZpZy5maWx0ZXIuc2V0dGluZ3NcIlxyXG4gICAgKGZpbHRlckJhckNoYW5nZSk9XCJmaWx0ZXJzQ2hhbmdlZCgkZXZlbnQpXCJcclxuICA+XHJcbiAgPC90bGQtZmlsdGVyLWJhcj5cclxuXHJcbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JhdGNoQWN0aW9uc11cIj48L25nLWNvbnRlbnQ+XHJcblxyXG4gIEBpZihjb25maWcucGFnaW5hdG9yPy5lbmFibGVkKXtcclxuICAgIEBsZXQgcGFnaW5hdG9yQ29uZmlnID0gY29uZmlnLnBhZ2luYXRvciE7XHJcblxyXG4gICAgPG1hdC1wYWdpbmF0b3IgW2hpZGVQYWdlU2l6ZV09XCIhcGFnaW5hdG9yQ29uZmlnLnNob3dQYWdlU2l6ZVwiIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJwYWdpbmF0b3JDb25maWcuc2hvd0ZpcnN0TGFzdEJ1dHRvbnNcIlxyXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTVVMVElfRlVOQ1RJT05BTF9UQUJMRS5QQUdJTkFUT1JfTEFCRUwnIHwgdHJhbnNsYXRlXCIgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdpbmF0b3JDb25maWcucGFnZVNpemVPcHRpb25zID8/IFsxMF1cIiAocGFnZSk9XCJwYWdpbmF0b3JDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgPC9tYXQtcGFnaW5hdG9yPlxyXG4gIH1cclxuICA8ZGl2XHJcbiAgICAjdGFibGVDb250YWluZXJcclxuICAgIGNsYXNzPVwidGFibGUtb3ZlcmZsb3dcIlxyXG4gICAgW2NsYXNzLnRhYmxlLXN0aWNreS1oZWFkZXJdPVwiY29uZmlnPy5zdGlja3lIZWFkZXJcIlxyXG4gICAgW2NsYXNzLnRhYmxlLWRyYWdhYmxlXT1cInRhYmxlT3ZlcmZsb3cgJiYgIWNvbmZpZz8uZGlzYWJsZU1vdXNlRHJhZ2dpbmdcIlxyXG4gICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQpXCJcclxuICAgIChtb3VzZXVwKT1cIm9uTW91c2VVcCgpXCJcclxuICAgIChtb3VzZWxlYXZlKT1cIm9uTW91c2VVcCgpXCJcclxuICAgIChtb3VzZW1vdmUpPVwib25Nb3VzZU1vdmUoJGV2ZW50KVwiXHJcbiAgPlxyXG4gICAgPHRhYmxlXHJcbiAgICAgICN0YWJsZVxyXG4gICAgICBtYXQtdGFibGVcclxuICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZSFcIlxyXG4gICAgICBbdHJhY2tCeV09XCJ0cmFja0J5Rm5cIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJiYXRjaENvbHVtbk5hbWVcIj5cclxuICAgICAgICA8dGggY2xhc3M9XCJyb3ctc2VsZWN0XCIgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGRpc2FibGUtZXhwb3J0PlxyXG4gICAgICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInTVVMVElfRlVOQ1RJT05BTF9UQUJMRS5TRUxFQ1RfQUxMJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb25maWcuYmF0Y2hDb25maWchLmNoZWNrQm94ZXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlQWxsUm93U2VsZWN0aW9uKClcIlxyXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJtYXRTZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBpc0FsbFNlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJtYXRTZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgICAgPHRkXHJcbiAgICAgICAgICBjbGFzcz1cInJvdy1zZWxlY3RcIlxyXG4gICAgICAgICAgbWF0LWNlbGxcclxuICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIlxyXG4gICAgICAgICAgZGlzYWJsZS1leHBvcnRcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidNVUxUSV9GVU5DVElPTkFMX1RBQkxFLlNFTEVDVCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIGlzUm93Q2hlY2tib3hBbHdheXNWaXNpYmxlIHx8XHJcbiAgICAgICAgICAgICAgaG92ZXJlZFJvdyA9PT0gZWxlbWVudCB8fFxyXG4gICAgICAgICAgICAgIG1hdFNlbGVjdGlvbi5pc1NlbGVjdGVkKGVsZW1lbnQpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICBjb25maWcuYmF0Y2hDb25maWchLmNoZWNrQm94ZXNEaXNhYmxlZCB8fFxyXG4gICAgICAgICAgICAgIChwcmVzZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGVsZW1lbnQpICYmIGRpc2FibGVQcmVzZWxlY3RlZEl0ZW1zKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVFbGVtZW50U2VsZWN0aW9uKGVsZW1lbnQpXCJcclxuICAgICAgICAgICAgW2NoZWNrZWRdPVwibWF0U2VsZWN0aW9uLmlzU2VsZWN0ZWQoZWxlbWVudClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDx0clxyXG4gICAgICAgIG1hdC1oZWFkZXItcm93XHJcbiAgICAgICAgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXlDb2x1bW5zOyBzdGlja3k6IGNvbmZpZz8uc3RpY2t5SGVhZGVyID8/IGZhbHNlXCJcclxuICAgICAgPjwvdHI+XHJcbiAgICAgIDx0clxyXG4gICAgICAgIG1hdC1yb3dcclxuICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXg7IGNvbHVtbnM6IGRpc3BsYXlDb2x1bW5zXCJcclxuICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICBjb25maWc/LnJvd0NsaWNrQ2FsbGJhY2sgJiYgKCFjb25maWcuZGlzYWJsZVJvd0NsaWNrIHx8ICFjb25maWc/LmRpc2FibGVSb3dDbGljayhyb3cpKVxyXG4gICAgICAgICAgICA/IGNvbmZpZz8ucm93Q2xpY2tDYWxsYmFjayhyb3cpXHJcbiAgICAgICAgICAgIDogbnVsbFxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgKG1vdXNlb3Zlcik9XCJyb3dIb3ZlcmVkKGluZGV4LHJvdylcIlxyXG4gICAgICAgIChtb3VzZWxlYXZlKT1cInJvd0hvdmVyTGVhdmUoKVwiXHJcbiAgICAgICAgW2NsYXNzLnJvdy1jbGlja2FibGVdPVwiXHJcbiAgICAgICAgICBjb25maWc/LnJvd0NsaWNrQ2FsbGJhY2sgJiYgKCFjb25maWcuZGlzYWJsZVJvd0NsaWNrIHx8ICFjb25maWc/LmRpc2FibGVSb3dDbGljayhyb3cpKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW2NsYXNzLmhpZ2hsaWdodC1lcnJvcl09XCJoaWdobGlnaHRFcnJvckVsZW1lbnQoaW5kZXgsIHJvdylcIlxyXG4gICAgICAgIFtjbGFzcy5oaWdobGlnaHRdPVwiaXNFbGVtZW50SGlnaGxpZ2h0ZWQoaW5kZXgscm93KVwiXHJcbiAgICAgID48L3RyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtblNlbGVjdENvbHVtbk5hbWVcIj5cclxuICAgICAgICA8dGggY2xhc3M9XCJyb3ctc2VsZWN0XCIgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGRpc2FibGUtZXhwb3J0PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1zZWxlY3Rvci13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImNvbHVtbi1zZWxlY3RvclwiXHJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgY29sb3I9XCJhY2NlbnRcIlxyXG4gICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJjb2x1bW5NZW51XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5tb3JlX3ZlcnQ8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGRcclxuICAgICAgICAgIGNsYXNzPVwicm93LXNlbGVjdFwiXHJcbiAgICAgICAgICBtYXQtY2VsbFxyXG4gICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiXHJcbiAgICAgICAgICBkaXNhYmxlLWV4cG9ydFxyXG4gICAgICAgID48L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vRGF0YVJvd0FjdGl2ZVwiPlxyXG4gICAgICAgIDx0ciAqbWF0Tm9EYXRhUm93PlxyXG4gICAgICAgICAgPCEtLSBhZGQgcmFuZG9tIG51bWJlciB0byBtYWtlIHN1cmUgaXQgdGFrZXMgZnVsbCB3aWR0aCAtLT5cclxuICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiOTlcIj5cclxuICAgICAgICAgICAgPGxpYi1zdGF0dXMtZGlzcGxheSBbY29uZmlnXT1cIm5vRGF0YVJvd0NvbmZpZ1wiPjwvbGliLXN0YXR1cy1kaXNwbGF5PlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvdGFibGU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG1hdC1tZW51ICNjb2x1bW5NZW51PVwibWF0TWVudVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tc2VsZWN0LW1lbnVcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29uZmlndXJhYmxlQ29sdW1uc1wiPlxyXG4gICAgICA8bWF0LWNoZWNrYm94IFsobmdNb2RlbCldPVwiY29sdW1uLnNlbGVjdGVkXCI+XHJcbiAgICAgICAge3sgY29sdW1uLmRpc3BsYXlOYW1lIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbi1zZWxlY3Qtc2F2ZVwiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LWZsYXQtYnV0dG9uXHJcbiAgICAgICAgY29sb3I9XCJhY2NlbnRcIlxyXG4gICAgICAgIChjbGljayk9XCJ1cGRhdGVEaXNwbGF5Q29sdW1ucygpXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IFwiTVVMVElfRlVOQ1RJT05BTF9UQUJMRS5DT0xVTU5fU0VMRUNUX1NBVkVcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L21hdC1tZW51PlxyXG4iXX0=
692
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktZnVuY3Rpb25hbC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tbW9uL3NyYy9saWIvbXVsdGktZnVuY3Rpb25hbC10YWJsZS9tdWx0aS1mdW5jdGlvbmFsLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi9tdWx0aS1mdW5jdGlvbmFsLXRhYmxlL211bHRpLWZ1bmN0aW9uYWwtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBbUMsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hNLE9BQU8sRUFBRSxZQUFZLEVBQWEsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUvSCxPQUFPLEVBQUUsR0FBRyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRzdELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7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QUFxQjtZQWNiLGVBQXNCO1lBQXRCLGlEQUFzQjtZQVE1QyxlQUNEO1lBREMsb0dBQ0Q7OztpRkQvR1UsNkJBQTZCO2NBTnpDLFNBQVM7MkJBRUUsNEJBQTRCOzBFQVk3QixNQUFNO2tCQUFkLEtBQUs7WUFDRyxtQkFBbUI7a0JBQTNCLEtBQUs7WUFDRyxTQUFTO2tCQUFqQixLQUFLO1lBQ0csd0JBQXdCO2tCQUFoQyxLQUFLO1lBQ08sU0FBUztrQkFBckIsS0FBSztZQUtHLDBCQUEwQjtrQkFBbEMsS0FBSztZQUNHLHVCQUF1QjtrQkFBL0IsS0FBSztZQUdJLGVBQWU7a0JBQXhCLE1BQU07WUFDRyxlQUFlO2tCQUF4QixNQUFNO1lBQ0csUUFBUTtrQkFBakIsTUFBTTtZQUNHLGVBQWU7a0JBQXhCLE1BQU07WUFJMkIsYUFBYTtrQkFBOUMsZUFBZTttQkFBQyxlQUFlO1lBQ21CLE9BQU87a0JBQXpELGVBQWU7bUJBQUMsU0FBUyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtZQUNsQixVQUFVO2tCQUF4QyxlQUFlO21CQUFDLFlBQVk7WUFDRCxTQUFTO2tCQUFwQyxZQUFZO21CQUFDLFlBQVk7WUFFYSxLQUFLO2tCQUEzQyxTQUFTO21CQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDakIsSUFBSTtrQkFBdkIsU0FBUzttQkFBQyxPQUFPO1lBRVcsY0FBYztrQkFBMUMsU0FBUzttQkFBQyxnQkFBZ0I7WUFDSCxTQUFTO2tCQUFoQyxTQUFTO21CQUFDLFdBQVc7WUFDRyxTQUFTO2tCQUFqQyxTQUFTO21CQUFDLFlBQVk7WUFJb0IsZUFBZTtrQkFBekQsU0FBUzttQkFBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFOztrRkExQzlCLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIENvbnRlbnRDaGlsZHJlbiwgZWZmZWN0LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGlucHV0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciwgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRDb2x1bW5EZWYsIE1hdEhlYWRlclJvd0RlZiwgTWF0Tm9EYXRhUm93LCBNYXRSb3dEZWYsIE1hdFRhYmxlLCBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZpbHRlckJhckNvbXBvbmVudCB9IGZyb20gJy4uL2ZpbHRlci1iYXInO1xyXG5pbXBvcnQgeyBGaWx0ZXJCYXJDaGFuZ2VFdmVudCB9IGZyb20gJy4uL2ZpbHRlci1iYXIvbW9kZWxzL2ZpbHRlci1iYXItY2hhbmdlLWV2ZW50Lm1vZGVsJztcclxuaW1wb3J0IHsgSHRtbEVsZW1lbnRQYXJzZUhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMnO1xyXG5pbXBvcnQgeyBTYXZlRmlsZUhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvc2F2ZS1maWxlLmhlbHBlcic7XHJcbmltcG9ydCB7IERPTVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFN0YXR1c0Rpc3BsYXlDb25maWcgfSBmcm9tICcuLi9zdGF0dXMtZGlzcGxheS9tb2RlbHMvc3RhdHVzLWRpc3BsYXktY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgRElTQUJMRV9FWFBPUlRfQVRUUklCVVRFX05BTUUgfSBmcm9tICcuL2NvbnN0YW50cy9kaXNhYmxlLWV4cG9ydC1hdHRyaWJ1dGUtbmFtZS5jb25zdCc7XHJcbmltcG9ydCB7IEV4cG9ydEZvcm1hdCB9IGZyb20gJy4vbW9kZWxzJztcclxuaW1wb3J0IHsgQ29sdW1uQ29uZmlnIH0gZnJvbSAnLi9tb2RlbHMvY29sdW1uLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IE11bHRpRnVuY3Rpb25hbFRhYmxlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbHMvbXVsdGktZnVuY3Rpb25hbC10YWJsZS1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBTZWxlY3RlZENvbHVtbkxvY2FsU3RvcmFnZUNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL3NlbGVjdGVkLWNvbHVtbi1sb2NhbC1zdG9yYWdlLWNvbmZpZy5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAndGxkLW11bHRpLWZ1bmN0aW9uYWwtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aS1mdW5jdGlvbmFsLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tdWx0aS1mdW5jdGlvbmFsLXRhYmxlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE11bHRpRnVuY3Rpb25hbFRhYmxlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0IHtcclxuICByZWFkb25seSBtYXRTZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8VD4odHJ1ZSwgW10pO1xyXG5cclxuICAjZGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPFQ+IHwgdW5kZWZpbmVkO1xyXG4gIGdldCBkYXRhU291cmNlKCk6IE1hdFRhYmxlRGF0YVNvdXJjZTxUPiB7XHJcbiAgICByZXR1cm4gKHRoaXMuI2RhdGFTb3VyY2UgPz8gdGhpcy5jb25maWcuZGF0YVNvdXJjZSkhO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgY29uZmlnITogTXVsdGlGdW5jdGlvbmFsVGFibGVDb25maWc8VD47XHJcbiAgQElucHV0KCkgaGlnaGxpZ2h0ZWRFbGVtZW50cyE6IFRbXTtcclxuICBASW5wdXQoKSB0cmFja0J5Rm46IChpeDogbnVtYmVyLCByb3c6IFQpID0+IHN0cmluZyB8IG51bWJlciA9IHRoaXMuZGVmYXVsdFRyYWNrQnk7XHJcbiAgQElucHV0KCkgaGlnaGxpZ2h0ZWRFcnJvckVsZW1lbnRzITogVFtdO1xyXG4gIEBJbnB1dCgpIHNldCBzZWxlY3Rpb24odmFsdWU6IFRbXSkge1xyXG4gICAgdGhpcy5tYXRTZWxlY3Rpb24uc2V0U2VsZWN0aW9uKC4uLih2YWx1ZSA/PyBbXSkpO1xyXG4gIH1cclxuXHJcbiAgLy8gU2V0IHRoaXMgdG8gZmFsc2UgaWYgeW91IHdhbnQgdG8gZGlzcGxheSBjaGVja2JveGVzIG9ubHkgb24gcm93IGhvdmVyLlxyXG4gIEBJbnB1dCgpIGlzUm93Q2hlY2tib3hBbHdheXNWaXNpYmxlID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkaXNhYmxlUHJlc2VsZWN0ZWRJdGVtcyA9IGZhbHNlO1xyXG5cclxuICAvLyNyZWdpb24gT3V0cHV0IHByb3BlcnRpZXNcclxuICBAT3V0cHV0KCkgZmlsdGVyQmFyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RmlsdGVyQmFyQ2hhbmdlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJCYXJDaGFuZ2VFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgcGFnaW5hdG9yVXBkYXRlOiBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBleHBvcnRlZDogRXZlbnRFbWl0dGVyPFRbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlOiBPYnNlcnZhYmxlPFRbXT4gPSB0aGlzLm1hdFNlbGVjdGlvbi5jaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpLnBpcGUobWFwKCgpID0+IHsgcmV0dXJuIHRoaXMubWF0U2VsZWN0aW9uLnNlbGVjdGVkOyB9KSk7XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vICNyZWdpb24gUHJvcGVydGllcyBmb3IgbWF0IHRhYmxlIHdyYXBwZXJcclxuICBAQ29udGVudENoaWxkcmVuKE1hdEhlYWRlclJvd0RlZikgaGVhZGVyUm93RGVmcyE6IFF1ZXJ5TGlzdDxNYXRIZWFkZXJSb3dEZWY+O1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0Um93RGVmLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHJvd0RlZnMhOiBRdWVyeUxpc3Q8TWF0Um93RGVmPFQ+PjtcclxuICBAQ29udGVudENoaWxkcmVuKE1hdENvbHVtbkRlZikgY29sdW1uRGVmcyE6IFF1ZXJ5TGlzdDxNYXRDb2x1bW5EZWY+O1xyXG4gIEBDb250ZW50Q2hpbGQoTWF0Tm9EYXRhUm93KSBub0RhdGFSb3chOiBNYXROb0RhdGFSb3c7XHJcblxyXG4gIEBWaWV3Q2hpbGQoTWF0VGFibGUsIHsgc3RhdGljOiB0cnVlIH0pIHRhYmxlITogTWF0VGFibGU8VD47XHJcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0ITogTWF0U29ydDtcclxuXHJcbiAgQFZpZXdDaGlsZCgndGFibGVDb250YWluZXInKSB0YWJsZUNvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlckJhcicpIGZpbHRlckJhciE6IEZpbHRlckJhckNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgcGFnaW5hdG9yITogTWF0UGFnaW5hdG9yO1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgQFZpZXdDaGlsZChNYXRUYWJsZSwgeyByZWFkOiBFbGVtZW50UmVmIH0pIHRhYmxlRWxlbWVudFJlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICAvKiogVGhpcyBwcm9wZXJ0eSB3aWxsIGJlIHRha2VuIGludG8gYWNjb3VudCBvbmx5IGlmIGNvbmZpZy5EYXRhU291cmNlIG5vdCBzZXQuICovXHJcbiAgZGF0YSA9IGlucHV0PFRbXT4oKTtcclxuICBkYXRhU291cmNlVXBkYXRlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHsgdGhpcy51cGRhdGVEYXRhU291cmNlRGF0YSgpOyB9KVxyXG5cclxuICBwcmVzZWxlY3RlZEl0ZW1zITogVFtdO1xyXG5cclxuICBnZXQgaWdub3JlQXR0cmlidXRlTmFtZSgpIHsgcmV0dXJuIERJU0FCTEVfRVhQT1JUX0FUVFJJQlVURV9OQU1FIH1cclxuICBkaXNwbGF5Q29sdW1ucyE6IHN0cmluZ1tdO1xyXG5cclxuICBjb2x1bW5TZWxlY3RBY3RpdmUhOiBib29sZWFuO1xyXG4gIGV4cG9ydEFjdGl2ZSE6IGJvb2xlYW47XHJcbiAgbm9EYXRhUm93QWN0aXZlITogYm9vbGVhbjtcclxuXHJcbiAgZmlsdGVycyE6IEZpbHRlckJhckNoYW5nZUV2ZW50O1xyXG4gIGZpbHRlckJhclZpc2libGUhOiBib29sZWFuO1xyXG5cclxuICBoaWRlU2VhcmNoVG9vbHRpcCE6IGJvb2xlYW47XHJcbiAgc2hvd1NlYXJjaCE6IGJvb2xlYW47XHJcbiAgc2hvd1NlYXJjaENsZWFyQnV0dG9uITogYm9vbGVhbjtcclxuICBzZWFyY2hUaXRsZSE6IHN0cmluZztcclxuICBzZWFyY2hUb29sdGlwITogc3RyaW5nO1xyXG5cclxuICBub0RhdGFSb3dDb25maWchOiBTdGF0dXNEaXNwbGF5Q29uZmlnO1xyXG4gIG5vRGF0YVJvd0ljb24gPSBcIm1hbmFnZV9zZWFyY2hcIjtcclxuXHJcbiAgY29uZmlndXJhYmxlQ29sdW1ucyE6IENvbHVtbkNvbmZpZ1tdO1xyXG4gIGJhdGNoU2VsZWN0ZWRFbmFibGVkITogYm9vbGVhbjtcclxuXHJcbiAgLy8gaXMgdXNlZCBpbiBodG1sIHRvIGRpc3BsYXkgYmF0Y2ggY2hlY2tib3ggb24gaG92ZXJlZCByb3dcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGhvdmVyZWRSb3c6IGFueTtcclxuICBob3ZlcmVkUm93SW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLy8gcHJvcGVydGllcyBmb3Igb3ZlcmZsb3cgc2Nyb2xsaW5nIHdpdGggbW91c2UgY2xpY2tcclxuICB0YWJsZU92ZXJmbG93ITogYm9vbGVhbjtcclxuICBwcml2YXRlIHNjcm9sbE1vdmVtZW50ITogbnVtYmVyIHwgbnVsbDtcclxuICBwcml2YXRlIGlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICBwcml2YXRlIHN0YXJ0WCA9IDA7XHJcbiAgcHJpdmF0ZSBzdGFydFkgPSAwO1xyXG4gIHByaXZhdGUgc2Nyb2xsTGVmdCA9IDA7XHJcbiAgcHJpdmF0ZSBzY3JvbGxUb3AgPSAwO1xyXG5cclxuICBnZXQgZmlsdGVyQWN0aXZlKCkgeyByZXR1cm4gdGhpcy5jb25maWcuZmlsdGVyPy5lbmFibGVkOyB9XHJcbiAgZ2V0IHNob3dGaWx0ZXJUb2dnbGUoKSB7IHJldHVybiAhdGhpcy5jb25maWcuZmlsdGVyPy5oaWRlRmlsdGVyVG9nZ2xlOyB9XHJcblxyXG4gIGdldCBzaG93RmlsdGVyUmVzZXQoKSB7IHJldHVybiB0aGlzLmNvbmZpZy5maWx0ZXI/LnNldHRpbmdzLmZpbHRlcnM/LmZpbmQoZmlsdGVyID0+IGZpbHRlci5zZWxlY3RlZFZhbHVlcz8ubGVuZ3RoKSB9XHJcblxyXG4gIHByaXZhdGUgbG9jYWxTdG9yYWdlVmFsdWUhOiBTZWxlY3RlZENvbHVtbkxvY2FsU3RvcmFnZUNvbmZpZztcclxuICByZWFkb25seSBiYXRjaENvbHVtbk5hbWUgPSBcImJhdGNoXCI7XHJcbiAgcmVhZG9ubHkgY29sdW1uU2VsZWN0Q29sdW1uTmFtZSA9IFwiY29sdW1uU2VsZWN0XCI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZG9tU2VydmljZTogRE9NU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkgeyB9XHJcblxyXG4gIC8vI3JlZ2lvbiBBbmd1bGFyIGxpZmVjeWNsZSBob29rc1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jcmVhdGVEYXRhU291cmNlKCk7XHJcbiAgICB0aGlzLnJlYWRGcm9tTG9jYWxTdG9yYWdlKCk7XHJcbiAgICB0aGlzLnNldEZpbHRlclZpc2liaWxpdHkoKTtcclxuICAgIHRoaXMuc2V0Q29sdW1uU2VsZWN0UHJvcGVydGllcygpO1xyXG4gICAgdGhpcy5zZXRFeHBvcnRQcm9wZXJ0aWVzKCk7XHJcbiAgICB0aGlzLnNldE5vRGF0YVJvd1Byb3BlcnRpZXMoKTtcclxuICAgIHRoaXMucHJlc2VsZWN0ZWRJdGVtcyA9IHRoaXMubWF0U2VsZWN0aW9uLnNlbGVjdGVkO1xyXG4gICAgdGhpcy5zZWFyY2hUb29sdGlwID0gdGhpcy5jb25maWcuZmlsdGVyPy5zZXR0aW5ncz8uc2VhcmNoVG9vbHRpcCA/PyAnRklMVEVSX0JBUi5TRUFSQ0hfVE9PTFRJUCc7XHJcbiAgICB0aGlzLnNlYXJjaFRpdGxlID0gdGhpcy5jb25maWcuZmlsdGVyPy5zZXR0aW5ncz8uc2VhcmNoVGl0bGUgPz8gJ0ZJTFRFUl9CQVIuU0VBUkNIJztcclxuICAgIHRoaXMuc2hvd1NlYXJjaCA9ICF0aGlzLmNvbmZpZy5maWx0ZXI/LnNldHRpbmdzPy5oaWRlU2VhcmNoO1xyXG4gICAgdGhpcy5zaG93U2VhcmNoQ2xlYXJCdXR0b24gPSB0aGlzLmNvbmZpZy5maWx0ZXI/LnNldHRpbmdzPy5zaG93U2VhcmNoQ2xlYXJCdXR0b24gPz8gdHJ1ZTtcclxuICAgIHRoaXMuaGlkZVNlYXJjaFRvb2x0aXAgPSAhdGhpcy5jb25maWcuZmlsdGVyPy5zZXR0aW5ncz8uaGlkZVRvb2x0aXA7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICB0aGlzLmNvbHVtbkRlZnMuZm9yRWFjaChjb2x1bW5EZWYgPT4gdGhpcy50YWJsZS5hZGRDb2x1bW5EZWYoY29sdW1uRGVmKSk7XHJcbiAgICB0aGlzLnJvd0RlZnMuZm9yRWFjaChyb3dEZWYgPT4gdGhpcy50YWJsZS5hZGRSb3dEZWYocm93RGVmKSk7XHJcbiAgICB0aGlzLmhlYWRlclJvd0RlZnMuZm9yRWFjaChoZWFkZXJSb3dEZWYgPT4gdGhpcy50YWJsZS5hZGRIZWFkZXJSb3dEZWYoaGVhZGVyUm93RGVmKSk7XHJcbiAgICB0aGlzLmhlYWRlclJvd0RlZnMuZm9yRWFjaChoZWFkZXJSb3dEZWYgPT4gdGhpcy50YWJsZS5hZGRIZWFkZXJSb3dEZWYoaGVhZGVyUm93RGVmKSk7XHJcbiAgICB0aGlzLnRhYmxlLnNldE5vRGF0YVJvdyh0aGlzLm5vRGF0YVJvdyk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcucGFnaW5hdG9yPy5pbml0aWFsUGFnZSkge1xyXG4gICAgICB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXggPSB0aGlzLmNvbmZpZy5wYWdpbmF0b3IuaW5pdGlhbFBhZ2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBzZWFyY2goZXZlbnQ6IHsgdGFyZ2V0OiB7IHZhbHVlOiBzdHJpbmcgfSB9IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpPy52YWx1ZTtcclxuICAgIHRoaXMuY29uZmlnLmZpbHRlciEuc2V0dGluZ3Muc2VhcmNoSW5wdXQgPSBpbnB1dDtcclxuICAgIHRoaXMuZmlsdGVyQmFyQ2hhbmdlLmVtaXQoeyAuLi50aGlzLmZpbHRlcnMsIGlucHV0IH0pO1xyXG4gICAgdGhpcy51cGRhdGVQYWdpbmF0b3IoMCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEaXNwbGF5Q29sdW1ucyhpbml0aWFsID0gZmFsc2UpIHtcclxuICAgIHRoaXMuYmF0Y2hTZWxlY3RlZEVuYWJsZWQgPSB0aGlzLmNvbmZpZy5iYXRjaENvbmZpZz8uZW5hYmxlZCA/IHRydWUgOiBmYWxzZTtcclxuICAgIGNvbnN0IGFsbENvbHVtbnMgPSB0aGlzLmNvbmZpZy5jb2x1bW5TZWxlY3Q/LmNvbHVtbnMgPz8gW107XHJcbiAgICB0aGlzLmRpc3BsYXlDb2x1bW5zID0gW107XHJcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZUNvbHVtbnMgPSBhbGxDb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gIWNvbHVtbi5ub3RDb25maWd1cmFibGUpO1xyXG5cclxuICAgIGlmICh0aGlzLmJhdGNoU2VsZWN0ZWRFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheUNvbHVtbnMucHVzaCh0aGlzLmJhdGNoQ29sdW1uTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFhbGxDb2x1bW5zLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSB0aGlzLmxvY2FsU3RvcmFnZVZhbHVlID8/IHt9O1xyXG4gICAgaWYgKCFsb2NhbFN0b3JhZ2VWYWx1ZS5jb2x1bW5zKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZVZhbHVlLmNvbHVtbnMgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBhbGxDb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICBpZiAoaW5pdGlhbCkge1xyXG4gICAgICAgIGNvbHVtbi5zZWxlY3RlZCA9IGxvY2FsU3RvcmFnZVZhbHVlLmNvbHVtbnM/Lltjb2x1bW4ubmFtZV0gPz8gY29sdW1uLnNlbGVjdGVkO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlVmFsdWUuY29sdW1ucyFbY29sdW1uLm5hbWVdID0gY29sdW1uLnNlbGVjdGVkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY29sdW1uLnNlbGVjdGVkKSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29sdW1ucy5wdXNoKGNvbHVtbi5uYW1lKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICBpZiAodGhpcy5jb2x1bW5TZWxlY3RBY3RpdmUpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5Q29sdW1ucy5wdXNoKHRoaXMuY29sdW1uU2VsZWN0Q29sdW1uTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFpbml0aWFsKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlTG9jYWxTdG9yYWdlKGxvY2FsU3RvcmFnZVZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZUZpbHRlckJhcigpIHtcclxuICAgIGNvbnN0IGxvY2Fsc3RvcmFnZU9iamVjdCA9IHRoaXMubG9jYWxTdG9yYWdlVmFsdWUgPz8ge307XHJcbiAgICBpZiAoIWxvY2Fsc3RvcmFnZU9iamVjdC5maWx0ZXIpIHtcclxuICAgICAgbG9jYWxzdG9yYWdlT2JqZWN0LmZpbHRlciA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmlsdGVyQmFyVmlzaWJsZSA9ICF0aGlzLmZpbHRlckJhclZpc2libGU7XHJcbiAgICBsb2NhbHN0b3JhZ2VPYmplY3QuZmlsdGVyLnZpc2libGUgPSB0aGlzLmZpbHRlckJhclZpc2libGU7XHJcbiAgICB0aGlzLnVwZGF0ZUxvY2FsU3RvcmFnZShsb2NhbHN0b3JhZ2VPYmplY3QpO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyc0NoYW5nZWQoZmlsdGVyczogRmlsdGVyQmFyQ2hhbmdlRXZlbnQpIHtcclxuICAgIHRoaXMuZmlsdGVycyA9IHsgLi4uZmlsdGVycywgaW5wdXQ6IHRoaXMuY29uZmlnLmZpbHRlciEuc2V0dGluZ3Muc2VhcmNoSW5wdXQgPz8gJycgfTtcclxuICAgIHRoaXMuZmlsdGVyQmFyQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXJzKTtcclxuICB9XHJcblxyXG4gIGNsZWFyRmlsdGVycygpIHtcclxuICAgIHRoaXMuY29uZmlnLmZpbHRlcj8uc2V0dGluZ3MuZmlsdGVycz8uZm9yRWFjaCgoZmlsdGVyKSA9PiB7XHJcbiAgICAgIGZpbHRlci5zZWxlY3RlZFZhbHVlcyA9IFtdO1xyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLmZpbHRlckJhci5yZW1vdmVBbGxGaWx0ZXJzKCk7XHJcbiAgfVxyXG5cclxuICBleHBvcnQoKSB7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UhLmNvbm5lY3QoKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLmV4cG9ydGVkLmVtaXQoZGF0YSk7XHJcbiAgICB9KVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5leHBvcnQ/LmZpbGVPcHRpb25zKSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0VG9GaWxlKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRWxlbWVudEhpZ2hsaWdodGVkKGl4OiBudW1iZXIsIGVsZW1lbnQ6IFQpIHtcclxuICAgIGxldCBpc0hvdmVyZWQgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmhvdmVyZWRSb3cgJiYgdGhpcy5ob3ZlcmVkUm93SW5kZXggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpc0hvdmVyZWQgPSB0aGlzLnRyYWNrQnlGbih0aGlzLmhvdmVyZWRSb3dJbmRleCwgdGhpcy5ob3ZlcmVkUm93KSA9PT0gdGhpcy50cmFja0J5Rm4oaXgsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzSG92ZXJlZCB8fFxyXG4gICAgICB0aGlzLmhpZ2hsaWdodGVkRWxlbWVudHM/LnNvbWUoKGhpZ2hsaWdodEVsZW1lbnQsIGhpZ2hsaWdodEVsZW1lbnRJeCkgPT4gdGhpcy50cmFja0J5Rm4oaGlnaGxpZ2h0RWxlbWVudEl4LCBoaWdobGlnaHRFbGVtZW50KSA9PT0gdGhpcy50cmFja0J5Rm4oaXgsIGVsZW1lbnQpKTtcclxuICB9XHJcblxyXG4gIGhpZ2hsaWdodEVycm9yRWxlbWVudChpeDogbnVtYmVyLCBlbGVtZW50OiBUKSB7XHJcbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRlZEVycm9yRWxlbWVudHM/LnNvbWUoKGhpZ2hsaWdodEVsZW1lbnQsIGhpZ2hsaWdodEVsZW1lbnRJeCkgPT4gdGhpcy50cmFja0J5Rm4oaGlnaGxpZ2h0RWxlbWVudEl4LCBoaWdobGlnaHRFbGVtZW50KSA9PT0gdGhpcy50cmFja0J5Rm4oaXgsIGVsZW1lbnQpKTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBNZXRob2RzIGZvciBiYXRjaCBzZWxlY3Rpb25cclxuICBpc0FsbFNlbGVjdGVkKCkge1xyXG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLm1hdFNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XHJcbiAgICBjb25zdCBudW1Sb3dzID0gdGhpcy5kYXRhU291cmNlPy5kYXRhLmxlbmd0aDtcclxuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFsbFJvd1NlbGVjdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xyXG4gICAgICBpZiAodGhpcy5kaXNhYmxlUHJlc2VsZWN0ZWRJdGVtcykge1xyXG4gICAgICAgIC8vIGRlc2VsZWN0IG9ubHkgdGhvc2UgaXRlbXMgd2hpY2ggd2VyZSBub3QgYWxyZWFkeSBwcmVzZWxlY3RlZFxyXG4gICAgICAgIHRoaXMubWF0U2VsZWN0aW9uLmRlc2VsZWN0KFxyXG4gICAgICAgICAgLi4udGhpcy5tYXRTZWxlY3Rpb24uc2VsZWN0ZWQuZmlsdGVyKGVsbSA9PiAhdGhpcy5wcmVzZWxlY3RlZEl0ZW1zLm1hcChlbG0gPT4gZWxtKS5pbmNsdWRlcyhlbG0pKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMubWF0U2VsZWN0aW9uLmNsZWFyKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5tYXRTZWxlY3Rpb24uc2VsZWN0KC4uLnRoaXMuZGF0YVNvdXJjZT8uZGF0YSA/PyBbXSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVFbGVtZW50U2VsZWN0aW9uKGVsZW1lbnQ6IFQpIHtcclxuICAgIHRoaXMubWF0U2VsZWN0aW9uLnRvZ2dsZShlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5jb25maWcuZGlzYWJsZU1vdXNlRHJhZ2dpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNEcmFnZ2luZyA9IHRydWU7XHJcbiAgICB0aGlzLnN0YXJ0WCA9IGV2ZW50LnBhZ2VYIC0gdGhpcy50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQ7XHJcbiAgICB0aGlzLnN0YXJ0WSA9IGV2ZW50LnBhZ2VZIC0gdGhpcy50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcclxuICAgIHRoaXMuc2Nyb2xsTGVmdCA9IHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xyXG4gICAgdGhpcy5zY3JvbGxUb3AgPSB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xyXG5cclxuICAgIC8vIGNhbmNlbGluZyBhbnkgcHJldmlvdXMgYW5pbWF0aW9uIGZyYW1lXHJcbiAgICBpZiAodGhpcy5zY3JvbGxNb3ZlbWVudCAhPT0gbnVsbCkge1xyXG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnNjcm9sbE1vdmVtZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5jb25maWcuZGlzYWJsZU1vdXNlRHJhZ2dpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hlY2tUYWJsZU92ZXJmbG93KCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmlzRHJhZ2dpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVzaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmb3Igc21vb3RoZXIgdXBkYXRlc1xyXG4gICAgaWYgKHRoaXMuc2Nyb2xsTW92ZW1lbnQgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5zY3JvbGxNb3ZlbWVudCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnRhYmxlT3ZlcmZsb3cpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHggPSBldmVudC5wYWdlWCAtIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgICAgIGNvbnN0IHkgPSBldmVudC5wYWdlWSAtIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcblxyXG4gICAgICAgIC8vIGNhbGN1bGF0aW5nIHRoZSBkaWZmZXJlbmNlcyBpbiBtb3ZlbWVudFxyXG4gICAgICAgIGNvbnN0IHdhbGtYID0gKHggLSB0aGlzLnN0YXJ0WCkgKiAyO1xyXG4gICAgICAgIGNvbnN0IHdhbGtZID0gKHkgLSB0aGlzLnN0YXJ0WSkgKiAyO1xyXG5cclxuICAgICAgICAvLyB1cGRhdGluZyBzY3JvbGwgcG9zaXRpb25zXHJcbiAgICAgICAgdGhpcy50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0aGlzLnNjcm9sbExlZnQgLSB3YWxrWDtcclxuICAgICAgICB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gdGhpcy5zY3JvbGxUb3AgLSB3YWxrWTtcclxuXHJcbiAgICAgICAgdGhpcy5zY3JvbGxNb3ZlbWVudCA9IG51bGw7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Nb3VzZVVwKCkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLmRpc2FibGVNb3VzZURyYWdnaW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAvLyBjYW5jZWxpbmcgYW55IHBlbmRpbmcgYW5pbWF0aW9uXHJcbiAgICBpZiAodGhpcy5zY3JvbGxNb3ZlbWVudCAhPT0gbnVsbCkge1xyXG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnNjcm9sbE1vdmVtZW50KTtcclxuICAgICAgdGhpcy5zY3JvbGxNb3ZlbWVudCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwYWdpbmF0b3JDaGFuZ2UoY2hhbmdlOiBQYWdlRXZlbnQpIHtcclxuICAgIHRoaXMucGFnaW5hdG9yVXBkYXRlLmVtaXQoY2hhbmdlKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIHJvd0hvdmVyZWQoaW5kZXg6IG51bWJlciwgcm93OiBUKSB7XHJcbiAgICB0aGlzLmhvdmVyZWRSb3cgPSByb3c7XHJcbiAgICB0aGlzLmhvdmVyZWRSb3dJbmRleCA9IGluZGV4O1xyXG4gIH1cclxuXHJcbiAgcm93SG92ZXJMZWF2ZSgpIHtcclxuICAgIHRoaXMuaG92ZXJlZFJvdyA9IG51bGw7XHJcbiAgICB0aGlzLmhvdmVyZWRSb3dJbmRleCA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGRlZmF1bHRUcmFja0J5KGl4OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGl4O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1RhYmxlT3ZlcmZsb3coKTogdm9pZCB7XHJcbiAgICAvLyB3aGVuIGRhdGEgaXMgYXZhaWxhYmxlIHdlIHNob3VsZCBjaGVjayBvbmNlIGZvciB0YWJsZSBvdmVyZmxvd1xyXG4gICAgLy8gd2hlbiB0aGVyZSB3YXNudCBvdmVyZmxvdywgYnV0IHdpZHRoIG9mIHRoZSB0YWJsZSBiZWNhbWUgYmlnZ2VyLCB0aGVuIHdlIGFyZSByZXNldGluZyB0YWJsZU92ZXJmbG93IHZhcmlhYmxlXHJcbiAgICAvLyBzYW1lIGZvciB3aGVuIHRoZXJlIHdhcyBvdmVyZmxvdywgYnV0IHNpemUgb2YgdGhlIHRhYmxlIGlzIHNhbWUgYXMgY29udGFpbmVyLCBzbyBvdmVyZmxvdyBpcyBnb25lIGFuZCB3ZSByZXNldGluZyB0YWJsZU92ZXJmbG93IHZhcmlhYmxlIGFnYWluXHJcbiAgICBpZiAoKHRoaXMuZGF0YVNvdXJjZT8uZGF0YS5sZW5ndGggJiYgdGhpcy50YWJsZU92ZXJmbG93ID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICghdGhpcy50YWJsZU92ZXJmbG93ICYmIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCA8IHRoaXMudGFibGVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgpIHx8XHJcbiAgICAgICh0aGlzLnRhYmxlT3ZlcmZsb3cgJiYgdGhpcy50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoID09PSB0aGlzLnRhYmxlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoKSkge1xyXG5cclxuICAgICAgaWYgKHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCA8IHRoaXMudGFibGVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgpIHtcclxuICAgICAgICB0aGlzLnRhYmxlT3ZlcmZsb3cgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudGFibGVPdmVyZmxvdyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4cG9ydFRvRmlsZSgpIHtcclxuICAgIGlmICghdGhpcy5jb25maWcuZXhwb3J0Py5maWxlT3B0aW9ucz8uc2F2ZVRvRmlsZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGZpbGVTdHJpbmcgPSBcIlwiO1xyXG4gICAgbGV0IGV4dGVuc2lvbiE6IEV4cG9ydEZvcm1hdDtcclxuICAgIHN3aXRjaCAodGhpcy5jb25maWcuZXhwb3J0LmZpbGVPcHRpb25zLmZvcm1hdCkge1xyXG4gICAgICBjYXNlIEV4cG9ydEZvcm1hdC5DU1Y6XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgZXh0ZW5zaW9uID0gRXhwb3J0Rm9ybWF0LkNTVjtcclxuICAgICAgICBmaWxlU3RyaW5nID0gSHRtbEVsZW1lbnRQYXJzZUhlbHBlci50YWJsZUFzQ3N2KHRoaXMudGFibGVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuaWdub3JlQXR0cmlidXRlTmFtZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0cmFuc2xhdGVkRmlsZU5hbWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLmNvbmZpZy5leHBvcnQuZmlsZU9wdGlvbnMuZmlsZU5hbWUpO1xyXG4gICAgU2F2ZUZpbGVIZWxwZXIuc2F2ZUZpbGUoZmlsZVN0cmluZywgYCR7dHJhbnNsYXRlZEZpbGVOYW1lfS4ke2V4dGVuc2lvbn1gKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlTG9jYWxTdG9yYWdlKG5ld1ZhbHVlOiBTZWxlY3RlZENvbHVtbkxvY2FsU3RvcmFnZUNvbmZpZykge1xyXG4gICAgdGhpcy5sb2NhbFN0b3JhZ2VWYWx1ZSA9IG5ld1ZhbHVlO1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLmxvY2FsU3RvcmFnZUtleSAmJiBuZXdWYWx1ZSkge1xyXG4gICAgICB0aGlzLmRvbVNlcnZpY2UubG9jYWxTdG9yYWdlPy5zZXRJdGVtKHRoaXMuY29uZmlnLmxvY2FsU3RvcmFnZUtleSwgSlNPTi5zdHJpbmdpZnkobmV3VmFsdWUpKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSByZWFkRnJvbUxvY2FsU3RvcmFnZSgpIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5sb2NhbFN0b3JhZ2VLZXkpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBsb2NhbFN0b3JhZ2VTdHJpbmcgPSB0aGlzLmRvbVNlcnZpY2UubG9jYWxTdG9yYWdlPy5nZXRJdGVtKHRoaXMuY29uZmlnLmxvY2FsU3RvcmFnZUtleSk7XHJcbiAgICAgICAgaWYgKGxvY2FsU3RvcmFnZVN0cmluZykge1xyXG4gICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VWYWx1ZSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlU3RyaW5nKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5XHJcbiAgICAgIGNhdGNoIHtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDb2x1bW5TZWxlY3RQcm9wZXJ0aWVzKCkge1xyXG4gICAgdGhpcy5jb2x1bW5TZWxlY3RBY3RpdmUgPSB0aGlzLmNvbmZpZy5jb2x1bW5TZWxlY3Q/LmVuYWJsZWQgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnVwZGF0ZURpc3BsYXlDb2x1bW5zKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRGaWx0ZXJWaXNpYmlsaXR5KCkge1xyXG4gICAgdGhpcy5maWx0ZXJCYXJWaXNpYmxlID0gdGhpcy5sb2NhbFN0b3JhZ2VWYWx1ZT8uZmlsdGVyPy52aXNpYmxlID8/IHRoaXMuY29uZmlnPy5maWx0ZXI/LnZpc2libGUgPz8gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldE5vRGF0YVJvd1Byb3BlcnRpZXMoKSB7XHJcbiAgICBpZiAodGhpcy5jb25maWcubm9EYXRhUm93KSB7XHJcbiAgICAgIHRoaXMubm9EYXRhUm93QWN0aXZlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5ub0RhdGFSb3dDb25maWcgPSB0aGlzLmNvbmZpZy5ub0RhdGFSb3c7XHJcbiAgICAgIHRoaXMubm9EYXRhUm93Q29uZmlnLmljb24gPSB0aGlzLmNvbmZpZy5ub0RhdGFSb3c/Lmljb24gPz8gdGhpcy5ub0RhdGFSb3dJY29uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRFeHBvcnRQcm9wZXJ0aWVzKCkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLmV4cG9ydD8uZW5hYmxlZCkge1xyXG4gICAgICB0aGlzLmV4cG9ydEFjdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZURhdGFTb3VyY2UoKSB7XHJcbiAgICBpZiAoIXRoaXMuY29uZmlnLmRhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy4jZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8VD4odGhpcy5kYXRhKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVEYXRhU291cmNlRGF0YSgpIHtcclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmRhdGEoKTtcclxuICAgIGlmICghZGF0YSB8fCAhdGhpcy4jZGF0YVNvdXJjZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2hvdWxkSW5pdGlhbGl6ZVBhZ2luYXRvciA9ICF0aGlzLiNkYXRhU291cmNlLmRhdGEubGVuZ3RoO1xyXG4gICAgdGhpcy4jZGF0YVNvdXJjZS5kYXRhID0gZGF0YTtcclxuXHJcbiAgICAvLyBpZiBkYXRhIGlzIGFzeW5jIGxvYWRlZCwgcGFnZSBuZWVkcyB0byBiZSBzZXQgb24gZmlyc3QgbG9hZC5cclxuICAgIGlmIChzaG91bGRJbml0aWFsaXplUGFnaW5hdG9yKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlUGFnaW5hdG9yKHRoaXMuY29uZmlnLnBhZ2luYXRvcj8uaW5pdGlhbFBhZ2UgPz8gMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVBhZ2luYXRvcihwYWdlSW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gcGFnZUluZGV4O1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IFtuZ0NsYXNzLmx0LW1kXT1cIidtb2JpbGUnXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEdhcD1cIjAuNzVyZW1cIj5cclxuXHQ8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXQubHQtbWQ9XCJjb2x1bW5cIiBmeExheW91dEdhcC5sdC1tZD1cIjAuNzVyZW1cIj5cclxuXHRcdDxkaXYgZnhGbGV4IGZ4TGF5b3V0Lmx0LW1kPVwiY29sdW1uXCIgZnhMYXlvdXRHYXA9XCIwLjc1cmVtXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGZ4TGF5b3V0QWxpZ24ubHQtbWQ9XCJzdGFydCBzdGFydFwiIGNsYXNzPVwiYWN0aW9uLXJvd1wiPlxyXG5cdFx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJbdGFibGVUaXRsZUJsb2NrXVwiPjwvbmctY29udGVudD5cclxuXHRcdFx0PGJ1dHRvbiBjbGFzcz1cImV4cG9ydC1kYXRhXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgKm5nSWY9XCJleHBvcnRBY3RpdmVcIiAoY2xpY2spPVwiZXhwb3J0KClcIj5cclxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+Y2xvdWRfZG93bmxvYWQ8L3NwYW4+XHJcblx0XHRcdFx0PHNwYW4+e3sgXCJNVUxUSV9GVU5DVElPTkFMX1RBQkxFLkVYUE9SVFwiIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG5cdFx0XHQ8L2J1dHRvbj5cclxuXHJcblx0XHRcdDxkaXYgKm5nSWY9XCJmaWx0ZXJBY3RpdmUgJiYgc2hvd0ZpbHRlclRvZ2dsZVwiIGZ4RmxleCBmeExheW91dEdhcD1cIjAuNXJlbVwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cclxuXHRcdFx0XHQ8YnV0dG9uIFtjbGFzcy5maWx0ZXItYWN0aXZlXT1cImZpbHRlckJhclZpc2libGVcIiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJhY2NlbnRcIiAoY2xpY2spPVwidG9nZ2xlRmlsdGVyQmFyKClcIj5cclxuXHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5maWx0ZXJfbGlzdDwvc3Bhbj5cclxuXHRcdFx0XHRcdDxzcGFuPnt7IFwiTVVMVElfRlVOQ1RJT05BTF9UQUJMRS5GSUxURVJfVE9HR0xFXCIgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcblx0XHRcdFx0PC9idXR0b24+XHJcblxyXG5cdFx0XHRcdDxkaXYgKm5nSWY9XCJzaG93RmlsdGVyUmVzZXRcIiBjbGFzcz1cImNsZWFyLWZpbHRlcnMtd3JhcHBlclwiPlxyXG5cdFx0XHRcdFx0PGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImNsZWFyRmlsdGVycygpXCI+XHJcblx0XHRcdFx0XHRcdDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcblx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHJcblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd1NlYXJjaFwiIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGNsYXNzPVwid2lsZC1zZWFyY2gtd3JhcHBlclwiPlxyXG5cdFx0XHQ8bWF0LWljb24gY2xhc3M9XCJzZWFyY2gtaWNvblwiIFttYXRUb29sdGlwXT1cImhpZGVTZWFyY2hUb29sdGlwID8gJycgOiAoc2VhcmNoVG9vbHRpcCB8IHRyYW5zbGF0ZSlcIj5zZWFyY2g8L21hdC1pY29uPlxyXG5cdFx0XHQ8aW5wdXQgW3ZhbHVlXT1cImNvbmZpZy5maWx0ZXI/LnNldHRpbmdzPy5zZWFyY2hWYWx1ZSA/PyAnJ1wiICN3aWxkU2VhcmNoIHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFRpdGxlIHwgdHJhbnNsYXRlXCIgKGtleXVwKT1cInNlYXJjaCgkZXZlbnQpXCIgLz5cclxuXHRcdFx0PGJ1dHRvbiAqbmdJZj1cInNob3dTZWFyY2hDbGVhckJ1dHRvbiAmJiB3aWxkU2VhcmNoLnZhbHVlXCIgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwid2lsZC1zZWFyY2gtY2xlYXItYnRuXCIgKGNsaWNrKT1cIndpbGRTZWFyY2gudmFsdWUgPSAnJzsgc2VhcmNoKHsgdGFyZ2V0OiB7IHZhbHVlOiAnJyB9IH0pXCI+XHJcblx0XHRcdFx0PG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuXHRcdFx0PC9idXR0b24+XHJcblx0XHQ8L2Rpdj5cclxuXHJcblx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJbYWRkaXRpb25hbEFjdGlvbnNdXCI+PC9uZy1jb250ZW50PlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8dGxkLWZpbHRlci1iYXJcclxuXHRcdCpuZ0lmPVwiY29uZmlnLmZpbHRlciAmJiBjb25maWcuZmlsdGVyLmVuYWJsZWRcIlxyXG5cdFx0I2ZpbHRlckJhclxyXG5cdFx0W2ZpbHRlclJvd1Zpc2libGVdPVwiZmlsdGVyQmFyVmlzaWJsZVwiXHJcblx0XHRbc2V0dGluZ3NdPVwiY29uZmlnLmZpbHRlci5zZXR0aW5nc1wiXHJcblx0XHQoZmlsdGVyQmFyQ2hhbmdlKT1cImZpbHRlcnNDaGFuZ2VkKCRldmVudClcIlxyXG5cdD5cclxuXHQ8L3RsZC1maWx0ZXItYmFyPlxyXG5cclxuXHQ8bmctY29udGVudCBzZWxlY3Q9XCJbYmF0Y2hBY3Rpb25zXVwiPjwvbmctY29udGVudD5cclxuXHJcblx0QGlmKGNvbmZpZy5wYWdpbmF0b3I/LmVuYWJsZWQpeyBAbGV0IHBhZ2luYXRvckNvbmZpZyA9IGNvbmZpZy5wYWdpbmF0b3IhO1xyXG5cclxuXHQ8bWF0LXBhZ2luYXRvclxyXG5cdFx0W2hpZGVQYWdlU2l6ZV09XCIhcGFnaW5hdG9yQ29uZmlnLnNob3dQYWdlU2l6ZVwiXHJcblx0XHRbc2hvd0ZpcnN0TGFzdEJ1dHRvbnNdPVwicGFnaW5hdG9yQ29uZmlnLnNob3dGaXJzdExhc3RCdXR0b25zXCJcclxuXHRcdFthdHRyLmFyaWEtbGFiZWxdPVwiJ01VTFRJX0ZVTkNUSU9OQUxfVEFCTEUuUEFHSU5BVE9SX0xBQkVMJyB8IHRyYW5zbGF0ZVwiXHJcblx0XHRbcGFnZVNpemVPcHRpb25zXT1cInBhZ2luYXRvckNvbmZpZy5wYWdlU2l6ZU9wdGlvbnMgPz8gWzEwXVwiXHJcblx0XHQocGFnZSk9XCJwYWdpbmF0b3JDaGFuZ2UoJGV2ZW50KVwiXHJcblx0PlxyXG5cdDwvbWF0LXBhZ2luYXRvcj5cclxuXHR9XHJcblx0PGRpdlxyXG5cdFx0I3RhYmxlQ29udGFpbmVyXHJcblx0XHRjbGFzcz1cInRhYmxlLW92ZXJmbG93XCJcclxuXHRcdFtjbGFzcy50YWJsZS1zdGlja3ktaGVhZGVyXT1cImNvbmZpZz8uc3RpY2t5SGVhZGVyXCJcclxuXHRcdFtjbGFzcy50YWJsZS1kcmFnYWJsZV09XCJ0YWJsZU92ZXJmbG93ICYmICFjb25maWc/LmRpc2FibGVNb3VzZURyYWdnaW5nXCJcclxuXHRcdChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50KVwiXHJcblx0XHQobW91c2V1cCk9XCJvbk1vdXNlVXAoKVwiXHJcblx0XHQobW91c2VsZWF2ZSk9XCJvbk1vdXNlVXAoKVwiXHJcblx0XHQobW91c2Vtb3ZlKT1cIm9uTW91c2VNb3ZlKCRldmVudClcIlxyXG5cdD5cclxuXHRcdDx0YWJsZSAjdGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2UhXCIgW3RyYWNrQnldPVwidHJhY2tCeUZuXCI+XHJcblx0XHRcdDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuXHRcdFx0PG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImJhdGNoQ29sdW1uTmFtZVwiPlxyXG5cdFx0XHRcdDx0aCBjbGFzcz1cInJvdy1zZWxlY3RcIiBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgZGlzYWJsZS1leHBvcnQ+XHJcblx0XHRcdFx0XHQ8bWF0LWNoZWNrYm94XHJcblx0XHRcdFx0XHRcdFttYXRUb29sdGlwXT1cIidNVUxUSV9GVU5DVElPTkFMX1RBQkxFLlNFTEVDVF9BTEwnIHwgdHJhbnNsYXRlXCJcclxuXHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImNvbmZpZy5iYXRjaENvbmZpZyEuY2hlY2tCb3hlc0Rpc2FibGVkXCJcclxuXHRcdFx0XHRcdFx0KGNoYW5nZSk9XCJ0b2dnbGVBbGxSb3dTZWxlY3Rpb24oKVwiXHJcblx0XHRcdFx0XHRcdFtjaGVja2VkXT1cIm1hdFNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIGlzQWxsU2VsZWN0ZWQoKVwiXHJcblx0XHRcdFx0XHRcdFtpbmRldGVybWluYXRlXT1cIm1hdFNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICFpc0FsbFNlbGVjdGVkKClcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0PC9tYXQtY2hlY2tib3g+XHJcblx0XHRcdFx0PC90aD5cclxuXHRcdFx0XHQ8dGQgY2xhc3M9XCJyb3ctc2VsZWN0XCIgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIGRpc2FibGUtZXhwb3J0PlxyXG5cdFx0XHRcdFx0PG1hdC1jaGVja2JveFxyXG5cdFx0XHRcdFx0XHRbbWF0VG9vbHRpcF09XCInTVVMVElfRlVOQ1RJT05BTF9UQUJMRS5TRUxFQ1QnIHwgdHJhbnNsYXRlXCJcclxuXHRcdFx0XHRcdFx0Km5nSWY9XCJpc1Jvd0NoZWNrYm94QWx3YXlzVmlzaWJsZSB8fCBob3ZlcmVkUm93ID09PSBlbGVtZW50IHx8IG1hdFNlbGVjdGlvbi5pc1NlbGVjdGVkKGVsZW1lbnQpXCJcclxuXHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImNvbmZpZy5iYXRjaENvbmZpZyEuY2hlY2tCb3hlc0Rpc2FibGVkIHx8IChwcmVzZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGVsZW1lbnQpICYmIGRpc2FibGVQcmVzZWxlY3RlZEl0ZW1zKVwiXHJcblx0XHRcdFx0XHRcdChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG5cdFx0XHRcdFx0XHQoY2hhbmdlKT1cInRvZ2dsZUVsZW1lbnRTZWxlY3Rpb24oZWxlbWVudClcIlxyXG5cdFx0XHRcdFx0XHRbY2hlY2tlZF09XCJtYXRTZWxlY3Rpb24uaXNTZWxlY3RlZChlbGVtZW50KVwiXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHQ8L21hdC1jaGVja2JveD5cclxuXHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0PHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5Q29sdW1uczsgc3RpY2t5OiBjb25maWc/LnN0aWNreUhlYWRlciA/PyBmYWxzZVwiPjwvdHI+XHJcblx0XHRcdDx0clxyXG5cdFx0XHRcdG1hdC1yb3dcclxuXHRcdFx0XHQqbWF0Um93RGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXg7IGNvbHVtbnM6IGRpc3BsYXlDb2x1bW5zXCJcclxuXHRcdFx0XHQoY2xpY2spPVwiY29uZmlnPy5yb3dDbGlja0NhbGxiYWNrICYmICghY29uZmlnLmRpc2FibGVSb3dDbGljayB8fCAhY29uZmlnPy5kaXNhYmxlUm93Q2xpY2socm93KSkgPyBjb25maWc/LnJvd0NsaWNrQ2FsbGJhY2socm93KSA6IG51bGxcIlxyXG5cdFx0XHRcdChtb3VzZW92ZXIpPVwicm93SG92ZXJlZChpbmRleCwgcm93KVwiXHJcblx0XHRcdFx0KG1vdXNlbGVhdmUpPVwicm93SG92ZXJMZWF2ZSgpXCJcclxuXHRcdFx0XHRbY2xhc3Mucm93LWNsaWNrYWJsZV09XCJjb25maWc/LnJvd0NsaWNrQ2FsbGJhY2sgJiYgKCFjb25maWcuZGlzYWJsZVJvd0NsaWNrIHx8ICFjb25maWc/LmRpc2FibGVSb3dDbGljayhyb3cpKVwiXHJcblx0XHRcdFx0W2NsYXNzLmhpZ2hsaWdodC1lcnJvcl09XCJoaWdobGlnaHRFcnJvckVsZW1lbnQoaW5kZXgsIHJvdylcIlxyXG5cdFx0XHRcdFtjbGFzcy5oaWdobGlnaHRdPVwiaXNFbGVtZW50SGlnaGxpZ2h0ZWQoaW5kZXgsIHJvdylcIlxyXG5cdFx0XHQ+PC90cj5cclxuXHJcblx0XHRcdDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW5TZWxlY3RDb2x1bW5OYW1lXCI+XHJcblx0XHRcdFx0PHRoIGNsYXNzPVwicm93LXNlbGVjdFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBkaXNhYmxlLWV4cG9ydD5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2x1bW4tc2VsZWN0b3Itd3JhcHBlclwiPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIGNsYXNzPVwiY29sdW1uLXNlbGVjdG9yXCIgbWF0LWljb24tYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImNvbHVtbk1lbnVcIj5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+bW9yZV92ZXJ0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvdGg+XHJcblx0XHRcdFx0PHRkIGNsYXNzPVwicm93LXNlbGVjdFwiIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBkaXNhYmxlLWV4cG9ydD48L3RkPlxyXG5cdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vRGF0YVJvd0FjdGl2ZVwiPlxyXG5cdFx0XHRcdDx0ciAqbWF0Tm9EYXRhUm93PlxyXG5cdFx0XHRcdFx0PCEtLSBhZGQgcmFuZG9tIG51bWJlciB0byBtYWtlIHN1cmUgaXQgdGFrZXMgZnVsbCB3aWR0aCAtLT5cclxuXHRcdFx0XHRcdDx0ZCBjb2xzcGFuPVwiOTlcIj5cclxuXHRcdFx0XHRcdFx0PGxpYi1zdGF0dXMtZGlzcGxheSBbY29uZmlnXT1cIm5vRGF0YVJvd0NvbmZpZ1wiPjwvbGliLXN0YXR1cy1kaXNwbGF5PlxyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHQ8L3RyPlxyXG5cdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdDwvdGFibGU+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG1hdC1tZW51ICNjb2x1bW5NZW51PVwibWF0TWVudVwiPlxyXG5cdDxkaXYgY2xhc3M9XCJjb2x1bW4tc2VsZWN0LW1lbnVcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcblx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29uZmlndXJhYmxlQ29sdW1uc1wiPlxyXG5cdFx0XHQ8bWF0LWNoZWNrYm94IFsobmdNb2RlbCldPVwiY29sdW1uLnNlbGVjdGVkXCI+XHJcblx0XHRcdFx0e3sgY29sdW1uLmRpc3BsYXlOYW1lIHwgdHJhbnNsYXRlIH19XHJcblx0XHRcdDwvbWF0LWNoZWNrYm94PlxyXG5cdFx0PC9kaXY+XHJcblxyXG5cdFx0PGRpdiBjbGFzcz1cImNvbHVtbi1zZWxlY3Qtc2F2ZVwiPlxyXG5cdFx0XHQ8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIChjbGljayk9XCJ1cGRhdGVEaXNwbGF5Q29sdW1ucygpXCI+XHJcblx0XHRcdFx0e3sgXCJNVUxUSV9GVU5DVElPTkFMX1RBQkxFLkNPTFVNTl9TRUxFQ1RfU0FWRVwiIHwgdHJhbnNsYXRlIH19XHJcblx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvbWF0LW1lbnU+XHJcbiJdfQ==