@wizco/fenixds-ngx 17.0.20 → 17.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
- import { Component, EventEmitter, Input, Output, SkipSelf } from '@angular/core';
2
- import { HttpClientModule, HttpEventType } from '@angular/common/http';
1
+ import { Component, EventEmitter, Input, Output, SkipSelf, } from '@angular/core';
2
+ import { HttpClientModule, HttpEventType, } from '@angular/common/http';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common/http";
@@ -7,7 +7,7 @@ import * as i2 from "@angular/common";
7
7
  export class UploadComponent {
8
8
  http;
9
9
  /* Texto de descrição do arquivo */
10
- description = "(XX MB de tamanho máximo e é permitido qualquer tipo de arquivos)";
10
+ description = '(XX MB de tamanho máximo e é permitido qualquer tipo de arquivos)';
11
11
  /* config <AngularFileUploaderConfig> configuração do componente principais parâmetros */
12
12
  config = {
13
13
  uploadAPI: {
@@ -18,127 +18,127 @@ export class UploadComponent {
18
18
  },
19
19
  responseType: 'json',
20
20
  withCredentials: false,
21
- }
21
+ },
22
22
  };
23
23
  /*
24
- * Opção de resetar o componente
25
- */
24
+ * Opção de resetar o componente
25
+ */
26
26
  resetUpload = false;
27
27
  /*
28
- * Evento Resposta da requisição sendo sucesso ou erro
29
- */
28
+ * Evento Resposta da requisição sendo sucesso ou erro
29
+ */
30
30
  ApiResponse = new EventEmitter();
31
31
  /*
32
- * Evento javascript puro para retorno do arquivo
33
- */
32
+ * Evento javascript puro para retorno do arquivo
33
+ */
34
34
  fileSelected = new EventEmitter();
35
35
  /**
36
- * @ignore
37
- */
36
+ * @ignore
37
+ */
38
38
  theme = '';
39
39
  /**
40
- * @ignore
41
- */
40
+ * @ignore
41
+ */
42
42
  id = 0;
43
43
  /**
44
- * @ignore
45
- */
44
+ * @ignore
45
+ */
46
46
  hideProgressBar = false;
47
47
  /**
48
- * @ignore
49
- */
48
+ * @ignore
49
+ */
50
50
  maxSize = 20 * 1024000; // mb to bytes.
51
51
  /**
52
- * @ignore
53
- */
52
+ * @ignore
53
+ */
54
54
  uploadAPI = '';
55
55
  /**
56
- * @ignore
57
- */
56
+ * @ignore
57
+ */
58
58
  method = 'POST';
59
59
  /**
60
- * @ignore
61
- */
60
+ * @ignore
61
+ */
62
62
  formatsAllowed = '*';
63
63
  /**
64
- * @ignore
65
- */
64
+ * @ignore
65
+ */
66
66
  formatsAllowedText = '';
67
67
  /**
68
- * @ignore
69
- */
68
+ * @ignore
69
+ */
70
70
  multiple = false;
71
71
  /**
72
- * @ignore
73
- */
72
+ * @ignore
73
+ */
74
74
  headers = {};
75
75
  /**
76
- * @ignore
77
- */
76
+ * @ignore
77
+ */
78
78
  params = {};
79
79
  /**
80
- * @ignore
81
- */
80
+ * @ignore
81
+ */
82
82
  responseType = 'blob';
83
83
  /**
84
- * @ignore
85
- */
84
+ * @ignore
85
+ */
86
86
  hideResetBtn = false;
87
87
  /**
88
- * @ignore
89
- */
88
+ * @ignore
89
+ */
90
90
  hideSelectBtn = false;
91
91
  /**
92
- * @ignore
93
- */
92
+ * @ignore
93
+ */
94
94
  allowedFiles = [];
95
95
  /**
96
- * @ignore
97
- */
96
+ * @ignore
97
+ */
98
98
  notAllowedFiles = [];
99
99
  /**
100
- * @ignore
101
- */
100
+ * @ignore
101
+ */
102
102
  Caption = [];
103
103
  /**
104
- * @ignore
105
- */
104
+ * @ignore
105
+ */
106
106
  isAllowedFileSingle = true;
107
107
  /**
108
- * @ignore
109
- */
108
+ * @ignore
109
+ */
110
110
  progressBarShow = false;
111
111
  /**
112
- * @ignore
113
- */
112
+ * @ignore
113
+ */
114
114
  enableUploadBtn = false;
115
115
  /**
116
- * @ignore
117
- */
116
+ * @ignore
117
+ */
118
118
  uploadMsg = false;
119
119
  /**
120
- * @ignore
121
- */
120
+ * @ignore
121
+ */
122
122
  afterUpload = false;
123
123
  /**
124
- * @ignore
125
- */
124
+ * @ignore
125
+ */
126
126
  uploadStarted = false;
127
127
  /**
128
- * @ignore
129
- */
130
- uploadMsgText = "";
128
+ * @ignore
129
+ */
130
+ uploadMsgText = '';
131
131
  /**
132
- * @ignore
133
- */
132
+ * @ignore
133
+ */
134
134
  uploadMsgClass = 'text-success';
135
135
  /**
136
- * @ignore
137
- */
136
+ * @ignore
137
+ */
138
138
  uploadPercent = 0;
139
139
  /**
140
- * @ignore
141
- */
140
+ * @ignore
141
+ */
142
142
  replaceTexts = {
143
143
  selectFileBtn: 'Selecionar Arquivo',
144
144
  resetBtn: 'Resetar',
@@ -150,31 +150,31 @@ export class UploadComponent {
150
150
  sizeLimit: 'Tamanho máximo',
151
151
  };
152
152
  /**
153
- * @ignore
154
- */
153
+ * @ignore
154
+ */
155
155
  currentUploads = [];
156
156
  /**
157
- * @ignore
158
- */
157
+ * @ignore
158
+ */
159
159
  fileNameIndex = true;
160
160
  /**
161
- * @ignore
162
- */
161
+ * @ignore
162
+ */
163
163
  withCredentials = false;
164
164
  /**
165
- * @ignore
166
- */
165
+ * @ignore
166
+ */
167
167
  autoUpload = true;
168
168
  /**
169
- * @ignore
170
- */
169
+ * @ignore
170
+ */
171
171
  idDate = +new Date();
172
172
  constructor(http) {
173
173
  this.http = http;
174
174
  }
175
175
  /**
176
- * @ignore
177
- */
176
+ * @ignore
177
+ */
178
178
  ngOnChanges(changes) {
179
179
  // Track changes in Configuration and see if user has even provided Configuration.
180
180
  if (changes.config && this.config) {
@@ -198,7 +198,8 @@ export class UploadComponent {
198
198
  this.responseType = this.config.uploadAPI.responseType || 'json';
199
199
  this.withCredentials = this.config.uploadAPI.withCredentials || false;
200
200
  }
201
- this.formatsAllowedText = this.formatsAllowed === '*' ? '' : '(' + this.formatsAllowed + ')';
201
+ this.formatsAllowedText =
202
+ this.formatsAllowed === '*' ? '' : '(' + this.formatsAllowed + ')';
202
203
  this.fileNameIndex = this.config.fileNameIndex === false ? false : true;
203
204
  this.autoUpload = this.config.autoUpload || false;
204
205
  if (this.config.replaceTexts) {
@@ -244,7 +245,9 @@ export class UploadComponent {
244
245
  // tslint:disable-next-line: for-of
245
246
  for (let i = 0; i < fileList.length; i++) {
246
247
  const _currentFileExt = fileExtRegExp.exec(fileList[i].name);
247
- const currentFileExt = typeof _currentFileExt[1] === 'string' ? _currentFileExt[1].toLowerCase() : '';
248
+ const currentFileExt = typeof _currentFileExt[1] === 'string'
249
+ ? _currentFileExt[1].toLowerCase()
250
+ : '';
248
251
  const isFormatValid = this.formatsAllowed.includes('*')
249
252
  ? true
250
253
  : this.formatsAllowed.includes(currentFileExt);
@@ -314,7 +317,9 @@ export class UploadComponent {
314
317
  this.uploadMsg = true;
315
318
  this.afterUpload = true;
316
319
  if (!isError) {
317
- this.uploadMsgText = this.replaceTexts.afterUploadMsg_success || 'Successfully Uploaded !';
320
+ this.uploadMsgText =
321
+ this.replaceTexts.afterUploadMsg_success ||
322
+ 'Successfully Uploaded !';
318
323
  this.uploadMsgClass = 'text-success lead';
319
324
  }
320
325
  }
@@ -340,7 +345,8 @@ export class UploadComponent {
340
345
  this.enableUploadBtn = false;
341
346
  this.uploadMsg = true;
342
347
  this.afterUpload = true;
343
- this.uploadMsgText = this.replaceTexts.afterUploadMsg_error || 'Error in uploading files';
348
+ this.uploadMsgText =
349
+ this.replaceTexts.afterUploadMsg_error || 'Error in uploading files';
344
350
  this.uploadMsgClass = 'text-danger lead';
345
351
  }
346
352
  removeFile(i, sf_na) {
@@ -377,11 +383,11 @@ export class UploadComponent {
377
383
  event.dataTransfer.dropEffect = 'copy';
378
384
  }
379
385
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UploadComponent, deps: [{ token: i1.HttpClient, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
380
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UploadComponent, isStandalone: true, selector: "wco-file-upload", inputs: { description: "description", config: "config", resetUpload: "resetUpload" }, outputs: { ApiResponse: "apiResponse", fileSelected: "fileSelected" }, usesOnChanges: true, ngImport: i0, template: "<label for=\"sel{{id}}\" class=\"wco-file-upload\" (drop)=\"drop($event)\" (dragover)=\"allowDrop($event)\">\n <div class=\"upload__drop-info\">\n <span>Arraste-os aqui ou</span>\n <div class=\"upload__button\">\n <span class=\"material-icons\">cloud_upload</span>\n <span>{{replaceTexts.selectFileBtn}}</span>\n </div>\n </div>\n <span class=\"upload__info\" *ngIf=\"!allowedFiles.length\" >{{description}}</span>\n <ng-container *ngIf=\"allowedFiles.length\">\n <span class=\"upload__info\" *ngFor=\"let sf of allowedFiles;let i=index\">\n {{sf.name}} <small>({{convertSize(sf.size)}})</small>\n </span>\n </ng-container>\n <input class=\"upload__file\" type=\"file\" id=\"sel{{id}}\" (change)=\"onChange($event)\" style=\"display: none\" title=\"Select file\"\n name=\"files[]\" [accept]=\"formatsAllowed\" [attr.multiple]=\"multiple ? '' : null\" />\n</label>\n", styles: [".wco-file-upload{--color-button: var(--wco-color-primary-600);--color-button-hover: var(--wco-color-primary-700);border:2px dashed #c1c3c5;border-radius:10px;padding:10px;display:flex;flex-direction:column;align-items:center;gap:12px;cursor:pointer}.wco-file-upload .upload__drop-info{display:inherit;justify-content:center;align-items:center;gap:16px}.wco-file-upload .upload__button{display:inherit;justify-content:center;gap:8px;padding:10px 0}.wco-file-upload .upload__button span,.wco-file-upload .upload__button label{color:var(--color-button);cursor:pointer}.wco-file-upload .upload__file{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: HttpClientModule }] });
386
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UploadComponent, isStandalone: true, selector: "wco-file-upload", inputs: { description: "description", config: "config", resetUpload: "resetUpload" }, outputs: { ApiResponse: "apiResponse", fileSelected: "fileSelected" }, usesOnChanges: true, ngImport: i0, template: "<label for=\"sel{{id}}\" class=\"wco-form-upload\" (drop)=\"drop($event)\" (dragover)=\"allowDrop($event)\">\n <div class=\"wco-form-upload__info\">\n <span>Arraste-os aqui ou</span>\n <span>\n <span class=\"material-icons\">cloud_upload</span>\n <span>{{replaceTexts.selectFileBtn}}</span>\n </span>\n </div>\n <span class=\"upload__info\" *ngIf=\"!allowedFiles.length\" >{{description}}</span>\n <ng-container *ngIf=\"allowedFiles.length\">\n <span class=\"upload__info\" *ngFor=\"let sf of allowedFiles;let i=index\">\n {{sf.name}} <small>({{convertSize(sf.size)}})</small>\n </span>\n </ng-container>\n <input type=\"file\" id=\"sel{{id}}\" (change)=\"onChange($event)\" style=\"display: none\" title=\"Select file\"\n name=\"files[]\" [accept]=\"formatsAllowed\" [attr.multiple]=\"multiple ? '' : null\" />\n</label>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: HttpClientModule }] });
381
387
  }
382
388
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UploadComponent, decorators: [{
383
389
  type: Component,
384
- args: [{ selector: "wco-file-upload", standalone: true, imports: [CommonModule, HttpClientModule], template: "<label for=\"sel{{id}}\" class=\"wco-file-upload\" (drop)=\"drop($event)\" (dragover)=\"allowDrop($event)\">\n <div class=\"upload__drop-info\">\n <span>Arraste-os aqui ou</span>\n <div class=\"upload__button\">\n <span class=\"material-icons\">cloud_upload</span>\n <span>{{replaceTexts.selectFileBtn}}</span>\n </div>\n </div>\n <span class=\"upload__info\" *ngIf=\"!allowedFiles.length\" >{{description}}</span>\n <ng-container *ngIf=\"allowedFiles.length\">\n <span class=\"upload__info\" *ngFor=\"let sf of allowedFiles;let i=index\">\n {{sf.name}} <small>({{convertSize(sf.size)}})</small>\n </span>\n </ng-container>\n <input class=\"upload__file\" type=\"file\" id=\"sel{{id}}\" (change)=\"onChange($event)\" style=\"display: none\" title=\"Select file\"\n name=\"files[]\" [accept]=\"formatsAllowed\" [attr.multiple]=\"multiple ? '' : null\" />\n</label>\n", styles: [".wco-file-upload{--color-button: var(--wco-color-primary-600);--color-button-hover: var(--wco-color-primary-700);border:2px dashed #c1c3c5;border-radius:10px;padding:10px;display:flex;flex-direction:column;align-items:center;gap:12px;cursor:pointer}.wco-file-upload .upload__drop-info{display:inherit;justify-content:center;align-items:center;gap:16px}.wco-file-upload .upload__button{display:inherit;justify-content:center;gap:8px;padding:10px 0}.wco-file-upload .upload__button span,.wco-file-upload .upload__button label{color:var(--color-button);cursor:pointer}.wco-file-upload .upload__file{display:none}\n"] }]
390
+ args: [{ selector: 'wco-file-upload', standalone: true, imports: [CommonModule, HttpClientModule], template: "<label for=\"sel{{id}}\" class=\"wco-form-upload\" (drop)=\"drop($event)\" (dragover)=\"allowDrop($event)\">\n <div class=\"wco-form-upload__info\">\n <span>Arraste-os aqui ou</span>\n <span>\n <span class=\"material-icons\">cloud_upload</span>\n <span>{{replaceTexts.selectFileBtn}}</span>\n </span>\n </div>\n <span class=\"upload__info\" *ngIf=\"!allowedFiles.length\" >{{description}}</span>\n <ng-container *ngIf=\"allowedFiles.length\">\n <span class=\"upload__info\" *ngFor=\"let sf of allowedFiles;let i=index\">\n {{sf.name}} <small>({{convertSize(sf.size)}})</small>\n </span>\n </ng-container>\n <input type=\"file\" id=\"sel{{id}}\" (change)=\"onChange($event)\" style=\"display: none\" title=\"Select file\"\n name=\"files[]\" [accept]=\"formatsAllowed\" [attr.multiple]=\"multiple ? '' : null\" />\n</label>" }]
385
391
  }], ctorParameters: function () { return [{ type: i1.HttpClient, decorators: [{
386
392
  type: SkipSelf
387
393
  }] }]; }, propDecorators: { description: [{
@@ -396,4 +402,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
396
402
  }], fileSelected: [{
397
403
  type: Output
398
404
  }] } });
399
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb25lbnRzL3NyYy9saWIvdXBsb2FkL3VwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9uZW50cy9zcmMvbGliL3VwbG9hZC91cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUFhLE1BQU0sRUFBRSxRQUFRLEVBQ25DLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUVkLE1BQU0sc0JBQXNCLENBQUM7QUFJOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBVy9DLE1BQU0sT0FBTyxlQUFlO0lBNktNO0lBNUtoQyxtQ0FBbUM7SUFDMUIsV0FBVyxHQUFXLG1FQUFtRSxDQUFBO0lBQ2xHLHlGQUF5RjtJQUNoRixNQUFNLEdBQThCO1FBQzNDLFNBQVMsRUFBRTtZQUNULEdBQUcsRUFBRSxFQUFFO1lBQ1AsTUFBTSxFQUFFLE1BQU07WUFDZCxPQUFPLEVBQUU7Z0JBQ1AsY0FBYyxFQUFFLDBCQUEwQjthQUMzQztZQUNELFlBQVksRUFBRSxNQUFNO1lBQ3BCLGVBQWUsRUFBRSxLQUFLO1NBQ3ZCO0tBQ0YsQ0FBQztJQUdGOztNQUVFO0lBQ08sV0FBVyxHQUFHLEtBQUssQ0FBQztJQUU3Qjs7TUFFRTtJQUNxQixXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUN4RDs7TUFFRTtJQUNRLFlBQVksR0FBb0MsSUFBSSxZQUFZLEVBQXFCLENBQUM7SUFFaEc7O01BRUU7SUFDRixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25COztNQUVFO0lBQ0YsRUFBRSxHQUFXLENBQUMsQ0FBQztJQUNmOztN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RyxLQUFLO1lBQ3RDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzlDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNqQjtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsS0FBVTtRQUNiLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVU7UUFDbEIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7SUFDekMsQ0FBQzt3R0EvWVUsZUFBZTs0RkFBZixlQUFlLDZQQzFCNUIsdzRCQWlCQSw0cEJESVksWUFBWSwrUEFBRSxnQkFBZ0I7OzRGQUs3QixlQUFlO2tCQVIzQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQzs7MEJBa0w1QixRQUFROzRDQTNLWixXQUFXO3NCQUFuQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFnQkcsV0FBVztzQkFBbkIsS0FBSztnQkFLaUIsV0FBVztzQkFBakMsTUFBTTt1QkFBQyxhQUFhO2dCQUlYLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTa2lwU2VsZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgSHR0cENsaWVudCxcbiAgSHR0cENsaWVudE1vZHVsZSxcbiAgSHR0cEV2ZW50VHlwZSwgSHR0cEhlYWRlcnMsXG4gIEh0dHBQYXJhbXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5cblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJGaWxlVXBsb2FkZXJDb25maWcsIFJlcGxhY2VUZXh0cywgVXBsb2FkSW5mb1R5cGVzIH0gZnJvbSBcIi4vdXBsb2FkLnR5cGVzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJ3Y28tZmlsZS11cGxvYWRcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSHR0cENsaWVudE1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiBcIi4vdXBsb2FkLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi91cGxvYWQuY29tcG9uZW50LnNjc3NcIl0sXG59KVxuXG5leHBvcnQgY2xhc3MgVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyogVGV4dG8gZGUgZGVzY3Jpw6fDo28gZG8gYXJxdWl2byAqL1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbjogc3RyaW5nID0gXCIoWFggTUIgZGUgdGFtYW5obyBtw6F4aW1vIGUgw6kgcGVybWl0aWRvIHF1YWxxdWVyIHRpcG8gZGUgYXJxdWl2b3MpXCJcbiAgLyogY29uZmlnIDxBbmd1bGFyRmlsZVVwbG9hZGVyQ29uZmlnPiBjb25maWd1cmHDp8OjbyBkbyBjb21wb25lbnRlIHByaW5jaXBhaXMgcGFyw6JtZXRyb3MgKi9cbiAgQElucHV0KCkgY29uZmlnOiBBbmd1bGFyRmlsZVVwbG9hZGVyQ29uZmlnID0ge1xuICAgIHVwbG9hZEFQSToge1xuICAgICAgdXJsOiAnJyxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ3RleHQvcGxhaW47Y2hhcnNldD1VVEYtOCcsXG4gICAgICB9LFxuICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxuICAgIH1cbiAgfTtcblxuXG4gIC8qXG4gICogT3DDp8OjbyBkZSByZXNldGFyIG8gY29tcG9uZW50ZVxuICAqL1xuICBASW5wdXQoKSByZXNldFVwbG9hZCA9IGZhbHNlO1xuXG4gIC8qXG4gICogRXZlbnRvIFJlc3Bvc3RhIGRhIHJlcXVpc2nDp8OjbyBzZW5kbyBzdWNlc3NvIG91IGVycm9cbiAgKi9cbiAgQE91dHB1dCgnYXBpUmVzcG9uc2UnKSBBcGlSZXNwb25zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLypcbiAgKiBFdmVudG8gamF2YXNjcmlwdCBwdXJvIHBhcmEgcmV0b3JubyBkbyBhcnF1aXZvXG4gICovXG4gIEBPdXRwdXQoKSBmaWxlU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxVcGxvYWRJbmZvVHlwZXNbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPFVwbG9hZEluZm9UeXBlc1tdPigpO1xuXG4gIC8qKlxuICAqIEBpZ25vcmVcbiAgKi9cbiAgdGhlbWU6IHN0cmluZyA9ICcnO1xuICAvKipcbiAgKiBAaWdub3JlXG4gICovXG4gIGlkOiBudW1iZXIgPSAwO1xuICAvKipcbiAgKiBAaWdub3JlXG4gICovXG4gIGhpZGVQcm9ncmVzc0JhcjogYm9vbGVhbiA9IGZhbHNlO1xuICAvKipcbiAgKiBAaWdub3JlXG4gICovXG4gIG1heFNpemU6IG51bWJlciA9IDIwICogMTAyNDAwMDsgLy8gbWIgdG8gYnl0ZXMuXG4gIC8qKlxuICAqIEBpZ25vcmVcbiAgKi9cbiAgdXBsb2FkQVBJOiBzdHJpbmcgPSAnJztcbiAgLyoqXG4gICogQGlnbm9yZVxuICAqL1xuICBtZXRob2Q6IHN0cmluZyA9ICdQT1NUJztcbiAgLyoqXG4gICogQGlnbm9yZVxuICAqL1xuICBmb3JtYXRzQWxsb3dlZDogc3RyaW5nID0gJyonO1xuICAvKipcbiAgKiBAaWdub3JlXG4gICovXG4gIGZvcm1hdHNBbGxvd2VkVGV4dDogc3RyaW5nID0gJyc7XG4gIC8qKlxuICAqIEBpZ25vcmVcbiAgKi9cbiAgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICogQGlnbm9yZVxuICAqL1xuICBoZWFkZXJzOiBIdHRwSGVhZGVycyB8IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfSA9IHt9XG4gIC8qKlxuICAqIEBpZ25vcmVcbiAgKi9cbiAgcGFyYW1zOiBIdHRwUGFyYW1zIHwgeyBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH0gPSB7fVxuICAvKipcbiAgKiBAaWdub3JlXG4gICovXG4gIHJlc3BvbnNlVHlwZTogJ2pzb24nIHwgJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICd0ZXh0JyA9ICdibG9iJztcbiAgLyoqXG4gICogQGlnbm9yZVxuICAqL1xuICBoaWRlUmVzZXRCdG46IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICogQGlnbm9yZVxuICAqL1xuICBoaWRlU2VsZWN0QnRuOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKlxuICAqIEBpZ25vcmVcbiAgKi9cbiAgYWxsb3dlZEZpbGVzOiBGaWxlW10gPSBbXTtcbiAgLyoqXG4gICogQGlnbm9yZVxuICAqL1xuICBub3RBbGxvd2VkRmlsZXM6IHtcbiAgICBmaWxlTmFtZTogc3RyaW5nO1xuICAgIGZpbGVTaXplOiBzdHJpbmc7XG4gICAgZXJyb3JNc2c6IHN0cmluZztcbiAgfVtdID0gW107XG4gIC8qKlxuICAqIEBpZ25vcmVcbiAgKi9cbiAgQ2FwdGlvbjogc3RyaW5nW10gPSBbXTtcbiAgLyoqXG4gICogQGlnbm9yZVxuICAqL1xuICBpc0FsbG93ZWRGaWxlU2luZ2xlID0gdHJ1ZTtcbiAgLyoqXG4gICogQGlnbm9yZVxuICAqL1xuICBwcm9ncmVzc0JhclNob3cgPSBmYWxzZTtcbiAgLyoqXG4gICogQGlnbm9yZVxuICAqL1xuICBlbmFibGVVcGxvYWRCdG4gPSBmYWxzZTtcbiAgLyoqXG4gICogQGlnbm9yZVxuICAqL1xuICB1cGxvYWRNc2cgPSBmYWxzZTtcbiAgLyoqXG4gICogQGlnbm9yZVxuICAqL1xuICBhZnRlclVwbG9hZCA9IGZhbHNlO1xuICAvKipcbiAgKiBAaWdub3JlXG4gICovXG4gIHVwbG9hZFN0YXJ0ZWQgPSBmYWxzZTtcbiAgLyoqXG4gICogQGlnbm9yZVxuICAqL1xuICB1cGxvYWRNc2dUZXh0OiBzdHJpbmcgPSBcIlwiXG4gIC8qKlxuICAqIEBpZ25vcmVcbiAgKi9cbiAgdXBsb2FkTXNnQ2xhc3M6IHN0cmluZyA9ICd0ZXh0LXN1Y2Nlc3MnO1xuICAvKipcbiAgKiBAaWdub3JlXG4gICovXG4gIHVwbG9hZFBlcmNlbnQ6IG51bWJlciA9IDA7XG4gIC8qKlxuICAqIEBpZ25vcmVcbiAgKi9cbiAgcmVwbGFjZVRleHRzOiBSZXBsYWNlVGV4dHMgPSB7XG4gICAgc2VsZWN0RmlsZUJ0bjogJ1NlbGVjaW9uYXIgQXJxdWl2bycsXG4gICAgcmVzZXRCdG46ICdSZXNldGFyJyxcbiAgICB1cGxvYWRCdG46ICdFbnZpYXInLFxuICAgIGRyYWdORHJvcEJveDogJ0FycmFzdGUgZSBzb2x0ZScsXG4gICAgYXR0YWNoUGluQnRuOiAnQW5leGFyIEFycXVpdm8uLi4nLFxuICAgIGFmdGVyVXBsb2FkTXNnX3N1Y2Nlc3M6ICdFbnZpYWRvIGNvbSBzdWNlc3NvICEnLFxuICAgIGFmdGVyVXBsb2FkTXNnX2Vycm9yOiAnRmFsaGEgbm8gZW52aW8gIScsXG4gICAgc2l6ZUxpbWl0OiAnVGFtYW5obyBtw6F4aW1vJyxcbiAgfVxuICAvKipcbiAgKiBAaWdub3JlXG4gICovXG4gIGN1cnJlbnRVcGxvYWRzOiBhbnlbXSA9IFtdO1xuICAvKipcbiAgKiBAaWdub3JlXG4gICovXG4gIGZpbGVOYW1lSW5kZXggPSB0cnVlO1xuICAvKipcbiAgKiBAaWdub3JlXG4gICovXG4gIHdpdGhDcmVkZW50aWFscyA9IGZhbHNlO1xuICAvKipcbiAgKiBAaWdub3JlXG4gICovXG4gIGF1dG9VcGxvYWQgPSB0cnVlO1xuICAvKipcbiAgKiBAaWdub3JlXG4gICovXG4gIHByaXZhdGUgaWREYXRlOiBudW1iZXIgPSArbmV3IERhdGUoKTtcblxuICBjb25zdHJ1Y3RvcihAU2tpcFNlbGYoKSBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgLyoqXG4gICogQGlnbm9yZVxuICAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpIHtcbiAgICAvLyBUcmFjayBjaGFuZ2VzIGluIENvbmZpZ3VyYXRpb24gYW5kIHNlZSBpZiB1c2VyIGhhcyBldmVuIHByb3ZpZGVkIENvbmZpZ3VyYXRpb24uXG4gICAgaWYgKGNoYW5nZXMuY29uZmlnICYmIHRoaXMuY29uZmlnKSB7XG4gICAgICAvLyBBc3NpZ24gVXNlciBDb25maWd1cmF0aW9ucyB0byBMaWJyYXJ5IFByb3BlcnRpZXMuXG4gICAgICB0aGlzLnRoZW1lID0gdGhpcy5jb25maWcudGhlbWUgfHwgJyc7XG4gICAgICB0aGlzLmlkID1cbiAgICAgICAgdGhpcy5jb25maWcuaWQgfHxcbiAgICAgICAgcGFyc2VJbnQoKHRoaXMuaWREYXRlIC8gMTAwMDApLnRvU3RyaW5nKCkuc3BsaXQoJy4nKVsxXSwgMTApICtcbiAgICAgICAgICBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyMCkgKiAxMDAwMDtcbiAgICAgIHRoaXMuaGlkZVByb2dyZXNzQmFyID0gdGhpcy5jb25maWcuaGlkZVByb2dyZXNzQmFyIHx8IGZhbHNlO1xuICAgICAgdGhpcy5oaWRlUmVzZXRCdG4gPSB0aGlzLmNvbmZpZy5oaWRlUmVzZXRCdG4gfHwgZmFsc2U7XG4gICAgICB0aGlzLmhpZGVTZWxlY3RCdG4gPSB0aGlzLmNvbmZpZy5oaWRlU2VsZWN0QnRuIHx8IGZhbHNlO1xuICAgICAgdGhpcy5tYXhTaXplID0gKHRoaXMuY29uZmlnLm1heFNpemUgfHwgMjApICogMTAyNDAwMDsgLy8gbWIgdG8gYnl0ZXMuXG4gICAgICBpZih0aGlzLmNvbmZpZy51cGxvYWRBUEkpIHtcbiAgICAgICAgdGhpcy51cGxvYWRBUEkgPSB0aGlzLmNvbmZpZy51cGxvYWRBUEkudXJsIDtcbiAgICAgICAgdGhpcy5tZXRob2QgPSB0aGlzLmNvbmZpZy51cGxvYWRBUEkubWV0aG9kIHx8ICdQT1NUJztcbiAgICAgICAgdGhpcy5mb3JtYXRzQWxsb3dlZCA9IHRoaXMuY29uZmlnLmZvcm1hdHNBbGxvd2VkIHx8ICcqJztcbiAgICAgICAgdGhpcy5tdWx0aXBsZSA9IHRoaXMuY29uZmlnLm11bHRpcGxlIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLmhlYWRlcnMgPSB0aGlzLmNvbmZpZy51cGxvYWRBUEkuaGVhZGVycyB8fCB7fTtcbiAgICAgICAgdGhpcy5wYXJhbXMgPSB0aGlzLmNvbmZpZy51cGxvYWRBUEkucGFyYW1zIHx8IHt9O1xuICAgICAgICB0aGlzLnJlc3BvbnNlVHlwZSA9IHRoaXMuY29uZmlnLnVwbG9hZEFQSS5yZXNwb25zZVR5cGUgfHwgJ2pzb24nO1xuICAgICAgICB0aGlzLndpdGhDcmVkZW50aWFscyA9IHRoaXMuY29uZmlnLnVwbG9hZEFQSS53aXRoQ3JlZGVudGlhbHMgfHwgZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmZvcm1hdHNBbGxvd2VkVGV4dCA9IHRoaXMuZm9ybWF0c0FsbG93ZWQgPT09ICcqJyA/ICcnIDogJygnICsgdGhpcy5mb3JtYXRzQWxsb3dlZCArICcpJztcbiAgICAgIHRoaXMuZmlsZU5hbWVJbmRleCA9IHRoaXMuY29uZmlnLmZpbGVOYW1lSW5kZXggPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlO1xuICAgICAgdGhpcy5hdXRvVXBsb2FkID0gdGhpcy5jb25maWcuYXV0b1VwbG9hZCB8fCBmYWxzZTtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5yZXBsYWNlVGV4dHMpIHtcbiAgICAgICAgdGhpcy5yZXBsYWNlVGV4dHMgPSB7XG4gICAgICAgICAgLi4udGhpcy5yZXBsYWNlVGV4dHMsXG4gICAgICAgICAgLi4udGhpcy5jb25maWcucmVwbGFjZVRleHRzLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc2V0IHdoZW4gcmVzZXRVcGxvYWQgdmFsdWUgY2hhbmdlcyBmcm9tIGZhbHNlIHRvIHRydWUuXG4gICAgaWYgKGNoYW5nZXMucmVzZXRVcGxvYWQpIHtcbiAgICAgIGlmIChjaGFuZ2VzLnJlc2V0VXBsb2FkLmN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLnJlc2V0RmlsZVVwbG9hZCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qIEZ1bsOnw6NvIHJlc2V0YXIgY29tcG9uZW50ZSAqL1xuICByZXNldEZpbGVVcGxvYWQoKSB7XG4gICAgdGhpcy5hbGxvd2VkRmlsZXMgPSBbXTtcbiAgICB0aGlzLkNhcHRpb24gPSBbXTtcbiAgICB0aGlzLm5vdEFsbG93ZWRGaWxlcyA9IFtdO1xuICAgIHRoaXMudXBsb2FkTXNnID0gZmFsc2U7XG4gICAgdGhpcy5lbmFibGVVcGxvYWRCdG4gPSBmYWxzZTtcbiAgfVxuXG4gIC8qIERldGVjdGFyIG11ZGFuw6dhICAqL1xuICBvbkNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5maWxlU2VsZWN0ZWQuZW1pdChldmVudCk7XG4gICAgdGhpcy5ub3RBbGxvd2VkRmlsZXMgPSBbXTtcbiAgICBjb25zdCBmaWxlRXh0UmVnRXhwOiBSZWdFeHAgPSAvKD86XFwuKFteLl0rKSk/JC87XG4gICAgbGV0IGZpbGVMaXN0OiBGaWxlTGlzdDtcblxuICAgIGlmICh0aGlzLmFmdGVyVXBsb2FkIHx8ICF0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLmFsbG93ZWRGaWxlcyA9IFtdO1xuICAgICAgdGhpcy5DYXB0aW9uID0gW107XG4gICAgICB0aGlzLmFmdGVyVXBsb2FkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdkcm9wJykge1xuICAgICAgZmlsZUxpc3QgPSBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbGVMaXN0ID0gZXZlbnQudGFyZ2V0LmZpbGVzIHx8IGV2ZW50LnNyY0VsZW1lbnQuZmlsZXM7XG4gICAgfVxuXG4gICAgLy8gJ2ZvckVhY2gnIGRvZXMgbm90IGV4aXN0IG9uICdmaWxlbGlzdCcgdGhhdCdzIHdoeSB0aGlzIGdvb2Qgb2xkICdmb3InIGlzIHVzZWQuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBmb3Itb2ZcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBfY3VycmVudEZpbGVFeHQ6IGFueSA9IGZpbGVFeHRSZWdFeHAuZXhlYyhmaWxlTGlzdFtpXS5uYW1lKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRGaWxlRXh0ID0gdHlwZW9mIF9jdXJyZW50RmlsZUV4dFsxXSA9PT0gJ3N0cmluZycgPyBfY3VycmVudEZpbGVFeHRbMV0udG9Mb3dlckNhc2UoKSA6ICcnO1xuICAgICAgY29uc3QgaXNGb3JtYXRWYWxpZCA9IHRoaXMuZm9ybWF0c0FsbG93ZWQuaW5jbHVkZXMoJyonKVxuICAgICAgICA/IHRydWVcbiAgICAgICAgOiB0aGlzLmZvcm1hdHNBbGxvd2VkLmluY2x1ZGVzKGN1cnJlbnRGaWxlRXh0KTtcblxuICAgICAgY29uc3QgaXNTaXplVmFsaWQgPSBmaWxlTGlzdFtpXS5zaXplIDw9IHRoaXMubWF4U2l6ZTtcblxuICAgICAgLy8gQ2hlY2sgd2hldGhlciBjdXJyZW50IGZpbGUgZm9ybWF0IGFuZCBzaXplIGlzIGNvcnJlY3QgYXMgc3BlY2lmaWVkIGluIHRoZSBjb25maWd1cmF0aW9ucy5cbiAgICAgIGlmIChpc0Zvcm1hdFZhbGlkICYmIGlzU2l6ZVZhbGlkKSB7XG4gICAgICAgIHRoaXMuYWxsb3dlZEZpbGVzLnB1c2goZmlsZUxpc3RbaV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ub3RBbGxvd2VkRmlsZXMucHVzaCh7XG4gICAgICAgICAgZmlsZU5hbWU6IGZpbGVMaXN0W2ldLm5hbWUsXG4gICAgICAgICAgZmlsZVNpemU6IHRoaXMuY29udmVydFNpemUoZmlsZUxpc3RbaV0uc2l6ZSksXG4gICAgICAgICAgZXJyb3JNc2c6ICFpc0Zvcm1hdFZhbGlkID8gJ0ludmFsaWQgZm9ybWF0JyA6ICdJbnZhbGlkIHNpemUnLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vIElmIHRoZXJlJ3MgYW55IGFsbG93ZWRGaWxlcy5cbiAgICBpZiAodGhpcy5hbGxvd2VkRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5lbmFibGVVcGxvYWRCdG4gPSB0cnVlO1xuICAgICAgLy8gVXBsb2FkIHRoZSBmaWxlcyBkaXJlY3RseSBpZiB0aGVtZSBpcyBhdHRhY2ggcGluIChhcyB1cGxvYWQgYnRuIGlzIG5vdCB0aGVyZSBmb3IgdGhpcyB0aGVtZSkgb3IgYXV0b1VwbG9hZCBpcyB0cnVlLlxuICAgICAgaWYgKHRoaXMudGhlbWUgPT09ICdhdHRhY2hQaW4nIHx8IHRoaXMuYXV0b1VwbG9hZCkge1xuICAgICAgICB0aGlzLnVwbG9hZEZpbGVzKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5hYmxlVXBsb2FkQnRuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy51cGxvYWRNc2cgPSBmYWxzZTtcbiAgICB0aGlzLnVwbG9hZFN0YXJ0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnVwbG9hZFBlcmNlbnQgPSAwO1xuICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IG51bGw7XG4gIH1cblxuICAvKiBGdW7Dp8OjbyBwYXJhIGVudmlhciBhcnF1aXZvIHBhcmEgc2Vydmlkb3IgKi9cbiAgdXBsb2FkRmlsZXMoKSB7XG4gICAgdGhpcy5wcm9ncmVzc0JhclNob3cgPSB0cnVlO1xuICAgIHRoaXMudXBsb2FkU3RhcnRlZCA9IHRydWU7XG4gICAgdGhpcy5ub3RBbGxvd2VkRmlsZXMgPSBbXTtcbiAgICBsZXQgaXNFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuaXNBbGxvd2VkRmlsZVNpbmdsZSA9IHRoaXMuYWxsb3dlZEZpbGVzLmxlbmd0aCA8PSAxO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAvLyBBZGQgZGF0YSB0byBiZSBzZW50IGluIHRoaXMgcmVxdWVzdFxuICAgIHRoaXMuYWxsb3dlZEZpbGVzLmZvckVhY2goKGZpbGUsIGkpID0+IHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgdGhpcy5DYXB0aW9uW2ldIHx8ICdmaWxlJyArICh0aGlzLmZpbGVOYW1lSW5kZXggPyBpIDogJycpLFxuICAgICAgICB0aGlzLmFsbG93ZWRGaWxlc1tpXVxuICAgICAgKTtcbiAgICB9KTtcblxuXG4gICAgdGhpcy5odHRwXG4gICAgICAucmVxdWVzdCh0aGlzLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCB0aGlzLnVwbG9hZEFQSSwge1xuICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgIG9ic2VydmU6ICdldmVudHMnLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXG4gICAgICAgIHBhcmFtczogdGhpcy5wYXJhbXMsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogdGhpcy5yZXNwb25zZVR5cGUsXG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy53aXRoQ3JlZGVudGlhbHMsXG4gICAgICB9KVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgLy8gVXBsb2FkIFByb2dyZXNzXG4gICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlVXBsb2FkQnRuID0gZmFsc2U7IC8vIGJ1dHRvbiBzaG91bGQgYmUgZGlzYWJsZWQgaWYgcHJvY2VzcyB1cGxvYWRpbmdcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnREb25lID0gZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWw7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFBlcmNlbnQgPSBNYXRoLnJvdW5kKChldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCkgKiAxMDApO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkge1xuICAgICAgICAgICAgaWYgKGV2ZW50LnN0YXR1cyA9PT0gMjAwIHx8IGV2ZW50LnN0YXR1cyA9PT0gMjAxKSB7XG4gICAgICAgICAgICAgIC8vIFN1Y2Nlc3NcbiAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0JhclNob3cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5lbmFibGVVcGxvYWRCdG4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy51cGxvYWRNc2cgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmFmdGVyVXBsb2FkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgaWYgKCFpc0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRNc2dUZXh0ID0gdGhpcy5yZXBsYWNlVGV4dHMuYWZ0ZXJVcGxvYWRNc2dfc3VjY2VzcyB8fCAnU3VjY2Vzc2Z1bGx5IFVwbG9hZGVkICEnO1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkTXNnQ2xhc3MgPSAndGV4dC1zdWNjZXNzIGxlYWQnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBGYWlsdXJlXG4gICAgICAgICAgICAgIGlzRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5BcGlSZXNwb25zZS5lbWl0KGV2ZW50KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnRXZlbnQgT3RoZXI6ICcsIGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgIC8vIEZhaWx1cmVcbiAgICAgICAgICBpc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycygpO1xuICAgICAgICAgIHRoaXMuQXBpUmVzcG9uc2UuZW1pdChlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBoYW5kbGVFcnJvcnMoKSB7XG4gICAgdGhpcy5wcm9ncmVzc0JhclNob3cgPSBmYWxzZTtcbiAgICB0aGlzLmVuYWJsZVVwbG9hZEJ0biA9IGZhbHNlO1xuICAgIHRoaXMudXBsb2FkTXNnID0gdHJ1ZTtcbiAgICB0aGlzLmFmdGVyVXBsb2FkID0gdHJ1ZTtcbiAgICB0aGlzLnVwbG9hZE1zZ1RleHQgPSB0aGlzLnJlcGxhY2VUZXh0cy5hZnRlclVwbG9hZE1zZ19lcnJvciB8fCAnRXJyb3IgaW4gdXBsb2FkaW5nIGZpbGVzJztcbiAgICB0aGlzLnVwbG9hZE1zZ0NsYXNzID0gJ3RleHQtZGFuZ2VyIGxlYWQnO1xuICB9XG5cbiAgcmVtb3ZlRmlsZShpOiBhbnksIHNmX25hOiBhbnkpIHtcbiAgICBpZiAoc2ZfbmEgPT09ICdzZicpIHtcbiAgICAgIHRoaXMuYWxsb3dlZEZpbGVzLnNwbGljZShpLCAxKTtcbiAgICAgIHRoaXMuQ2FwdGlvbi5zcGxpY2UoaSwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90QWxsb3dlZEZpbGVzLnNwbGljZShpLCAxKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hbGxvd2VkRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmVuYWJsZVVwbG9hZEJ0biA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnZlcnRTaXplKGZpbGVTaXplOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBmaWxlU2l6ZSA8IDEwMjQwMDBcbiAgICAgID8gKGZpbGVTaXplIC8gMTAyNCkudG9GaXhlZCgyKSArICcgS0InXG4gICAgICA6IChmaWxlU2l6ZSAvIDEwMjQwMDApLnRvRml4ZWQoMikgKyAnIE1CJztcbiAgfVxuXG4gIGF0dGFjaHBpbk9uY2xpY2soKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWwnICsgdGhpcy5pZCk7XG4gICAgaWYgKGVsZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIGVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBkcm9wKGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMub25DaGFuZ2UoZXZlbnQpO1xuICB9XG5cbiAgYWxsb3dEcm9wKGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ2NvcHknO1xuICB9XG59XG4iLCI8bGFiZWwgZm9yPVwic2Vse3tpZH19XCIgY2xhc3M9XCJ3Y28tZmlsZS11cGxvYWRcIiAoZHJvcCk9XCJkcm9wKCRldmVudClcIiAoZHJhZ292ZXIpPVwiYWxsb3dEcm9wKCRldmVudClcIj5cbiAgPGRpdiBjbGFzcz1cInVwbG9hZF9fZHJvcC1pbmZvXCI+XG4gICAgPHNwYW4+QXJyYXN0ZS1vcyBhcXVpIG91PC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRfX2J1dHRvblwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmNsb3VkX3VwbG9hZDwvc3Bhbj5cbiAgICAgIDxzcGFuPnt7cmVwbGFjZVRleHRzLnNlbGVjdEZpbGVCdG59fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxzcGFuIGNsYXNzPVwidXBsb2FkX19pbmZvXCIgKm5nSWY9XCIhYWxsb3dlZEZpbGVzLmxlbmd0aFwiID57e2Rlc2NyaXB0aW9ufX08L3NwYW4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxvd2VkRmlsZXMubGVuZ3RoXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJ1cGxvYWRfX2luZm9cIiAqbmdGb3I9XCJsZXQgc2Ygb2YgYWxsb3dlZEZpbGVzO2xldCBpPWluZGV4XCI+XG4gICAgICB7e3NmLm5hbWV9fSA8c21hbGw+KHt7Y29udmVydFNpemUoc2Yuc2l6ZSl9fSk8L3NtYWxsPlxuICAgIDwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxpbnB1dCBjbGFzcz1cInVwbG9hZF9fZmlsZVwiIHR5cGU9XCJmaWxlXCIgaWQ9XCJzZWx7e2lkfX1cIiAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiB0aXRsZT1cIlNlbGVjdCBmaWxlXCJcbiAgbmFtZT1cImZpbGVzW11cIiBbYWNjZXB0XT1cImZvcm1hdHNBbGxvd2VkXCIgW2F0dHIubXVsdGlwbGVdPVwibXVsdGlwbGUgPyAnJyA6IG51bGxcIiAvPlxuPC9sYWJlbD5cbiJdfQ==
405
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb25lbnRzL3NyYy9saWIvdXBsb2FkL3VwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9uZW50cy9zcmMvbGliL3VwbG9hZC91cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixhQUFhLEdBR2QsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFjL0MsTUFBTSxPQUFPLGVBQWU7SUErS007SUE5S2hDLG1DQUFtQztJQUMxQixXQUFXLEdBQ2xCLG1FQUFtRSxDQUFDO0lBQ3RFLHlGQUF5RjtJQUNoRixNQUFNLEdBQThCO1FBQzNDLFNBQVMsRUFBRTtZQUNULEdBQUcsRUFBRSxFQUFFO1lBQ1AsTUFBTSxFQUFFLE1BQU07WUFDZCxPQUFPLEVBQUU7Z0JBQ1AsY0FBYyxFQUFFLDBCQUEwQjthQUMzQztZQUNELFlBQVksRUFBRSxNQUFNO1lBQ3BCLGVBQWUsRUFBRSxLQUFLO1NBQ3ZCO0tBQ0YsQ0FBQztJQUVGOztPQUVHO0lBQ00sV0FBVyxHQUFHLEtBQUssQ0FBQztJQUU3Qjs7T0FFRztJQUNvQixXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUN4RDs7T0FFRztJQUNPLFlBQVksR0FBb0MsSUFBSSxZQUFZLEVBRXZFLENBQUM7SUFFSjs7T0FFRztJQUNILEtBQUssR0FBVyxFQUFFLENBQUM7SUFDbkI7O09BRUc7SUFDSCxFQUFFLEdBQVcsQ0FBQyxDQUFDO0lBQ2Y7O09B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biAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNraXBTZWxmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgSHR0cENsaWVudCxcbiAgSHR0cENsaWVudE1vZHVsZSxcbiAgSHR0cEV2ZW50VHlwZSxcbiAgSHR0cEhlYWRlcnMsXG4gIEh0dHBQYXJhbXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFuZ3VsYXJGaWxlVXBsb2FkZXJDb25maWcsXG4gIFJlcGxhY2VUZXh0cyxcbiAgVXBsb2FkSW5mb1R5cGVzLFxufSBmcm9tICcuL3VwbG9hZC50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3djby1maWxlLXVwbG9hZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEh0dHBDbGllbnRNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8qIFRleHRvIGRlIGRlc2NyacOnw6NvIGRvIGFycXVpdm8gKi9cbiAgQElucHV0KCkgZGVzY3JpcHRpb246IHN0cmluZyA9XG4gICAgJyhYWCBNQiBkZSB0YW1hbmhvIG3DoXhpbW8gZSDDqSBwZXJtaXRpZG8gcXVhbHF1ZXIgdGlwbyBkZSBhcnF1aXZvcyknO1xuICAvKiBjb25maWcgPEFuZ3VsYXJGaWxlVXBsb2FkZXJDb25maWc+IGNvbmZpZ3VyYcOnw6NvIGRvIGNvbXBvbmVudGUgcHJpbmNpcGFpcyBwYXLDom1ldHJvcyAqL1xuICBASW5wdXQoKSBjb25maWc6IEFuZ3VsYXJGaWxlVXBsb2FkZXJDb25maWcgPSB7XG4gICAgdXBsb2FkQVBJOiB7XG4gICAgICB1cmw6ICcnLFxuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04JyxcbiAgICAgIH0sXG4gICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogZmFsc2UsXG4gICAgfSxcbiAgfTtcblxuICAvKlxuICAgKiBPcMOnw6NvIGRlIHJlc2V0YXIgbyBjb21wb25lbnRlXG4gICAqL1xuICBASW5wdXQoKSByZXNldFVwbG9hZCA9IGZhbHNlO1xuXG4gIC8qXG4gICAqIEV2ZW50byBSZXNwb3N0YSBkYSByZXF1aXNpw6fDo28gc2VuZG8gc3VjZXNzbyBvdSBlcnJvXG4gICAqL1xuICBAT3V0cHV0KCdhcGlSZXNwb25zZScpIEFwaVJlc3BvbnNlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvKlxuICAgKiBFdmVudG8gamF2YXNjcmlwdCBwdXJvIHBhcmEgcmV0b3JubyBkbyBhcnF1aXZvXG4gICAqL1xuICBAT3V0cHV0KCkgZmlsZVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8VXBsb2FkSW5mb1R5cGVzW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBVcGxvYWRJbmZvVHlwZXNbXVxuICA+KCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHRoZW1lOiBzdHJpbmcgPSAnJztcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGlkOiBudW1iZXIgPSAwO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaGlkZVByb2dyZXNzQmFyOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBtYXhTaXplOiBudW1iZXIgPSAyMCAqIDEwMjQwMDA7IC8vIG1iIHRvIGJ5dGVzLlxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgdXBsb2FkQVBJOiBzdHJpbmcgPSAnJztcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG1ldGhvZDogc3RyaW5nID0gJ1BPU1QnO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZm9ybWF0c0FsbG93ZWQ6IHN0cmluZyA9ICcqJztcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGZvcm1hdHNBbGxvd2VkVGV4dDogc3RyaW5nID0gJyc7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaGVhZGVyczogSHR0cEhlYWRlcnMgfCB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH0gPSB7fTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHBhcmFtczogSHR0cFBhcmFtcyB8IHsgW3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9ID0ge307XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICByZXNwb25zZVR5cGU6ICdqc29uJyB8ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAndGV4dCcgPSAnYmxvYic7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBoaWRlUmVzZXRCdG46IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGhpZGVTZWxlY3RCdG46IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGFsbG93ZWRGaWxlczogRmlsZVtdID0gW107XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBub3RBbGxvd2VkRmlsZXM6IHtcbiAgICBmaWxlTmFtZTogc3RyaW5nO1xuICAgIGZpbGVTaXplOiBzdHJpbmc7XG4gICAgZXJyb3JNc2c6IHN0cmluZztcbiAgfVtdID0gW107XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBDYXB0aW9uOiBzdHJpbmdbXSA9IFtdO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaXNBbGxvd2VkRmlsZVNpbmdsZSA9IHRydWU7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm9ncmVzc0JhclNob3cgPSBmYWxzZTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGVuYWJsZVVwbG9hZEJ0biA9IGZhbHNlO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgdXBsb2FkTXNnID0gZmFsc2U7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBhZnRlclVwbG9hZCA9IGZhbHNlO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgdXBsb2FkU3RhcnRlZCA9IGZhbHNlO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgdXBsb2FkTXNnVGV4dDogc3RyaW5nID0gJyc7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICB1cGxvYWRNc2dDbGFzczogc3RyaW5nID0gJ3RleHQtc3VjY2Vzcyc7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICB1cGxvYWRQZXJjZW50OiBudW1iZXIgPSAwO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcmVwbGFjZVRleHRzOiBSZXBsYWNlVGV4dHMgPSB7XG4gICAgc2VsZWN0RmlsZUJ0bjogJ1NlbGVjaW9uYXIgQXJxdWl2bycsXG4gICAgcmVzZXRCdG46ICdSZXNldGFyJyxcbiAgICB1cGxvYWRCdG46ICdFbnZpYXInLFxuICAgIGRyYWdORHJvcEJveDogJ0FycmFzdGUgZSBzb2x0ZScsXG4gICAgYXR0YWNoUGluQnRuOiAnQW5leGFyIEFycXVpdm8uLi4nLFxuICAgIGFmdGVyVXBsb2FkTXNnX3N1Y2Nlc3M6ICdFbnZpYWRvIGNvbSBzdWNlc3NvICEnLFxuICAgIGFmdGVyVXBsb2FkTXNnX2Vycm9yOiAnRmFsaGEgbm8gZW52aW8gIScsXG4gICAgc2l6ZUxpbWl0OiAnVGFtYW5obyBtw6F4aW1vJyxcbiAgfTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGN1cnJlbnRVcGxvYWRzOiBhbnlbXSA9IFtdO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZmlsZU5hbWVJbmRleCA9IHRydWU7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICB3aXRoQ3JlZGVudGlhbHMgPSBmYWxzZTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGF1dG9VcGxvYWQgPSB0cnVlO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBpZERhdGU6IG51bWJlciA9ICtuZXcgRGF0ZSgpO1xuXG4gIGNvbnN0cnVjdG9yKEBTa2lwU2VsZigpIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogYW55KSB7XG4gICAgLy8gVHJhY2sgY2hhbmdlcyBpbiBDb25maWd1cmF0aW9uIGFuZCBzZWUgaWYgdXNlciBoYXMgZXZlbiBwcm92aWRlZCBDb25maWd1cmF0aW9uLlxuICAgIGlmIChjaGFuZ2VzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZykge1xuICAgICAgLy8gQXNzaWduIFVzZXIgQ29uZmlndXJhdGlvbnMgdG8gTGlicmFyeSBQcm9wZXJ0aWVzLlxuICAgICAgdGhpcy50aGVtZSA9IHRoaXMuY29uZmlnLnRoZW1lIHx8ICcnO1xuICAgICAgdGhpcy5pZCA9XG4gICAgICAgIHRoaXMuY29uZmlnLmlkIHx8XG4gICAgICAgIHBhcnNlSW50KCh0aGlzLmlkRGF0ZSAvIDEwMDAwKS50b1N0cmluZygpLnNwbGl0KCcuJylbMV0sIDEwKSArXG4gICAgICAgICAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjApICogMTAwMDA7XG4gICAgICB0aGlzLmhpZGVQcm9ncmVzc0JhciA9IHRoaXMuY29uZmlnLmhpZGVQcm9ncmVzc0JhciB8fCBmYWxzZTtcbiAgICAgIHRoaXMuaGlkZVJlc2V0QnRuID0gdGhpcy5jb25maWcuaGlkZVJlc2V0QnRuIHx8IGZhbHNlO1xuICAgICAgdGhpcy5oaWRlU2VsZWN0QnRuID0gdGhpcy5jb25maWcuaGlkZVNlbGVjdEJ0biB8fCBmYWxzZTtcbiAgICAgIHRoaXMubWF4U2l6ZSA9ICh0aGlzLmNvbmZpZy5tYXhTaXplIHx8IDIwKSAqIDEwMjQwMDA7IC8vIG1iIHRvIGJ5dGVzLlxuICAgICAgaWYgKHRoaXMuY29uZmlnLnVwbG9hZEFQSSkge1xuICAgICAgICB0aGlzLnVwbG9hZEFQSSA9IHRoaXMuY29uZmlnLnVwbG9hZEFQSS51cmw7XG4gICAgICAgIHRoaXMubWV0aG9kID0gdGhpcy5jb25maWcudXBsb2FkQVBJLm1ldGhvZCB8fCAnUE9TVCc7XG4gICAgICAgIHRoaXMuZm9ybWF0c0FsbG93ZWQgPSB0aGlzLmNvbmZpZy5mb3JtYXRzQWxsb3dlZCB8fCAnKic7XG4gICAgICAgIHRoaXMubXVsdGlwbGUgPSB0aGlzLmNvbmZpZy5tdWx0aXBsZSB8fCBmYWxzZTtcbiAgICAgICAgdGhpcy5oZWFkZXJzID0gdGhpcy5jb25maWcudXBsb2FkQVBJLmhlYWRlcnMgfHwge307XG4gICAgICAgIHRoaXMucGFyYW1zID0gdGhpcy5jb25maWcudXBsb2FkQVBJLnBhcmFtcyB8fCB7fTtcbiAgICAgICAgdGhpcy5yZXNwb25zZVR5cGUgPSB0aGlzLmNvbmZpZy51cGxvYWRBUEkucmVzcG9uc2VUeXBlIHx8ICdqc29uJztcbiAgICAgICAgdGhpcy53aXRoQ3JlZGVudGlhbHMgPSB0aGlzLmNvbmZpZy51cGxvYWRBUEkud2l0aENyZWRlbnRpYWxzIHx8IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5mb3JtYXRzQWxsb3dlZFRleHQgPVxuICAgICAgICB0aGlzLmZvcm1hdHNBbGxvd2VkID09PSAnKicgPyAnJyA6ICcoJyArIHRoaXMuZm9ybWF0c0FsbG93ZWQgKyAnKSc7XG4gICAgICB0aGlzLmZpbGVOYW1lSW5kZXggPSB0aGlzLmNvbmZpZy5maWxlTmFtZUluZGV4ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgIHRoaXMuYXV0b1VwbG9hZCA9IHRoaXMuY29uZmlnLmF1dG9VcGxvYWQgfHwgZmFsc2U7XG4gICAgICBpZiAodGhpcy5jb25maWcucmVwbGFjZVRleHRzKSB7XG4gICAgICAgIHRoaXMucmVwbGFjZVRleHRzID0ge1xuICAgICAgICAgIC4uLnRoaXMucmVwbGFjZVRleHRzLFxuICAgICAgICAgIC4uLnRoaXMuY29uZmlnLnJlcGxhY2VUZXh0cyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNldCB3aGVuIHJlc2V0VXBsb2FkIHZhbHVlIGNoYW5nZXMgZnJvbSBmYWxzZSB0byB0cnVlLlxuICAgIGlmIChjaGFuZ2VzLnJlc2V0VXBsb2FkKSB7XG4gICAgICBpZiAoY2hhbmdlcy5yZXNldFVwbG9hZC5jdXJyZW50VmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5yZXNldEZpbGVVcGxvYWQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiBGdW7Dp8OjbyByZXNldGFyIGNvbXBvbmVudGUgKi9cbiAgcmVzZXRGaWxlVXBsb2FkKCkge1xuICAgIHRoaXMuYWxsb3dlZEZpbGVzID0gW107XG4gICAgdGhpcy5DYXB0aW9uID0gW107XG4gICAgdGhpcy5ub3RBbGxvd2VkRmlsZXMgPSBbXTtcbiAgICB0aGlzLnVwbG9hZE1zZyA9IGZhbHNlO1xuICAgIHRoaXMuZW5hYmxlVXBsb2FkQnRuID0gZmFsc2U7XG4gIH1cblxuICAvKiBEZXRlY3RhciBtdWRhbsOnYSAgKi9cbiAgb25DaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZmlsZVNlbGVjdGVkLmVtaXQoZXZlbnQpO1xuICAgIHRoaXMubm90QWxsb3dlZEZpbGVzID0gW107XG4gICAgY29uc3QgZmlsZUV4dFJlZ0V4cDogUmVnRXhwID0gLyg/OlxcLihbXi5dKykpPyQvO1xuICAgIGxldCBmaWxlTGlzdDogRmlsZUxpc3Q7XG5cbiAgICBpZiAodGhpcy5hZnRlclVwbG9hZCB8fCAhdGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5hbGxvd2VkRmlsZXMgPSBbXTtcbiAgICAgIHRoaXMuQ2FwdGlvbiA9IFtdO1xuICAgICAgdGhpcy5hZnRlclVwbG9hZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChldmVudC50eXBlID09PSAnZHJvcCcpIHtcbiAgICAgIGZpbGVMaXN0ID0gZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWxlTGlzdCA9IGV2ZW50LnRhcmdldC5maWxlcyB8fCBldmVudC5zcmNFbGVtZW50LmZpbGVzO1xuICAgIH1cblxuICAgIC8vICdmb3JFYWNoJyBkb2VzIG5vdCBleGlzdCBvbiAnZmlsZWxpc3QnIHRoYXQncyB3aHkgdGhpcyBnb29kIG9sZCAnZm9yJyBpcyB1c2VkLlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogZm9yLW9mXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgX2N1cnJlbnRGaWxlRXh0OiBhbnkgPSBmaWxlRXh0UmVnRXhwLmV4ZWMoZmlsZUxpc3RbaV0ubmFtZSk7XG4gICAgICBjb25zdCBjdXJyZW50RmlsZUV4dCA9XG4gICAgICAgIHR5cGVvZiBfY3VycmVudEZpbGVFeHRbMV0gPT09ICdzdHJpbmcnXG4gICAgICAgICAgPyBfY3VycmVudEZpbGVFeHRbMV0udG9Mb3dlckNhc2UoKVxuICAgICAgICAgIDogJyc7XG4gICAgICBjb25zdCBpc0Zvcm1hdFZhbGlkID0gdGhpcy5mb3JtYXRzQWxsb3dlZC5pbmNsdWRlcygnKicpXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IHRoaXMuZm9ybWF0c0FsbG93ZWQuaW5jbHVkZXMoY3VycmVudEZpbGVFeHQpO1xuXG4gICAgICBjb25zdCBpc1NpemVWYWxpZCA9IGZpbGVMaXN0W2ldLnNpemUgPD0gdGhpcy5tYXhTaXplO1xuXG4gICAgICAvLyBDaGVjayB3aGV0aGVyIGN1cnJlbnQgZmlsZSBmb3JtYXQgYW5kIHNpemUgaXMgY29ycmVjdCBhcyBzcGVjaWZpZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb25zLlxuICAgICAgaWYgKGlzRm9ybWF0VmFsaWQgJiYgaXNTaXplVmFsaWQpIHtcbiAgICAgICAgdGhpcy5hbGxvd2VkRmlsZXMucHVzaChmaWxlTGlzdFtpXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm5vdEFsbG93ZWRGaWxlcy5wdXNoKHtcbiAgICAgICAgICBmaWxlTmFtZTogZmlsZUxpc3RbaV0ubmFtZSxcbiAgICAgICAgICBmaWxlU2l6ZTogdGhpcy5jb252ZXJ0U2l6ZShmaWxlTGlzdFtpXS5zaXplKSxcbiAgICAgICAgICBlcnJvck1zZzogIWlzRm9ybWF0VmFsaWQgPyAnSW52YWxpZCBmb3JtYXQnIDogJ0ludmFsaWQgc2l6ZScsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIHRoZXJlJ3MgYW55IGFsbG93ZWRGaWxlcy5cbiAgICBpZiAodGhpcy5hbGxvd2VkRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5lbmFibGVVcGxvYWRCdG4gPSB0cnVlO1xuICAgICAgLy8gVXBsb2FkIHRoZSBmaWxlcyBkaXJlY3RseSBpZiB0aGVtZSBpcyBhdHRhY2ggcGluIChhcyB1cGxvYWQgYnRuIGlzIG5vdCB0aGVyZSBmb3IgdGhpcyB0aGVtZSkgb3IgYXV0b1VwbG9hZCBpcyB0cnVlLlxuICAgICAgaWYgKHRoaXMudGhlbWUgPT09ICdhdHRhY2hQaW4nIHx8IHRoaXMuYXV0b1VwbG9hZCkge1xuICAgICAgICB0aGlzLnVwbG9hZEZpbGVzKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5hYmxlVXBsb2FkQnRuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy51cGxvYWRNc2cgPSBmYWxzZTtcbiAgICB0aGlzLnVwbG9hZFN0YXJ0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnVwbG9hZFBlcmNlbnQgPSAwO1xuICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IG51bGw7XG4gIH1cblxuICAvKiBGdW7Dp8OjbyBwYXJhIGVudmlhciBhcnF1aXZvIHBhcmEgc2Vydmlkb3IgKi9cbiAgdXBsb2FkRmlsZXMoKSB7XG4gICAgdGhpcy5wcm9ncmVzc0JhclNob3cgPSB0cnVlO1xuICAgIHRoaXMudXBsb2FkU3RhcnRlZCA9IHRydWU7XG4gICAgdGhpcy5ub3RBbGxvd2VkRmlsZXMgPSBbXTtcbiAgICBsZXQgaXNFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuaXNBbGxvd2VkRmlsZVNpbmdsZSA9IHRoaXMuYWxsb3dlZEZpbGVzLmxlbmd0aCA8PSAxO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAvLyBBZGQgZGF0YSB0byBiZSBzZW50IGluIHRoaXMgcmVxdWVzdFxuICAgIHRoaXMuYWxsb3dlZEZpbGVzLmZvckVhY2goKGZpbGUsIGkpID0+IHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgdGhpcy5DYXB0aW9uW2ldIHx8ICdmaWxlJyArICh0aGlzLmZpbGVOYW1lSW5kZXggPyBpIDogJycpLFxuICAgICAgICB0aGlzLmFsbG93ZWRGaWxlc1tpXVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHRoaXMuaHR0cFxuICAgICAgLnJlcXVlc3QodGhpcy5tZXRob2QudG9VcHBlckNhc2UoKSwgdGhpcy51cGxvYWRBUEksIHtcbiAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxuICAgICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcbiAgICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXJzLFxuICAgICAgICBwYXJhbXM6IHRoaXMucGFyYW1zLFxuICAgICAgICByZXNwb25zZVR5cGU6IHRoaXMucmVzcG9uc2VUeXBlLFxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMud2l0aENyZWRlbnRpYWxzLFxuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAgIC8vIFVwbG9hZCBQcm9ncmVzc1xuICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZVVwbG9hZEJ0biA9IGZhbHNlOyAvLyBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkIGlmIHByb2Nlc3MgdXBsb2FkaW5nXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RG9uZSA9IGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRQZXJjZW50ID0gTWF0aC5yb3VuZCgoZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwpICogMTAwKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGlmIChldmVudC5zdGF0dXMgPT09IDIwMCB8fCBldmVudC5zdGF0dXMgPT09IDIwMSkge1xuICAgICAgICAgICAgICAvLyBTdWNjZXNzXG4gICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXJTaG93ID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMuZW5hYmxlVXBsb2FkQnRuID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMudXBsb2FkTXNnID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5hZnRlclVwbG9hZCA9IHRydWU7XG4gICAgICAgICAgICAgIGlmICghaXNFcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkTXNnVGV4dCA9XG4gICAgICAgICAgICAgICAgICB0aGlzLnJlcGxhY2VUZXh0cy5hZnRlclVwbG9hZE1zZ19zdWNjZXNzIHx8XG4gICAgICAgICAgICAgICAgICAnU3VjY2Vzc2Z1bGx5IFVwbG9hZGVkICEnO1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkTXNnQ2xhc3MgPSAndGV4dC1zdWNjZXNzIGxlYWQnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBGYWlsdXJlXG4gICAgICAgICAgICAgIGlzRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5BcGlSZXNwb25zZS5lbWl0KGV2ZW50KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnRXZlbnQgT3RoZXI6ICcsIGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgIC8vIEZhaWx1cmVcbiAgICAgICAgICBpc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycygpO1xuICAgICAgICAgIHRoaXMuQXBpUmVzcG9uc2UuZW1pdChlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBoYW5kbGVFcnJvcnMoKSB7XG4gICAgdGhpcy5wcm9ncmVzc0JhclNob3cgPSBmYWxzZTtcbiAgICB0aGlzLmVuYWJsZVVwbG9hZEJ0biA9IGZhbHNlO1xuICAgIHRoaXMudXBsb2FkTXNnID0gdHJ1ZTtcbiAgICB0aGlzLmFmdGVyVXBsb2FkID0gdHJ1ZTtcbiAgICB0aGlzLnVwbG9hZE1zZ1RleHQgPVxuICAgICAgdGhpcy5yZXBsYWNlVGV4dHMuYWZ0ZXJVcGxvYWRNc2dfZXJyb3IgfHwgJ0Vycm9yIGluIHVwbG9hZGluZyBmaWxlcyc7XG4gICAgdGhpcy51cGxvYWRNc2dDbGFzcyA9ICd0ZXh0LWRhbmdlciBsZWFkJztcbiAgfVxuXG4gIHJlbW92ZUZpbGUoaTogYW55LCBzZl9uYTogYW55KSB7XG4gICAgaWYgKHNmX25hID09PSAnc2YnKSB7XG4gICAgICB0aGlzLmFsbG93ZWRGaWxlcy5zcGxpY2UoaSwgMSk7XG4gICAgICB0aGlzLkNhcHRpb24uc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vdEFsbG93ZWRGaWxlcy5zcGxpY2UoaSwgMSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYWxsb3dlZEZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5lbmFibGVVcGxvYWRCdG4gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjb252ZXJ0U2l6ZShmaWxlU2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZmlsZVNpemUgPCAxMDI0MDAwXG4gICAgICA/IChmaWxlU2l6ZSAvIDEwMjQpLnRvRml4ZWQoMikgKyAnIEtCJ1xuICAgICAgOiAoZmlsZVNpemUgLyAxMDI0MDAwKS50b0ZpeGVkKDIpICsgJyBNQic7XG4gIH1cblxuICBhdHRhY2hwaW5PbmNsaWNrKCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VsJyArIHRoaXMuaWQpO1xuICAgIGlmIChlbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBlbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgZHJvcChldmVudDogYW55KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLm9uQ2hhbmdlKGV2ZW50KTtcbiAgfVxuXG4gIGFsbG93RHJvcChldmVudDogYW55KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5JztcbiAgfVxufVxuIiwiPGxhYmVsIGZvcj1cInNlbHt7aWR9fVwiIGNsYXNzPVwid2NvLWZvcm0tdXBsb2FkXCIgKGRyb3ApPVwiZHJvcCgkZXZlbnQpXCIgKGRyYWdvdmVyKT1cImFsbG93RHJvcCgkZXZlbnQpXCI+XG4gIDxkaXYgY2xhc3M9XCJ3Y28tZm9ybS11cGxvYWRfX2luZm9cIj5cbiAgICA8c3Bhbj5BcnJhc3RlLW9zIGFxdWkgb3U8L3NwYW4+XG4gICAgPHNwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+Y2xvdWRfdXBsb2FkPC9zcGFuPlxuICAgICAgPHNwYW4+e3tyZXBsYWNlVGV4dHMuc2VsZWN0RmlsZUJ0bn19PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxzcGFuIGNsYXNzPVwidXBsb2FkX19pbmZvXCIgKm5nSWY9XCIhYWxsb3dlZEZpbGVzLmxlbmd0aFwiID57e2Rlc2NyaXB0aW9ufX08L3NwYW4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxvd2VkRmlsZXMubGVuZ3RoXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJ1cGxvYWRfX2luZm9cIiAqbmdGb3I9XCJsZXQgc2Ygb2YgYWxsb3dlZEZpbGVzO2xldCBpPWluZGV4XCI+XG4gICAgICB7e3NmLm5hbWV9fSA8c21hbGw+KHt7Y29udmVydFNpemUoc2Yuc2l6ZSl9fSk8L3NtYWxsPlxuICAgIDwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGlkPVwic2Vse3tpZH19XCIgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgdGl0bGU9XCJTZWxlY3QgZmlsZVwiXG4gIG5hbWU9XCJmaWxlc1tdXCIgW2FjY2VwdF09XCJmb3JtYXRzQWxsb3dlZFwiIFthdHRyLm11bHRpcGxlXT1cIm11bHRpcGxlID8gJycgOiBudWxsXCIgLz5cbjwvbGFiZWw+Il19
@@ -35,11 +35,11 @@ export class UserAvatarComponent {
35
35
  this.userNameLetters = capitalizeLetters.toUpperCase();
36
36
  }
37
37
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
38
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UserAvatarComponent, isStandalone: true, selector: "wco-avatar", inputs: { userName: ["name", "userName"], userAvatar: ["image", "userAvatar"], size: "size", theme: "theme", solid: "solid" }, usesOnChanges: true, ngImport: i0, template: "<div\r\n [class]=\"\r\n 'wco-user-avatar wco-user-avatar__size--' + size + ' wco-user-avatar__theme--' + theme + ' ' + (solid ? 'wco-user-solid' : '') \"\r\n [title]=\"userName\" >\r\n <span>{{userNameLetters}}</span>\r\n <img *ngIf=\"userAvatar\" [src]=\"userAvatar\" [alt]=\"userName\" />\r\n</div>\r\n", styles: [".wco-user-avatar{--wco-user-avatar-bg: var(--wco-color-secondary-50);--wco-user-avatar-color: var(--wco-color-secondary-500);overflow:hidden;position:relative;border-radius:50%;background:var(--wco-user-avatar-bg);display:flex;align-items:center;justify-content:center;border:1px solid var(--wco-user-avatar-color, #576ff7);width:var(--wco-size-xy-user-photo, 48px);height:var(--wco-size-xy-user-photo, 48px)}.wco-user-avatar.wco-user-avatar__size--xs{--wco-size-xy-user-photo: 24px;--wco-size-user-photo: 11px}.wco-user-avatar.wco-user-avatar__size--sm{--wco-size-xy-user-photo: 32px;--wco-size-user-photo: 14px}.wco-user-avatar.wco-user-avatar__size--md{--wco-size-xy-user-photo: 48px;--wco-size-user-photo: 16px}.wco-user-avatar.wco-user-avatar__size--lg{--wco-size-xy-user-photo: 56px;--wco-size-user-photo: 18px}.wco-user-avatar.wco-user-avatar__size--xl{--wco-size-xy-user-photo: 90px;--wco-size-user-photo: 20px}.wco-user-avatar .wco-user-avatar__theme--primary{--wco-user-avatar-color: var(--wco-color-primary-500);--wco-user-avatar-bg: var(--wco-color-primary-50)}.wco-user-avatar .wco-user-avatar__theme--secondary{--wco-user-avatar-color: var(--wco-color-secondary-500);--wco-user-avatar-bg: var(--wco-color-secondary-50)}.wco-user-avatar .wco-user-avatar__theme--light{--wco-user-avatar-color: var(--wco-color-neutral-100);--wco-user-avatar-bg: var(--wco-color-neutral-900)}.wco-user-avatar .wco-user-avatar__theme--dark{--wco-user-avatar-color: var(--wco-color-neutral-700);--wco-user-avatar-bg: var(--wco-color-neutral-50)}.wco-user-avatar.wco-user-solid.wco-user-avatar__theme--primary{--wco-user-avatar-bg: var(--wco-color-primary-500);--wco-user-avatar-color: var(--wco-color-primary-50)}.wco-user-avatar.wco-user-solid.wco-user-avatar__theme--secondary{--wco-user-avatar-bg: var(--wco-color-secondary-500);--wco-user-avatar-color: var(--wco-color-secondary-50)}.wco-user-avatar.wco-user-solid.wco-user-avatar__theme--light{--wco-user-avatar-bg: var(--wco-color-neutral-100);--wco-user-avatar-color: var(--wco-color-neutral-900)}.wco-user-avatar.wco-user-solid.wco-user-avatar__theme--dark{--wco-user-avatar-bg: var(--wco-color-neutral-700);--wco-user-avatar-color: var(--wco-color-neutral-50)}.wco-user-avatar span,.wco-user-avatar img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:0;margin:0;display:block}.wco-user-avatar img{width:var(--wco-size-xy-user-photo);height:var(--wco-size-xy-user-photo);object-fit:cover}.wco-user-avatar span{font-family:var(--wco-font-family, \"Roboto\", sans-serif);width:var(--wco-size-xy-user-photo);text-align:center;font-weight:700;font-size:var(--wco-size-user-photo, 18px);color:var(--wco-user-avatar-color, #ffffff);letter-spacing:.4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
38
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UserAvatarComponent, isStandalone: true, selector: "wco-avatar", inputs: { userName: ["name", "userName"], userAvatar: ["image", "userAvatar"], size: "size", theme: "theme", solid: "solid" }, usesOnChanges: true, ngImport: i0, template: "<div\r\n [class]=\"\r\n 'wco-user-avatar wco-user-avatar__size--' + size + ' wco-user-avatar__theme--' + theme + ' ' + (solid ? 'wco-user-solid' : '') \"\r\n [title]=\"userName\" >\r\n <span>{{userNameLetters}}</span>\r\n <img *ngIf=\"userAvatar\" [src]=\"userAvatar\" [alt]=\"userName\" />\r\n</div>\r\n", styles: [".wco-user-avatar{--wco-user-avatar-bg: var(--wco-color-secondary-50);--wco-user-avatar-color: var(--wco-color-secondary-500);overflow:hidden;position:relative;border-radius:50%;background:var(--wco-user-avatar-bg);display:flex;align-items:center;justify-content:center;border:1px solid var(--wco-user-avatar-color, #576ff7);width:var(--wco-size-xy-user-photo, 48px);height:var(--wco-size-xy-user-photo, 48px)}.wco-user-avatar.wco-user-avatar__size--xs{--wco-size-xy-user-photo: 24px;--wco-size-user-photo: 11px}.wco-user-avatar.wco-user-avatar__size--sm{--wco-size-xy-user-photo: 32px;--wco-size-user-photo: 14px}.wco-user-avatar.wco-user-avatar__size--md{--wco-size-xy-user-photo: 48px;--wco-size-user-photo: 16px}.wco-user-avatar.wco-user-avatar__size--lg{--wco-size-xy-user-photo: 56px;--wco-size-user-photo: 18px}.wco-user-avatar.wco-user-avatar__size--xl{--wco-size-xy-user-photo: 90px;--wco-size-user-photo: 20px}.wco-user-avatar.wco-user-avatar__theme--primary{--wco-user-avatar-color: var(--wco-color-primary-500);--wco-user-avatar-bg: var(--wco-color-primary-50)}.wco-user-avatar.wco-user-avatar__theme--secondary{--wco-user-avatar-color: var(--wco-color-secondary-500);--wco-user-avatar-bg: var(--wco-color-secondary-50)}.wco-user-avatar.wco-user-avatar__theme--light{--wco-user-avatar-color: var(--wco-color-neutral-100);--wco-user-avatar-bg: var(--wco-color-neutral-900)}.wco-user-avatar.wco-user-avatar__theme--dark{--wco-user-avatar-color: var(--wco-color-neutral-700);--wco-user-avatar-bg: var(--wco-color-neutral-50)}.wco-user-avatar.wco-user-solid.wco-user-avatar__theme--primary{--wco-user-avatar-bg: var(--wco-color-primary-500);--wco-user-avatar-color: var(--wco-color-primary-50)}.wco-user-avatar.wco-user-solid.wco-user-avatar__theme--secondary{--wco-user-avatar-bg: var(--wco-color-secondary-500);--wco-user-avatar-color: var(--wco-color-secondary-50)}.wco-user-avatar.wco-user-solid.wco-user-avatar__theme--light{--wco-user-avatar-bg: var(--wco-color-neutral-100);--wco-user-avatar-color: var(--wco-color-neutral-900)}.wco-user-avatar.wco-user-solid.wco-user-avatar__theme--dark{--wco-user-avatar-bg: var(--wco-color-neutral-700);--wco-user-avatar-color: var(--wco-color-neutral-50)}.wco-user-avatar span,.wco-user-avatar img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:0;margin:0;display:block}.wco-user-avatar img{width:var(--wco-size-xy-user-photo);height:var(--wco-size-xy-user-photo);object-fit:cover}.wco-user-avatar span{font-family:var(--wco-font-family, \"Roboto\", sans-serif);width:var(--wco-size-xy-user-photo);text-align:center;font-weight:700;font-size:var(--wco-size-user-photo, 18px);color:var(--wco-user-avatar-color, #ffffff);letter-spacing:.4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
39
39
  }
40
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserAvatarComponent, decorators: [{
41
41
  type: Component,
42
- args: [{ selector: 'wco-avatar', standalone: true, encapsulation: ViewEncapsulation.None, imports: [CommonModule], template: "<div\r\n [class]=\"\r\n 'wco-user-avatar wco-user-avatar__size--' + size + ' wco-user-avatar__theme--' + theme + ' ' + (solid ? 'wco-user-solid' : '') \"\r\n [title]=\"userName\" >\r\n <span>{{userNameLetters}}</span>\r\n <img *ngIf=\"userAvatar\" [src]=\"userAvatar\" [alt]=\"userName\" />\r\n</div>\r\n", styles: [".wco-user-avatar{--wco-user-avatar-bg: var(--wco-color-secondary-50);--wco-user-avatar-color: var(--wco-color-secondary-500);overflow:hidden;position:relative;border-radius:50%;background:var(--wco-user-avatar-bg);display:flex;align-items:center;justify-content:center;border:1px solid var(--wco-user-avatar-color, #576ff7);width:var(--wco-size-xy-user-photo, 48px);height:var(--wco-size-xy-user-photo, 48px)}.wco-user-avatar.wco-user-avatar__size--xs{--wco-size-xy-user-photo: 24px;--wco-size-user-photo: 11px}.wco-user-avatar.wco-user-avatar__size--sm{--wco-size-xy-user-photo: 32px;--wco-size-user-photo: 14px}.wco-user-avatar.wco-user-avatar__size--md{--wco-size-xy-user-photo: 48px;--wco-size-user-photo: 16px}.wco-user-avatar.wco-user-avatar__size--lg{--wco-size-xy-user-photo: 56px;--wco-size-user-photo: 18px}.wco-user-avatar.wco-user-avatar__size--xl{--wco-size-xy-user-photo: 90px;--wco-size-user-photo: 20px}.wco-user-avatar .wco-user-avatar__theme--primary{--wco-user-avatar-color: var(--wco-color-primary-500);--wco-user-avatar-bg: var(--wco-color-primary-50)}.wco-user-avatar .wco-user-avatar__theme--secondary{--wco-user-avatar-color: var(--wco-color-secondary-500);--wco-user-avatar-bg: var(--wco-color-secondary-50)}.wco-user-avatar .wco-user-avatar__theme--light{--wco-user-avatar-color: var(--wco-color-neutral-100);--wco-user-avatar-bg: var(--wco-color-neutral-900)}.wco-user-avatar .wco-user-avatar__theme--dark{--wco-user-avatar-color: var(--wco-color-neutral-700);--wco-user-avatar-bg: var(--wco-color-neutral-50)}.wco-user-avatar.wco-user-solid.wco-user-avatar__theme--primary{--wco-user-avatar-bg: var(--wco-color-primary-500);--wco-user-avatar-color: var(--wco-color-primary-50)}.wco-user-avatar.wco-user-solid.wco-user-avatar__theme--secondary{--wco-user-avatar-bg: var(--wco-color-secondary-500);--wco-user-avatar-color: var(--wco-color-secondary-50)}.wco-user-avatar.wco-user-solid.wco-user-avatar__theme--light{--wco-user-avatar-bg: var(--wco-color-neutral-100);--wco-user-avatar-color: var(--wco-color-neutral-900)}.wco-user-avatar.wco-user-solid.wco-user-avatar__theme--dark{--wco-user-avatar-bg: var(--wco-color-neutral-700);--wco-user-avatar-color: var(--wco-color-neutral-50)}.wco-user-avatar span,.wco-user-avatar img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:0;margin:0;display:block}.wco-user-avatar img{width:var(--wco-size-xy-user-photo);height:var(--wco-size-xy-user-photo);object-fit:cover}.wco-user-avatar span{font-family:var(--wco-font-family, \"Roboto\", sans-serif);width:var(--wco-size-xy-user-photo);text-align:center;font-weight:700;font-size:var(--wco-size-user-photo, 18px);color:var(--wco-user-avatar-color, #ffffff);letter-spacing:.4px}\n"] }]
42
+ args: [{ selector: 'wco-avatar', standalone: true, encapsulation: ViewEncapsulation.None, imports: [CommonModule], template: "<div\r\n [class]=\"\r\n 'wco-user-avatar wco-user-avatar__size--' + size + ' wco-user-avatar__theme--' + theme + ' ' + (solid ? 'wco-user-solid' : '') \"\r\n [title]=\"userName\" >\r\n <span>{{userNameLetters}}</span>\r\n <img *ngIf=\"userAvatar\" [src]=\"userAvatar\" [alt]=\"userName\" />\r\n</div>\r\n", styles: [".wco-user-avatar{--wco-user-avatar-bg: var(--wco-color-secondary-50);--wco-user-avatar-color: var(--wco-color-secondary-500);overflow:hidden;position:relative;border-radius:50%;background:var(--wco-user-avatar-bg);display:flex;align-items:center;justify-content:center;border:1px solid var(--wco-user-avatar-color, #576ff7);width:var(--wco-size-xy-user-photo, 48px);height:var(--wco-size-xy-user-photo, 48px)}.wco-user-avatar.wco-user-avatar__size--xs{--wco-size-xy-user-photo: 24px;--wco-size-user-photo: 11px}.wco-user-avatar.wco-user-avatar__size--sm{--wco-size-xy-user-photo: 32px;--wco-size-user-photo: 14px}.wco-user-avatar.wco-user-avatar__size--md{--wco-size-xy-user-photo: 48px;--wco-size-user-photo: 16px}.wco-user-avatar.wco-user-avatar__size--lg{--wco-size-xy-user-photo: 56px;--wco-size-user-photo: 18px}.wco-user-avatar.wco-user-avatar__size--xl{--wco-size-xy-user-photo: 90px;--wco-size-user-photo: 20px}.wco-user-avatar.wco-user-avatar__theme--primary{--wco-user-avatar-color: var(--wco-color-primary-500);--wco-user-avatar-bg: var(--wco-color-primary-50)}.wco-user-avatar.wco-user-avatar__theme--secondary{--wco-user-avatar-color: var(--wco-color-secondary-500);--wco-user-avatar-bg: var(--wco-color-secondary-50)}.wco-user-avatar.wco-user-avatar__theme--light{--wco-user-avatar-color: var(--wco-color-neutral-100);--wco-user-avatar-bg: var(--wco-color-neutral-900)}.wco-user-avatar.wco-user-avatar__theme--dark{--wco-user-avatar-color: var(--wco-color-neutral-700);--wco-user-avatar-bg: var(--wco-color-neutral-50)}.wco-user-avatar.wco-user-solid.wco-user-avatar__theme--primary{--wco-user-avatar-bg: var(--wco-color-primary-500);--wco-user-avatar-color: var(--wco-color-primary-50)}.wco-user-avatar.wco-user-solid.wco-user-avatar__theme--secondary{--wco-user-avatar-bg: var(--wco-color-secondary-500);--wco-user-avatar-color: var(--wco-color-secondary-50)}.wco-user-avatar.wco-user-solid.wco-user-avatar__theme--light{--wco-user-avatar-bg: var(--wco-color-neutral-100);--wco-user-avatar-color: var(--wco-color-neutral-900)}.wco-user-avatar.wco-user-solid.wco-user-avatar__theme--dark{--wco-user-avatar-bg: var(--wco-color-neutral-700);--wco-user-avatar-color: var(--wco-color-neutral-50)}.wco-user-avatar span,.wco-user-avatar img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:0;margin:0;display:block}.wco-user-avatar img{width:var(--wco-size-xy-user-photo);height:var(--wco-size-xy-user-photo);object-fit:cover}.wco-user-avatar span{font-family:var(--wco-font-family, \"Roboto\", sans-serif);width:var(--wco-size-xy-user-photo);text-align:center;font-weight:700;font-size:var(--wco-size-user-photo, 18px);color:var(--wco-user-avatar-color, #ffffff);letter-spacing:.4px}\n"] }]
43
43
  }], ctorParameters: function () { return []; }, propDecorators: { userName: [{
44
44
  type: Input,
45
45
  args: ['name']
@@ -56,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
56
56
  type: Input,
57
57
  args: ['solid']
58
58
  }] } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hdmF0YXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvbmVudHMvc3JjL2xpYi91c2VyLWF2YXRhci91c2VyLWF2YXRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9uZW50cy9zcmMvbGliL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBVS9FLE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsc0JBQXNCO0lBQ1AsUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUNyQyw2QkFBNkI7SUFDYixVQUFVLEdBQVcsRUFBRSxDQUFDO0lBQ3hDLDZCQUE2QjtJQUNkLElBQUksR0FBcUMsSUFBSSxDQUFDO0lBQzdELDRDQUE0QztJQUM1QixLQUFLLEdBQStDLFdBQVcsQ0FBQztJQUVoRixxQ0FBcUM7SUFDckIsS0FBSyxHQUFZLEtBQUssQ0FBQztJQUV2Qzs7TUFFRTtJQUNLLGVBQWUsR0FBVyxFQUFFLENBQUM7SUFFcEMsZ0JBQWdCLENBQUM7SUFHakIsc0NBQXNDO0lBQ3RDLFdBQVc7UUFDVCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsK0JBQStCO0lBQ3ZCLG1CQUFtQjtRQUN6QixJQUFJLGlCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUc7WUFDbEIsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsSUFBSSxZQUFZLEdBQWEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEQsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDM0IsaUJBQWlCLElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3JFO1NBQ0Y7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pELENBQUM7d0dBdENVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLDBOQ1hoQyx5VEFPQSw2dEZEQ1ksWUFBWTs7NEZBR1gsbUJBQW1CO2tCQVIvQixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLGlCQUVELGlCQUFpQixDQUFDLElBQUksV0FDNUIsQ0FBQyxZQUFZLENBQUM7MEVBTVIsUUFBUTtzQkFBdEIsS0FBSzt1QkFBQyxNQUFNO2dCQUVHLFVBQVU7c0JBQXpCLEtBQUs7dUJBQUMsT0FBTztnQkFFQyxJQUFJO3NCQUFsQixLQUFLO3VCQUFDLE1BQU07Z0JBRUcsS0FBSztzQkFBcEIsS0FBSzt1QkFBQyxPQUFPO2dCQUdFLEtBQUs7c0JBQXBCLEtBQUs7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnd2NvLWF2YXRhcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1hdmF0YXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1hdmF0YXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlckF2YXRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8qKiBOb21lIGRvIHVzdcOhcmlvICovXHJcbiAgQElucHV0KCduYW1lJykgdXNlck5hbWU6IHN0cmluZyA9IFwiXCI7XHJcbiAgLyoqIFVybCBkYSBpbWFnZW0gb3BjaW9uYWwgKi9cclxuICBASW5wdXQoJ2ltYWdlJykgdXNlckF2YXRhcjogc3RyaW5nID0gXCJcIjtcclxuICAvKiogVGFtYW5obyBkbyBjb21wb25lbnRlICAqL1xyXG4gIEBJbnB1dCgnc2l6ZScpIHNpemU6ICd4cycgfCAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnID0gJ21kJztcclxuICAvKiogVGhlbWUgbXVkYW7Dp2EgZGUgY29yZXMgZG8gY29tcG9uZW50ZSAgKi9cclxuICBASW5wdXQoJ3RoZW1lJykgdGhlbWU6ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgJ2xpZ2h0JyB8ICdkYXJrJyA9ICdzZWNvbmRhcnknO1xyXG5cclxuICAvKiogc29saWQgdGlwbyBjb20gYmcgcHJlZG9taW5hbnQgICovXHJcbiAgQElucHV0KCdzb2xpZCcpIHNvbGlkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICogQGlnbm9yZVxyXG4gICovXHJcbiAgcHVibGljIHVzZXJOYW1lTGV0dGVyczogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcblxyXG4gIC8qKiBNdWRhbsOnYSBkZSBwYXLDom1ldHJvcyBkaW7Dom1pY29zICovXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLl9wcmVwYXJlTmFtZUxldHRlcnMoKTtcclxuICB9XHJcblxyXG4gIC8qKiBSZXRvcm5lIG8gbm9tZSBhYnJldmlhZG8gKi9cclxuICBwcml2YXRlIF9wcmVwYXJlTmFtZUxldHRlcnMoKTogdm9pZCB7XHJcbiAgICBsZXQgY2FwaXRhbGl6ZUxldHRlcnM6IHN0cmluZyA9IFwiXCI7XHJcbiAgICBpZiggdGhpcy51c2VyTmFtZSApIHtcclxuICAgICAgY2FwaXRhbGl6ZUxldHRlcnMgPSB0aGlzLnVzZXJOYW1lLmNoYXJBdCgwKTtcclxuICAgICAgbGV0IF9hcnJVc2VyTmFtZTogc3RyaW5nW10gPSB0aGlzLnVzZXJOYW1lLnNwbGl0KCcgJyk7XHJcbiAgICAgIGlmIChfYXJyVXNlck5hbWUubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGNhcGl0YWxpemVMZXR0ZXJzICs9IF9hcnJVc2VyTmFtZVtfYXJyVXNlck5hbWUubGVuZ3RoIC0xXS5jaGFyQXQoMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudXNlck5hbWVMZXR0ZXJzID0gY2FwaXRhbGl6ZUxldHRlcnMudG9VcHBlckNhc2UoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXZcclxuICBbY2xhc3NdPVwiXHJcbiAgICAnd2NvLXVzZXItYXZhdGFyIHdjby11c2VyLWF2YXRhcl9fc2l6ZS0tJyArIHNpemUgKyAnIHdjby11c2VyLWF2YXRhcl9fdGhlbWUtLScgKyB0aGVtZSArICcgJyArIChzb2xpZCA/ICd3Y28tdXNlci1zb2xpZCcgOiAnJykgXCJcclxuICBbdGl0bGVdPVwidXNlck5hbWVcIiA+XHJcbiAgPHNwYW4+e3t1c2VyTmFtZUxldHRlcnN9fTwvc3Bhbj5cclxuICA8aW1nICpuZ0lmPVwidXNlckF2YXRhclwiIFtzcmNdPVwidXNlckF2YXRhclwiIFthbHRdPVwidXNlck5hbWVcIiAvPlxyXG48L2Rpdj5cclxuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hdmF0YXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvbmVudHMvc3JjL2xpYi91c2VyLWF2YXRhci91c2VyLWF2YXRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9uZW50cy9zcmMvbGliL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBVS9FLE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsc0JBQXNCO0lBQ1AsUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUNyQyw2QkFBNkI7SUFDYixVQUFVLEdBQVcsRUFBRSxDQUFDO0lBQ3hDLDZCQUE2QjtJQUNkLElBQUksR0FBcUMsSUFBSSxDQUFDO0lBQzdELDRDQUE0QztJQUM1QixLQUFLLEdBQStDLFdBQVcsQ0FBQztJQUVoRixxQ0FBcUM7SUFDckIsS0FBSyxHQUFZLEtBQUssQ0FBQztJQUV2Qzs7TUFFRTtJQUNLLGVBQWUsR0FBVyxFQUFFLENBQUM7SUFFcEMsZ0JBQWdCLENBQUM7SUFHakIsc0NBQXNDO0lBQ3RDLFdBQVc7UUFDVCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsK0JBQStCO0lBQ3ZCLG1CQUFtQjtRQUN6QixJQUFJLGlCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUc7WUFDbEIsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsSUFBSSxZQUFZLEdBQWEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEQsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDM0IsaUJBQWlCLElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3JFO1NBQ0Y7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pELENBQUM7d0dBdENVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLDBOQ1hoQyx5VEFPQSx5dEZEQ1ksWUFBWTs7NEZBR1gsbUJBQW1CO2tCQVIvQixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLGlCQUVELGlCQUFpQixDQUFDLElBQUksV0FDNUIsQ0FBQyxZQUFZLENBQUM7MEVBTVIsUUFBUTtzQkFBdEIsS0FBSzt1QkFBQyxNQUFNO2dCQUVHLFVBQVU7c0JBQXpCLEtBQUs7dUJBQUMsT0FBTztnQkFFQyxJQUFJO3NCQUFsQixLQUFLO3VCQUFDLE1BQU07Z0JBRUcsS0FBSztzQkFBcEIsS0FBSzt1QkFBQyxPQUFPO2dCQUdFLEtBQUs7c0JBQXBCLEtBQUs7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnd2NvLWF2YXRhcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1hdmF0YXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1hdmF0YXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlckF2YXRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8qKiBOb21lIGRvIHVzdcOhcmlvICovXHJcbiAgQElucHV0KCduYW1lJykgdXNlck5hbWU6IHN0cmluZyA9IFwiXCI7XHJcbiAgLyoqIFVybCBkYSBpbWFnZW0gb3BjaW9uYWwgKi9cclxuICBASW5wdXQoJ2ltYWdlJykgdXNlckF2YXRhcjogc3RyaW5nID0gXCJcIjtcclxuICAvKiogVGFtYW5obyBkbyBjb21wb25lbnRlICAqL1xyXG4gIEBJbnB1dCgnc2l6ZScpIHNpemU6ICd4cycgfCAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnID0gJ21kJztcclxuICAvKiogVGhlbWUgbXVkYW7Dp2EgZGUgY29yZXMgZG8gY29tcG9uZW50ZSAgKi9cclxuICBASW5wdXQoJ3RoZW1lJykgdGhlbWU6ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgJ2xpZ2h0JyB8ICdkYXJrJyA9ICdzZWNvbmRhcnknO1xyXG5cclxuICAvKiogc29saWQgdGlwbyBjb20gYmcgcHJlZG9taW5hbnQgICovXHJcbiAgQElucHV0KCdzb2xpZCcpIHNvbGlkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICogQGlnbm9yZVxyXG4gICovXHJcbiAgcHVibGljIHVzZXJOYW1lTGV0dGVyczogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcblxyXG4gIC8qKiBNdWRhbsOnYSBkZSBwYXLDom1ldHJvcyBkaW7Dom1pY29zICovXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLl9wcmVwYXJlTmFtZUxldHRlcnMoKTtcclxuICB9XHJcblxyXG4gIC8qKiBSZXRvcm5lIG8gbm9tZSBhYnJldmlhZG8gKi9cclxuICBwcml2YXRlIF9wcmVwYXJlTmFtZUxldHRlcnMoKTogdm9pZCB7XHJcbiAgICBsZXQgY2FwaXRhbGl6ZUxldHRlcnM6IHN0cmluZyA9IFwiXCI7XHJcbiAgICBpZiggdGhpcy51c2VyTmFtZSApIHtcclxuICAgICAgY2FwaXRhbGl6ZUxldHRlcnMgPSB0aGlzLnVzZXJOYW1lLmNoYXJBdCgwKTtcclxuICAgICAgbGV0IF9hcnJVc2VyTmFtZTogc3RyaW5nW10gPSB0aGlzLnVzZXJOYW1lLnNwbGl0KCcgJyk7XHJcbiAgICAgIGlmIChfYXJyVXNlck5hbWUubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGNhcGl0YWxpemVMZXR0ZXJzICs9IF9hcnJVc2VyTmFtZVtfYXJyVXNlck5hbWUubGVuZ3RoIC0xXS5jaGFyQXQoMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudXNlck5hbWVMZXR0ZXJzID0gY2FwaXRhbGl6ZUxldHRlcnMudG9VcHBlckNhc2UoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXZcclxuICBbY2xhc3NdPVwiXHJcbiAgICAnd2NvLXVzZXItYXZhdGFyIHdjby11c2VyLWF2YXRhcl9fc2l6ZS0tJyArIHNpemUgKyAnIHdjby11c2VyLWF2YXRhcl9fdGhlbWUtLScgKyB0aGVtZSArICcgJyArIChzb2xpZCA/ICd3Y28tdXNlci1zb2xpZCcgOiAnJykgXCJcclxuICBbdGl0bGVdPVwidXNlck5hbWVcIiA+XHJcbiAgPHNwYW4+e3t1c2VyTmFtZUxldHRlcnN9fTwvc3Bhbj5cclxuICA8aW1nICpuZ0lmPVwidXNlckF2YXRhclwiIFtzcmNdPVwidXNlckF2YXRhclwiIFthbHRdPVwidXNlck5hbWVcIiAvPlxyXG48L2Rpdj5cclxuIl19