ax-common-ui-lib 1.0.1-beta.34.9-testing03 → 1.0.1-beta.34.9-testing04
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/enlighten-lib/report/tabular-report/tabular/column-group-view/column-group-view.component.mjs +405 -391
- package/fesm2015/ax-common-ui-lib.mjs +404 -390
- package/fesm2015/ax-common-ui-lib.mjs.map +1 -1
- package/fesm2020/ax-common-ui-lib.mjs +404 -390
- package/fesm2020/ax-common-ui-lib.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -24,12 +24,12 @@ import * as i9 from "@angular/forms";
|
|
|
24
24
|
import * as i10 from "../../../../../ghost-loader/ghost-loader.component";
|
|
25
25
|
import * as i11 from "../../axo-percentage.pipe";
|
|
26
26
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
27
|
-
i0.ɵɵelement(0, "td",
|
|
27
|
+
i0.ɵɵelement(0, "td", 22);
|
|
28
28
|
} if (rf & 2) {
|
|
29
29
|
const ctx_r21 = i0.ɵɵnextContext(6);
|
|
30
30
|
i0.ɵɵstyleProp("border", ctx_r21.tabularReport.tableStyle.border.width + "px" + " " + ctx_r21.tabularReport.tableStyle.border.borderStyle + " " + ctx_r21.tabularReport.tableStyle.border.color);
|
|
31
31
|
} }
|
|
32
|
-
function
|
|
32
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
33
33
|
i0.ɵɵelementContainerStart(0);
|
|
34
34
|
i0.ɵɵelementStart(1, "span");
|
|
35
35
|
i0.ɵɵtext(2);
|
|
@@ -43,7 +43,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
43
43
|
i0.ɵɵadvance(2);
|
|
44
44
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(3, 1, ctx_r40.moment(data_r24 + "Z"), ctx_r40.tabularReport.matrix.attributes[ctx_r40.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
|
|
45
45
|
} }
|
|
46
|
-
function
|
|
46
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
47
47
|
i0.ɵɵelementContainerStart(0);
|
|
48
48
|
i0.ɵɵelementStart(1, "span");
|
|
49
49
|
i0.ɵɵtext(2);
|
|
@@ -54,7 +54,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
54
54
|
i0.ɵɵadvance(2);
|
|
55
55
|
i0.ɵɵtextInterpolate(data_r24);
|
|
56
56
|
} }
|
|
57
|
-
function
|
|
57
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_3_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
58
58
|
i0.ɵɵelementStart(0, "span");
|
|
59
59
|
i0.ɵɵtext(1);
|
|
60
60
|
i0.ɵɵpipe(2, "date");
|
|
@@ -66,16 +66,16 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
66
66
|
i0.ɵɵadvance(1);
|
|
67
67
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, ctx_r48.moment(data_r24, "hh:mm:ss"), ctx_r48.tabularReport.matrix.attributes[ctx_r48.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
|
|
68
68
|
} }
|
|
69
|
-
function
|
|
69
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
70
70
|
i0.ɵɵelementContainerStart(0);
|
|
71
|
-
i0.ɵɵtemplate(1,
|
|
71
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_3_span_1_Template, 3, 4, "span", 6);
|
|
72
72
|
i0.ɵɵelementContainerEnd();
|
|
73
73
|
} if (rf & 2) {
|
|
74
74
|
const data_r24 = i0.ɵɵnextContext(4).$implicit;
|
|
75
75
|
i0.ɵɵadvance(1);
|
|
76
76
|
i0.ɵɵproperty("ngIf", data_r24);
|
|
77
77
|
} }
|
|
78
|
-
function
|
|
78
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_4_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
79
79
|
i0.ɵɵelementStart(0, "span");
|
|
80
80
|
i0.ɵɵtext(1);
|
|
81
81
|
i0.ɵɵpipe(2, "date");
|
|
@@ -87,9 +87,9 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
87
87
|
i0.ɵɵadvance(1);
|
|
88
88
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, data_r24, ctx_r52.tabularReport.matrix.attributes[ctx_r52.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
|
|
89
89
|
} }
|
|
90
|
-
function
|
|
90
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
91
91
|
i0.ɵɵelementContainerStart(0);
|
|
92
|
-
i0.ɵɵtemplate(1,
|
|
92
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_4_span_1_Template, 3, 4, "span", 6);
|
|
93
93
|
i0.ɵɵelementContainerEnd();
|
|
94
94
|
} if (rf & 2) {
|
|
95
95
|
const m_r18 = i0.ɵɵnextContext(6).index;
|
|
@@ -97,7 +97,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
97
97
|
i0.ɵɵadvance(1);
|
|
98
98
|
i0.ɵɵproperty("ngIf", ctx_r43.tabularReport.matrix.attributes[ctx_r43.tabularReport.rowGrouping.length + m_r18].widgetSubType === "date");
|
|
99
99
|
} }
|
|
100
|
-
function
|
|
100
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
101
101
|
i0.ɵɵelementContainerStart(0);
|
|
102
102
|
i0.ɵɵtext(1);
|
|
103
103
|
i0.ɵɵelementContainerEnd();
|
|
@@ -106,13 +106,13 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
106
106
|
i0.ɵɵadvance(1);
|
|
107
107
|
i0.ɵɵtextInterpolate1(" ", data_r24, " ");
|
|
108
108
|
} }
|
|
109
|
-
function
|
|
109
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
110
110
|
i0.ɵɵelementStart(0, "span");
|
|
111
|
-
i0.ɵɵtemplate(1,
|
|
112
|
-
i0.ɵɵtemplate(2,
|
|
113
|
-
i0.ɵɵtemplate(3,
|
|
114
|
-
i0.ɵɵtemplate(4,
|
|
115
|
-
i0.ɵɵtemplate(5,
|
|
111
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_1_Template, 4, 4, "ng-container", 6);
|
|
112
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_2_Template, 3, 1, "ng-container", 6);
|
|
113
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_3_Template, 2, 1, "ng-container", 6);
|
|
114
|
+
i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_4_Template, 2, 1, "ng-container", 6);
|
|
115
|
+
i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_ng_container_5_Template, 2, 1, "ng-container", 6);
|
|
116
116
|
i0.ɵɵelementEnd();
|
|
117
117
|
} if (rf & 2) {
|
|
118
118
|
const m_r18 = i0.ɵɵnextContext(5).index;
|
|
@@ -128,7 +128,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
128
128
|
i0.ɵɵadvance(1);
|
|
129
129
|
i0.ɵɵproperty("ngIf", ctx_r31.tabularReport.matrix.attributes[ctx_r31.tabularReport.rowGrouping.length + m_r18].widgetSubType === "date_range");
|
|
130
130
|
} }
|
|
131
|
-
function
|
|
131
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
132
132
|
i0.ɵɵelementStart(0, "span");
|
|
133
133
|
i0.ɵɵtext(1);
|
|
134
134
|
i0.ɵɵelementEnd();
|
|
@@ -137,7 +137,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
137
137
|
i0.ɵɵadvance(1);
|
|
138
138
|
i0.ɵɵtextInterpolate1(" ", data_r24, " ");
|
|
139
139
|
} }
|
|
140
|
-
function
|
|
140
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
141
141
|
i0.ɵɵelementStart(0, "span");
|
|
142
142
|
i0.ɵɵtext(1);
|
|
143
143
|
i0.ɵɵpipe(2, "currency");
|
|
@@ -149,7 +149,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
149
149
|
i0.ɵɵadvance(1);
|
|
150
150
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, data_r24, ctx_r61.tabularReport.matrix.attributes[ctx_r61.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency, "symbol"));
|
|
151
151
|
} }
|
|
152
|
-
function
|
|
152
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
153
153
|
i0.ɵɵelementStart(0, "span");
|
|
154
154
|
i0.ɵɵtext(1);
|
|
155
155
|
i0.ɵɵpipe(2, "axoPercentage");
|
|
@@ -161,7 +161,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
161
161
|
i0.ɵɵadvance(1);
|
|
162
162
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, data_r24, ctx_r62.tabularReport.matrix.attributes[ctx_r62.tabularReport.rowGrouping.length + m_r18].series, "column"));
|
|
163
163
|
} }
|
|
164
|
-
function
|
|
164
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
165
165
|
i0.ɵɵelementStart(0, "span");
|
|
166
166
|
i0.ɵɵtext(1);
|
|
167
167
|
i0.ɵɵelementEnd();
|
|
@@ -170,11 +170,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
170
170
|
i0.ɵɵadvance(1);
|
|
171
171
|
i0.ɵɵtextInterpolate(data_r24);
|
|
172
172
|
} }
|
|
173
|
-
function
|
|
173
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
174
174
|
i0.ɵɵelementStart(0, "span");
|
|
175
|
-
i0.ɵɵtemplate(1,
|
|
176
|
-
i0.ɵɵtemplate(2,
|
|
177
|
-
i0.ɵɵtemplate(3,
|
|
175
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_2_span_1_Template, 3, 5, "span", 6);
|
|
176
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_2_span_2_Template, 3, 5, "span", 6);
|
|
177
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_2_span_3_Template, 2, 1, "span", 6);
|
|
178
178
|
i0.ɵɵelementEnd();
|
|
179
179
|
} if (rf & 2) {
|
|
180
180
|
const m_r18 = i0.ɵɵnextContext(6).index;
|
|
@@ -186,10 +186,10 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
186
186
|
i0.ɵɵadvance(1);
|
|
187
187
|
i0.ɵɵproperty("ngIf", !ctx_r59.tabularReport.matrix.attributes[ctx_r59.tabularReport.rowGrouping.length + m_r18].valueFormatting.percentage && !ctx_r59.tabularReport.matrix.attributes[ctx_r59.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency);
|
|
188
188
|
} }
|
|
189
|
-
function
|
|
189
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
190
190
|
i0.ɵɵelementStart(0, "span");
|
|
191
|
-
i0.ɵɵtemplate(1,
|
|
192
|
-
i0.ɵɵtemplate(2,
|
|
191
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_1_Template, 2, 1, "span", 6);
|
|
192
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_span_2_Template, 4, 3, "span", 6);
|
|
193
193
|
i0.ɵɵelementEnd();
|
|
194
194
|
} if (rf & 2) {
|
|
195
195
|
const m_r18 = i0.ɵɵnextContext(5).index;
|
|
@@ -199,11 +199,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
199
199
|
i0.ɵɵadvance(1);
|
|
200
200
|
i0.ɵɵproperty("ngIf", ctx_r32.tabularReport.matrix.attributes[ctx_r32.tabularReport.rowGrouping.length + m_r18].widgetSubType === "numeric");
|
|
201
201
|
} }
|
|
202
|
-
function
|
|
202
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
203
203
|
const _r73 = i0.ɵɵgetCurrentView();
|
|
204
204
|
i0.ɵɵelementStart(0, "span");
|
|
205
|
-
i0.ɵɵelementStart(1, "span",
|
|
206
|
-
i0.ɵɵlistener("click", function
|
|
205
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
206
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_4_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r73); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r71 = i0.ɵɵnextContext(6); return ctx_r71.redirect($event, data_r24); });
|
|
207
207
|
i0.ɵɵtext(2);
|
|
208
208
|
i0.ɵɵelementEnd();
|
|
209
209
|
i0.ɵɵelementEnd();
|
|
@@ -215,11 +215,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
215
215
|
i0.ɵɵadvance(1);
|
|
216
216
|
i0.ɵɵtextInterpolate(data_r24);
|
|
217
217
|
} }
|
|
218
|
-
function
|
|
218
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_5_Template(rf, ctx) { if (rf & 1) {
|
|
219
219
|
const _r76 = i0.ɵɵgetCurrentView();
|
|
220
220
|
i0.ɵɵelementStart(0, "span");
|
|
221
|
-
i0.ɵɵelementStart(1, "span",
|
|
222
|
-
i0.ɵɵlistener("click", function
|
|
221
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
222
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_5_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r76); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r75 = i0.ɵɵnextContext(6); return ctx_r75.redirect($event, ctx_r75.x1ImageMediaUrl + data_r24); });
|
|
223
223
|
i0.ɵɵtext(2);
|
|
224
224
|
i0.ɵɵelementEnd();
|
|
225
225
|
i0.ɵɵelementEnd();
|
|
@@ -231,11 +231,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
231
231
|
i0.ɵɵadvance(1);
|
|
232
232
|
i0.ɵɵtextInterpolate(data_r24);
|
|
233
233
|
} }
|
|
234
|
-
function
|
|
234
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_6_Template(rf, ctx) { if (rf & 1) {
|
|
235
235
|
const _r80 = i0.ɵɵgetCurrentView();
|
|
236
236
|
i0.ɵɵelementStart(0, "span");
|
|
237
|
-
i0.ɵɵelementStart(1, "span",
|
|
238
|
-
i0.ɵɵlistener("click", function
|
|
237
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
238
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_6_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r80); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r79 = i0.ɵɵnextContext(6); return ctx_r79.redirect($event, ctx_r79.x1ImageMediaUrl + data_r24); });
|
|
239
239
|
i0.ɵɵtext(2);
|
|
240
240
|
i0.ɵɵelementEnd();
|
|
241
241
|
i0.ɵɵelementEnd();
|
|
@@ -247,11 +247,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
247
247
|
i0.ɵɵadvance(1);
|
|
248
248
|
i0.ɵɵtextInterpolate(data_r24);
|
|
249
249
|
} }
|
|
250
|
-
function
|
|
250
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_7_Template(rf, ctx) { if (rf & 1) {
|
|
251
251
|
const _r84 = i0.ɵɵgetCurrentView();
|
|
252
252
|
i0.ɵɵelementStart(0, "span");
|
|
253
|
-
i0.ɵɵelementStart(1, "span",
|
|
254
|
-
i0.ɵɵlistener("click", function
|
|
253
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
254
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_7_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r84); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r83 = i0.ɵɵnextContext(6); return ctx_r83.redirect($event, ctx_r83.x1ImageMediaUrl + data_r24); });
|
|
255
255
|
i0.ɵɵtext(2);
|
|
256
256
|
i0.ɵɵelementEnd();
|
|
257
257
|
i0.ɵɵelementEnd();
|
|
@@ -263,11 +263,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
263
263
|
i0.ɵɵadvance(1);
|
|
264
264
|
i0.ɵɵtextInterpolate(data_r24);
|
|
265
265
|
} }
|
|
266
|
-
function
|
|
266
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_8_Template(rf, ctx) { if (rf & 1) {
|
|
267
267
|
const _r88 = i0.ɵɵgetCurrentView();
|
|
268
268
|
i0.ɵɵelementStart(0, "span");
|
|
269
|
-
i0.ɵɵelementStart(1, "span",
|
|
270
|
-
i0.ɵɵlistener("click", function
|
|
269
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
270
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_8_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r88); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r87 = i0.ɵɵnextContext(6); return ctx_r87.redirect($event, ctx_r87.x1ImageMediaUrl + data_r24); });
|
|
271
271
|
i0.ɵɵtext(2);
|
|
272
272
|
i0.ɵɵelementEnd();
|
|
273
273
|
i0.ɵɵelementEnd();
|
|
@@ -279,11 +279,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
279
279
|
i0.ɵɵadvance(1);
|
|
280
280
|
i0.ɵɵtextInterpolate(data_r24);
|
|
281
281
|
} }
|
|
282
|
-
function
|
|
282
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_9_Template(rf, ctx) { if (rf & 1) {
|
|
283
283
|
const _r92 = i0.ɵɵgetCurrentView();
|
|
284
284
|
i0.ɵɵelementStart(0, "span");
|
|
285
|
-
i0.ɵɵelementStart(1, "span",
|
|
286
|
-
i0.ɵɵlistener("click", function
|
|
285
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
286
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_9_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r92); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r91 = i0.ɵɵnextContext(6); return ctx_r91.redirect($event, ctx_r91.x1ImageMediaUrl + data_r24); });
|
|
287
287
|
i0.ɵɵtext(2);
|
|
288
288
|
i0.ɵɵelementEnd();
|
|
289
289
|
i0.ɵɵelementEnd();
|
|
@@ -295,7 +295,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
295
295
|
i0.ɵɵadvance(1);
|
|
296
296
|
i0.ɵɵtextInterpolate(data_r24);
|
|
297
297
|
} }
|
|
298
|
-
function
|
|
298
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_10_Template(rf, ctx) { if (rf & 1) {
|
|
299
299
|
i0.ɵɵelementStart(0, "span");
|
|
300
300
|
i0.ɵɵtext(1);
|
|
301
301
|
i0.ɵɵelementEnd();
|
|
@@ -304,18 +304,18 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
304
304
|
i0.ɵɵadvance(1);
|
|
305
305
|
i0.ɵɵtextInterpolate(data_r24);
|
|
306
306
|
} }
|
|
307
|
-
function
|
|
307
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
308
308
|
i0.ɵɵelementContainerStart(0);
|
|
309
|
-
i0.ɵɵelementStart(1, "div",
|
|
310
|
-
i0.ɵɵtemplate(2,
|
|
311
|
-
i0.ɵɵtemplate(3,
|
|
312
|
-
i0.ɵɵtemplate(4,
|
|
313
|
-
i0.ɵɵtemplate(5,
|
|
314
|
-
i0.ɵɵtemplate(6,
|
|
315
|
-
i0.ɵɵtemplate(7,
|
|
316
|
-
i0.ɵɵtemplate(8,
|
|
317
|
-
i0.ɵɵtemplate(9,
|
|
318
|
-
i0.ɵɵtemplate(10,
|
|
309
|
+
i0.ɵɵelementStart(1, "div", 27);
|
|
310
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_2_Template, 6, 5, "span", 28);
|
|
311
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_3_Template, 3, 2, "span", 28);
|
|
312
|
+
i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_4_Template, 3, 2, "span", 28);
|
|
313
|
+
i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_5_Template, 3, 2, "span", 28);
|
|
314
|
+
i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_6_Template, 3, 2, "span", 28);
|
|
315
|
+
i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_7_Template, 3, 2, "span", 28);
|
|
316
|
+
i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_8_Template, 3, 2, "span", 28);
|
|
317
|
+
i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_9_Template, 3, 2, "span", 28);
|
|
318
|
+
i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_span_10_Template, 2, 1, "span", 29);
|
|
319
319
|
i0.ɵɵelementEnd();
|
|
320
320
|
i0.ɵɵelementContainerEnd();
|
|
321
321
|
} if (rf & 2) {
|
|
@@ -340,7 +340,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
340
340
|
i0.ɵɵadvance(1);
|
|
341
341
|
i0.ɵɵproperty("ngSwitchCase", "imagecapture-widget");
|
|
342
342
|
} }
|
|
343
|
-
function
|
|
343
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_1_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
344
344
|
i0.ɵɵelementStart(0, "span");
|
|
345
345
|
i0.ɵɵtext(1);
|
|
346
346
|
i0.ɵɵpipe(2, "currency");
|
|
@@ -351,7 +351,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
351
351
|
i0.ɵɵadvance(1);
|
|
352
352
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, 0, ctx_r99.tabularReport.matrix.attributes[ctx_r99.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency, "symbol"));
|
|
353
353
|
} }
|
|
354
|
-
function
|
|
354
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_1_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
355
355
|
i0.ɵɵelementStart(0, "span");
|
|
356
356
|
i0.ɵɵtext(1);
|
|
357
357
|
i0.ɵɵpipe(2, "axoPercentage");
|
|
@@ -362,7 +362,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
362
362
|
i0.ɵɵadvance(1);
|
|
363
363
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, 0, ctx_r100.tabularReport.matrix.attributes[ctx_r100.tabularReport.rowGrouping.length + m_r18].series, "detail"));
|
|
364
364
|
} }
|
|
365
|
-
function
|
|
365
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_1_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
366
366
|
i0.ɵɵelementStart(0, "span");
|
|
367
367
|
i0.ɵɵtext(1);
|
|
368
368
|
i0.ɵɵelementEnd();
|
|
@@ -370,11 +370,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
370
370
|
i0.ɵɵadvance(1);
|
|
371
371
|
i0.ɵɵtextInterpolate(0);
|
|
372
372
|
} }
|
|
373
|
-
function
|
|
373
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
374
374
|
i0.ɵɵelementStart(0, "span");
|
|
375
|
-
i0.ɵɵtemplate(1,
|
|
376
|
-
i0.ɵɵtemplate(2,
|
|
377
|
-
i0.ɵɵtemplate(3,
|
|
375
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_1_span_1_Template, 3, 5, "span", 6);
|
|
376
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_1_span_2_Template, 3, 5, "span", 6);
|
|
377
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_1_span_3_Template, 2, 1, "span", 6);
|
|
378
378
|
i0.ɵɵelementEnd();
|
|
379
379
|
} if (rf & 2) {
|
|
380
380
|
const m_r18 = i0.ɵɵnextContext(5).index;
|
|
@@ -386,15 +386,15 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
386
386
|
i0.ɵɵadvance(1);
|
|
387
387
|
i0.ɵɵproperty("ngIf", !ctx_r97.tabularReport.matrix.attributes[ctx_r97.tabularReport.rowGrouping.length + m_r18].valueFormatting.percentage && !ctx_r97.tabularReport.matrix.attributes[ctx_r97.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency);
|
|
388
388
|
} }
|
|
389
|
-
function
|
|
389
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
390
390
|
i0.ɵɵelementStart(0, "span");
|
|
391
391
|
i0.ɵɵtext(1, "-");
|
|
392
392
|
i0.ɵɵelementEnd();
|
|
393
393
|
} }
|
|
394
|
-
function
|
|
394
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
395
395
|
i0.ɵɵelementStart(0, "span");
|
|
396
|
-
i0.ɵɵtemplate(1,
|
|
397
|
-
i0.ɵɵtemplate(2,
|
|
396
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_1_Template, 4, 3, "span", 6);
|
|
397
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_span_2_Template, 2, 0, "span", 6);
|
|
398
398
|
i0.ɵɵelementEnd();
|
|
399
399
|
} if (rf & 2) {
|
|
400
400
|
const m_r18 = i0.ɵɵnextContext(4).index;
|
|
@@ -404,12 +404,12 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
404
404
|
i0.ɵɵadvance(1);
|
|
405
405
|
i0.ɵɵproperty("ngIf", ctx_r30.tabularReport.matrix.attributes[ctx_r30.tabularReport.rowGrouping.length + m_r18].widgetSubType !== "numeric");
|
|
406
406
|
} }
|
|
407
|
-
function
|
|
407
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
408
408
|
const _r108 = i0.ɵɵgetCurrentView();
|
|
409
|
-
i0.ɵɵelementStart(0, "td",
|
|
410
|
-
i0.ɵɵlistener("contextmenu", function
|
|
411
|
-
i0.ɵɵtemplate(1,
|
|
412
|
-
i0.ɵɵtemplate(2,
|
|
409
|
+
i0.ɵɵelementStart(0, "td", 26);
|
|
410
|
+
i0.ɵɵlistener("contextmenu", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_Template_td_contextmenu_0_listener($event) { i0.ɵɵrestoreView(_r108); const data_r24 = i0.ɵɵnextContext().$implicit; const _attr_r16 = i0.ɵɵnextContext(2).$implicit; const ctx_r106 = i0.ɵɵnextContext(4); return ctx_r106.drillThroughContext($event, _attr_r16, _attr_r16.series.indexOf(data_r24)); });
|
|
411
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_ng_container_1_Template, 11, 9, "ng-container", 6);
|
|
412
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_span_2_Template, 3, 2, "span", 6);
|
|
413
413
|
i0.ɵɵelementEnd();
|
|
414
414
|
} if (rf & 2) {
|
|
415
415
|
const data_r24 = i0.ɵɵnextContext().$implicit;
|
|
@@ -421,7 +421,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
421
421
|
i0.ɵɵadvance(1);
|
|
422
422
|
i0.ɵɵproperty("ngIf", !data_r24);
|
|
423
423
|
} }
|
|
424
|
-
function
|
|
424
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
425
425
|
i0.ɵɵelementContainerStart(0);
|
|
426
426
|
i0.ɵɵelementStart(1, "span");
|
|
427
427
|
i0.ɵɵtext(2);
|
|
@@ -435,7 +435,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
435
435
|
i0.ɵɵadvance(2);
|
|
436
436
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(3, 1, ctx_r122.moment(data_r24 + "Z"), ctx_r122.tabularReport.matrix.attributes[ctx_r122.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
|
|
437
437
|
} }
|
|
438
|
-
function
|
|
438
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
439
439
|
i0.ɵɵelementContainerStart(0);
|
|
440
440
|
i0.ɵɵelementStart(1, "span");
|
|
441
441
|
i0.ɵɵtext(2);
|
|
@@ -446,7 +446,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
446
446
|
i0.ɵɵadvance(2);
|
|
447
447
|
i0.ɵɵtextInterpolate(data_r24);
|
|
448
448
|
} }
|
|
449
|
-
function
|
|
449
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_3_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
450
450
|
i0.ɵɵelementStart(0, "span");
|
|
451
451
|
i0.ɵɵtext(1);
|
|
452
452
|
i0.ɵɵpipe(2, "date");
|
|
@@ -458,16 +458,16 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
458
458
|
i0.ɵɵadvance(1);
|
|
459
459
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, ctx_r130.moment(data_r24, "hh:mm:ss"), ctx_r130.tabularReport.matrix.attributes[ctx_r130.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
|
|
460
460
|
} }
|
|
461
|
-
function
|
|
461
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
462
462
|
i0.ɵɵelementContainerStart(0);
|
|
463
|
-
i0.ɵɵtemplate(1,
|
|
463
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_3_span_1_Template, 3, 4, "span", 6);
|
|
464
464
|
i0.ɵɵelementContainerEnd();
|
|
465
465
|
} if (rf & 2) {
|
|
466
466
|
const data_r24 = i0.ɵɵnextContext(4).$implicit;
|
|
467
467
|
i0.ɵɵadvance(1);
|
|
468
468
|
i0.ɵɵproperty("ngIf", data_r24);
|
|
469
469
|
} }
|
|
470
|
-
function
|
|
470
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_4_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
471
471
|
i0.ɵɵelementStart(0, "span");
|
|
472
472
|
i0.ɵɵtext(1);
|
|
473
473
|
i0.ɵɵpipe(2, "date");
|
|
@@ -479,9 +479,9 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
479
479
|
i0.ɵɵadvance(1);
|
|
480
480
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, data_r24, ctx_r134.tabularReport.matrix.attributes[ctx_r134.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
|
|
481
481
|
} }
|
|
482
|
-
function
|
|
482
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
483
483
|
i0.ɵɵelementContainerStart(0);
|
|
484
|
-
i0.ɵɵtemplate(1,
|
|
484
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_4_span_1_Template, 3, 4, "span", 6);
|
|
485
485
|
i0.ɵɵelementContainerEnd();
|
|
486
486
|
} if (rf & 2) {
|
|
487
487
|
const m_r18 = i0.ɵɵnextContext(6).index;
|
|
@@ -489,7 +489,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
489
489
|
i0.ɵɵadvance(1);
|
|
490
490
|
i0.ɵɵproperty("ngIf", ctx_r125.tabularReport.matrix.attributes[ctx_r125.tabularReport.rowGrouping.length + m_r18].widgetSubType === "date");
|
|
491
491
|
} }
|
|
492
|
-
function
|
|
492
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
493
493
|
i0.ɵɵelementContainerStart(0);
|
|
494
494
|
i0.ɵɵtext(1);
|
|
495
495
|
i0.ɵɵelementContainerEnd();
|
|
@@ -498,13 +498,13 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
498
498
|
i0.ɵɵadvance(1);
|
|
499
499
|
i0.ɵɵtextInterpolate1(" ", data_r24, " ");
|
|
500
500
|
} }
|
|
501
|
-
function
|
|
501
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
502
502
|
i0.ɵɵelementStart(0, "span");
|
|
503
|
-
i0.ɵɵtemplate(1,
|
|
504
|
-
i0.ɵɵtemplate(2,
|
|
505
|
-
i0.ɵɵtemplate(3,
|
|
506
|
-
i0.ɵɵtemplate(4,
|
|
507
|
-
i0.ɵɵtemplate(5,
|
|
503
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_1_Template, 4, 4, "ng-container", 6);
|
|
504
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_2_Template, 3, 1, "ng-container", 6);
|
|
505
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_3_Template, 2, 1, "ng-container", 6);
|
|
506
|
+
i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_4_Template, 2, 1, "ng-container", 6);
|
|
507
|
+
i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_ng_container_5_Template, 2, 1, "ng-container", 6);
|
|
508
508
|
i0.ɵɵelementEnd();
|
|
509
509
|
} if (rf & 2) {
|
|
510
510
|
const m_r18 = i0.ɵɵnextContext(5).index;
|
|
@@ -520,7 +520,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
520
520
|
i0.ɵɵadvance(1);
|
|
521
521
|
i0.ɵɵproperty("ngIf", ctx_r113.tabularReport.matrix.attributes[ctx_r113.tabularReport.rowGrouping.length + m_r18].widgetSubType === "date_range");
|
|
522
522
|
} }
|
|
523
|
-
function
|
|
523
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
524
524
|
i0.ɵɵelementStart(0, "span");
|
|
525
525
|
i0.ɵɵtext(1);
|
|
526
526
|
i0.ɵɵelementEnd();
|
|
@@ -529,7 +529,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
529
529
|
i0.ɵɵadvance(1);
|
|
530
530
|
i0.ɵɵtextInterpolate1(" ", data_r24, " ");
|
|
531
531
|
} }
|
|
532
|
-
function
|
|
532
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
533
533
|
i0.ɵɵelementStart(0, "span");
|
|
534
534
|
i0.ɵɵtext(1);
|
|
535
535
|
i0.ɵɵpipe(2, "currency");
|
|
@@ -541,7 +541,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
541
541
|
i0.ɵɵadvance(1);
|
|
542
542
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, data_r24, ctx_r143.tabularReport.matrix.attributes[ctx_r143.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency, "symbol"));
|
|
543
543
|
} }
|
|
544
|
-
function
|
|
544
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
545
545
|
i0.ɵɵelementStart(0, "span");
|
|
546
546
|
i0.ɵɵtext(1);
|
|
547
547
|
i0.ɵɵpipe(2, "axoPercentage");
|
|
@@ -553,7 +553,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
553
553
|
i0.ɵɵadvance(1);
|
|
554
554
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, data_r24, ctx_r144.tabularReport.matrix.attributes[ctx_r144.tabularReport.rowGrouping.length + m_r18].series, "column"));
|
|
555
555
|
} }
|
|
556
|
-
function
|
|
556
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
557
557
|
i0.ɵɵelementStart(0, "span");
|
|
558
558
|
i0.ɵɵtext(1);
|
|
559
559
|
i0.ɵɵelementEnd();
|
|
@@ -562,11 +562,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
562
562
|
i0.ɵɵadvance(1);
|
|
563
563
|
i0.ɵɵtextInterpolate(data_r24);
|
|
564
564
|
} }
|
|
565
|
-
function
|
|
565
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
566
566
|
i0.ɵɵelementStart(0, "span");
|
|
567
|
-
i0.ɵɵtemplate(1,
|
|
568
|
-
i0.ɵɵtemplate(2,
|
|
569
|
-
i0.ɵɵtemplate(3,
|
|
567
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_2_span_1_Template, 3, 5, "span", 6);
|
|
568
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_2_span_2_Template, 3, 5, "span", 6);
|
|
569
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_2_span_3_Template, 2, 1, "span", 6);
|
|
570
570
|
i0.ɵɵelementEnd();
|
|
571
571
|
} if (rf & 2) {
|
|
572
572
|
const m_r18 = i0.ɵɵnextContext(6).index;
|
|
@@ -578,10 +578,10 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
578
578
|
i0.ɵɵadvance(1);
|
|
579
579
|
i0.ɵɵproperty("ngIf", !ctx_r141.tabularReport.matrix.attributes[ctx_r141.tabularReport.rowGrouping.length + m_r18].valueFormatting.percentage && !ctx_r141.tabularReport.matrix.attributes[ctx_r141.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency);
|
|
580
580
|
} }
|
|
581
|
-
function
|
|
581
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
582
582
|
i0.ɵɵelementStart(0, "span");
|
|
583
|
-
i0.ɵɵtemplate(1,
|
|
584
|
-
i0.ɵɵtemplate(2,
|
|
583
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_1_Template, 2, 1, "span", 6);
|
|
584
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_span_2_Template, 4, 3, "span", 6);
|
|
585
585
|
i0.ɵɵelementEnd();
|
|
586
586
|
} if (rf & 2) {
|
|
587
587
|
const m_r18 = i0.ɵɵnextContext(5).index;
|
|
@@ -591,11 +591,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
591
591
|
i0.ɵɵadvance(1);
|
|
592
592
|
i0.ɵɵproperty("ngIf", ctx_r114.tabularReport.matrix.attributes[ctx_r114.tabularReport.rowGrouping.length + m_r18].widgetSubType === "numeric");
|
|
593
593
|
} }
|
|
594
|
-
function
|
|
594
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
595
595
|
const _r155 = i0.ɵɵgetCurrentView();
|
|
596
596
|
i0.ɵɵelementStart(0, "span");
|
|
597
|
-
i0.ɵɵelementStart(1, "span",
|
|
598
|
-
i0.ɵɵlistener("click", function
|
|
597
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
598
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_4_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r155); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r153 = i0.ɵɵnextContext(6); return ctx_r153.redirect($event, data_r24); });
|
|
599
599
|
i0.ɵɵtext(2);
|
|
600
600
|
i0.ɵɵelementEnd();
|
|
601
601
|
i0.ɵɵelementEnd();
|
|
@@ -607,11 +607,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
607
607
|
i0.ɵɵadvance(1);
|
|
608
608
|
i0.ɵɵtextInterpolate(data_r24);
|
|
609
609
|
} }
|
|
610
|
-
function
|
|
610
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_5_Template(rf, ctx) { if (rf & 1) {
|
|
611
611
|
const _r158 = i0.ɵɵgetCurrentView();
|
|
612
612
|
i0.ɵɵelementStart(0, "span");
|
|
613
|
-
i0.ɵɵelementStart(1, "span",
|
|
614
|
-
i0.ɵɵlistener("click", function
|
|
613
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
614
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_5_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r158); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r157 = i0.ɵɵnextContext(6); return ctx_r157.redirect($event, ctx_r157.x1ImageMediaUrl + data_r24); });
|
|
615
615
|
i0.ɵɵtext(2);
|
|
616
616
|
i0.ɵɵelementEnd();
|
|
617
617
|
i0.ɵɵelementEnd();
|
|
@@ -623,11 +623,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
623
623
|
i0.ɵɵadvance(1);
|
|
624
624
|
i0.ɵɵtextInterpolate(data_r24);
|
|
625
625
|
} }
|
|
626
|
-
function
|
|
626
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_6_Template(rf, ctx) { if (rf & 1) {
|
|
627
627
|
const _r162 = i0.ɵɵgetCurrentView();
|
|
628
628
|
i0.ɵɵelementStart(0, "span");
|
|
629
|
-
i0.ɵɵelementStart(1, "span",
|
|
630
|
-
i0.ɵɵlistener("click", function
|
|
629
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
630
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_6_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r162); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r161 = i0.ɵɵnextContext(6); return ctx_r161.redirect($event, ctx_r161.x1ImageMediaUrl + data_r24); });
|
|
631
631
|
i0.ɵɵtext(2);
|
|
632
632
|
i0.ɵɵelementEnd();
|
|
633
633
|
i0.ɵɵelementEnd();
|
|
@@ -639,11 +639,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
639
639
|
i0.ɵɵadvance(1);
|
|
640
640
|
i0.ɵɵtextInterpolate(data_r24);
|
|
641
641
|
} }
|
|
642
|
-
function
|
|
642
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_7_Template(rf, ctx) { if (rf & 1) {
|
|
643
643
|
const _r166 = i0.ɵɵgetCurrentView();
|
|
644
644
|
i0.ɵɵelementStart(0, "span");
|
|
645
|
-
i0.ɵɵelementStart(1, "span",
|
|
646
|
-
i0.ɵɵlistener("click", function
|
|
645
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
646
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_7_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r166); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r165 = i0.ɵɵnextContext(6); return ctx_r165.redirect($event, ctx_r165.x1ImageMediaUrl + data_r24); });
|
|
647
647
|
i0.ɵɵtext(2);
|
|
648
648
|
i0.ɵɵelementEnd();
|
|
649
649
|
i0.ɵɵelementEnd();
|
|
@@ -655,11 +655,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
655
655
|
i0.ɵɵadvance(1);
|
|
656
656
|
i0.ɵɵtextInterpolate(data_r24);
|
|
657
657
|
} }
|
|
658
|
-
function
|
|
658
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_8_Template(rf, ctx) { if (rf & 1) {
|
|
659
659
|
const _r170 = i0.ɵɵgetCurrentView();
|
|
660
660
|
i0.ɵɵelementStart(0, "span");
|
|
661
|
-
i0.ɵɵelementStart(1, "span",
|
|
662
|
-
i0.ɵɵlistener("click", function
|
|
661
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
662
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_8_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r170); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r169 = i0.ɵɵnextContext(6); return ctx_r169.redirect($event, ctx_r169.x1ImageMediaUrl + data_r24); });
|
|
663
663
|
i0.ɵɵtext(2);
|
|
664
664
|
i0.ɵɵelementEnd();
|
|
665
665
|
i0.ɵɵelementEnd();
|
|
@@ -671,11 +671,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
671
671
|
i0.ɵɵadvance(1);
|
|
672
672
|
i0.ɵɵtextInterpolate(data_r24);
|
|
673
673
|
} }
|
|
674
|
-
function
|
|
674
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_9_Template(rf, ctx) { if (rf & 1) {
|
|
675
675
|
const _r174 = i0.ɵɵgetCurrentView();
|
|
676
676
|
i0.ɵɵelementStart(0, "span");
|
|
677
|
-
i0.ɵɵelementStart(1, "span",
|
|
678
|
-
i0.ɵɵlistener("click", function
|
|
677
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
678
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_9_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r174); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r173 = i0.ɵɵnextContext(6); return ctx_r173.redirect($event, ctx_r173.x1ImageMediaUrl + data_r24); });
|
|
679
679
|
i0.ɵɵtext(2);
|
|
680
680
|
i0.ɵɵelementEnd();
|
|
681
681
|
i0.ɵɵelementEnd();
|
|
@@ -687,7 +687,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
687
687
|
i0.ɵɵadvance(1);
|
|
688
688
|
i0.ɵɵtextInterpolate(data_r24);
|
|
689
689
|
} }
|
|
690
|
-
function
|
|
690
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_10_Template(rf, ctx) { if (rf & 1) {
|
|
691
691
|
i0.ɵɵelementStart(0, "span");
|
|
692
692
|
i0.ɵɵtext(1);
|
|
693
693
|
i0.ɵɵelementEnd();
|
|
@@ -696,18 +696,18 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
696
696
|
i0.ɵɵadvance(1);
|
|
697
697
|
i0.ɵɵtextInterpolate(data_r24);
|
|
698
698
|
} }
|
|
699
|
-
function
|
|
699
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
700
700
|
i0.ɵɵelementContainerStart(0);
|
|
701
|
-
i0.ɵɵelementStart(1, "div",
|
|
702
|
-
i0.ɵɵtemplate(2,
|
|
703
|
-
i0.ɵɵtemplate(3,
|
|
704
|
-
i0.ɵɵtemplate(4,
|
|
705
|
-
i0.ɵɵtemplate(5,
|
|
706
|
-
i0.ɵɵtemplate(6,
|
|
707
|
-
i0.ɵɵtemplate(7,
|
|
708
|
-
i0.ɵɵtemplate(8,
|
|
709
|
-
i0.ɵɵtemplate(9,
|
|
710
|
-
i0.ɵɵtemplate(10,
|
|
701
|
+
i0.ɵɵelementStart(1, "div", 27);
|
|
702
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_2_Template, 6, 5, "span", 28);
|
|
703
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_3_Template, 3, 2, "span", 28);
|
|
704
|
+
i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_4_Template, 3, 2, "span", 28);
|
|
705
|
+
i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_5_Template, 3, 2, "span", 28);
|
|
706
|
+
i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_6_Template, 3, 2, "span", 28);
|
|
707
|
+
i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_7_Template, 3, 2, "span", 28);
|
|
708
|
+
i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_8_Template, 3, 2, "span", 28);
|
|
709
|
+
i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_9_Template, 3, 2, "span", 28);
|
|
710
|
+
i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_span_10_Template, 2, 1, "span", 29);
|
|
711
711
|
i0.ɵɵelementEnd();
|
|
712
712
|
i0.ɵɵelementContainerEnd();
|
|
713
713
|
} if (rf & 2) {
|
|
@@ -732,7 +732,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
732
732
|
i0.ɵɵadvance(1);
|
|
733
733
|
i0.ɵɵproperty("ngSwitchCase", "imagecapture-widget");
|
|
734
734
|
} }
|
|
735
|
-
function
|
|
735
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_1_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
736
736
|
i0.ɵɵelementStart(0, "span");
|
|
737
737
|
i0.ɵɵtext(1);
|
|
738
738
|
i0.ɵɵpipe(2, "currency");
|
|
@@ -743,7 +743,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
743
743
|
i0.ɵɵadvance(1);
|
|
744
744
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, 0, ctx_r181.tabularReport.matrix.attributes[ctx_r181.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency, "symbol"));
|
|
745
745
|
} }
|
|
746
|
-
function
|
|
746
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_1_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
747
747
|
i0.ɵɵelementStart(0, "span");
|
|
748
748
|
i0.ɵɵtext(1);
|
|
749
749
|
i0.ɵɵpipe(2, "axoPercentage");
|
|
@@ -754,7 +754,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
754
754
|
i0.ɵɵadvance(1);
|
|
755
755
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, 0, ctx_r182.tabularReport.matrix.attributes[ctx_r182.tabularReport.rowGrouping.length + m_r18].series, "detail"));
|
|
756
756
|
} }
|
|
757
|
-
function
|
|
757
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_1_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
758
758
|
i0.ɵɵelementStart(0, "span");
|
|
759
759
|
i0.ɵɵtext(1);
|
|
760
760
|
i0.ɵɵelementEnd();
|
|
@@ -762,11 +762,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
762
762
|
i0.ɵɵadvance(1);
|
|
763
763
|
i0.ɵɵtextInterpolate(0);
|
|
764
764
|
} }
|
|
765
|
-
function
|
|
765
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
766
766
|
i0.ɵɵelementStart(0, "span");
|
|
767
|
-
i0.ɵɵtemplate(1,
|
|
768
|
-
i0.ɵɵtemplate(2,
|
|
769
|
-
i0.ɵɵtemplate(3,
|
|
767
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_1_span_1_Template, 3, 5, "span", 6);
|
|
768
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_1_span_2_Template, 3, 5, "span", 6);
|
|
769
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_1_span_3_Template, 2, 1, "span", 6);
|
|
770
770
|
i0.ɵɵelementEnd();
|
|
771
771
|
} if (rf & 2) {
|
|
772
772
|
const m_r18 = i0.ɵɵnextContext(5).index;
|
|
@@ -778,15 +778,15 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
778
778
|
i0.ɵɵadvance(1);
|
|
779
779
|
i0.ɵɵproperty("ngIf", !ctx_r179.tabularReport.matrix.attributes[ctx_r179.tabularReport.rowGrouping.length + m_r18].valueFormatting.percentage && !ctx_r179.tabularReport.matrix.attributes[ctx_r179.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency);
|
|
780
780
|
} }
|
|
781
|
-
function
|
|
781
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
782
782
|
i0.ɵɵelementStart(0, "span");
|
|
783
783
|
i0.ɵɵtext(1, "-");
|
|
784
784
|
i0.ɵɵelementEnd();
|
|
785
785
|
} }
|
|
786
|
-
function
|
|
786
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
787
787
|
i0.ɵɵelementStart(0, "span");
|
|
788
|
-
i0.ɵɵtemplate(1,
|
|
789
|
-
i0.ɵɵtemplate(2,
|
|
788
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_1_Template, 4, 3, "span", 6);
|
|
789
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_span_2_Template, 2, 0, "span", 6);
|
|
790
790
|
i0.ɵɵelementEnd();
|
|
791
791
|
} if (rf & 2) {
|
|
792
792
|
const m_r18 = i0.ɵɵnextContext(4).index;
|
|
@@ -796,10 +796,10 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
796
796
|
i0.ɵɵadvance(1);
|
|
797
797
|
i0.ɵɵproperty("ngIf", ctx_r112.tabularReport.matrix.attributes[ctx_r112.tabularReport.rowGrouping.length + m_r18].widgetSubType !== "numeric");
|
|
798
798
|
} }
|
|
799
|
-
function
|
|
800
|
-
i0.ɵɵelementStart(0, "td",
|
|
801
|
-
i0.ɵɵtemplate(1,
|
|
802
|
-
i0.ɵɵtemplate(2,
|
|
799
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_Template(rf, ctx) { if (rf & 1) {
|
|
800
|
+
i0.ɵɵelementStart(0, "td", 31);
|
|
801
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_ng_container_1_Template, 11, 9, "ng-container", 6);
|
|
802
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_span_2_Template, 3, 2, "span", 6);
|
|
803
803
|
i0.ɵɵelementEnd();
|
|
804
804
|
} if (rf & 2) {
|
|
805
805
|
const data_r24 = i0.ɵɵnextContext().$implicit;
|
|
@@ -811,7 +811,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
811
811
|
i0.ɵɵadvance(1);
|
|
812
812
|
i0.ɵɵproperty("ngIf", !data_r24);
|
|
813
813
|
} }
|
|
814
|
-
function
|
|
814
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
815
815
|
i0.ɵɵelementContainerStart(0);
|
|
816
816
|
i0.ɵɵelementStart(1, "span");
|
|
817
817
|
i0.ɵɵtext(2);
|
|
@@ -825,7 +825,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
825
825
|
i0.ɵɵadvance(2);
|
|
826
826
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(3, 1, ctx_r200.moment(data_r24 + "Z"), ctx_r200.tabularReport.matrix.attributes[ctx_r200.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
|
|
827
827
|
} }
|
|
828
|
-
function
|
|
828
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
829
829
|
i0.ɵɵelementContainerStart(0);
|
|
830
830
|
i0.ɵɵelementStart(1, "span");
|
|
831
831
|
i0.ɵɵtext(2);
|
|
@@ -836,7 +836,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
836
836
|
i0.ɵɵadvance(2);
|
|
837
837
|
i0.ɵɵtextInterpolate(data_r24);
|
|
838
838
|
} }
|
|
839
|
-
function
|
|
839
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_3_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
840
840
|
i0.ɵɵelementStart(0, "span");
|
|
841
841
|
i0.ɵɵtext(1);
|
|
842
842
|
i0.ɵɵpipe(2, "date");
|
|
@@ -848,16 +848,16 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
848
848
|
i0.ɵɵadvance(1);
|
|
849
849
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, ctx_r208.moment(data_r24, "hh:mm:ss"), ctx_r208.tabularReport.matrix.attributes[ctx_r208.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
|
|
850
850
|
} }
|
|
851
|
-
function
|
|
851
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
852
852
|
i0.ɵɵelementContainerStart(0);
|
|
853
|
-
i0.ɵɵtemplate(1,
|
|
853
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_3_span_1_Template, 3, 4, "span", 6);
|
|
854
854
|
i0.ɵɵelementContainerEnd();
|
|
855
855
|
} if (rf & 2) {
|
|
856
856
|
const data_r24 = i0.ɵɵnextContext(4).$implicit;
|
|
857
857
|
i0.ɵɵadvance(1);
|
|
858
858
|
i0.ɵɵproperty("ngIf", data_r24);
|
|
859
859
|
} }
|
|
860
|
-
function
|
|
860
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_4_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
861
861
|
i0.ɵɵelementStart(0, "span");
|
|
862
862
|
i0.ɵɵtext(1);
|
|
863
863
|
i0.ɵɵpipe(2, "date");
|
|
@@ -869,9 +869,9 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
869
869
|
i0.ɵɵadvance(1);
|
|
870
870
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, data_r24, ctx_r212.tabularReport.matrix.attributes[ctx_r212.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
|
|
871
871
|
} }
|
|
872
|
-
function
|
|
872
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
873
873
|
i0.ɵɵelementContainerStart(0);
|
|
874
|
-
i0.ɵɵtemplate(1,
|
|
874
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_4_span_1_Template, 3, 4, "span", 6);
|
|
875
875
|
i0.ɵɵelementContainerEnd();
|
|
876
876
|
} if (rf & 2) {
|
|
877
877
|
const m_r18 = i0.ɵɵnextContext(6).index;
|
|
@@ -879,7 +879,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
879
879
|
i0.ɵɵadvance(1);
|
|
880
880
|
i0.ɵɵproperty("ngIf", ctx_r203.tabularReport.matrix.attributes[ctx_r203.tabularReport.rowGrouping.length + m_r18].widgetSubType === "date");
|
|
881
881
|
} }
|
|
882
|
-
function
|
|
882
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
883
883
|
i0.ɵɵelementContainerStart(0);
|
|
884
884
|
i0.ɵɵtext(1);
|
|
885
885
|
i0.ɵɵelementContainerEnd();
|
|
@@ -888,13 +888,13 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
888
888
|
i0.ɵɵadvance(1);
|
|
889
889
|
i0.ɵɵtextInterpolate1(" ", data_r24, " ");
|
|
890
890
|
} }
|
|
891
|
-
function
|
|
891
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
892
892
|
i0.ɵɵelementStart(0, "span");
|
|
893
|
-
i0.ɵɵtemplate(1,
|
|
894
|
-
i0.ɵɵtemplate(2,
|
|
895
|
-
i0.ɵɵtemplate(3,
|
|
896
|
-
i0.ɵɵtemplate(4,
|
|
897
|
-
i0.ɵɵtemplate(5,
|
|
893
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_1_Template, 4, 4, "ng-container", 6);
|
|
894
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_2_Template, 3, 1, "ng-container", 6);
|
|
895
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_3_Template, 2, 1, "ng-container", 6);
|
|
896
|
+
i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_4_Template, 2, 1, "ng-container", 6);
|
|
897
|
+
i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_ng_container_5_Template, 2, 1, "ng-container", 6);
|
|
898
898
|
i0.ɵɵelementEnd();
|
|
899
899
|
} if (rf & 2) {
|
|
900
900
|
const m_r18 = i0.ɵɵnextContext(5).index;
|
|
@@ -910,7 +910,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
910
910
|
i0.ɵɵadvance(1);
|
|
911
911
|
i0.ɵɵproperty("ngIf", ctx_r191.tabularReport.matrix.attributes[ctx_r191.tabularReport.rowGrouping.length + m_r18].widgetSubType === "date_range");
|
|
912
912
|
} }
|
|
913
|
-
function
|
|
913
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
914
914
|
i0.ɵɵelementStart(0, "span");
|
|
915
915
|
i0.ɵɵtext(1);
|
|
916
916
|
i0.ɵɵelementEnd();
|
|
@@ -919,7 +919,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
919
919
|
i0.ɵɵadvance(1);
|
|
920
920
|
i0.ɵɵtextInterpolate1(" ", data_r24, " ");
|
|
921
921
|
} }
|
|
922
|
-
function
|
|
922
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
923
923
|
i0.ɵɵelementStart(0, "span");
|
|
924
924
|
i0.ɵɵtext(1);
|
|
925
925
|
i0.ɵɵpipe(2, "currency");
|
|
@@ -931,7 +931,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
931
931
|
i0.ɵɵadvance(1);
|
|
932
932
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, data_r24, ctx_r221.tabularReport.matrix.attributes[ctx_r221.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency, "symbol"));
|
|
933
933
|
} }
|
|
934
|
-
function
|
|
934
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
935
935
|
i0.ɵɵelementStart(0, "span");
|
|
936
936
|
i0.ɵɵtext(1);
|
|
937
937
|
i0.ɵɵpipe(2, "axoPercentage");
|
|
@@ -943,7 +943,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
943
943
|
i0.ɵɵadvance(1);
|
|
944
944
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, data_r24, ctx_r222.tabularReport.matrix.attributes[ctx_r222.tabularReport.rowGrouping.length + m_r18].series, "column"));
|
|
945
945
|
} }
|
|
946
|
-
function
|
|
946
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
947
947
|
i0.ɵɵelementStart(0, "span");
|
|
948
948
|
i0.ɵɵtext(1);
|
|
949
949
|
i0.ɵɵelementEnd();
|
|
@@ -952,11 +952,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
952
952
|
i0.ɵɵadvance(1);
|
|
953
953
|
i0.ɵɵtextInterpolate(data_r24);
|
|
954
954
|
} }
|
|
955
|
-
function
|
|
955
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
956
956
|
i0.ɵɵelementStart(0, "span");
|
|
957
|
-
i0.ɵɵtemplate(1,
|
|
958
|
-
i0.ɵɵtemplate(2,
|
|
959
|
-
i0.ɵɵtemplate(3,
|
|
957
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_2_span_1_Template, 3, 5, "span", 6);
|
|
958
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_2_span_2_Template, 3, 5, "span", 6);
|
|
959
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_2_span_3_Template, 2, 1, "span", 6);
|
|
960
960
|
i0.ɵɵelementEnd();
|
|
961
961
|
} if (rf & 2) {
|
|
962
962
|
const m_r18 = i0.ɵɵnextContext(6).index;
|
|
@@ -968,10 +968,10 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
968
968
|
i0.ɵɵadvance(1);
|
|
969
969
|
i0.ɵɵproperty("ngIf", !ctx_r219.tabularReport.matrix.attributes[ctx_r219.tabularReport.rowGrouping.length + m_r18].valueFormatting.percentage && !ctx_r219.tabularReport.matrix.attributes[ctx_r219.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency);
|
|
970
970
|
} }
|
|
971
|
-
function
|
|
971
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
972
972
|
i0.ɵɵelementStart(0, "span");
|
|
973
|
-
i0.ɵɵtemplate(1,
|
|
974
|
-
i0.ɵɵtemplate(2,
|
|
973
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_1_Template, 2, 1, "span", 6);
|
|
974
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_span_2_Template, 4, 3, "span", 6);
|
|
975
975
|
i0.ɵɵelementEnd();
|
|
976
976
|
} if (rf & 2) {
|
|
977
977
|
const m_r18 = i0.ɵɵnextContext(5).index;
|
|
@@ -981,11 +981,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
981
981
|
i0.ɵɵadvance(1);
|
|
982
982
|
i0.ɵɵproperty("ngIf", ctx_r192.tabularReport.matrix.attributes[ctx_r192.tabularReport.rowGrouping.length + m_r18].widgetSubType === "numeric");
|
|
983
983
|
} }
|
|
984
|
-
function
|
|
984
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
985
985
|
const _r233 = i0.ɵɵgetCurrentView();
|
|
986
986
|
i0.ɵɵelementStart(0, "span");
|
|
987
|
-
i0.ɵɵelementStart(1, "span",
|
|
988
|
-
i0.ɵɵlistener("click", function
|
|
987
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
988
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_4_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r233); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r231 = i0.ɵɵnextContext(6); return ctx_r231.redirect($event, data_r24); });
|
|
989
989
|
i0.ɵɵtext(2);
|
|
990
990
|
i0.ɵɵelementEnd();
|
|
991
991
|
i0.ɵɵelementEnd();
|
|
@@ -997,11 +997,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
997
997
|
i0.ɵɵadvance(1);
|
|
998
998
|
i0.ɵɵtextInterpolate(data_r24);
|
|
999
999
|
} }
|
|
1000
|
-
function
|
|
1000
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_5_Template(rf, ctx) { if (rf & 1) {
|
|
1001
1001
|
const _r236 = i0.ɵɵgetCurrentView();
|
|
1002
1002
|
i0.ɵɵelementStart(0, "span");
|
|
1003
|
-
i0.ɵɵelementStart(1, "span",
|
|
1004
|
-
i0.ɵɵlistener("click", function
|
|
1003
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
1004
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_5_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r236); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r235 = i0.ɵɵnextContext(6); return ctx_r235.redirect($event, ctx_r235.x1ImageMediaUrl + data_r24); });
|
|
1005
1005
|
i0.ɵɵtext(2);
|
|
1006
1006
|
i0.ɵɵelementEnd();
|
|
1007
1007
|
i0.ɵɵelementEnd();
|
|
@@ -1013,11 +1013,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
1013
1013
|
i0.ɵɵadvance(1);
|
|
1014
1014
|
i0.ɵɵtextInterpolate(data_r24);
|
|
1015
1015
|
} }
|
|
1016
|
-
function
|
|
1016
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_6_Template(rf, ctx) { if (rf & 1) {
|
|
1017
1017
|
const _r240 = i0.ɵɵgetCurrentView();
|
|
1018
1018
|
i0.ɵɵelementStart(0, "span");
|
|
1019
|
-
i0.ɵɵelementStart(1, "span",
|
|
1020
|
-
i0.ɵɵlistener("click", function
|
|
1019
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
1020
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_6_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r240); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r239 = i0.ɵɵnextContext(6); return ctx_r239.redirect($event, ctx_r239.x1ImageMediaUrl + data_r24); });
|
|
1021
1021
|
i0.ɵɵtext(2);
|
|
1022
1022
|
i0.ɵɵelementEnd();
|
|
1023
1023
|
i0.ɵɵelementEnd();
|
|
@@ -1029,11 +1029,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
1029
1029
|
i0.ɵɵadvance(1);
|
|
1030
1030
|
i0.ɵɵtextInterpolate(data_r24);
|
|
1031
1031
|
} }
|
|
1032
|
-
function
|
|
1032
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_7_Template(rf, ctx) { if (rf & 1) {
|
|
1033
1033
|
const _r244 = i0.ɵɵgetCurrentView();
|
|
1034
1034
|
i0.ɵɵelementStart(0, "span");
|
|
1035
|
-
i0.ɵɵelementStart(1, "span",
|
|
1036
|
-
i0.ɵɵlistener("click", function
|
|
1035
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
1036
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_7_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r244); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r243 = i0.ɵɵnextContext(6); return ctx_r243.redirect($event, ctx_r243.x1ImageMediaUrl + data_r24); });
|
|
1037
1037
|
i0.ɵɵtext(2);
|
|
1038
1038
|
i0.ɵɵelementEnd();
|
|
1039
1039
|
i0.ɵɵelementEnd();
|
|
@@ -1045,11 +1045,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
1045
1045
|
i0.ɵɵadvance(1);
|
|
1046
1046
|
i0.ɵɵtextInterpolate(data_r24);
|
|
1047
1047
|
} }
|
|
1048
|
-
function
|
|
1048
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_8_Template(rf, ctx) { if (rf & 1) {
|
|
1049
1049
|
const _r248 = i0.ɵɵgetCurrentView();
|
|
1050
1050
|
i0.ɵɵelementStart(0, "span");
|
|
1051
|
-
i0.ɵɵelementStart(1, "span",
|
|
1052
|
-
i0.ɵɵlistener("click", function
|
|
1051
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
1052
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_8_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r248); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r247 = i0.ɵɵnextContext(6); return ctx_r247.redirect($event, ctx_r247.x1ImageMediaUrl + data_r24); });
|
|
1053
1053
|
i0.ɵɵtext(2);
|
|
1054
1054
|
i0.ɵɵelementEnd();
|
|
1055
1055
|
i0.ɵɵelementEnd();
|
|
@@ -1061,11 +1061,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
1061
1061
|
i0.ɵɵadvance(1);
|
|
1062
1062
|
i0.ɵɵtextInterpolate(data_r24);
|
|
1063
1063
|
} }
|
|
1064
|
-
function
|
|
1064
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_9_Template(rf, ctx) { if (rf & 1) {
|
|
1065
1065
|
const _r252 = i0.ɵɵgetCurrentView();
|
|
1066
1066
|
i0.ɵɵelementStart(0, "span");
|
|
1067
|
-
i0.ɵɵelementStart(1, "span",
|
|
1068
|
-
i0.ɵɵlistener("click", function
|
|
1067
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
1068
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_9_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r252); const data_r24 = i0.ɵɵnextContext(3).$implicit; const ctx_r251 = i0.ɵɵnextContext(6); return ctx_r251.redirect($event, ctx_r251.x1ImageMediaUrl + data_r24); });
|
|
1069
1069
|
i0.ɵɵtext(2);
|
|
1070
1070
|
i0.ɵɵelementEnd();
|
|
1071
1071
|
i0.ɵɵelementEnd();
|
|
@@ -1077,7 +1077,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
1077
1077
|
i0.ɵɵadvance(1);
|
|
1078
1078
|
i0.ɵɵtextInterpolate(data_r24);
|
|
1079
1079
|
} }
|
|
1080
|
-
function
|
|
1080
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_10_Template(rf, ctx) { if (rf & 1) {
|
|
1081
1081
|
i0.ɵɵelementStart(0, "span");
|
|
1082
1082
|
i0.ɵɵtext(1);
|
|
1083
1083
|
i0.ɵɵelementEnd();
|
|
@@ -1086,18 +1086,18 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
1086
1086
|
i0.ɵɵadvance(1);
|
|
1087
1087
|
i0.ɵɵtextInterpolate(data_r24);
|
|
1088
1088
|
} }
|
|
1089
|
-
function
|
|
1089
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
1090
1090
|
i0.ɵɵelementContainerStart(0);
|
|
1091
|
-
i0.ɵɵelementStart(1, "div",
|
|
1092
|
-
i0.ɵɵtemplate(2,
|
|
1093
|
-
i0.ɵɵtemplate(3,
|
|
1094
|
-
i0.ɵɵtemplate(4,
|
|
1095
|
-
i0.ɵɵtemplate(5,
|
|
1096
|
-
i0.ɵɵtemplate(6,
|
|
1097
|
-
i0.ɵɵtemplate(7,
|
|
1098
|
-
i0.ɵɵtemplate(8,
|
|
1099
|
-
i0.ɵɵtemplate(9,
|
|
1100
|
-
i0.ɵɵtemplate(10,
|
|
1091
|
+
i0.ɵɵelementStart(1, "div", 27);
|
|
1092
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_2_Template, 6, 5, "span", 28);
|
|
1093
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_3_Template, 3, 2, "span", 28);
|
|
1094
|
+
i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_4_Template, 3, 2, "span", 28);
|
|
1095
|
+
i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_5_Template, 3, 2, "span", 28);
|
|
1096
|
+
i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_6_Template, 3, 2, "span", 28);
|
|
1097
|
+
i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_7_Template, 3, 2, "span", 28);
|
|
1098
|
+
i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_8_Template, 3, 2, "span", 28);
|
|
1099
|
+
i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_9_Template, 3, 2, "span", 28);
|
|
1100
|
+
i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_span_10_Template, 2, 1, "span", 29);
|
|
1101
1101
|
i0.ɵɵelementEnd();
|
|
1102
1102
|
i0.ɵɵelementContainerEnd();
|
|
1103
1103
|
} if (rf & 2) {
|
|
@@ -1122,7 +1122,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
1122
1122
|
i0.ɵɵadvance(1);
|
|
1123
1123
|
i0.ɵɵproperty("ngSwitchCase", "imagecapture-widget");
|
|
1124
1124
|
} }
|
|
1125
|
-
function
|
|
1125
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_1_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
1126
1126
|
i0.ɵɵelementStart(0, "span");
|
|
1127
1127
|
i0.ɵɵtext(1);
|
|
1128
1128
|
i0.ɵɵpipe(2, "currency");
|
|
@@ -1133,7 +1133,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
1133
1133
|
i0.ɵɵadvance(1);
|
|
1134
1134
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, 0, ctx_r259.tabularReport.matrix.attributes[ctx_r259.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency, "symbol"));
|
|
1135
1135
|
} }
|
|
1136
|
-
function
|
|
1136
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_1_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
1137
1137
|
i0.ɵɵelementStart(0, "span");
|
|
1138
1138
|
i0.ɵɵtext(1);
|
|
1139
1139
|
i0.ɵɵpipe(2, "axoPercentage");
|
|
@@ -1144,7 +1144,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
1144
1144
|
i0.ɵɵadvance(1);
|
|
1145
1145
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, 0, ctx_r260.tabularReport.matrix.attributes[ctx_r260.tabularReport.rowGrouping.length + m_r18].series, "detail"));
|
|
1146
1146
|
} }
|
|
1147
|
-
function
|
|
1147
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_1_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
1148
1148
|
i0.ɵɵelementStart(0, "span");
|
|
1149
1149
|
i0.ɵɵtext(1);
|
|
1150
1150
|
i0.ɵɵelementEnd();
|
|
@@ -1152,11 +1152,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
1152
1152
|
i0.ɵɵadvance(1);
|
|
1153
1153
|
i0.ɵɵtextInterpolate(0);
|
|
1154
1154
|
} }
|
|
1155
|
-
function
|
|
1155
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
1156
1156
|
i0.ɵɵelementStart(0, "span");
|
|
1157
|
-
i0.ɵɵtemplate(1,
|
|
1158
|
-
i0.ɵɵtemplate(2,
|
|
1159
|
-
i0.ɵɵtemplate(3,
|
|
1157
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_1_span_1_Template, 3, 5, "span", 6);
|
|
1158
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_1_span_2_Template, 3, 5, "span", 6);
|
|
1159
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_1_span_3_Template, 2, 1, "span", 6);
|
|
1160
1160
|
i0.ɵɵelementEnd();
|
|
1161
1161
|
} if (rf & 2) {
|
|
1162
1162
|
const m_r18 = i0.ɵɵnextContext(5).index;
|
|
@@ -1168,15 +1168,15 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
1168
1168
|
i0.ɵɵadvance(1);
|
|
1169
1169
|
i0.ɵɵproperty("ngIf", !ctx_r257.tabularReport.matrix.attributes[ctx_r257.tabularReport.rowGrouping.length + m_r18].valueFormatting.percentage && !ctx_r257.tabularReport.matrix.attributes[ctx_r257.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency);
|
|
1170
1170
|
} }
|
|
1171
|
-
function
|
|
1171
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
1172
1172
|
i0.ɵɵelementStart(0, "span");
|
|
1173
1173
|
i0.ɵɵtext(1, "-");
|
|
1174
1174
|
i0.ɵɵelementEnd();
|
|
1175
1175
|
} }
|
|
1176
|
-
function
|
|
1176
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
1177
1177
|
i0.ɵɵelementStart(0, "span");
|
|
1178
|
-
i0.ɵɵtemplate(1,
|
|
1179
|
-
i0.ɵɵtemplate(2,
|
|
1178
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_1_Template, 4, 3, "span", 6);
|
|
1179
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_span_2_Template, 2, 0, "span", 6);
|
|
1180
1180
|
i0.ɵɵelementEnd();
|
|
1181
1181
|
} if (rf & 2) {
|
|
1182
1182
|
const m_r18 = i0.ɵɵnextContext(4).index;
|
|
@@ -1186,10 +1186,10 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
1186
1186
|
i0.ɵɵadvance(1);
|
|
1187
1187
|
i0.ɵɵproperty("ngIf", ctx_r190.tabularReport.matrix.attributes[ctx_r190.tabularReport.rowGrouping.length + m_r18].widgetSubType !== "numeric");
|
|
1188
1188
|
} }
|
|
1189
|
-
function
|
|
1190
|
-
i0.ɵɵelementStart(0, "td",
|
|
1191
|
-
i0.ɵɵtemplate(1,
|
|
1192
|
-
i0.ɵɵtemplate(2,
|
|
1189
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_Template(rf, ctx) { if (rf & 1) {
|
|
1190
|
+
i0.ɵɵelementStart(0, "td", 31);
|
|
1191
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_ng_container_1_Template, 11, 9, "ng-container", 6);
|
|
1192
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_span_2_Template, 3, 2, "span", 6);
|
|
1193
1193
|
i0.ɵɵelementEnd();
|
|
1194
1194
|
} if (rf & 2) {
|
|
1195
1195
|
const data_r24 = i0.ɵɵnextContext().$implicit;
|
|
@@ -1201,11 +1201,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
1201
1201
|
i0.ɵɵadvance(1);
|
|
1202
1202
|
i0.ɵɵproperty("ngIf", !data_r24);
|
|
1203
1203
|
} }
|
|
1204
|
-
function
|
|
1204
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
|
1205
1205
|
i0.ɵɵelementContainerStart(0);
|
|
1206
|
-
i0.ɵɵtemplate(1,
|
|
1207
|
-
i0.ɵɵtemplate(2,
|
|
1208
|
-
i0.ɵɵtemplate(3,
|
|
1206
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_1_Template, 3, 13, "td", 23);
|
|
1207
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_2_Template, 3, 13, "td", 24);
|
|
1208
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_td_3_Template, 3, 13, "td", 25);
|
|
1209
1209
|
i0.ɵɵelementContainerEnd();
|
|
1210
1210
|
} if (rf & 2) {
|
|
1211
1211
|
const ctx_r22 = i0.ɵɵnextContext(6);
|
|
@@ -1216,8 +1216,8 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_c
|
|
|
1216
1216
|
i0.ɵɵadvance(1);
|
|
1217
1217
|
i0.ɵɵproperty("ngIf", ctx_r22.tabularReport.colGrouping.length > 1 && ctx_r22.tabularReport.integerArray.length === 0);
|
|
1218
1218
|
} }
|
|
1219
|
-
function
|
|
1220
|
-
i0.ɵɵelementStart(0, "td",
|
|
1219
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_td_7_Template(rf, ctx) { if (rf & 1) {
|
|
1220
|
+
i0.ɵɵelementStart(0, "td", 31);
|
|
1221
1221
|
i0.ɵɵtext(1, " Total ");
|
|
1222
1222
|
i0.ɵɵelementEnd();
|
|
1223
1223
|
} if (rf & 2) {
|
|
@@ -1231,10 +1231,14 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_Temp
|
|
|
1231
1231
|
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_td_1_Template, 1, 2, "td", 17);
|
|
1232
1232
|
i0.ɵɵelementStart(2, "th", 18);
|
|
1233
1233
|
i0.ɵɵlistener("contextmenu", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_Template_th_contextmenu_2_listener($event) { i0.ɵɵrestoreView(_r268); const ctx_r267 = i0.ɵɵnextContext(5); return ctx_r267.onContextMenu($event, ctx_r267.i); });
|
|
1234
|
-
i0.ɵɵ
|
|
1234
|
+
i0.ɵɵelementStart(3, "div", 19);
|
|
1235
|
+
i0.ɵɵelementStart(4, "span", 20);
|
|
1236
|
+
i0.ɵɵtext(5);
|
|
1237
|
+
i0.ɵɵelementEnd();
|
|
1238
|
+
i0.ɵɵelementEnd();
|
|
1235
1239
|
i0.ɵɵelementEnd();
|
|
1236
|
-
i0.ɵɵtemplate(
|
|
1237
|
-
i0.ɵɵtemplate(
|
|
1240
|
+
i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_ng_container_6_Template, 4, 3, "ng-container", 15);
|
|
1241
|
+
i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_td_7_Template, 2, 9, "td", 21);
|
|
1238
1242
|
i0.ɵɵelementEnd();
|
|
1239
1243
|
} if (rf & 2) {
|
|
1240
1244
|
const _attr_r16 = i0.ɵɵnextContext().$implicit;
|
|
@@ -1242,9 +1246,9 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_Temp
|
|
|
1242
1246
|
i0.ɵɵadvance(1);
|
|
1243
1247
|
i0.ɵɵproperty("ngIf", ctx_r19.tabularReport.rowGrouping.length === 2);
|
|
1244
1248
|
i0.ɵɵadvance(1);
|
|
1245
|
-
i0.ɵɵstyleProp("color", ctx_r19.tabularReport.tableStyle.header.font.color)("font-family", ctx_r19.tabularReport.tableStyle.header.font.family)("color", ctx_r19.tabularReport.tableStyle.header.font.color)("background", ctx_r19.tabularReport.tableStyle.header.backgroundColor)("font-size", ctx_r19.tabularReport.tableStyle.header.font.size, "px")("border", ctx_r19.tabularReport.tableStyle.border.width + "px" + " " + ctx_r19.tabularReport.tableStyle.border.borderStyle + " " + ctx_r19.tabularReport.tableStyle.border.color)("text-align",
|
|
1249
|
+
i0.ɵɵstyleProp("color", ctx_r19.tabularReport.tableStyle.header.font.color)("font-family", ctx_r19.tabularReport.tableStyle.header.font.family)("color", ctx_r19.tabularReport.tableStyle.header.font.color)("background", ctx_r19.tabularReport.tableStyle.header.backgroundColor)("font-size", ctx_r19.tabularReport.tableStyle.header.font.size, "px")("border", ctx_r19.tabularReport.tableStyle.border.width + "px" + " " + ctx_r19.tabularReport.tableStyle.border.borderStyle + " " + ctx_r19.tabularReport.tableStyle.border.color)("text-align", _attr_r16.alignment);
|
|
1246
1250
|
i0.ɵɵproperty("id", ctx_r19.th);
|
|
1247
|
-
i0.ɵɵadvance(
|
|
1251
|
+
i0.ɵɵadvance(3);
|
|
1248
1252
|
i0.ɵɵtextInterpolate(_attr_r16.label);
|
|
1249
1253
|
i0.ɵɵadvance(1);
|
|
1250
1254
|
i0.ɵɵproperty("ngForOf", _attr_r16.uniqueSeries);
|
|
@@ -1252,12 +1256,12 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_Temp
|
|
|
1252
1256
|
i0.ɵɵproperty("ngIf", ctx_r19.tabularReport.showGrandTotal);
|
|
1253
1257
|
} }
|
|
1254
1258
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
1255
|
-
i0.ɵɵelement(0, "td",
|
|
1259
|
+
i0.ɵɵelement(0, "td", 22);
|
|
1256
1260
|
} if (rf & 2) {
|
|
1257
1261
|
const ctx_r270 = i0.ɵɵnextContext(6);
|
|
1258
1262
|
i0.ɵɵstyleProp("border", ctx_r270.tabularReport.tableStyle.border.width + "px" + " " + ctx_r270.tabularReport.tableStyle.border.borderStyle + " " + ctx_r270.tabularReport.tableStyle.border.color);
|
|
1259
1263
|
} }
|
|
1260
|
-
function
|
|
1264
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
1261
1265
|
i0.ɵɵelementContainerStart(0);
|
|
1262
1266
|
i0.ɵɵelementStart(1, "span");
|
|
1263
1267
|
i0.ɵɵtext(2);
|
|
@@ -1271,7 +1275,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1271
1275
|
i0.ɵɵadvance(2);
|
|
1272
1276
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(3, 1, ctx_r288.moment(data_r275 + "Z"), ctx_r288.tabularReport.matrix.attributes[ctx_r288.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
|
|
1273
1277
|
} }
|
|
1274
|
-
function
|
|
1278
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
1275
1279
|
i0.ɵɵelementContainerStart(0);
|
|
1276
1280
|
i0.ɵɵelementStart(1, "span");
|
|
1277
1281
|
i0.ɵɵtext(2);
|
|
@@ -1282,7 +1286,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1282
1286
|
i0.ɵɵadvance(2);
|
|
1283
1287
|
i0.ɵɵtextInterpolate(data_r275);
|
|
1284
1288
|
} }
|
|
1285
|
-
function
|
|
1289
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_3_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
1286
1290
|
i0.ɵɵelementStart(0, "span");
|
|
1287
1291
|
i0.ɵɵtext(1);
|
|
1288
1292
|
i0.ɵɵpipe(2, "date");
|
|
@@ -1294,16 +1298,16 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1294
1298
|
i0.ɵɵadvance(1);
|
|
1295
1299
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, ctx_r296.moment(data_r275, "hh:mm:ss"), ctx_r296.tabularReport.matrix.attributes[ctx_r296.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
|
|
1296
1300
|
} }
|
|
1297
|
-
function
|
|
1301
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
1298
1302
|
i0.ɵɵelementContainerStart(0);
|
|
1299
|
-
i0.ɵɵtemplate(1,
|
|
1303
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_3_span_1_Template, 3, 4, "span", 6);
|
|
1300
1304
|
i0.ɵɵelementContainerEnd();
|
|
1301
1305
|
} if (rf & 2) {
|
|
1302
1306
|
const data_r275 = i0.ɵɵnextContext(3).$implicit;
|
|
1303
1307
|
i0.ɵɵadvance(1);
|
|
1304
1308
|
i0.ɵɵproperty("ngIf", data_r275);
|
|
1305
1309
|
} }
|
|
1306
|
-
function
|
|
1310
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_4_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
1307
1311
|
i0.ɵɵelementStart(0, "span");
|
|
1308
1312
|
i0.ɵɵtext(1);
|
|
1309
1313
|
i0.ɵɵpipe(2, "date");
|
|
@@ -1315,9 +1319,9 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1315
1319
|
i0.ɵɵadvance(1);
|
|
1316
1320
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, data_r275, ctx_r300.tabularReport.matrix.attributes[ctx_r300.tabularReport.rowGrouping.length + m_r18].valueFormatting.date));
|
|
1317
1321
|
} }
|
|
1318
|
-
function
|
|
1322
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
1319
1323
|
i0.ɵɵelementContainerStart(0);
|
|
1320
|
-
i0.ɵɵtemplate(1,
|
|
1324
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_4_span_1_Template, 3, 4, "span", 6);
|
|
1321
1325
|
i0.ɵɵelementContainerEnd();
|
|
1322
1326
|
} if (rf & 2) {
|
|
1323
1327
|
const m_r18 = i0.ɵɵnextContext(6).index;
|
|
@@ -1325,7 +1329,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1325
1329
|
i0.ɵɵadvance(1);
|
|
1326
1330
|
i0.ɵɵproperty("ngIf", ctx_r291.tabularReport.matrix.attributes[ctx_r291.tabularReport.rowGrouping.length + m_r18].widgetSubType === "date");
|
|
1327
1331
|
} }
|
|
1328
|
-
function
|
|
1332
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
1329
1333
|
i0.ɵɵelementContainerStart(0);
|
|
1330
1334
|
i0.ɵɵtext(1);
|
|
1331
1335
|
i0.ɵɵelementContainerEnd();
|
|
@@ -1334,13 +1338,13 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1334
1338
|
i0.ɵɵadvance(1);
|
|
1335
1339
|
i0.ɵɵtextInterpolate1(" ", data_r275, " ");
|
|
1336
1340
|
} }
|
|
1337
|
-
function
|
|
1341
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
1338
1342
|
i0.ɵɵelementStart(0, "span");
|
|
1339
|
-
i0.ɵɵtemplate(1,
|
|
1340
|
-
i0.ɵɵtemplate(2,
|
|
1341
|
-
i0.ɵɵtemplate(3,
|
|
1342
|
-
i0.ɵɵtemplate(4,
|
|
1343
|
-
i0.ɵɵtemplate(5,
|
|
1343
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_1_Template, 4, 4, "ng-container", 6);
|
|
1344
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_2_Template, 3, 1, "ng-container", 6);
|
|
1345
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_3_Template, 2, 1, "ng-container", 6);
|
|
1346
|
+
i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_4_Template, 2, 1, "ng-container", 6);
|
|
1347
|
+
i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_ng_container_5_Template, 2, 1, "ng-container", 6);
|
|
1344
1348
|
i0.ɵɵelementEnd();
|
|
1345
1349
|
} if (rf & 2) {
|
|
1346
1350
|
const m_r18 = i0.ɵɵnextContext(5).index;
|
|
@@ -1356,7 +1360,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1356
1360
|
i0.ɵɵadvance(1);
|
|
1357
1361
|
i0.ɵɵproperty("ngIf", ctx_r279.tabularReport.matrix.attributes[ctx_r279.tabularReport.rowGrouping.length + m_r18].widgetSubType === "date_range");
|
|
1358
1362
|
} }
|
|
1359
|
-
function
|
|
1363
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
1360
1364
|
i0.ɵɵelementStart(0, "span");
|
|
1361
1365
|
i0.ɵɵtext(1);
|
|
1362
1366
|
i0.ɵɵelementEnd();
|
|
@@ -1365,7 +1369,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1365
1369
|
i0.ɵɵadvance(1);
|
|
1366
1370
|
i0.ɵɵtextInterpolate1(" ", data_r275, " ");
|
|
1367
1371
|
} }
|
|
1368
|
-
function
|
|
1372
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_2_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
1369
1373
|
i0.ɵɵelementStart(0, "span");
|
|
1370
1374
|
i0.ɵɵtext(1);
|
|
1371
1375
|
i0.ɵɵpipe(2, "currency");
|
|
@@ -1377,7 +1381,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1377
1381
|
i0.ɵɵadvance(1);
|
|
1378
1382
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, data_r275, ctx_r309.tabularReport.matrix.attributes[ctx_r309.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency, "symbol"));
|
|
1379
1383
|
} }
|
|
1380
|
-
function
|
|
1384
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_2_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
1381
1385
|
i0.ɵɵelementStart(0, "span");
|
|
1382
1386
|
i0.ɵɵtext(1);
|
|
1383
1387
|
i0.ɵɵpipe(2, "axoPercentage");
|
|
@@ -1389,7 +1393,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1389
1393
|
i0.ɵɵadvance(1);
|
|
1390
1394
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, data_r275, ctx_r310.tabularReport.matrix.attributes[ctx_r310.tabularReport.rowGrouping.length + m_r18].series, "column"));
|
|
1391
1395
|
} }
|
|
1392
|
-
function
|
|
1396
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
1393
1397
|
i0.ɵɵelementStart(0, "span");
|
|
1394
1398
|
i0.ɵɵtext(1);
|
|
1395
1399
|
i0.ɵɵelementEnd();
|
|
@@ -1398,11 +1402,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1398
1402
|
i0.ɵɵadvance(1);
|
|
1399
1403
|
i0.ɵɵtextInterpolate(data_r275);
|
|
1400
1404
|
} }
|
|
1401
|
-
function
|
|
1405
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
1402
1406
|
i0.ɵɵelementStart(0, "span");
|
|
1403
|
-
i0.ɵɵtemplate(1,
|
|
1404
|
-
i0.ɵɵtemplate(2,
|
|
1405
|
-
i0.ɵɵtemplate(3,
|
|
1407
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_2_span_1_Template, 3, 5, "span", 6);
|
|
1408
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_2_span_2_Template, 3, 5, "span", 6);
|
|
1409
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_2_span_3_Template, 2, 1, "span", 6);
|
|
1406
1410
|
i0.ɵɵelementEnd();
|
|
1407
1411
|
} if (rf & 2) {
|
|
1408
1412
|
const m_r18 = i0.ɵɵnextContext(6).index;
|
|
@@ -1414,10 +1418,10 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1414
1418
|
i0.ɵɵadvance(1);
|
|
1415
1419
|
i0.ɵɵproperty("ngIf", !ctx_r307.tabularReport.matrix.attributes[ctx_r307.tabularReport.rowGrouping.length + m_r18].valueFormatting.percentage && !ctx_r307.tabularReport.matrix.attributes[ctx_r307.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency);
|
|
1416
1420
|
} }
|
|
1417
|
-
function
|
|
1421
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
1418
1422
|
i0.ɵɵelementStart(0, "span");
|
|
1419
|
-
i0.ɵɵtemplate(1,
|
|
1420
|
-
i0.ɵɵtemplate(2,
|
|
1423
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_1_Template, 2, 1, "span", 6);
|
|
1424
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_span_2_Template, 4, 3, "span", 6);
|
|
1421
1425
|
i0.ɵɵelementEnd();
|
|
1422
1426
|
} if (rf & 2) {
|
|
1423
1427
|
const m_r18 = i0.ɵɵnextContext(5).index;
|
|
@@ -1427,11 +1431,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1427
1431
|
i0.ɵɵadvance(1);
|
|
1428
1432
|
i0.ɵɵproperty("ngIf", ctx_r280.tabularReport.matrix.attributes[ctx_r280.tabularReport.rowGrouping.length + m_r18].widgetSubType === "numeric");
|
|
1429
1433
|
} }
|
|
1430
|
-
function
|
|
1434
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
1431
1435
|
const _r321 = i0.ɵɵgetCurrentView();
|
|
1432
1436
|
i0.ɵɵelementStart(0, "span");
|
|
1433
|
-
i0.ɵɵelementStart(1, "span",
|
|
1434
|
-
i0.ɵɵlistener("click", function
|
|
1437
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
1438
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_4_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r321); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r319 = i0.ɵɵnextContext(7); return ctx_r319.redirect($event, data_r275); });
|
|
1435
1439
|
i0.ɵɵtext(2);
|
|
1436
1440
|
i0.ɵɵelementEnd();
|
|
1437
1441
|
i0.ɵɵelementEnd();
|
|
@@ -1443,11 +1447,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1443
1447
|
i0.ɵɵadvance(1);
|
|
1444
1448
|
i0.ɵɵtextInterpolate(data_r275);
|
|
1445
1449
|
} }
|
|
1446
|
-
function
|
|
1450
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_5_Template(rf, ctx) { if (rf & 1) {
|
|
1447
1451
|
const _r324 = i0.ɵɵgetCurrentView();
|
|
1448
1452
|
i0.ɵɵelementStart(0, "span");
|
|
1449
|
-
i0.ɵɵelementStart(1, "span",
|
|
1450
|
-
i0.ɵɵlistener("click", function
|
|
1453
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
1454
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_5_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r324); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r323 = i0.ɵɵnextContext(7); return ctx_r323.redirect($event, ctx_r323.x1ImageMediaUrl + data_r275); });
|
|
1451
1455
|
i0.ɵɵtext(2);
|
|
1452
1456
|
i0.ɵɵelementEnd();
|
|
1453
1457
|
i0.ɵɵelementEnd();
|
|
@@ -1459,11 +1463,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1459
1463
|
i0.ɵɵadvance(1);
|
|
1460
1464
|
i0.ɵɵtextInterpolate(data_r275);
|
|
1461
1465
|
} }
|
|
1462
|
-
function
|
|
1466
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_6_Template(rf, ctx) { if (rf & 1) {
|
|
1463
1467
|
const _r328 = i0.ɵɵgetCurrentView();
|
|
1464
1468
|
i0.ɵɵelementStart(0, "span");
|
|
1465
|
-
i0.ɵɵelementStart(1, "span",
|
|
1466
|
-
i0.ɵɵlistener("click", function
|
|
1469
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
1470
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_6_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r328); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r327 = i0.ɵɵnextContext(7); return ctx_r327.redirect($event, ctx_r327.x1ImageMediaUrl + data_r275); });
|
|
1467
1471
|
i0.ɵɵtext(2);
|
|
1468
1472
|
i0.ɵɵelementEnd();
|
|
1469
1473
|
i0.ɵɵelementEnd();
|
|
@@ -1475,11 +1479,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1475
1479
|
i0.ɵɵadvance(1);
|
|
1476
1480
|
i0.ɵɵtextInterpolate(data_r275);
|
|
1477
1481
|
} }
|
|
1478
|
-
function
|
|
1482
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_7_Template(rf, ctx) { if (rf & 1) {
|
|
1479
1483
|
const _r332 = i0.ɵɵgetCurrentView();
|
|
1480
1484
|
i0.ɵɵelementStart(0, "span");
|
|
1481
|
-
i0.ɵɵelementStart(1, "span",
|
|
1482
|
-
i0.ɵɵlistener("click", function
|
|
1485
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
1486
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_7_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r332); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r331 = i0.ɵɵnextContext(7); return ctx_r331.redirect($event, ctx_r331.x1ImageMediaUrl + data_r275); });
|
|
1483
1487
|
i0.ɵɵtext(2);
|
|
1484
1488
|
i0.ɵɵelementEnd();
|
|
1485
1489
|
i0.ɵɵelementEnd();
|
|
@@ -1491,11 +1495,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1491
1495
|
i0.ɵɵadvance(1);
|
|
1492
1496
|
i0.ɵɵtextInterpolate(data_r275);
|
|
1493
1497
|
} }
|
|
1494
|
-
function
|
|
1498
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_8_Template(rf, ctx) { if (rf & 1) {
|
|
1495
1499
|
const _r336 = i0.ɵɵgetCurrentView();
|
|
1496
1500
|
i0.ɵɵelementStart(0, "span");
|
|
1497
|
-
i0.ɵɵelementStart(1, "span",
|
|
1498
|
-
i0.ɵɵlistener("click", function
|
|
1501
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
1502
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_8_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r336); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r335 = i0.ɵɵnextContext(7); return ctx_r335.redirect($event, ctx_r335.x1ImageMediaUrl + data_r275); });
|
|
1499
1503
|
i0.ɵɵtext(2);
|
|
1500
1504
|
i0.ɵɵelementEnd();
|
|
1501
1505
|
i0.ɵɵelementEnd();
|
|
@@ -1507,11 +1511,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1507
1511
|
i0.ɵɵadvance(1);
|
|
1508
1512
|
i0.ɵɵtextInterpolate(data_r275);
|
|
1509
1513
|
} }
|
|
1510
|
-
function
|
|
1514
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_9_Template(rf, ctx) { if (rf & 1) {
|
|
1511
1515
|
const _r340 = i0.ɵɵgetCurrentView();
|
|
1512
1516
|
i0.ɵɵelementStart(0, "span");
|
|
1513
|
-
i0.ɵɵelementStart(1, "span",
|
|
1514
|
-
i0.ɵɵlistener("click", function
|
|
1517
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
1518
|
+
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_9_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r340); const data_r275 = i0.ɵɵnextContext(2).$implicit; const ctx_r339 = i0.ɵɵnextContext(7); return ctx_r339.redirect($event, ctx_r339.x1ImageMediaUrl + data_r275); });
|
|
1515
1519
|
i0.ɵɵtext(2);
|
|
1516
1520
|
i0.ɵɵelementEnd();
|
|
1517
1521
|
i0.ɵɵelementEnd();
|
|
@@ -1523,7 +1527,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1523
1527
|
i0.ɵɵadvance(1);
|
|
1524
1528
|
i0.ɵɵtextInterpolate(data_r275);
|
|
1525
1529
|
} }
|
|
1526
|
-
function
|
|
1530
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_10_Template(rf, ctx) { if (rf & 1) {
|
|
1527
1531
|
i0.ɵɵelementStart(0, "span");
|
|
1528
1532
|
i0.ɵɵtext(1);
|
|
1529
1533
|
i0.ɵɵelementEnd();
|
|
@@ -1532,18 +1536,18 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1532
1536
|
i0.ɵɵadvance(1);
|
|
1533
1537
|
i0.ɵɵtextInterpolate(data_r275);
|
|
1534
1538
|
} }
|
|
1535
|
-
function
|
|
1539
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
1536
1540
|
i0.ɵɵelementContainerStart(0);
|
|
1537
|
-
i0.ɵɵelementStart(1, "div",
|
|
1538
|
-
i0.ɵɵtemplate(2,
|
|
1539
|
-
i0.ɵɵtemplate(3,
|
|
1540
|
-
i0.ɵɵtemplate(4,
|
|
1541
|
-
i0.ɵɵtemplate(5,
|
|
1542
|
-
i0.ɵɵtemplate(6,
|
|
1543
|
-
i0.ɵɵtemplate(7,
|
|
1544
|
-
i0.ɵɵtemplate(8,
|
|
1545
|
-
i0.ɵɵtemplate(9,
|
|
1546
|
-
i0.ɵɵtemplate(10,
|
|
1541
|
+
i0.ɵɵelementStart(1, "div", 27);
|
|
1542
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_2_Template, 6, 5, "span", 28);
|
|
1543
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_3_Template, 3, 2, "span", 28);
|
|
1544
|
+
i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_4_Template, 3, 2, "span", 28);
|
|
1545
|
+
i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_5_Template, 3, 2, "span", 28);
|
|
1546
|
+
i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_6_Template, 3, 2, "span", 28);
|
|
1547
|
+
i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_7_Template, 3, 2, "span", 28);
|
|
1548
|
+
i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_8_Template, 3, 2, "span", 28);
|
|
1549
|
+
i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_9_Template, 3, 2, "span", 28);
|
|
1550
|
+
i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_span_10_Template, 2, 1, "span", 29);
|
|
1547
1551
|
i0.ɵɵelementEnd();
|
|
1548
1552
|
i0.ɵɵelementContainerEnd();
|
|
1549
1553
|
} if (rf & 2) {
|
|
@@ -1568,7 +1572,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1568
1572
|
i0.ɵɵadvance(1);
|
|
1569
1573
|
i0.ɵɵproperty("ngSwitchCase", "imagecapture-widget");
|
|
1570
1574
|
} }
|
|
1571
|
-
function
|
|
1575
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_1_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
1572
1576
|
i0.ɵɵelementStart(0, "span");
|
|
1573
1577
|
i0.ɵɵtext(1);
|
|
1574
1578
|
i0.ɵɵpipe(2, "currency");
|
|
@@ -1579,7 +1583,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1579
1583
|
i0.ɵɵadvance(1);
|
|
1580
1584
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, 0, ctx_r347.tabularReport.matrix.attributes[ctx_r347.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency, "symbol"));
|
|
1581
1585
|
} }
|
|
1582
|
-
function
|
|
1586
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_1_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
1583
1587
|
i0.ɵɵelementStart(0, "span");
|
|
1584
1588
|
i0.ɵɵtext(1);
|
|
1585
1589
|
i0.ɵɵpipe(2, "axoPercentage");
|
|
@@ -1590,7 +1594,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1590
1594
|
i0.ɵɵadvance(1);
|
|
1591
1595
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, 0, ctx_r348.tabularReport.matrix.attributes[ctx_r348.tabularReport.rowGrouping.length + m_r18].series, "detail"));
|
|
1592
1596
|
} }
|
|
1593
|
-
function
|
|
1597
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_1_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
1594
1598
|
i0.ɵɵelementStart(0, "span");
|
|
1595
1599
|
i0.ɵɵtext(1);
|
|
1596
1600
|
i0.ɵɵelementEnd();
|
|
@@ -1598,11 +1602,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1598
1602
|
i0.ɵɵadvance(1);
|
|
1599
1603
|
i0.ɵɵtextInterpolate(0);
|
|
1600
1604
|
} }
|
|
1601
|
-
function
|
|
1605
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
1602
1606
|
i0.ɵɵelementStart(0, "span");
|
|
1603
|
-
i0.ɵɵtemplate(1,
|
|
1604
|
-
i0.ɵɵtemplate(2,
|
|
1605
|
-
i0.ɵɵtemplate(3,
|
|
1607
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_1_span_1_Template, 3, 5, "span", 6);
|
|
1608
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_1_span_2_Template, 3, 5, "span", 6);
|
|
1609
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_1_span_3_Template, 2, 1, "span", 6);
|
|
1606
1610
|
i0.ɵɵelementEnd();
|
|
1607
1611
|
} if (rf & 2) {
|
|
1608
1612
|
const m_r18 = i0.ɵɵnextContext(5).index;
|
|
@@ -1614,15 +1618,15 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1614
1618
|
i0.ɵɵadvance(1);
|
|
1615
1619
|
i0.ɵɵproperty("ngIf", !ctx_r345.tabularReport.matrix.attributes[ctx_r345.tabularReport.rowGrouping.length + m_r18].valueFormatting.percentage && !ctx_r345.tabularReport.matrix.attributes[ctx_r345.tabularReport.rowGrouping.length + m_r18].valueFormatting.currency);
|
|
1616
1620
|
} }
|
|
1617
|
-
function
|
|
1621
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
1618
1622
|
i0.ɵɵelementStart(0, "span");
|
|
1619
1623
|
i0.ɵɵtext(1, "-");
|
|
1620
1624
|
i0.ɵɵelementEnd();
|
|
1621
1625
|
} }
|
|
1622
|
-
function
|
|
1626
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
1623
1627
|
i0.ɵɵelementStart(0, "span");
|
|
1624
|
-
i0.ɵɵtemplate(1,
|
|
1625
|
-
i0.ɵɵtemplate(2,
|
|
1628
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_1_Template, 4, 3, "span", 6);
|
|
1629
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_span_2_Template, 2, 0, "span", 6);
|
|
1626
1630
|
i0.ɵɵelementEnd();
|
|
1627
1631
|
} if (rf & 2) {
|
|
1628
1632
|
const m_r18 = i0.ɵɵnextContext(4).index;
|
|
@@ -1632,13 +1636,13 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1632
1636
|
i0.ɵɵadvance(1);
|
|
1633
1637
|
i0.ɵɵproperty("ngIf", ctx_r278.tabularReport.matrix.attributes[ctx_r278.tabularReport.rowGrouping.length + m_r18].widgetSubType !== "numeric");
|
|
1634
1638
|
} }
|
|
1635
|
-
function
|
|
1639
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
1636
1640
|
const _r356 = i0.ɵɵgetCurrentView();
|
|
1637
1641
|
i0.ɵɵelementContainerStart(0);
|
|
1638
|
-
i0.ɵɵelementStart(1, "td",
|
|
1639
|
-
i0.ɵɵlistener("contextmenu", function
|
|
1640
|
-
i0.ɵɵtemplate(2,
|
|
1641
|
-
i0.ɵɵtemplate(3,
|
|
1642
|
+
i0.ɵɵelementStart(1, "td", 26);
|
|
1643
|
+
i0.ɵɵlistener("contextmenu", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_Template_td_contextmenu_1_listener($event) { i0.ɵɵrestoreView(_r356); const _attr_r16 = i0.ɵɵnextContext(3).$implicit; const ctx_r354 = i0.ɵɵnextContext(4); return ctx_r354.drillThroughContext($event, _attr_r16, ctx_r354.i); });
|
|
1644
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_ng_container_2_Template, 11, 9, "ng-container", 6);
|
|
1645
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_span_3_Template, 3, 2, "span", 6);
|
|
1642
1646
|
i0.ɵɵelementEnd();
|
|
1643
1647
|
i0.ɵɵelementContainerEnd();
|
|
1644
1648
|
} if (rf & 2) {
|
|
@@ -1652,9 +1656,9 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1652
1656
|
i0.ɵɵadvance(1);
|
|
1653
1657
|
i0.ɵɵproperty("ngIf", !data_r275);
|
|
1654
1658
|
} }
|
|
1655
|
-
function
|
|
1659
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
|
1656
1660
|
i0.ɵɵelementContainerStart(0);
|
|
1657
|
-
i0.ɵɵtemplate(1,
|
|
1661
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_ng_container_1_Template, 4, 13, "ng-container", 15);
|
|
1658
1662
|
i0.ɵɵelementContainerEnd();
|
|
1659
1663
|
} if (rf & 2) {
|
|
1660
1664
|
const series_r273 = ctx.$implicit;
|
|
@@ -1662,8 +1666,8 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_c
|
|
|
1662
1666
|
i0.ɵɵadvance(1);
|
|
1663
1667
|
i0.ɵɵproperty("ngForOf", ctx_r271.tabularReport.secondColData.get(series_r273));
|
|
1664
1668
|
} }
|
|
1665
|
-
function
|
|
1666
|
-
i0.ɵɵelementStart(0, "td",
|
|
1669
|
+
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_td_7_Template(rf, ctx) { if (rf & 1) {
|
|
1670
|
+
i0.ɵɵelementStart(0, "td", 31);
|
|
1667
1671
|
i0.ɵɵtext(1, "-");
|
|
1668
1672
|
i0.ɵɵelementEnd();
|
|
1669
1673
|
} if (rf & 2) {
|
|
@@ -1674,11 +1678,15 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_td_5
|
|
|
1674
1678
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_Template(rf, ctx) { if (rf & 1) {
|
|
1675
1679
|
i0.ɵɵelementStart(0, "tr");
|
|
1676
1680
|
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_td_1_Template, 1, 2, "td", 17);
|
|
1677
|
-
i0.ɵɵelementStart(2, "th",
|
|
1678
|
-
i0.ɵɵ
|
|
1681
|
+
i0.ɵɵelementStart(2, "th", 32);
|
|
1682
|
+
i0.ɵɵelementStart(3, "div", 19);
|
|
1683
|
+
i0.ɵɵelementStart(4, "span", 20);
|
|
1684
|
+
i0.ɵɵtext(5);
|
|
1685
|
+
i0.ɵɵelementEnd();
|
|
1686
|
+
i0.ɵɵelementEnd();
|
|
1679
1687
|
i0.ɵɵelementEnd();
|
|
1680
|
-
i0.ɵɵtemplate(
|
|
1681
|
-
i0.ɵɵtemplate(
|
|
1688
|
+
i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_ng_container_6_Template, 2, 1, "ng-container", 15);
|
|
1689
|
+
i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_td_7_Template, 2, 9, "td", 21);
|
|
1682
1690
|
i0.ɵɵelementEnd();
|
|
1683
1691
|
} if (rf & 2) {
|
|
1684
1692
|
const _attr_r16 = i0.ɵɵnextContext().$implicit;
|
|
@@ -1686,9 +1694,9 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_Temp
|
|
|
1686
1694
|
i0.ɵɵadvance(1);
|
|
1687
1695
|
i0.ɵɵproperty("ngIf", ctx_r20.tabularReport.rowGrouping.length === 2);
|
|
1688
1696
|
i0.ɵɵadvance(1);
|
|
1689
|
-
i0.ɵɵstyleProp("color", ctx_r20.tabularReport.tableStyle.header.font.color)("font-family", ctx_r20.tabularReport.tableStyle.header.font.family)("background", ctx_r20.tabularReport.tableStyle.header.backgroundColor)("font-size", ctx_r20.tabularReport.tableStyle.header.font.size, "px")("border", ctx_r20.tabularReport.tableStyle.border.width + "px" + " " + ctx_r20.tabularReport.tableStyle.border.borderStyle + " " + ctx_r20.tabularReport.tableStyle.border.color)("text-align",
|
|
1697
|
+
i0.ɵɵstyleProp("color", ctx_r20.tabularReport.tableStyle.header.font.color)("font-family", ctx_r20.tabularReport.tableStyle.header.font.family)("background", ctx_r20.tabularReport.tableStyle.header.backgroundColor)("font-size", ctx_r20.tabularReport.tableStyle.header.font.size, "px")("border", ctx_r20.tabularReport.tableStyle.border.width + "px" + " " + ctx_r20.tabularReport.tableStyle.border.borderStyle + " " + ctx_r20.tabularReport.tableStyle.border.color)("text-align", _attr_r16.alignment);
|
|
1690
1698
|
i0.ɵɵproperty("id", ctx_r20.th);
|
|
1691
|
-
i0.ɵɵadvance(
|
|
1699
|
+
i0.ɵɵadvance(3);
|
|
1692
1700
|
i0.ɵɵtextInterpolate(_attr_r16.label);
|
|
1693
1701
|
i0.ɵɵadvance(1);
|
|
1694
1702
|
i0.ɵɵproperty("ngForOf", ctx_r20.tabularReport.colGrouping[0].uniqueSeries);
|
|
@@ -1698,8 +1706,8 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_Temp
|
|
|
1698
1706
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
1699
1707
|
i0.ɵɵelementContainerStart(0);
|
|
1700
1708
|
i0.ɵɵelementContainerStart(1);
|
|
1701
|
-
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_Template,
|
|
1702
|
-
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_Template,
|
|
1709
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_2_Template, 8, 19, "tr", 6);
|
|
1710
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_1_tr_3_Template, 8, 17, "tr", 6);
|
|
1703
1711
|
i0.ɵɵelementContainerEnd();
|
|
1704
1712
|
i0.ɵɵelementContainerEnd();
|
|
1705
1713
|
} if (rf & 2) {
|
|
@@ -1714,8 +1722,8 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_3_Template(
|
|
|
1714
1722
|
i0.ɵɵelementContainerStart(0);
|
|
1715
1723
|
i0.ɵɵelementStart(1, "th", 18);
|
|
1716
1724
|
i0.ɵɵlistener("contextmenu", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_3_Template_th_contextmenu_1_listener($event) { i0.ɵɵrestoreView(_r362); const ctx_r361 = i0.ɵɵnextContext(4); return ctx_r361.onContextMenu($event, ctx_r361.i); });
|
|
1717
|
-
i0.ɵɵelementStart(2, "div",
|
|
1718
|
-
i0.ɵɵelementStart(3, "span",
|
|
1725
|
+
i0.ɵɵelementStart(2, "div", 19);
|
|
1726
|
+
i0.ɵɵelementStart(3, "span", 20);
|
|
1719
1727
|
i0.ɵɵtext(4);
|
|
1720
1728
|
i0.ɵɵelementEnd();
|
|
1721
1729
|
i0.ɵɵelementEnd();
|
|
@@ -1732,9 +1740,11 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_3_Template(
|
|
|
1732
1740
|
} }
|
|
1733
1741
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
1734
1742
|
i0.ɵɵelementContainerStart(0);
|
|
1735
|
-
i0.ɵɵelementStart(1, "th",
|
|
1736
|
-
i0.ɵɵelementStart(2, "
|
|
1737
|
-
i0.ɵɵ
|
|
1743
|
+
i0.ɵɵelementStart(1, "th", 32);
|
|
1744
|
+
i0.ɵɵelementStart(2, "div", 19);
|
|
1745
|
+
i0.ɵɵelementStart(3, "span", 20);
|
|
1746
|
+
i0.ɵɵtext(4);
|
|
1747
|
+
i0.ɵɵelementEnd();
|
|
1738
1748
|
i0.ɵɵelementEnd();
|
|
1739
1749
|
i0.ɵɵelementEnd();
|
|
1740
1750
|
i0.ɵɵelementContainerEnd();
|
|
@@ -1742,24 +1752,28 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_4_ng_contai
|
|
|
1742
1752
|
const attr_r367 = ctx.$implicit;
|
|
1743
1753
|
const ctx_r365 = i0.ɵɵnextContext(5);
|
|
1744
1754
|
i0.ɵɵadvance(1);
|
|
1745
|
-
i0.ɵɵstyleProp("color", ctx_r365.tabularReport.tableStyle.header.font.color)("font-family", ctx_r365.tabularReport.tableStyle.header.font.family)("color", ctx_r365.tabularReport.tableStyle.header.font.color)("background", ctx_r365.tabularReport.tableStyle.header.backgroundColor)("font-size", ctx_r365.tabularReport.tableStyle.header.font.size, "px")("border", ctx_r365.tabularReport.tableStyle.border.width + "px" + " " + ctx_r365.tabularReport.tableStyle.border.borderStyle + " " + ctx_r365.tabularReport.tableStyle.border.color)("text-align",
|
|
1755
|
+
i0.ɵɵstyleProp("color", ctx_r365.tabularReport.tableStyle.header.font.color)("font-family", ctx_r365.tabularReport.tableStyle.header.font.family)("color", ctx_r365.tabularReport.tableStyle.header.font.color)("background", ctx_r365.tabularReport.tableStyle.header.backgroundColor)("font-size", ctx_r365.tabularReport.tableStyle.header.font.size, "px")("border", ctx_r365.tabularReport.tableStyle.border.width + "px" + " " + ctx_r365.tabularReport.tableStyle.border.borderStyle + " " + ctx_r365.tabularReport.tableStyle.border.color)("text-align", attr_r367.alignment);
|
|
1746
1756
|
i0.ɵɵproperty("id", ctx_r365.th);
|
|
1747
|
-
i0.ɵɵadvance(
|
|
1757
|
+
i0.ɵɵadvance(3);
|
|
1748
1758
|
i0.ɵɵtextInterpolate(attr_r367);
|
|
1749
1759
|
} }
|
|
1750
1760
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_4_th_2_Template(rf, ctx) { if (rf & 1) {
|
|
1751
|
-
i0.ɵɵelementStart(0, "th",
|
|
1752
|
-
i0.ɵɵ
|
|
1761
|
+
i0.ɵɵelementStart(0, "th", 32);
|
|
1762
|
+
i0.ɵɵelementStart(1, "div", 19);
|
|
1763
|
+
i0.ɵɵelementStart(2, "span", 20);
|
|
1764
|
+
i0.ɵɵtext(3, "Count");
|
|
1765
|
+
i0.ɵɵelementEnd();
|
|
1766
|
+
i0.ɵɵelementEnd();
|
|
1753
1767
|
i0.ɵɵelementEnd();
|
|
1754
1768
|
} if (rf & 2) {
|
|
1755
1769
|
const ctx_r366 = i0.ɵɵnextContext(5);
|
|
1756
|
-
i0.ɵɵstyleProp("color", ctx_r366.tabularReport.tableStyle.header.font.color)("font-family", ctx_r366.tabularReport.tableStyle.header.font.family)("color", ctx_r366.tabularReport.tableStyle.header.font.color)("background", ctx_r366.tabularReport.tableStyle.header.backgroundColor)("font-size", ctx_r366.tabularReport.tableStyle.header.font.size, "px")("border", ctx_r366.tabularReport.tableStyle.border.width + "px" + " " + ctx_r366.tabularReport.tableStyle.border.borderStyle + " " + ctx_r366.tabularReport.tableStyle.border.color)
|
|
1770
|
+
i0.ɵɵstyleProp("color", ctx_r366.tabularReport.tableStyle.header.font.color)("font-family", ctx_r366.tabularReport.tableStyle.header.font.family)("color", ctx_r366.tabularReport.tableStyle.header.font.color)("background", ctx_r366.tabularReport.tableStyle.header.backgroundColor)("font-size", ctx_r366.tabularReport.tableStyle.header.font.size, "px")("border", ctx_r366.tabularReport.tableStyle.border.width + "px" + " " + ctx_r366.tabularReport.tableStyle.border.borderStyle + " " + ctx_r366.tabularReport.tableStyle.border.color);
|
|
1757
1771
|
i0.ɵɵproperty("id", ctx_r366.th);
|
|
1758
1772
|
} }
|
|
1759
1773
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
1760
1774
|
i0.ɵɵelementContainerStart(0);
|
|
1761
|
-
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_4_ng_container_1_Template,
|
|
1762
|
-
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_4_th_2_Template,
|
|
1775
|
+
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_4_ng_container_1_Template, 5, 16, "ng-container", 15);
|
|
1776
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_4_th_2_Template, 4, 13, "th", 33);
|
|
1763
1777
|
i0.ɵɵelementContainerEnd();
|
|
1764
1778
|
} if (rf & 2) {
|
|
1765
1779
|
const ctx_r12 = i0.ɵɵnextContext(4);
|
|
@@ -1785,7 +1799,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_5_ng_contai
|
|
|
1785
1799
|
i0.ɵɵtextInterpolate(attr_r371);
|
|
1786
1800
|
} }
|
|
1787
1801
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_5_td_2_Template(rf, ctx) { if (rf & 1) {
|
|
1788
|
-
i0.ɵɵelementStart(0, "td",
|
|
1802
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
1789
1803
|
i0.ɵɵtext(1, " Count ");
|
|
1790
1804
|
i0.ɵɵelementEnd();
|
|
1791
1805
|
} if (rf & 2) {
|
|
@@ -2013,7 +2027,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2013
2027
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_6_Template(rf, ctx) { if (rf & 1) {
|
|
2014
2028
|
const _r445 = i0.ɵɵgetCurrentView();
|
|
2015
2029
|
i0.ɵɵelementStart(0, "span");
|
|
2016
|
-
i0.ɵɵelementStart(1, "span",
|
|
2030
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
2017
2031
|
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_6_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r445); const _attr_r383 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r443 = i0.ɵɵnextContext(5); return ctx_r443.redirect($event, _attr_r383.series[i_r375]); });
|
|
2018
2032
|
i0.ɵɵtext(2);
|
|
2019
2033
|
i0.ɵɵelementEnd();
|
|
@@ -2030,7 +2044,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2030
2044
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_7_Template(rf, ctx) { if (rf & 1) {
|
|
2031
2045
|
const _r450 = i0.ɵɵgetCurrentView();
|
|
2032
2046
|
i0.ɵɵelementStart(0, "span");
|
|
2033
|
-
i0.ɵɵelementStart(1, "span",
|
|
2047
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
2034
2048
|
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_7_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r450); const _attr_r383 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r449 = i0.ɵɵnextContext(5); return ctx_r449.redirect($event, ctx_r449.x1ImageMediaUrl + _attr_r383.series[i_r375]); });
|
|
2035
2049
|
i0.ɵɵtext(2);
|
|
2036
2050
|
i0.ɵɵelementEnd();
|
|
@@ -2047,7 +2061,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2047
2061
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_8_Template(rf, ctx) { if (rf & 1) {
|
|
2048
2062
|
const _r456 = i0.ɵɵgetCurrentView();
|
|
2049
2063
|
i0.ɵɵelementStart(0, "span");
|
|
2050
|
-
i0.ɵɵelementStart(1, "span",
|
|
2064
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
2051
2065
|
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_8_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r456); const _attr_r383 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r455 = i0.ɵɵnextContext(5); return ctx_r455.redirect($event, ctx_r455.x1ImageMediaUrl + _attr_r383.series[i_r375]); });
|
|
2052
2066
|
i0.ɵɵtext(2);
|
|
2053
2067
|
i0.ɵɵelementEnd();
|
|
@@ -2064,7 +2078,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2064
2078
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_9_Template(rf, ctx) { if (rf & 1) {
|
|
2065
2079
|
const _r462 = i0.ɵɵgetCurrentView();
|
|
2066
2080
|
i0.ɵɵelementStart(0, "span");
|
|
2067
|
-
i0.ɵɵelementStart(1, "span",
|
|
2081
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
2068
2082
|
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_9_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r462); const _attr_r383 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r461 = i0.ɵɵnextContext(5); return ctx_r461.redirect($event, ctx_r461.x1ImageMediaUrl + _attr_r383.series[i_r375]); });
|
|
2069
2083
|
i0.ɵɵtext(2);
|
|
2070
2084
|
i0.ɵɵelementEnd();
|
|
@@ -2081,7 +2095,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2081
2095
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_10_Template(rf, ctx) { if (rf & 1) {
|
|
2082
2096
|
const _r468 = i0.ɵɵgetCurrentView();
|
|
2083
2097
|
i0.ɵɵelementStart(0, "span");
|
|
2084
|
-
i0.ɵɵelementStart(1, "span",
|
|
2098
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
2085
2099
|
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_10_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r468); const _attr_r383 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r467 = i0.ɵɵnextContext(5); return ctx_r467.redirect($event, ctx_r467.x1ImageMediaUrl + _attr_r383.series[i_r375]); });
|
|
2086
2100
|
i0.ɵɵtext(2);
|
|
2087
2101
|
i0.ɵɵelementEnd();
|
|
@@ -2098,7 +2112,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2098
2112
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_11_Template(rf, ctx) { if (rf & 1) {
|
|
2099
2113
|
const _r474 = i0.ɵɵgetCurrentView();
|
|
2100
2114
|
i0.ɵɵelementStart(0, "span");
|
|
2101
|
-
i0.ɵɵelementStart(1, "span",
|
|
2115
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
2102
2116
|
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_11_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r474); const _attr_r383 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r473 = i0.ɵɵnextContext(5); return ctx_r473.redirect($event, ctx_r473.x1ImageMediaUrl + _attr_r383.series[i_r375]); });
|
|
2103
2117
|
i0.ɵɵtext(2);
|
|
2104
2118
|
i0.ɵɵelementEnd();
|
|
@@ -2132,17 +2146,17 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2132
2146
|
i0.ɵɵelementStart(0, "td", 38);
|
|
2133
2147
|
i0.ɵɵlistener("contextmenu", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_Template_td_contextmenu_0_listener($event) { i0.ɵɵrestoreView(_r483); const _attr_r383 = i0.ɵɵnextContext().$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r481 = i0.ɵɵnextContext(5); return ctx_r481.drillThroughContext($event, _attr_r383, i_r375); });
|
|
2134
2148
|
i0.ɵɵtext(1);
|
|
2135
|
-
i0.ɵɵelementStart(2, "div",
|
|
2136
|
-
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_3_Template, 4, 3, "span",
|
|
2137
|
-
i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_4_Template, 5, 4, "span",
|
|
2138
|
-
i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_5_Template, 3, 2, "span",
|
|
2139
|
-
i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_6_Template, 3, 2, "span",
|
|
2140
|
-
i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_7_Template, 3, 2, "span",
|
|
2141
|
-
i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_8_Template, 3, 2, "span",
|
|
2142
|
-
i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_9_Template, 3, 2, "span",
|
|
2143
|
-
i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_10_Template, 3, 2, "span",
|
|
2144
|
-
i0.ɵɵtemplate(11, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_11_Template, 3, 2, "span",
|
|
2145
|
-
i0.ɵɵtemplate(12, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_12_Template, 2, 1, "span",
|
|
2149
|
+
i0.ɵɵelementStart(2, "div", 27);
|
|
2150
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_3_Template, 4, 3, "span", 28);
|
|
2151
|
+
i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_4_Template, 5, 4, "span", 28);
|
|
2152
|
+
i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_5_Template, 3, 2, "span", 28);
|
|
2153
|
+
i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_6_Template, 3, 2, "span", 28);
|
|
2154
|
+
i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_7_Template, 3, 2, "span", 28);
|
|
2155
|
+
i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_8_Template, 3, 2, "span", 28);
|
|
2156
|
+
i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_9_Template, 3, 2, "span", 28);
|
|
2157
|
+
i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_10_Template, 3, 2, "span", 28);
|
|
2158
|
+
i0.ɵɵtemplate(11, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_11_Template, 3, 2, "span", 28);
|
|
2159
|
+
i0.ɵɵtemplate(12, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_12_Template, 2, 1, "span", 29);
|
|
2146
2160
|
i0.ɵɵtemplate(13, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_2_td_1_span_13_Template, 2, 0, "span", 6);
|
|
2147
2161
|
i0.ɵɵelementEnd();
|
|
2148
2162
|
i0.ɵɵelementEnd();
|
|
@@ -2397,7 +2411,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2397
2411
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_5_Template(rf, ctx) { if (rf & 1) {
|
|
2398
2412
|
const _r551 = i0.ɵɵgetCurrentView();
|
|
2399
2413
|
i0.ɵɵelementStart(0, "span");
|
|
2400
|
-
i0.ɵɵelementStart(1, "span",
|
|
2414
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
2401
2415
|
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_5_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r551); const _attr_r488 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r549 = i0.ɵɵnextContext(5); return ctx_r549.redirect($event, _attr_r488.series[i_r375]); });
|
|
2402
2416
|
i0.ɵɵtext(2);
|
|
2403
2417
|
i0.ɵɵelementEnd();
|
|
@@ -2414,7 +2428,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2414
2428
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_6_Template(rf, ctx) { if (rf & 1) {
|
|
2415
2429
|
const _r556 = i0.ɵɵgetCurrentView();
|
|
2416
2430
|
i0.ɵɵelementStart(0, "span");
|
|
2417
|
-
i0.ɵɵelementStart(1, "span",
|
|
2431
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
2418
2432
|
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_6_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r556); const _attr_r488 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r555 = i0.ɵɵnextContext(5); return ctx_r555.redirect($event, ctx_r555.x1ImageMediaUrl + _attr_r488.series[i_r375]); });
|
|
2419
2433
|
i0.ɵɵtext(2);
|
|
2420
2434
|
i0.ɵɵelementEnd();
|
|
@@ -2431,7 +2445,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2431
2445
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_7_Template(rf, ctx) { if (rf & 1) {
|
|
2432
2446
|
const _r562 = i0.ɵɵgetCurrentView();
|
|
2433
2447
|
i0.ɵɵelementStart(0, "span");
|
|
2434
|
-
i0.ɵɵelementStart(1, "span",
|
|
2448
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
2435
2449
|
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_7_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r562); const _attr_r488 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r561 = i0.ɵɵnextContext(5); return ctx_r561.redirect($event, ctx_r561.x1ImageMediaUrl + _attr_r488.series[i_r375]); });
|
|
2436
2450
|
i0.ɵɵtext(2);
|
|
2437
2451
|
i0.ɵɵelementEnd();
|
|
@@ -2448,7 +2462,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2448
2462
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_8_Template(rf, ctx) { if (rf & 1) {
|
|
2449
2463
|
const _r568 = i0.ɵɵgetCurrentView();
|
|
2450
2464
|
i0.ɵɵelementStart(0, "span");
|
|
2451
|
-
i0.ɵɵelementStart(1, "span",
|
|
2465
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
2452
2466
|
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_8_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r568); const _attr_r488 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r567 = i0.ɵɵnextContext(5); return ctx_r567.redirect($event, ctx_r567.x1ImageMediaUrl + _attr_r488.series[i_r375]); });
|
|
2453
2467
|
i0.ɵɵtext(2);
|
|
2454
2468
|
i0.ɵɵelementEnd();
|
|
@@ -2465,7 +2479,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2465
2479
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_9_Template(rf, ctx) { if (rf & 1) {
|
|
2466
2480
|
const _r574 = i0.ɵɵgetCurrentView();
|
|
2467
2481
|
i0.ɵɵelementStart(0, "span");
|
|
2468
|
-
i0.ɵɵelementStart(1, "span",
|
|
2482
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
2469
2483
|
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_9_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r574); const _attr_r488 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r573 = i0.ɵɵnextContext(5); return ctx_r573.redirect($event, ctx_r573.x1ImageMediaUrl + _attr_r488.series[i_r375]); });
|
|
2470
2484
|
i0.ɵɵtext(2);
|
|
2471
2485
|
i0.ɵɵelementEnd();
|
|
@@ -2482,7 +2496,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2482
2496
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_10_Template(rf, ctx) { if (rf & 1) {
|
|
2483
2497
|
const _r580 = i0.ɵɵgetCurrentView();
|
|
2484
2498
|
i0.ɵɵelementStart(0, "span");
|
|
2485
|
-
i0.ɵɵelementStart(1, "span",
|
|
2499
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
2486
2500
|
i0.ɵɵlistener("click", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_10_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r580); const _attr_r488 = i0.ɵɵnextContext(2).$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r579 = i0.ɵɵnextContext(5); return ctx_r579.redirect($event, ctx_r579.x1ImageMediaUrl + _attr_r488.series[i_r375]); });
|
|
2487
2501
|
i0.ɵɵtext(2);
|
|
2488
2502
|
i0.ɵɵelementEnd();
|
|
@@ -2525,17 +2539,17 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2525
2539
|
const _r591 = i0.ɵɵgetCurrentView();
|
|
2526
2540
|
i0.ɵɵelementStart(0, "td", 40);
|
|
2527
2541
|
i0.ɵɵlistener("contextmenu", function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_Template_td_contextmenu_0_listener($event) { i0.ɵɵrestoreView(_r591); const _attr_r488 = i0.ɵɵnextContext().$implicit; const i_r375 = i0.ɵɵnextContext().index; const ctx_r589 = i0.ɵɵnextContext(5); return ctx_r589.drillThroughContext($event, _attr_r488, i_r375); });
|
|
2528
|
-
i0.ɵɵelementStart(1, "div",
|
|
2529
|
-
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_2_Template, 4, 3, "span",
|
|
2530
|
-
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_3_Template, 5, 4, "span",
|
|
2531
|
-
i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_4_Template, 3, 2, "span",
|
|
2532
|
-
i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_5_Template, 3, 2, "span",
|
|
2533
|
-
i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_6_Template, 3, 2, "span",
|
|
2534
|
-
i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_7_Template, 3, 2, "span",
|
|
2535
|
-
i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_8_Template, 3, 2, "span",
|
|
2536
|
-
i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_9_Template, 3, 2, "span",
|
|
2537
|
-
i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_10_Template, 3, 2, "span",
|
|
2538
|
-
i0.ɵɵtemplate(11, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_11_Template, 2, 1, "span",
|
|
2542
|
+
i0.ɵɵelementStart(1, "div", 27);
|
|
2543
|
+
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_2_Template, 4, 3, "span", 28);
|
|
2544
|
+
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_3_Template, 5, 4, "span", 28);
|
|
2545
|
+
i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_4_Template, 3, 2, "span", 28);
|
|
2546
|
+
i0.ɵɵtemplate(5, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_5_Template, 3, 2, "span", 28);
|
|
2547
|
+
i0.ɵɵtemplate(6, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_6_Template, 3, 2, "span", 28);
|
|
2548
|
+
i0.ɵɵtemplate(7, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_7_Template, 3, 2, "span", 28);
|
|
2549
|
+
i0.ɵɵtemplate(8, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_8_Template, 3, 2, "span", 28);
|
|
2550
|
+
i0.ɵɵtemplate(9, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_9_Template, 3, 2, "span", 28);
|
|
2551
|
+
i0.ɵɵtemplate(10, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_10_Template, 3, 2, "span", 28);
|
|
2552
|
+
i0.ɵɵtemplate(11, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_11_Template, 2, 1, "span", 29);
|
|
2539
2553
|
i0.ɵɵtemplate(12, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_12_Template, 2, 0, "span", 6);
|
|
2540
2554
|
i0.ɵɵtemplate(13, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_3_td_2_span_13_Template, 2, 1, "span", 6);
|
|
2541
2555
|
i0.ɵɵelementEnd();
|
|
@@ -2618,7 +2632,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2618
2632
|
} }
|
|
2619
2633
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
2620
2634
|
i0.ɵɵelementContainerStart(0);
|
|
2621
|
-
i0.ɵɵelementStart(1, "td",
|
|
2635
|
+
i0.ɵɵelementStart(1, "td", 22);
|
|
2622
2636
|
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_4_ng_container_1_span_2_Template, 3, 5, "span", 6);
|
|
2623
2637
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_4_ng_container_1_span_3_Template, 3, 6, "span", 6);
|
|
2624
2638
|
i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_4_ng_container_1_span_4_Template, 2, 1, "span", 6);
|
|
@@ -2669,7 +2683,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2669
2683
|
i0.ɵɵtextInterpolate(data_r607);
|
|
2670
2684
|
} }
|
|
2671
2685
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_4_ng_container_2_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
2672
|
-
i0.ɵɵelementStart(0, "td",
|
|
2686
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
2673
2687
|
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_4_ng_container_2_td_1_span_1_Template, 3, 5, "span", 6);
|
|
2674
2688
|
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_4_ng_container_2_td_1_span_2_Template, 3, 6, "span", 6);
|
|
2675
2689
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_4_ng_container_2_td_1_span_3_Template, 2, 1, "span", 6);
|
|
@@ -2750,7 +2764,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2750
2764
|
i0.ɵɵtextInterpolate(data_r620);
|
|
2751
2765
|
} }
|
|
2752
2766
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
2753
|
-
i0.ɵɵelementStart(0, "td",
|
|
2767
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
2754
2768
|
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_td_1_span_1_Template, 3, 5, "span", 6);
|
|
2755
2769
|
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_td_1_span_2_Template, 3, 6, "span", 6);
|
|
2756
2770
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_td_1_span_3_Template, 2, 1, "span", 6);
|
|
@@ -2771,7 +2785,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2771
2785
|
} }
|
|
2772
2786
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
2773
2787
|
i0.ɵɵelementContainerStart(0);
|
|
2774
|
-
i0.ɵɵelementStart(1, "td",
|
|
2788
|
+
i0.ɵɵelementStart(1, "td", 22);
|
|
2775
2789
|
i0.ɵɵtext(2);
|
|
2776
2790
|
i0.ɵɵelementEnd();
|
|
2777
2791
|
i0.ɵɵelementContainerEnd();
|
|
@@ -2826,7 +2840,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2826
2840
|
i0.ɵɵtextInterpolate(data_r636);
|
|
2827
2841
|
} }
|
|
2828
2842
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_ng_container_3_ng_container_1_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
2829
|
-
i0.ɵɵelementStart(0, "td",
|
|
2843
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
2830
2844
|
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_ng_container_3_ng_container_1_td_1_span_1_Template, 3, 5, "span", 6);
|
|
2831
2845
|
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_ng_container_3_ng_container_1_td_1_span_2_Template, 3, 6, "span", 6);
|
|
2832
2846
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_ng_container_3_ng_container_1_td_1_span_3_Template, 2, 1, "span", 6);
|
|
@@ -2853,7 +2867,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2853
2867
|
i0.ɵɵproperty("ngForOf", ctx_r633.tabularReport.sideTotal.get(i_r375));
|
|
2854
2868
|
} }
|
|
2855
2869
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_ng_container_5_ng_container_3_td_2_Template(rf, ctx) { if (rf & 1) {
|
|
2856
|
-
i0.ɵɵelementStart(0, "td",
|
|
2870
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
2857
2871
|
i0.ɵɵtext(1);
|
|
2858
2872
|
i0.ɵɵelementEnd();
|
|
2859
2873
|
} if (rf & 2) {
|
|
@@ -2893,7 +2907,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2893
2907
|
i0.ɵɵproperty("ngIf", ctx_r381.tabularReport.showGrandTotal);
|
|
2894
2908
|
} }
|
|
2895
2909
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_1_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
2896
|
-
i0.ɵɵelementStart(0, "td",
|
|
2910
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
2897
2911
|
i0.ɵɵelementStart(1, "span");
|
|
2898
2912
|
i0.ɵɵtext(2, "Subtotal");
|
|
2899
2913
|
i0.ɵɵelementEnd();
|
|
@@ -2904,7 +2918,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
2904
2918
|
i0.ɵɵstyleProp("border", ctx_r655.tabularReport.tableStyle.border.width + "px" + " " + ctx_r655.tabularReport.tableStyle.border.borderStyle + " " + ctx_r655.tabularReport.tableStyle.border.color)("background", ctx_r655.tabularReport.tableStyle.subFooter.backgroundColor)("font-family", ctx_r655.tabularReport.tableStyle.subFooter.font.family)("font-size", ctx_r655.tabularReport.tableStyle.subFooter.font.size, "px")("color", ctx_r655.tabularReport.tableStyle.subFooter.font.color)("border", ctx_r655.tabularReport.tableStyle.border.width + "px" + " " + ctx_r655.tabularReport.tableStyle.border.borderStyle + " " + ctx_r655.tabularReport.tableStyle.border.color)("text-align", _attr_r652.alignment);
|
|
2905
2919
|
} }
|
|
2906
2920
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_1_td_2_Template(rf, ctx) { if (rf & 1) {
|
|
2907
|
-
i0.ɵɵelementStart(0, "td",
|
|
2921
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
2908
2922
|
i0.ɵɵtext(1, "-");
|
|
2909
2923
|
i0.ɵɵelementEnd();
|
|
2910
2924
|
} if (rf & 2) {
|
|
@@ -3033,7 +3047,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
3033
3047
|
} }
|
|
3034
3048
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
3035
3049
|
i0.ɵɵelementContainerStart(0);
|
|
3036
|
-
i0.ɵɵelementStart(1, "td",
|
|
3050
|
+
i0.ɵɵelementStart(1, "td", 22);
|
|
3037
3051
|
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_2_ng_container_2_Template, 4, 3, "ng-container", 6);
|
|
3038
3052
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_2_ng_container_3_Template, 5, 4, "ng-container", 6);
|
|
3039
3053
|
i0.ɵɵelementEnd();
|
|
@@ -3048,7 +3062,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
3048
3062
|
i0.ɵɵproperty("ngIf", ctx_r649.tabularReport.rowCount);
|
|
3049
3063
|
} }
|
|
3050
3064
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_3_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
3051
|
-
i0.ɵɵelementStart(0, "td",
|
|
3065
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
3052
3066
|
i0.ɵɵtext(1);
|
|
3053
3067
|
i0.ɵɵelementEnd();
|
|
3054
3068
|
} if (rf & 2) {
|
|
@@ -3101,7 +3115,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
3101
3115
|
i0.ɵɵtextInterpolate(data_r683);
|
|
3102
3116
|
} }
|
|
3103
3117
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_4_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
3104
|
-
i0.ɵɵelementStart(0, "td",
|
|
3118
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
3105
3119
|
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_4_td_1_span_1_Template, 3, 5, "span", 6);
|
|
3106
3120
|
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_4_td_1_span_2_Template, 3, 6, "span", 6);
|
|
3107
3121
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_4_td_1_span_3_Template, 2, 1, "span", 6);
|
|
@@ -3118,7 +3132,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_contai
|
|
|
3118
3132
|
i0.ɵɵproperty("ngIf", !ctx_r681.tabularReport.matrix.attributes[ctx_r681.tabularReport.integerIndexing[m_r684]].valueFormatting.percentage && !ctx_r681.tabularReport.matrix.attributes[ctx_r681.tabularReport.integerIndexing[m_r684]].valueFormatting.currency);
|
|
3119
3133
|
} }
|
|
3120
3134
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_6_ng_container_1_tr_6_ng_container_4_td_2_Template(rf, ctx) { if (rf & 1) {
|
|
3121
|
-
i0.ɵɵelementStart(0, "td",
|
|
3135
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
3122
3136
|
i0.ɵɵtext(1);
|
|
3123
3137
|
i0.ɵɵelementEnd();
|
|
3124
3138
|
} if (rf & 2) {
|
|
@@ -3237,7 +3251,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
|
|
|
3237
3251
|
} }
|
|
3238
3252
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
3239
3253
|
i0.ɵɵelementContainerStart(0);
|
|
3240
|
-
i0.ɵɵelementStart(1, "td",
|
|
3254
|
+
i0.ɵɵelementStart(1, "td", 22);
|
|
3241
3255
|
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_6_ng_container_1_span_2_Template, 3, 5, "span", 6);
|
|
3242
3256
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_6_ng_container_1_span_3_Template, 3, 6, "span", 6);
|
|
3243
3257
|
i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_6_ng_container_1_span_4_Template, 2, 1, "span", 6);
|
|
@@ -3288,7 +3302,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
|
|
|
3288
3302
|
i0.ɵɵtextInterpolate(data_r714);
|
|
3289
3303
|
} }
|
|
3290
3304
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_6_ng_container_2_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
3291
|
-
i0.ɵɵelementStart(0, "td",
|
|
3305
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
3292
3306
|
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_6_ng_container_2_td_1_span_1_Template, 3, 5, "span", 6);
|
|
3293
3307
|
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_6_ng_container_2_td_1_span_2_Template, 3, 6, "span", 6);
|
|
3294
3308
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_6_ng_container_2_td_1_span_3_Template, 2, 1, "span", 6);
|
|
@@ -3370,7 +3384,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
|
|
|
3370
3384
|
} }
|
|
3371
3385
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
3372
3386
|
i0.ɵɵelementContainerStart(0);
|
|
3373
|
-
i0.ɵɵelementStart(1, "td",
|
|
3387
|
+
i0.ɵɵelementStart(1, "td", 22);
|
|
3374
3388
|
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_1_span_2_Template, 3, 5, "span", 6);
|
|
3375
3389
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_1_span_3_Template, 3, 6, "span", 6);
|
|
3376
3390
|
i0.ɵɵtemplate(4, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_1_span_4_Template, 2, 1, "span", 6);
|
|
@@ -3393,7 +3407,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
|
|
|
3393
3407
|
} }
|
|
3394
3408
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
3395
3409
|
i0.ɵɵelementContainerStart(0);
|
|
3396
|
-
i0.ɵɵelementStart(1, "td",
|
|
3410
|
+
i0.ɵɵelementStart(1, "td", 22);
|
|
3397
3411
|
i0.ɵɵtext(2);
|
|
3398
3412
|
i0.ɵɵelementEnd();
|
|
3399
3413
|
i0.ɵɵelementContainerEnd();
|
|
@@ -3448,7 +3462,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
|
|
|
3448
3462
|
i0.ɵɵtextInterpolate(data_r741);
|
|
3449
3463
|
} }
|
|
3450
3464
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_3_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
3451
|
-
i0.ɵɵelementStart(0, "td",
|
|
3465
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
3452
3466
|
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_3_td_1_span_1_Template, 3, 5, "span", 6);
|
|
3453
3467
|
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_3_td_1_span_2_Template, 3, 6, "span", 6);
|
|
3454
3468
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_3_td_1_span_3_Template, 2, 1, "span", 6);
|
|
@@ -3467,7 +3481,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
|
|
|
3467
3481
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
3468
3482
|
i0.ɵɵelementContainerStart(0);
|
|
3469
3483
|
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_ng_container_7_ng_container_3_td_1_Template, 4, 13, "td", 48);
|
|
3470
|
-
i0.ɵɵelementStart(2, "td",
|
|
3484
|
+
i0.ɵɵelementStart(2, "td", 22);
|
|
3471
3485
|
i0.ɵɵtext(3);
|
|
3472
3486
|
i0.ɵɵelementEnd();
|
|
3473
3487
|
i0.ɵɵelementContainerEnd();
|
|
@@ -3530,7 +3544,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
|
|
|
3530
3544
|
i0.ɵɵtextInterpolate(data_r755);
|
|
3531
3545
|
} }
|
|
3532
3546
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
3533
|
-
i0.ɵɵelementStart(0, "td",
|
|
3547
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
3534
3548
|
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_td_1_span_1_Template, 3, 5, "span", 6);
|
|
3535
3549
|
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_td_1_span_2_Template, 3, 6, "span", 6);
|
|
3536
3550
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_td_1_span_3_Template, 2, 1, "span", 6);
|
|
@@ -3579,7 +3593,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
|
|
|
3579
3593
|
i0.ɵɵtextInterpolate(data_r764);
|
|
3580
3594
|
} }
|
|
3581
3595
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_ng_container_2_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
3582
|
-
i0.ɵɵelementStart(0, "td",
|
|
3596
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
3583
3597
|
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_ng_container_2_td_1_span_1_Template, 3, 5, "span", 6);
|
|
3584
3598
|
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_ng_container_2_td_1_span_2_Template, 3, 6, "span", 6);
|
|
3585
3599
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_ng_container_2_td_1_span_3_Template, 2, 1, "span", 6);
|
|
@@ -3660,7 +3674,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
|
|
|
3660
3674
|
i0.ɵɵtextInterpolate(data_r777);
|
|
3661
3675
|
} }
|
|
3662
3676
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
3663
|
-
i0.ɵɵelementStart(0, "td",
|
|
3677
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
3664
3678
|
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_td_1_span_1_Template, 3, 5, "span", 6);
|
|
3665
3679
|
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_td_1_span_2_Template, 3, 6, "span", 6);
|
|
3666
3680
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_td_1_span_3_Template, 2, 1, "span", 6);
|
|
@@ -3681,7 +3695,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
|
|
|
3681
3695
|
} }
|
|
3682
3696
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
3683
3697
|
i0.ɵɵelementContainerStart(0);
|
|
3684
|
-
i0.ɵɵelementStart(1, "td",
|
|
3698
|
+
i0.ɵɵelementStart(1, "td", 22);
|
|
3685
3699
|
i0.ɵɵtext(2);
|
|
3686
3700
|
i0.ɵɵelementEnd();
|
|
3687
3701
|
i0.ɵɵelementContainerEnd();
|
|
@@ -3736,7 +3750,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
|
|
|
3736
3750
|
i0.ɵɵtextInterpolate(data_r791);
|
|
3737
3751
|
} }
|
|
3738
3752
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_ng_container_3_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
3739
|
-
i0.ɵɵelementStart(0, "td",
|
|
3753
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
3740
3754
|
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_ng_container_3_td_1_span_1_Template, 3, 5, "span", 6);
|
|
3741
3755
|
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_ng_container_3_td_1_span_2_Template, 3, 6, "span", 6);
|
|
3742
3756
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_ng_container_3_td_1_span_3_Template, 2, 1, "span", 6);
|
|
@@ -3755,7 +3769,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
|
|
|
3755
3769
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
3756
3770
|
i0.ɵɵelementContainerStart(0);
|
|
3757
3771
|
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_4_ng_container_3_td_1_Template, 4, 13, "td", 48);
|
|
3758
|
-
i0.ɵɵelementStart(2, "td",
|
|
3772
|
+
i0.ɵɵelementStart(2, "td", 22);
|
|
3759
3773
|
i0.ɵɵtext(3);
|
|
3760
3774
|
i0.ɵɵelementEnd();
|
|
3761
3775
|
i0.ɵɵelementContainerEnd();
|
|
@@ -3787,7 +3801,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_contai
|
|
|
3787
3801
|
} }
|
|
3788
3802
|
function ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_Template(rf, ctx) { if (rf & 1) {
|
|
3789
3803
|
i0.ɵɵelementStart(0, "tr");
|
|
3790
|
-
i0.ɵɵelementStart(1, "td",
|
|
3804
|
+
i0.ɵɵelementStart(1, "td", 22);
|
|
3791
3805
|
i0.ɵɵtext(2, "SubTotal");
|
|
3792
3806
|
i0.ɵɵelementEnd();
|
|
3793
3807
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tbody_2_ng_container_7_ng_container_1_tr_8_ng_container_3_Template, 3, 2, "ng-container", 6);
|
|
@@ -3874,7 +3888,7 @@ function ColumnGroupViewComponent_div_0_table_1_tbody_2_Template(rf, ctx) { if (
|
|
|
3874
3888
|
i0.ɵɵproperty("ngIf", ctx_r8.tabularReport.rowGrouping.length === 1);
|
|
3875
3889
|
} }
|
|
3876
3890
|
function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_td_3_Template(rf, ctx) { if (rf & 1) {
|
|
3877
|
-
i0.ɵɵelementStart(0, "td",
|
|
3891
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
3878
3892
|
i0.ɵɵtext(1, " - ");
|
|
3879
3893
|
i0.ɵɵelementEnd();
|
|
3880
3894
|
} if (rf & 2) {
|
|
@@ -3923,7 +3937,7 @@ function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_4_td_1
|
|
|
3923
3937
|
i0.ɵɵtextInterpolate(total_r810);
|
|
3924
3938
|
} }
|
|
3925
3939
|
function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_4_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
3926
|
-
i0.ɵɵelementStart(0, "td",
|
|
3940
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
3927
3941
|
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_4_td_1_span_1_Template, 3, 5, "span", 6);
|
|
3928
3942
|
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_4_td_1_span_2_Template, 3, 6, "span", 6);
|
|
3929
3943
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_4_td_1_span_3_Template, 2, 1, "span", 6);
|
|
@@ -3993,7 +4007,7 @@ function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_5_ng_c
|
|
|
3993
4007
|
i0.ɵɵtextInterpolate(total_r823);
|
|
3994
4008
|
} }
|
|
3995
4009
|
function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_5_ng_container_1_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
3996
|
-
i0.ɵɵelementStart(0, "td",
|
|
4010
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
3997
4011
|
i0.ɵɵtemplate(1, ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_5_ng_container_1_td_1_span_1_Template, 3, 5, "span", 6);
|
|
3998
4012
|
i0.ɵɵtemplate(2, ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_5_ng_container_1_td_1_span_2_Template, 3, 6, "span", 6);
|
|
3999
4013
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_5_ng_container_1_td_1_span_3_Template, 2, 1, "span", 6);
|
|
@@ -4022,7 +4036,7 @@ function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_5_ng_c
|
|
|
4022
4036
|
i0.ɵɵproperty("ngForOf", ctx_r820.tabularReport.grandTotal2);
|
|
4023
4037
|
} }
|
|
4024
4038
|
function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_5_ng_container_2_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
4025
|
-
i0.ɵɵelementStart(0, "td",
|
|
4039
|
+
i0.ɵɵelementStart(0, "td", 22);
|
|
4026
4040
|
i0.ɵɵelementStart(1, "span");
|
|
4027
4041
|
i0.ɵɵtext(2);
|
|
4028
4042
|
i0.ɵɵelementEnd();
|
|
@@ -4057,7 +4071,7 @@ function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_ng_container_5_Temp
|
|
|
4057
4071
|
} }
|
|
4058
4072
|
function ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_Template(rf, ctx) { if (rf & 1) {
|
|
4059
4073
|
i0.ɵɵelementStart(0, "tr");
|
|
4060
|
-
i0.ɵɵelementStart(1, "td",
|
|
4074
|
+
i0.ɵɵelementStart(1, "td", 22);
|
|
4061
4075
|
i0.ɵɵtext(2, " Grand Total");
|
|
4062
4076
|
i0.ɵɵelementEnd();
|
|
4063
4077
|
i0.ɵɵtemplate(3, ColumnGroupViewComponent_div_0_table_1_tfoot_3_tr_1_td_3_Template, 2, 2, "td", 17);
|
|
@@ -4415,7 +4429,7 @@ ColumnGroupViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Co
|
|
|
4415
4429
|
} if (rf & 2) {
|
|
4416
4430
|
let _t;
|
|
4417
4431
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contextMenu = _t.first);
|
|
4418
|
-
} }, inputs: { tabularReport: "tabularReport", isEditable: "isEditable", x1ImageMediaUrl: "x1ImageMediaUrl", screenType: "screenType", drillThroughParentType: "drillThroughParentType", drillThroughFilterInput: "drillThroughFilterInput", parentRef: "parentRef", reportId: "reportId" }, features: [i0.ɵɵNgOnChangesFeature], decls: 10, vars: 8, consts: [["class", "column-grouping-table-container customscroll", 4, "ngIf"], [2, "visibility", "hidden", "position", "fixed", 3, "matMenuTriggerFor"], ["contextMenu", "matMenu"], ["id", "table-menu"], ["matMenuContent", ""], ["Aggregate", "matMenu"], [4, "ngIf"], ["class", "loader-spinner", 4, "ngIf"], [1, "column-grouping-table-container", "customscroll"], ["cdkDropListGroup", "", "style", "width:100%", 3, "border", "ngClass", "click", 4, "ngIf"], ["class", "flex justify-center items-center flex-col zero-records", 4, "ngIf"], ["cdkDropListGroup", "", 2, "width", "100%", 3, "ngClass", "click"], [3, "ngClass", 4, "ngIf"], [3, "background", "font-family", "font-size", "color", 4, "ngIf"], [3, "ngClass"], [4, "ngFor", "ngForOf"], ["cdkDropList", "", "cdkDropListOrientation", "horizontal", 1, "example-list", 3, "cdkDropListDropped"], ["class", "px-1.5\tpy-1.5", 3, "border", 4, "ngIf"], [1, "px-1.5", "py-1.5", 3, "id", "contextmenu"], ["class", "px-1.5\tpy-1.5", 3, "colSpan", "border", "font-family", "background", "font-size", 4, "ngIf"], [1, "px-1.5", "py-1.5"], ["class", "px-1.5\tpy-1.5", 3, "colSpan", "font-family", "font-size", "color", "background", "border", "contextmenu", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "colSpan", "font-family", "font-size", "color", "background", "border", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "colSpan", "font-family", "font-size", "background", "color", "border", 4, "ngIf"], [1, "px-1.5", "py-1.5", 3, "colSpan", "contextmenu"], [3, "ngSwitch"], [4, "ngSwitchCase"], [4, "ngSwitchDefault"], [1, "url", 3, "title", "click"], [1, "px-1.5", "py-1.5", 3, "colSpan"], [1, "px-1.5", "py-1.5", 3, "id"], [
|
|
4432
|
+
} }, inputs: { tabularReport: "tabularReport", isEditable: "isEditable", x1ImageMediaUrl: "x1ImageMediaUrl", screenType: "screenType", drillThroughParentType: "drillThroughParentType", drillThroughFilterInput: "drillThroughFilterInput", parentRef: "parentRef", reportId: "reportId" }, features: [i0.ɵɵNgOnChangesFeature], decls: 10, vars: 8, consts: [["class", "column-grouping-table-container customscroll", 4, "ngIf"], [2, "visibility", "hidden", "position", "fixed", 3, "matMenuTriggerFor"], ["contextMenu", "matMenu"], ["id", "table-menu"], ["matMenuContent", ""], ["Aggregate", "matMenu"], [4, "ngIf"], ["class", "loader-spinner", 4, "ngIf"], [1, "column-grouping-table-container", "customscroll"], ["cdkDropListGroup", "", "style", "width:100%", 3, "border", "ngClass", "click", 4, "ngIf"], ["class", "flex justify-center items-center flex-col zero-records", 4, "ngIf"], ["cdkDropListGroup", "", 2, "width", "100%", 3, "ngClass", "click"], [3, "ngClass", 4, "ngIf"], [3, "background", "font-family", "font-size", "color", 4, "ngIf"], [3, "ngClass"], [4, "ngFor", "ngForOf"], ["cdkDropList", "", "cdkDropListOrientation", "horizontal", 1, "example-list", 3, "cdkDropListDropped"], ["class", "px-1.5\tpy-1.5", 3, "border", 4, "ngIf"], [1, "px-1.5", "py-1.5", 3, "id", "contextmenu"], [1, "tabular-report-tabel-th"], [1, "tabular-report-table-text"], ["class", "px-1.5\tpy-1.5", 3, "colSpan", "border", "font-family", "background", "font-size", 4, "ngIf"], [1, "px-1.5", "py-1.5"], ["class", "px-1.5\tpy-1.5", 3, "colSpan", "font-family", "font-size", "color", "background", "border", "contextmenu", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "colSpan", "font-family", "font-size", "color", "background", "border", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "colSpan", "font-family", "font-size", "background", "color", "border", 4, "ngIf"], [1, "px-1.5", "py-1.5", 3, "colSpan", "contextmenu"], [3, "ngSwitch"], [4, "ngSwitchCase"], [4, "ngSwitchDefault"], [1, "url", 3, "title", "click"], [1, "px-1.5", "py-1.5", 3, "colSpan"], [1, "px-1.5", "py-1.5", 3, "id"], ["class", "px-1.5\tpy-1.5", 3, "id", "color", "font-family", "background", "font-size", "border", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "border", "font-family", "background", "font-size", 4, "ngIf"], ["colGrouping", "", 1, "px-1.5", "py-1.5"], [3, "ngStyle"], ["class", "px-1.5\tpy-1.5", 3, "font-family", "font-size", "color", "border", "text-align", "rowSpan", "background", "contextmenu", 4, "ngIf"], [1, "px-1.5", "py-1.5", 3, "rowSpan", "contextmenu"], ["class", "px-1.5\tpy-1.5", 3, "font-family", "font-size", "background", "color", "border", "text-align", "contextmenu", 4, "ngIf"], [1, "px-1.5", "py-1.5", 3, "contextmenu"], ["class", "px-1.5\tpy-1.5", 3, "background", "font-family", "font-size", "border", "color", 4, "ngFor", "ngForOf"], ["class", "px-1.5\tpy-1.5", 3, "border", "font-family", "background", "font-size", 4, "ngFor", "ngForOf"], ["class", "px-1.5\tpy-1.5", 3, "background", "font-family", "font-size", "border", "color", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "background", "font-family", "font-size", "color", "border", 4, "ngFor", "ngForOf"], ["class", "px-1.5\tpy-1.5", 3, "border", "background", "font-family", "font-size", "color", "text-align", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "border", "background", "font-family", "font-size", "color", 4, "ngIf"], ["class", "px-1.5\tpy-1.5", 3, "border", "background", "font-family", "font-size", "color", 4, "ngFor", "ngForOf"], ["class", "px-1.5\tpy-1.5", 3, "font-family", "font-size", "color", "background", "border", 4, "ngFor", "ngForOf"], ["class", "px-1.5\tpy-1.5", 3, "border", "font-family", "background", 4, "ngFor", "ngForOf"], [1, "flex", "justify-center", "items-center", "flex-col", "zero-records"], ["mat-menu-item", "", 3, "matMenuTriggerFor", 4, "ngIf"], ["mat-menu-item", "", 3, "click"], ["mat-menu-item", "", 3, "click", 4, "ngIf"], ["mat-menu-item", "", 3, "matMenuTriggerFor"], [1, "aggregate-fun", 3, "ngModel", "ngModelChange", "change", "click"], ["_attr.widgetSubType", "", "", "", "", "date_range", "||", "", 1, "aggregate-fun", 3, "ngModel", "ngModelChange", "change", "click"], [1, "loader-spinner"], [3, "elementType"]], template: function ColumnGroupViewComponent_Template(rf, ctx) { if (rf & 1) {
|
|
4419
4433
|
i0.ɵɵtemplate(0, ColumnGroupViewComponent_div_0_Template, 3, 2, "div", 0);
|
|
4420
4434
|
i0.ɵɵelement(1, "div", 1);
|
|
4421
4435
|
i0.ɵɵelementStart(2, "mat-menu", null, 2);
|
|
@@ -4440,7 +4454,7 @@ ColumnGroupViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Co
|
|
|
4440
4454
|
} }, directives: [i5.NgIf, i6.MatMenuTrigger, i6.MatMenu, i6.MatMenuContent, i7.CdkDropListGroup, i5.NgClass, i5.NgForOf, i7.CdkDropList, i5.NgSwitch, i5.NgSwitchCase, i5.NgSwitchDefault, i5.NgStyle, i6.MatMenuItem, i8.MatCheckbox, i9.NgControlStatus, i9.NgModel, i10.GhostLoaderComponent], pipes: [i5.DatePipe, i5.CurrencyPipe, i11.AxoPercentagePipe], styles: ["lib-column-group-view{display:block;height:calc(100% - 6.7rem);min-height:calc(100% - 6.7rem);max-height:calc(100% - 6.7rem)}.tabular-report-tabel-th{display:flex}.tabular-report-tabel-th .mat-icon{max-height:10px;min-height:10px;font-size:10px}.tabular-report-tabel-th .tabular-report-table-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabular-report-tabel-th button{width:24px}.zero-records{height:calc(100% - 2.4rem);max-width:100%;position:sticky;left:0}.column-grouping-table-container{min-height:100%;max-height:100%;height:100%;width:100%;padding-top:0;padding-left:14px;padding-right:14px;z-index:99;bottom:1rem}.column-grouping-table-container table{width:99.5%!important;height:auto;border:none!important}.column-grouping-table-container table .thead{position:sticky;top:1px}.column-grouping-table-container table .thead th{position:relative;background-color:#f2f8ff;border-top:none!important;border-bottom:none!important;padding:0}.column-grouping-table-container table .thead th .resize-holder{cursor:col-resize!important;width:20px;height:100%;position:absolute;right:-10px;top:0;z-index:1}.column-grouping-table-container table .thead th:last-child{border-right:none!important}.column-grouping-table-container table .thead th:first-child{border-left:none!important}.column-grouping-table-container table .thead .sr-head{position:absolute;justify-content:center;inset:0;display:flex;align-items:center}.column-grouping-table-container table tbody td{padding-left:4px;padding-right:4px}.url:hover{color:#00f}.loader-spinner{justify-content:center;display:flex;position:sticky;top:50%;vertical-align:middle;margin:0}\n"], encapsulation: 2 });
|
|
4441
4455
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ColumnGroupViewComponent, [{
|
|
4442
4456
|
type: Component,
|
|
4443
|
-
args: [{ selector: 'lib-column-group-view', encapsulation: ViewEncapsulation.None, template: "<div class=\"column-grouping-table-container customscroll\" *ngIf='tabularReport.matrix.attributes[0].series.length!==0 && tabularReport.isDataLoaded'>\n <table\n (click)=\"tableSelect($event)\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n *ngIf=tabularReport cdkDropListGroup style=\"width:100%\" [ngClass]=\"{'mt-1': tabularReport.matrix.attributes.length>0 && tabularReport.matrix.attributes[0].series.length===0}\">\n <caption></caption>\n <tbody [ngClass]=\"{'shadow':tabularReport.tableStyle.border.shadow.enable}\"\n *ngIf=\"tabularReport.matrix.attributes.length>0\"\n >\n <ng-container *ngFor=\"let _attr of tabularReport.colGrouping; even as isEven;let m = index\">\n <ng-container>\n <tr *ngIf=\"m===0\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.rowGrouping.length===2\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n ></td>\n <th [id]=th\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"onContextMenu($event,i)\"\n [style.text-align]='right'\n\n >{{_attr.label}}</th>\n\n <!-- to show single column grouping unique series -->\n <ng-container *ngFor='let data of _attr.uniqueSeries;let i= index'>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.colGrouping.length===1\"\n [colSpan]=tabularReport.rowCount?tabularReport.colData.get(data)+1:tabularReport.colData.get(data)\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"drillThroughContext($event, _attr, _attr.series.indexOf(data))\">\n\n <ng-container *ngIf=\"data\">\n\n <div [ngSwitch]=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetType\">\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='datetime' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='both'\">\n <span>{{moment(data+'Z')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='timestamp'\">\n <span >{{data}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='time'\">\n <span *ngIf=\"data \">{{moment(data,'hh:mm:ss')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">{{data|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date_range'\">\n {{data}}\n </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='decimal'|| tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='text' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='string'\">\n {{data}}\n </span>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{data| axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{data}}</span>\n </span>\n </span>\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- default case -->\n <span *ngSwitchDefault>{{data}}</span>\n\n </div>\n </ng-container>\n <span *ngIf='!data'>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ 0 | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{0 | axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'detail'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{0}}</span>\n </span>\n <!-- when series data is empty -->\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType!=='numeric'\">-</span>\n\n </span>\n\n </td>\n\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.colGrouping.length>1 && tabularReport.integerArray.length>0\"\n [colSpan]=tabularReport.rowCount?tabularReport.colData.get(data)+tabularReport.secondColData.get(data).length:tabularReport.colData.get(data)\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\" >\n <ng-container *ngIf=\"data\">\n\n <div [ngSwitch]=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetType\">\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='datetime' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='both'\">\n <span >{{moment(data+'Z')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='timestamp'\">\n <span>{{data}}</span>\n </ng-container>\n\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='time'\">\n <span *ngIf=\"data \">{{moment(data,'hh:mm:ss')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">{{data|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date_range'\">\n {{data}}\n </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='decimal'|| tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='text' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='string'\">\n {{data}}\n </span>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{data| axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{data}}</span>\n </span>\n </span>\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- default case -->\n <span *ngSwitchDefault>{{data}}</span>\n\n </div>\n </ng-container>\n <span *ngIf='!data'>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ 0 | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{0 | axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'detail'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{0}}</span>\n </span>\n <!-- when series data is empty -->\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType!=='numeric'\">-</span>\n\n </span>\n </td>\n\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.colGrouping.length>1 && tabularReport.integerArray.length===0\"\n [colSpan]=\"tabularReport.secondColData.get(data).length\"\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\" >\n\n <ng-container *ngIf=\"data\">\n\n <div [ngSwitch]=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetType\">\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='datetime' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='both'\">\n <span>{{moment(data+'Z')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='timestamp'\">\n <span>{{data}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='time'\">\n <span *ngIf=\"data \">{{moment(data,'hh:mm:ss')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">{{data|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date_range'\">\n {{data}}\n </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='decimal'|| tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='text' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='string'\">\n {{data}}\n </span>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{data| axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{data}}</span>\n </span>\n </span>\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- default case -->\n <span *ngSwitchDefault>{{data}}</span>\n\n </div>\n </ng-container>\n <span *ngIf='!data'>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ 0 | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{0 | axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'detail'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{0}}</span>\n </span>\n <!-- when series data is empty -->\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType!=='numeric'\">-</span>\n\n </span>\n </td>\n\n </ng-container>\n <!-- grand total header -->\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.showGrandTotal\"\n [colSpan]=tabularReport.rowCount?tabularReport.integerArray.length+1:tabularReport.integerArray.length\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n\n >\n Total\n </td>\n\n </tr>\n\n\n <tr *ngIf=\"m===1\">\n <!-- to show double column grouping header with series data -->\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.rowGrouping.length===2\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n ></td>\n <th [id]=th\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='right'\n >{{_attr.label}}</th>\n <ng-container *ngFor=\"let series of tabularReport.colGrouping[0].uniqueSeries \">\n\n <ng-container *ngFor=\"let data of tabularReport.secondColData.get(series) let x=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [colSpan]=tabularReport.rowCount?tabularReport.integerArray.length+1:tabularReport.integerArray.length\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"drillThroughContext($event, _attr, i)\"\n >\n <ng-container *ngIf=\"data\">\n <div [ngSwitch]=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetType\">\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='datetime' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='both'\">\n <span>{{moment(data+'Z')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='timestamp'\">\n <span>{{data}}</span>\n </ng-container>\n\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='time'\">\n <span *ngIf=\"data \">{{moment(data,'hh:mm:ss')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">{{data|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date_range'\">\n {{data}}\n </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='decimal'|| tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='text' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='string'\">\n {{data}}\n </span>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{data| axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{data}}</span>\n </span>\n </span>\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- default case -->\n <span *ngSwitchDefault>{{data}}</span>\n\n </div>\n </ng-container>\n <span *ngIf='!data'>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ 0 | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{0 | axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'detail'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{0}}</span>\n </span>\n <!-- when series data is empty -->\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType!=='numeric'\">-</span>\n\n </span>\n </td>\n </ng-container>\n\n\n </ng-container>\n <td *ngIf=\"tabularReport.showGrandTotal\"\n class=\"px-1.5\tpy-1.5\"\n [colSpan]=tabularReport.rowCount?tabularReport.integerArray.length+1:tabularReport.integerArray.length\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\">-</td>\n </tr>\n </ng-container>\n </ng-container>\n <tr cdkDropList cdkDropListOrientation=\"horizontal\" class=\"example-list\" (cdkDropListDropped)=\"drop($event)\">\n <!-- column headers -->\n <ng-container *ngFor=\"let attr of tabularReport.rowGrouping; even as isEven;let m = index\">\n <th\n [id]=\"th\"\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"onContextMenu($event,i)\"\n [style.text-align]='attr.alignment'\n >\n <div class=\"tabular-report-tabel-th\">\n <span class=\"tabular-report-table-text\">{{attr.label}}</span>\n <!-- <button mat-icon-button (click)=\"onContextMenu($event,i)\">\n <mat-icon class=\"tab-down-arrow\" svgIcon=\"heroicons_outline:chevron-down\"></mat-icon>\n </button> -->\n </div>\n </th>\n </ng-container>\n\n <!-- to show integer column headers -->\n <ng-container *ngFor=\"let data of tabularReport.cloneDataCount; let m=index\" >\n <ng-container *ngFor=\"let attr of tabularReport.integerArray;let i=index\">\n <th\n [id]=th\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='right'\n >\n <span>{{attr}}</span>\n </th>\n </ng-container>\n <!-- row count header -->\n <th *ngIf=\"tabularReport.rowCount\"\n [id]=th\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='right'\n >\n Count\n </th>\n </ng-container>\n <!-- horizontal grand total headers -->\n <ng-container *ngIf=\"tabularReport.showGrandTotal\">\n <ng-container *ngFor=\"let attr of tabularReport.integerArray;let i=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n colGrouping\n\n >\n <span>{{attr}}</span>\n </td>\n </ng-container>\n <td *ngIf=\"tabularReport.rowCount\"\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n\n >\n Count\n </td>\n </ng-container>\n </tr>\n\n <ng-container *ngIf=\"tabularReport.rowGrouping.length>1\">\n <ng-container *ngFor=\"let data of tabularReport.matrix.attributes[0].series;let i = index; even as isEven; let data1\">\n <tr\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [ngStyle]=\"{ background: isEven ? tabularReport.tableStyle.rowStyle.oddColor: tabularReport.tableStyle.rowStyle.evenColor}\"\n [style.border]=\"tabularReport.tableStyle.border.width + ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n\n >\n <!-- series data -->\n <ng-container *ngFor=\"let _attr of tabularReport.matrix.attributes; even as isEven;let m = index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\" _attr.rowSpan && !_attr.cplSpan && _attr.cloneSeries && _attr.cloneSeries[i]!=='repeated' && m!==1\"\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='_attr.alignment'\n [rowSpan]='_attr.cloneGroupData[i]'\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n (contextmenu)=\"drillThroughContext($event, _attr, i)\"\n >\n {{indexing(_attr.groupData[i],i)}}\n <div [ngSwitch]=\"_attr.widgetType\">\n <!-- when data type is number -->\n <span *ngSwitchCase=\"'int-widget'\">\n <span *ngIf=\"_attr.valueFormatting.currency \">{{ _attr.series[i] | currency:_attr.valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" _attr.valueFormatting.percentage\">{{_attr.series[i]| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!_attr.valueFormatting.percentage && !_attr.valueFormatting.currency\">{{_attr.series[i]}}</span>\n </span>\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"_attr.widgetSubType==='date_range' || _attr.widgetSubType==='datetime' || _attr.widgetSubType==='both'\">\n <span>{{moment(_attr.series[i]+'Z')|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.series[i] && _attr.widgetSubType==='timestamp'\">\n <span >{{_attr.series[i]|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.widgetSubType==='time'\">\n <span *ngIf=\"_attr.series[i] \">{{moment(_attr.series[i],'hh:mm:ss')|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.widgetSubType==='date'\">\n <span *ngIf=\"_attr.series[i] && _attr.widgetSubType==='date'\">{{_attr.series[i]|date:_attr.valueFormatting.date }}</span> </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"_attr.widgetSubType==='decimal'|| _attr.widgetSubType==='text' || _attr.widgetSubType==='string'\">\n {{_attr.series[i]}}\n </span>\n <span *ngIf=\"_attr.widgetSubType==='numeric'\">\n <span *ngIf=\"_attr.valueFormatting.currency \">{{ _attr.series[i] | currency:_attr.valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" _attr.valueFormatting.percentage\">{{_attr.series[i]| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!_attr.valueFormatting.percentage && !_attr.valueFormatting.currency\">{{_attr.series[i]}}</span>\n </span>\n </span>\n\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- default case -->\n <span *ngSwitchDefault>{{_attr.series[i]}}</span>\n <!-- when series data is empty -->\n <span *ngIf='!_attr.series[i]'>-</span>\n\n </div>\n\n </td>\n </ng-container>\n <!-- when two rows grouped -->\n <ng-container *ngFor=\"let _attr of tabularReport.matrix.attributes; even as isEven;let m = index\">\n <ng-container>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\" tabularReport.rowGrouping.length>1 && m>0 && _attr.rowSpan && _attr.cloneSeries[i]!=='repeated'\"\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='_attr.alignment'\n (contextmenu)=\"drillThroughContext($event, _attr, i)\"\n >\n <div [ngSwitch]=\"_attr.widgetType\">\n <!-- when data type is number -->\n <span *ngSwitchCase=\"'int-widget'\">\n <span *ngIf=\"_attr.valueFormatting.currency \">{{ _attr.series[i] | currency:_attr.valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" _attr.valueFormatting.percentage\">{{_attr.series[i]| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!_attr.valueFormatting.percentage && !_attr.valueFormatting.currency\">{{_attr.series[i]}}</span>\n </span>\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"_attr.widgetSubType==='datetime' || _attr.widgetSubType==='both'\">\n <span>{{moment(_attr.series[i]+'Z')|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.series[i] && _attr.widgetSubType==='timestamp'\">\n <span >{{_attr.series[i]|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.widgetSubType==='time'\">\n <span *ngIf=\"_attr.series[i] \">{{moment(_attr.series[i],'hh:mm:ss')|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.widgetSubType==='date'\">\n <span *ngIf=\"_attr.series[i] && _attr.widgetSubType==='date'\">{{moment(_attr.series[i],'YYYY-MM-dd')|date:_attr.valueFormatting.date }}</span> </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"_attr.widgetSubType==='decimal'|| _attr.widgetSubType==='text' || _attr.widgetSubType==='string' || _attr.widgetSubType==='date_range'\">\n {{_attr.series[i]}}\n </span>\n <span *ngIf=\"_attr.widgetSubType==='numeric'\">\n <span *ngIf=\"_attr.valueFormatting.currency \">{{ _attr.series[i] | currency:_attr.valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" _attr.valueFormatting.percentage\">{{_attr.series[i]| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!_attr.valueFormatting.percentage && !_attr.valueFormatting.currency\">{{_attr.series[i]}}</span>\n </span>\n </span>\n\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- default case -->\n <span *ngSwitchDefault>{{_attr.series[i]}}</span>\n <!-- when series data is empty -->\n <span *ngIf='!_attr.series[i]'>-</span>\n\n <span *ngIf='_attr.series[i]'> ({{_attr.cloneGroupData[i]}})</span>\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <!-- when rowCount is off -->\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <ng-container *ngFor=\"let data of map.get(i); let m=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n\n </td>\n </ng-container>\n\n\n <!-- to show side grand total -->\n <ng-container *ngIf=\"tabularReport.showGrandTotal && tabularReport.matrix.attributes[1].cloneSeries[i]!=='repeated'\" >\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i); let m=index\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n\n </td>\n </ng-container>\n </ng-container>\n <!-- to show data with row count -->\n <ng-container *ngIf='tabularReport.rowCount'>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.dataRender.get(i) ;let m=index\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n >\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n <span *ngIf=\"!tabularReport.countIntegerIndexing[m]\">{{data}}</span>\n\n\n </td>\n\n <ng-container *ngIf=\"tabularReport.integerArray.length===0 \">\n <ng-container *ngFor=\"let data of tabularReport.countsData.get(i)\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n > {{data}}</td>\n </ng-container>\n </ng-container>\n\n\n <ng-container *ngIf=\"tabularReport.showGrandTotal\" >\n <ng-container *ngIf=\"tabularReport.sideTotal.get(i) && tabularReport.matrix.attributes[1].cloneSeries[i]!=='repeated'\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i) let m=index\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n </ng-container>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.totalRowCount.get(i) && tabularReport.matrix.attributes[1].cloneSeries[i]!=='repeated'\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n >{{tabularReport.totalRowCount.get(i)}}</td>\n </ng-container>\n\n </ng-container>\n </tr>\n <!-- subtotal -->\n <tr *ngIf='tabularReport.subTotal && (attrGlobal===i) '>\n <ng-container *ngFor=\"let _attr of tabularReport.rowGrouping; even as isEven;let m = index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"m===0\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='_attr.alignment'\n >\n <span>Subtotal</span>\n </td>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"m===1\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >-</td>\n </ng-container>\n\n <ng-container *ngFor=\"let data of tabularReport.colSubTotal.get(i) let m=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.rowCount\">\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n <span *ngIf=\"!tabularReport.countIntegerIndexing[m]\">{{data}}</span>\n </ng-container>\n </td>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.integerArray.length===0\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.countsSubTotal.get(i)\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n {{data}}\n </td>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.showGrandTotal\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideSubTotal.get(i) let m=index\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.rowCount\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n {{tabularReport.countSTotal.get(i)}}\n </td>\n </ng-container>\n </tr>\n </ng-container>\n\n </ng-container>\n\n\n <!-- when single row grouping is applied -->\n <ng-container *ngIf=\"tabularReport.rowGrouping.length===1\">\n <ng-container *ngFor=\"let data of tabularReport.matrix.attributes[0].uniqueSeries;let i = index; even as isEven; let data1\">\n <tr>\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"drillThroughContext($event, tabularReport.matrix.attributes[0], i)\"\n >\n <span>{{data}}</span>\n <span *ngIf='!data'>-</span>\n </td>\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <ng-container *ngFor=\"let data of map.get(i) let m=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n </ng-container>\n\n <ng-container *ngIf=\"tabularReport.showGrandTotal\" >\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i); let m=index\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n\n </td>\n </ng-container>\n\n </ng-container>\n\n\n <ng-container *ngIf=\"tabularReport.rowCount\">\n <ng-container *ngFor=\"let data of tabularReport.dataRender.get(i) let m=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n <span *ngIf=\"!tabularReport.countIntegerIndexing[m]\">{{data}}</span>\n\n </td>\n </ng-container>\n\n <ng-container *ngIf=\"tabularReport.integerArray.length===0\">\n <ng-container *ngFor=\"let data of tabularReport.countsData.get(i)\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n > {{data}}</td>\n\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.showGrandTotal\" >\n <td\n class='px-1.5\tpy-1.5'\n *ngFor=\"let data of tabularReport.sideTotal.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n {{tabularReport.totalRowCount.get(i)}}\n </td>\n </ng-container>\n </ng-container>\n </tr>\n <!-- when subtotal toggle is on -->\n <tr *ngIf=\"tabularReport.subTotal\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\" >SubTotal</td>\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of map.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span></td>\n\n <!-- to show side grand total -->\n <ng-container *ngIf=\"tabularReport.showGrandTotal\" >\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n </ng-container>\n </ng-container>\n <!-- to show row count -->\n <ng-container *ngIf=\"tabularReport.rowCount\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.dataRender.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n <span *ngIf=\"!tabularReport.countIntegerIndexing[m]\">{{data}}</span></td>\n <ng-container *ngIf=\"tabularReport.integerArray.length===0\">\n <ng-container *ngFor=\"let data of tabularReport.countsData.get(i)\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n > {{data}}</td>\n </ng-container>\n </ng-container>\n\n\n <ng-container *ngIf=\"tabularReport.showGrandTotal\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n\n </td>\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n {{tabularReport.totalRowCount.get(i)}}\n </td>\n </ng-container>\n </ng-container>\n </tr>\n </ng-container>\n\n </ng-container>\n </tbody>\n <!-- Table footer for grand total -->\n <tfoot *ngIf=\"tabularReport.matrix.attributes.length>0\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n >\n <tr *ngIf=\"tabularReport.showGrandTotal\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\">\n Grand Total</td>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf='tabularReport.rowGrouping.length>1'\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n -\n </td>\n\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <td *ngFor=\"let total of tabularReport.grandTotal;let m=index\"\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n >\n <span *ngIf=\"tabularReport.gTotalIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.currency \">{{ total | currency:tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.gTotalIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.percentage\">{{total| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.gTotalIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.currency\">{{total}}</span>\n <span *ngIf=\"!tabularReport.gTotalIntegerIndexing[m]\">{{total}}</span>\n </td>\n </ng-container>\n <!-- when row count toggle is on -->\n <ng-container *ngIf=\"tabularReport.rowCount\">\n <ng-container *ngIf=\"tabularReport.integerArray.length>0\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let total of tabularReport.grandTotal2;let m=index\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n >\n <span *ngIf=\"tabularReport.countTotalIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.currency \">{{ total | currency:tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countTotalIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.percentage\">{{total| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countTotalIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.currency\">{{total}}</span>\n <span *ngIf=\"!tabularReport.countTotalIntegerIndexing[m]\">{{total}}</span>\n </td>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.integerArray.length===0\">\n\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let total of tabularReport.countsTotal;let i=index\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n >\n <span>{{total}}</span>\n\n </td>\n\n </ng-container>\n </ng-container>\n </tr>\n </tfoot>\n </table>\n <div class=\"flex justify-center items-center flex-col zero-records\" *ngIf=\"(tabularReport.matrix.attributes.length>0 && tabularReport.matrix.attributes[0].series.length===0)\">\n No records available\n </div>\n</div>\n\n<div style=\"visibility: hidden; position: fixed\" [style.left]=\"contextMenuPosition.x\"\n [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"contextMenu\">\n</div>\n\n<!-- Mat Menu trigger for table columns-->\n<mat-menu #contextMenu=\"matMenu\">\n <div id=\"table-menu\">\n <ng-template matMenuContent let-item=\"reportData\">\n <button *ngIf=\"tabularReport.matrix.attributes.length>0 \"mat-menu-item [matMenuTriggerFor]=\"Aggregate\">Aggregate</button>\n <button mat-menu-item (click)=\"moveColumnLeft($event)\">Move Left</button>\n <button mat-menu-item (click)=\"moveColumnRight($event)\">Move Right</button>\n <button *ngIf=\"screenTypes.dashboardBuilder === screenType\" mat-menu-item (click)=\"removeFromDashboard()\">Remove From Dashboard</button>\n </ng-template>\n </div>\n</mat-menu>\n<!-- --------------------------------------------------------------------------- -->\n\n\n\n<!-- Mat menu trigger for Aggregation-->\n<mat-menu #Aggregate=\"matMenu\">\n <ng-template matMenuContent *ngIf='tabularReport.matrix.attributes.length>0'>\n <section>\n <p>\n <mat-checkbox class=\"aggregate-fun\" [(ngModel)]='tabularReport.matrix.attributes[currentIndex].aggregate.showSum'\n (change)=\"sumAggregation($event)\" (click)=\"$event.stopPropagation()\">sum</mat-checkbox>\n </p>\n <p>\n <mat-checkbox class=\"aggregate-fun\" [(ngModel)]='tabularReport.matrix.attributes[currentIndex].aggregate.showAvg'_attr.widgetSubType==='date_range' ||\n (change)=\"averageAggregation($event)\" (click)=\"$event.stopPropagation()\">Average</mat-checkbox>\n </p>\n <p>\n <mat-checkbox class=\"aggregate-fun\"[(ngModel)]='tabularReport.matrix.attributes[currentIndex].aggregate.showMax'\n (change)=\"maxAggregation($event)\" (click)=\"$event.stopPropagation()\">Max</mat-checkbox>\n </p>\n <p>\n <mat-checkbox class=\"aggregate-fun\"[(ngModel)]='tabularReport.matrix.attributes[currentIndex].aggregate.showMin'\n (change)=\"minAggregation($event)\"(click)=\"$event.stopPropagation()\">Min</mat-checkbox>\n </p>\n </section>\n </ng-template>\n</mat-menu>\n\n<div *ngIf=\"!tabularReport.isDataLoaded && tabularReport.matrix.attributes.length!==0\" class=\"loader-spinner\">\n <app-ghost-loader [elementType]=\"GhostLoaderType.TabularChartLoader\" ></app-ghost-loader>\n</div>\n<!-- <div *ngIf=\"!tabularReport.isDataLoaded && tabularReport.matrix.attributes.length!==0\" class=\"loader-spinner\"> -->\n <!-- <mat-spinner [diameter]=\"40\"></mat-spinner></div> -->\n", styles: ["lib-column-group-view{display:block;height:calc(100% - 6.7rem);min-height:calc(100% - 6.7rem);max-height:calc(100% - 6.7rem)}.tabular-report-tabel-th{display:flex}.tabular-report-tabel-th .mat-icon{max-height:10px;min-height:10px;font-size:10px}.tabular-report-tabel-th .tabular-report-table-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabular-report-tabel-th button{width:24px}.zero-records{height:calc(100% - 2.4rem);max-width:100%;position:sticky;left:0}.column-grouping-table-container{min-height:100%;max-height:100%;height:100%;width:100%;padding-top:0;padding-left:14px;padding-right:14px;z-index:99;bottom:1rem}.column-grouping-table-container table{width:99.5%!important;height:auto;border:none!important}.column-grouping-table-container table .thead{position:sticky;top:1px}.column-grouping-table-container table .thead th{position:relative;background-color:#f2f8ff;border-top:none!important;border-bottom:none!important;padding:0}.column-grouping-table-container table .thead th .resize-holder{cursor:col-resize!important;width:20px;height:100%;position:absolute;right:-10px;top:0;z-index:1}.column-grouping-table-container table .thead th:last-child{border-right:none!important}.column-grouping-table-container table .thead th:first-child{border-left:none!important}.column-grouping-table-container table .thead .sr-head{position:absolute;justify-content:center;inset:0;display:flex;align-items:center}.column-grouping-table-container table tbody td{padding-left:4px;padding-right:4px}.url:hover{color:#00f}.loader-spinner{justify-content:center;display:flex;position:sticky;top:50%;vertical-align:middle;margin:0}\n"] }]
|
|
4457
|
+
args: [{ selector: 'lib-column-group-view', encapsulation: ViewEncapsulation.None, template: "<div class=\"column-grouping-table-container customscroll\" *ngIf='tabularReport.matrix.attributes[0].series.length!==0 && tabularReport.isDataLoaded'>\n <table\n (click)=\"tableSelect($event)\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n *ngIf=tabularReport cdkDropListGroup style=\"width:100%\" [ngClass]=\"{'mt-1': tabularReport.matrix.attributes.length>0 && tabularReport.matrix.attributes[0].series.length===0}\">\n <caption></caption>\n <tbody [ngClass]=\"{'shadow':tabularReport.tableStyle.border.shadow.enable}\"\n *ngIf=\"tabularReport.matrix.attributes.length>0\"\n >\n <ng-container *ngFor=\"let _attr of tabularReport.colGrouping; even as isEven;let m = index\">\n <ng-container>\n <tr *ngIf=\"m===0\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.rowGrouping.length===2\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n ></td>\n <th [id]=th\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"onContextMenu($event,i)\"\n [style.text-align]='_attr.alignment'\n >\n <div class=\"tabular-report-tabel-th\">\n <span class=\"tabular-report-table-text\">{{_attr.label}}</span>\n <!-- <button mat-icon-button (click)=\"onContextMenu($event,i)\">\n <mat-icon class=\"tab-down-arrow\" svgIcon=\"heroicons_outline:chevron-down\"></mat-icon>\n </button> -->\n </div>\n </th>\n\n <!-- to show single column grouping unique series -->\n <ng-container *ngFor='let data of _attr.uniqueSeries;let i= index'>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.colGrouping.length===1\"\n [colSpan]=tabularReport.rowCount?tabularReport.colData.get(data)+1:tabularReport.colData.get(data)\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"drillThroughContext($event, _attr, _attr.series.indexOf(data))\">\n\n <ng-container *ngIf=\"data\">\n\n <div [ngSwitch]=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetType\">\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='datetime' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='both'\">\n <span>{{moment(data+'Z')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='timestamp'\">\n <span >{{data}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='time'\">\n <span *ngIf=\"data \">{{moment(data,'hh:mm:ss')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">{{data|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date_range'\">\n {{data}}\n </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='decimal'|| tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='text' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='string'\">\n {{data}}\n </span>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{data| axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{data}}</span>\n </span>\n </span>\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- default case -->\n <span *ngSwitchDefault>{{data}}</span>\n\n </div>\n </ng-container>\n <span *ngIf='!data'>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ 0 | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{0 | axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'detail'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{0}}</span>\n </span>\n <!-- when series data is empty -->\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType!=='numeric'\">-</span>\n\n </span>\n\n </td>\n\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.colGrouping.length>1 && tabularReport.integerArray.length>0\"\n [colSpan]=tabularReport.rowCount?tabularReport.colData.get(data)+tabularReport.secondColData.get(data).length:tabularReport.colData.get(data)\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\" >\n <ng-container *ngIf=\"data\">\n\n <div [ngSwitch]=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetType\">\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='datetime' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='both'\">\n <span >{{moment(data+'Z')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='timestamp'\">\n <span>{{data}}</span>\n </ng-container>\n\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='time'\">\n <span *ngIf=\"data \">{{moment(data,'hh:mm:ss')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">{{data|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date_range'\">\n {{data}}\n </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='decimal'|| tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='text' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='string'\">\n {{data}}\n </span>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{data| axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{data}}</span>\n </span>\n </span>\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- default case -->\n <span *ngSwitchDefault>{{data}}</span>\n\n </div>\n </ng-container>\n <span *ngIf='!data'>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ 0 | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{0 | axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'detail'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{0}}</span>\n </span>\n <!-- when series data is empty -->\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType!=='numeric'\">-</span>\n\n </span>\n </td>\n\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.colGrouping.length>1 && tabularReport.integerArray.length===0\"\n [colSpan]=\"tabularReport.secondColData.get(data).length\"\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\" >\n\n <ng-container *ngIf=\"data\">\n\n <div [ngSwitch]=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetType\">\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='datetime' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='both'\">\n <span>{{moment(data+'Z')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='timestamp'\">\n <span>{{data}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='time'\">\n <span *ngIf=\"data \">{{moment(data,'hh:mm:ss')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">{{data|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date_range'\">\n {{data}}\n </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='decimal'|| tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='text' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='string'\">\n {{data}}\n </span>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{data| axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{data}}</span>\n </span>\n </span>\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- default case -->\n <span *ngSwitchDefault>{{data}}</span>\n\n </div>\n </ng-container>\n <span *ngIf='!data'>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ 0 | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{0 | axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'detail'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{0}}</span>\n </span>\n <!-- when series data is empty -->\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType!=='numeric'\">-</span>\n\n </span>\n </td>\n\n </ng-container>\n <!-- grand total header -->\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.showGrandTotal\"\n [colSpan]=tabularReport.rowCount?tabularReport.integerArray.length+1:tabularReport.integerArray.length\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n\n >\n Total\n </td>\n\n </tr>\n\n\n <tr *ngIf=\"m===1\">\n <!-- to show double column grouping header with series data -->\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.rowGrouping.length===2\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n ></td>\n <th [id]=th\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='_attr.alignment'\n >\n <div class=\"tabular-report-tabel-th\">\n <span class=\"tabular-report-table-text\">{{_attr.label}}</span>\n <!-- <button mat-icon-button (click)=\"onContextMenu($event,i)\">\n <mat-icon class=\"tab-down-arrow\" svgIcon=\"heroicons_outline:chevron-down\"></mat-icon>\n </button> -->\n </div>\n </th>\n <ng-container *ngFor=\"let series of tabularReport.colGrouping[0].uniqueSeries \">\n\n <ng-container *ngFor=\"let data of tabularReport.secondColData.get(series) let x=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [colSpan]=tabularReport.rowCount?tabularReport.integerArray.length+1:tabularReport.integerArray.length\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"drillThroughContext($event, _attr, i)\"\n >\n <ng-container *ngIf=\"data\">\n <div [ngSwitch]=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetType\">\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='datetime' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='both'\">\n <span>{{moment(data+'Z')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='timestamp'\">\n <span>{{data}}</span>\n </ng-container>\n\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='time'\">\n <span *ngIf=\"data \">{{moment(data,'hh:mm:ss')|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date'\">{{data|date:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='date_range'\">\n {{data}}\n </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='decimal'|| tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='text' || tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='string'\">\n {{data}}\n </span>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{data| axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{data}}</span>\n </span>\n </span>\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+data\" (click)=\"redirect($event,x1ImageMediaUrl+data)\">{{data}}</span>\n </span>\n <!-- default case -->\n <span *ngSwitchDefault>{{data}}</span>\n\n </div>\n </ng-container>\n <span *ngIf='!data'>\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType==='numeric'\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency \">{{ 0 | currency:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage\">{{0 | axoPercentage:tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].series: 'detail'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].valueFormatting.currency\">{{0}}</span>\n </span>\n <!-- when series data is empty -->\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.rowGrouping.length+m].widgetSubType!=='numeric'\">-</span>\n\n </span>\n </td>\n </ng-container>\n\n\n </ng-container>\n <td *ngIf=\"tabularReport.showGrandTotal\"\n class=\"px-1.5\tpy-1.5\"\n [colSpan]=tabularReport.rowCount?tabularReport.integerArray.length+1:tabularReport.integerArray.length\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\">-</td>\n </tr>\n </ng-container>\n </ng-container>\n <tr cdkDropList cdkDropListOrientation=\"horizontal\" class=\"example-list\" (cdkDropListDropped)=\"drop($event)\">\n <!-- column headers -->\n <ng-container *ngFor=\"let attr of tabularReport.rowGrouping; even as isEven;let m = index\">\n <th\n [id]=\"th\"\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"onContextMenu($event,i)\"\n [style.text-align]='attr.alignment'\n >\n <div class=\"tabular-report-tabel-th\">\n <span class=\"tabular-report-table-text\">{{attr.label}}</span>\n <!-- <button mat-icon-button (click)=\"onContextMenu($event,i)\">\n <mat-icon class=\"tab-down-arrow\" svgIcon=\"heroicons_outline:chevron-down\"></mat-icon>\n </button> -->\n </div>\n </th>\n </ng-container>\n\n <!-- to show integer column headers -->\n <ng-container *ngFor=\"let data of tabularReport.cloneDataCount; let m=index\" >\n <ng-container *ngFor=\"let attr of tabularReport.integerArray;let i=index\">\n <th\n [id]=th\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='attr.alignment'\n >\n <div class=\"tabular-report-tabel-th\">\n <span class=\"tabular-report-table-text\">{{attr}}</span>\n <!-- <button mat-icon-button (click)=\"onContextMenu($event,i)\">\n <mat-icon class=\"tab-down-arrow\" svgIcon=\"heroicons_outline:chevron-down\"></mat-icon>\n </button> -->\n </div>\n </th>\n </ng-container>\n <!-- row count header -->\n <th *ngIf=\"tabularReport.rowCount\"\n [id]=th\n class=\"px-1.5\tpy-1.5\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.font-family]=\"tabularReport.tableStyle.header.font.family\"\n [style.color]=\"tabularReport.tableStyle.header.font.color\"\n [style.background]=\"tabularReport.tableStyle.header.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.header.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <div class=\"tabular-report-tabel-th\">\n <span class=\"tabular-report-table-text\">Count</span>\n <!-- <button mat-icon-button (click)=\"onContextMenu($event,i)\">\n <mat-icon class=\"tab-down-arrow\" svgIcon=\"heroicons_outline:chevron-down\"></mat-icon>\n </button> -->\n </div>\n </th>\n </ng-container>\n <!-- horizontal grand total headers -->\n <ng-container *ngIf=\"tabularReport.showGrandTotal\">\n <ng-container *ngFor=\"let attr of tabularReport.integerArray;let i=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n colGrouping\n\n >\n <span>{{attr}}</span>\n </td>\n </ng-container>\n <td *ngIf=\"tabularReport.rowCount\"\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n\n >\n Count\n </td>\n </ng-container>\n </tr>\n\n <ng-container *ngIf=\"tabularReport.rowGrouping.length>1\">\n <ng-container *ngFor=\"let data of tabularReport.matrix.attributes[0].series;let i = index; even as isEven; let data1\">\n <tr\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [ngStyle]=\"{ background: isEven ? tabularReport.tableStyle.rowStyle.oddColor: tabularReport.tableStyle.rowStyle.evenColor}\"\n [style.border]=\"tabularReport.tableStyle.border.width + ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n\n >\n <!-- series data -->\n <ng-container *ngFor=\"let _attr of tabularReport.matrix.attributes; even as isEven;let m = index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\" _attr.rowSpan && !_attr.cplSpan && _attr.cloneSeries && _attr.cloneSeries[i]!=='repeated' && m!==1\"\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='_attr.alignment'\n [rowSpan]='_attr.cloneGroupData[i]'\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n (contextmenu)=\"drillThroughContext($event, _attr, i)\"\n >\n {{indexing(_attr.groupData[i],i)}}\n <div [ngSwitch]=\"_attr.widgetType\">\n <!-- when data type is number -->\n <span *ngSwitchCase=\"'int-widget'\">\n <span *ngIf=\"_attr.valueFormatting.currency \">{{ _attr.series[i] | currency:_attr.valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" _attr.valueFormatting.percentage\">{{_attr.series[i]| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!_attr.valueFormatting.percentage && !_attr.valueFormatting.currency\">{{_attr.series[i]}}</span>\n </span>\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"_attr.widgetSubType==='date_range' || _attr.widgetSubType==='datetime' || _attr.widgetSubType==='both'\">\n <span>{{moment(_attr.series[i]+'Z')|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.series[i] && _attr.widgetSubType==='timestamp'\">\n <span >{{_attr.series[i]|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.widgetSubType==='time'\">\n <span *ngIf=\"_attr.series[i] \">{{moment(_attr.series[i],'hh:mm:ss')|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.widgetSubType==='date'\">\n <span *ngIf=\"_attr.series[i] && _attr.widgetSubType==='date'\">{{_attr.series[i]|date:_attr.valueFormatting.date }}</span> </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"_attr.widgetSubType==='decimal'|| _attr.widgetSubType==='text' || _attr.widgetSubType==='string'\">\n {{_attr.series[i]}}\n </span>\n <span *ngIf=\"_attr.widgetSubType==='numeric'\">\n <span *ngIf=\"_attr.valueFormatting.currency \">{{ _attr.series[i] | currency:_attr.valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" _attr.valueFormatting.percentage\">{{_attr.series[i]| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!_attr.valueFormatting.percentage && !_attr.valueFormatting.currency\">{{_attr.series[i]}}</span>\n </span>\n </span>\n\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- default case -->\n <span *ngSwitchDefault>{{_attr.series[i]}}</span>\n <!-- when series data is empty -->\n <span *ngIf='!_attr.series[i]'>-</span>\n\n </div>\n\n </td>\n </ng-container>\n <!-- when two rows grouped -->\n <ng-container *ngFor=\"let _attr of tabularReport.matrix.attributes; even as isEven;let m = index\">\n <ng-container>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\" tabularReport.rowGrouping.length>1 && m>0 && _attr.rowSpan && _attr.cloneSeries[i]!=='repeated'\"\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='_attr.alignment'\n (contextmenu)=\"drillThroughContext($event, _attr, i)\"\n >\n <div [ngSwitch]=\"_attr.widgetType\">\n <!-- when data type is number -->\n <span *ngSwitchCase=\"'int-widget'\">\n <span *ngIf=\"_attr.valueFormatting.currency \">{{ _attr.series[i] | currency:_attr.valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" _attr.valueFormatting.percentage\">{{_attr.series[i]| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!_attr.valueFormatting.percentage && !_attr.valueFormatting.currency\">{{_attr.series[i]}}</span>\n </span>\n <!-- when data type is datetime -->\n <span *ngSwitchCase=\"'datepicker-widget'\">\n <ng-container *ngIf=\"_attr.widgetSubType==='datetime' || _attr.widgetSubType==='both'\">\n <span>{{moment(_attr.series[i]+'Z')|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.series[i] && _attr.widgetSubType==='timestamp'\">\n <span >{{_attr.series[i]|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.widgetSubType==='time'\">\n <span *ngIf=\"_attr.series[i] \">{{moment(_attr.series[i],'hh:mm:ss')|date:_attr.valueFormatting.date}}</span>\n </ng-container>\n <ng-container *ngIf=\"_attr.widgetSubType==='date'\">\n <span *ngIf=\"_attr.series[i] && _attr.widgetSubType==='date'\">{{moment(_attr.series[i],'YYYY-MM-dd')|date:_attr.valueFormatting.date }}</span> </ng-container>\n </span>\n <!-- when data type is text -->\n <span *ngSwitchCase=\"'textbox-widget'\">\n <span *ngIf=\"_attr.widgetSubType==='decimal'|| _attr.widgetSubType==='text' || _attr.widgetSubType==='string' || _attr.widgetSubType==='date_range'\">\n {{_attr.series[i]}}\n </span>\n <span *ngIf=\"_attr.widgetSubType==='numeric'\">\n <span *ngIf=\"_attr.valueFormatting.currency \">{{ _attr.series[i] | currency:_attr.valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" _attr.valueFormatting.percentage\">{{_attr.series[i]| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!_attr.valueFormatting.percentage && !_attr.valueFormatting.currency\">{{_attr.series[i]}}</span>\n </span>\n </span>\n\n <!-- When widget type is web link -->\n <span *ngSwitchCase=\"'hyperlink-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is signature widget -->\n <span *ngSwitchCase=\"'wetsignaturecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is video widget -->\n <span *ngSwitchCase=\"'videocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is audio widget -->\n <span *ngSwitchCase=\"'audiocapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'fileupload-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- When widget type is document widget -->\n <span *ngSwitchCase=\"'imagecapture-widget'\">\n <span class=\"url\" [title]=\"x1ImageMediaUrl+_attr.series[i]\" (click)=\"redirect($event,x1ImageMediaUrl+_attr.series[i])\">{{_attr.series[i]}}</span>\n </span>\n\n <!-- default case -->\n <span *ngSwitchDefault>{{_attr.series[i]}}</span>\n <!-- when series data is empty -->\n <span *ngIf='!_attr.series[i]'>-</span>\n\n <span *ngIf='_attr.series[i]'> ({{_attr.cloneGroupData[i]}})</span>\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <!-- when rowCount is off -->\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <ng-container *ngFor=\"let data of map.get(i); let m=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n\n </td>\n </ng-container>\n\n\n <!-- to show side grand total -->\n <ng-container *ngIf=\"tabularReport.showGrandTotal && tabularReport.matrix.attributes[1].cloneSeries[i]!=='repeated'\" >\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i); let m=index\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n\n </td>\n </ng-container>\n </ng-container>\n <!-- to show data with row count -->\n <ng-container *ngIf='tabularReport.rowCount'>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.dataRender.get(i) ;let m=index\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n >\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n <span *ngIf=\"!tabularReport.countIntegerIndexing[m]\">{{data}}</span>\n\n\n </td>\n\n <ng-container *ngIf=\"tabularReport.integerArray.length===0 \">\n <ng-container *ngFor=\"let data of tabularReport.countsData.get(i)\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n > {{data}}</td>\n </ng-container>\n </ng-container>\n\n\n <ng-container *ngIf=\"tabularReport.showGrandTotal\" >\n <ng-container *ngIf=\"tabularReport.sideTotal.get(i) && tabularReport.matrix.attributes[1].cloneSeries[i]!=='repeated'\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i) let m=index\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n </ng-container>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.totalRowCount.get(i) && tabularReport.matrix.attributes[1].cloneSeries[i]!=='repeated'\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n >{{tabularReport.totalRowCount.get(i)}}</td>\n </ng-container>\n\n </ng-container>\n </tr>\n <!-- subtotal -->\n <tr *ngIf='tabularReport.subTotal && (attrGlobal===i) '>\n <ng-container *ngFor=\"let _attr of tabularReport.rowGrouping; even as isEven;let m = index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"m===0\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.text-align]='_attr.alignment'\n >\n <span>Subtotal</span>\n </td>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"m===1\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >-</td>\n </ng-container>\n\n <ng-container *ngFor=\"let data of tabularReport.colSubTotal.get(i) let m=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.rowCount\">\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n <span *ngIf=\"!tabularReport.countIntegerIndexing[m]\">{{data}}</span>\n </ng-container>\n </td>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.integerArray.length===0\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.countsSubTotal.get(i)\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n {{data}}\n </td>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.showGrandTotal\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideSubTotal.get(i) let m=index\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf=\"tabularReport.rowCount\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n {{tabularReport.countSTotal.get(i)}}\n </td>\n </ng-container>\n </tr>\n </ng-container>\n\n </ng-container>\n\n\n <!-- when single row grouping is applied -->\n <ng-container *ngIf=\"tabularReport.rowGrouping.length===1\">\n <ng-container *ngFor=\"let data of tabularReport.matrix.attributes[0].uniqueSeries;let i = index; even as isEven; let data1\">\n <tr>\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.subHeader.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subHeader.font.size\"\n [style.background]=\"tabularReport.tableStyle.subHeader.backgroundColor\"\n [style.color]=\"tabularReport.tableStyle.subHeader.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n (contextmenu)=\"drillThroughContext($event, tabularReport.matrix.attributes[0], i)\"\n >\n <span>{{data}}</span>\n <span *ngIf='!data'>-</span>\n </td>\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <ng-container *ngFor=\"let data of map.get(i) let m=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n </ng-container>\n\n <ng-container *ngIf=\"tabularReport.showGrandTotal\" >\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i); let m=index\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n\n </td>\n </ng-container>\n\n </ng-container>\n\n\n <ng-container *ngIf=\"tabularReport.rowCount\">\n <ng-container *ngFor=\"let data of tabularReport.dataRender.get(i) let m=index\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n <span *ngIf=\"!tabularReport.countIntegerIndexing[m]\">{{data}}</span>\n\n </td>\n </ng-container>\n\n <ng-container *ngIf=\"tabularReport.integerArray.length===0\">\n <ng-container *ngFor=\"let data of tabularReport.countsData.get(i)\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.body.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n > {{data}}</td>\n\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.showGrandTotal\" >\n <td\n class='px-1.5\tpy-1.5'\n *ngFor=\"let data of tabularReport.sideTotal.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n {{tabularReport.totalRowCount.get(i)}}\n </td>\n </ng-container>\n </ng-container>\n </tr>\n <!-- when subtotal toggle is on -->\n <tr *ngIf=\"tabularReport.subTotal\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\" >SubTotal</td>\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of map.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span></td>\n\n <!-- to show side grand total -->\n <ng-container *ngIf=\"tabularReport.showGrandTotal\" >\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n </td>\n </ng-container>\n </ng-container>\n <!-- to show row count -->\n <ng-container *ngIf=\"tabularReport.rowCount\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.dataRender.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.body.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.body.font.size\"\n [style.color]=\"tabularReport.tableStyle.body.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countIntegerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n <span *ngIf=\"!tabularReport.countIntegerIndexing[m]\">{{data}}</span></td>\n <ng-container *ngIf=\"tabularReport.integerArray.length===0\">\n <ng-container *ngFor=\"let data of tabularReport.countsData.get(i)\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n > {{data}}</td>\n </ng-container>\n </ng-container>\n\n\n <ng-container *ngIf=\"tabularReport.showGrandTotal\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let data of tabularReport.sideTotal.get(i) let m=index\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n <span *ngIf=\"tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency \">{{ data | currency:tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage\">{{data| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"!tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.integerIndexing[m]].valueFormatting.currency\">{{data}}</span>\n\n </td>\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.font-family]=\"tabularReport.tableStyle.subFooter.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.subFooter.font.size\"\n [style.color]=\"tabularReport.tableStyle.subFooter.font.color\"\n [style.background]=\"tabularReport.tableStyle.subFooter.backgroundColor\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n {{tabularReport.totalRowCount.get(i)}}\n </td>\n </ng-container>\n </ng-container>\n </tr>\n </ng-container>\n\n </ng-container>\n </tbody>\n <!-- Table footer for grand total -->\n <tfoot *ngIf=\"tabularReport.matrix.attributes.length>0\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.font-size.px]=\"tabularReport.tableStyle.footer.font.size\"\n [style.color]=\"tabularReport.tableStyle.footer.font.color\"\n >\n <tr *ngIf=\"tabularReport.showGrandTotal\">\n <td\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\">\n Grand Total</td>\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngIf='tabularReport.rowGrouping.length>1'\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n >\n -\n </td>\n\n <ng-container *ngIf=\"!tabularReport.rowCount\">\n <td *ngFor=\"let total of tabularReport.grandTotal;let m=index\"\n class=\"px-1.5\tpy-1.5\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n >\n <span *ngIf=\"tabularReport.gTotalIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.currency \">{{ total | currency:tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.gTotalIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.percentage\">{{total| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.gTotalIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.gTotalIntegerIndexing[m]].valueFormatting.currency\">{{total}}</span>\n <span *ngIf=\"!tabularReport.gTotalIntegerIndexing[m]\">{{total}}</span>\n </td>\n </ng-container>\n <!-- when row count toggle is on -->\n <ng-container *ngIf=\"tabularReport.rowCount\">\n <ng-container *ngIf=\"tabularReport.integerArray.length>0\">\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let total of tabularReport.grandTotal2;let m=index\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n >\n <span *ngIf=\"tabularReport.countTotalIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.currency \">{{ total | currency:tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.currency :'symbol'}}</span>\n <span *ngIf=\" tabularReport.countTotalIntegerIndexing[m] && tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.percentage\">{{total| axoPercentage: [] : 'column'}}</span>\n <span *ngIf=\"tabularReport.countTotalIntegerIndexing[m] && !tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.percentage && !tabularReport.matrix.attributes[tabularReport.countTotalIntegerIndexing[m]].valueFormatting.currency\">{{total}}</span>\n <span *ngIf=\"!tabularReport.countTotalIntegerIndexing[m]\">{{total}}</span>\n </td>\n </ng-container>\n <ng-container *ngIf=\"tabularReport.integerArray.length===0\">\n\n <td\n class=\"px-1.5\tpy-1.5\"\n *ngFor=\"let total of tabularReport.countsTotal;let i=index\"\n [style.border]=\"tabularReport.tableStyle.border.width+'px'+ ' '+ tabularReport.tableStyle.border.borderStyle + ' ' + tabularReport.tableStyle.border.color\"\n [style.font-family]=\"tabularReport.tableStyle.footer.font.family\"\n [style.background]=\"tabularReport.tableStyle.footer.backgroundColor\"\n >\n <span>{{total}}</span>\n\n </td>\n\n </ng-container>\n </ng-container>\n </tr>\n </tfoot>\n </table>\n <div class=\"flex justify-center items-center flex-col zero-records\" *ngIf=\"(tabularReport.matrix.attributes.length>0 && tabularReport.matrix.attributes[0].series.length===0)\">\n No records available\n </div>\n</div>\n\n<div style=\"visibility: hidden; position: fixed\" [style.left]=\"contextMenuPosition.x\"\n [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"contextMenu\">\n</div>\n\n<!-- Mat Menu trigger for table columns-->\n<mat-menu #contextMenu=\"matMenu\">\n <div id=\"table-menu\">\n <ng-template matMenuContent let-item=\"reportData\">\n <button *ngIf=\"tabularReport.matrix.attributes.length>0 \"mat-menu-item [matMenuTriggerFor]=\"Aggregate\">Aggregate</button>\n <button mat-menu-item (click)=\"moveColumnLeft($event)\">Move Left</button>\n <button mat-menu-item (click)=\"moveColumnRight($event)\">Move Right</button>\n <button *ngIf=\"screenTypes.dashboardBuilder === screenType\" mat-menu-item (click)=\"removeFromDashboard()\">Remove From Dashboard</button>\n </ng-template>\n </div>\n</mat-menu>\n<!-- --------------------------------------------------------------------------- -->\n\n\n\n<!-- Mat menu trigger for Aggregation-->\n<mat-menu #Aggregate=\"matMenu\">\n <ng-template matMenuContent *ngIf='tabularReport.matrix.attributes.length>0'>\n <section>\n <p>\n <mat-checkbox class=\"aggregate-fun\" [(ngModel)]='tabularReport.matrix.attributes[currentIndex].aggregate.showSum'\n (change)=\"sumAggregation($event)\" (click)=\"$event.stopPropagation()\">sum</mat-checkbox>\n </p>\n <p>\n <mat-checkbox class=\"aggregate-fun\" [(ngModel)]='tabularReport.matrix.attributes[currentIndex].aggregate.showAvg'_attr.widgetSubType==='date_range' ||\n (change)=\"averageAggregation($event)\" (click)=\"$event.stopPropagation()\">Average</mat-checkbox>\n </p>\n <p>\n <mat-checkbox class=\"aggregate-fun\"[(ngModel)]='tabularReport.matrix.attributes[currentIndex].aggregate.showMax'\n (change)=\"maxAggregation($event)\" (click)=\"$event.stopPropagation()\">Max</mat-checkbox>\n </p>\n <p>\n <mat-checkbox class=\"aggregate-fun\"[(ngModel)]='tabularReport.matrix.attributes[currentIndex].aggregate.showMin'\n (change)=\"minAggregation($event)\"(click)=\"$event.stopPropagation()\">Min</mat-checkbox>\n </p>\n </section>\n </ng-template>\n</mat-menu>\n\n<div *ngIf=\"!tabularReport.isDataLoaded && tabularReport.matrix.attributes.length!==0\" class=\"loader-spinner\">\n <app-ghost-loader [elementType]=\"GhostLoaderType.TabularChartLoader\" ></app-ghost-loader>\n</div>\n<!-- <div *ngIf=\"!tabularReport.isDataLoaded && tabularReport.matrix.attributes.length!==0\" class=\"loader-spinner\"> -->\n <!-- <mat-spinner [diameter]=\"40\"></mat-spinner></div> -->\n", styles: ["lib-column-group-view{display:block;height:calc(100% - 6.7rem);min-height:calc(100% - 6.7rem);max-height:calc(100% - 6.7rem)}.tabular-report-tabel-th{display:flex}.tabular-report-tabel-th .mat-icon{max-height:10px;min-height:10px;font-size:10px}.tabular-report-tabel-th .tabular-report-table-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabular-report-tabel-th button{width:24px}.zero-records{height:calc(100% - 2.4rem);max-width:100%;position:sticky;left:0}.column-grouping-table-container{min-height:100%;max-height:100%;height:100%;width:100%;padding-top:0;padding-left:14px;padding-right:14px;z-index:99;bottom:1rem}.column-grouping-table-container table{width:99.5%!important;height:auto;border:none!important}.column-grouping-table-container table .thead{position:sticky;top:1px}.column-grouping-table-container table .thead th{position:relative;background-color:#f2f8ff;border-top:none!important;border-bottom:none!important;padding:0}.column-grouping-table-container table .thead th .resize-holder{cursor:col-resize!important;width:20px;height:100%;position:absolute;right:-10px;top:0;z-index:1}.column-grouping-table-container table .thead th:last-child{border-right:none!important}.column-grouping-table-container table .thead th:first-child{border-left:none!important}.column-grouping-table-container table .thead .sr-head{position:absolute;justify-content:center;inset:0;display:flex;align-items:center}.column-grouping-table-container table tbody td{padding-left:4px;padding-right:4px}.url:hover{color:#00f}.loader-spinner{justify-content:center;display:flex;position:sticky;top:50%;vertical-align:middle;margin:0}\n"] }]
|
|
4444
4458
|
}], function () { return [{ type: i1.ReportBuilderMasterService }, { type: i2.FieldsListService }, { type: i3.TabularReportService }, { type: i4.DashboardBuilderService }]; }, { tabularReport: [{
|
|
4445
4459
|
type: Input
|
|
4446
4460
|
}], isEditable: [{
|
|
@@ -4461,4 +4475,4 @@ ColumnGroupViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Co
|
|
|
4461
4475
|
type: ViewChild,
|
|
4462
4476
|
args: [MatMenuTrigger]
|
|
4463
4477
|
}] }); })();
|
|
4464
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWdyb3VwLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F4LWNvbW1vbi11aS1saWIvc3JjL2xpYi9lbmxpZ2h0ZW4tbGliL3JlcG9ydC90YWJ1bGFyLXJlcG9ydC90YWJ1bGFyL2NvbHVtbi1ncm91cC12aWV3L2NvbHVtbi1ncm91cC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9heC1jb21tb24tdWktbGliL3NyYy9saWIvZW5saWdodGVuLWxpYi9yZXBvcnQvdGFidWxhci1yZXBvcnQvdGFidWxhci9jb2x1bW4tZ3JvdXAtdmlldy9jb2x1bW4tZ3JvdXAtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUd0RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JB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bUJBQW1CLENBQUMsS0FBaUIsRUFBRSxTQUF3QixFQUFFLENBQVM7UUFDeEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7O2dHQWxQVSx3QkFBd0I7MkVBQXhCLHdCQUF3Qjt1QkFXeEIsY0FBYzs7Ozs7UUNsQzNCLHlFQXdwQ007UUFFTix5QkFFTTtRQUdOLHlDQUFpQztRQUMvQiw4QkFBcUI7UUFDbkIseUZBS2M7UUFDaEIsaUJBQU07UUFDUixpQkFBVztRQU1YLHlDQUErQjtRQUM3Qix5RUFtQmM7UUFDaEIsaUJBQVc7UUFFWCx5RUFFTTs7O1FBdnNDcUQsbUhBQXdGO1FBMHBDbEcsZUFBb0M7UUFBcEMsaURBQW9DLGtDQUFBO1FBQy9DLHVDQUFpQztRQW9CeEMsZUFBOEM7UUFBOUMscUVBQThDO1FBc0J2RSxlQUErRTtRQUEvRSwwR0FBK0U7O3VGRDlxQ3hFLHdCQUF3QjtjQU5wQyxTQUFTOzJCQUNFLHVCQUF1QixpQkFHbkIsaUJBQWlCLENBQUMsSUFBSTtzTEFLM0IsYUFBYTtrQkFBckIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxlQUFlO2tCQUF2QixLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUNHLHNCQUFzQjtrQkFBOUIsS0FBSztZQUNHLHVCQUF1QjtrQkFBL0IsS0FBSztZQUNHLFNBQVM7a0JBQWpCLEtBQUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLO1lBR04sV0FBVztrQkFGVixTQUFTO21CQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgRWxlbWVudHNEdG8gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21tb24tZHRvL2VsZW1lbnRzLWR0byc7XG5pbXBvcnQgeyBSZXBvcnRCdWlsZGVyTWFzdGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3JlcG9ydC1idWlsZGVyLW1hc3Rlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYnVsYXJSZXBvcnQgfSBmcm9tICcuLi8uLi90YWJ1bGFyLXJlcG9ydCc7XG5pbXBvcnQgeyBUYWJ1bGFyUmVwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uL3RhYnVsYXItcmVwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRmllbGRzTGlzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9maWVsZC1saXN0LWxpYi9maWVsZHMtbGlzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcG9ydCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbW1vbi11dGlscy9yZXBvcnQnO1xuaW1wb3J0IHsgQXR0cmlidXRlRGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uL2ZpZWxkcy9hdHRyaWJ1dGUtZGF0YSc7XG5pbXBvcnQgeyBEYXNoYm9hcmRCdWlsZGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2Rhc2hib2FyZC1saWIvZGFzaGJvYXJkLWJ1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTY3JlZW5UeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZW5saWdodGVuLWxpYi9maWx0ZXJzL2NvbmRpdGlvbi10eXBlJztcbmltcG9ydCB7IFRhYnVsYXJDb21wb25lbnQgfSBmcm9tICcuLi90YWJ1bGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBeEZpbHRlciB9IGZyb20gJy4uLy4uLy4uLy4uL2ZpbHRlcnMvYXgtZmlsdGVyJztcbmltcG9ydCB7IEdob3N0TG9hZGVyVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2dob3N0LWxvYWRlci9naG9zdC1sb2FkZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWNvbHVtbi1ncm91cC12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbHVtbi1ncm91cC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLWdyb3VwLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjpWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENvbHVtbkdyb3VwVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuXG4gIEBJbnB1dCgpIHRhYnVsYXJSZXBvcnQ6IFRhYnVsYXJSZXBvcnQ7XG4gIEBJbnB1dCgpIGlzRWRpdGFibGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHgxSW1hZ2VNZWRpYVVybDogc3RyaW5nO1xuICBASW5wdXQoKSBzY3JlZW5UeXBlOiBTY3JlZW5UeXBlO1xuICBASW5wdXQoKSBkcmlsbFRocm91Z2hQYXJlbnRUeXBlOiBTY3JlZW5UeXBlO1xuICBASW5wdXQoKSBkcmlsbFRocm91Z2hGaWx0ZXJJbnB1dDogQXhGaWx0ZXI7XG4gIEBJbnB1dCgpIHBhcmVudFJlZjogVGFidWxhckNvbXBvbmVudDtcbiAgQElucHV0KCkgcmVwb3J0SWQ6IG51bWJlcjtcbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlcilcblxuICBjb250ZXh0TWVudTogTWF0TWVudVRyaWdnZXI7XG4gIGNvbHVtbkRhdGE6IGFueTtcbiAgY29udGV4dE1lbnVQb3NpdGlvbiA9IHsgeDogJzBweCcsIHk6ICcwcHgnIH07XG4gIGN1cnJlbnRJbmRleDogbnVtYmVyO1xuICBfYXZnOiBib29sZWFuID0gZmFsc2U7XG4gIF9tYXg6IGJvb2xlYW4gPSBmYWxzZTtcbiAgX21pbjogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93U3VtOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dNYXg6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd01pbjogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93QXZnOiBib29sZWFuID0gZmFsc2U7XG4gIG1vbWVudDogYW55ID0gbW9tZW50O1xuICBpc0RpcnR5OiBib29sZWFuO1xuICByZXBvcnQ6IFJlcG9ydDtcbiAgYXR0ckdsb2JhbDogbnVtYmVyO1xuICBjb3VudDogbnVtYmVyO1xuICBjdDogbnVtYmVyO1xuICBjb2xTZXJpZXM6IG51bWJlcjtcbiAgYXR0cmlidXRlRGF0YUNsb25lOiBBcnJheTxBdHRyaWJ1dGVEYXRhPiA9IFtdO1xuICBtYXA6IE1hcDxudW1iZXIsIGFueT47XG4gIGlzRGF0YUxvYWRlZCA9IGZhbHNlO1xuICBmQ29sRGF0YTogQXJyYXk8c3RyaW5nPjtcbiAgR2hvc3RMb2FkZXJUeXBlID0gR2hvc3RMb2FkZXJUeXBlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9yZXBvcnRCdWlsZGVyTWFzdGVyU2VydmljZTogUmVwb3J0QnVpbGRlck1hc3RlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZmllbGRzTGlzdFNlcnZpY2U6IEZpZWxkc0xpc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3RhYnVsYXJSZXBvcnRTZXJ2aWNlOiBUYWJ1bGFyUmVwb3J0U2VydmljZSxcbiAgICBwcml2YXRlIF9kYXNoYm9hcmRCdWlsZGVyU2VydmljZTogRGFzaGJvYXJkQnVpbGRlclNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gdGhpcy50YWJ1bGFyUmVwb3J0PXRoaXMuX3RhYnVsYXJSZXBvcnRTZXJ2aWNlLmNvbHVtbkRhdGEodGhpcy50YWJ1bGFyUmVwb3J0KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVwb3J0ID0gdGhpcy5fcmVwb3J0QnVpbGRlck1hc3RlclNlcnZpY2UucmVwb3J0O1xuXG4gICAgdGhpcy50YWJ1bGFyUmVwb3J0ID0gdGhpcy5fdGFidWxhclJlcG9ydFNlcnZpY2UuY29sdW1uRGF0YSh0aGlzLnRhYnVsYXJSZXBvcnQpO1xuXG4gICAgdGhpcy50YWJ1bGFyUmVwb3J0LmlzRGF0YUxvYWRlZCA9IGZhbHNlO1xuICAgIHRoaXMuZ2V0TWF0cml4RGltZW5zaW9uKCk7XG5cbiAgICB0aGlzLl90YWJ1bGFyUmVwb3J0U2VydmljZS5kYXRhUmVuZGVyLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIHRoaXMubWFwID0gdmFsdWU7XG4gICAgICB0aGlzLnRhYnVsYXJSZXBvcnQuZmlyc3RDb2xEYXRhID0gdmFsdWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXRNYXRyaXhEaW1lbnNpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkYXRhID0gbmV3IEVsZW1lbnRzRHRvKHRoaXMudGFidWxhclJlcG9ydCk7XG4gICAgICBkYXRhLnJlcG9ydElkID0gdGhpcy5yZXBvcnRJZDtcbiAgICAgIGRhdGEudHlwZSA9ICd0YWJ1bGFyLXJlcG9ydCc7XG4gICAgICBkYXRhLm9yZGVyQnkgPSB0aGlzLnRhYnVsYXJSZXBvcnQucm93R3JvdXBpbmc7XG4gICAgICBkYXRhLnBhZ2VJbmRleCA9IDA7XG4gICAgICBkYXRhLnBhZ2VTaXplID0gMDtcbiAgICAgIGRhdGEucGFnZUxlbmd0aD0wO1xuICAgICAgaWYgKHRoaXMuZHJpbGxUaHJvdWdoUGFyZW50VHlwZSA9PSBTY3JlZW5UeXBlLmRhc2hib2FyZEJ1aWxkZXIgfHwgdGhpcy5kcmlsbFRocm91Z2hQYXJlbnRUeXBlID09IFNjcmVlblR5cGUuY29udGFpbmVyRGFzaGJvYXJkKSB7XG4gICAgICAgIGRhdGEuYXBpVHlwZSA9ICdkYXNoYm9hcmQnO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc2NyZWVuVHlwZSA9PT0gU2NyZWVuVHlwZS5kcmlsbFRocm91Z2gpIHtcbiAgICAgICAgZGF0YS5maWx0ZXJzLmdsb2JhbEZpbHRlcnMuYmFzaWMucHVzaCh0aGlzLmRyaWxsVGhyb3VnaEZpbHRlcklucHV0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2ZpZWxkc0xpc3RTZXJ2aWNlLmdldE1hdHJpeERhdGEoZGF0YSkudGhlbigoZW50aXRpZXNBdHRyaWJ1dGUpID0+IHtcbiAgICAgICAgaWYgKGVudGl0aWVzQXR0cmlidXRlICE9IG51bGwpIHtcbiAgICAgICAgICBlbnRpdGllc0F0dHJpYnV0ZS5tYXRyaXguYXR0cmlidXRlcy5zaG93U3VtID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXMgPSBlbnRpdGllc0F0dHJpYnV0ZS5tYXRyaXguYXR0cmlidXRlcztcbiAgICAgICAgICB0aGlzLnRhYnVsYXJSZXBvcnQgPSB0aGlzLl90YWJ1bGFyUmVwb3J0U2VydmljZS5ncm91cERhdGEodGhpcy50YWJ1bGFyUmVwb3J0KTtcbiAgICAgICAgICB0aGlzLnRhYnVsYXJSZXBvcnQuY29sR3JvdXBpbmcuZm9yRWFjaCgoYXR0cmlidXRlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhYnVsYXJSZXBvcnQgPSB0aGlzLl90YWJ1bGFyUmVwb3J0U2VydmljZS5uZXdEYXRhKHRoaXMudGFidWxhclJlcG9ydCwgYXR0cmlidXRlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnRhYnVsYXJSZXBvcnQgPSB0aGlzLl90YWJ1bGFyUmVwb3J0U2VydmljZS5kYXRhRmFjdG9yeSh0aGlzLnRhYnVsYXJSZXBvcnQpO1xuICAgICAgICAgIGlmICh0aGlzLnRhYnVsYXJSZXBvcnQucm93Q291bnQgJiYgdGhpcy50YWJ1bGFyUmVwb3J0LmludGVnZXJBcnJheS5sZW5ndGggPiAwKSB7IHRoaXMudGFidWxhclJlcG9ydCA9IHRoaXMuX3RhYnVsYXJSZXBvcnRTZXJ2aWNlLnJvd0NvdW50RGF0YSh0aGlzLnRhYnVsYXJSZXBvcnQpOyB9XG4gICAgICAgICAgdGhpcy50YWJ1bGFyUmVwb3J0LmlzRGF0YUxvYWRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0RhdGFMb2FkZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnRhYnVsYXJSZXBvcnQuaXNEYXRhTG9hZGVkID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmlzRGF0YUxvYWRlZCA9IHRydWU7XG4gICAgdGhpcy50YWJ1bGFyUmVwb3J0LmlzRGF0YUxvYWRlZCA9IHRydWU7XG4gIH1cblxuXG4gIC8vIGNvbnRleHQgbWVudSBmb3IgdGFibGUgY29sdW1uc1xuICBvbkNvbnRleHRNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleDogbnVtYmVyLCBhdHRyOiBBdHRyaWJ1dGVEYXRhKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5jdXJyZW50SW5kZXggPSBpbmRleDtcbiAgICB0aGlzLmNvbnRleHRNZW51UG9zaXRpb24ueCA9IGV2ZW50LmNsaWVudFggKyAncHgnO1xuICAgIHRoaXMuY29udGV4dE1lbnVQb3NpdGlvbi55ID0gZXZlbnQuY2xpZW50WSArICdweCc7XG4gICAgdGhpcy5jb250ZXh0TWVudS5tZW51RGF0YSA9IHsgJ2F0dHInOiBhdHRyIH07XG4gICAgdGhpcy5jb250ZXh0TWVudS5tZW51LmZvY3VzRmlyc3RJdGVtKCdtb3VzZScpO1xuICAgIHRoaXMuY29udGV4dE1lbnUub3Blbk1lbnUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB0byByZXR1cm5zIHN1bSBvZiByb3dzXG4gICAqXG4gICAqL1xuICBzdW0oc2VyaWVzOiBBcnJheTxzdHJpbmc+KTogbnVtYmVyIHtcbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIGZvciAoY29uc3QgZGF0YSBvZiBzZXJpZXMpIHtcbiAgICAgIHRvdGFsICs9IE51bWJlcihkYXRhKTtcbiAgICB9XG4gICAgdGhpcy5yZXBvcnQuaXNEaXJ0eSA9IHRydWU7XG4gICAgcmV0dXJuIHRvdGFsO1xuICB9XG4gIC8qKlxuICAgKiB0byByZXR1cm5zIGF2ZXJhZ2Ugb2Ygcm93c1xuICAgKlxuICAgKi9cbiAgYXZnKHNlcmllczogQXJyYXk8c3RyaW5nPik6IG51bWJlciB7XG4gICAgbGV0IHRvdGFsID0gMDtcbiAgICBmb3IgKGNvbnN0IGRhdGEgb2Ygc2VyaWVzKSB7XG4gICAgICB0b3RhbCArPSBOdW1iZXIoZGF0YSk7XG4gICAgfVxuICAgIHRoaXMucmVwb3J0LmlzRGlydHkgPSB0cnVlO1xuICAgIHJldHVybiB0b3RhbCAvIHNlcmllcy5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogdG8gcmV0dXJucyBtYXhpbXVtIHZhbHVlIG9mIHJvd3NcbiAgICpcbiAgICovXG4gIG1heChzZXJpZXM6IEFycmF5PHN0cmluZz4pOiBudW1iZXIge1xuICAgIGNvbnN0IGEgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGRhdGEgb2Ygc2VyaWVzKSB7XG4gICAgICBhLnB1c2goTnVtYmVyKGRhdGEpKTtcbiAgICB9XG4gICAgdGhpcy5yZXBvcnQuaXNEaXJ0eSA9IHRydWU7XG4gICAgcmV0dXJuIE1hdGgubWF4KC4uLmEpO1xuICB9XG5cbiAgLyoqXG4gICAqIHRvIHJldHVybnMgbWluaW11bSB2YWx1ZSBvZiByb3dzXG4gICAqXG4gICAqL1xuICBtaW4oc2VyaWVzOiBBcnJheTxzdHJpbmc+KTogbnVtYmVyIHtcbiAgICBjb25zdCBhID0gW107XG4gICAgZm9yIChjb25zdCBkYXRhIG9mIHNlcmllcykge1xuICAgICAgYS5wdXNoKE51bWJlcihkYXRhKSk7XG4gICAgfVxuICAgIHRoaXMucmVwb3J0LmlzRGlydHkgPSB0cnVlO1xuICAgIHJldHVybiBNYXRoLm1pbiguLi5hKTtcbiAgfVxuXG4gIC8qKipcbiAgICogT24gY2hhcnQgY29udGV4dCAgY2xpY2sgZm9yIHN1bSBhZ2dyZWdhdGlvblxuICAgKi9cbiAgc3VtQWdncmVnYXRpb24ob2I6IE1hdENoZWNrYm94Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5zaG93U3VtID0gb2IuY2hlY2tlZDtcbiAgfVxuICAvKioqXG4gICAqIE9uIGNoYXJ0IGNvbnRleHQgIGNsaWNrIGZvciBhdmcgYWdncmVnYXRpb25cbiAgICovXG4gIGF2ZXJhZ2VBZ2dyZWdhdGlvbihvYjogTWF0Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dBdmcgPSBvYi5jaGVja2VkO1xuICB9XG4gIC8qKipcbiAgICogT24gY2hhcnQgY29udGV4dCAgY2xpY2sgZm9yIG1heCBhZ2dyZWdhdGlvblxuICAgKi9cbiAgbWF4QWdncmVnYXRpb24ob2I6IE1hdENoZWNrYm94Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5zaG93TWF4ID0gb2IuY2hlY2tlZDtcbiAgfVxuICAvKioqXG4gICAqIE9uIGNoYXJ0IGNvbnRleHQgIGNsaWNrIGZvciBtaW4gYWdncmVnYXRpb25cbiAgICovXG4gIG1pbkFnZ3JlZ2F0aW9uKG9iOiBNYXRDaGVja2JveENoYW5nZSk6IHZvaWQge1xuICAgIHRoaXMuc2hvd01pbiA9IG9iLmNoZWNrZWQ7XG4gIH1cblxuXG4gIC8qKlxuICAgKiB0byBzZXQgaXNEaXJ0eSBhZnRlciBjaGFuZ2VzIGluIHRhYnVsYXIgcmVwb3J0IGZpbHRlclxuICAgKlxuICAgKi9cbiAgZGlydHlGbG93Q2hlY2tFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlcG9ydC5pc0RpcnR5ID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKnVzZWQgdG8gY3JlYXRlIGEgcm93IGZvciBzdWJ0b3RhbFxuICpcbiAqQHBhcmFtIG51bWJlclxuICpAcGFyYW0gbnVtYmVyXG4gKi9cbiAgaW5kZXhpbmcoY291bnRfOiBudW1iZXIsIGk6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY3QgPSBjb3VudF87XG4gICAgaWYgKGNvdW50XyA9PT0gMSkge1xuICAgICAgdGhpcy5jb3VudCA9IDE7XG4gICAgICB0aGlzLmF0dHJHbG9iYWwgPSBpO1xuICAgIH1cbiAgICBpZiAoY291bnRfID4gMSkge1xuICAgICAgdGhpcy5hdHRyR2xvYmFsID0gKGNvdW50XyArIGkpIC0gMTtcbiAgICB9XG5cbiAgfVxuICAvKipcbiAgICogd2lsbCBlbWl0IHRhYmxlIHByb3BlcnRpZXMgb24gdGFibGUgY2xpY2sgdFxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIHRhYmxlU2VsZWN0KGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLl90YWJ1bGFyUmVwb3J0U2VydmljZS50YWJsZUNsaWNrRXZlbnQodGhpcy50YWJ1bGFyUmVwb3J0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB0byByZWRpcmVjdCBtZWRpYSB1cmxcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqIEBwYXJhbSB1cmxcbiAgICovXG4gIHJlZGlyZWN0KGV2ZW50OiBLZXlib2FyZEV2ZW50LCB1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpIHtcbiAgICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUZyb21EYXNoYm9hcmQoKTogdm9pZCB7XG4gICAgdGhpcy5fZGFzaGJvYXJkQnVpbGRlclNlcnZpY2UuZGVsZXRlRWxlbWVudC5lbWl0KHRoaXMudGFidWxhclJlcG9ydCk7XG4gIH1cblxuICBkcmlsbFRocm91Z2hDb250ZXh0KGV2ZW50OiBNb3VzZUV2ZW50LCBhdHRyaWJ1dGU6IEF0dHJpYnV0ZURhdGEsIGk6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGFyZW50UmVmLmRyaWxsVGhyb3VnaENvbnRleHQoZXZlbnQsIGF0dHJpYnV0ZSwgYXR0cmlidXRlLnNlcmllcy5pbmRleE9mKGF0dHJpYnV0ZS51bmlxdWVTZXJpZXNbaV0pKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbHVtbi1ncm91cGluZy10YWJsZS1jb250YWluZXIgY3VzdG9tc2Nyb2xsXCIgKm5nSWY9J3RhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbMF0uc2VyaWVzLmxlbmd0aCE9PTAgJiYgdGFidWxhclJlcG9ydC5pc0RhdGFMb2FkZWQnPlxuICA8dGFibGVcbiAgICAoY2xpY2spPVwidGFibGVTZWxlY3QoJGV2ZW50KVwiXG4gICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICpuZ0lmPXRhYnVsYXJSZXBvcnQgY2RrRHJvcExpc3RHcm91cCBzdHlsZT1cIndpZHRoOjEwMCVcIiBbbmdDbGFzc109XCJ7J210LTEnOiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzLmxlbmd0aD4wICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbMF0uc2VyaWVzLmxlbmd0aD09PTB9XCI+XG4gICAgPGNhcHRpb24+PC9jYXB0aW9uPlxuICAgIDx0Ym9keSAgW25nQ2xhc3NdPVwieydzaGFkb3cnOnRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuc2hhZG93LmVuYWJsZX1cIlxuICAgICAgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzLmxlbmd0aD4wXCJcbiAgICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IF9hdHRyIG9mIHRhYnVsYXJSZXBvcnQuY29sR3JvdXBpbmc7IGV2ZW4gYXMgaXNFdmVuO2xldCBtID0gaW5kZXhcIj5cbiAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICA8dHIgKm5nSWY9XCJtPT09MFwiPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICpuZ0lmPVwidGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGg9PT0yXCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgID48L3RkPlxuICAgICAgICAgICAgPHRoIFtpZF09dGhcbiAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LnNpemVcIlxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgKGNvbnRleHRtZW51KT1cIm9uQ29udGV4dE1lbnUoJGV2ZW50LGkpXCJcbiAgICAgICAgICAgIFtzdHlsZS50ZXh0LWFsaWduXT0ncmlnaHQnXG5cbiAgICAgICAgICAgID57e19hdHRyLmxhYmVsfX08L3RoPlxuXG4gICAgICAgICAgICA8IS0tIHRvIHNob3cgc2luZ2xlIGNvbHVtbiBncm91cGluZyB1bmlxdWUgc2VyaWVzIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9J2xldCBkYXRhIG9mIF9hdHRyLnVuaXF1ZVNlcmllcztsZXQgaT0gaW5kZXgnPlxuICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY29sR3JvdXBpbmcubGVuZ3RoPT09MVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbFNwYW5dPXRhYnVsYXJSZXBvcnQucm93Q291bnQ/dGFidWxhclJlcG9ydC5jb2xEYXRhLmdldChkYXRhKSsxOnRhYnVsYXJSZXBvcnQuY29sRGF0YS5nZXQoZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY29udGV4dG1lbnUpPVwiZHJpbGxUaHJvdWdoQ29udGV4dCgkZXZlbnQsIF9hdHRyLCBfYXR0ci5zZXJpZXMuaW5kZXhPZihkYXRhKSlcIj5cblxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgIFtuZ1N3aXRjaF09XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIGRhdGV0aW1lIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZXBpY2tlci13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGV0aW1lJyB8fCB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nYm90aCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3ttb21lbnQoZGF0YSsnWicpfGRhdGU6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RpbWVzdGFtcCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YSBcIj57e21vbWVudChkYXRhLCdoaDptbTpzcycpfGRhdGU6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRlJ1wiPnt7ZGF0YXxkYXRlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRlX3JhbmdlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGF9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgdGV4dCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RleHRib3gtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkZWNpbWFsJ3x8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSd0ZXh0JyB8fCB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nc3RyaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGF9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J251bWVyaWMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyBkYXRhIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0uc2VyaWVzOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHdlYiBsaW5rICAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2h5cGVybGluay13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCxkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBzaWduYXR1cmUgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInd2V0c2lnbmF0dXJlY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHZpZGVvIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3ZpZGVvY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGF1ZGlvIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2F1ZGlvY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidmaWxldXBsb2FkLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaW1hZ2VjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGRlZmF1bHQgY2FzZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+e3tkYXRhfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPSchZGF0YSc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J251bWVyaWMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyAgMCB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3swIHwgIGF4b1BlcmNlbnRhZ2U6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS5zZXJpZXM6ICdkZXRhaWwnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57ezB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHdoZW4gc2VyaWVzIGRhdGEgaXMgZW1wdHkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlIT09J251bWVyaWMnXCI+LTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY29sR3JvdXBpbmcubGVuZ3RoPjEgJiYgdGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoPjBcIlxuICAgICAgICAgICAgICAgICAgICBbY29sU3Bhbl09dGFidWxhclJlcG9ydC5yb3dDb3VudD90YWJ1bGFyUmVwb3J0LmNvbERhdGEuZ2V0KGRhdGEpK3RhYnVsYXJSZXBvcnQuc2Vjb25kQ29sRGF0YS5nZXQoZGF0YSkubGVuZ3RoOnRhYnVsYXJSZXBvcnQuY29sRGF0YS5nZXQoZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBbbmdTd2l0Y2hdPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgZGF0ZXRpbWUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZXBpY2tlci13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRldGltZScgfHwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2JvdGgnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiA+e3ttb21lbnQoZGF0YSsnWicpfGRhdGU6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0ndGltZXN0YW1wJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGEgXCI+e3ttb21lbnQoZGF0YSwnaGg6bW06c3MnKXxkYXRlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZSdcIj57e2RhdGF8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRlX3JhbmdlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIHRleHQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndGV4dGJveC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkZWNpbWFsJ3x8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSd0ZXh0JyB8fCB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nc3RyaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J251bWVyaWMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS5zZXJpZXM6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHdlYiBsaW5rICAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidoeXBlcmxpbmstd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LGRhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgc2lnbmF0dXJlIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid3ZXRzaWduYXR1cmVjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgdmlkZW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3ZpZGVvY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGF1ZGlvIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidhdWRpb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGV1cGxvYWQtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaW1hZ2VjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGRlZmF1bHQgY2FzZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0Pnt7ZGF0YX19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj0nIWRhdGEnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nbnVtZXJpYydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyAgMCB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7MCB8ICBheG9QZXJjZW50YWdlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0uc2VyaWVzOiAnZGV0YWlsJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7MH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB3aGVuIHNlcmllcyBkYXRhIGlzIGVtcHR5IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGUhPT0nbnVtZXJpYydcIj4tPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY29sR3JvdXBpbmcubGVuZ3RoPjEgJiYgdGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoPT09MFwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xTcGFuXT1cInRhYnVsYXJSZXBvcnQuc2Vjb25kQ29sRGF0YS5nZXQoZGF0YSkubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIiAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBbbmdTd2l0Y2hdPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgZGF0ZXRpbWUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZXBpY2tlci13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRldGltZScgfHwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2JvdGgnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e21vbWVudChkYXRhKydaJyl8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSd0aW1lc3RhbXAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGEgXCI+e3ttb21lbnQoZGF0YSwnaGg6bW06c3MnKXxkYXRlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZSdcIj57e2RhdGF8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRlX3JhbmdlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIHRleHQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndGV4dGJveC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkZWNpbWFsJ3x8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSd0ZXh0JyB8fCB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nc3RyaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J251bWVyaWMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS5zZXJpZXM6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHdlYiBsaW5rICAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidoeXBlcmxpbmstd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LGRhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgc2lnbmF0dXJlIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid3ZXRzaWduYXR1cmVjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgdmlkZW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3ZpZGVvY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGF1ZGlvIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidhdWRpb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGV1cGxvYWQtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaW1hZ2VjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGRlZmF1bHQgY2FzZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0Pnt7ZGF0YX19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj0nIWRhdGEnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nbnVtZXJpYydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyAgMCB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7MCB8ICBheG9QZXJjZW50YWdlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0uc2VyaWVzOiAnZGV0YWlsJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7MH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB3aGVuIHNlcmllcyBkYXRhIGlzIGVtcHR5IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGUhPT0nbnVtZXJpYydcIj4tPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8IS0tIGdyYW5kIHRvdGFsIGhlYWRlciAtLT5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAqbmdJZj1cInRhYnVsYXJSZXBvcnQuc2hvd0dyYW5kVG90YWxcIlxuICAgICAgICAgICAgW2NvbFNwYW5dPXRhYnVsYXJSZXBvcnQucm93Q291bnQ/dGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoKzE6dGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5zaXplXCJcblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFRvdGFsXG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgIDwvdHI+XG5cblxuICAgICAgICA8dHIgKm5nSWY9XCJtPT09MVwiPlxuICAgICAgICAgIDwhLS0gdG8gc2hvdyBkb3VibGUgY29sdW1uIGdyb3VwaW5nIGhlYWRlciB3aXRoIHNlcmllcyBkYXRhIC0tPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICpuZ0lmPVwidGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGg9PT0yXCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgPjwvdGQ+XG4gICAgICAgICAgPHRoIFtpZF09dGhcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LnNpemVcIlxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUudGV4dC1hbGlnbl09J3JpZ2h0J1xuICAgICAgICAgID57e19hdHRyLmxhYmVsfX08L3RoPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNlcmllcyBvZiB0YWJ1bGFyUmVwb3J0LmNvbEdyb3VwaW5nWzBdLnVuaXF1ZVNlcmllcyBcIj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LnNlY29uZENvbERhdGEuZ2V0KHNlcmllcykgbGV0IHg9aW5kZXhcIj5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICBbY29sU3Bhbl09dGFidWxhclJlcG9ydC5yb3dDb3VudD90YWJ1bGFyUmVwb3J0LmludGVnZXJBcnJheS5sZW5ndGgrMTp0YWJ1bGFyUmVwb3J0LmludGVnZXJBcnJheS5sZW5ndGhcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICAoY29udGV4dG1lbnUpPVwiZHJpbGxUaHJvdWdoQ29udGV4dCgkZXZlbnQsIF9hdHRyLCBpKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiAgW25nU3dpdGNoXT1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0VHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgZGF0ZXRpbWUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlcGlja2VyLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZXRpbWUnIHx8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdib3RoJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e21vbWVudChkYXRhKydaJyl8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RpbWVzdGFtcCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0ndGltZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhIFwiPnt7bW9tZW50KGRhdGEsJ2hoOm1tOnNzJyl8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+e3tkYXRhfGRhdGU6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGVfcmFuZ2UnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSB3aGVuIGRhdGEgdHlwZSBpcyB0ZXh0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndGV4dGJveC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RlY2ltYWwnfHwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RleHQnIHx8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdzdHJpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nbnVtZXJpYydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS5zZXJpZXM6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgd2ViIGxpbmsgIC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaHlwZXJsaW5rLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LGRhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHNpZ25hdHVyZSB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid3ZXRzaWduYXR1cmVjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgdmlkZW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndmlkZW9jYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgYXVkaW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInYXVkaW9jYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGRvY3VtZW50IHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGV1cGxvYWQtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidpbWFnZWNhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gZGVmYXVsdCBjYXNlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57e2RhdGF9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9JyFkYXRhJz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nbnVtZXJpYydcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7ICAwIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57ezAgfCAgYXhvUGVyY2VudGFnZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnNlcmllczogJ2RldGFpbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7MH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBzZXJpZXMgZGF0YSBpcyBlbXB0eSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGUhPT0nbnVtZXJpYydcIj4tPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPHRkICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbFwiXG4gICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgW2NvbFNwYW5dPXRhYnVsYXJSZXBvcnQucm93Q291bnQ/dGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoKzE6dGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiPi08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDx0ciBjZGtEcm9wTGlzdCBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiIGNsYXNzPVwiZXhhbXBsZS1saXN0XCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cbiAgICAgICAgPCEtLSBjb2x1bW4gaGVhZGVycyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0ciBvZiB0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nOyBldmVuIGFzIGlzRXZlbjtsZXQgbSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgICBbaWRdPVwidGhcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJvbkNvbnRleHRNZW51KCRldmVudCxpKVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdhdHRyLmFsaWdubWVudCdcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYnVsYXItcmVwb3J0LXRhYmVsLXRoXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYnVsYXItcmVwb3J0LXRhYmxlLXRleHRcIj57e2F0dHIubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQ29udGV4dE1lbnUoJGV2ZW50LGkpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRhYi1kb3duLWFycm93XCIgc3ZnSWNvbj1cImhlcm9pY29uc19vdXRsaW5lOmNoZXZyb24tZG93blwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgPC90aD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSB0byBzaG93IGludGVnZXIgY29sdW1uIGhlYWRlcnMgIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQuY2xvbmVEYXRhQ291bnQ7IGxldCBtPWluZGV4XCIgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhdHRyIG9mIHRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5O2xldCBpPWluZGV4XCI+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgIFtpZF09dGhcbiAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LnNpemVcIlxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdyaWdodCdcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3Bhbj57e2F0dHJ9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPCEtLSByb3cgY291bnQgaGVhZGVyIC0tPlxuICAgICAgICAgIDx0aCAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93Q291bnRcIlxuICAgICAgICAgIFtpZF09dGhcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LnNpemVcIlxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUudGV4dC1hbGlnbl09J3JpZ2h0J1xuICAgICAgICAgID5cbiAgICAgICAgICAgIENvdW50XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwhLS0gaG9yaXpvbnRhbCBncmFuZCB0b3RhbCBoZWFkZXJzIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhdHRyIG9mIHRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5O2xldCBpPWluZGV4XCI+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgY29sR3JvdXBpbmdcblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+e3thdHRyfX08L3NwYW4+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDx0ZCAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93Q291bnRcIlxuICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiXG5cbiAgICAgICAgPlxuICAgICAgICAgIENvdW50XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdHI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aD4xXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbMF0uc2VyaWVzO2xldCBpID0gaW5kZXg7IGV2ZW4gYXMgaXNFdmVuOyBsZXQgZGF0YTFcIj5cbiAgICAgICAgPHRyXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogaXNFdmVuID8gdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnJvd1N0eWxlLm9kZENvbG9yOiB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUucm93U3R5bGUuZXZlbkNvbG9yfVwiXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoICsgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG5cbiAgICAgICAgICA+XG4gICAgICAgICAgPCEtLSAgc2VyaWVzIGRhdGEgIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IF9hdHRyIG9mIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXM7IGV2ZW4gYXMgaXNFdmVuO2xldCBtID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAqbmdJZj1cIiBfYXR0ci5yb3dTcGFuICYmICFfYXR0ci5jcGxTcGFuICYmIF9hdHRyLmNsb25lU2VyaWVzICYmIF9hdHRyLmNsb25lU2VyaWVzW2ldIT09J3JlcGVhdGVkJyAmJiBtIT09MVwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdfYXR0ci5hbGlnbm1lbnQnXG4gICAgICAgICAgICBbcm93U3Bhbl09J19hdHRyLmNsb25lR3JvdXBEYXRhW2ldJ1xuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAoY29udGV4dG1lbnUpPVwiZHJpbGxUaHJvdWdoQ29udGV4dCgkZXZlbnQsIF9hdHRyLCBpKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICB7e2luZGV4aW5nKF9hdHRyLmdyb3VwRGF0YVtpXSxpKX19XG4gICAgICAgICAgICA8ZGl2ICBbbmdTd2l0Y2hdPVwiX2F0dHIud2lkZ2V0VHlwZVwiPlxuICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIG51bWJlciAtLT5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidpbnQtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiX2F0dHIudmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IF9hdHRyLnNlcmllc1tpXSB8ICBjdXJyZW5jeTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgX2F0dHIudmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e19hdHRyLnNlcmllc1tpXXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFfYXR0ci52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhX2F0dHIudmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgZGF0ZXRpbWUgLS0+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlcGlja2VyLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfYXR0ci53aWRnZXRTdWJUeXBlPT09J2RhdGVfcmFuZ2UnIHx8IF9hdHRyLndpZGdldFN1YlR5cGU9PT0nZGF0ZXRpbWUnIHx8IF9hdHRyLndpZGdldFN1YlR5cGU9PT0nYm90aCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3ttb21lbnQoX2F0dHIuc2VyaWVzW2ldKydaJyl8ZGF0ZTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2F0dHIuc2VyaWVzW2ldICYmICBfYXR0ci53aWRnZXRTdWJUeXBlPT09J3RpbWVzdGFtcCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gPnt7X2F0dHIuc2VyaWVzW2ldfGRhdGU6X2F0dHIudmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0ndGltZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci5zZXJpZXNbaV0gXCI+e3ttb21lbnQoX2F0dHIuc2VyaWVzW2ldLCdoaDptbTpzcycpfGRhdGU6X2F0dHIudmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0nZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci5zZXJpZXNbaV0gJiYgX2F0dHIud2lkZ2V0U3ViVHlwZT09PSdkYXRlJ1wiPnt7X2F0dHIuc2VyaWVzW2ldfGRhdGU6X2F0dHIudmFsdWVGb3JtYXR0aW5nLmRhdGUgfX08L3NwYW4+ICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIHRleHQgLS0+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid0ZXh0Ym94LXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci53aWRnZXRTdWJUeXBlPT09J2RlY2ltYWwnfHwgX2F0dHIud2lkZ2V0U3ViVHlwZT09PSd0ZXh0JyB8fCBfYXR0ci53aWRnZXRTdWJUeXBlPT09J3N0cmluZydcIj5cbiAgICAgICAgICAgICAgICAgICAge3tfYXR0ci5zZXJpZXNbaV19fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiX2F0dHIud2lkZ2V0U3ViVHlwZT09PSdudW1lcmljJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiX2F0dHIudmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IF9hdHRyLnNlcmllc1tpXSB8ICBjdXJyZW5jeTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgX2F0dHIudmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e19hdHRyLnNlcmllc1tpXXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFfYXR0ci52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhX2F0dHIudmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyB3ZWIgbGluayAgLS0+XG4gICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2h5cGVybGluay13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQsX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgc2lnbmF0dXJlIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid3ZXRzaWduYXR1cmVjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgdmlkZW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3ZpZGVvY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXSlcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGF1ZGlvIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidhdWRpb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV1cIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV0pXCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGV1cGxvYWQtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV1cIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV0pXCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaW1hZ2VjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDwhLS0gZGVmYXVsdCBjYXNlIC0tPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8IS0tIHdoZW4gc2VyaWVzIGRhdGEgaXMgZW1wdHkgLS0+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9JyFfYXR0ci5zZXJpZXNbaV0nPi08L3NwYW4+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwhLS0gd2hlbiB0d28gcm93cyBncm91cGVkIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBfYXR0ciBvZiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzOyBldmVuIGFzIGlzRXZlbjtsZXQgbSA9IGluZGV4XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aD4xICYmIG0+MCAmJiBfYXR0ci5yb3dTcGFuICYmIF9hdHRyLmNsb25lU2VyaWVzW2ldIT09J3JlcGVhdGVkJ1wiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LnNpemVcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdfYXR0ci5hbGlnbm1lbnQnXG4gICAgICAgICAgKGNvbnRleHRtZW51KT1cImRyaWxsVGhyb3VnaENvbnRleHQoJGV2ZW50LCBfYXR0ciwgaSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8ZGl2ICBbbmdTd2l0Y2hdPVwiX2F0dHIud2lkZ2V0VHlwZVwiPlxuICAgICAgICAgICAgPCEtLSB3aGVuIGRhdGEgdHlwZSBpcyBudW1iZXIgLS0+XG4gICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ludC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiX2F0dHIudmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IF9hdHRyLnNlcmllc1tpXSB8ICBjdXJyZW5jeTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIF9hdHRyLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tfYXR0ci5zZXJpZXNbaV18ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIV9hdHRyLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICFfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIGRhdGV0aW1lIC0tPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVwaWNrZXItd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfYXR0ci53aWRnZXRTdWJUeXBlPT09J2RhdGV0aW1lJyB8fCBfYXR0ci53aWRnZXRTdWJUeXBlPT09J2JvdGgnXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57e21vbWVudChfYXR0ci5zZXJpZXNbaV0rJ1onKXxkYXRlOl9hdHRyLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9hdHRyLnNlcmllc1tpXSAmJiAgX2F0dHIud2lkZ2V0U3ViVHlwZT09PSd0aW1lc3RhbXAnXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiA+e3tfYXR0ci5zZXJpZXNbaV18ZGF0ZTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfYXR0ci53aWRnZXRTdWJUeXBlPT09J3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIl9hdHRyLnNlcmllc1tpXSBcIj57e21vbWVudChfYXR0ci5zZXJpZXNbaV0sJ2hoOm1tOnNzJyl8ZGF0ZTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfYXR0ci53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIl9hdHRyLnNlcmllc1tpXSAmJiBfYXR0ci53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+e3ttb21lbnQoX2F0dHIuc2VyaWVzW2ldLCdZWVlZLU1NLWRkJyl8ZGF0ZTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuZGF0ZSB9fTwvc3Bhbj4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPCEtLSB3aGVuIGRhdGEgdHlwZSBpcyB0ZXh0IC0tPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RleHRib3gtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci53aWRnZXRTdWJUeXBlPT09J2RlY2ltYWwnfHwgX2F0dHIud2lkZ2V0U3ViVHlwZT09PSd0ZXh0JyB8fCBfYXR0ci53aWRnZXRTdWJUeXBlPT09J3N0cmluZycgfHwgX2F0dHIud2lkZ2V0U3ViVHlwZT09PSdkYXRlX3JhbmdlJ1wiPlxuICAgICAgICAgICAgICAgICAge3tfYXR0ci5zZXJpZXNbaV19fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci53aWRnZXRTdWJUeXBlPT09J251bWVyaWMnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiX2F0dHIudmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IF9hdHRyLnNlcmllc1tpXSB8ICBjdXJyZW5jeTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIF9hdHRyLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tfYXR0ci5zZXJpZXNbaV18ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIV9hdHRyLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICFfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHdlYiBsaW5rICAtLT5cbiAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2h5cGVybGluay13aWRnZXQnXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV1cIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LF9hdHRyLnNlcmllc1tpXSlcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgc2lnbmF0dXJlIHdpZGdldCAtLT5cbiAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInd2V0c2lnbmF0dXJlY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV1cIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV0pXCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHZpZGVvIHdpZGdldCAtLT5cbiAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndmlkZW9jYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXSlcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgYXVkaW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidhdWRpb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidmaWxldXBsb2FkLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXSlcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidpbWFnZWNhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPCEtLSBkZWZhdWx0IGNhc2UgLS0+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPCEtLSB3aGVuIHNlcmllcyBkYXRhIGlzIGVtcHR5IC0tPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj0nIV9hdHRyLnNlcmllc1tpXSc+LTwvc3Bhbj5cblxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9J19hdHRyLnNlcmllc1tpXSc+ICh7e19hdHRyLmNsb25lR3JvdXBEYXRhW2ldfX0pPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIHdoZW4gcm93Q291bnQgaXMgb2ZmIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LnJvd0NvdW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgbWFwLmdldChpKTsgbGV0IG09aW5kZXhcIj5cbiAgICAgICAgPHRkXG4gICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuc2l6ZVwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuY29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICA+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuXG4gICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgICAgIDwhLS0gdG8gc2hvdyBzaWRlIGdyYW5kIHRvdGFsIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbCAgJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1sxXS5jbG9uZVNlcmllc1tpXSE9PSdyZXBlYXRlZCdcIiA+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5zaWRlVG90YWwuZ2V0KGkpOyBsZXQgbT1pbmRleFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5jb2xvclwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cblxuICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPCEtLSB0byBzaG93IGRhdGEgd2l0aCByb3cgY291bnQgLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj0ndGFidWxhclJlcG9ydC5yb3dDb3VudCc+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5kYXRhUmVuZGVyLmdldChpKSA7bGV0IG09aW5kZXhcIlxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuc2l6ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyBkYXRhIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV0gJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV0gJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXVwiPnt7ZGF0YX19PC9zcGFuPlxuXG5cbiAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoPT09MCBcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5jb3VudHNEYXRhLmdldChpKVwiPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID4ge3tkYXRhfX08L3RkPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbFwiID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaWRlVG90YWwuZ2V0KGkpICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbMV0uY2xvbmVTZXJpZXNbaV0hPT0ncmVwZWF0ZWQnXCI+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5zaWRlVG90YWwuZ2V0KGkpIGxldCBtPWluZGV4XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAqbmdJZj1cInRhYnVsYXJSZXBvcnQudG90YWxSb3dDb3VudC5nZXQoaSkgJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1sxXS5jbG9uZVNlcmllc1tpXSE9PSdyZXBlYXRlZCdcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgID57e3RhYnVsYXJSZXBvcnQudG90YWxSb3dDb3VudC5nZXQoaSl9fTwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdHI+XG4gICAgICA8IS0tIHN1YnRvdGFsIC0tPlxuICAgICAgICA8dHIgKm5nSWY9J3RhYnVsYXJSZXBvcnQuc3ViVG90YWwgICYmIChhdHRyR2xvYmFsPT09aSkgJz5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBfYXR0ciBvZiB0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nOyBldmVuIGFzIGlzRXZlbjtsZXQgbSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgKm5nSWY9XCJtPT09MFwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS50ZXh0LWFsaWduXT0nX2F0dHIuYWxpZ25tZW50J1xuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3Bhbj5TdWJ0b3RhbDwvc3Bhbj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgKm5nSWY9XCJtPT09MVwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICA+LTwvdGQ+XG4gICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5jb2xTdWJUb3RhbC5nZXQoaSkgbGV0IG09aW5kZXhcIj5cbiAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LnJvd0NvdW50XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnJvd0NvdW50XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoPT09MFwiPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LmNvdW50c1N1YlRvdGFsLmdldChpKVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbFwiPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQuc2lkZVN1YlRvdGFsLmdldChpKSBsZXQgbT1pbmRleFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93Q291bnRcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e3RhYnVsYXJSZXBvcnQuY291bnRTVG90YWwuZ2V0KGkpfX1cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90cj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgIDwhLS0gd2hlbiBzaW5nbGUgcm93IGdyb3VwaW5nIGlzIGFwcGxpZWQgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoPT09MVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzWzBdLnVuaXF1ZVNlcmllcztsZXQgaSA9IGluZGV4OyBldmVuIGFzIGlzRXZlbjsgbGV0IGRhdGExXCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAoY29udGV4dG1lbnUpPVwiZHJpbGxUaHJvdWdoQ29udGV4dCgkZXZlbnQsIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbMF0sIGkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPSchZGF0YSc+LTwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFidWxhclJlcG9ydC5yb3dDb3VudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiBtYXAuZ2V0KGkpIGxldCBtPWluZGV4XCI+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQuc2hvd0dyYW5kVG90YWxcIiA+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5zaWRlVG90YWwuZ2V0KGkpOyBsZXQgbT1pbmRleFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyBkYXRhIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cblxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93Q291bnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5kYXRhUmVuZGVyLmdldChpKSBsZXQgbT1pbmRleFwiPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV0gJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXCI+e3tkYXRhfX08L3NwYW4+XG5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmludGVnZXJBcnJheS5sZW5ndGg9PT0wXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5jb3VudHNEYXRhLmdldChpKVwiPlxuICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LnNpemVcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgICA+IHt7ZGF0YX19PC90ZD5cblxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsXCIgPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9J3B4LTEuNVx0cHktMS41J1xuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LnNpZGVUb3RhbC5nZXQoaSkgbGV0IG09aW5kZXhcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e3RhYnVsYXJSZXBvcnQudG90YWxSb3dDb3VudC5nZXQoaSl9fVxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPCEtLSB3aGVuIHN1YnRvdGFsIHRvZ2dsZSBpcyBvbiAtLT5cbiAgICAgICAgPHRyICpuZ0lmPVwidGFidWxhclJlcG9ydC5zdWJUb3RhbFwiPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIiAgICAgICAgICA+U3ViVG90YWw8L3RkPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LnJvd0NvdW50XCI+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIG1hcC5nZXQoaSkgbGV0IG09aW5kZXhcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICA+XG5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+PC90ZD5cblxuICAgICAgICAgICAgPCEtLSB0byBzaG93IHNpZGUgZ3JhbmQgdG90YWwgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbFwiID5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LnNpZGVUb3RhbC5nZXQoaSkgbGV0IG09aW5kZXhcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPCEtLSB0byBzaG93IHJvdyBjb3VudCAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnJvd0NvdW50XCI+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQuZGF0YVJlbmRlci5nZXQoaSkgbGV0IG09aW5kZXhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LnNpemVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXCI+e3tkYXRhfX08L3NwYW4+PC90ZD5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aD09PTBcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQuY291bnRzRGF0YS5nZXQoaSlcIj5cbiAgICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICAgICAgPiB7e2RhdGF9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsXCI+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5zaWRlVG90YWwuZ2V0KGkpIGxldCBtPWluZGV4XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuXG4gICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e3RhYnVsYXJSZXBvcnQudG90YWxSb3dDb3VudC5nZXQoaSl9fVxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3Rib2R5PlxuICAgIDwhLS0gIFRhYmxlIGZvb3RlciBmb3IgZ3JhbmQgdG90YWwgLS0+XG4gICAgPHRmb290ICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlcy5sZW5ndGg+MFwiXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5zaXplXCJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgPlxuICAgICAgPHRyICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbFwiPlxuICAgICAgICA8dGRcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCI+XG4gICAgICAgICAgR3JhbmQgVG90YWw8L3RkPlxuICAgICAgICA8dGRcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAqbmdJZj0ndGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGg+MSdcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgPlxuICAgICAgICAgIC1cbiAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFidWxhclJlcG9ydC5yb3dDb3VudFwiPlxuICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IHRvdGFsIG9mIHRhYnVsYXJSZXBvcnQuZ3JhbmRUb3RhbDtsZXQgbT1pbmRleFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5nVG90YWxJbnRlZ2VySW5kZXhpbmdbbV0gJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmdUb3RhbEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IHRvdGFsIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5nVG90YWxJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0LmdUb3RhbEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuZ1RvdGFsSW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7dG90YWx8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmdUb3RhbEludGVnZXJJbmRleGluZ1ttXSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmdUb3RhbEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5nVG90YWxJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7dG90YWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LmdUb3RhbEludGVnZXJJbmRleGluZ1ttXVwiPnt7dG90YWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8IS0tIHdoZW4gcm93IGNvdW50IHRvZ2dsZSBpcyBvbiAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5yb3dDb3VudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aD4wXCI+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0b3RhbCBvZiB0YWJ1bGFyUmVwb3J0LmdyYW5kVG90YWwyO2xldCBtPWluZGV4XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY291bnRUb3RhbEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRUb3RhbEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IHRvdGFsIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudFRvdGFsSW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQuY291bnRUb3RhbEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRUb3RhbEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e3RvdGFsfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY291bnRUb3RhbEludGVnZXJJbmRleGluZ1ttXSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50VG90YWxJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRUb3RhbEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3t0b3RhbH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LmNvdW50VG90YWxJbnRlZ2VySW5kZXhpbmdbbV1cIj57e3RvdGFsfX08L3NwYW4+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aD09PTBcIj5cblxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0b3RhbCBvZiB0YWJ1bGFyUmVwb3J0LmNvdW50c1RvdGFsO2xldCBpPWluZGV4XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7dG90YWx9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RyPlxuICAgIDwvdGZvb3Q+XG4gIDwvdGFibGU+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBmbGV4LWNvbCB6ZXJvLXJlY29yZHNcIiAqbmdJZj1cIih0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzLmxlbmd0aD4wICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbMF0uc2VyaWVzLmxlbmd0aD09PTApXCI+XG4gICAgTm8gcmVjb3JkcyBhdmFpbGFibGVcbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlbjsgcG9zaXRpb246IGZpeGVkXCIgW3N0eWxlLmxlZnRdPVwiY29udGV4dE1lbnVQb3NpdGlvbi54XCJcbiAgW3N0eWxlLnRvcF09XCJjb250ZXh0TWVudVBvc2l0aW9uLnlcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiY29udGV4dE1lbnVcIj5cbjwvZGl2PlxuXG48IS0tIE1hdCBNZW51IHRyaWdnZXIgZm9yIHRhYmxlIGNvbHVtbnMtLT5cbjxtYXQtbWVudSAjY29udGV4dE1lbnU9XCJtYXRNZW51XCI+XG4gIDxkaXYgaWQ9XCJ0YWJsZS1tZW51XCI+XG4gICAgPG5nLXRlbXBsYXRlIG1hdE1lbnVDb250ZW50IGxldC1pdGVtPVwicmVwb3J0RGF0YVwiPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXMubGVuZ3RoPjAgXCJtYXQtbWVudS1pdGVtIFttYXRNZW51VHJpZ2dlckZvcl09XCJBZ2dyZWdhdGVcIj5BZ2dyZWdhdGU8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwibW92ZUNvbHVtbkxlZnQoJGV2ZW50KVwiPk1vdmUgTGVmdDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJtb3ZlQ29sdW1uUmlnaHQoJGV2ZW50KVwiPk1vdmUgUmlnaHQ8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJzY3JlZW5UeXBlcy5kYXNoYm9hcmRCdWlsZGVyID09PSBzY3JlZW5UeXBlXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwicmVtb3ZlRnJvbURhc2hib2FyZCgpXCI+UmVtb3ZlIEZyb20gRGFzaGJvYXJkPC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L21hdC1tZW51PlxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XG5cblxuXG48IS0tIE1hdCBtZW51IHRyaWdnZXIgZm9yICBBZ2dyZWdhdGlvbi0tPlxuPG1hdC1tZW51ICNBZ2dyZWdhdGU9XCJtYXRNZW51XCI+XG4gIDxuZy10ZW1wbGF0ZSBtYXRNZW51Q29udGVudCAqbmdJZj0ndGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlcy5sZW5ndGg+MCc+XG4gICAgPHNlY3Rpb24+XG4gICAgICA8cD5cbiAgICAgICAgPG1hdC1jaGVja2JveCAgY2xhc3M9XCJhZ2dyZWdhdGUtZnVuXCIgWyhuZ01vZGVsKV09J3RhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbY3VycmVudEluZGV4XS5hZ2dyZWdhdGUuc2hvd1N1bSdcbiAgICAgICAgICAoY2hhbmdlKT1cInN1bUFnZ3JlZ2F0aW9uKCRldmVudClcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+c3VtPC9tYXQtY2hlY2tib3g+XG4gICAgICA8L3A+XG4gICAgICA8cD5cbiAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImFnZ3JlZ2F0ZS1mdW5cIiBbKG5nTW9kZWwpXT0ndGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1tjdXJyZW50SW5kZXhdLmFnZ3JlZ2F0ZS5zaG93QXZnJ19hdHRyLndpZGdldFN1YlR5cGU9PT0nZGF0ZV9yYW5nZScgfHxcbiAgICAgICAgICAoY2hhbmdlKT1cImF2ZXJhZ2VBZ2dyZWdhdGlvbigkZXZlbnQpXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPkF2ZXJhZ2U8L21hdC1jaGVja2JveD5cbiAgICAgIDwvcD5cbiAgICAgIDxwPlxuICAgICAgICA8bWF0LWNoZWNrYm94IGNsYXNzPVwiYWdncmVnYXRlLWZ1blwiWyhuZ01vZGVsKV09J3RhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbY3VycmVudEluZGV4XS5hZ2dyZWdhdGUuc2hvd01heCdcbiAgICAgICAgICAoY2hhbmdlKT1cIm1heEFnZ3JlZ2F0aW9uKCRldmVudClcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+TWF4PC9tYXQtY2hlY2tib3g+XG4gICAgICA8L3A+XG4gICAgICA8cD5cbiAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImFnZ3JlZ2F0ZS1mdW5cIlsobmdNb2RlbCldPSd0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW2N1cnJlbnRJbmRleF0uYWdncmVnYXRlLnNob3dNaW4nXG4gICAgICAgICAgKGNoYW5nZSk9XCJtaW5BZ2dyZWdhdGlvbigkZXZlbnQpXCIoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+TWluPC9tYXQtY2hlY2tib3g+XG4gICAgICA8L3A+XG4gICAgPC9zZWN0aW9uPlxuICA8L25nLXRlbXBsYXRlPlxuPC9tYXQtbWVudT5cblxuPGRpdiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LmlzRGF0YUxvYWRlZCAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzLmxlbmd0aCE9PTBcIiBjbGFzcz1cImxvYWRlci1zcGlubmVyXCI+XG4gIDxhcHAtZ2hvc3QtbG9hZGVyIFtlbGVtZW50VHlwZV09XCJHaG9zdExvYWRlclR5cGUuVGFidWxhckNoYXJ0TG9hZGVyXCIgPjwvYXBwLWdob3N0LWxvYWRlcj5cbjwvZGl2PlxuPCEtLSA8ZGl2ICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQuaXNEYXRhTG9hZGVkICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXMubGVuZ3RoIT09MFwiIGNsYXNzPVwibG9hZGVyLXNwaW5uZXJcIj4gLS0+XG4gIDwhLS0gPG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCI0MFwiPjwvbWF0LXNwaW5uZXI+PC9kaXY+IC0tPlxuIl19
|
|
4478
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWdyb3VwLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F4LWNvbW1vbi11aS1saWIvc3JjL2xpYi9lbmxpZ2h0ZW4tbGliL3JlcG9ydC90YWJ1bGFyLXJlcG9ydC90YWJ1bGFyL2NvbHVtbi1ncm91cC12aWV3L2NvbHVtbi1ncm91cC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9heC1jb21tb24tdWktbGliL3NyYy9saWIvZW5saWdodGVuLWxpYi9yZXBvcnQvdGFidWxhci1yZXBvcnQvdGFidWxhci9jb2x1bW4tZ3JvdXAtdmlldy9jb2x1bW4tZ3JvdXAtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUd0RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JB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O2tCQUZWLFNBQVM7bUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBFbGVtZW50c0R0byB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbW1vbi1kdG8vZWxlbWVudHMtZHRvJztcbmltcG9ydCB7IFJlcG9ydEJ1aWxkZXJNYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcmVwb3J0LWJ1aWxkZXItbWFzdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFidWxhclJlcG9ydCB9IGZyb20gJy4uLy4uL3RhYnVsYXItcmVwb3J0JztcbmltcG9ydCB7IFRhYnVsYXJSZXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGFidWxhci1yZXBvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBGaWVsZHNMaXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2ZpZWxkLWxpc3QtbGliL2ZpZWxkcy1saXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3J0IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tbW9uLXV0aWxzL3JlcG9ydCc7XG5pbXBvcnQgeyBBdHRyaWJ1dGVEYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vZmllbGRzL2F0dHJpYnV0ZS1kYXRhJztcbmltcG9ydCB7IERhc2hib2FyZEJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGFzaGJvYXJkLWxpYi9kYXNoYm9hcmQtYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNjcmVlblR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9lbmxpZ2h0ZW4tbGliL2ZpbHRlcnMvY29uZGl0aW9uLXR5cGUnO1xuaW1wb3J0IHsgVGFidWxhckNvbXBvbmVudCB9IGZyb20gJy4uL3RhYnVsYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEF4RmlsdGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vZmlsdGVycy9heC1maWx0ZXInO1xuaW1wb3J0IHsgR2hvc3RMb2FkZXJUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZ2hvc3QtbG9hZGVyL2dob3N0LWxvYWRlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItY29sdW1uLWdyb3VwLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sdW1uLWdyb3VwLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2x1bW4tZ3JvdXAtdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOlZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQ29sdW1uR3JvdXBWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG5cbiAgQElucHV0KCkgdGFidWxhclJlcG9ydDogVGFidWxhclJlcG9ydDtcbiAgQElucHV0KCkgaXNFZGl0YWJsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgeDFJbWFnZU1lZGlhVXJsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNjcmVlblR5cGU6IFNjcmVlblR5cGU7XG4gIEBJbnB1dCgpIGRyaWxsVGhyb3VnaFBhcmVudFR5cGU6IFNjcmVlblR5cGU7XG4gIEBJbnB1dCgpIGRyaWxsVGhyb3VnaEZpbHRlcklucHV0OiBBeEZpbHRlcjtcbiAgQElucHV0KCkgcGFyZW50UmVmOiBUYWJ1bGFyQ29tcG9uZW50O1xuICBASW5wdXQoKSByZXBvcnRJZDogbnVtYmVyO1xuICBAVmlld0NoaWxkKE1hdE1lbnVUcmlnZ2VyKVxuXG4gIGNvbnRleHRNZW51OiBNYXRNZW51VHJpZ2dlcjtcbiAgY29sdW1uRGF0YTogYW55O1xuICBjb250ZXh0TWVudVBvc2l0aW9uID0geyB4OiAnMHB4JywgeTogJzBweCcgfTtcbiAgY3VycmVudEluZGV4OiBudW1iZXI7XG4gIF9hdmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgX21heDogYm9vbGVhbiA9IGZhbHNlO1xuICBfbWluOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dTdW06IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd01heDogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93TWluOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dBdmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbW9tZW50OiBhbnkgPSBtb21lbnQ7XG4gIGlzRGlydHk6IGJvb2xlYW47XG4gIHJlcG9ydDogUmVwb3J0O1xuICBhdHRyR2xvYmFsOiBudW1iZXI7XG4gIGNvdW50OiBudW1iZXI7XG4gIGN0OiBudW1iZXI7XG4gIGNvbFNlcmllczogbnVtYmVyO1xuICBhdHRyaWJ1dGVEYXRhQ2xvbmU6IEFycmF5PEF0dHJpYnV0ZURhdGE+ID0gW107XG4gIG1hcDogTWFwPG51bWJlciwgYW55PjtcbiAgaXNEYXRhTG9hZGVkID0gZmFsc2U7XG4gIGZDb2xEYXRhOiBBcnJheTxzdHJpbmc+O1xuICBHaG9zdExvYWRlclR5cGUgPSBHaG9zdExvYWRlclR5cGU7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3JlcG9ydEJ1aWxkZXJNYXN0ZXJTZXJ2aWNlOiBSZXBvcnRCdWlsZGVyTWFzdGVyU2VydmljZSxcbiAgICBwcml2YXRlIF9maWVsZHNMaXN0U2VydmljZTogRmllbGRzTGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfdGFidWxhclJlcG9ydFNlcnZpY2U6IFRhYnVsYXJSZXBvcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2Rhc2hib2FyZEJ1aWxkZXJTZXJ2aWNlOiBEYXNoYm9hcmRCdWlsZGVyU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyB0aGlzLnRhYnVsYXJSZXBvcnQ9dGhpcy5fdGFidWxhclJlcG9ydFNlcnZpY2UuY29sdW1uRGF0YSh0aGlzLnRhYnVsYXJSZXBvcnQpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZXBvcnQgPSB0aGlzLl9yZXBvcnRCdWlsZGVyTWFzdGVyU2VydmljZS5yZXBvcnQ7XG5cbiAgICB0aGlzLnRhYnVsYXJSZXBvcnQgPSB0aGlzLl90YWJ1bGFyUmVwb3J0U2VydmljZS5jb2x1bW5EYXRhKHRoaXMudGFidWxhclJlcG9ydCk7XG5cbiAgICB0aGlzLnRhYnVsYXJSZXBvcnQuaXNEYXRhTG9hZGVkID0gZmFsc2U7XG4gICAgdGhpcy5nZXRNYXRyaXhEaW1lbnNpb24oKTtcblxuICAgIHRoaXMuX3RhYnVsYXJSZXBvcnRTZXJ2aWNlLmRhdGFSZW5kZXIuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgdGhpcy5tYXAgPSB2YWx1ZTtcbiAgICAgIHRoaXMudGFidWxhclJlcG9ydC5maXJzdENvbERhdGEgPSB2YWx1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldE1hdHJpeERpbWVuc2lvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBuZXcgRWxlbWVudHNEdG8odGhpcy50YWJ1bGFyUmVwb3J0KTtcbiAgICAgIGRhdGEucmVwb3J0SWQgPSB0aGlzLnJlcG9ydElkO1xuICAgICAgZGF0YS50eXBlID0gJ3RhYnVsYXItcmVwb3J0JztcbiAgICAgIGRhdGEub3JkZXJCeSA9IHRoaXMudGFidWxhclJlcG9ydC5yb3dHcm91cGluZztcbiAgICAgIGRhdGEucGFnZUluZGV4ID0gMDtcbiAgICAgIGRhdGEucGFnZVNpemUgPSAwO1xuICAgICAgZGF0YS5wYWdlTGVuZ3RoPTA7XG4gICAgICBpZiAodGhpcy5kcmlsbFRocm91Z2hQYXJlbnRUeXBlID09IFNjcmVlblR5cGUuZGFzaGJvYXJkQnVpbGRlciB8fCB0aGlzLmRyaWxsVGhyb3VnaFBhcmVudFR5cGUgPT0gU2NyZWVuVHlwZS5jb250YWluZXJEYXNoYm9hcmQpIHtcbiAgICAgICAgZGF0YS5hcGlUeXBlID0gJ2Rhc2hib2FyZCc7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zY3JlZW5UeXBlID09PSBTY3JlZW5UeXBlLmRyaWxsVGhyb3VnaCkge1xuICAgICAgICBkYXRhLmZpbHRlcnMuZ2xvYmFsRmlsdGVycy5iYXNpYy5wdXNoKHRoaXMuZHJpbGxUaHJvdWdoRmlsdGVySW5wdXQpO1xuICAgICAgfVxuICAgICAgdGhpcy5fZmllbGRzTGlzdFNlcnZpY2UuZ2V0TWF0cml4RGF0YShkYXRhKS50aGVuKChlbnRpdGllc0F0dHJpYnV0ZSkgPT4ge1xuICAgICAgICBpZiAoZW50aXRpZXNBdHRyaWJ1dGUgIT0gbnVsbCkge1xuICAgICAgICAgIGVudGl0aWVzQXR0cmlidXRlLm1hdHJpeC5hdHRyaWJ1dGVzLnNob3dTdW0gPSB0cnVlO1xuICAgICAgICAgIHRoaXMudGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlcyA9IGVudGl0aWVzQXR0cmlidXRlLm1hdHJpeC5hdHRyaWJ1dGVzO1xuICAgICAgICAgIHRoaXMudGFidWxhclJlcG9ydCA9IHRoaXMuX3RhYnVsYXJSZXBvcnRTZXJ2aWNlLmdyb3VwRGF0YSh0aGlzLnRhYnVsYXJSZXBvcnQpO1xuICAgICAgICAgIHRoaXMudGFidWxhclJlcG9ydC5jb2xHcm91cGluZy5mb3JFYWNoKChhdHRyaWJ1dGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFidWxhclJlcG9ydCA9IHRoaXMuX3RhYnVsYXJSZXBvcnRTZXJ2aWNlLm5ld0RhdGEodGhpcy50YWJ1bGFyUmVwb3J0LCBhdHRyaWJ1dGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMudGFidWxhclJlcG9ydCA9IHRoaXMuX3RhYnVsYXJSZXBvcnRTZXJ2aWNlLmRhdGFGYWN0b3J5KHRoaXMudGFidWxhclJlcG9ydCk7XG4gICAgICAgICAgaWYgKHRoaXMudGFidWxhclJlcG9ydC5yb3dDb3VudCAmJiB0aGlzLnRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aCA+IDApIHsgdGhpcy50YWJ1bGFyUmVwb3J0ID0gdGhpcy5fdGFidWxhclJlcG9ydFNlcnZpY2Uucm93Q291bnREYXRhKHRoaXMudGFidWxhclJlcG9ydCk7IH1cbiAgICAgICAgICB0aGlzLnRhYnVsYXJSZXBvcnQuaXNEYXRhTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzRGF0YUxvYWRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMudGFidWxhclJlcG9ydC5pc0RhdGFMb2FkZWQgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuaXNEYXRhTG9hZGVkID0gdHJ1ZTtcbiAgICB0aGlzLnRhYnVsYXJSZXBvcnQuaXNEYXRhTG9hZGVkID0gdHJ1ZTtcbiAgfVxuXG5cbiAgLy8gY29udGV4dCBtZW51IGZvciB0YWJsZSBjb2x1bW5zXG4gIG9uQ29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIsIGF0dHI6IEF0dHJpYnV0ZURhdGEpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNFZGl0YWJsZSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmN1cnJlbnRJbmRleCA9IGluZGV4O1xuICAgIHRoaXMuY29udGV4dE1lbnVQb3NpdGlvbi54ID0gZXZlbnQuY2xpZW50WCArICdweCc7XG4gICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnkgPSBldmVudC5jbGllbnRZICsgJ3B4JztcbiAgICB0aGlzLmNvbnRleHRNZW51Lm1lbnVEYXRhID0geyAnYXR0cic6IGF0dHIgfTtcbiAgICB0aGlzLmNvbnRleHRNZW51Lm1lbnUuZm9jdXNGaXJzdEl0ZW0oJ21vdXNlJyk7XG4gICAgdGhpcy5jb250ZXh0TWVudS5vcGVuTWVudSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHRvIHJldHVybnMgc3VtIG9mIHJvd3NcbiAgICpcbiAgICovXG4gIHN1bShzZXJpZXM6IEFycmF5PHN0cmluZz4pOiBudW1iZXIge1xuICAgIGxldCB0b3RhbCA9IDA7XG4gICAgZm9yIChjb25zdCBkYXRhIG9mIHNlcmllcykge1xuICAgICAgdG90YWwgKz0gTnVtYmVyKGRhdGEpO1xuICAgIH1cbiAgICB0aGlzLnJlcG9ydC5pc0RpcnR5ID0gdHJ1ZTtcbiAgICByZXR1cm4gdG90YWw7XG4gIH1cbiAgLyoqXG4gICAqIHRvIHJldHVybnMgYXZlcmFnZSBvZiByb3dzXG4gICAqXG4gICAqL1xuICBhdmcoc2VyaWVzOiBBcnJheTxzdHJpbmc+KTogbnVtYmVyIHtcbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIGZvciAoY29uc3QgZGF0YSBvZiBzZXJpZXMpIHtcbiAgICAgIHRvdGFsICs9IE51bWJlcihkYXRhKTtcbiAgICB9XG4gICAgdGhpcy5yZXBvcnQuaXNEaXJ0eSA9IHRydWU7XG4gICAgcmV0dXJuIHRvdGFsIC8gc2VyaWVzLmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiB0byByZXR1cm5zIG1heGltdW0gdmFsdWUgb2Ygcm93c1xuICAgKlxuICAgKi9cbiAgbWF4KHNlcmllczogQXJyYXk8c3RyaW5nPik6IG51bWJlciB7XG4gICAgY29uc3QgYSA9IFtdO1xuICAgIGZvciAoY29uc3QgZGF0YSBvZiBzZXJpZXMpIHtcbiAgICAgIGEucHVzaChOdW1iZXIoZGF0YSkpO1xuICAgIH1cbiAgICB0aGlzLnJlcG9ydC5pc0RpcnR5ID0gdHJ1ZTtcbiAgICByZXR1cm4gTWF0aC5tYXgoLi4uYSk7XG4gIH1cblxuICAvKipcbiAgICogdG8gcmV0dXJucyBtaW5pbXVtIHZhbHVlIG9mIHJvd3NcbiAgICpcbiAgICovXG4gIG1pbihzZXJpZXM6IEFycmF5PHN0cmluZz4pOiBudW1iZXIge1xuICAgIGNvbnN0IGEgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGRhdGEgb2Ygc2VyaWVzKSB7XG4gICAgICBhLnB1c2goTnVtYmVyKGRhdGEpKTtcbiAgICB9XG4gICAgdGhpcy5yZXBvcnQuaXNEaXJ0eSA9IHRydWU7XG4gICAgcmV0dXJuIE1hdGgubWluKC4uLmEpO1xuICB9XG5cbiAgLyoqKlxuICAgKiBPbiBjaGFydCBjb250ZXh0ICBjbGljayBmb3Igc3VtIGFnZ3JlZ2F0aW9uXG4gICAqL1xuICBzdW1BZ2dyZWdhdGlvbihvYjogTWF0Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dTdW0gPSBvYi5jaGVja2VkO1xuICB9XG4gIC8qKipcbiAgICogT24gY2hhcnQgY29udGV4dCAgY2xpY2sgZm9yIGF2ZyBhZ2dyZWdhdGlvblxuICAgKi9cbiAgYXZlcmFnZUFnZ3JlZ2F0aW9uKG9iOiBNYXRDaGVja2JveENoYW5nZSk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0F2ZyA9IG9iLmNoZWNrZWQ7XG4gIH1cbiAgLyoqKlxuICAgKiBPbiBjaGFydCBjb250ZXh0ICBjbGljayBmb3IgbWF4IGFnZ3JlZ2F0aW9uXG4gICAqL1xuICBtYXhBZ2dyZWdhdGlvbihvYjogTWF0Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dNYXggPSBvYi5jaGVja2VkO1xuICB9XG4gIC8qKipcbiAgICogT24gY2hhcnQgY29udGV4dCAgY2xpY2sgZm9yIG1pbiBhZ2dyZWdhdGlvblxuICAgKi9cbiAgbWluQWdncmVnYXRpb24ob2I6IE1hdENoZWNrYm94Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5zaG93TWluID0gb2IuY2hlY2tlZDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIHRvIHNldCBpc0RpcnR5IGFmdGVyIGNoYW5nZXMgaW4gdGFidWxhciByZXBvcnQgZmlsdGVyXG4gICAqXG4gICAqL1xuICBkaXJ0eUZsb3dDaGVja0V2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMucmVwb3J0LmlzRGlydHkgPSB0cnVlO1xuICB9XG5cbiAgLyoqdXNlZCB0byBjcmVhdGUgYSByb3cgZm9yIHN1YnRvdGFsXG4gKlxuICpAcGFyYW0gbnVtYmVyXG4gKkBwYXJhbSBudW1iZXJcbiAqL1xuICBpbmRleGluZyhjb3VudF86IG51bWJlciwgaTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5jdCA9IGNvdW50XztcbiAgICBpZiAoY291bnRfID09PSAxKSB7XG4gICAgICB0aGlzLmNvdW50ID0gMTtcbiAgICAgIHRoaXMuYXR0ckdsb2JhbCA9IGk7XG4gICAgfVxuICAgIGlmIChjb3VudF8gPiAxKSB7XG4gICAgICB0aGlzLmF0dHJHbG9iYWwgPSAoY291bnRfICsgaSkgLSAxO1xuICAgIH1cblxuICB9XG4gIC8qKlxuICAgKiB3aWxsIGVtaXQgdGFibGUgcHJvcGVydGllcyBvbiB0YWJsZSBjbGljayB0XG4gICAqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgdGFibGVTZWxlY3QoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuX3RhYnVsYXJSZXBvcnRTZXJ2aWNlLnRhYmxlQ2xpY2tFdmVudCh0aGlzLnRhYnVsYXJSZXBvcnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIHRvIHJlZGlyZWN0IG1lZGlhIHVybFxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICogQHBhcmFtIHVybFxuICAgKi9cbiAgcmVkaXJlY3QoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkge1xuICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlRnJvbURhc2hib2FyZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9kYXNoYm9hcmRCdWlsZGVyU2VydmljZS5kZWxldGVFbGVtZW50LmVtaXQodGhpcy50YWJ1bGFyUmVwb3J0KTtcbiAgfVxuXG4gIGRyaWxsVGhyb3VnaENvbnRleHQoZXZlbnQ6IE1vdXNlRXZlbnQsIGF0dHJpYnV0ZTogQXR0cmlidXRlRGF0YSwgaTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wYXJlbnRSZWYuZHJpbGxUaHJvdWdoQ29udGV4dChldmVudCwgYXR0cmlidXRlLCBhdHRyaWJ1dGUuc2VyaWVzLmluZGV4T2YoYXR0cmlidXRlLnVuaXF1ZVNlcmllc1tpXSkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29sdW1uLWdyb3VwaW5nLXRhYmxlLWNvbnRhaW5lciBjdXN0b21zY3JvbGxcIiAqbmdJZj0ndGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1swXS5zZXJpZXMubGVuZ3RoIT09MCAmJiB0YWJ1bGFyUmVwb3J0LmlzRGF0YUxvYWRlZCc+XG4gIDx0YWJsZVxuICAgIChjbGljayk9XCJ0YWJsZVNlbGVjdCgkZXZlbnQpXCJcbiAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgKm5nSWY9dGFidWxhclJlcG9ydCBjZGtEcm9wTGlzdEdyb3VwIHN0eWxlPVwid2lkdGg6MTAwJVwiIFtuZ0NsYXNzXT1cInsnbXQtMSc6IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXMubGVuZ3RoPjAgJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1swXS5zZXJpZXMubGVuZ3RoPT09MH1cIj5cbiAgICA8Y2FwdGlvbj48L2NhcHRpb24+XG4gICAgPHRib2R5ICBbbmdDbGFzc109XCJ7J3NoYWRvdyc6dGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5zaGFkb3cuZW5hYmxlfVwiXG4gICAgICAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXMubGVuZ3RoPjBcIlxuICAgICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgX2F0dHIgb2YgdGFidWxhclJlcG9ydC5jb2xHcm91cGluZzsgZXZlbiBhcyBpc0V2ZW47bGV0IG0gPSBpbmRleFwiPlxuICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgIDx0ciAqbmdJZj1cIm09PT0wXCI+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aD09PTJcIlxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgPjwvdGQ+XG4gICAgICAgICAgICA8dGggW2lkXT10aFxuICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAoY29udGV4dG1lbnUpPVwib25Db250ZXh0TWVudSgkZXZlbnQsaSlcIlxuICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdfYXR0ci5hbGlnbm1lbnQnXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJ1bGFyLXJlcG9ydC10YWJlbC10aFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFidWxhci1yZXBvcnQtdGFibGUtdGV4dFwiPnt7X2F0dHIubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbkNvbnRleHRNZW51KCRldmVudCxpKVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGFiLWRvd24tYXJyb3dcIiBzdmdJY29uPVwiaGVyb2ljb25zX291dGxpbmU6Y2hldnJvbi1kb3duXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90aD5cblxuICAgICAgICAgICAgPCEtLSB0byBzaG93IHNpbmdsZSBjb2x1bW4gZ3JvdXBpbmcgdW5pcXVlIHNlcmllcyAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPSdsZXQgZGF0YSBvZiBfYXR0ci51bmlxdWVTZXJpZXM7bGV0IGk9IGluZGV4Jz5cbiAgICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvbEdyb3VwaW5nLmxlbmd0aD09PTFcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjb2xTcGFuXT10YWJ1bGFyUmVwb3J0LnJvd0NvdW50P3RhYnVsYXJSZXBvcnQuY29sRGF0YS5nZXQoZGF0YSkrMTp0YWJ1bGFyUmVwb3J0LmNvbERhdGEuZ2V0KGRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNvbnRleHRtZW51KT1cImRyaWxsVGhyb3VnaENvbnRleHQoJGV2ZW50LCBfYXR0ciwgX2F0dHIuc2VyaWVzLmluZGV4T2YoZGF0YSkpXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBbbmdTd2l0Y2hdPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB3aGVuIGRhdGEgdHlwZSBpcyBkYXRldGltZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVwaWNrZXItd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRldGltZScgfHwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2JvdGgnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7bW9tZW50KGRhdGErJ1onKXxkYXRlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSd0aW1lc3RhbXAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuID57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSd0aW1lJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGEgXCI+e3ttb21lbnQoZGF0YSwnaGg6bW06c3MnKXxkYXRlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZSdcIj57e2RhdGF8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZV9yYW5nZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIHRleHQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid0ZXh0Ym94LXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGVjaW1hbCd8fCB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0ndGV4dCcgfHwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3N0cmluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdudW1lcmljJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnNlcmllczogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyB3ZWIgbGluayAgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidoeXBlcmxpbmstd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQsZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgc2lnbmF0dXJlIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3dldHNpZ25hdHVyZWNhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyB2aWRlbyB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid2aWRlb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBhdWRpbyB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidhdWRpb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZmlsZXVwbG9hZC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGRvY3VtZW50IHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ltYWdlY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBkZWZhdWx0IGNhc2UgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0Pnt7ZGF0YX19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj0nIWRhdGEnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdudW1lcmljJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgIDAgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7MCB8ICBheG9QZXJjZW50YWdlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0uc2VyaWVzOiAnZGV0YWlsJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3swfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB3aGVuIHNlcmllcyBkYXRhIGlzIGVtcHR5IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZSE9PSdudW1lcmljJ1wiPi08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvbEdyb3VwaW5nLmxlbmd0aD4xICYmIHRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aD4wXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbFNwYW5dPXRhYnVsYXJSZXBvcnQucm93Q291bnQ/dGFidWxhclJlcG9ydC5jb2xEYXRhLmdldChkYXRhKSt0YWJ1bGFyUmVwb3J0LnNlY29uZENvbERhdGEuZ2V0KGRhdGEpLmxlbmd0aDp0YWJ1bGFyUmVwb3J0LmNvbERhdGEuZ2V0KGRhdGEpXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCIgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAgW25nU3dpdGNoXT1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0VHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIGRhdGV0aW1lIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVwaWNrZXItd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZXRpbWUnIHx8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdib3RoJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPnt7bW9tZW50KGRhdGErJ1onKXxkYXRlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RpbWVzdGFtcCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSd0aW1lJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhIFwiPnt7bW9tZW50KGRhdGEsJ2hoOm1tOnNzJyl8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+e3tkYXRhfGRhdGU6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZV9yYW5nZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB3aGVuIGRhdGEgdHlwZSBpcyB0ZXh0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RleHRib3gtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGVjaW1hbCd8fCB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0ndGV4dCcgfHwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3N0cmluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdudW1lcmljJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0uc2VyaWVzOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyB3ZWIgbGluayAgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaHlwZXJsaW5rLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCxkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHNpZ25hdHVyZSB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInd2V0c2lnbmF0dXJlY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHZpZGVvIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid2aWRlb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBhdWRpbyB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInYXVkaW9jYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGRvY3VtZW50IHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidmaWxldXBsb2FkLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ltYWdlY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBkZWZhdWx0IGNhc2UgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57e2RhdGF9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9JyFkYXRhJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J251bWVyaWMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgIDAgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57ezAgfCAgYXhvUGVyY2VudGFnZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnNlcmllczogJ2RldGFpbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57ezB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBzZXJpZXMgZGF0YSBpcyBlbXB0eSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlIT09J251bWVyaWMnXCI+LTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvbEdyb3VwaW5nLmxlbmd0aD4xICYmIHRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aD09PTBcIlxuICAgICAgICAgICAgICAgICAgICBbY29sU3Bhbl09XCJ0YWJ1bGFyUmVwb3J0LnNlY29uZENvbERhdGEuZ2V0KGRhdGEpLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCIgICAgICAgICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAgW25nU3dpdGNoXT1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0VHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIGRhdGV0aW1lIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVwaWNrZXItd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZXRpbWUnIHx8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdib3RoJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3ttb21lbnQoZGF0YSsnWicpfGRhdGU6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0ndGltZXN0YW1wJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSd0aW1lJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhIFwiPnt7bW9tZW50KGRhdGEsJ2hoOm1tOnNzJyl8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdkYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+e3tkYXRhfGRhdGU6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZV9yYW5nZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB3aGVuIGRhdGEgdHlwZSBpcyB0ZXh0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RleHRib3gtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGVjaW1hbCd8fCB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0ndGV4dCcgfHwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3N0cmluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdudW1lcmljJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0uc2VyaWVzOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyB3ZWIgbGluayAgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaHlwZXJsaW5rLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCxkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHNpZ25hdHVyZSB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInd2V0c2lnbmF0dXJlY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHZpZGVvIHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid2aWRlb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBhdWRpbyB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInYXVkaW9jYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGRvY3VtZW50IHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidmaWxldXBsb2FkLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrZGF0YVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK2RhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgZG9jdW1lbnQgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ltYWdlY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBkZWZhdWx0IGNhc2UgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57e2RhdGF9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9JyFkYXRhJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J251bWVyaWMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgIDAgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57ezAgfCAgYXhvUGVyY2VudGFnZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnNlcmllczogJ2RldGFpbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57ezB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBzZXJpZXMgZGF0YSBpcyBlbXB0eSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlIT09J251bWVyaWMnXCI+LTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPCEtLSBncmFuZCB0b3RhbCBoZWFkZXIgLS0+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsXCJcbiAgICAgICAgICAgIFtjb2xTcGFuXT10YWJ1bGFyUmVwb3J0LnJvd0NvdW50P3RhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aCsxOnRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aFxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiXG5cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBUb3RhbFxuICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICA8L3RyPlxuXG5cbiAgICAgICAgPHRyICpuZ0lmPVwibT09PTFcIj5cbiAgICAgICAgICA8IS0tIHRvIHNob3cgZG91YmxlIGNvbHVtbiBncm91cGluZyBoZWFkZXIgd2l0aCBzZXJpZXMgZGF0YSAtLT5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoPT09MlwiXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgID48L3RkPlxuICAgICAgICAgIDx0aCBbaWRdPXRoXG4gICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuZm9udC5zaXplXCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdfYXR0ci5hbGlnbm1lbnQnXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYnVsYXItcmVwb3J0LXRhYmVsLXRoXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFidWxhci1yZXBvcnQtdGFibGUtdGV4dFwiPnt7X2F0dHIubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25Db250ZXh0TWVudSgkZXZlbnQsaSlcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ0YWItZG93bi1hcnJvd1wiIHN2Z0ljb249XCJoZXJvaWNvbnNfb3V0bGluZTpjaGV2cm9uLWRvd25cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNlcmllcyBvZiB0YWJ1bGFyUmVwb3J0LmNvbEdyb3VwaW5nWzBdLnVuaXF1ZVNlcmllcyBcIj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LnNlY29uZENvbERhdGEuZ2V0KHNlcmllcykgbGV0IHg9aW5kZXhcIj5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICBbY29sU3Bhbl09dGFidWxhclJlcG9ydC5yb3dDb3VudD90YWJ1bGFyUmVwb3J0LmludGVnZXJBcnJheS5sZW5ndGgrMTp0YWJ1bGFyUmVwb3J0LmludGVnZXJBcnJheS5sZW5ndGhcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICAoY29udGV4dG1lbnUpPVwiZHJpbGxUaHJvdWdoQ29udGV4dCgkZXZlbnQsIF9hdHRyLCBpKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiAgW25nU3dpdGNoXT1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0VHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgZGF0ZXRpbWUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlcGlja2VyLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZXRpbWUnIHx8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdib3RoJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e21vbWVudChkYXRhKydaJyl8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RpbWVzdGFtcCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0ndGltZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhIFwiPnt7bW9tZW50KGRhdGEsJ2hoOm1tOnNzJyl8ZGF0ZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+e3tkYXRhfGRhdGU6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RhdGVfcmFuZ2UnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSB3aGVuIGRhdGEgdHlwZSBpcyB0ZXh0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndGV4dGJveC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J2RlY2ltYWwnfHwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS53aWRnZXRTdWJUeXBlPT09J3RleHQnIHx8IHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0ud2lkZ2V0U3ViVHlwZT09PSdzdHJpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nbnVtZXJpYydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS5zZXJpZXM6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aCttXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgd2ViIGxpbmsgIC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaHlwZXJsaW5rLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LGRhdGEpXCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHNpZ25hdHVyZSB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid3ZXRzaWduYXR1cmVjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgdmlkZW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndmlkZW9jYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgYXVkaW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInYXVkaW9jYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtkYXRhXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrZGF0YSlcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGRvY3VtZW50IHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGV1cGxvYWQtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidpbWFnZWNhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK2RhdGFcIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtkYXRhKVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gZGVmYXVsdCBjYXNlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57e2RhdGF9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9JyFkYXRhJz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGU9PT0nbnVtZXJpYydcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7ICAwIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGgrbV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57ezAgfCAgYXhvUGVyY2VudGFnZTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnNlcmllczogJ2RldGFpbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7MH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBzZXJpZXMgZGF0YSBpcyBlbXB0eSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoK21dLndpZGdldFN1YlR5cGUhPT0nbnVtZXJpYydcIj4tPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPHRkICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbFwiXG4gICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgW2NvbFNwYW5dPXRhYnVsYXJSZXBvcnQucm93Q291bnQ/dGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoKzE6dGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiPi08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDx0ciBjZGtEcm9wTGlzdCBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiIGNsYXNzPVwiZXhhbXBsZS1saXN0XCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cbiAgICAgICAgPCEtLSBjb2x1bW4gaGVhZGVycyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0ciBvZiB0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nOyBldmVuIGFzIGlzRXZlbjtsZXQgbSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgICBbaWRdPVwidGhcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJvbkNvbnRleHRNZW51KCRldmVudCxpKVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdhdHRyLmFsaWdubWVudCdcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYnVsYXItcmVwb3J0LXRhYmVsLXRoXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYnVsYXItcmVwb3J0LXRhYmxlLXRleHRcIj57e2F0dHIubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQ29udGV4dE1lbnUoJGV2ZW50LGkpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRhYi1kb3duLWFycm93XCIgc3ZnSWNvbj1cImhlcm9pY29uc19vdXRsaW5lOmNoZXZyb24tZG93blwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgPC90aD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSB0byBzaG93IGludGVnZXIgY29sdW1uIGhlYWRlcnMgIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQuY2xvbmVEYXRhQ291bnQ7IGxldCBtPWluZGV4XCIgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhdHRyIG9mIHRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5O2xldCBpPWluZGV4XCI+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgIFtpZF09dGhcbiAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5oZWFkZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LnNpemVcIlxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdhdHRyLmFsaWdubWVudCdcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFidWxhci1yZXBvcnQtdGFiZWwtdGhcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYnVsYXItcmVwb3J0LXRhYmxlLXRleHRcIj57e2F0dHJ9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbkNvbnRleHRNZW51KCRldmVudCxpKVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGFiLWRvd24tYXJyb3dcIiBzdmdJY29uPVwiaGVyb2ljb25zX291dGxpbmU6Y2hldnJvbi1kb3duXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8IS0tIHJvdyBjb3VudCBoZWFkZXIgLS0+XG4gICAgICAgICAgPHRoICpuZ0lmPVwidGFidWxhclJlcG9ydC5yb3dDb3VudFwiXG4gICAgICAgICAgW2lkXT10aFxuICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuaGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFidWxhci1yZXBvcnQtdGFiZWwtdGhcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFidWxhci1yZXBvcnQtdGFibGUtdGV4dFwiPkNvdW50PC9zcGFuPlxuICAgICAgICAgICAgPCEtLSA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25Db250ZXh0TWVudSgkZXZlbnQsaSlcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGFiLWRvd24tYXJyb3dcIiBzdmdJY29uPVwiaGVyb2ljb25zX291dGxpbmU6Y2hldnJvbi1kb3duXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPCEtLSBob3Jpem9udGFsIGdyYW5kIHRvdGFsIGhlYWRlcnMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGF0dHIgb2YgdGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXk7bGV0IGk9aW5kZXhcIj5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICBjb2xHcm91cGluZ1xuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj57e2F0dHJ9fTwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHRkICpuZ0lmPVwidGFidWxhclJlcG9ydC5yb3dDb3VudFwiXG4gICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5zaXplXCJcblxuICAgICAgICA+XG4gICAgICAgICAgQ291bnRcbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90cj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoPjFcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1swXS5zZXJpZXM7bGV0IGkgPSBpbmRleDsgZXZlbiBhcyBpc0V2ZW47IGxldCBkYXRhMVwiPlxuICAgICAgICA8dHJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBpc0V2ZW4gPyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUucm93U3R5bGUub2RkQ29sb3I6IHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5yb3dTdHlsZS5ldmVuQ29sb3J9XCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGggKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcblxuICAgICAgICAgID5cbiAgICAgICAgICA8IS0tICBzZXJpZXMgZGF0YSAgLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgX2F0dHIgb2YgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlczsgZXZlbiBhcyBpc0V2ZW47bGV0IG0gPSBpbmRleFwiPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICpuZ0lmPVwiIF9hdHRyLnJvd1NwYW4gJiYgIV9hdHRyLmNwbFNwYW4gJiYgX2F0dHIuY2xvbmVTZXJpZXMgJiYgX2F0dHIuY2xvbmVTZXJpZXNbaV0hPT0ncmVwZWF0ZWQnICYmIG0hPT0xXCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LnNpemVcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUudGV4dC1hbGlnbl09J19hdHRyLmFsaWdubWVudCdcbiAgICAgICAgICAgIFtyb3dTcGFuXT0nX2F0dHIuY2xvbmVHcm91cERhdGFbaV0nXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJkcmlsbFRocm91Z2hDb250ZXh0KCRldmVudCwgX2F0dHIsIGkpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIHt7aW5kZXhpbmcoX2F0dHIuZ3JvdXBEYXRhW2ldLGkpfX1cbiAgICAgICAgICAgIDxkaXYgIFtuZ1N3aXRjaF09XCJfYXR0ci53aWRnZXRUeXBlXCI+XG4gICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgbnVtYmVyIC0tPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ludC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgX2F0dHIuc2VyaWVzW2ldIHwgIGN1cnJlbmN5Ol9hdHRyLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiBfYXR0ci52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7X2F0dHIuc2VyaWVzW2ldfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIV9hdHRyLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICFfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPCEtLSB3aGVuIGRhdGEgdHlwZSBpcyBkYXRldGltZSAtLT5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVwaWNrZXItd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0nZGF0ZV9yYW5nZScgfHwgX2F0dHIud2lkZ2V0U3ViVHlwZT09PSdkYXRldGltZScgfHwgX2F0dHIud2lkZ2V0U3ViVHlwZT09PSdib3RoJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e21vbWVudChfYXR0ci5zZXJpZXNbaV0rJ1onKXxkYXRlOl9hdHRyLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfYXR0ci5zZXJpZXNbaV0gJiYgIF9hdHRyLndpZGdldFN1YlR5cGU9PT0ndGltZXN0YW1wJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiA+e3tfYXR0ci5zZXJpZXNbaV18ZGF0ZTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2F0dHIud2lkZ2V0U3ViVHlwZT09PSd0aW1lJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIl9hdHRyLnNlcmllc1tpXSBcIj57e21vbWVudChfYXR0ci5zZXJpZXNbaV0sJ2hoOm1tOnNzJyl8ZGF0ZTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2F0dHIud2lkZ2V0U3ViVHlwZT09PSdkYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIl9hdHRyLnNlcmllc1tpXSAmJiBfYXR0ci53aWRnZXRTdWJUeXBlPT09J2RhdGUnXCI+e3tfYXR0ci5zZXJpZXNbaV18ZGF0ZTpfYXR0ci52YWx1ZUZvcm1hdHRpbmcuZGF0ZSB9fTwvc3Bhbj4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgdGV4dCAtLT5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RleHRib3gtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0nZGVjaW1hbCd8fCBfYXR0ci53aWRnZXRTdWJUeXBlPT09J3RleHQnIHx8IF9hdHRyLndpZGdldFN1YlR5cGU9PT0nc3RyaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICB7e19hdHRyLnNlcmllc1tpXX19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci53aWRnZXRTdWJUeXBlPT09J251bWVyaWMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgX2F0dHIuc2VyaWVzW2ldIHwgIGN1cnJlbmN5Ol9hdHRyLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiBfYXR0ci52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7X2F0dHIuc2VyaWVzW2ldfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIV9hdHRyLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICFfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIHdlYiBsaW5rICAtLT5cbiAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaHlwZXJsaW5rLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCxfYXR0ci5zZXJpZXNbaV0pXCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBzaWduYXR1cmUgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3dldHNpZ25hdHVyZWNhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV1cIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV0pXCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyB2aWRlbyB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndmlkZW9jYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgYXVkaW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2F1ZGlvY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXSlcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZmlsZXVwbG9hZC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXSlcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPCEtLSBXaGVuIHdpZGdldCB0eXBlIGlzIGRvY3VtZW50IHdpZGdldCAtLT5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidpbWFnZWNhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV1cIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV0pXCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPCEtLSBkZWZhdWx0IGNhc2UgLS0+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwhLS0gd2hlbiBzZXJpZXMgZGF0YSBpcyBlbXB0eSAtLT5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj0nIV9hdHRyLnNlcmllc1tpXSc+LTwvc3Bhbj5cblxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPCEtLSB3aGVuIHR3byByb3dzIGdyb3VwZWQgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IF9hdHRyIG9mIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXM7IGV2ZW4gYXMgaXNFdmVuO2xldCBtID0gaW5kZXhcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQucm93R3JvdXBpbmcubGVuZ3RoPjEgJiYgbT4wICYmIF9hdHRyLnJvd1NwYW4gJiYgX2F0dHIuY2xvbmVTZXJpZXNbaV0hPT0ncmVwZWF0ZWQnXCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkhlYWRlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUudGV4dC1hbGlnbl09J19hdHRyLmFsaWdubWVudCdcbiAgICAgICAgICAoY29udGV4dG1lbnUpPVwiZHJpbGxUaHJvdWdoQ29udGV4dCgkZXZlbnQsIF9hdHRyLCBpKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDxkaXYgIFtuZ1N3aXRjaF09XCJfYXR0ci53aWRnZXRUeXBlXCI+XG4gICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIG51bWJlciAtLT5cbiAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaW50LXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgX2F0dHIuc2VyaWVzW2ldIHwgIGN1cnJlbmN5Ol9hdHRyLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgX2F0dHIudmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e19hdHRyLnNlcmllc1tpXXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhX2F0dHIudmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIV9hdHRyLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwhLS0gd2hlbiBkYXRhIHR5cGUgaXMgZGF0ZXRpbWUgLS0+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZXBpY2tlci13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0nZGF0ZXRpbWUnIHx8IF9hdHRyLndpZGdldFN1YlR5cGU9PT0nYm90aCdcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7bW9tZW50KF9hdHRyLnNlcmllc1tpXSsnWicpfGRhdGU6X2F0dHIudmFsdWVGb3JtYXR0aW5nLmRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2F0dHIuc2VyaWVzW2ldICYmICBfYXR0ci53aWRnZXRTdWJUeXBlPT09J3RpbWVzdGFtcCdcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuID57e19hdHRyLnNlcmllc1tpXXxkYXRlOl9hdHRyLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0ndGltZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiX2F0dHIuc2VyaWVzW2ldIFwiPnt7bW9tZW50KF9hdHRyLnNlcmllc1tpXSwnaGg6bW06c3MnKXxkYXRlOl9hdHRyLnZhbHVlRm9ybWF0dGluZy5kYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0nZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiX2F0dHIuc2VyaWVzW2ldICYmIF9hdHRyLndpZGdldFN1YlR5cGU9PT0nZGF0ZSdcIj57e21vbWVudChfYXR0ci5zZXJpZXNbaV0sJ1lZWVktTU0tZGQnKXxkYXRlOl9hdHRyLnZhbHVlRm9ybWF0dGluZy5kYXRlIH19PC9zcGFuPiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8IS0tIHdoZW4gZGF0YSB0eXBlIGlzIHRleHQgLS0+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndGV4dGJveC13aWRnZXQnXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0nZGVjaW1hbCd8fCBfYXR0ci53aWRnZXRTdWJUeXBlPT09J3RleHQnIHx8IF9hdHRyLndpZGdldFN1YlR5cGU9PT0nc3RyaW5nJyB8fCBfYXR0ci53aWRnZXRTdWJUeXBlPT09J2RhdGVfcmFuZ2UnXCI+XG4gICAgICAgICAgICAgICAgICB7e19hdHRyLnNlcmllc1tpXX19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIl9hdHRyLndpZGdldFN1YlR5cGU9PT0nbnVtZXJpYydcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfYXR0ci52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgX2F0dHIuc2VyaWVzW2ldIHwgIGN1cnJlbmN5Ol9hdHRyLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgX2F0dHIudmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e19hdHRyLnNlcmllc1tpXXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhX2F0dHIudmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIV9hdHRyLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgd2ViIGxpbmsgIC0tPlxuICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInaHlwZXJsaW5rLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQsX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBzaWduYXR1cmUgd2lkZ2V0IC0tPlxuICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid3ZXRzaWduYXR1cmVjYXB0dXJlLXdpZGdldCdcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cmxcIiBbdGl0bGVdPVwieDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXVwiIChjbGljayk9XCJyZWRpcmVjdCgkZXZlbnQseDFJbWFnZU1lZGlhVXJsK19hdHRyLnNlcmllc1tpXSlcIj57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8IS0tIFdoZW4gd2lkZ2V0IHR5cGUgaXMgdmlkZW8gd2lkZ2V0IC0tPlxuICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid2aWRlb2NhcHR1cmUtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBhdWRpbyB3aWRnZXQgLS0+XG4gICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2F1ZGlvY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV1cIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV0pXCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGV1cGxvYWQtd2lkZ2V0J1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVybFwiIFt0aXRsZV09XCJ4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldXCIgKGNsaWNrKT1cInJlZGlyZWN0KCRldmVudCx4MUltYWdlTWVkaWFVcmwrX2F0dHIuc2VyaWVzW2ldKVwiPnt7X2F0dHIuc2VyaWVzW2ldfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIDwhLS0gV2hlbiB3aWRnZXQgdHlwZSBpcyBkb2N1bWVudCB3aWRnZXQgLS0+XG4gICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ltYWdlY2FwdHVyZS13aWRnZXQnXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXJsXCIgW3RpdGxlXT1cIngxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV1cIiAoY2xpY2spPVwicmVkaXJlY3QoJGV2ZW50LHgxSW1hZ2VNZWRpYVVybCtfYXR0ci5zZXJpZXNbaV0pXCI+e3tfYXR0ci5zZXJpZXNbaV19fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8IS0tIGRlZmF1bHQgY2FzZSAtLT5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57e19hdHRyLnNlcmllc1tpXX19PC9zcGFuPlxuICAgICAgICAgICAgICA8IS0tIHdoZW4gc2VyaWVzIGRhdGEgaXMgZW1wdHkgLS0+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPSchX2F0dHIuc2VyaWVzW2ldJz4tPC9zcGFuPlxuXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj0nX2F0dHIuc2VyaWVzW2ldJz4gKHt7X2F0dHIuY2xvbmVHcm91cERhdGFbaV19fSk8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gd2hlbiByb3dDb3VudCBpcyBvZmYgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQucm93Q291bnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiBtYXAuZ2V0KGkpOyBsZXQgbT1pbmRleFwiPlxuICAgICAgICA8dGRcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5mYW1pbHlcIlxuICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5zaXplXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5jb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgID5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG5cbiAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgPCEtLSB0byBzaG93IHNpZGUgZ3JhbmQgdG90YWwgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsICAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzWzFdLmNsb25lU2VyaWVzW2ldIT09J3JlcGVhdGVkJ1wiID5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LnNpZGVUb3RhbC5nZXQoaSk7IGxldCBtPWluZGV4XCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmNvbG9yXCI+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuXG4gICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8IS0tIHRvIHNob3cgZGF0YSB3aXRoIHJvdyBjb3VudCAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPSd0YWJ1bGFyUmVwb3J0LnJvd0NvdW50Jz5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LmRhdGFSZW5kZXIuZ2V0KGkpIDtsZXQgbT1pbmRleFwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5zaXplXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXCI+e3tkYXRhfX08L3NwYW4+XG5cblxuICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmludGVnZXJBcnJheS5sZW5ndGg9PT0wIFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LmNvdW50c0RhdGEuZ2V0KGkpXCI+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LnNpemVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPiB7e2RhdGF9fTwvdGQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsXCIgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNpZGVUb3RhbC5nZXQoaSkgJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1sxXS5jbG9uZVNlcmllc1tpXSE9PSdyZXBlYXRlZCdcIj5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LnNpZGVUb3RhbC5nZXQoaSkgbGV0IG09aW5kZXhcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICpuZ0lmPVwidGFidWxhclJlcG9ydC50b3RhbFJvd0NvdW50LmdldChpKSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzWzFdLmNsb25lU2VyaWVzW2ldIT09J3JlcGVhdGVkJ1wiXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgPnt7dGFidWxhclJlcG9ydC50b3RhbFJvd0NvdW50LmdldChpKX19PC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90cj5cbiAgICAgIDwhLS0gc3VidG90YWwgLS0+XG4gICAgICAgIDx0ciAqbmdJZj0ndGFidWxhclJlcG9ydC5zdWJUb3RhbCAgJiYgKGF0dHJHbG9iYWw9PT1pKSAnPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IF9hdHRyIG9mIHRhYnVsYXJSZXBvcnQucm93R3JvdXBpbmc7IGV2ZW4gYXMgaXNFdmVuO2xldCBtID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAqbmdJZj1cIm09PT0wXCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPSdfYXR0ci5hbGlnbm1lbnQnXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuPlN1YnRvdGFsPC9zcGFuPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAqbmdJZj1cIm09PT0xXCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgID4tPC90ZD5cbiAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LmNvbFN1YlRvdGFsLmdldChpKSBsZXQgbT1pbmRleFwiPlxuICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQucm93Q291bnRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyBkYXRhIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93Q291bnRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV0gJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1cIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmludGVnZXJBcnJheS5sZW5ndGg9PT0wXCI+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQuY291bnRzU3ViVG90YWwuZ2V0KGkpXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tkYXRhfX1cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsXCI+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5zaWRlU3ViVG90YWwuZ2V0KGkpIGxldCBtPWluZGV4XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwidGFidWxhclJlcG9ydC5yb3dDb3VudFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7dGFidWxhclJlcG9ydC5jb3VudFNUb3RhbC5nZXQoaSl9fVxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgPCEtLSB3aGVuIHNpbmdsZSByb3cgZ3JvdXBpbmcgaXMgYXBwbGllZCAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5yb3dHcm91cGluZy5sZW5ndGg9PT0xXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbMF0udW5pcXVlU2VyaWVzO2xldCBpID0gaW5kZXg7IGV2ZW4gYXMgaXNFdmVuOyBsZXQgZGF0YTFcIj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5zaXplXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViSGVhZGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJIZWFkZXIuZm9udC5jb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgIChjb250ZXh0bWVudSk9XCJkcmlsbFRocm91Z2hDb250ZXh0KCRldmVudCwgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1swXSwgaSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9JyFkYXRhJz4tPC9zcGFuPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LnJvd0NvdW50XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIG1hcC5nZXQoaSkgbGV0IG09aW5kZXhcIj5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyBkYXRhIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5zaG93R3JhbmRUb3RhbFwiID5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LnNpZGVUb3RhbC5nZXQoaSk7IGxldCBtPWluZGV4XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IFwiPnt7IGRhdGEgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuXG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5yb3dDb3VudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LmRhdGFSZW5kZXIuZ2V0KGkpIGxldCBtPWluZGV4XCI+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5zaXplXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV0gJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV0gJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1cIj57e2RhdGF9fTwvc3Bhbj5cblxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQuaW50ZWdlckFycmF5Lmxlbmd0aD09PTBcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LmNvdW50c0RhdGEuZ2V0KGkpXCI+XG4gICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvZHkuZm9udC5jb2xvclwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9keS5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLndpZHRoKydweCcrICcgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIlxuICAgICAgICAgICAgICAgID4ge3tkYXRhfX08L3RkPlxuXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQuc2hvd0dyYW5kVG90YWxcIiA+XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz0ncHgtMS41XHRweS0xLjUnXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQuc2lkZVRvdGFsLmdldChpKSBsZXQgbT1pbmRleFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyBkYXRhIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7dGFidWxhclJlcG9ydC50b3RhbFJvd0NvdW50LmdldChpKX19XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8IS0tIHdoZW4gc3VidG90YWwgdG9nZ2xlIGlzIG9uIC0tPlxuICAgICAgICA8dHIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnN1YlRvdGFsXCI+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiICAgICAgICAgID5TdWJUb3RhbDwvdGQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQucm93Q291bnRcIj5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgbWFwLmdldChpKSBsZXQgbT1pbmRleFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgID5cblxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7ZGF0YXwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj48L3RkPlxuXG4gICAgICAgICAgICA8IS0tIHRvIHNob3cgc2lkZSBncmFuZCB0b3RhbCAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsXCIgPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRhYnVsYXJSZXBvcnQuc2lkZVRvdGFsLmdldChpKSBsZXQgbT1pbmRleFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSBcIj57eyBkYXRhIHwgIGN1cnJlbmN5OnRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e2RhdGF9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8IS0tIHRvIHNob3cgcm93IGNvdW50IC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQucm93Q291bnRcIj5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5kYXRhUmVuZGVyLmdldChpKSBsZXQgbT1pbmRleFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib2R5LmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5zdWJGb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV0gJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2VcIj57e2RhdGF8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmNvdW50SW50ZWdlckluZGV4aW5nW21dICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeVwiPnt7ZGF0YX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQuY291bnRJbnRlZ2VySW5kZXhpbmdbbV1cIj57e2RhdGF9fTwvc3Bhbj48L3RkPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoPT09MFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGFidWxhclJlcG9ydC5jb3VudHNEYXRhLmdldChpKVwiPlxuICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgICAgICA+IHt7ZGF0YX19PC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYnVsYXJSZXBvcnQuc2hvd0dyYW5kVG90YWxcIj5cbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0YWJ1bGFyUmVwb3J0LnNpZGVUb3RhbC5nZXQoaSkgbGV0IG09aW5kZXhcIlxuICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmZhbWlseVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LnNpemVcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5mb250LmNvbG9yXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLnN1YkZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgZGF0YSB8ICBjdXJyZW5jeTp0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgOidzeW1ib2wnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5pbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3tkYXRhfCAgYXhvUGVyY2VudGFnZTogW10gOiAnY29sdW1uJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuaW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3tkYXRhfX08L3NwYW4+XG5cbiAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJweC0xLjVcdHB5LTEuNVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuc2l6ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmZvbnQuY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuc3ViRm9vdGVyLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7dGFidWxhclJlcG9ydC50b3RhbFJvd0NvdW50LmdldChpKX19XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGJvZHk+XG4gICAgPCEtLSAgVGFibGUgZm9vdGVyIGZvciBncmFuZCB0b3RhbCAtLT5cbiAgICA8dGZvb3QgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzLmxlbmd0aD4wXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5mb250LnNpemVcIlxuICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5jb2xvclwiXG4gICAgICA+XG4gICAgICA8dHIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnNob3dHcmFuZFRvdGFsXCI+XG4gICAgICAgIDx0ZFxuICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKycgJysgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5ib3JkZXJTdHlsZSArICcgJyArIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuY29sb3JcIj5cbiAgICAgICAgICBHcmFuZCBUb3RhbDwvdGQ+XG4gICAgICAgIDx0ZFxuICAgICAgICAgIGNsYXNzPVwicHgtMS41XHRweS0xLjVcIlxuICAgICAgICAgICpuZ0lmPSd0YWJ1bGFyUmVwb3J0LnJvd0dyb3VwaW5nLmxlbmd0aD4xJ1xuICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci53aWR0aCsncHgnKyAnICcrIHRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIuYm9yZGVyU3R5bGUgKyAnICcgKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmNvbG9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgLVxuICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJ1bGFyUmVwb3J0LnJvd0NvdW50XCI+XG4gICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgdG90YWwgb2YgdGFidWxhclJlcG9ydC5ncmFuZFRvdGFsO2xldCBtPWluZGV4XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtZmFtaWx5XT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuZm9udC5mYW1pbHlcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5mb290ZXIuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LmdUb3RhbEludGVnZXJJbmRleGluZ1ttXSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuZ1RvdGFsSW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgdG90YWwgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmdUb3RhbEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5IDonc3ltYm9sJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIHRhYnVsYXJSZXBvcnQuZ1RvdGFsSW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5nVG90YWxJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5wZXJjZW50YWdlXCI+e3t0b3RhbHwgIGF4b1BlcmNlbnRhZ2U6IFtdIDogJ2NvbHVtbid9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYnVsYXJSZXBvcnQuZ1RvdGFsSW50ZWdlckluZGV4aW5nW21dICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuZ1RvdGFsSW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZSAmJiAhdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmdUb3RhbEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLmN1cnJlbmN5XCI+e3t0b3RhbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQuZ1RvdGFsSW50ZWdlckluZGV4aW5nW21dXCI+e3t0b3RhbH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwhLS0gd2hlbiByb3cgY291bnQgdG9nZ2xlIGlzIG9uIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJ1bGFyUmVwb3J0LnJvd0NvdW50XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoPjBcIj5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRvdGFsIG9mIHRhYnVsYXJSZXBvcnQuZ3JhbmRUb3RhbDI7bGV0IG09aW5kZXhcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5jb3VudFRvdGFsSW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudFRvdGFsSW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3kgXCI+e3sgdG90YWwgfCAgY3VycmVuY3k6dGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1t0YWJ1bGFyUmVwb3J0LmNvdW50VG90YWxJbnRlZ2VySW5kZXhpbmdbbV1dLnZhbHVlRm9ybWF0dGluZy5jdXJyZW5jeSA6J3N5bWJvbCd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgdGFidWxhclJlcG9ydC5jb3VudFRvdGFsSW50ZWdlckluZGV4aW5nW21dICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudFRvdGFsSW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcucGVyY2VudGFnZVwiPnt7dG90YWx8ICBheG9QZXJjZW50YWdlOiBbXSA6ICdjb2x1bW4nfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFidWxhclJlcG9ydC5jb3VudFRvdGFsSW50ZWdlckluZGV4aW5nW21dICYmICF0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW3RhYnVsYXJSZXBvcnQuY291bnRUb3RhbEludGVnZXJJbmRleGluZ1ttXV0udmFsdWVGb3JtYXR0aW5nLnBlcmNlbnRhZ2UgJiYgIXRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbdGFidWxhclJlcG9ydC5jb3VudFRvdGFsSW50ZWdlckluZGV4aW5nW21dXS52YWx1ZUZvcm1hdHRpbmcuY3VycmVuY3lcIj57e3RvdGFsfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQuY291bnRUb3RhbEludGVnZXJJbmRleGluZ1ttXVwiPnt7dG90YWx9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFidWxhclJlcG9ydC5pbnRlZ2VyQXJyYXkubGVuZ3RoPT09MFwiPlxuXG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cInB4LTEuNVx0cHktMS41XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRvdGFsIG9mIHRhYnVsYXJSZXBvcnQuY291bnRzVG90YWw7bGV0IGk9aW5kZXhcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cInRhYnVsYXJSZXBvcnQudGFibGVTdHlsZS5ib3JkZXIud2lkdGgrJ3B4JysgJyAnKyB0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuYm9yZGVyLmJvcmRlclN0eWxlICsgJyAnICsgdGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmJvcmRlci5jb2xvclwiXG4gICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJ0YWJ1bGFyUmVwb3J0LnRhYmxlU3R5bGUuZm9vdGVyLmZvbnQuZmFtaWx5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFidWxhclJlcG9ydC50YWJsZVN0eWxlLmZvb3Rlci5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3t0b3RhbH19PC9zcGFuPlxuXG4gICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdHI+XG4gICAgPC90Zm9vdD5cbiAgPC90YWJsZT5cbiAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGZsZXgtY29sIHplcm8tcmVjb3Jkc1wiICpuZ0lmPVwiKHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXMubGVuZ3RoPjAgJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1swXS5zZXJpZXMubGVuZ3RoPT09MClcIj5cbiAgICBObyByZWNvcmRzIGF2YWlsYWJsZVxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuOyBwb3NpdGlvbjogZml4ZWRcIiBbc3R5bGUubGVmdF09XCJjb250ZXh0TWVudVBvc2l0aW9uLnhcIlxuICBbc3R5bGUudG9wXT1cImNvbnRleHRNZW51UG9zaXRpb24ueVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJjb250ZXh0TWVudVwiPlxuPC9kaXY+XG5cbjwhLS0gTWF0IE1lbnUgdHJpZ2dlciBmb3IgdGFibGUgY29sdW1ucy0tPlxuPG1hdC1tZW51ICNjb250ZXh0TWVudT1cIm1hdE1lbnVcIj5cbiAgPGRpdiBpZD1cInRhYmxlLW1lbnVcIj5cbiAgICA8bmctdGVtcGxhdGUgbWF0TWVudUNvbnRlbnQgbGV0LWl0ZW09XCJyZXBvcnREYXRhXCI+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwidGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlcy5sZW5ndGg+MCBcIm1hdC1tZW51LWl0ZW0gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIkFnZ3JlZ2F0ZVwiPkFnZ3JlZ2F0ZTwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJtb3ZlQ29sdW1uTGVmdCgkZXZlbnQpXCI+TW92ZSBMZWZ0PC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm1vdmVDb2x1bW5SaWdodCgkZXZlbnQpXCI+TW92ZSBSaWdodDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInNjcmVlblR5cGVzLmRhc2hib2FyZEJ1aWxkZXIgPT09IHNjcmVlblR5cGVcIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJyZW1vdmVGcm9tRGFzaGJvYXJkKClcIj5SZW1vdmUgRnJvbSBEYXNoYm9hcmQ8L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvbWF0LW1lbnU+XG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cblxuXG5cbjwhLS0gTWF0IG1lbnUgdHJpZ2dlciBmb3IgIEFnZ3JlZ2F0aW9uLS0+XG48bWF0LW1lbnUgI0FnZ3JlZ2F0ZT1cIm1hdE1lbnVcIj5cbiAgPG5nLXRlbXBsYXRlIG1hdE1lbnVDb250ZW50ICpuZ0lmPSd0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzLmxlbmd0aD4wJz5cbiAgICA8c2VjdGlvbj5cbiAgICAgIDxwPlxuICAgICAgICA8bWF0LWNoZWNrYm94ICBjbGFzcz1cImFnZ3JlZ2F0ZS1mdW5cIiBbKG5nTW9kZWwpXT0ndGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1tjdXJyZW50SW5kZXhdLmFnZ3JlZ2F0ZS5zaG93U3VtJ1xuICAgICAgICAgIChjaGFuZ2UpPVwic3VtQWdncmVnYXRpb24oJGV2ZW50KVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5zdW08L21hdC1jaGVja2JveD5cbiAgICAgIDwvcD5cbiAgICAgIDxwPlxuICAgICAgICA8bWF0LWNoZWNrYm94IGNsYXNzPVwiYWdncmVnYXRlLWZ1blwiIFsobmdNb2RlbCldPSd0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzW2N1cnJlbnRJbmRleF0uYWdncmVnYXRlLnNob3dBdmcnX2F0dHIud2lkZ2V0U3ViVHlwZT09PSdkYXRlX3JhbmdlJyB8fFxuICAgICAgICAgIChjaGFuZ2UpPVwiYXZlcmFnZUFnZ3JlZ2F0aW9uKCRldmVudClcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+QXZlcmFnZTwvbWF0LWNoZWNrYm94PlxuICAgICAgPC9wPlxuICAgICAgPHA+XG4gICAgICAgIDxtYXQtY2hlY2tib3ggY2xhc3M9XCJhZ2dyZWdhdGUtZnVuXCJbKG5nTW9kZWwpXT0ndGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlc1tjdXJyZW50SW5kZXhdLmFnZ3JlZ2F0ZS5zaG93TWF4J1xuICAgICAgICAgIChjaGFuZ2UpPVwibWF4QWdncmVnYXRpb24oJGV2ZW50KVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5NYXg8L21hdC1jaGVja2JveD5cbiAgICAgIDwvcD5cbiAgICAgIDxwPlxuICAgICAgICA8bWF0LWNoZWNrYm94IGNsYXNzPVwiYWdncmVnYXRlLWZ1blwiWyhuZ01vZGVsKV09J3RhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXNbY3VycmVudEluZGV4XS5hZ2dyZWdhdGUuc2hvd01pbidcbiAgICAgICAgICAoY2hhbmdlKT1cIm1pbkFnZ3JlZ2F0aW9uKCRldmVudClcIihjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5NaW48L21hdC1jaGVja2JveD5cbiAgICAgIDwvcD5cbiAgICA8L3NlY3Rpb24+XG4gIDwvbmctdGVtcGxhdGU+XG48L21hdC1tZW51PlxuXG48ZGl2ICpuZ0lmPVwiIXRhYnVsYXJSZXBvcnQuaXNEYXRhTG9hZGVkICYmIHRhYnVsYXJSZXBvcnQubWF0cml4LmF0dHJpYnV0ZXMubGVuZ3RoIT09MFwiIGNsYXNzPVwibG9hZGVyLXNwaW5uZXJcIj5cbiAgPGFwcC1naG9zdC1sb2FkZXIgW2VsZW1lbnRUeXBlXT1cIkdob3N0TG9hZGVyVHlwZS5UYWJ1bGFyQ2hhcnRMb2FkZXJcIiA+PC9hcHAtZ2hvc3QtbG9hZGVyPlxuPC9kaXY+XG48IS0tIDxkaXYgKm5nSWY9XCIhdGFidWxhclJlcG9ydC5pc0RhdGFMb2FkZWQgJiYgdGFidWxhclJlcG9ydC5tYXRyaXguYXR0cmlidXRlcy5sZW5ndGghPT0wXCIgY2xhc3M9XCJsb2FkZXItc3Bpbm5lclwiPiAtLT5cbiAgPCEtLSA8bWF0LXNwaW5uZXIgW2RpYW1ldGVyXT1cIjQwXCI+PC9tYXQtc3Bpbm5lcj48L2Rpdj4gLS0+XG4iXX0=
|