@alauda-fe/storage 0.0.9 → 0.0.11

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.
@@ -140,8 +140,8 @@ function PersistentVolumeClaimFormComponent_ng_container_6_Template(rf, ctx) { i
140
140
  i0.ɵɵadvance();
141
141
  i0.ɵɵproperty("ngIf", ctx_r1.createMethod !== ctx_r1.PvcStorageClassCreateType.STATIC);
142
142
  } }
143
- function PersistentVolumeClaimFormComponent_aui_form_item_8_aui_radio_button_6_Template(rf, ctx) { if (rf & 1) {
144
- i0.ɵɵelementStart(0, "aui-radio-button", 25);
143
+ function PersistentVolumeClaimFormComponent_aui_form_item_8_aui_radio_button_5_Template(rf, ctx) { if (rf & 1) {
144
+ i0.ɵɵelementStart(0, "aui-radio-button", 24);
145
145
  i0.ɵɵpipe(1, "translate");
146
146
  i0.ɵɵpipe(2, "pure");
147
147
  i0.ɵɵpipe(3, "pure");
@@ -151,12 +151,85 @@ function PersistentVolumeClaimFormComponent_aui_form_item_8_aui_radio_button_6_T
151
151
  } if (rf & 2) {
152
152
  const mode_r10 = ctx.$implicit;
153
153
  const ctx_r1 = i0.ɵɵnextContext(2);
154
- i0.ɵɵproperty("auiTooltip", i0.ɵɵpipeBind1(1, 5, "storage.storage_forbid_select_access_mode"))("auiTooltipDisabled", !i0.ɵɵpipeBind3(2, 7, mode_r10, ctx_r1.storageCommonUtil.isAccessModeDisabled, ctx_r1.selectedStorageSelectOption))("value", mode_r10)("disabled", i0.ɵɵpipeBind3(3, 11, mode_r10, ctx_r1.storageCommonUtil.isAccessModeDisabled, ctx_r1.selectedStorageSelectOption));
154
+ i0.ɵɵproperty("auiTooltip", i0.ɵɵpipeBind1(1, 5, "storage.storage_forbid_select_volume_mode"))("auiTooltipDisabled", !i0.ɵɵpipeBind3(2, 7, mode_r10, ctx_r1.storageCommonUtil.isVolumeModeDisabled, ctx_r1.selectedStorageSelectOption))("disabled", i0.ɵɵpipeBind3(3, 11, mode_r10, ctx_r1.storageCommonUtil.isVolumeModeDisabled, ctx_r1.selectedStorageSelectOption))("value", mode_r10);
155
155
  i0.ɵɵadvance(4);
156
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 15, "storage." + ctx_r1.AccessModeTranslateKey[mode_r10]), " ");
156
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 15, "storage." + ctx_r1.VolumeModeTranslateKey[mode_r10]), " ");
157
157
  } }
158
- function PersistentVolumeClaimFormComponent_aui_form_item_8_ng_template_10_Template(rf, ctx) { if (rf & 1) {
159
- i0.ɵɵelementStart(0, "ul", 26)(1, "li");
158
+ function PersistentVolumeClaimFormComponent_aui_form_item_8_div_6_Template(rf, ctx) { if (rf & 1) {
159
+ i0.ɵɵelementStart(0, "div", 25);
160
+ i0.ɵɵelement(1, "aui-icon", 26);
161
+ i0.ɵɵelementEnd();
162
+ } if (rf & 2) {
163
+ i0.ɵɵnextContext();
164
+ const volumeModeTip_r11 = i0.ɵɵreference(8);
165
+ i0.ɵɵadvance();
166
+ i0.ɵɵproperty("auiTooltip", volumeModeTip_r11)("auiTooltipPosition", "top center");
167
+ } }
168
+ function PersistentVolumeClaimFormComponent_aui_form_item_8_ng_template_7_Template(rf, ctx) { if (rf & 1) {
169
+ i0.ɵɵelementStart(0, "ul", 27)(1, "li");
170
+ i0.ɵɵtext(2);
171
+ i0.ɵɵpipe(3, "translate");
172
+ i0.ɵɵelementEnd();
173
+ i0.ɵɵelementStart(4, "li");
174
+ i0.ɵɵtext(5);
175
+ i0.ɵɵpipe(6, "translate");
176
+ i0.ɵɵelementEnd()();
177
+ } if (rf & 2) {
178
+ i0.ɵɵadvance(2);
179
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "storage.volume_mode_file_system_hint"));
180
+ i0.ɵɵadvance(3);
181
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 4, "storage.volume_mode_block_device_hint"));
182
+ } }
183
+ function PersistentVolumeClaimFormComponent_aui_form_item_8_ng_template_9_Template(rf, ctx) { if (rf & 1) {
184
+ i0.ɵɵtext(0);
185
+ i0.ɵɵpipe(1, "translate");
186
+ } if (rf & 2) {
187
+ const ctx_r1 = i0.ɵɵnextContext(2);
188
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(1, 1, ctx_r1.model.volumeMode === "Filesystem" ? "storage.file_system" : "storage.block_device"), " ");
189
+ } }
190
+ function PersistentVolumeClaimFormComponent_aui_form_item_8_Template(rf, ctx) { if (rf & 1) {
191
+ const _r9 = i0.ɵɵgetCurrentView();
192
+ i0.ɵɵelementStart(0, "aui-form-item")(1, "label", 13);
193
+ i0.ɵɵtext(2);
194
+ i0.ɵɵpipe(3, "translate");
195
+ i0.ɵɵelementEnd();
196
+ i0.ɵɵelementStart(4, "aui-radio-group", 21);
197
+ i0.ɵɵtwoWayListener("ngModelChange", function PersistentVolumeClaimFormComponent_aui_form_item_8_Template_aui_radio_group_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.model.volumeMode, $event) || (ctx_r1.model.volumeMode = $event); return i0.ɵɵresetView($event); });
198
+ i0.ɵɵlistener("ngModelChange", function PersistentVolumeClaimFormComponent_aui_form_item_8_Template_aui_radio_group_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.volumeModeChange($event)); });
199
+ i0.ɵɵtemplate(5, PersistentVolumeClaimFormComponent_aui_form_item_8_aui_radio_button_5_Template, 6, 17, "aui-radio-button", 22);
200
+ i0.ɵɵelementEnd();
201
+ i0.ɵɵtemplate(6, PersistentVolumeClaimFormComponent_aui_form_item_8_div_6_Template, 2, 2, "div", 23)(7, PersistentVolumeClaimFormComponent_aui_form_item_8_ng_template_7_Template, 7, 6, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor)(9, PersistentVolumeClaimFormComponent_aui_form_item_8_ng_template_9_Template, 2, 3, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
202
+ i0.ɵɵelementEnd();
203
+ } if (rf & 2) {
204
+ const volumeModeTmpl_r12 = i0.ɵɵreference(10);
205
+ const ctx_r1 = i0.ɵɵnextContext();
206
+ i0.ɵɵadvance(2);
207
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 6, "storage.volume_mode"));
208
+ i0.ɵɵadvance(2);
209
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.model.volumeMode);
210
+ i0.ɵɵproperty("aclReadonlyField", ctx_r1.isFromSnapshot || !!ctx_r1.volumeMode)("aclReadonlyFieldTemplate", volumeModeTmpl_r12);
211
+ i0.ɵɵadvance();
212
+ i0.ɵɵproperty("ngForOf", ctx_r1.volumeModes);
213
+ i0.ɵɵadvance();
214
+ i0.ɵɵproperty("ngIf", !ctx_r1.volumeMode);
215
+ } }
216
+ function PersistentVolumeClaimFormComponent_aui_form_item_10_aui_radio_button_6_Template(rf, ctx) { if (rf & 1) {
217
+ i0.ɵɵelementStart(0, "aui-radio-button", 30);
218
+ i0.ɵɵpipe(1, "translate");
219
+ i0.ɵɵpipe(2, "pure");
220
+ i0.ɵɵpipe(3, "pure");
221
+ i0.ɵɵtext(4);
222
+ i0.ɵɵpipe(5, "translate");
223
+ i0.ɵɵelementEnd();
224
+ } if (rf & 2) {
225
+ const mode_r14 = ctx.$implicit;
226
+ const ctx_r1 = i0.ɵɵnextContext(2);
227
+ i0.ɵɵproperty("auiTooltip", i0.ɵɵpipeBind1(1, 5, "storage.storage_forbid_select_access_mode"))("auiTooltipDisabled", !i0.ɵɵpipeBind4(2, 7, mode_r14, ctx_r1.storageCommonUtil.isAccessModeDisabled, ctx_r1.selectedStorageSelectOption, ctx_r1.model.volumeMode === "Block"))("value", mode_r14)("disabled", i0.ɵɵpipeBind4(3, 12, mode_r14, ctx_r1.storageCommonUtil.isAccessModeDisabled, ctx_r1.selectedStorageSelectOption, ctx_r1.model.volumeMode === "Block"));
228
+ i0.ɵɵadvance(4);
229
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 17, "storage." + ctx_r1.AccessModeTranslateKey[mode_r14]), " ");
230
+ } }
231
+ function PersistentVolumeClaimFormComponent_aui_form_item_10_ng_template_10_Template(rf, ctx) { if (rf & 1) {
232
+ i0.ɵɵelementStart(0, "ul", 27)(1, "li");
160
233
  i0.ɵɵtext(2);
161
234
  i0.ɵɵpipe(3, "translate");
162
235
  i0.ɵɵelementEnd();
@@ -176,25 +249,25 @@ function PersistentVolumeClaimFormComponent_aui_form_item_8_ng_template_10_Templ
176
249
  i0.ɵɵadvance(3);
177
250
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(9, 7, "storage.access_mode_rwx"));
178
251
  } }
179
- function PersistentVolumeClaimFormComponent_aui_form_item_8_Template(rf, ctx) { if (rf & 1) {
180
- const _r9 = i0.ɵɵgetCurrentView();
252
+ function PersistentVolumeClaimFormComponent_aui_form_item_10_Template(rf, ctx) { if (rf & 1) {
253
+ const _r13 = i0.ɵɵgetCurrentView();
181
254
  i0.ɵɵelementStart(0, "aui-form-item")(1, "label", 13);
182
255
  i0.ɵɵtext(2);
183
256
  i0.ɵɵpipe(3, "translate");
184
257
  i0.ɵɵelementEnd();
185
- i0.ɵɵelementStart(4, "aui-radio-group", 21, 3);
186
- i0.ɵɵtwoWayListener("ngModelChange", function PersistentVolumeClaimFormComponent_aui_form_item_8_Template_aui_radio_group_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.model.accessModes, $event) || (ctx_r1.model.accessModes = $event); return i0.ɵɵresetView($event); });
187
- i0.ɵɵtemplate(6, PersistentVolumeClaimFormComponent_aui_form_item_8_aui_radio_button_6_Template, 6, 17, "aui-radio-button", 22);
258
+ i0.ɵɵelementStart(4, "aui-radio-group", 28, 5);
259
+ i0.ɵɵtwoWayListener("ngModelChange", function PersistentVolumeClaimFormComponent_aui_form_item_10_Template_aui_radio_group_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.model.accessModes, $event) || (ctx_r1.model.accessModes = $event); return i0.ɵɵresetView($event); });
260
+ i0.ɵɵtemplate(6, PersistentVolumeClaimFormComponent_aui_form_item_10_aui_radio_button_6_Template, 6, 19, "aui-radio-button", 29);
188
261
  i0.ɵɵelementEnd();
189
- i0.ɵɵelementStart(7, "div", 23);
190
- i0.ɵɵelement(8, "aui-icon", 24);
262
+ i0.ɵɵelementStart(7, "div", 25);
263
+ i0.ɵɵelement(8, "aui-icon", 26);
191
264
  i0.ɵɵelementEnd();
192
265
  i0.ɵɵelement(9, "acl-errors-mapper", 20);
193
- i0.ɵɵtemplate(10, PersistentVolumeClaimFormComponent_aui_form_item_8_ng_template_10_Template, 10, 9, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
266
+ i0.ɵɵtemplate(10, PersistentVolumeClaimFormComponent_aui_form_item_10_ng_template_10_Template, 10, 9, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor);
194
267
  i0.ɵɵelementEnd();
195
268
  } if (rf & 2) {
196
- const accessMode_r11 = i0.ɵɵreference(5);
197
- const accessModeTip_r12 = i0.ɵɵreference(11);
269
+ const accessMode_r15 = i0.ɵɵreference(5);
270
+ const accessModeTip_r16 = i0.ɵɵreference(11);
198
271
  const ctx_r1 = i0.ɵɵnextContext();
199
272
  i0.ɵɵadvance(2);
200
273
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 6, "storage.access_mode"));
@@ -203,25 +276,25 @@ function PersistentVolumeClaimFormComponent_aui_form_item_8_Template(rf, ctx) {
203
276
  i0.ɵɵadvance(2);
204
277
  i0.ɵɵproperty("ngForOf", ctx_r1.accessModes);
205
278
  i0.ɵɵadvance(2);
206
- i0.ɵɵproperty("auiTooltip", accessModeTip_r12)("auiTooltipPosition", "top center");
279
+ i0.ɵɵproperty("auiTooltip", accessModeTip_r16)("auiTooltipPosition", "top center");
207
280
  i0.ɵɵadvance();
208
- i0.ɵɵproperty("errors", accessMode_r11.errors);
281
+ i0.ɵɵproperty("errors", accessMode_r15.errors);
209
282
  } }
210
- function PersistentVolumeClaimFormComponent_aui_form_item_10_aui_select_6_aui_option_1_Template(rf, ctx) { if (rf & 1) {
211
- i0.ɵɵelementStart(0, "aui-option", 31);
283
+ function PersistentVolumeClaimFormComponent_aui_form_item_12_aui_select_6_aui_option_1_Template(rf, ctx) { if (rf & 1) {
284
+ i0.ɵɵelementStart(0, "aui-option", 35);
212
285
  i0.ɵɵtext(1);
213
286
  i0.ɵɵelementEnd();
214
287
  } if (rf & 2) {
215
- const item_r15 = ctx.$implicit;
216
- i0.ɵɵproperty("label", item_r15)("value", item_r15);
288
+ const item_r19 = ctx.$implicit;
289
+ i0.ɵɵproperty("label", item_r19)("value", item_r19);
217
290
  i0.ɵɵadvance();
218
- i0.ɵɵtextInterpolate1(" ", item_r15, " ");
291
+ i0.ɵɵtextInterpolate1(" ", item_r19, " ");
219
292
  } }
220
- function PersistentVolumeClaimFormComponent_aui_form_item_10_aui_select_6_Template(rf, ctx) { if (rf & 1) {
221
- const _r14 = i0.ɵɵgetCurrentView();
222
- i0.ɵɵelementStart(0, "aui-select", 29);
223
- i0.ɵɵtwoWayListener("ngModelChange", function PersistentVolumeClaimFormComponent_aui_form_item_10_aui_select_6_Template_aui_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.unit, $event) || (ctx_r1.unit = $event); return i0.ɵɵresetView($event); });
224
- i0.ɵɵtemplate(1, PersistentVolumeClaimFormComponent_aui_form_item_10_aui_select_6_aui_option_1_Template, 2, 3, "aui-option", 30);
293
+ function PersistentVolumeClaimFormComponent_aui_form_item_12_aui_select_6_Template(rf, ctx) { if (rf & 1) {
294
+ const _r18 = i0.ɵɵgetCurrentView();
295
+ i0.ɵɵelementStart(0, "aui-select", 33);
296
+ i0.ɵɵtwoWayListener("ngModelChange", function PersistentVolumeClaimFormComponent_aui_form_item_12_aui_select_6_Template_aui_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.unit, $event) || (ctx_r1.unit = $event); return i0.ɵɵresetView($event); });
297
+ i0.ɵɵtemplate(1, PersistentVolumeClaimFormComponent_aui_form_item_12_aui_select_6_aui_option_1_Template, 2, 3, "aui-option", 34);
225
298
  i0.ɵɵelementEnd();
226
299
  } if (rf & 2) {
227
300
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -229,111 +302,39 @@ function PersistentVolumeClaimFormComponent_aui_form_item_10_aui_select_6_Templa
229
302
  i0.ɵɵadvance();
230
303
  i0.ɵɵproperty("ngForOf", ctx_r1.UNITS);
231
304
  } }
232
- function PersistentVolumeClaimFormComponent_aui_form_item_10_ng_template_7_Template(rf, ctx) { if (rf & 1) {
305
+ function PersistentVolumeClaimFormComponent_aui_form_item_12_ng_template_7_Template(rf, ctx) { if (rf & 1) {
233
306
  i0.ɵɵtext(0);
234
307
  } if (rf & 2) {
235
308
  const ctx_r1 = i0.ɵɵnextContext(2);
236
309
  i0.ɵɵtextInterpolate1(" ", ctx_r1.model.storage, "Gi ");
237
310
  } }
238
- function PersistentVolumeClaimFormComponent_aui_form_item_10_Template(rf, ctx) { if (rf & 1) {
239
- const _r13 = i0.ɵɵgetCurrentView();
311
+ function PersistentVolumeClaimFormComponent_aui_form_item_12_Template(rf, ctx) { if (rf & 1) {
312
+ const _r17 = i0.ɵɵgetCurrentView();
240
313
  i0.ɵɵelementStart(0, "aui-form-item", 18)(1, "label", 13);
241
314
  i0.ɵɵtext(2);
242
315
  i0.ɵɵpipe(3, "translate");
243
316
  i0.ɵɵelementEnd();
244
- i0.ɵɵelementStart(4, "input", 27, 5);
245
- i0.ɵɵtwoWayListener("ngModelChange", function PersistentVolumeClaimFormComponent_aui_form_item_10_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.model.storage, $event) || (ctx_r1.model.storage = $event); return i0.ɵɵresetView($event); });
317
+ i0.ɵɵelementStart(4, "input", 31, 7);
318
+ i0.ɵɵtwoWayListener("ngModelChange", function PersistentVolumeClaimFormComponent_aui_form_item_12_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.model.storage, $event) || (ctx_r1.model.storage = $event); return i0.ɵɵresetView($event); });
246
319
  i0.ɵɵelementEnd();
247
- i0.ɵɵtemplate(6, PersistentVolumeClaimFormComponent_aui_form_item_10_aui_select_6_Template, 2, 2, "aui-select", 28)(7, PersistentVolumeClaimFormComponent_aui_form_item_10_ng_template_7_Template, 1, 1, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor);
320
+ i0.ɵɵtemplate(6, PersistentVolumeClaimFormComponent_aui_form_item_12_aui_select_6_Template, 2, 2, "aui-select", 32)(7, PersistentVolumeClaimFormComponent_aui_form_item_12_ng_template_7_Template, 1, 1, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor);
248
321
  i0.ɵɵelement(9, "acl-errors-mapper", 15);
249
322
  i0.ɵɵpipe(10, "translate");
250
323
  i0.ɵɵelementEnd();
251
324
  } if (rf & 2) {
252
- const storage_r16 = i0.ɵɵreference(5);
253
- const capacityTpl_r17 = i0.ɵɵreference(8);
325
+ const storage_r20 = i0.ɵɵreference(5);
326
+ const capacityTpl_r21 = i0.ɵɵreference(8);
254
327
  const ctx_r1 = i0.ɵɵnextContext();
255
328
  i0.ɵɵadvance(2);
256
329
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 8, "storage.capacity"));
257
330
  i0.ɵɵadvance(2);
258
331
  i0.ɵɵproperty("pattern", ctx_r1.POSITIVE_INT_PATTERN.pattern);
259
332
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.model.storage);
260
- i0.ɵɵproperty("aclReadonlyField", ctx_r1.isFromSnapshot)("aclReadonlyFieldTemplate", capacityTpl_r17);
333
+ i0.ɵɵproperty("aclReadonlyField", ctx_r1.isFromSnapshot)("aclReadonlyFieldTemplate", capacityTpl_r21);
261
334
  i0.ɵɵadvance(2);
262
335
  i0.ɵɵproperty("ngIf", !ctx_r1.isFromSnapshot);
263
336
  i0.ɵɵadvance(3);
264
- i0.ɵɵproperty("errors", storage_r16.errors)("errorsMapper", i0.ɵɵpureFunction1(12, _c0, i0.ɵɵpipeBind1(10, 10, ctx_r1.POSITIVE_INT_PATTERN.tip)));
265
- } }
266
- function PersistentVolumeClaimFormComponent_aui_form_item_12_aui_radio_button_5_Template(rf, ctx) { if (rf & 1) {
267
- i0.ɵɵelementStart(0, "aui-radio-button", 35);
268
- i0.ɵɵpipe(1, "translate");
269
- i0.ɵɵpipe(2, "pure");
270
- i0.ɵɵpipe(3, "pure");
271
- i0.ɵɵtext(4);
272
- i0.ɵɵpipe(5, "translate");
273
- i0.ɵɵelementEnd();
274
- } if (rf & 2) {
275
- const mode_r19 = ctx.$implicit;
276
- const ctx_r1 = i0.ɵɵnextContext(2);
277
- i0.ɵɵproperty("auiTooltip", i0.ɵɵpipeBind1(1, 5, "storage.storage_forbid_select_volume_mode"))("auiTooltipDisabled", !i0.ɵɵpipeBind3(2, 7, mode_r19, ctx_r1.storageCommonUtil.isVolumeModeDisabled, ctx_r1.selectedStorageSelectOption))("disabled", i0.ɵɵpipeBind3(3, 11, mode_r19, ctx_r1.storageCommonUtil.isVolumeModeDisabled, ctx_r1.selectedStorageSelectOption))("value", mode_r19);
278
- i0.ɵɵadvance(4);
279
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 15, "storage." + ctx_r1.VolumeModeTranslateKey[mode_r19]), " ");
280
- } }
281
- function PersistentVolumeClaimFormComponent_aui_form_item_12_div_6_Template(rf, ctx) { if (rf & 1) {
282
- i0.ɵɵelementStart(0, "div", 23);
283
- i0.ɵɵelement(1, "aui-icon", 24);
284
- i0.ɵɵelementEnd();
285
- } if (rf & 2) {
286
- i0.ɵɵnextContext();
287
- const volumeModeTip_r20 = i0.ɵɵreference(8);
288
- i0.ɵɵadvance();
289
- i0.ɵɵproperty("auiTooltip", volumeModeTip_r20)("auiTooltipPosition", "top center");
290
- } }
291
- function PersistentVolumeClaimFormComponent_aui_form_item_12_ng_template_7_Template(rf, ctx) { if (rf & 1) {
292
- i0.ɵɵelementStart(0, "ul", 26)(1, "li");
293
- i0.ɵɵtext(2);
294
- i0.ɵɵpipe(3, "translate");
295
- i0.ɵɵelementEnd();
296
- i0.ɵɵelementStart(4, "li");
297
- i0.ɵɵtext(5);
298
- i0.ɵɵpipe(6, "translate");
299
- i0.ɵɵelementEnd()();
300
- } if (rf & 2) {
301
- i0.ɵɵadvance(2);
302
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "storage.volume_mode_file_system_hint"));
303
- i0.ɵɵadvance(3);
304
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 4, "storage.volume_mode_block_device_hint"));
305
- } }
306
- function PersistentVolumeClaimFormComponent_aui_form_item_12_ng_template_9_Template(rf, ctx) { if (rf & 1) {
307
- i0.ɵɵtext(0);
308
- i0.ɵɵpipe(1, "translate");
309
- } if (rf & 2) {
310
- const ctx_r1 = i0.ɵɵnextContext(2);
311
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(1, 1, ctx_r1.model.volumeMode === "Filesystem" ? "storage.file_system" : "storage.block_device"), " ");
312
- } }
313
- function PersistentVolumeClaimFormComponent_aui_form_item_12_Template(rf, ctx) { if (rf & 1) {
314
- const _r18 = i0.ɵɵgetCurrentView();
315
- i0.ɵɵelementStart(0, "aui-form-item")(1, "label", 13);
316
- i0.ɵɵtext(2);
317
- i0.ɵɵpipe(3, "translate");
318
- i0.ɵɵelementEnd();
319
- i0.ɵɵelementStart(4, "aui-radio-group", 32);
320
- i0.ɵɵtwoWayListener("ngModelChange", function PersistentVolumeClaimFormComponent_aui_form_item_12_Template_aui_radio_group_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.model.volumeMode, $event) || (ctx_r1.model.volumeMode = $event); return i0.ɵɵresetView($event); });
321
- i0.ɵɵtemplate(5, PersistentVolumeClaimFormComponent_aui_form_item_12_aui_radio_button_5_Template, 6, 17, "aui-radio-button", 33);
322
- i0.ɵɵelementEnd();
323
- i0.ɵɵtemplate(6, PersistentVolumeClaimFormComponent_aui_form_item_12_div_6_Template, 2, 2, "div", 34)(7, PersistentVolumeClaimFormComponent_aui_form_item_12_ng_template_7_Template, 7, 6, "ng-template", null, 7, i0.ɵɵtemplateRefExtractor)(9, PersistentVolumeClaimFormComponent_aui_form_item_12_ng_template_9_Template, 2, 3, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor);
324
- i0.ɵɵelementEnd();
325
- } if (rf & 2) {
326
- const volumeModeTmpl_r21 = i0.ɵɵreference(10);
327
- const ctx_r1 = i0.ɵɵnextContext();
328
- i0.ɵɵadvance(2);
329
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 6, "storage.volume_mode"));
330
- i0.ɵɵadvance(2);
331
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.model.volumeMode);
332
- i0.ɵɵproperty("aclReadonlyField", ctx_r1.isFromSnapshot || !!ctx_r1.volumeMode)("aclReadonlyFieldTemplate", volumeModeTmpl_r21);
333
- i0.ɵɵadvance();
334
- i0.ɵɵproperty("ngForOf", ctx_r1.volumeModes);
335
- i0.ɵɵadvance();
336
- i0.ɵɵproperty("ngIf", !ctx_r1.volumeMode);
337
+ i0.ɵɵproperty("errors", storage_r20.errors)("errorsMapper", i0.ɵɵpureFunction1(12, _c0, i0.ɵɵpipeBind1(10, 10, ctx_r1.POSITIVE_INT_PATTERN.tip)));
337
338
  } }
338
339
  function PersistentVolumeClaimFormComponent_ng_container_14_aui_form_item_3_Template(rf, ctx) { if (rf & 1) {
339
340
  const _r22 = i0.ɵɵgetCurrentView();
@@ -532,8 +533,11 @@ export class PersistentVolumeClaimFormComponent extends createNestedFormControl(
532
533
  }
533
534
  storageclassChange(selectedOption) {
534
535
  this.selectedStorageSelectOption = selectedOption;
535
- this.setAccessModeToSupportValueIfNeed();
536
536
  this.setVolumeModeToSupportValueIfNeed();
537
+ this.setAccessModeToSupportValueIfNeed();
538
+ }
539
+ volumeModeChange(volumeMode) {
540
+ this.setAccessModeToSupportValueIfNeed(volumeMode);
537
541
  }
538
542
  displayFieldSupported(fieldName) {
539
543
  if (!this.displayFields?.length) {
@@ -541,9 +545,9 @@ export class PersistentVolumeClaimFormComponent extends createNestedFormControl(
541
545
  }
542
546
  return this.displayFields.includes(fieldName);
543
547
  }
544
- setAccessModeToSupportValueIfNeed() {
545
- if (this.storageCommonUtil.isAccessModeDisabled(this.model.accessModes, this.selectedStorageSelectOption)) {
546
- this.model.accessModes = this.accessModes.find(accessMode => !this.storageCommonUtil.isAccessModeDisabled(accessMode, this.selectedStorageSelectOption));
548
+ setAccessModeToSupportValueIfNeed(volumeMode = this.volumeMode) {
549
+ if (this.storageCommonUtil.isAccessModeDisabled(this.model.accessModes, this.selectedStorageSelectOption, volumeMode === 'Block')) {
550
+ this.model.accessModes = this.accessModes.find(accessMode => !this.storageCommonUtil.isAccessModeDisabled(accessMode, this.selectedStorageSelectOption, this.volumeMode === 'Block'));
547
551
  }
548
552
  }
549
553
  setVolumeModeToSupportValueIfNeed() {
@@ -563,7 +567,7 @@ export class PersistentVolumeClaimFormComponent extends createNestedFormControl(
563
567
  useExisting: forwardRef(() => PersistentVolumeClaimFormComponent),
564
568
  multi: true,
565
569
  },
566
- ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 15, vars: 29, consts: [["name", "ngModel"], ["createTypeTmpl", ""], ["storageClassName", "ngModel"], ["accessMode", "ngModel"], ["accessModeTip", ""], ["storage", "ngModel"], ["capacityTpl", ""], ["volumeModeTip", ""], ["volumeModeTmpl", ""], ["width", "large", 4, "ngIf"], [4, "ngIf"], ["width", "medium", 4, "ngIf"], ["width", "large"], ["auiFormItemLabel", ""], ["aui-input", "", "auiFormItemControl", "", "name", "name", "maxlength", "63", "required", "", 3, "ngModelChange", "ngModel", "placeholder", "pattern"], ["auiFormItemError", "", 3, "errors", "errorsMapper"], ["size", "medium", "name", "createMethod", 3, "ngModelChange", "ngModel", "aclReadonlyField", "aclReadonlyFieldTemplate"], [3, "value"], ["width", "medium"], ["auiFormItemControl", "", "required", "", "name", "storageClassName", 3, "ngModelChange", "storageClassChange", "storageClasses", "volumeSnapshotClasses", "isFromSnapshot", "ngModel"], ["auiFormItemError", "", 3, "errors"], ["auiFormItemControl", "", "required", "", "name", "accessModes", 3, "ngModelChange", "ngModel"], [3, "auiTooltip", "auiTooltipDisabled", "value", "disabled", 4, "ngFor", "ngForOf"], ["auiFormItemAddon", ""], ["icon", "question_circle", 1, "icon--help", 3, "auiTooltip", "auiTooltipPosition"], [3, "auiTooltip", "auiTooltipDisabled", "value", "disabled"], [1, "d-list"], ["aui-input", "", "type", "text", "name", "storage", "required", "", "auiFormItemControl", "", "required", "", 3, "ngModelChange", "pattern", "ngModel", "aclReadonlyField", "aclReadonlyFieldTemplate"], ["class", "tw-max-w-[60px] tw-ml-[-60px]", 3, "ngModel", "ngModelChange", 4, "ngIf"], [1, "tw-max-w-[60px]", "tw-ml-[-60px]", 3, "ngModelChange", "ngModel"], [3, "label", "value", 4, "ngFor", "ngForOf"], [3, "label", "value"], ["size", "medium", "name", "volumeMode", 3, "ngModelChange", "ngModel", "aclReadonlyField", "aclReadonlyFieldTemplate"], [3, "auiTooltip", "auiTooltipDisabled", "disabled", "value", 4, "ngFor", "ngForOf"], ["auiFormItemAddon", "", 4, "ngIf"], [3, "auiTooltip", "auiTooltipDisabled", "disabled", "value"], [3, "hint"], ["formGroupName", "metadata", 4, "ngIf"], ["formGroupName", "metadata"], ["auiFormItemControl", "", "name", "labels", 3, "ngModelChange", "ngModel", "resourceNameTranslated", "validator", "errorMapper"], ["auiFormItemControl", "", "name", "annotations", 3, "ngModelChange", "resourceNameTranslated", "ngModel", "validator", "errorMapper"], [3, "hidden"], ["auiFormItemControl", "", "name", "selector", 3, "ngModelChange", "ngModel"]], template: function PersistentVolumeClaimFormComponent_Template(rf, ctx) { if (rf & 1) {
570
+ ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 15, vars: 29, consts: [["name", "ngModel"], ["createTypeTmpl", ""], ["storageClassName", "ngModel"], ["volumeModeTip", ""], ["volumeModeTmpl", ""], ["accessMode", "ngModel"], ["accessModeTip", ""], ["storage", "ngModel"], ["capacityTpl", ""], ["width", "large", 4, "ngIf"], [4, "ngIf"], ["width", "medium", 4, "ngIf"], ["width", "large"], ["auiFormItemLabel", ""], ["aui-input", "", "auiFormItemControl", "", "name", "name", "maxlength", "63", "required", "", 3, "ngModelChange", "ngModel", "placeholder", "pattern"], ["auiFormItemError", "", 3, "errors", "errorsMapper"], ["size", "medium", "name", "createMethod", 3, "ngModelChange", "ngModel", "aclReadonlyField", "aclReadonlyFieldTemplate"], [3, "value"], ["width", "medium"], ["auiFormItemControl", "", "required", "", "name", "storageClassName", 3, "ngModelChange", "storageClassChange", "storageClasses", "volumeSnapshotClasses", "isFromSnapshot", "ngModel"], ["auiFormItemError", "", 3, "errors"], ["size", "medium", "name", "volumeMode", 3, "ngModelChange", "ngModel", "aclReadonlyField", "aclReadonlyFieldTemplate"], [3, "auiTooltip", "auiTooltipDisabled", "disabled", "value", 4, "ngFor", "ngForOf"], ["auiFormItemAddon", "", 4, "ngIf"], [3, "auiTooltip", "auiTooltipDisabled", "disabled", "value"], ["auiFormItemAddon", ""], ["icon", "question_circle", 1, "icon--help", 3, "auiTooltip", "auiTooltipPosition"], [1, "d-list"], ["auiFormItemControl", "", "name", "accessModes", 3, "ngModelChange", "ngModel"], [3, "auiTooltip", "auiTooltipDisabled", "value", "disabled", 4, "ngFor", "ngForOf"], [3, "auiTooltip", "auiTooltipDisabled", "value", "disabled"], ["aui-input", "", "type", "text", "name", "storage", "required", "", "auiFormItemControl", "", "required", "", 3, "ngModelChange", "pattern", "ngModel", "aclReadonlyField", "aclReadonlyFieldTemplate"], ["class", "tw-max-w-[60px] tw-ml-[-60px]", 3, "ngModel", "ngModelChange", 4, "ngIf"], [1, "tw-max-w-[60px]", "tw-ml-[-60px]", 3, "ngModelChange", "ngModel"], [3, "label", "value", 4, "ngFor", "ngForOf"], [3, "label", "value"], [3, "hint"], ["formGroupName", "metadata", 4, "ngIf"], ["formGroupName", "metadata"], ["auiFormItemControl", "", "name", "labels", 3, "ngModelChange", "ngModel", "resourceNameTranslated", "validator", "errorMapper"], ["auiFormItemControl", "", "name", "annotations", 3, "ngModelChange", "resourceNameTranslated", "ngModel", "validator", "errorMapper"], [3, "hidden"], ["auiFormItemControl", "", "name", "selector", 3, "ngModelChange", "ngModel"]], template: function PersistentVolumeClaimFormComponent_Template(rf, ctx) { if (rf & 1) {
567
571
  i0.ɵɵtemplate(0, PersistentVolumeClaimFormComponent_aui_form_item_0_Template, 9, 14, "aui-form-item", 9);
568
572
  i0.ɵɵpipe(1, "pure");
569
573
  i0.ɵɵtemplate(2, PersistentVolumeClaimFormComponent_ng_container_2_Template, 2, 1, "ng-container", 10);
@@ -572,11 +576,11 @@ export class PersistentVolumeClaimFormComponent extends createNestedFormControl(
572
576
  i0.ɵɵpipe(5, "pure");
573
577
  i0.ɵɵtemplate(6, PersistentVolumeClaimFormComponent_ng_container_6_Template, 2, 1, "ng-container", 10);
574
578
  i0.ɵɵpipe(7, "pure");
575
- i0.ɵɵtemplate(8, PersistentVolumeClaimFormComponent_aui_form_item_8_Template, 12, 8, "aui-form-item", 10);
579
+ i0.ɵɵtemplate(8, PersistentVolumeClaimFormComponent_aui_form_item_8_Template, 11, 8, "aui-form-item", 10);
576
580
  i0.ɵɵpipe(9, "pure");
577
- i0.ɵɵtemplate(10, PersistentVolumeClaimFormComponent_aui_form_item_10_Template, 11, 14, "aui-form-item", 11);
581
+ i0.ɵɵtemplate(10, PersistentVolumeClaimFormComponent_aui_form_item_10_Template, 12, 8, "aui-form-item", 10);
578
582
  i0.ɵɵpipe(11, "pure");
579
- i0.ɵɵtemplate(12, PersistentVolumeClaimFormComponent_aui_form_item_12_Template, 11, 8, "aui-form-item", 10);
583
+ i0.ɵɵtemplate(12, PersistentVolumeClaimFormComponent_aui_form_item_12_Template, 11, 14, "aui-form-item", 11);
580
584
  i0.ɵɵpipe(13, "pure");
581
585
  i0.ɵɵtemplate(14, PersistentVolumeClaimFormComponent_ng_container_14_Template, 9, 15, "ng-container", 10);
582
586
  } if (rf & 2) {
@@ -588,11 +592,11 @@ export class PersistentVolumeClaimFormComponent extends createNestedFormControl(
588
592
  i0.ɵɵadvance(2);
589
593
  i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(7, 17, "storageClassName", ctx.displayFieldSupported));
590
594
  i0.ɵɵadvance(2);
591
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(9, 20, "accessModes", ctx.displayFieldSupported));
595
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(9, 20, "volumeMode", ctx.displayFieldSupported));
592
596
  i0.ɵɵadvance(2);
593
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(11, 23, "storage", ctx.displayFieldSupported));
597
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(11, 23, "accessModes", ctx.displayFieldSupported));
594
598
  i0.ɵɵadvance(2);
595
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(13, 26, "volumeMode", ctx.displayFieldSupported));
599
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(13, 26, "storage", ctx.displayFieldSupported));
596
600
  i0.ɵɵadvance(2);
597
601
  i0.ɵɵproperty("ngIf", ctx.showAdvancedField);
598
602
  } }, dependencies: [NgIf,
@@ -651,7 +655,7 @@ __decorate([
651
655
  useExisting: forwardRef(() => PersistentVolumeClaimFormComponent),
652
656
  multi: true,
653
657
  },
654
- ], template: "<aui-form-item\n width=\"large\"\n *ngIf=\"'name' | pure: displayFieldSupported\"\n>\n <label auiFormItemLabel>{{ 'name' | translate }}</label>\n <input\n aui-input\n auiFormItemControl\n [(ngModel)]=\"model.name\"\n name=\"name\"\n #name=\"ngModel\"\n maxlength=\"63\"\n [placeholder]=\"resourceNameReg.tip | translate\"\n [pattern]=\"resourceNameReg.pattern\"\n required\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"name.errors\"\n [errorsMapper]=\"{\n pattern: resourceNameReg.tip | translate,\n }\"\n ></acl-errors-mapper>\n</aui-form-item>\n\n<ng-container *ngIf=\"'dataSource' | pure: displayFieldSupported\">\n <aui-form-item *ngIf=\"model.dataSource as dataSource\">\n <label auiFormItemLabel>{{ 'storage.data_source' | translate }}</label>\n {{ dataSource.name }}\n </aui-form-item>\n</ng-container>\n\n<aui-form-item *ngIf=\"'createType' | pure: displayFieldSupported\">\n <label auiFormItemLabel>{{ 'storage.create_method' | translate }}</label>\n <aui-radio-group\n size=\"medium\"\n [(ngModel)]=\"createMethod\"\n name=\"createMethod\"\n [aclReadonlyField]=\"isFromSnapshot || !!createType\"\n [aclReadonlyFieldTemplate]=\"createTypeTmpl\"\n (ngModelChange)=\"createMethodChange($event)\"\n >\n <aui-radio-button [value]=\"PvcStorageClassCreateType.DYNAMIC\">\n {{ 'storage.dynamic_create' | translate }}\n </aui-radio-button>\n <aui-radio-button [value]=\"PvcStorageClassCreateType.STATIC\">\n {{ 'storage.static_match' | translate }}\n </aui-radio-button>\n </aui-radio-group>\n <ng-template #createTypeTmpl>\n {{\n (createMethod === PvcStorageClassCreateType.DYNAMIC\n ? 'storage.dynamic_create'\n : 'storage.static_match'\n ) | translate\n }}\n </ng-template>\n</aui-form-item>\n\n<ng-container *ngIf=\"'storageClassName' | pure: displayFieldSupported\">\n <aui-form-item\n *ngIf=\"createMethod !== PvcStorageClassCreateType.STATIC\"\n width=\"medium\"\n >\n <label auiFormItemLabel>{{ 'storageclass' | translate }}</label>\n <acl-storageclass-select\n [storageClasses]=\"storageClassList$ | async\"\n [volumeSnapshotClasses]=\"volumeSnapshotClassList$ | async\"\n [isFromSnapshot]=\"isFromSnapshot\"\n auiFormItemControl\n required\n [(ngModel)]=\"model.storageClassName\"\n name=\"storageClassName\"\n #storageClassName=\"ngModel\"\n (storageClassChange)=\"storageclassChange($event)\"\n ></acl-storageclass-select>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"storageClassName.errors\"\n ></acl-errors-mapper>\n </aui-form-item>\n</ng-container>\n\n<aui-form-item *ngIf=\"'accessModes' | pure: displayFieldSupported\">\n <label auiFormItemLabel>{{ 'storage.access_mode' | translate }}</label>\n <aui-radio-group\n auiFormItemControl\n [(ngModel)]=\"model.accessModes\"\n required\n name=\"accessModes\"\n #accessMode=\"ngModel\"\n >\n <aui-radio-button\n *ngFor=\"let mode of accessModes\"\n [auiTooltip]=\"'storage.storage_forbid_select_access_mode' | translate\"\n [auiTooltipDisabled]=\"\n !(\n mode\n | pure\n : storageCommonUtil.isAccessModeDisabled\n : selectedStorageSelectOption\n )\n \"\n [value]=\"mode\"\n [disabled]=\"\n mode\n | pure\n : storageCommonUtil.isAccessModeDisabled\n : selectedStorageSelectOption\n \"\n >\n {{ 'storage.' + AccessModeTranslateKey[mode] | translate }}\n </aui-radio-button>\n </aui-radio-group>\n <div auiFormItemAddon>\n <aui-icon\n [auiTooltip]=\"accessModeTip\"\n [auiTooltipPosition]=\"'top center'\"\n icon=\"question_circle\"\n class=\"icon--help\"\n ></aui-icon>\n </div>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"accessMode.errors\"\n ></acl-errors-mapper>\n <ng-template #accessModeTip>\n <ul class=\"d-list\">\n <li>{{ 'storage.access_mode_rwo' | translate }}</li>\n <li>{{ 'storage.access_mode_rox' | translate }}</li>\n <li>{{ 'storage.access_mode_rwx' | translate }}</li>\n </ul>\n </ng-template>\n</aui-form-item>\n\n<aui-form-item\n width=\"medium\"\n *ngIf=\"'storage' | pure: displayFieldSupported\"\n>\n <label auiFormItemLabel>{{ 'storage.capacity' | translate }}</label>\n <input\n aui-input\n type=\"text\"\n [pattern]=\"POSITIVE_INT_PATTERN.pattern\"\n [(ngModel)]=\"model.storage\"\n name=\"storage\"\n #storage=\"ngModel\"\n required\n auiFormItemControl\n required\n [aclReadonlyField]=\"isFromSnapshot\"\n [aclReadonlyFieldTemplate]=\"capacityTpl\"\n />\n <aui-select\n *ngIf=\"!isFromSnapshot\"\n [(ngModel)]=\"unit\"\n class=\"tw-max-w-[60px] tw-ml-[-60px]\"\n >\n <aui-option\n *ngFor=\"let item of UNITS\"\n [label]=\"item\"\n [value]=\"item\"\n >\n {{ item }}\n </aui-option>\n </aui-select>\n <ng-template #capacityTpl> {{ model.storage }}Gi </ng-template>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"storage.errors\"\n [errorsMapper]=\"{\n pattern: POSITIVE_INT_PATTERN.tip | translate,\n }\"\n ></acl-errors-mapper>\n</aui-form-item>\n\n<aui-form-item *ngIf=\"'volumeMode' | pure: displayFieldSupported\">\n <label auiFormItemLabel>{{ 'storage.volume_mode' | translate }}</label>\n <aui-radio-group\n size=\"medium\"\n [(ngModel)]=\"model.volumeMode\"\n name=\"volumeMode\"\n [aclReadonlyField]=\"isFromSnapshot || !!volumeMode\"\n [aclReadonlyFieldTemplate]=\"volumeModeTmpl\"\n >\n <aui-radio-button\n *ngFor=\"let mode of volumeModes\"\n [auiTooltip]=\"'storage.storage_forbid_select_volume_mode' | translate\"\n [auiTooltipDisabled]=\"\n !(\n mode\n | pure\n : storageCommonUtil.isVolumeModeDisabled\n : selectedStorageSelectOption\n )\n \"\n [disabled]=\"\n mode\n | pure\n : storageCommonUtil.isVolumeModeDisabled\n : selectedStorageSelectOption\n \"\n [value]=\"mode\"\n >\n {{ 'storage.' + VolumeModeTranslateKey[mode] | translate }}\n </aui-radio-button>\n </aui-radio-group>\n <div\n auiFormItemAddon\n *ngIf=\"!volumeMode\"\n >\n <aui-icon\n [auiTooltip]=\"volumeModeTip\"\n [auiTooltipPosition]=\"'top center'\"\n icon=\"question_circle\"\n class=\"icon--help\"\n ></aui-icon>\n </div>\n <ng-template #volumeModeTip>\n <ul class=\"d-list\">\n <li>{{ 'storage.volume_mode_file_system_hint' | translate }}</li>\n <li>{{ 'storage.volume_mode_block_device_hint' | translate }}</li>\n </ul>\n </ng-template>\n <ng-template #volumeModeTmpl>\n {{\n (model.volumeMode === 'Filesystem'\n ? 'storage.file_system'\n : 'storage.block_device'\n ) | translate\n }}\n </ng-template>\n</aui-form-item>\n\n<ng-container *ngIf=\"showAdvancedField\">\n <acl-foldable-block hint=\"{{ 'storage.advanced' | translate }}\">\n <aui-form-item\n formGroupName=\"metadata\"\n *ngIf=\"'labels' | pure: displayFieldSupported\"\n >\n <label auiFormItemLabel>{{ 'label' | translate }}</label>\n <acl-key-value-form-table\n auiFormItemControl\n [(ngModel)]=\"model.labels\"\n name=\"labels\"\n [resourceNameTranslated]=\"'storage.labels' | translate | lowercase\"\n [validator]=\"labelValidator\"\n [errorMapper]=\"labelErrorMapper$ | async\"\n ></acl-key-value-form-table>\n </aui-form-item>\n <aui-form-item\n formGroupName=\"metadata\"\n *ngIf=\"'annotations' | pure: displayFieldSupported\"\n >\n <label auiFormItemLabel>{{ 'storage.k8s_annotation' | translate }}</label>\n <acl-key-value-form-table\n auiFormItemControl\n [resourceNameTranslated]=\"\n 'storage.k8s_annotation' | translate | lowercase\n \"\n [(ngModel)]=\"model.annotations\"\n name=\"annotations\"\n [validator]=\"annotationValidator\"\n [errorMapper]=\"annotationErrorMapper$ | async\"\n ></acl-key-value-form-table>\n </aui-form-item>\n <ng-container *ngIf=\"'selector' | pure: displayFieldSupported\">\n <aui-form-item\n [hidden]=\"createMethod === PvcStorageClassCreateType.DYNAMIC\"\n >\n <label auiFormItemLabel>{{ 'storage.selector' | translate }}</label>\n <acl-key-value-form-table\n auiFormItemControl\n [(ngModel)]=\"model.selector\"\n name=\"selector\"\n ></acl-key-value-form-table>\n </aui-form-item>\n </ng-container>\n </acl-foldable-block>\n</ng-container>\n" }]
658
+ ], template: "<aui-form-item\n width=\"large\"\n *ngIf=\"'name' | pure: displayFieldSupported\"\n>\n <label auiFormItemLabel>{{ 'name' | translate }}</label>\n <input\n aui-input\n auiFormItemControl\n [(ngModel)]=\"model.name\"\n name=\"name\"\n #name=\"ngModel\"\n maxlength=\"63\"\n [placeholder]=\"resourceNameReg.tip | translate\"\n [pattern]=\"resourceNameReg.pattern\"\n required\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"name.errors\"\n [errorsMapper]=\"{\n pattern: resourceNameReg.tip | translate,\n }\"\n ></acl-errors-mapper>\n</aui-form-item>\n\n<ng-container *ngIf=\"'dataSource' | pure: displayFieldSupported\">\n <aui-form-item *ngIf=\"model.dataSource as dataSource\">\n <label auiFormItemLabel>{{ 'storage.data_source' | translate }}</label>\n {{ dataSource.name }}\n </aui-form-item>\n</ng-container>\n\n<aui-form-item *ngIf=\"'createType' | pure: displayFieldSupported\">\n <label auiFormItemLabel>{{ 'storage.create_method' | translate }}</label>\n <aui-radio-group\n size=\"medium\"\n [(ngModel)]=\"createMethod\"\n name=\"createMethod\"\n [aclReadonlyField]=\"isFromSnapshot || !!createType\"\n [aclReadonlyFieldTemplate]=\"createTypeTmpl\"\n (ngModelChange)=\"createMethodChange($event)\"\n >\n <aui-radio-button [value]=\"PvcStorageClassCreateType.DYNAMIC\">\n {{ 'storage.dynamic_create' | translate }}\n </aui-radio-button>\n <aui-radio-button [value]=\"PvcStorageClassCreateType.STATIC\">\n {{ 'storage.static_match' | translate }}\n </aui-radio-button>\n </aui-radio-group>\n <ng-template #createTypeTmpl>\n {{\n (createMethod === PvcStorageClassCreateType.DYNAMIC\n ? 'storage.dynamic_create'\n : 'storage.static_match'\n ) | translate\n }}\n </ng-template>\n</aui-form-item>\n\n<ng-container *ngIf=\"'storageClassName' | pure: displayFieldSupported\">\n <aui-form-item\n *ngIf=\"createMethod !== PvcStorageClassCreateType.STATIC\"\n width=\"medium\"\n >\n <label auiFormItemLabel>{{ 'storageclass' | translate }}</label>\n <acl-storageclass-select\n [storageClasses]=\"storageClassList$ | async\"\n [volumeSnapshotClasses]=\"volumeSnapshotClassList$ | async\"\n [isFromSnapshot]=\"isFromSnapshot\"\n auiFormItemControl\n required\n [(ngModel)]=\"model.storageClassName\"\n name=\"storageClassName\"\n #storageClassName=\"ngModel\"\n (storageClassChange)=\"storageclassChange($event)\"\n ></acl-storageclass-select>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"storageClassName.errors\"\n ></acl-errors-mapper>\n </aui-form-item>\n</ng-container>\n\n<aui-form-item *ngIf=\"'volumeMode' | pure: displayFieldSupported\">\n <label auiFormItemLabel>{{ 'storage.volume_mode' | translate }}</label>\n <aui-radio-group\n size=\"medium\"\n [(ngModel)]=\"model.volumeMode\"\n name=\"volumeMode\"\n [aclReadonlyField]=\"isFromSnapshot || !!volumeMode\"\n [aclReadonlyFieldTemplate]=\"volumeModeTmpl\"\n (ngModelChange)=\"volumeModeChange($event)\"\n >\n <aui-radio-button\n *ngFor=\"let mode of volumeModes\"\n [auiTooltip]=\"'storage.storage_forbid_select_volume_mode' | translate\"\n [auiTooltipDisabled]=\"\n !(\n mode\n | pure\n : storageCommonUtil.isVolumeModeDisabled\n : selectedStorageSelectOption\n )\n \"\n [disabled]=\"\n mode\n | pure\n : storageCommonUtil.isVolumeModeDisabled\n : selectedStorageSelectOption\n \"\n [value]=\"mode\"\n >\n {{ 'storage.' + VolumeModeTranslateKey[mode] | translate }}\n </aui-radio-button>\n </aui-radio-group>\n <div\n auiFormItemAddon\n *ngIf=\"!volumeMode\"\n >\n <aui-icon\n [auiTooltip]=\"volumeModeTip\"\n [auiTooltipPosition]=\"'top center'\"\n icon=\"question_circle\"\n class=\"icon--help\"\n ></aui-icon>\n </div>\n <ng-template #volumeModeTip>\n <ul class=\"d-list\">\n <li>{{ 'storage.volume_mode_file_system_hint' | translate }}</li>\n <li>{{ 'storage.volume_mode_block_device_hint' | translate }}</li>\n </ul>\n </ng-template>\n <ng-template #volumeModeTmpl>\n {{\n (model.volumeMode === 'Filesystem'\n ? 'storage.file_system'\n : 'storage.block_device'\n ) | translate\n }}\n </ng-template>\n</aui-form-item>\n\n<aui-form-item *ngIf=\"'accessModes' | pure: displayFieldSupported\">\n <label auiFormItemLabel>{{ 'storage.access_mode' | translate }}</label>\n <aui-radio-group\n auiFormItemControl\n [(ngModel)]=\"model.accessModes\"\n name=\"accessModes\"\n #accessMode=\"ngModel\"\n >\n <aui-radio-button\n *ngFor=\"let mode of accessModes\"\n [auiTooltip]=\"'storage.storage_forbid_select_access_mode' | translate\"\n [auiTooltipDisabled]=\"\n !(\n mode\n | pure\n : storageCommonUtil.isAccessModeDisabled\n : selectedStorageSelectOption\n : model.volumeMode === 'Block'\n )\n \"\n [value]=\"mode\"\n [disabled]=\"\n mode\n | pure\n : storageCommonUtil.isAccessModeDisabled\n : selectedStorageSelectOption\n : model.volumeMode === 'Block'\n \"\n >\n {{ 'storage.' + AccessModeTranslateKey[mode] | translate }}\n </aui-radio-button>\n </aui-radio-group>\n <div auiFormItemAddon>\n <aui-icon\n [auiTooltip]=\"accessModeTip\"\n [auiTooltipPosition]=\"'top center'\"\n icon=\"question_circle\"\n class=\"icon--help\"\n ></aui-icon>\n </div>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"accessMode.errors\"\n ></acl-errors-mapper>\n <ng-template #accessModeTip>\n <ul class=\"d-list\">\n <li>{{ 'storage.access_mode_rwo' | translate }}</li>\n <li>{{ 'storage.access_mode_rox' | translate }}</li>\n <li>{{ 'storage.access_mode_rwx' | translate }}</li>\n </ul>\n </ng-template>\n</aui-form-item>\n\n<aui-form-item\n width=\"medium\"\n *ngIf=\"'storage' | pure: displayFieldSupported\"\n>\n <label auiFormItemLabel>{{ 'storage.capacity' | translate }}</label>\n <input\n aui-input\n type=\"text\"\n [pattern]=\"POSITIVE_INT_PATTERN.pattern\"\n [(ngModel)]=\"model.storage\"\n name=\"storage\"\n #storage=\"ngModel\"\n required\n auiFormItemControl\n required\n [aclReadonlyField]=\"isFromSnapshot\"\n [aclReadonlyFieldTemplate]=\"capacityTpl\"\n />\n <aui-select\n *ngIf=\"!isFromSnapshot\"\n [(ngModel)]=\"unit\"\n class=\"tw-max-w-[60px] tw-ml-[-60px]\"\n >\n <aui-option\n *ngFor=\"let item of UNITS\"\n [label]=\"item\"\n [value]=\"item\"\n >\n {{ item }}\n </aui-option>\n </aui-select>\n <ng-template #capacityTpl> {{ model.storage }}Gi </ng-template>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"storage.errors\"\n [errorsMapper]=\"{\n pattern: POSITIVE_INT_PATTERN.tip | translate,\n }\"\n ></acl-errors-mapper>\n</aui-form-item>\n\n<ng-container *ngIf=\"showAdvancedField\">\n <acl-foldable-block hint=\"{{ 'storage.advanced' | translate }}\">\n <aui-form-item\n formGroupName=\"metadata\"\n *ngIf=\"'labels' | pure: displayFieldSupported\"\n >\n <label auiFormItemLabel>{{ 'label' | translate }}</label>\n <acl-key-value-form-table\n auiFormItemControl\n [(ngModel)]=\"model.labels\"\n name=\"labels\"\n [resourceNameTranslated]=\"'storage.labels' | translate | lowercase\"\n [validator]=\"labelValidator\"\n [errorMapper]=\"labelErrorMapper$ | async\"\n ></acl-key-value-form-table>\n </aui-form-item>\n <aui-form-item\n formGroupName=\"metadata\"\n *ngIf=\"'annotations' | pure: displayFieldSupported\"\n >\n <label auiFormItemLabel>{{ 'storage.k8s_annotation' | translate }}</label>\n <acl-key-value-form-table\n auiFormItemControl\n [resourceNameTranslated]=\"\n 'storage.k8s_annotation' | translate | lowercase\n \"\n [(ngModel)]=\"model.annotations\"\n name=\"annotations\"\n [validator]=\"annotationValidator\"\n [errorMapper]=\"annotationErrorMapper$ | async\"\n ></acl-key-value-form-table>\n </aui-form-item>\n <ng-container *ngIf=\"'selector' | pure: displayFieldSupported\">\n <aui-form-item\n [hidden]=\"createMethod === PvcStorageClassCreateType.DYNAMIC\"\n >\n <label auiFormItemLabel>{{ 'storage.selector' | translate }}</label>\n <acl-key-value-form-table\n auiFormItemControl\n [(ngModel)]=\"model.selector\"\n name=\"selector\"\n ></acl-key-value-form-table>\n </aui-form-item>\n </ng-container>\n </acl-foldable-block>\n</ng-container>\n" }]
655
659
  }], () => [{ type: i1.StorageCommonUtilService }, { type: i2.TranslateService }, { type: i2.K8sApiService }], { baseParams: [{
656
660
  type: Input,
657
661
  args: [{ required: true }]
@@ -667,4 +671,4 @@ __decorate([
667
671
  type: Input
668
672
  }], displayFieldSupported: [] }); })();
669
673
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PersistentVolumeClaimFormComponent, { className: "PersistentVolumeClaimFormComponent", filePath: "lib/components/pvc-form/component.ts", lineNumber: 128 }); })();
670
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zdG9yYWdlL3NyYy9saWIvY29tcG9uZW50cy9wdmMtZm9ybS9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JhZ2Uvc3JjL2xpYi9jb21wb25lbnRzL3B2Yy1mb3JtL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxFQUNaLGFBQWEsR0FDZCxNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBRUwsV0FBVyxFQUNYLG9DQUFvQyxFQUNwQyw4QkFBOEIsRUFDOUIsK0JBQStCLEVBQy9CLHlCQUF5QixFQUN6QixVQUFVLEVBRVYsc0JBQXNCLEVBQ3RCLDBCQUEwQixFQUcxQix1QkFBdUIsRUFDdkIsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixhQUFhLEVBQ2IsY0FBYyxFQUNkLFNBQVMsRUFDVCxXQUFXLEVBRVgsVUFBVSxFQUVWLElBQUksRUFFSixnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLFFBQVEsRUFDUixvQkFBb0IsR0FDckIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENB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LEVBQUUsSUFBSTtxQkFDWjtvQkFDRDt3QkFDRSxPQUFPLEVBQUUsYUFBYTt3QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUNBQW1DLENBQUM7d0JBQ2pFLEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO29IQVNELFVBQVU7a0JBRFQsS0FBSzttQkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFJekIsV0FBVyxNQUdYLGNBQWM7a0JBRGIsS0FBSztZQUlOLGVBQWUsTUFJZixjQUFjO2tCQURiLEtBQUs7WUFLTixVQUFVO2tCQURULEtBQUs7WUFLTixVQUFVO2tCQURULEtBQUs7WUFLTixhQUFhO2tCQURaLEtBQUs7WUEySE4scUJBQXFCO2tGQTFKVixrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBGb3JtTW9kdWxlLFxuICBJY29uTW9kdWxlLFxuICBJbnB1dE1vZHVsZSxcbiAgUmFkaW9Nb2R1bGUsXG4gIFNlbGVjdE1vZHVsZSxcbiAgVG9vbHRpcE1vZHVsZSxcbn0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQge1xuICBBY2Nlc3NNb2RlLFxuICBBY2Nlc3NNb2RlcyxcbiAgZ2V0SzhzUmVzb3VyY2VBbm5vdGF0aW9uRXJyb3JNYXBwZXIkLFxuICBrOHNSZXNvdXJjZUFubm90YXRpb25WYWxpZGF0b3IsXG4gIGdldEs4c1Jlc291cmNlTGFiZWxFcnJvck1hcHBlciQsXG4gIGs4c1Jlc291cmNlTGFiZWxWYWxpZGF0b3IsXG4gIFZvbHVtZU1vZGUsXG4gIExhYmVsU2VsZWN0b3IsXG4gIEZvbGRhYmxlQmxvY2tDb21wb25lbnQsXG4gIEtleVZhbHVlRm9ybVRhYmxlQ29tcG9uZW50LFxuICBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0sXG4gIFBlcnNpc3RlbnRWb2x1bWVDbGFpbURhdGFTb3VyY2UsXG4gIGNyZWF0ZU5lc3RlZEZvcm1Db250cm9sLFxuICBkYXRhVHJhbnNmZXIsXG4gIFJlYWRvbmx5RmllbGREaXJlY3RpdmUsXG4gIEs4U19SRVNPVVJDRV9OQU1FX0JBU0UsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXG4gIE9ic2VydmFibGVJbnB1dCxcbiAgSzhzQXBpU2VydmljZSxcbiAgUkVTT1VSQ0VfVFlQRVMsXG4gIHNraXBFcnJvcixcbiAgVm9sdW1lTW9kZXMsXG4gIFZhbHVlT2YsXG4gIHB1Ymxpc2hSZWYsXG4gIFN0cmluZ01hcCxcbiAgYmluZCxcbiAgV29ya3NwYWNlUGFyYW1zLFxuICBUUkFOU0xBVEVfTU9EVUxFLFxuICBFUlJPUlNfTUFQUEVSX01PRFVMRSxcbiAgUHVyZVBpcGUsXG4gIFBPU0lUSVZFX0lOVF9QQVRURVJOLFxufSBmcm9tICdAYWxhdWRhLWZlL2NvbW1vbic7XG5pbXBvcnQgeyBBc3luY1BpcGUsIExvd2VyQ2FzZVBpcGUsIE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvbXBvc2UgfSBmcm9tICdyYW1kYSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBtYXAsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgU3RvcmFnZVNlbGVjdE9wdGlvbixcbiAgU3RvcmFnZUNvbW1vblV0aWxTZXJ2aWNlLFxufSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21tb24tdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JhZ2VDbGFzcywgVm9sdW1lU25hcHNob3RDbGFzcyB9IGZyb20gJy4uLy4uL3R5cGVzL2s4cyc7XG5pbXBvcnQge1xuICBBY2Nlc3NNb2RlVHJhbnNsYXRlS2V5LFxuICBWb2x1bWVNb2RlVHJhbnNsYXRlS2V5LFxufSBmcm9tICcuLi8uLi91dGlscy9jb25zdGFudHMnO1xuaW1wb3J0IHsgYnVpbGRQdmNSZXNvdXJjZSB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgU3RvcmFnZUNsYXNzU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vc3RvcmFnZWNsYXNzLXNlbGVjdC9jb21wb25lbnQnO1xuXG5jb25zdCBQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlID0ge1xuICBEWU5BTUlDOiAnZHluYW1pYycsXG4gIFNUQVRJQzogJ3N0YXRpYycsXG59IGFzIGNvbnN0O1xuXG50eXBlIFB2Y1N0b3JhZ2VDbGFzc0NyZWF0ZVR5cGUgPSBWYWx1ZU9mPHR5cGVvZiBQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlPjtcblxuaW50ZXJmYWNlIFBlcnNpc3RlbnRWb2x1bWVGb3JtTW9kZWwge1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhYmVsczogU3RyaW5nTWFwO1xuICBhbm5vdGF0aW9uczogU3RyaW5nTWFwO1xuICAvLyBudWxsIOihqOekuuS9v+eUqOm7mOiupCBzY1xuICAvLyBcIlwiIOaIluS4jeWGmeivpeWtl+auteihqOekuuS4jeiuvue9ruWtmOWCqOexu1xuICBzdG9yYWdlQ2xhc3NOYW1lOiBzdHJpbmc7XG4gIGFjY2Vzc01vZGVzOiBBY2Nlc3NNb2RlO1xuICB2b2x1bWVNb2RlOiBWb2x1bWVNb2RlO1xuICBzdG9yYWdlOiBzdHJpbmc7XG4gIGRhdGFTb3VyY2U/OiBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW1EYXRhU291cmNlO1xuICBzZWxlY3RvcjogTGFiZWxTZWxlY3Rvcjtcbn1cblxudHlwZSBEaXNwbGF5RmllbGQgPSBrZXlvZiBQZXJzaXN0ZW50Vm9sdW1lRm9ybU1vZGVsIHwgJ2NyZWF0ZVR5cGUnO1xuXG5jb25zdCBVTklUUyA9IFsnR2knLCAnVGknXSBhcyBjb25zdDtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnYWNsLXB2Yy1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZS5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIE5nRm9yLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEZvcm1Nb2R1bGUsXG4gICAgUmFkaW9Nb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgU2VsZWN0TW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBQdXJlUGlwZSxcbiAgICBBc3luY1BpcGUsXG4gICAgTG93ZXJDYXNlUGlwZSxcbiAgICBSZWFkb25seUZpZWxkRGlyZWN0aXZlLFxuICAgIEZvbGRhYmxlQmxvY2tDb21wb25lbnQsXG4gICAgU3RvcmFnZUNsYXNzU2VsZWN0Q29tcG9uZW50LFxuICAgIEtleVZhbHVlRm9ybVRhYmxlQ29tcG9uZW50LFxuICAgIFRSQU5TTEFURV9NT0RVTEUsXG4gICAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGVyc2lzdGVudFZvbHVtZUNsYWltRm9ybUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW1Gb3JtQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFBlcnNpc3RlbnRWb2x1bWVDbGFpbUZvcm1Db21wb25lbnQgZXh0ZW5kcyBjcmVhdGVOZXN0ZWRGb3JtQ29udHJvbDxcbiAgUGVyc2lzdGVudFZvbHVtZUNsYWltLFxuICBQZXJzaXN0ZW50Vm9sdW1lRm9ybU1vZGVsXG4+KHtcbiAgYXV0b0VtaXRDaGFuZ2U6IHRydWUsXG59KSB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGJhc2VQYXJhbXM6IFdvcmtzcGFjZVBhcmFtcztcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgYmFzZVBhcmFtcyQhOiBPYnNlcnZhYmxlPFdvcmtzcGFjZVBhcmFtcz47XG5cbiAgQElucHV0KClcbiAgc3RvcmFnZUNsYXNzZXM6IFN0b3JhZ2VDbGFzc1tdO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICBzdG9yYWdlQ2xhc3NlcyQhOiBPYnNlcnZhYmxlPFN0b3JhZ2VDbGFzc1tdPjtcblxuICAvLyDlv6vnhafnsbsgcHZjIOWIm+W7ulxuICBASW5wdXQoKVxuICBpc0Zyb21TbmFwc2hvdDogYm9vbGVhbjtcblxuICAvLyDlpoLmnpzkvKDlhaXnm7jlupTnmoQgY3JlYXRlVHlwZSDooajnpLrlm7rlrprlhbblgLxcbiAgQElucHV0KClcbiAgY3JlYXRlVHlwZTogUHZjU3RvcmFnZUNsYXNzQ3JlYXRlVHlwZTtcblxuICAvLyDlpoLmnpzkvKDlhaXnm7jlupTnmoQgdm9sdW1lTW9kZSDooajnpLrlm7rlrprlhbblgLxcbiAgQElucHV0KClcbiAgdm9sdW1lTW9kZTogVm9sdW1lTW9kZTtcblxuICAvLyDlpoLmnpzkvKDlhaXnm7jlupTnmoQgZGlzcGxheUZpZWxkIOihqOekuuWPquS8muWxleekuuWvueW6lOeahCBjb250cm9sXG4gIEBJbnB1dCgpXG4gIGRpc3BsYXlGaWVsZHM6IERpc3BsYXlGaWVsZFtdO1xuXG4gIGdldCBzaG93QWR2YW5jZWRGaWVsZCgpIHtcbiAgICBpZiAoIXRoaXMuZGlzcGxheUZpZWxkcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5RmllbGRzPy5zb21lKGZpZWxkID0+XG4gICAgICBbJ2xhYmVscycsICdhbm5vdGF0aW9ucycsICdzZWxlY3RvciddLmluY2x1ZGVzKGZpZWxkKSxcbiAgICApO1xuICB9XG5cbiAgYWNjZXNzTW9kZXMgPSBBY2Nlc3NNb2RlcztcbiAgdm9sdW1lTW9kZXMgPSBWb2x1bWVNb2RlcztcbiAgUE9TSVRJVkVfSU5UX1BBVFRFUk4gPSBQT1NJVElWRV9JTlRfUEFUVEVSTjtcblxuICBvdmVycmlkZSBtb2RlbCA9IHt9IGFzIFBlcnNpc3RlbnRWb2x1bWVGb3JtTW9kZWw7XG5cbiAgcmVzb3VyY2VOYW1lUmVnID0gSzhTX1JFU09VUkNFX05BTUVfQkFTRTtcbiAgbGFiZWxWYWxpZGF0b3IgPSBrOHNSZXNvdXJjZUxhYmVsVmFsaWRhdG9yO1xuICBBY2Nlc3NNb2RlVHJhbnNsYXRlS2V5ID0gQWNjZXNzTW9kZVRyYW5zbGF0ZUtleTtcbiAgVm9sdW1lTW9kZVRyYW5zbGF0ZUtleSA9IFZvbHVtZU1vZGVUcmFuc2xhdGVLZXk7XG5cbiAgbGFiZWxFcnJvck1hcHBlciQgPSBnZXRLOHNSZXNvdXJjZUxhYmVsRXJyb3JNYXBwZXIkKHRoaXMudHJhbnNsYXRlKTtcbiAgYW5ub3RhdGlvblZhbGlkYXRvciA9IGs4c1Jlc291cmNlQW5ub3RhdGlvblZhbGlkYXRvcjtcbiAgYW5ub3RhdGlvbkVycm9yTWFwcGVyJCA9IGdldEs4c1Jlc291cmNlQW5ub3RhdGlvbkVycm9yTWFwcGVyJCh0aGlzLnRyYW5zbGF0ZSk7XG5cbiAgY3JlYXRlTWV0aG9kOiBQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlO1xuICBQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlID0gUHZjU3RvcmFnZUNsYXNzQ3JlYXRlVHlwZTtcbiAgc2VsZWN0ZWRTdG9yYWdlU2VsZWN0T3B0aW9uOiBTdG9yYWdlU2VsZWN0T3B0aW9uO1xuICBVTklUUyA9IFVOSVRTO1xuICB1bml0ID0gJ0dpJztcblxuICBzdG9yYWdlQ2xhc3NMaXN0JCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuYmFzZVBhcmFtcyQsXG4gICAgdGhpcy5zdG9yYWdlQ2xhc3NlcyQsXG4gIF0pLnBpcGUoXG4gICAgc3dpdGNoTWFwKChbeyBjbHVzdGVyIH0sIHN0b3JhZ2VDbGFzc2VzXSkgPT4ge1xuICAgICAgaWYgKHN0b3JhZ2VDbGFzc2VzKSB7XG4gICAgICAgIHJldHVybiBvZihzdG9yYWdlQ2xhc3Nlcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5rOHNBcGlcbiAgICAgICAgLmdldFJlc291cmNlTGlzdDxTdG9yYWdlQ2xhc3M+KHtcbiAgICAgICAgICB0eXBlOiBSRVNPVVJDRV9UWVBFUy5TVE9SQUdFX0NMQVNTLFxuICAgICAgICAgIGNsdXN0ZXIsXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICAgIGxpbWl0OiAnMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUobWFwKHJlcyA9PiByZXM/Lml0ZW1zKSk7XG4gICAgfSksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIHZvbHVtZVNuYXBzaG90Q2xhc3NMaXN0JCA9IHRoaXMuYmFzZVBhcmFtcyQucGlwZShcbiAgICBzd2l0Y2hNYXAoYmFzZVBhcmFtcyA9PlxuICAgICAgdGhpcy5rOHNBcGlcbiAgICAgICAgLmdldFJlc291cmNlTGlzdDxWb2x1bWVTbmFwc2hvdENsYXNzPih7XG4gICAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuVk9MVU1FX1NOQVBTSE9UX0NMQVNTLFxuICAgICAgICAgIGNsdXN0ZXI6IGJhc2VQYXJhbXMuY2x1c3RlcixcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKHIgPT4gci5pdGVtcyksXG4gICAgICAgICAgc2tpcEVycm9yKFtdIGFzIFZvbHVtZVNuYXBzaG90Q2xhc3NbXSksXG4gICAgICAgICksXG4gICAgKSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG5cbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogUGVyc2lzdGVudFZvbHVtZUNsYWltKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbCA9IHRoaXMudmFsdWVJbihcbiAgICAgIHZhbHVlID8/XG4gICAgICAgIGJ1aWxkUHZjUmVzb3VyY2Uoe1xuICAgICAgICAgIG5hbWVzcGFjZTogdGhpcy5iYXNlUGFyYW1zLm5hbWVzcGFjZSxcbiAgICAgICAgICB2b2x1bWVNb2RlOiB0aGlzLnZvbHVtZU1vZGUsXG4gICAgICAgIH0pLFxuICAgICk7XG4gICAgaWYgKHRoaXMuY3JlYXRlVHlwZSkge1xuICAgICAgdGhpcy5jcmVhdGVNZXRob2QgPSB0aGlzLmNyZWF0ZVR5cGU7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHN0b3JhZ2VDb21tb25VdGlsOiBTdG9yYWdlQ29tbW9uVXRpbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNBcGk6IEs4c0FwaVNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBjb25zdCBbdG9Nb2RlbCwgdG9SZXNvdXJjZV0gPSBkYXRhVHJhbnNmZXI8XG4gICAgICBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0sXG4gICAgICBQZXJzaXN0ZW50Vm9sdW1lRm9ybU1vZGVsXG4gICAgPih7XG4gICAgICBuYW1lOiAnbWV0YWRhdGEubmFtZScsXG4gICAgICBsYWJlbHM6ICdtZXRhZGF0YS5sYWJlbHMnLFxuICAgICAgYW5ub3RhdGlvbnM6ICdtZXRhZGF0YS5hbm5vdGF0aW9ucycsXG4gICAgICBzdG9yYWdlQ2xhc3NOYW1lOiAnc3BlYy5zdG9yYWdlQ2xhc3NOYW1lJyxcbiAgICAgIGFjY2Vzc01vZGVzOiBbJ3NwZWMnLCAnYWNjZXNzTW9kZXMnLCAwXSxcbiAgICAgIHZvbHVtZU1vZGU6ICdzcGVjLnZvbHVtZU1vZGUnLFxuICAgICAgc3RvcmFnZTogJ3NwZWMucmVzb3VyY2VzLnJlcXVlc3RzLnN0b3JhZ2UnLFxuICAgICAgZGF0YVNvdXJjZTogJ3NwZWMuZGF0YVNvdXJjZScsXG4gICAgICBzZWxlY3RvcjogJ3NwZWMuc2VsZWN0b3IubWF0Y2hMYWJlbHMnLFxuICAgIH0pO1xuXG4gICAgdGhpcy52YWx1ZUluID0gY29tcG9zZSh0b01vZGVsLCB0aGlzLmFkYXB0UmVzb3VyY2VNb2RlbCk7XG4gICAgdGhpcy5tb2RlbE91dCA9IGNvbXBvc2UodGhpcy5vdmVycmlkZVJlc291cmNlLCB0b1Jlc291cmNlKTtcbiAgfVxuXG4gIGNyZWF0ZU1ldGhvZENoYW5nZShjcmVhdGVUeXBlOiBQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlKSB7XG4gICAgLy8g6Z2Z5oCB5Yy56YWN5LiN6ZyA6KaB6ZmQ5Yi26K6/6Zeu5qih5byPXG4gICAgaWYgKGNyZWF0ZVR5cGUgPT09ICdzdGF0aWMnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkU3RvcmFnZVNlbGVjdE9wdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgc3RvcmFnZWNsYXNzQ2hhbmdlKHNlbGVjdGVkT3B0aW9uOiBTdG9yYWdlU2VsZWN0T3B0aW9uKSB7XG4gICAgdGhpcy5zZWxlY3RlZFN0b3JhZ2VTZWxlY3RPcHRpb24gPSBzZWxlY3RlZE9wdGlvbjtcbiAgICB0aGlzLnNldEFjY2Vzc01vZGVUb1N1cHBvcnRWYWx1ZUlmTmVlZCgpO1xuICAgIHRoaXMuc2V0Vm9sdW1lTW9kZVRvU3VwcG9ydFZhbHVlSWZOZWVkKCk7XG4gIH1cblxuICBAYmluZFxuICBkaXNwbGF5RmllbGRTdXBwb3J0ZWQoZmllbGROYW1lOiBEaXNwbGF5RmllbGQpIHtcbiAgICBpZiAoIXRoaXMuZGlzcGxheUZpZWxkcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5RmllbGRzLmluY2x1ZGVzKGZpZWxkTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIHNldEFjY2Vzc01vZGVUb1N1cHBvcnRWYWx1ZUlmTmVlZCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnN0b3JhZ2VDb21tb25VdGlsLmlzQWNjZXNzTW9kZURpc2FibGVkKFxuICAgICAgICB0aGlzLm1vZGVsLmFjY2Vzc01vZGVzLFxuICAgICAgICB0aGlzLnNlbGVjdGVkU3RvcmFnZVNlbGVjdE9wdGlvbixcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMubW9kZWwuYWNjZXNzTW9kZXMgPSB0aGlzLmFjY2Vzc01vZGVzLmZpbmQoXG4gICAgICAgIGFjY2Vzc01vZGUgPT5cbiAgICAgICAgICAhdGhpcy5zdG9yYWdlQ29tbW9uVXRpbC5pc0FjY2Vzc01vZGVEaXNhYmxlZChcbiAgICAgICAgICAgIGFjY2Vzc01vZGUsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3RvcmFnZVNlbGVjdE9wdGlvbixcbiAgICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFZvbHVtZU1vZGVUb1N1cHBvcnRWYWx1ZUlmTmVlZCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnN0b3JhZ2VDb21tb25VdGlsLmlzVm9sdW1lTW9kZURpc2FibGVkKFxuICAgICAgICB0aGlzLm1vZGVsLnZvbHVtZU1vZGUsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdG9yYWdlU2VsZWN0T3B0aW9uLFxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhpcy5tb2RlbC52b2x1bWVNb2RlID0gdGhpcy52b2x1bWVNb2Rlcy5maW5kKFxuICAgICAgICB2b2x1bWVNb2RlID0+XG4gICAgICAgICAgIXRoaXMuc3RvcmFnZUNvbW1vblV0aWwuaXNWb2x1bWVNb2RlRGlzYWJsZWQoXG4gICAgICAgICAgICB2b2x1bWVNb2RlLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFN0b3JhZ2VTZWxlY3RPcHRpb24sXG4gICAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhZGFwdFJlc291cmNlTW9kZWwgPSAocHZjOiBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0pID0+IHtcbiAgICBjb25zdCBzdG9yYWdlID0gcHZjPy5zcGVjPy5yZXNvdXJjZXM/LnJlcXVlc3RzPy5zdG9yYWdlO1xuICAgIGlmIChzdG9yYWdlKSB7XG4gICAgICBjb25zdCByZXMgPSBTdHJpbmcoc3RvcmFnZSkubWF0Y2goL1tBLVphLXpdK3xcXGQrKD86XFwuXFxkKyk/L2cpO1xuICAgICAgcHZjLnNwZWMucmVzb3VyY2VzLnJlcXVlc3RzLnN0b3JhZ2UgPSByZXNbMF0gfHwgJyc7XG4gICAgICB0aGlzLnVuaXQgPSByZXNbMV0gfHwgJ0dpJztcbiAgICB9XG5cbiAgICAvLyBcIlwiIOihqOekuumdmeaAgeWIm+W7ulxuICAgIHRoaXMuY3JlYXRlTWV0aG9kID1cbiAgICAgIHB2Yz8uc3BlYz8uc3RvcmFnZUNsYXNzTmFtZSA9PT0gJycgPyAnc3RhdGljJyA6ICdkeW5hbWljJztcblxuICAgIHJldHVybiBwdmM7XG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvdmVycmlkZVJlc291cmNlID0gKHB2YzogUGVyc2lzdGVudFZvbHVtZUNsYWltKSA9PiB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5jcmVhdGVNZXRob2QgPT09ICdkeW5hbWljJyB8fFxuICAgICAgT2JqZWN0LmtleXMocHZjPy5zcGVjPy5zZWxlY3Rvcj8ubWF0Y2hMYWJlbHMgPz8ge30pLmxlbmd0aCA9PT0gMFxuICAgICkge1xuICAgICAgZGVsZXRlIHB2Yz8uc3BlYz8uc2VsZWN0b3I7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3JlYXRlTWV0aG9kID09PSAnc3RhdGljJykge1xuICAgICAgcHZjLnNwZWMuc3RvcmFnZUNsYXNzTmFtZSA9ICcnO1xuICAgIH1cblxuICAgIGlmIChwdmM/LnNwZWM/LnJlc291cmNlcz8ucmVxdWVzdHM/LnN0b3JhZ2UpIHtcbiAgICAgIHB2Yy5zcGVjLnJlc291cmNlcy5yZXF1ZXN0cy5zdG9yYWdlID0gYCR7cHZjLnNwZWMucmVzb3VyY2VzLnJlcXVlc3RzLnN0b3JhZ2V9JHt0aGlzLnVuaXR9YDtcbiAgICB9XG4gICAgcmV0dXJuIHB2YztcbiAgfTtcbn1cbiIsIjxhdWktZm9ybS1pdGVtXG4gIHdpZHRoPVwibGFyZ2VcIlxuICAqbmdJZj1cIiduYW1lJyB8IHB1cmU6IGRpc3BsYXlGaWVsZFN1cHBvcnRlZFwiXG4+XG4gIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICduYW1lJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gIDxpbnB1dFxuICAgIGF1aS1pbnB1dFxuICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgIFsobmdNb2RlbCldPVwibW9kZWwubmFtZVwiXG4gICAgbmFtZT1cIm5hbWVcIlxuICAgICNuYW1lPVwibmdNb2RlbFwiXG4gICAgbWF4bGVuZ3RoPVwiNjNcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJyZXNvdXJjZU5hbWVSZWcudGlwIHwgdHJhbnNsYXRlXCJcbiAgICBbcGF0dGVybl09XCJyZXNvdXJjZU5hbWVSZWcucGF0dGVyblwiXG4gICAgcmVxdWlyZWRcbiAgLz5cbiAgPGFjbC1lcnJvcnMtbWFwcGVyXG4gICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgIFtlcnJvcnNdPVwibmFtZS5lcnJvcnNcIlxuICAgIFtlcnJvcnNNYXBwZXJdPVwie1xuICAgICAgcGF0dGVybjogcmVzb3VyY2VOYW1lUmVnLnRpcCB8IHRyYW5zbGF0ZSxcbiAgICB9XCJcbiAgPjwvYWNsLWVycm9ycy1tYXBwZXI+XG48L2F1aS1mb3JtLWl0ZW0+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCInZGF0YVNvdXJjZScgfCBwdXJlOiBkaXNwbGF5RmllbGRTdXBwb3J0ZWRcIj5cbiAgPGF1aS1mb3JtLWl0ZW0gKm5nSWY9XCJtb2RlbC5kYXRhU291cmNlIGFzIGRhdGFTb3VyY2VcIj5cbiAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnc3RvcmFnZS5kYXRhX3NvdXJjZScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgIHt7IGRhdGFTb3VyY2UubmFtZSB9fVxuICA8L2F1aS1mb3JtLWl0ZW0+XG48L25nLWNvbnRhaW5lcj5cblxuPGF1aS1mb3JtLWl0ZW0gKm5nSWY9XCInY3JlYXRlVHlwZScgfCBwdXJlOiBkaXNwbGF5RmllbGRTdXBwb3J0ZWRcIj5cbiAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3N0b3JhZ2UuY3JlYXRlX21ldGhvZCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICA8YXVpLXJhZGlvLWdyb3VwXG4gICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgWyhuZ01vZGVsKV09XCJjcmVhdGVNZXRob2RcIlxuICAgIG5hbWU9XCJjcmVhdGVNZXRob2RcIlxuICAgIFthY2xSZWFkb25seUZpZWxkXT1cImlzRnJvbVNuYXBzaG90IHx8ICEhY3JlYXRlVHlwZVwiXG4gICAgW2FjbFJlYWRvbmx5RmllbGRUZW1wbGF0ZV09XCJjcmVhdGVUeXBlVG1wbFwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiY3JlYXRlTWV0aG9kQ2hhbmdlKCRldmVudClcIlxuICA+XG4gICAgPGF1aS1yYWRpby1idXR0b24gW3ZhbHVlXT1cIlB2Y1N0b3JhZ2VDbGFzc0NyZWF0ZVR5cGUuRFlOQU1JQ1wiPlxuICAgICAge3sgJ3N0b3JhZ2UuZHluYW1pY19jcmVhdGUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9hdWktcmFkaW8tYnV0dG9uPlxuICAgIDxhdWktcmFkaW8tYnV0dG9uIFt2YWx1ZV09XCJQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlLlNUQVRJQ1wiPlxuICAgICAge3sgJ3N0b3JhZ2Uuc3RhdGljX21hdGNoJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYXVpLXJhZGlvLWJ1dHRvbj5cbiAgPC9hdWktcmFkaW8tZ3JvdXA+XG4gIDxuZy10ZW1wbGF0ZSAjY3JlYXRlVHlwZVRtcGw+XG4gICAge3tcbiAgICAgIChjcmVhdGVNZXRob2QgPT09IFB2Y1N0b3JhZ2VDbGFzc0NyZWF0ZVR5cGUuRFlOQU1JQ1xuICAgICAgICA/ICdzdG9yYWdlLmR5bmFtaWNfY3JlYXRlJ1xuICAgICAgICA6ICdzdG9yYWdlLnN0YXRpY19tYXRjaCdcbiAgICAgICkgfCB0cmFuc2xhdGVcbiAgICB9fVxuICA8L25nLXRlbXBsYXRlPlxuPC9hdWktZm9ybS1pdGVtPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiJ3N0b3JhZ2VDbGFzc05hbWUnIHwgcHVyZTogZGlzcGxheUZpZWxkU3VwcG9ydGVkXCI+XG4gIDxhdWktZm9ybS1pdGVtXG4gICAgKm5nSWY9XCJjcmVhdGVNZXRob2QgIT09IFB2Y1N0b3JhZ2VDbGFzc0NyZWF0ZVR5cGUuU1RBVElDXCJcbiAgICB3aWR0aD1cIm1lZGl1bVwiXG4gID5cbiAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnc3RvcmFnZWNsYXNzJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgPGFjbC1zdG9yYWdlY2xhc3Mtc2VsZWN0XG4gICAgICBbc3RvcmFnZUNsYXNzZXNdPVwic3RvcmFnZUNsYXNzTGlzdCQgfCBhc3luY1wiXG4gICAgICBbdm9sdW1lU25hcHNob3RDbGFzc2VzXT1cInZvbHVtZVNuYXBzaG90Q2xhc3NMaXN0JCB8IGFzeW5jXCJcbiAgICAgIFtpc0Zyb21TbmFwc2hvdF09XCJpc0Zyb21TbmFwc2hvdFwiXG4gICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgIHJlcXVpcmVkXG4gICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLnN0b3JhZ2VDbGFzc05hbWVcIlxuICAgICAgbmFtZT1cInN0b3JhZ2VDbGFzc05hbWVcIlxuICAgICAgI3N0b3JhZ2VDbGFzc05hbWU9XCJuZ01vZGVsXCJcbiAgICAgIChzdG9yYWdlQ2xhc3NDaGFuZ2UpPVwic3RvcmFnZWNsYXNzQ2hhbmdlKCRldmVudClcIlxuICAgID48L2FjbC1zdG9yYWdlY2xhc3Mtc2VsZWN0PlxuICAgIDxhY2wtZXJyb3JzLW1hcHBlclxuICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgW2Vycm9yc109XCJzdG9yYWdlQ2xhc3NOYW1lLmVycm9yc1wiXG4gICAgPjwvYWNsLWVycm9ycy1tYXBwZXI+XG4gIDwvYXVpLWZvcm0taXRlbT5cbjwvbmctY29udGFpbmVyPlxuXG48YXVpLWZvcm0taXRlbSAqbmdJZj1cIidhY2Nlc3NNb2RlcycgfCBwdXJlOiBkaXNwbGF5RmllbGRTdXBwb3J0ZWRcIj5cbiAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3N0b3JhZ2UuYWNjZXNzX21vZGUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgPGF1aS1yYWRpby1ncm91cFxuICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgIFsobmdNb2RlbCldPVwibW9kZWwuYWNjZXNzTW9kZXNcIlxuICAgIHJlcXVpcmVkXG4gICAgbmFtZT1cImFjY2Vzc01vZGVzXCJcbiAgICAjYWNjZXNzTW9kZT1cIm5nTW9kZWxcIlxuICA+XG4gICAgPGF1aS1yYWRpby1idXR0b25cbiAgICAgICpuZ0Zvcj1cImxldCBtb2RlIG9mIGFjY2Vzc01vZGVzXCJcbiAgICAgIFthdWlUb29sdGlwXT1cIidzdG9yYWdlLnN0b3JhZ2VfZm9yYmlkX3NlbGVjdF9hY2Nlc3NfbW9kZScgfCB0cmFuc2xhdGVcIlxuICAgICAgW2F1aVRvb2x0aXBEaXNhYmxlZF09XCJcbiAgICAgICAgIShcbiAgICAgICAgICBtb2RlXG4gICAgICAgICAgfCBwdXJlXG4gICAgICAgICAgICA6IHN0b3JhZ2VDb21tb25VdGlsLmlzQWNjZXNzTW9kZURpc2FibGVkXG4gICAgICAgICAgICA6IHNlbGVjdGVkU3RvcmFnZVNlbGVjdE9wdGlvblxuICAgICAgICApXG4gICAgICBcIlxuICAgICAgW3ZhbHVlXT1cIm1vZGVcIlxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBtb2RlXG4gICAgICAgICAgfCBwdXJlXG4gICAgICAgICAgICA6IHN0b3JhZ2VDb21tb25VdGlsLmlzQWNjZXNzTW9kZURpc2FibGVkXG4gICAgICAgICAgICA6IHNlbGVjdGVkU3RvcmFnZVNlbGVjdE9wdGlvblxuICAgICAgXCJcbiAgICA+XG4gICAgICB7eyAnc3RvcmFnZS4nICsgQWNjZXNzTW9kZVRyYW5zbGF0ZUtleVttb2RlXSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYXVpLXJhZGlvLWJ1dHRvbj5cbiAgPC9hdWktcmFkaW8tZ3JvdXA+XG4gIDxkaXYgYXVpRm9ybUl0ZW1BZGRvbj5cbiAgICA8YXVpLWljb25cbiAgICAgIFthdWlUb29sdGlwXT1cImFjY2Vzc01vZGVUaXBcIlxuICAgICAgW2F1aVRvb2x0aXBQb3NpdGlvbl09XCIndG9wIGNlbnRlcidcIlxuICAgICAgaWNvbj1cInF1ZXN0aW9uX2NpcmNsZVwiXG4gICAgICBjbGFzcz1cImljb24tLWhlbHBcIlxuICAgID48L2F1aS1pY29uPlxuICA8L2Rpdj5cbiAgPGFjbC1lcnJvcnMtbWFwcGVyXG4gICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgIFtlcnJvcnNdPVwiYWNjZXNzTW9kZS5lcnJvcnNcIlxuICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgPG5nLXRlbXBsYXRlICNhY2Nlc3NNb2RlVGlwPlxuICAgIDx1bCBjbGFzcz1cImQtbGlzdFwiPlxuICAgICAgPGxpPnt7ICdzdG9yYWdlLmFjY2Vzc19tb2RlX3J3bycgfCB0cmFuc2xhdGUgfX08L2xpPlxuICAgICAgPGxpPnt7ICdzdG9yYWdlLmFjY2Vzc19tb2RlX3JveCcgfCB0cmFuc2xhdGUgfX08L2xpPlxuICAgICAgPGxpPnt7ICdzdG9yYWdlLmFjY2Vzc19tb2RlX3J3eCcgfCB0cmFuc2xhdGUgfX08L2xpPlxuICAgIDwvdWw+XG4gIDwvbmctdGVtcGxhdGU+XG48L2F1aS1mb3JtLWl0ZW0+XG5cbjxhdWktZm9ybS1pdGVtXG4gIHdpZHRoPVwibWVkaXVtXCJcbiAgKm5nSWY9XCInc3RvcmFnZScgfCBwdXJlOiBkaXNwbGF5RmllbGRTdXBwb3J0ZWRcIlxuPlxuICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnc3RvcmFnZS5jYXBhY2l0eScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICA8aW5wdXRcbiAgICBhdWktaW5wdXRcbiAgICB0eXBlPVwidGV4dFwiXG4gICAgW3BhdHRlcm5dPVwiUE9TSVRJVkVfSU5UX1BBVFRFUk4ucGF0dGVyblwiXG4gICAgWyhuZ01vZGVsKV09XCJtb2RlbC5zdG9yYWdlXCJcbiAgICBuYW1lPVwic3RvcmFnZVwiXG4gICAgI3N0b3JhZ2U9XCJuZ01vZGVsXCJcbiAgICByZXF1aXJlZFxuICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgIHJlcXVpcmVkXG4gICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNGcm9tU25hcHNob3RcIlxuICAgIFthY2xSZWFkb25seUZpZWxkVGVtcGxhdGVdPVwiY2FwYWNpdHlUcGxcIlxuICAvPlxuICA8YXVpLXNlbGVjdFxuICAgICpuZ0lmPVwiIWlzRnJvbVNuYXBzaG90XCJcbiAgICBbKG5nTW9kZWwpXT1cInVuaXRcIlxuICAgIGNsYXNzPVwidHctbWF4LXctWzYwcHhdIHR3LW1sLVstNjBweF1cIlxuICA+XG4gICAgPGF1aS1vcHRpb25cbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIFVOSVRTXCJcbiAgICAgIFtsYWJlbF09XCJpdGVtXCJcbiAgICAgIFt2YWx1ZV09XCJpdGVtXCJcbiAgICA+XG4gICAgICB7eyBpdGVtIH19XG4gICAgPC9hdWktb3B0aW9uPlxuICA8L2F1aS1zZWxlY3Q+XG4gIDxuZy10ZW1wbGF0ZSAjY2FwYWNpdHlUcGw+IHt7IG1vZGVsLnN0b3JhZ2UgfX1HaSA8L25nLXRlbXBsYXRlPlxuICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICBhdWlGb3JtSXRlbUVycm9yXG4gICAgW2Vycm9yc109XCJzdG9yYWdlLmVycm9yc1wiXG4gICAgW2Vycm9yc01hcHBlcl09XCJ7XG4gICAgICBwYXR0ZXJuOiBQT1NJVElWRV9JTlRfUEFUVEVSTi50aXAgfCB0cmFuc2xhdGUsXG4gICAgfVwiXG4gID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuPC9hdWktZm9ybS1pdGVtPlxuXG48YXVpLWZvcm0taXRlbSAqbmdJZj1cIid2b2x1bWVNb2RlJyB8IHB1cmU6IGRpc3BsYXlGaWVsZFN1cHBvcnRlZFwiPlxuICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnc3RvcmFnZS52b2x1bWVfbW9kZScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICA8YXVpLXJhZGlvLWdyb3VwXG4gICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgWyhuZ01vZGVsKV09XCJtb2RlbC52b2x1bWVNb2RlXCJcbiAgICBuYW1lPVwidm9sdW1lTW9kZVwiXG4gICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNGcm9tU25hcHNob3QgfHwgISF2b2x1bWVNb2RlXCJcbiAgICBbYWNsUmVhZG9ubHlGaWVsZFRlbXBsYXRlXT1cInZvbHVtZU1vZGVUbXBsXCJcbiAgPlxuICAgIDxhdWktcmFkaW8tYnV0dG9uXG4gICAgICAqbmdGb3I9XCJsZXQgbW9kZSBvZiB2b2x1bWVNb2Rlc1wiXG4gICAgICBbYXVpVG9vbHRpcF09XCInc3RvcmFnZS5zdG9yYWdlX2ZvcmJpZF9zZWxlY3Rfdm9sdW1lX21vZGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFthdWlUb29sdGlwRGlzYWJsZWRdPVwiXG4gICAgICAgICEoXG4gICAgICAgICAgbW9kZVxuICAgICAgICAgIHwgcHVyZVxuICAgICAgICAgICAgOiBzdG9yYWdlQ29tbW9uVXRpbC5pc1ZvbHVtZU1vZGVEaXNhYmxlZFxuICAgICAgICAgICAgOiBzZWxlY3RlZFN0b3JhZ2VTZWxlY3RPcHRpb25cbiAgICAgICAgKVxuICAgICAgXCJcbiAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgbW9kZVxuICAgICAgICAgIHwgcHVyZVxuICAgICAgICAgICAgOiBzdG9yYWdlQ29tbW9uVXRpbC5pc1ZvbHVtZU1vZGVEaXNhYmxlZFxuICAgICAgICAgICAgOiBzZWxlY3RlZFN0b3JhZ2VTZWxlY3RPcHRpb25cbiAgICAgIFwiXG4gICAgICBbdmFsdWVdPVwibW9kZVwiXG4gICAgPlxuICAgICAge3sgJ3N0b3JhZ2UuJyArIFZvbHVtZU1vZGVUcmFuc2xhdGVLZXlbbW9kZV0gfCB0cmFuc2xhdGUgfX1cbiAgICA8L2F1aS1yYWRpby1idXR0b24+XG4gIDwvYXVpLXJhZGlvLWdyb3VwPlxuICA8ZGl2XG4gICAgYXVpRm9ybUl0ZW1BZGRvblxuICAgICpuZ0lmPVwiIXZvbHVtZU1vZGVcIlxuICA+XG4gICAgPGF1aS1pY29uXG4gICAgICBbYXVpVG9vbHRpcF09XCJ2b2x1bWVNb2RlVGlwXCJcbiAgICAgIFthdWlUb29sdGlwUG9zaXRpb25dPVwiJ3RvcCBjZW50ZXInXCJcbiAgICAgIGljb249XCJxdWVzdGlvbl9jaXJjbGVcIlxuICAgICAgY2xhc3M9XCJpY29uLS1oZWxwXCJcbiAgICA+PC9hdWktaWNvbj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjdm9sdW1lTW9kZVRpcD5cbiAgICA8dWwgY2xhc3M9XCJkLWxpc3RcIj5cbiAgICAgIDxsaT57eyAnc3RvcmFnZS52b2x1bWVfbW9kZV9maWxlX3N5c3RlbV9oaW50JyB8IHRyYW5zbGF0ZSB9fTwvbGk+XG4gICAgICA8bGk+e3sgJ3N0b3JhZ2Uudm9sdW1lX21vZGVfYmxvY2tfZGV2aWNlX2hpbnQnIHwgdHJhbnNsYXRlIH19PC9saT5cbiAgICA8L3VsPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI3ZvbHVtZU1vZGVUbXBsPlxuICAgIHt7XG4gICAgICAobW9kZWwudm9sdW1lTW9kZSA9PT0gJ0ZpbGVzeXN0ZW0nXG4gICAgICAgID8gJ3N0b3JhZ2UuZmlsZV9zeXN0ZW0nXG4gICAgICAgIDogJ3N0b3JhZ2UuYmxvY2tfZGV2aWNlJ1xuICAgICAgKSB8IHRyYW5zbGF0ZVxuICAgIH19XG4gIDwvbmctdGVtcGxhdGU+XG48L2F1aS1mb3JtLWl0ZW0+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93QWR2YW5jZWRGaWVsZFwiPlxuICA8YWNsLWZvbGRhYmxlLWJsb2NrIGhpbnQ9XCJ7eyAnc3RvcmFnZS5hZHZhbmNlZCcgfCB0cmFuc2xhdGUgfX1cIj5cbiAgICA8YXVpLWZvcm0taXRlbVxuICAgICAgZm9ybUdyb3VwTmFtZT1cIm1ldGFkYXRhXCJcbiAgICAgICpuZ0lmPVwiJ2xhYmVscycgfCBwdXJlOiBkaXNwbGF5RmllbGRTdXBwb3J0ZWRcIlxuICAgID5cbiAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICdsYWJlbCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgPGFjbC1rZXktdmFsdWUtZm9ybS10YWJsZVxuICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC5sYWJlbHNcIlxuICAgICAgICBuYW1lPVwibGFiZWxzXCJcbiAgICAgICAgW3Jlc291cmNlTmFtZVRyYW5zbGF0ZWRdPVwiJ3N0b3JhZ2UubGFiZWxzJyB8IHRyYW5zbGF0ZSB8IGxvd2VyY2FzZVwiXG4gICAgICAgIFt2YWxpZGF0b3JdPVwibGFiZWxWYWxpZGF0b3JcIlxuICAgICAgICBbZXJyb3JNYXBwZXJdPVwibGFiZWxFcnJvck1hcHBlciQgfCBhc3luY1wiXG4gICAgICA+PC9hY2wta2V5LXZhbHVlLWZvcm0tdGFibGU+XG4gICAgPC9hdWktZm9ybS1pdGVtPlxuICAgIDxhdWktZm9ybS1pdGVtXG4gICAgICBmb3JtR3JvdXBOYW1lPVwibWV0YWRhdGFcIlxuICAgICAgKm5nSWY9XCInYW5ub3RhdGlvbnMnIHwgcHVyZTogZGlzcGxheUZpZWxkU3VwcG9ydGVkXCJcbiAgICA+XG4gICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnc3RvcmFnZS5rOHNfYW5ub3RhdGlvbicgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgPGFjbC1rZXktdmFsdWUtZm9ybS10YWJsZVxuICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgW3Jlc291cmNlTmFtZVRyYW5zbGF0ZWRdPVwiXG4gICAgICAgICAgJ3N0b3JhZ2UuazhzX2Fubm90YXRpb24nIHwgdHJhbnNsYXRlIHwgbG93ZXJjYXNlXG4gICAgICAgIFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwibW9kZWwuYW5ub3RhdGlvbnNcIlxuICAgICAgICBuYW1lPVwiYW5ub3RhdGlvbnNcIlxuICAgICAgICBbdmFsaWRhdG9yXT1cImFubm90YXRpb25WYWxpZGF0b3JcIlxuICAgICAgICBbZXJyb3JNYXBwZXJdPVwiYW5ub3RhdGlvbkVycm9yTWFwcGVyJCB8IGFzeW5jXCJcbiAgICAgID48L2FjbC1rZXktdmFsdWUtZm9ybS10YWJsZT5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIidzZWxlY3RvcicgfCBwdXJlOiBkaXNwbGF5RmllbGRTdXBwb3J0ZWRcIj5cbiAgICAgIDxhdWktZm9ybS1pdGVtXG4gICAgICAgIFtoaWRkZW5dPVwiY3JlYXRlTWV0aG9kID09PSBQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlLkRZTkFNSUNcIlxuICAgICAgPlxuICAgICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnc3RvcmFnZS5zZWxlY3RvcicgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICA8YWNsLWtleS12YWx1ZS1mb3JtLXRhYmxlXG4gICAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC5zZWxlY3RvclwiXG4gICAgICAgICAgbmFtZT1cInNlbGVjdG9yXCJcbiAgICAgICAgPjwvYWNsLWtleS12YWx1ZS1mb3JtLXRhYmxlPlxuICAgICAgPC9hdWktZm9ybS1pdGVtPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2FjbC1mb2xkYWJsZS1ibG9jaz5cbjwvbmctY29udGFpbmVyPlxuIl19
674
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zdG9yYWdlL3NyYy9saWIvY29tcG9uZW50cy9wdmMtZm9ybS9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JhZ2Uvc3JjL2xpYi9jb21wb25lbnRzL3B2Yy1mb3JtL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxFQUNaLGFBQWEsR0FDZCxNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBRUwsV0FBVyxFQUNYLG9DQUFvQyxFQUNwQyw4QkFBOEIsRUFDOUIsK0JBQStCLEVBQy9CLHlCQUF5QixFQUN6QixVQUFVLEVBRVYsc0JBQXNCLEVBQ3RCLDBCQUEwQixFQUcxQix1QkFBdUIsRUFDdkIsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixhQUFhLEVBQ2IsY0FBYyxFQUNkLFNBQVMsRUFDVCxXQUFXLEVBRVgsVUFBVSxFQUVWLElBQUksRUFFSixnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLFFBQVEsRUFDUixvQkFBb0IsR0FDckIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENB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b0JBQ2Isc0JBQXNCO29CQUN0QixzQkFBc0I7b0JBQ3RCLDJCQUEyQjtvQkFDM0IsMEJBQTBCO29CQUMxQixnQkFBZ0I7b0JBQ2hCLG9CQUFvQjtpQkFDckIsYUFDVTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxtQ0FBbUMsQ0FBQzt3QkFDakUsS0FBSyxFQUFFLElBQUk7cUJBQ1o7b0JBQ0Q7d0JBQ0UsT0FBTyxFQUFFLGFBQWE7d0JBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG1DQUFtQyxDQUFDO3dCQUNqRSxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtvSEFTRCxVQUFVO2tCQURULEtBQUs7bUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBSXpCLFdBQVcsTUFHWCxjQUFjO2tCQURiLEtBQUs7WUFJTixlQUFlLE1BSWYsY0FBYztrQkFEYixLQUFLO1lBS04sVUFBVTtrQkFEVCxLQUFLO1lBS04sVUFBVTtrQkFEVCxLQUFLO1lBS04sYUFBYTtrQkFEWixLQUFLO1lBK0hOLHFCQUFxQjtrRkE5SlYsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRm9ybU1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSW5wdXRNb2R1bGUsXG4gIFJhZGlvTW9kdWxlLFxuICBTZWxlY3RNb2R1bGUsXG4gIFRvb2x0aXBNb2R1bGUsXG59IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgQWNjZXNzTW9kZSxcbiAgQWNjZXNzTW9kZXMsXG4gIGdldEs4c1Jlc291cmNlQW5ub3RhdGlvbkVycm9yTWFwcGVyJCxcbiAgazhzUmVzb3VyY2VBbm5vdGF0aW9uVmFsaWRhdG9yLFxuICBnZXRLOHNSZXNvdXJjZUxhYmVsRXJyb3JNYXBwZXIkLFxuICBrOHNSZXNvdXJjZUxhYmVsVmFsaWRhdG9yLFxuICBWb2x1bWVNb2RlLFxuICBMYWJlbFNlbGVjdG9yLFxuICBGb2xkYWJsZUJsb2NrQ29tcG9uZW50LFxuICBLZXlWYWx1ZUZvcm1UYWJsZUNvbXBvbmVudCxcbiAgUGVyc2lzdGVudFZvbHVtZUNsYWltLFxuICBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW1EYXRhU291cmNlLFxuICBjcmVhdGVOZXN0ZWRGb3JtQ29udHJvbCxcbiAgZGF0YVRyYW5zZmVyLFxuICBSZWFkb25seUZpZWxkRGlyZWN0aXZlLFxuICBLOFNfUkVTT1VSQ0VfTkFNRV9CQVNFLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBPYnNlcnZhYmxlSW5wdXQsXG4gIEs4c0FwaVNlcnZpY2UsXG4gIFJFU09VUkNFX1RZUEVTLFxuICBza2lwRXJyb3IsXG4gIFZvbHVtZU1vZGVzLFxuICBWYWx1ZU9mLFxuICBwdWJsaXNoUmVmLFxuICBTdHJpbmdNYXAsXG4gIGJpbmQsXG4gIFdvcmtzcGFjZVBhcmFtcyxcbiAgVFJBTlNMQVRFX01PRFVMRSxcbiAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gIFB1cmVQaXBlLFxuICBQT1NJVElWRV9JTlRfUEFUVEVSTixcbn0gZnJvbSAnQGFsYXVkYS1mZS9jb21tb24nO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBMb3dlckNhc2VQaXBlLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb21wb3NlIH0gZnJvbSAncmFtZGEnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgbWFwLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIFN0b3JhZ2VTZWxlY3RPcHRpb24sXG4gIFN0b3JhZ2VDb21tb25VdGlsU2VydmljZSxcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbW9uLXV0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlQ2xhc3MsIFZvbHVtZVNuYXBzaG90Q2xhc3MgfSBmcm9tICcuLi8uLi90eXBlcy9rOHMnO1xuaW1wb3J0IHtcbiAgQWNjZXNzTW9kZVRyYW5zbGF0ZUtleSxcbiAgVm9sdW1lTW9kZVRyYW5zbGF0ZUtleSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvY29uc3RhbnRzJztcbmltcG9ydCB7IGJ1aWxkUHZjUmVzb3VyY2UgfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IFN0b3JhZ2VDbGFzc1NlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL3N0b3JhZ2VjbGFzcy1zZWxlY3QvY29tcG9uZW50JztcblxuY29uc3QgUHZjU3RvcmFnZUNsYXNzQ3JlYXRlVHlwZSA9IHtcbiAgRFlOQU1JQzogJ2R5bmFtaWMnLFxuICBTVEFUSUM6ICdzdGF0aWMnLFxufSBhcyBjb25zdDtcblxudHlwZSBQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlID0gVmFsdWVPZjx0eXBlb2YgUHZjU3RvcmFnZUNsYXNzQ3JlYXRlVHlwZT47XG5cbmludGVyZmFjZSBQZXJzaXN0ZW50Vm9sdW1lRm9ybU1vZGVsIHtcbiAgbmFtZTogc3RyaW5nO1xuICBsYWJlbHM6IFN0cmluZ01hcDtcbiAgYW5ub3RhdGlvbnM6IFN0cmluZ01hcDtcbiAgLy8gbnVsbCDooajnpLrkvb/nlKjpu5jorqQgc2NcbiAgLy8gXCJcIiDmiJbkuI3lhpnor6XlrZfmrrXooajnpLrkuI3orr7nva7lrZjlgqjnsbtcbiAgc3RvcmFnZUNsYXNzTmFtZTogc3RyaW5nO1xuICBhY2Nlc3NNb2RlczogQWNjZXNzTW9kZTtcbiAgdm9sdW1lTW9kZTogVm9sdW1lTW9kZTtcbiAgc3RvcmFnZTogc3RyaW5nO1xuICBkYXRhU291cmNlPzogUGVyc2lzdGVudFZvbHVtZUNsYWltRGF0YVNvdXJjZTtcbiAgc2VsZWN0b3I6IExhYmVsU2VsZWN0b3I7XG59XG5cbnR5cGUgRGlzcGxheUZpZWxkID0ga2V5b2YgUGVyc2lzdGVudFZvbHVtZUZvcm1Nb2RlbCB8ICdjcmVhdGVUeXBlJztcblxuY29uc3QgVU5JVFMgPSBbJ0dpJywgJ1RpJ10gYXMgY29uc3Q7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2FjbC1wdmMtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAndGVtcGxhdGUuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBOZ0ZvcixcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIFJhZGlvTW9kdWxlLFxuICAgIElucHV0TW9kdWxlLFxuICAgIFNlbGVjdE1vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgUHVyZVBpcGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIExvd2VyQ2FzZVBpcGUsXG4gICAgUmVhZG9ubHlGaWVsZERpcmVjdGl2ZSxcbiAgICBGb2xkYWJsZUJsb2NrQ29tcG9uZW50LFxuICAgIFN0b3JhZ2VDbGFzc1NlbGVjdENvbXBvbmVudCxcbiAgICBLZXlWYWx1ZUZvcm1UYWJsZUNvbXBvbmVudCxcbiAgICBUUkFOU0xBVEVfTU9EVUxFLFxuICAgIEVSUk9SU19NQVBQRVJfTU9EVUxFLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBlcnNpc3RlbnRWb2x1bWVDbGFpbUZvcm1Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGVyc2lzdGVudFZvbHVtZUNsYWltRm9ybUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW1Gb3JtQ29tcG9uZW50IGV4dGVuZHMgY3JlYXRlTmVzdGVkRm9ybUNvbnRyb2w8XG4gIFBlcnNpc3RlbnRWb2x1bWVDbGFpbSxcbiAgUGVyc2lzdGVudFZvbHVtZUZvcm1Nb2RlbFxuPih7XG4gIGF1dG9FbWl0Q2hhbmdlOiB0cnVlLFxufSkge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBiYXNlUGFyYW1zOiBXb3Jrc3BhY2VQYXJhbXM7XG5cbiAgQE9ic2VydmFibGVJbnB1dCgpXG4gIGJhc2VQYXJhbXMkITogT2JzZXJ2YWJsZTxXb3Jrc3BhY2VQYXJhbXM+O1xuXG4gIEBJbnB1dCgpXG4gIHN0b3JhZ2VDbGFzc2VzOiBTdG9yYWdlQ2xhc3NbXTtcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgc3RvcmFnZUNsYXNzZXMkITogT2JzZXJ2YWJsZTxTdG9yYWdlQ2xhc3NbXT47XG5cbiAgLy8g5b+r54Wn57G7IHB2YyDliJvlu7pcbiAgQElucHV0KClcbiAgaXNGcm9tU25hcHNob3Q6IGJvb2xlYW47XG5cbiAgLy8g5aaC5p6c5Lyg5YWl55u45bqU55qEIGNyZWF0ZVR5cGUg6KGo56S65Zu65a6a5YW25YC8XG4gIEBJbnB1dCgpXG4gIGNyZWF0ZVR5cGU6IFB2Y1N0b3JhZ2VDbGFzc0NyZWF0ZVR5cGU7XG5cbiAgLy8g5aaC5p6c5Lyg5YWl55u45bqU55qEIHZvbHVtZU1vZGUg6KGo56S65Zu65a6a5YW25YC8XG4gIEBJbnB1dCgpXG4gIHZvbHVtZU1vZGU6IFZvbHVtZU1vZGU7XG5cbiAgLy8g5aaC5p6c5Lyg5YWl55u45bqU55qEIGRpc3BsYXlGaWVsZCDooajnpLrlj6rkvJrlsZXnpLrlr7nlupTnmoQgY29udHJvbFxuICBASW5wdXQoKVxuICBkaXNwbGF5RmllbGRzOiBEaXNwbGF5RmllbGRbXTtcblxuICBnZXQgc2hvd0FkdmFuY2VkRmllbGQoKSB7XG4gICAgaWYgKCF0aGlzLmRpc3BsYXlGaWVsZHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheUZpZWxkcz8uc29tZShmaWVsZCA9PlxuICAgICAgWydsYWJlbHMnLCAnYW5ub3RhdGlvbnMnLCAnc2VsZWN0b3InXS5pbmNsdWRlcyhmaWVsZCksXG4gICAgKTtcbiAgfVxuXG4gIGFjY2Vzc01vZGVzID0gQWNjZXNzTW9kZXM7XG4gIHZvbHVtZU1vZGVzID0gVm9sdW1lTW9kZXM7XG4gIFBPU0lUSVZFX0lOVF9QQVRURVJOID0gUE9TSVRJVkVfSU5UX1BBVFRFUk47XG5cbiAgb3ZlcnJpZGUgbW9kZWwgPSB7fSBhcyBQZXJzaXN0ZW50Vm9sdW1lRm9ybU1vZGVsO1xuXG4gIHJlc291cmNlTmFtZVJlZyA9IEs4U19SRVNPVVJDRV9OQU1FX0JBU0U7XG4gIGxhYmVsVmFsaWRhdG9yID0gazhzUmVzb3VyY2VMYWJlbFZhbGlkYXRvcjtcbiAgQWNjZXNzTW9kZVRyYW5zbGF0ZUtleSA9IEFjY2Vzc01vZGVUcmFuc2xhdGVLZXk7XG4gIFZvbHVtZU1vZGVUcmFuc2xhdGVLZXkgPSBWb2x1bWVNb2RlVHJhbnNsYXRlS2V5O1xuXG4gIGxhYmVsRXJyb3JNYXBwZXIkID0gZ2V0SzhzUmVzb3VyY2VMYWJlbEVycm9yTWFwcGVyJCh0aGlzLnRyYW5zbGF0ZSk7XG4gIGFubm90YXRpb25WYWxpZGF0b3IgPSBrOHNSZXNvdXJjZUFubm90YXRpb25WYWxpZGF0b3I7XG4gIGFubm90YXRpb25FcnJvck1hcHBlciQgPSBnZXRLOHNSZXNvdXJjZUFubm90YXRpb25FcnJvck1hcHBlciQodGhpcy50cmFuc2xhdGUpO1xuXG4gIGNyZWF0ZU1ldGhvZDogUHZjU3RvcmFnZUNsYXNzQ3JlYXRlVHlwZTtcbiAgUHZjU3RvcmFnZUNsYXNzQ3JlYXRlVHlwZSA9IFB2Y1N0b3JhZ2VDbGFzc0NyZWF0ZVR5cGU7XG4gIHNlbGVjdGVkU3RvcmFnZVNlbGVjdE9wdGlvbjogU3RvcmFnZVNlbGVjdE9wdGlvbjtcbiAgVU5JVFMgPSBVTklUUztcbiAgdW5pdCA9ICdHaSc7XG5cbiAgc3RvcmFnZUNsYXNzTGlzdCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmJhc2VQYXJhbXMkLFxuICAgIHRoaXMuc3RvcmFnZUNsYXNzZXMkLFxuICBdKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoW3sgY2x1c3RlciB9LCBzdG9yYWdlQ2xhc3Nlc10pID0+IHtcbiAgICAgIGlmIChzdG9yYWdlQ2xhc3Nlcykge1xuICAgICAgICByZXR1cm4gb2Yoc3RvcmFnZUNsYXNzZXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuazhzQXBpXG4gICAgICAgIC5nZXRSZXNvdXJjZUxpc3Q8U3RvcmFnZUNsYXNzPih7XG4gICAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuU1RPUkFHRV9DTEFTUyxcbiAgICAgICAgICBjbHVzdGVyLFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICBsaW1pdDogJzAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzPy5pdGVtcykpO1xuICAgIH0pLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICB2b2x1bWVTbmFwc2hvdENsYXNzTGlzdCQgPSB0aGlzLmJhc2VQYXJhbXMkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGJhc2VQYXJhbXMgPT5cbiAgICAgIHRoaXMuazhzQXBpXG4gICAgICAgIC5nZXRSZXNvdXJjZUxpc3Q8Vm9sdW1lU25hcHNob3RDbGFzcz4oe1xuICAgICAgICAgIHR5cGU6IFJFU09VUkNFX1RZUEVTLlZPTFVNRV9TTkFQU0hPVF9DTEFTUyxcbiAgICAgICAgICBjbHVzdGVyOiBiYXNlUGFyYW1zLmNsdXN0ZXIsXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcChyID0+IHIuaXRlbXMpLFxuICAgICAgICAgIHNraXBFcnJvcihbXSBhcyBWb2x1bWVTbmFwc2hvdENsYXNzW10pLFxuICAgICAgICApLFxuICAgICksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IFBlcnNpc3RlbnRWb2x1bWVDbGFpbSk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwgPSB0aGlzLnZhbHVlSW4oXG4gICAgICB2YWx1ZSA/P1xuICAgICAgICBidWlsZFB2Y1Jlc291cmNlKHtcbiAgICAgICAgICBuYW1lc3BhY2U6IHRoaXMuYmFzZVBhcmFtcy5uYW1lc3BhY2UsXG4gICAgICAgICAgdm9sdW1lTW9kZTogdGhpcy52b2x1bWVNb2RlLFxuICAgICAgICB9KSxcbiAgICApO1xuICAgIGlmICh0aGlzLmNyZWF0ZVR5cGUpIHtcbiAgICAgIHRoaXMuY3JlYXRlTWV0aG9kID0gdGhpcy5jcmVhdGVUeXBlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBzdG9yYWdlQ29tbW9uVXRpbDogU3RvcmFnZUNvbW1vblV0aWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgazhzQXBpOiBLOHNBcGlTZXJ2aWNlLFxuICApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgY29uc3QgW3RvTW9kZWwsIHRvUmVzb3VyY2VdID0gZGF0YVRyYW5zZmVyPFxuICAgICAgUGVyc2lzdGVudFZvbHVtZUNsYWltLFxuICAgICAgUGVyc2lzdGVudFZvbHVtZUZvcm1Nb2RlbFxuICAgID4oe1xuICAgICAgbmFtZTogJ21ldGFkYXRhLm5hbWUnLFxuICAgICAgbGFiZWxzOiAnbWV0YWRhdGEubGFiZWxzJyxcbiAgICAgIGFubm90YXRpb25zOiAnbWV0YWRhdGEuYW5ub3RhdGlvbnMnLFxuICAgICAgc3RvcmFnZUNsYXNzTmFtZTogJ3NwZWMuc3RvcmFnZUNsYXNzTmFtZScsXG4gICAgICBhY2Nlc3NNb2RlczogWydzcGVjJywgJ2FjY2Vzc01vZGVzJywgMF0sXG4gICAgICB2b2x1bWVNb2RlOiAnc3BlYy52b2x1bWVNb2RlJyxcbiAgICAgIHN0b3JhZ2U6ICdzcGVjLnJlc291cmNlcy5yZXF1ZXN0cy5zdG9yYWdlJyxcbiAgICAgIGRhdGFTb3VyY2U6ICdzcGVjLmRhdGFTb3VyY2UnLFxuICAgICAgc2VsZWN0b3I6ICdzcGVjLnNlbGVjdG9yLm1hdGNoTGFiZWxzJyxcbiAgICB9KTtcblxuICAgIHRoaXMudmFsdWVJbiA9IGNvbXBvc2UodG9Nb2RlbCwgdGhpcy5hZGFwdFJlc291cmNlTW9kZWwpO1xuICAgIHRoaXMubW9kZWxPdXQgPSBjb21wb3NlKHRoaXMub3ZlcnJpZGVSZXNvdXJjZSwgdG9SZXNvdXJjZSk7XG4gIH1cblxuICBjcmVhdGVNZXRob2RDaGFuZ2UoY3JlYXRlVHlwZTogUHZjU3RvcmFnZUNsYXNzQ3JlYXRlVHlwZSkge1xuICAgIC8vIOmdmeaAgeWMuemFjeS4jemcgOimgemZkOWItuiuv+mXruaooeW8j1xuICAgIGlmIChjcmVhdGVUeXBlID09PSAnc3RhdGljJykge1xuICAgICAgdGhpcy5zZWxlY3RlZFN0b3JhZ2VTZWxlY3RPcHRpb24gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHN0b3JhZ2VjbGFzc0NoYW5nZShzZWxlY3RlZE9wdGlvbjogU3RvcmFnZVNlbGVjdE9wdGlvbikge1xuICAgIHRoaXMuc2VsZWN0ZWRTdG9yYWdlU2VsZWN0T3B0aW9uID0gc2VsZWN0ZWRPcHRpb247XG4gICAgdGhpcy5zZXRWb2x1bWVNb2RlVG9TdXBwb3J0VmFsdWVJZk5lZWQoKTtcbiAgICB0aGlzLnNldEFjY2Vzc01vZGVUb1N1cHBvcnRWYWx1ZUlmTmVlZCgpO1xuICB9XG5cbiAgdm9sdW1lTW9kZUNoYW5nZSh2b2x1bWVNb2RlOiBWb2x1bWVNb2RlKSB7XG4gICAgdGhpcy5zZXRBY2Nlc3NNb2RlVG9TdXBwb3J0VmFsdWVJZk5lZWQodm9sdW1lTW9kZSk7XG4gIH1cblxuICBAYmluZFxuICBkaXNwbGF5RmllbGRTdXBwb3J0ZWQoZmllbGROYW1lOiBEaXNwbGF5RmllbGQpIHtcbiAgICBpZiAoIXRoaXMuZGlzcGxheUZpZWxkcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5RmllbGRzLmluY2x1ZGVzKGZpZWxkTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIHNldEFjY2Vzc01vZGVUb1N1cHBvcnRWYWx1ZUlmTmVlZCh2b2x1bWVNb2RlID0gdGhpcy52b2x1bWVNb2RlKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zdG9yYWdlQ29tbW9uVXRpbC5pc0FjY2Vzc01vZGVEaXNhYmxlZChcbiAgICAgICAgdGhpcy5tb2RlbC5hY2Nlc3NNb2RlcyxcbiAgICAgICAgdGhpcy5zZWxlY3RlZFN0b3JhZ2VTZWxlY3RPcHRpb24sXG4gICAgICAgIHZvbHVtZU1vZGUgPT09ICdCbG9jaycsXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aGlzLm1vZGVsLmFjY2Vzc01vZGVzID0gdGhpcy5hY2Nlc3NNb2Rlcy5maW5kKFxuICAgICAgICBhY2Nlc3NNb2RlID0+XG4gICAgICAgICAgIXRoaXMuc3RvcmFnZUNvbW1vblV0aWwuaXNBY2Nlc3NNb2RlRGlzYWJsZWQoXG4gICAgICAgICAgICBhY2Nlc3NNb2RlLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFN0b3JhZ2VTZWxlY3RPcHRpb24sXG4gICAgICAgICAgICB0aGlzLnZvbHVtZU1vZGUgPT09ICdCbG9jaycsXG4gICAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRWb2x1bWVNb2RlVG9TdXBwb3J0VmFsdWVJZk5lZWQoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zdG9yYWdlQ29tbW9uVXRpbC5pc1ZvbHVtZU1vZGVEaXNhYmxlZChcbiAgICAgICAgdGhpcy5tb2RlbC52b2x1bWVNb2RlLFxuICAgICAgICB0aGlzLnNlbGVjdGVkU3RvcmFnZVNlbGVjdE9wdGlvbixcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMubW9kZWwudm9sdW1lTW9kZSA9IHRoaXMudm9sdW1lTW9kZXMuZmluZChcbiAgICAgICAgdm9sdW1lTW9kZSA9PlxuICAgICAgICAgICF0aGlzLnN0b3JhZ2VDb21tb25VdGlsLmlzVm9sdW1lTW9kZURpc2FibGVkKFxuICAgICAgICAgICAgdm9sdW1lTW9kZSxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdG9yYWdlU2VsZWN0T3B0aW9uLFxuICAgICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWRhcHRSZXNvdXJjZU1vZGVsID0gKHB2YzogUGVyc2lzdGVudFZvbHVtZUNsYWltKSA9PiB7XG4gICAgY29uc3Qgc3RvcmFnZSA9IHB2Yz8uc3BlYz8ucmVzb3VyY2VzPy5yZXF1ZXN0cz8uc3RvcmFnZTtcbiAgICBpZiAoc3RvcmFnZSkge1xuICAgICAgY29uc3QgcmVzID0gU3RyaW5nKHN0b3JhZ2UpLm1hdGNoKC9bQS1aYS16XSt8XFxkKyg/OlxcLlxcZCspPy9nKTtcbiAgICAgIHB2Yy5zcGVjLnJlc291cmNlcy5yZXF1ZXN0cy5zdG9yYWdlID0gcmVzWzBdIHx8ICcnO1xuICAgICAgdGhpcy51bml0ID0gcmVzWzFdIHx8ICdHaSc7XG4gICAgfVxuXG4gICAgLy8gXCJcIiDooajnpLrpnZnmgIHliJvlu7pcbiAgICB0aGlzLmNyZWF0ZU1ldGhvZCA9XG4gICAgICBwdmM/LnNwZWM/LnN0b3JhZ2VDbGFzc05hbWUgPT09ICcnID8gJ3N0YXRpYycgOiAnZHluYW1pYyc7XG5cbiAgICByZXR1cm4gcHZjO1xuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgb3ZlcnJpZGVSZXNvdXJjZSA9IChwdmM6IFBlcnNpc3RlbnRWb2x1bWVDbGFpbSkgPT4ge1xuICAgIGlmIChcbiAgICAgIHRoaXMuY3JlYXRlTWV0aG9kID09PSAnZHluYW1pYycgfHxcbiAgICAgIE9iamVjdC5rZXlzKHB2Yz8uc3BlYz8uc2VsZWN0b3I/Lm1hdGNoTGFiZWxzID8/IHt9KS5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIGRlbGV0ZSBwdmM/LnNwZWM/LnNlbGVjdG9yO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNyZWF0ZU1ldGhvZCA9PT0gJ3N0YXRpYycpIHtcbiAgICAgIHB2Yy5zcGVjLnN0b3JhZ2VDbGFzc05hbWUgPSAnJztcbiAgICB9XG5cbiAgICBpZiAocHZjPy5zcGVjPy5yZXNvdXJjZXM/LnJlcXVlc3RzPy5zdG9yYWdlKSB7XG4gICAgICBwdmMuc3BlYy5yZXNvdXJjZXMucmVxdWVzdHMuc3RvcmFnZSA9IGAke3B2Yy5zcGVjLnJlc291cmNlcy5yZXF1ZXN0cy5zdG9yYWdlfSR7dGhpcy51bml0fWA7XG4gICAgfVxuICAgIHJldHVybiBwdmM7XG4gIH07XG59XG4iLCI8YXVpLWZvcm0taXRlbVxuICB3aWR0aD1cImxhcmdlXCJcbiAgKm5nSWY9XCInbmFtZScgfCBwdXJlOiBkaXNwbGF5RmllbGRTdXBwb3J0ZWRcIlxuPlxuICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnbmFtZScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICA8aW5wdXRcbiAgICBhdWktaW5wdXRcbiAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLm5hbWVcIlxuICAgIG5hbWU9XCJuYW1lXCJcbiAgICAjbmFtZT1cIm5nTW9kZWxcIlxuICAgIG1heGxlbmd0aD1cIjYzXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicmVzb3VyY2VOYW1lUmVnLnRpcCB8IHRyYW5zbGF0ZVwiXG4gICAgW3BhdHRlcm5dPVwicmVzb3VyY2VOYW1lUmVnLnBhdHRlcm5cIlxuICAgIHJlcXVpcmVkXG4gIC8+XG4gIDxhY2wtZXJyb3JzLW1hcHBlclxuICAgIGF1aUZvcm1JdGVtRXJyb3JcbiAgICBbZXJyb3JzXT1cIm5hbWUuZXJyb3JzXCJcbiAgICBbZXJyb3JzTWFwcGVyXT1cIntcbiAgICAgIHBhdHRlcm46IHJlc291cmNlTmFtZVJlZy50aXAgfCB0cmFuc2xhdGUsXG4gICAgfVwiXG4gID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuPC9hdWktZm9ybS1pdGVtPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiJ2RhdGFTb3VyY2UnIHwgcHVyZTogZGlzcGxheUZpZWxkU3VwcG9ydGVkXCI+XG4gIDxhdWktZm9ybS1pdGVtICpuZ0lmPVwibW9kZWwuZGF0YVNvdXJjZSBhcyBkYXRhU291cmNlXCI+XG4gICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3N0b3JhZ2UuZGF0YV9zb3VyY2UnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICB7eyBkYXRhU291cmNlLm5hbWUgfX1cbiAgPC9hdWktZm9ybS1pdGVtPlxuPC9uZy1jb250YWluZXI+XG5cbjxhdWktZm9ybS1pdGVtICpuZ0lmPVwiJ2NyZWF0ZVR5cGUnIHwgcHVyZTogZGlzcGxheUZpZWxkU3VwcG9ydGVkXCI+XG4gIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICdzdG9yYWdlLmNyZWF0ZV9tZXRob2QnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgPGF1aS1yYWRpby1ncm91cFxuICAgIHNpemU9XCJtZWRpdW1cIlxuICAgIFsobmdNb2RlbCldPVwiY3JlYXRlTWV0aG9kXCJcbiAgICBuYW1lPVwiY3JlYXRlTWV0aG9kXCJcbiAgICBbYWNsUmVhZG9ubHlGaWVsZF09XCJpc0Zyb21TbmFwc2hvdCB8fCAhIWNyZWF0ZVR5cGVcIlxuICAgIFthY2xSZWFkb25seUZpZWxkVGVtcGxhdGVdPVwiY3JlYXRlVHlwZVRtcGxcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cImNyZWF0ZU1ldGhvZENoYW5nZSgkZXZlbnQpXCJcbiAgPlxuICAgIDxhdWktcmFkaW8tYnV0dG9uIFt2YWx1ZV09XCJQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlLkRZTkFNSUNcIj5cbiAgICAgIHt7ICdzdG9yYWdlLmR5bmFtaWNfY3JlYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYXVpLXJhZGlvLWJ1dHRvbj5cbiAgICA8YXVpLXJhZGlvLWJ1dHRvbiBbdmFsdWVdPVwiUHZjU3RvcmFnZUNsYXNzQ3JlYXRlVHlwZS5TVEFUSUNcIj5cbiAgICAgIHt7ICdzdG9yYWdlLnN0YXRpY19tYXRjaCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2F1aS1yYWRpby1idXR0b24+XG4gIDwvYXVpLXJhZGlvLWdyb3VwPlxuICA8bmctdGVtcGxhdGUgI2NyZWF0ZVR5cGVUbXBsPlxuICAgIHt7XG4gICAgICAoY3JlYXRlTWV0aG9kID09PSBQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlLkRZTkFNSUNcbiAgICAgICAgPyAnc3RvcmFnZS5keW5hbWljX2NyZWF0ZSdcbiAgICAgICAgOiAnc3RvcmFnZS5zdGF0aWNfbWF0Y2gnXG4gICAgICApIHwgdHJhbnNsYXRlXG4gICAgfX1cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvYXVpLWZvcm0taXRlbT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIidzdG9yYWdlQ2xhc3NOYW1lJyB8IHB1cmU6IGRpc3BsYXlGaWVsZFN1cHBvcnRlZFwiPlxuICA8YXVpLWZvcm0taXRlbVxuICAgICpuZ0lmPVwiY3JlYXRlTWV0aG9kICE9PSBQdmNTdG9yYWdlQ2xhc3NDcmVhdGVUeXBlLlNUQVRJQ1wiXG4gICAgd2lkdGg9XCJtZWRpdW1cIlxuICA+XG4gICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3N0b3JhZ2VjbGFzcycgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgIDxhY2wtc3RvcmFnZWNsYXNzLXNlbGVjdFxuICAgICAgW3N0b3JhZ2VDbGFzc2VzXT1cInN0b3JhZ2VDbGFzc0xpc3QkIHwgYXN5bmNcIlxuICAgICAgW3ZvbHVtZVNuYXBzaG90Q2xhc3Nlc109XCJ2b2x1bWVTbmFwc2hvdENsYXNzTGlzdCQgfCBhc3luY1wiXG4gICAgICBbaXNGcm9tU25hcHNob3RdPVwiaXNGcm9tU25hcHNob3RcIlxuICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICByZXF1aXJlZFxuICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC5zdG9yYWdlQ2xhc3NOYW1lXCJcbiAgICAgIG5hbWU9XCJzdG9yYWdlQ2xhc3NOYW1lXCJcbiAgICAgICNzdG9yYWdlQ2xhc3NOYW1lPVwibmdNb2RlbFwiXG4gICAgICAoc3RvcmFnZUNsYXNzQ2hhbmdlKT1cInN0b3JhZ2VjbGFzc0NoYW5nZSgkZXZlbnQpXCJcbiAgICA+PC9hY2wtc3RvcmFnZWNsYXNzLXNlbGVjdD5cbiAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgIGF1aUZvcm1JdGVtRXJyb3JcbiAgICAgIFtlcnJvcnNdPVwic3RvcmFnZUNsYXNzTmFtZS5lcnJvcnNcIlxuICAgID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuICA8L2F1aS1mb3JtLWl0ZW0+XG48L25nLWNvbnRhaW5lcj5cblxuPGF1aS1mb3JtLWl0ZW0gKm5nSWY9XCIndm9sdW1lTW9kZScgfCBwdXJlOiBkaXNwbGF5RmllbGRTdXBwb3J0ZWRcIj5cbiAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3N0b3JhZ2Uudm9sdW1lX21vZGUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgPGF1aS1yYWRpby1ncm91cFxuICAgIHNpemU9XCJtZWRpdW1cIlxuICAgIFsobmdNb2RlbCldPVwibW9kZWwudm9sdW1lTW9kZVwiXG4gICAgbmFtZT1cInZvbHVtZU1vZGVcIlxuICAgIFthY2xSZWFkb25seUZpZWxkXT1cImlzRnJvbVNuYXBzaG90IHx8ICEhdm9sdW1lTW9kZVwiXG4gICAgW2FjbFJlYWRvbmx5RmllbGRUZW1wbGF0ZV09XCJ2b2x1bWVNb2RlVG1wbFwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwidm9sdW1lTW9kZUNoYW5nZSgkZXZlbnQpXCJcbiAgPlxuICAgIDxhdWktcmFkaW8tYnV0dG9uXG4gICAgICAqbmdGb3I9XCJsZXQgbW9kZSBvZiB2b2x1bWVNb2Rlc1wiXG4gICAgICBbYXVpVG9vbHRpcF09XCInc3RvcmFnZS5zdG9yYWdlX2ZvcmJpZF9zZWxlY3Rfdm9sdW1lX21vZGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFthdWlUb29sdGlwRGlzYWJsZWRdPVwiXG4gICAgICAgICEoXG4gICAgICAgICAgbW9kZVxuICAgICAgICAgIHwgcHVyZVxuICAgICAgICAgICAgOiBzdG9yYWdlQ29tbW9uVXRpbC5pc1ZvbHVtZU1vZGVEaXNhYmxlZFxuICAgICAgICAgICAgOiBzZWxlY3RlZFN0b3JhZ2VTZWxlY3RPcHRpb25cbiAgICAgICAgKVxuICAgICAgXCJcbiAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgbW9kZVxuICAgICAgICAgIHwgcHVyZVxuICAgICAgICAgICAgOiBzdG9yYWdlQ29tbW9uVXRpbC5pc1ZvbHVtZU1vZGVEaXNhYmxlZFxuICAgICAgICAgICAgOiBzZWxlY3RlZFN0b3JhZ2VTZWxlY3RPcHRpb25cbiAgICAgIFwiXG4gICAgICBbdmFsdWVdPVwibW9kZVwiXG4gICAgPlxuICAgICAge3sgJ3N0b3JhZ2UuJyArIFZvbHVtZU1vZGVUcmFuc2xhdGVLZXlbbW9kZV0gfCB0cmFuc2xhdGUgfX1cbiAgICA8L2F1aS1yYWRpby1idXR0b24+XG4gIDwvYXVpLXJhZGlvLWdyb3VwPlxuICA8ZGl2XG4gICAgYXVpRm9ybUl0ZW1BZGRvblxuICAgICpuZ0lmPVwiIXZvbHVtZU1vZGVcIlxuICA+XG4gICAgPGF1aS1pY29uXG4gICAgICBbYXVpVG9vbHRpcF09XCJ2b2x1bWVNb2RlVGlwXCJcbiAgICAgIFthdWlUb29sdGlwUG9zaXRpb25dPVwiJ3RvcCBjZW50ZXInXCJcbiAgICAgIGljb249XCJxdWVzdGlvbl9jaXJjbGVcIlxuICAgICAgY2xhc3M9XCJpY29uLS1oZWxwXCJcbiAgICA+PC9hdWktaWNvbj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjdm9sdW1lTW9kZVRpcD5cbiAgICA8dWwgY2xhc3M9XCJkLWxpc3RcIj5cbiAgICAgIDxsaT57eyAnc3RvcmFnZS52b2x1bWVfbW9kZV9maWxlX3N5c3RlbV9oaW50JyB8IHRyYW5zbGF0ZSB9fTwvbGk+XG4gICAgICA8bGk+e3sgJ3N0b3JhZ2Uudm9sdW1lX21vZGVfYmxvY2tfZGV2aWNlX2hpbnQnIHwgdHJhbnNsYXRlIH19PC9saT5cbiAgICA8L3VsPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI3ZvbHVtZU1vZGVUbXBsPlxuICAgIHt7XG4gICAgICAobW9kZWwudm9sdW1lTW9kZSA9PT0gJ0ZpbGVzeXN0ZW0nXG4gICAgICAgID8gJ3N0b3JhZ2UuZmlsZV9zeXN0ZW0nXG4gICAgICAgIDogJ3N0b3JhZ2UuYmxvY2tfZGV2aWNlJ1xuICAgICAgKSB8IHRyYW5zbGF0ZVxuICAgIH19XG4gIDwvbmctdGVtcGxhdGU+XG48L2F1aS1mb3JtLWl0ZW0+XG5cbjxhdWktZm9ybS1pdGVtICpuZ0lmPVwiJ2FjY2Vzc01vZGVzJyB8IHB1cmU6IGRpc3BsYXlGaWVsZFN1cHBvcnRlZFwiPlxuICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnc3RvcmFnZS5hY2Nlc3NfbW9kZScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICA8YXVpLXJhZGlvLWdyb3VwXG4gICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgWyhuZ01vZGVsKV09XCJtb2RlbC5hY2Nlc3NNb2Rlc1wiXG4gICAgbmFtZT1cImFjY2Vzc01vZGVzXCJcbiAgICAjYWNjZXNzTW9kZT1cIm5nTW9kZWxcIlxuICA+XG4gICAgPGF1aS1yYWRpby1idXR0b25cbiAgICAgICpuZ0Zvcj1cImxldCBtb2RlIG9mIGFjY2Vzc01vZGVzXCJcbiAgICAgIFthdWlUb29sdGlwXT1cIidzdG9yYWdlLnN0b3JhZ2VfZm9yYmlkX3NlbGVjdF9hY2Nlc3NfbW9kZScgfCB0cmFuc2xhdGVcIlxuICAgICAgW2F1aVRvb2x0aXBEaXNhYmxlZF09XCJcbiAgICAgICAgIShcbiAgICAgICAgICBtb2RlXG4gICAgICAgICAgfCBwdXJlXG4gICAgICAgICAgICA6IHN0b3JhZ2VDb21tb25VdGlsLmlzQWNjZXNzTW9kZURpc2FibGVkXG4gICAgICAgICAgICA6IHNlbGVjdGVkU3RvcmFnZVNlbGVjdE9wdGlvblxuICAgICAgICAgICAgOiBtb2RlbC52b2x1bWVNb2RlID09PSAnQmxvY2snXG4gICAgICAgIClcbiAgICAgIFwiXG4gICAgICBbdmFsdWVdPVwibW9kZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIG1vZGVcbiAgICAgICAgICB8IHB1cmVcbiAgICAgICAgICAgIDogc3RvcmFnZUNvbW1vblV0aWwuaXNBY2Nlc3NNb2RlRGlzYWJsZWRcbiAgICAgICAgICAgIDogc2VsZWN0ZWRTdG9yYWdlU2VsZWN0T3B0aW9uXG4gICAgICAgICAgICA6IG1vZGVsLnZvbHVtZU1vZGUgPT09ICdCbG9jaydcbiAgICAgIFwiXG4gICAgPlxuICAgICAge3sgJ3N0b3JhZ2UuJyArIEFjY2Vzc01vZGVUcmFuc2xhdGVLZXlbbW9kZV0gfCB0cmFuc2xhdGUgfX1cbiAgICA8L2F1aS1yYWRpby1idXR0b24+XG4gIDwvYXVpLXJhZGlvLWdyb3VwPlxuICA8ZGl2IGF1aUZvcm1JdGVtQWRkb24+XG4gICAgPGF1aS1pY29uXG4gICAgICBbYXVpVG9vbHRpcF09XCJhY2Nlc3NNb2RlVGlwXCJcbiAgICAgIFthdWlUb29sdGlwUG9zaXRpb25dPVwiJ3RvcCBjZW50ZXInXCJcbiAgICAgIGljb249XCJxdWVzdGlvbl9jaXJjbGVcIlxuICAgICAgY2xhc3M9XCJpY29uLS1oZWxwXCJcbiAgICA+PC9hdWktaWNvbj5cbiAgPC9kaXY+XG4gIDxhY2wtZXJyb3JzLW1hcHBlclxuICAgIGF1aUZvcm1JdGVtRXJyb3JcbiAgICBbZXJyb3JzXT1cImFjY2Vzc01vZGUuZXJyb3JzXCJcbiAgPjwvYWNsLWVycm9ycy1tYXBwZXI+XG4gIDxuZy10ZW1wbGF0ZSAjYWNjZXNzTW9kZVRpcD5cbiAgICA8dWwgY2xhc3M9XCJkLWxpc3RcIj5cbiAgICAgIDxsaT57eyAnc3RvcmFnZS5hY2Nlc3NfbW9kZV9yd28nIHwgdHJhbnNsYXRlIH19PC9saT5cbiAgICAgIDxsaT57eyAnc3RvcmFnZS5hY2Nlc3NfbW9kZV9yb3gnIHwgdHJhbnNsYXRlIH19PC9saT5cbiAgICAgIDxsaT57eyAnc3RvcmFnZS5hY2Nlc3NfbW9kZV9yd3gnIHwgdHJhbnNsYXRlIH19PC9saT5cbiAgICA8L3VsPlxuICA8L25nLXRlbXBsYXRlPlxuPC9hdWktZm9ybS1pdGVtPlxuXG48YXVpLWZvcm0taXRlbVxuICB3aWR0aD1cIm1lZGl1bVwiXG4gICpuZ0lmPVwiJ3N0b3JhZ2UnIHwgcHVyZTogZGlzcGxheUZpZWxkU3VwcG9ydGVkXCJcbj5cbiAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3N0b3JhZ2UuY2FwYWNpdHknIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgPGlucHV0XG4gICAgYXVpLWlucHV0XG4gICAgdHlwZT1cInRleHRcIlxuICAgIFtwYXR0ZXJuXT1cIlBPU0lUSVZFX0lOVF9QQVRURVJOLnBhdHRlcm5cIlxuICAgIFsobmdNb2RlbCldPVwibW9kZWwuc3RvcmFnZVwiXG4gICAgbmFtZT1cInN0b3JhZ2VcIlxuICAgICNzdG9yYWdlPVwibmdNb2RlbFwiXG4gICAgcmVxdWlyZWRcbiAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICByZXF1aXJlZFxuICAgIFthY2xSZWFkb25seUZpZWxkXT1cImlzRnJvbVNuYXBzaG90XCJcbiAgICBbYWNsUmVhZG9ubHlGaWVsZFRlbXBsYXRlXT1cImNhcGFjaXR5VHBsXCJcbiAgLz5cbiAgPGF1aS1zZWxlY3RcbiAgICAqbmdJZj1cIiFpc0Zyb21TbmFwc2hvdFwiXG4gICAgWyhuZ01vZGVsKV09XCJ1bml0XCJcbiAgICBjbGFzcz1cInR3LW1heC13LVs2MHB4XSB0dy1tbC1bLTYwcHhdXCJcbiAgPlxuICAgIDxhdWktb3B0aW9uXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBVTklUU1wiXG4gICAgICBbbGFiZWxdPVwiaXRlbVwiXG4gICAgICBbdmFsdWVdPVwiaXRlbVwiXG4gICAgPlxuICAgICAge3sgaXRlbSB9fVxuICAgIDwvYXVpLW9wdGlvbj5cbiAgPC9hdWktc2VsZWN0PlxuICA8bmctdGVtcGxhdGUgI2NhcGFjaXR5VHBsPiB7eyBtb2RlbC5zdG9yYWdlIH19R2kgPC9uZy10ZW1wbGF0ZT5cbiAgPGFjbC1lcnJvcnMtbWFwcGVyXG4gICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgIFtlcnJvcnNdPVwic3RvcmFnZS5lcnJvcnNcIlxuICAgIFtlcnJvcnNNYXBwZXJdPVwie1xuICAgICAgcGF0dGVybjogUE9TSVRJVkVfSU5UX1BBVFRFUk4udGlwIHwgdHJhbnNsYXRlLFxuICAgIH1cIlxuICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbjwvYXVpLWZvcm0taXRlbT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dBZHZhbmNlZEZpZWxkXCI+XG4gIDxhY2wtZm9sZGFibGUtYmxvY2sgaGludD1cInt7ICdzdG9yYWdlLmFkdmFuY2VkJyB8IHRyYW5zbGF0ZSB9fVwiPlxuICAgIDxhdWktZm9ybS1pdGVtXG4gICAgICBmb3JtR3JvdXBOYW1lPVwibWV0YWRhdGFcIlxuICAgICAgKm5nSWY9XCInbGFiZWxzJyB8IHB1cmU6IGRpc3BsYXlGaWVsZFN1cHBvcnRlZFwiXG4gICAgPlxuICAgICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ2xhYmVsJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICA8YWNsLWtleS12YWx1ZS1mb3JtLXRhYmxlXG4gICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLmxhYmVsc1wiXG4gICAgICAgIG5hbWU9XCJsYWJlbHNcIlxuICAgICAgICBbcmVzb3VyY2VOYW1lVHJhbnNsYXRlZF09XCInc3RvcmFnZS5sYWJlbHMnIHwgdHJhbnNsYXRlIHwgbG93ZXJjYXNlXCJcbiAgICAgICAgW3ZhbGlkYXRvcl09XCJsYWJlbFZhbGlkYXRvclwiXG4gICAgICAgIFtlcnJvck1hcHBlcl09XCJsYWJlbEVycm9yTWFwcGVyJCB8IGFzeW5jXCJcbiAgICAgID48L2FjbC1rZXktdmFsdWUtZm9ybS10YWJsZT5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG4gICAgPGF1aS1mb3JtLWl0ZW1cbiAgICAgIGZvcm1Hcm91cE5hbWU9XCJtZXRhZGF0YVwiXG4gICAgICAqbmdJZj1cIidhbm5vdGF0aW9ucycgfCBwdXJlOiBkaXNwbGF5RmllbGRTdXBwb3J0ZWRcIlxuICAgID5cbiAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICdzdG9yYWdlLms4c19hbm5vdGF0aW9uJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICA8YWNsLWtleS12YWx1ZS1mb3JtLXRhYmxlXG4gICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICBbcmVzb3VyY2VOYW1lVHJhbnNsYXRlZF09XCJcbiAgICAgICAgICAnc3RvcmFnZS5rOHNfYW5ub3RhdGlvbicgfCB0cmFuc2xhdGUgfCBsb3dlcmNhc2VcbiAgICAgICAgXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC5hbm5vdGF0aW9uc1wiXG4gICAgICAgIG5hbWU9XCJhbm5vdGF0aW9uc1wiXG4gICAgICAgIFt2YWxpZGF0b3JdPVwiYW5ub3RhdGlvblZhbGlkYXRvclwiXG4gICAgICAgIFtlcnJvck1hcHBlcl09XCJhbm5vdGF0aW9uRXJyb3JNYXBwZXIkIHwgYXN5bmNcIlxuICAgICAgPjwvYWNsLWtleS12YWx1ZS1mb3JtLXRhYmxlPlxuICAgIDwvYXVpLWZvcm0taXRlbT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiJ3NlbGVjdG9yJyB8IHB1cmU6IGRpc3BsYXlGaWVsZFN1cHBvcnRlZFwiPlxuICAgICAgPGF1aS1mb3JtLWl0ZW1cbiAgICAgICAgW2hpZGRlbl09XCJjcmVhdGVNZXRob2QgPT09IFB2Y1N0b3JhZ2VDbGFzc0NyZWF0ZVR5cGUuRFlOQU1JQ1wiXG4gICAgICA+XG4gICAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICdzdG9yYWdlLnNlbGVjdG9yJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgIDxhY2wta2V5LXZhbHVlLWZvcm0tdGFibGVcbiAgICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLnNlbGVjdG9yXCJcbiAgICAgICAgICBuYW1lPVwic2VsZWN0b3JcIlxuICAgICAgICA+PC9hY2wta2V5LXZhbHVlLWZvcm0tdGFibGU+XG4gICAgICA8L2F1aS1mb3JtLWl0ZW0+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYWNsLWZvbGRhYmxlLWJsb2NrPlxuPC9uZy1jb250YWluZXI+XG4iXX0=