cilog-lib 1.2.7 → 1.3.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.
@@ -11,6 +11,7 @@ export var ColType;
11
11
  ColType["File"] = "File";
12
12
  ColType["Text"] = "Text";
13
13
  ColType["Number"] = "Number";
14
+ ColType["CilogNumber"] = "CilogNumber";
14
15
  ColType["SelectButton"] = "SelectButton";
15
16
  ColType["Switch"] = "Switch";
16
17
  ColType["Button"] = "Button";
@@ -43,4 +44,4 @@ export var ModeCalendar;
43
44
  ModeCalendar["Year"] = "year";
44
45
  ModeCalendar["Month"] = "month";
45
46
  })(ModeCalendar || (ModeCalendar = {}));
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpbGxlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaWxvZy1saWIvc3JjL2xpYi9oZWxwZXJzL2VudW1zL2dyaWxsZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFFBSVg7QUFKRCxXQUFZLFFBQVE7SUFDaEIsMkJBQWUsQ0FBQTtJQUNmLHlCQUFhLENBQUE7SUFDYiw2QkFBaUIsQ0FBQTtBQUNyQixDQUFDLEVBSlcsUUFBUSxLQUFSLFFBQVEsUUFJbkI7QUFFRCxNQUFNLENBQU4sSUFBWSxPQVlYO0FBWkQsV0FBWSxPQUFPO0lBQ2Ysc0NBQTJCLENBQUE7SUFDM0IsZ0NBQXFCLENBQUE7SUFDckIsd0JBQWEsQ0FBQTtJQUNiLHdCQUFhLENBQUE7SUFDYiw0QkFBaUIsQ0FBQTtJQUNqQix3Q0FBNkIsQ0FBQTtJQUM3Qiw0QkFBaUIsQ0FBQTtJQUNqQiw0QkFBaUIsQ0FBQTtJQUNqQiwwQkFBZSxDQUFBO0lBQ2Ysd0JBQWEsQ0FBQTtJQUNiLDBCQUFlLENBQUE7QUFDbkIsQ0FBQyxFQVpXLE9BQU8sS0FBUCxPQUFPLFFBWWxCO0FBRUQsTUFBTSxDQUFOLElBQVksUUFPWDtBQVBELFdBQVksUUFBUTtJQUNoQixtQ0FBdUIsQ0FBQTtJQUN2QiwrQkFBbUIsQ0FBQTtJQUNuQix5QkFBYSxDQUFBO0lBQ2IsK0JBQW1CLENBQUE7SUFDbkIseUJBQWEsQ0FBQTtJQUNiLDZCQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFQVyxRQUFRLEtBQVIsUUFBUSxRQU9uQjtBQUVELE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDckIsNEJBQVcsQ0FBQTtJQUNYLHNDQUFxQixDQUFBO0FBQ3pCLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QjtBQUVELE1BQU0sQ0FBTixJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDbkIsbUNBQW9CLENBQUE7SUFDcEIsaUNBQWtCLENBQUE7QUFDdEIsQ0FBQyxFQUhXLFdBQVcsS0FBWCxXQUFXLFFBR3RCO0FBRUQsTUFBTSxDQUFOLElBQVksWUFJWDtBQUpELFdBQVksWUFBWTtJQUNwQiw2QkFBYSxDQUFBO0lBQ2IsNkJBQWEsQ0FBQTtJQUNiLCtCQUFlLENBQUE7QUFDbkIsQ0FBQyxFQUpXLFlBQVksS0FBWixZQUFZLFFBSXZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gUG9zaXRpb24ge1xyXG4gICAgUmlnaHQgPSAncmlnaHQnLFxyXG4gICAgTGVmdCA9ICdsZWZ0JyxcclxuICAgIENlbnRlciA9ICdjZW50ZXInXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIENvbFR5cGUge1xyXG4gICAgTXVsdGlTZWxlY3QgPSAnTXVsdGlTZWxlY3QnLFxyXG4gICAgRHJvcGRvd24gPSAnRHJvcGRvd24nLFxyXG4gICAgRmlsZSA9ICdGaWxlJyxcclxuICAgIFRleHQgPSAnVGV4dCcsXHJcbiAgICBOdW1iZXIgPSAnTnVtYmVyJyxcclxuICAgIFNlbGVjdEJ1dHRvbiA9ICdTZWxlY3RCdXR0b24nLFxyXG4gICAgU3dpdGNoID0gJ1N3aXRjaCcsXHJcbiAgICBCdXR0b24gPSAnQnV0dG9uJyxcclxuICAgIEltYWdlID0gJ0ltYWdlJyxcclxuICAgIERhdGUgPSAnRGF0ZScsXHJcbiAgICBTdGF0ZSA9ICdTdGF0ZSdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gU2V2ZXJpdHkge1xyXG4gICAgU2Vjb25kYXJ5ID0gJ3NlY29uZGFyeScsXHJcbiAgICBTdWNjZXNzID0gJ3N1Y2Nlc3MnLFxyXG4gICAgSW5mbyA9ICdpbmZvJyxcclxuICAgIFdhcm5pbmcgPSAnd2FybmluZycsXHJcbiAgICBIZWxwID0gJ2hlbHAnLFxyXG4gICAgRGFuZ2VyID0gJ2RhbmdlcidcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTW9kZVNlbGVjdGlvbiB7XHJcbiAgICBSb3cgPSAncm93JyxcclxuICAgIENoZWNrYm94ID0gJ2NoZWNrYm94J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBUaGVtZUdyaWxsZSB7XHJcbiAgICBCcm93biA9ICdncmlkX2Jyb3duJyxcclxuICAgIEdyZXkgPSAnZ3JpZF9ncmV5J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBNb2RlQ2FsZW5kYXIge1xyXG4gICAgRGF0ZSA9ICdkYXRlJyxcclxuICAgIFllYXIgPSAneWVhcicsXHJcbiAgICBNb250aCA9ICdtb250aCdcclxufVxyXG4iXX0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpbGxlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaWxvZy1saWIvc3JjL2xpYi9oZWxwZXJzL2VudW1zL2dyaWxsZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFFBSVg7QUFKRCxXQUFZLFFBQVE7SUFDaEIsMkJBQWUsQ0FBQTtJQUNmLHlCQUFhLENBQUE7SUFDYiw2QkFBaUIsQ0FBQTtBQUNyQixDQUFDLEVBSlcsUUFBUSxLQUFSLFFBQVEsUUFJbkI7QUFFRCxNQUFNLENBQU4sSUFBWSxPQWFYO0FBYkQsV0FBWSxPQUFPO0lBQ2Ysc0NBQTJCLENBQUE7SUFDM0IsZ0NBQXFCLENBQUE7SUFDckIsd0JBQWEsQ0FBQTtJQUNiLHdCQUFhLENBQUE7SUFDYiw0QkFBaUIsQ0FBQTtJQUNqQixzQ0FBMkIsQ0FBQTtJQUMzQix3Q0FBNkIsQ0FBQTtJQUM3Qiw0QkFBaUIsQ0FBQTtJQUNqQiw0QkFBaUIsQ0FBQTtJQUNqQiwwQkFBZSxDQUFBO0lBQ2Ysd0JBQWEsQ0FBQTtJQUNiLDBCQUFlLENBQUE7QUFDbkIsQ0FBQyxFQWJXLE9BQU8sS0FBUCxPQUFPLFFBYWxCO0FBRUQsTUFBTSxDQUFOLElBQVksUUFPWDtBQVBELFdBQVksUUFBUTtJQUNoQixtQ0FBdUIsQ0FBQTtJQUN2QiwrQkFBbUIsQ0FBQTtJQUNuQix5QkFBYSxDQUFBO0lBQ2IsK0JBQW1CLENBQUE7SUFDbkIseUJBQWEsQ0FBQTtJQUNiLDZCQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFQVyxRQUFRLEtBQVIsUUFBUSxRQU9uQjtBQUVELE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDckIsNEJBQVcsQ0FBQTtJQUNYLHNDQUFxQixDQUFBO0FBQ3pCLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QjtBQUVELE1BQU0sQ0FBTixJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDbkIsbUNBQW9CLENBQUE7SUFDcEIsaUNBQWtCLENBQUE7QUFDdEIsQ0FBQyxFQUhXLFdBQVcsS0FBWCxXQUFXLFFBR3RCO0FBRUQsTUFBTSxDQUFOLElBQVksWUFJWDtBQUpELFdBQVksWUFBWTtJQUNwQiw2QkFBYSxDQUFBO0lBQ2IsNkJBQWEsQ0FBQTtJQUNiLCtCQUFlLENBQUE7QUFDbkIsQ0FBQyxFQUpXLFlBQVksS0FBWixZQUFZLFFBSXZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gUG9zaXRpb24ge1xyXG4gICAgUmlnaHQgPSAncmlnaHQnLFxyXG4gICAgTGVmdCA9ICdsZWZ0JyxcclxuICAgIENlbnRlciA9ICdjZW50ZXInXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIENvbFR5cGUge1xyXG4gICAgTXVsdGlTZWxlY3QgPSAnTXVsdGlTZWxlY3QnLFxyXG4gICAgRHJvcGRvd24gPSAnRHJvcGRvd24nLFxyXG4gICAgRmlsZSA9ICdGaWxlJyxcclxuICAgIFRleHQgPSAnVGV4dCcsXHJcbiAgICBOdW1iZXIgPSAnTnVtYmVyJyxcclxuICAgIENpbG9nTnVtYmVyID0gJ0NpbG9nTnVtYmVyJyxcclxuICAgIFNlbGVjdEJ1dHRvbiA9ICdTZWxlY3RCdXR0b24nLFxyXG4gICAgU3dpdGNoID0gJ1N3aXRjaCcsXHJcbiAgICBCdXR0b24gPSAnQnV0dG9uJyxcclxuICAgIEltYWdlID0gJ0ltYWdlJyxcclxuICAgIERhdGUgPSAnRGF0ZScsXHJcbiAgICBTdGF0ZSA9ICdTdGF0ZSdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gU2V2ZXJpdHkge1xyXG4gICAgU2Vjb25kYXJ5ID0gJ3NlY29uZGFyeScsXHJcbiAgICBTdWNjZXNzID0gJ3N1Y2Nlc3MnLFxyXG4gICAgSW5mbyA9ICdpbmZvJyxcclxuICAgIFdhcm5pbmcgPSAnd2FybmluZycsXHJcbiAgICBIZWxwID0gJ2hlbHAnLFxyXG4gICAgRGFuZ2VyID0gJ2RhbmdlcidcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTW9kZVNlbGVjdGlvbiB7XHJcbiAgICBSb3cgPSAncm93JyxcclxuICAgIENoZWNrYm94ID0gJ2NoZWNrYm94J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBUaGVtZUdyaWxsZSB7XHJcbiAgICBCcm93biA9ICdncmlkX2Jyb3duJyxcclxuICAgIEdyZXkgPSAnZ3JpZF9ncmV5J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBNb2RlQ2FsZW5kYXIge1xyXG4gICAgRGF0ZSA9ICdkYXRlJyxcclxuICAgIFllYXIgPSAneWVhcicsXHJcbiAgICBNb250aCA9ICdtb250aCdcclxufVxyXG4iXX0=
@@ -11,14 +11,17 @@ export class CilogInputNumberComponent {
11
11
  this.onBlur = new EventEmitter();
12
12
  this.valueStr = '';
13
13
  this.specialKeys = ['Tab', 'End', 'Home', 'ArrowLeft', 'ArrowRight'];
14
- this.onChangeE = (rating) => { };
15
- this.onTouchedE = () => { };
16
14
  }
17
15
  ngOnInit() {
18
16
  this.regex = new RegExp(`^-?\\d{1,3}(?:\\d{3})*(\\.\\d{0,${this.maxDecimals || Infinity}})?$|^-?\\d{1,3}(?:\\d{3})*\\,\\d{0,${this.maxDecimals || Infinity}}$`);
19
17
  }
20
18
  onKeyDownEvent(event) {
21
- if (this.specialKeys.indexOf(event.key) !== -1 || event.key == 'Enter') {
19
+ if (this.specialKeys.indexOf(event.key) !== -1) {
20
+ return;
21
+ }
22
+ if (event.key == 'Enter') {
23
+ this.onChangeInput(this.value);
24
+ this.onChange.emit(this.value);
22
25
  return;
23
26
  }
24
27
  let current = this.cilogInputNumber.nativeElement.value;
@@ -27,10 +30,9 @@ export class CilogInputNumberComponent {
27
30
  let next = current;
28
31
  if (event.key === '.') {
29
32
  let positionStartPoint = this.cilogInputNumber.nativeElement.selectionStart;
30
- next = [current.slice(0, positionStart), ',', current.slice(positionStart)].join('').replace(/\s/g, '');
33
+ next = [current.slice(0, positionStart), ',', current.slice(positionEnd)].join('').replace(/\s/g, '');
31
34
  if (String(next).match(this.regex)) {
32
- this.cilogInputNumber.nativeElement.value = (+next.replace(',', '.')).toLocaleString('fr-FR');
33
- this.onInputEvent();
35
+ this.acceptValue(next, false);
34
36
  }
35
37
  else {
36
38
  if (current.slice(positionStart)[0] == ',') {
@@ -38,63 +40,81 @@ export class CilogInputNumberComponent {
38
40
  this.cilogInputNumber.nativeElement.selectionEnd = positionStartPoint + 1;
39
41
  }
40
42
  }
41
- event.preventDefault();
42
43
  }
43
44
  else if (event.key === 'Backspace') {
44
- if (this.cilogInputNumber.nativeElement.selectionStart != this.cilogInputNumber.nativeElement.selectionEnd) {
45
- next = [current.slice(0, positionStart), current.slice(positionEnd)].join('').replace(/\s/g, '');
45
+ if (positionStart == positionEnd && /\s/g.test(current.slice(positionStart - 1, positionStart))) {
46
+ this.cilogInputNumber.nativeElement.selectionStart = positionStart - 1;
47
+ this.cilogInputNumber.nativeElement.selectionEnd = positionStart - 1;
46
48
  }
47
49
  else {
48
- next = [current.slice(0, positionStart - 1), current.slice(positionEnd)].join('').replace(/\s/g, '');
50
+ if (this.cilogInputNumber.nativeElement.selectionStart != this.cilogInputNumber.nativeElement.selectionEnd) {
51
+ next = [current.slice(0, positionStart), current.slice(positionEnd)].join('').replace(/\s/g, '');
52
+ }
53
+ else {
54
+ next = [current.slice(0, positionStart - 1), current.slice(positionEnd)].join('').replace(/\s/g, '');
55
+ }
56
+ this.checkValue(next, event);
49
57
  }
50
- this.checkValue(next);
51
58
  }
52
59
  else {
53
- next = [current.slice(0, positionStart), event.key, current.slice(positionStart)].join('').replace(/\s/g, '');
54
- this.checkValue(next);
55
60
  if (event.key === ',' && current.slice(positionStart)[0] == ',') {
56
61
  this.cilogInputNumber.nativeElement.selectionStart += 1;
57
62
  }
63
+ else {
64
+ next = [current.slice(0, positionStart), event.key, current.slice(positionEnd)].join('').replace(/\s/g, '');
65
+ this.checkValue(next, event);
66
+ }
58
67
  }
68
+ event.preventDefault();
59
69
  }
60
- checkValue(next) {
70
+ checkValue(next, event) {
61
71
  if (!String(next).match(this.regex)) {
62
- if (next != '') {
63
- event.preventDefault();
72
+ if (next == '') {
73
+ this.acceptValue(next, event);
64
74
  }
65
75
  }
66
76
  else {
67
77
  let number = +(next.replace(',', '.'));
68
- if (this.min != null && number < this.min) {
69
- event.preventDefault();
70
- }
71
- else if (this.max != null && number > this.max) {
72
- event.preventDefault();
78
+ if (this.min == null || number >= this.min) {
79
+ if (this.max == null || number <= this.max) {
80
+ this.acceptValue(next, event);
81
+ }
73
82
  }
74
83
  }
75
84
  }
76
- onInputEvent() {
77
- let positionStart = this.cilogInputNumber.nativeElement.selectionStart;
85
+ acceptValue(value, event) {
86
+ const positionStart = this.cilogInputNumber.nativeElement.selectionStart;
87
+ const positionEnd = this.cilogInputNumber.nativeElement.selectionEnd;
88
+ if (value != '') {
89
+ if (this.maxDecimals != null) {
90
+ this.cilogInputNumber.nativeElement.value = (+value.replace(',', '.')).toLocaleString('fr-FR', { maximumFractionDigits: this.maxDecimals });
91
+ }
92
+ else {
93
+ this.cilogInputNumber.nativeElement.value = (+value.replace(',', '.')).toLocaleString('fr-FR');
94
+ }
95
+ if (value.slice(-1) == ',') {
96
+ this.cilogInputNumber.nativeElement.value += ',';
97
+ }
98
+ }
99
+ else {
100
+ this.cilogInputNumber.nativeElement.value = '';
101
+ }
102
+ if (positionStart == positionEnd) {
103
+ this.cilogInputNumber.nativeElement.selectionStart = event.key != 'Backspace' ? (positionStart + 1) : (positionStart - 1);
104
+ this.cilogInputNumber.nativeElement.selectionEnd = event.key != 'Backspace' ? (positionStart + 1) : (positionStart - 1);
105
+ }
106
+ else {
107
+ this.cilogInputNumber.nativeElement.selectionStart = positionStart;
108
+ this.cilogInputNumber.nativeElement.selectionEnd = positionStart;
109
+ }
78
110
  if (this.cilogInputNumber.nativeElement.value.replace(/\s/g, '') == '' || this.cilogInputNumber.nativeElement.value.replace(/\s/g, '') == '-') {
79
111
  this.writeValue(null);
80
112
  }
81
113
  else {
82
114
  this.writeValue(+(this.cilogInputNumber.nativeElement.value.replace(',', '.').replaceAll(/\s/g, '')));
83
115
  }
116
+ this.onChangeInput(this.value);
84
117
  this.onInput.emit(this.value);
85
- setTimeout(() => {
86
- this.cilogInputNumber.nativeElement.selectionStart = positionStart;
87
- this.cilogInputNumber.nativeElement.selectionEnd = positionStart;
88
- });
89
- }
90
- onChangeEvent() {
91
- this.onChange.emit(this.value);
92
- }
93
- onBlurEvent(event) {
94
- this.onBlur.emit(this.value);
95
- }
96
- onFocusEvent(event) {
97
- this.onFocus.emit(this.value);
98
118
  }
99
119
  writeValue(value) {
100
120
  this.value = value;
@@ -102,17 +122,6 @@ export class CilogInputNumberComponent {
102
122
  this.valueStr = '';
103
123
  }
104
124
  else {
105
- //if (this.maxDecimals != null && this.maxDecimals > -1) {
106
- // if (this.value.toString().split('.').length == 2 && this.maxDecimals <= this.value.toString().split('.')[1].length) {
107
- // this.valueStr = this.value.toFixed(this.maxDecimals);
108
- // this.valueStr = this.valueStr;
109
- // } else {
110
- // this.valueStr = this.value.toString();
111
- // }
112
- //} else {
113
- // this.valueStr = this.value.toString();
114
- //}
115
- //this.valueStr = this.valueStr.replace('.', ',');
116
125
  if (this.maxDecimals != null) {
117
126
  this.valueStr = this.value.toLocaleString('fr-FR', { maximumFractionDigits: this.maxDecimals });
118
127
  }
@@ -121,21 +130,31 @@ export class CilogInputNumberComponent {
121
130
  }
122
131
  }
123
132
  }
133
+ onBlurEvent(event) {
134
+ this.onChangeInput(this.value);
135
+ this.onChange.emit(this.value);
136
+ this.onBlur.emit(this.value);
137
+ }
138
+ onFocusEvent(event) {
139
+ this.onFocus.emit(this.value);
140
+ }
141
+ onChangeInput(val) { }
142
+ onTouchedInput() { }
124
143
  registerOnChange(fn) {
125
- this.onChangeE = fn;
144
+ this.onChangeInput = fn;
126
145
  }
127
146
  registerOnTouched(fn) {
128
- this.onTouchedE = fn;
147
+ this.onTouchedInput = fn;
129
148
  }
130
149
  }
131
150
  CilogInputNumberComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: CilogInputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
132
- CilogInputNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: CilogInputNumberComponent, selector: "cilog-input-number", inputs: { min: "min", max: "max", maxDecimals: "maxDecimals", prefixe: "prefixe", suffixe: "suffixe" }, outputs: { onInput: "onInput", onChange: "onChange", onFocus: "onFocus", onBlur: "onBlur" }, host: { listeners: { "keydown": "onKeyDownEvent($event)", "input": "onInputEvent($event)", "change": "onChangeEvent($event)" } }, providers: [
151
+ CilogInputNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: CilogInputNumberComponent, selector: "cilog-input-number", inputs: { min: "min", max: "max", maxDecimals: "maxDecimals", prefixe: "prefixe", suffixe: "suffixe", inputStyleClass: "inputStyleClass" }, outputs: { onInput: "onInput", onChange: "onChange", onFocus: "onFocus", onBlur: "onBlur" }, host: { listeners: { "keydown": "onKeyDownEvent($event)" } }, providers: [
133
152
  {
134
153
  provide: NG_VALUE_ACCESSOR,
135
154
  useExisting: forwardRef(() => CilogInputNumberComponent),
136
155
  multi: true
137
156
  }
138
- ], viewQueries: [{ propertyName: "cilogInputNumber", first: true, predicate: ["cilogInputNumber"], descendants: true }], ngImport: i0, template: "<div class=\"input-group w-full\">\r\n\r\n <span class=\"input-group-addon prefixe\"\r\n *ngIf=\"prefixe != null\">\r\n {{ prefixe }}\r\n </span>\r\n\r\n <input #cilogInputNumber\r\n pInputText\r\n type=\"text\"\r\n [value]=\"valueStr\"\r\n (focus)=\"onFocusEvent($event)\"\r\n (blur)=\"onBlurEvent($event)\"\r\n class=\"w-full z-1\"\r\n [ngClass]=\"suffixe != null && prefixe != null ? 'border-noround' : prefixe != null ? 'border-noround-left' : suffixe != null ? 'border-noround-right' : null\" />\r\n\r\n <span class=\"input-group-addon suffixe\"\r\n *ngIf=\"suffixe != null\">\r\n {{ suffixe }}\r\n </span>\r\n\r\n</div>\r\n", styles: [":host ::ng-deep .input-group{display:flex}:host ::ng-deep .input-group-addon{background-color:#fff;border:1px solid #ccc;padding:9px 12px;max-width:5rem;overflow:hidden;font-weight:700}:host ::ng-deep .prefixe{border-radius:4px 0 0 4px;border-right:none}:host ::ng-deep .suffixe{border-radius:0 4px 4px 0;border-left:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.InputText, selector: "[pInputText]" }] });
157
+ ], viewQueries: [{ propertyName: "cilogInputNumber", first: true, predicate: ["cilogInputNumber"], descendants: true }], ngImport: i0, template: "<div class=\"input-group w-full\">\r\n\r\n <span class=\"input-group-addon prefixe\"\r\n *ngIf=\"prefixe != null\">\r\n {{ prefixe }}\r\n </span>\r\n\r\n <input #cilogInputNumber\r\n pInputText\r\n type=\"text\"\r\n [value]=\"valueStr\"\r\n (focus)=\"onFocusEvent($event)\"\r\n (blur)=\"onBlurEvent($event)\"\r\n [class]=\"'w-full z-1' + (inputStyleClass == null ? '' : ' ' + inputStyleClass)\"\r\n [ngClass]=\"suffixe != null && prefixe != null ? 'border-noround' : prefixe != null ? 'border-noround-left' : suffixe != null ? 'border-noround-right' : null\" />\r\n\r\n <span class=\"input-group-addon suffixe\"\r\n *ngIf=\"suffixe != null\">\r\n {{ suffixe }}\r\n </span>\r\n\r\n</div>\r\n", styles: [":host ::ng-deep .input-group{display:flex}:host ::ng-deep .input-group-addon{background-color:#fff;border:1px solid #ccc;padding:9px 12px;max-width:5rem;overflow:hidden;font-weight:700}:host ::ng-deep .prefixe{border-radius:4px 0 0 4px;border-right:none}:host ::ng-deep .suffixe{border-radius:0 4px 4px 0;border-left:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.InputText, selector: "[pInputText]" }] });
139
158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: CilogInputNumberComponent, decorators: [{
140
159
  type: Component,
141
160
  args: [{ selector: 'cilog-input-number', providers: [
@@ -144,7 +163,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
144
163
  useExisting: forwardRef(() => CilogInputNumberComponent),
145
164
  multi: true
146
165
  }
147
- ], template: "<div class=\"input-group w-full\">\r\n\r\n <span class=\"input-group-addon prefixe\"\r\n *ngIf=\"prefixe != null\">\r\n {{ prefixe }}\r\n </span>\r\n\r\n <input #cilogInputNumber\r\n pInputText\r\n type=\"text\"\r\n [value]=\"valueStr\"\r\n (focus)=\"onFocusEvent($event)\"\r\n (blur)=\"onBlurEvent($event)\"\r\n class=\"w-full z-1\"\r\n [ngClass]=\"suffixe != null && prefixe != null ? 'border-noround' : prefixe != null ? 'border-noround-left' : suffixe != null ? 'border-noround-right' : null\" />\r\n\r\n <span class=\"input-group-addon suffixe\"\r\n *ngIf=\"suffixe != null\">\r\n {{ suffixe }}\r\n </span>\r\n\r\n</div>\r\n", styles: [":host ::ng-deep .input-group{display:flex}:host ::ng-deep .input-group-addon{background-color:#fff;border:1px solid #ccc;padding:9px 12px;max-width:5rem;overflow:hidden;font-weight:700}:host ::ng-deep .prefixe{border-radius:4px 0 0 4px;border-right:none}:host ::ng-deep .suffixe{border-radius:0 4px 4px 0;border-left:none}\n"] }]
166
+ ], template: "<div class=\"input-group w-full\">\r\n\r\n <span class=\"input-group-addon prefixe\"\r\n *ngIf=\"prefixe != null\">\r\n {{ prefixe }}\r\n </span>\r\n\r\n <input #cilogInputNumber\r\n pInputText\r\n type=\"text\"\r\n [value]=\"valueStr\"\r\n (focus)=\"onFocusEvent($event)\"\r\n (blur)=\"onBlurEvent($event)\"\r\n [class]=\"'w-full z-1' + (inputStyleClass == null ? '' : ' ' + inputStyleClass)\"\r\n [ngClass]=\"suffixe != null && prefixe != null ? 'border-noround' : prefixe != null ? 'border-noround-left' : suffixe != null ? 'border-noround-right' : null\" />\r\n\r\n <span class=\"input-group-addon suffixe\"\r\n *ngIf=\"suffixe != null\">\r\n {{ suffixe }}\r\n </span>\r\n\r\n</div>\r\n", styles: [":host ::ng-deep .input-group{display:flex}:host ::ng-deep .input-group-addon{background-color:#fff;border:1px solid #ccc;padding:9px 12px;max-width:5rem;overflow:hidden;font-weight:700}:host ::ng-deep .prefixe{border-radius:4px 0 0 4px;border-right:none}:host ::ng-deep .suffixe{border-radius:0 4px 4px 0;border-left:none}\n"] }]
148
167
  }], ctorParameters: function () { return []; }, propDecorators: { min: [{
149
168
  type: Input
150
169
  }], max: [{
@@ -155,6 +174,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
155
174
  type: Input
156
175
  }], suffixe: [{
157
176
  type: Input
177
+ }], inputStyleClass: [{
178
+ type: Input
158
179
  }], onInput: [{
159
180
  type: Output
160
181
  }], onChange: [{
@@ -169,11 +190,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
169
190
  }], onKeyDownEvent: [{
170
191
  type: HostListener,
171
192
  args: ['keydown', ['$event']]
172
- }], onInputEvent: [{
173
- type: HostListener,
174
- args: ['input', ['$event']]
175
- }], onChangeEvent: [{
176
- type: HostListener,
177
- args: ['change', ['$event']]
178
193
  }] } });
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lsb2ctaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NpbG9nLWxpYi9zcmMvbGliL3ZpZXdzL2NpbG9nLWlucHV0LW51bWJlci9jaWxvZy1pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2lsb2ctbGliL3NyYy9saWIvdmlld3MvY2lsb2ctaW5wdXQtbnVtYmVyL2NpbG9nLWlucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hJLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQWN6RSxNQUFNLE9BQU8seUJBQXlCO0lBc0JsQztRQVpVLFlBQU8sR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMzRCxhQUFRLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDNUQsWUFBTyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzNELFdBQU0sR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVwRSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBS2QsZ0JBQVcsR0FBa0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7UUE0RnZGLGNBQVMsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXBDLGVBQVUsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUE1RlAsQ0FBQztJQUVqQixRQUFRO1FBQ0osSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxt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QjtrQkFackMsU0FBUzsrQkFDSSxvQkFBb0IsYUFHbkI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMEJBQTBCLENBQUM7NEJBQ3hELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzBFQU1RLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFJd0IsZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQjtnQkFZN0IsY0FBYztzQkFEYixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkF5RG5DLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZ0JqQyxhQUFhO3NCQURaLFlBQVk7dUJBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NpbG9nLWlucHV0LW51bWJlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NpbG9nLWlucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2lsb2ctaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2lsb2dJbnB1dE51bWJlckNvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBDaWxvZ0lucHV0TnVtYmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgICB2YWx1ZTogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgbWluOiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBtYXg6IG51bWJlcjtcbiAgICBASW5wdXQoKSBtYXhEZWNpbWFsczogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHByZWZpeGU6IHN0cmluZztcbiAgICBASW5wdXQoKSBzdWZmaXhlOiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KCkgb25JbnB1dDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gICAgQE91dHB1dCgpIG9uQmx1cjogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIHZhbHVlU3RyOiBzdHJpbmcgPSAnJztcblxuICAgIEBWaWV3Q2hpbGQoJ2NpbG9nSW5wdXROdW1iZXInKSBjaWxvZ0lucHV0TnVtYmVyOiBFbGVtZW50UmVmO1xuXG4gICAgcHJpdmF0ZSByZWdleDogUmVnRXhwO1xuICAgIHByaXZhdGUgc3BlY2lhbEtleXM6IEFycmF5PHN0cmluZz4gPSBbJ1RhYicsICdFbmQnLCAnSG9tZScsICdBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCddO1xuXG4gICAgY29uc3RydWN0b3IoKSB7IH1cclxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMucmVnZXggPSBuZXcgUmVnRXhwKGBeLT9cXFxcZHsxLDN9KD86XFxcXGR7M30pKihcXFxcLlxcXFxkezAsJHt0aGlzLm1heERlY2ltYWxzIHx8IEluZmluaXR5fX0pPyR8Xi0/XFxcXGR7MSwzfSg/OlxcXFxkezN9KSpcXFxcLFxcXFxkezAsJHt0aGlzLm1heERlY2ltYWxzIHx8IEluZmluaXR5fX0kYCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgb25LZXlEb3duRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuc3BlY2lhbEtleXMuaW5kZXhPZihldmVudC5rZXkpICE9PSAtMSB8fCBldmVudC5rZXkgPT0gJ0VudGVyJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGN1cnJlbnQ6IHN0cmluZyA9IHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnZhbHVlO1xuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU3RhcnQgPSB0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgY29uc3QgcG9zaXRpb25FbmQgPSB0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQ7XG5cbiAgICAgICAgbGV0IG5leHQ6IHN0cmluZyA9IGN1cnJlbnQ7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICcuJykge1xuICAgICAgICAgICAgbGV0IHBvc2l0aW9uU3RhcnRQb2ludDogbnVtYmVyID0gdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgICAgICBuZXh0ID0gW2N1cnJlbnQuc2xpY2UoMCwgcG9zaXRpb25TdGFydCksICcsJywgY3VycmVudC5zbGljZShwb3NpdGlvblN0YXJ0KV0uam9pbignJykucmVwbGFjZSgvXFxzL2csICcnKTtcbiAgICAgICAgICAgIGlmIChTdHJpbmcobmV4dCkubWF0Y2godGhpcy5yZWdleCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC52YWx1ZSA9ICgrbmV4dC5yZXBsYWNlKCcsJywgJy4nKSkudG9Mb2NhbGVTdHJpbmcoJ2ZyLUZSJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uSW5wdXRFdmVudCgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50LnNsaWNlKHBvc2l0aW9uU3RhcnQpWzBdID09ICcsJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID0gcG9zaXRpb25TdGFydFBvaW50ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID0gcG9zaXRpb25TdGFydFBvaW50ICsgMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgIT0gdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgbmV4dCA9IFtjdXJyZW50LnNsaWNlKDAsIHBvc2l0aW9uU3RhcnQpLCBjdXJyZW50LnNsaWNlKHBvc2l0aW9uRW5kKV0uam9pbignJykucmVwbGFjZSgvXFxzL2csICcnKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0ID0gW2N1cnJlbnQuc2xpY2UoMCwgcG9zaXRpb25TdGFydCAtIDEpLCBjdXJyZW50LnNsaWNlKHBvc2l0aW9uRW5kKV0uam9pbignJykucmVwbGFjZSgvXFxzL2csICcnKTtcclxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jaGVja1ZhbHVlKG5leHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV4dCA9IFtjdXJyZW50LnNsaWNlKDAsIHBvc2l0aW9uU3RhcnQpLCBldmVudC5rZXksIGN1cnJlbnQuc2xpY2UocG9zaXRpb25TdGFydCldLmpvaW4oJycpLnJlcGxhY2UoL1xccy9nLCAnJyk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrVmFsdWUobmV4dCk7XG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnLCcgJiYgY3VycmVudC5zbGljZShwb3NpdGlvblN0YXJ0KVswXSA9PSAnLCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCArPSAxO1xyXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGVja1ZhbHVlKG5leHQ6IHN0cmluZykge1xuICAgICAgICBpZiAoIVN0cmluZyhuZXh0KS5tYXRjaCh0aGlzLnJlZ2V4KSkge1xuICAgICAgICAgICAgaWYgKG5leHQgIT0gJycpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgbnVtYmVyOiBudW1iZXIgPSArKG5leHQucmVwbGFjZSgnLCcsICcuJykpO1xuICAgICAgICAgICAgaWYgKHRoaXMubWluICE9IG51bGwgJiYgbnVtYmVyIDwgdGhpcy5taW4pIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1heCAhPSBudWxsICYmIG51bWJlciA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdpbnB1dCcsIFsnJGV2ZW50J10pXG4gICAgb25JbnB1dEV2ZW50KCkge1xyXG4gICAgICAgIGxldCBwb3NpdGlvblN0YXJ0ID0gdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgICAgaWYgKHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnZhbHVlLnJlcGxhY2UoL1xccy9nLCAnJykgPT0gJycgfHwgdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQudmFsdWUucmVwbGFjZSgvXFxzL2csICcnKSA9PSAnLScpIHtcclxuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZSgrKHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnZhbHVlLnJlcGxhY2UoJywnLCAnLicpLnJlcGxhY2VBbGwoL1xccy9nLCAnJykpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbklucHV0LmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID0gcG9zaXRpb25TdGFydDtcclxuICAgICAgICAgICAgdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID0gcG9zaXRpb25TdGFydDtcclxuICAgICAgICB9KTtcclxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScsIFsnJGV2ZW50J10pXG4gICAgb25DaGFuZ2VFdmVudCgpIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgICB9XG5cbiAgICBvbkJsdXJFdmVudChldmVudCkge1xyXG4gICAgICAgIHRoaXMub25CbHVyLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgICB9XG5cbiAgICBvbkZvY3VzRXZlbnQoZXZlbnQpIHtcclxuICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgIH1cblxyXG4gICAgb25DaGFuZ2VFID0gKHJhdGluZzogbnVtYmVyKSA9PiB7IH07XHJcblxyXG4gICAgb25Ub3VjaGVkRSA9ICgpID0+IHsgfTtcblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZVN0ciA9ICcnO1xyXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvL2lmICh0aGlzLm1heERlY2ltYWxzICE9IG51bGwgJiYgdGhpcy5tYXhEZWNpbWFscyA+IC0xKSB7XG4gICAgICAgICAgICAvLyAgICBpZiAodGhpcy52YWx1ZS50b1N0cmluZygpLnNwbGl0KCcuJykubGVuZ3RoID09IDIgJiYgdGhpcy5tYXhEZWNpbWFscyA8PSB0aGlzLnZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoJy4nKVsxXS5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vICAgICAgICB0aGlzLnZhbHVlU3RyID0gdGhpcy52YWx1ZS50b0ZpeGVkKHRoaXMubWF4RGVjaW1hbHMpO1xuICAgICAgICAgICAgLy8gICAgICAgIHRoaXMudmFsdWVTdHIgPSB0aGlzLnZhbHVlU3RyO1xuICAgICAgICAgICAgLy8gICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vICAgICAgICB0aGlzLnZhbHVlU3RyID0gdGhpcy52YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAvLyAgICB9XG4gICAgICAgICAgICAvL30gZWxzZSB7XG4gICAgICAgICAgICAvLyAgICB0aGlzLnZhbHVlU3RyID0gdGhpcy52YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAvL31cclxuICAgICAgICAgICAgLy90aGlzLnZhbHVlU3RyID0gdGhpcy52YWx1ZVN0ci5yZXBsYWNlKCcuJywgJywnKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWF4RGVjaW1hbHMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZVN0ciA9IHRoaXMudmFsdWUudG9Mb2NhbGVTdHJpbmcoJ2ZyLUZSJywgeyBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IHRoaXMubWF4RGVjaW1hbHMgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlU3RyID0gdGhpcy52YWx1ZS50b0xvY2FsZVN0cmluZygnZnItRlInKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZUUgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkRSA9IGZuO1xyXG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctZnVsbFwiPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb24gcHJlZml4ZVwiXHJcbiAgICAgICAgICAqbmdJZj1cInByZWZpeGUgIT0gbnVsbFwiPlxyXG4gICAgICAgIHt7IHByZWZpeGUgfX1cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8aW5wdXQgI2NpbG9nSW5wdXROdW1iZXJcclxuICAgICAgICAgICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVN0clwiXHJcbiAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXNFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAoYmx1cik9XCJvbkJsdXJFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICBjbGFzcz1cInctZnVsbCB6LTFcIlxyXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInN1ZmZpeGUgIT0gbnVsbCAmJiBwcmVmaXhlICE9IG51bGwgPyAnYm9yZGVyLW5vcm91bmQnIDogcHJlZml4ZSAhPSBudWxsID8gJ2JvcmRlci1ub3JvdW5kLWxlZnQnIDogc3VmZml4ZSAhPSBudWxsID8gJ2JvcmRlci1ub3JvdW5kLXJpZ2h0JyA6IG51bGxcIiAvPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb24gc3VmZml4ZVwiXHJcbiAgICAgICAgICAqbmdJZj1cInN1ZmZpeGUgIT0gbnVsbFwiPlxyXG4gICAgICAgIHt7IHN1ZmZpeGUgfX1cclxuICAgIDwvc3Bhbj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lsb2ctaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NpbG9nLWxpYi9zcmMvbGliL3ZpZXdzL2NpbG9nLWlucHV0LW51bWJlci9jaWxvZy1pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2lsb2ctbGliL3NyYy9saWIvdmlld3MvY2lsb2ctaW5wdXQtbnVtYmVyL2NpbG9nLWlucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hJLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQWN6RSxNQUFNLE9BQU8seUJBQXlCO0lBdUJsQztRQVpVLFlBQU8sR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMzRCxhQUFRLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDNUQsWUFBTyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzNELFdBQU0sR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVwRSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBS2QsZ0JBQVcsR0FBa0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFdkUsQ0FBQztJQUVqQixRQUFRO1FBQ0osSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxtQ0FBbUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxRQUFRLHVDQUF1QyxJQUFJLENBQUMsV0FBVyxJQUFJLFFBQVEsSUFBSSxDQUFDLENBQUM7SUFDcEssQ0FBQztJQUdELGNBQWMsQ0FBQyxLQUFvQjtRQUUvQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUM1QyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksT0FBTyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLE9BQU8sR0FBVyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUVoRSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQztRQUN6RSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztRQUVyRSxJQUFJLElBQUksR0FBVyxPQUFPLENBQUM7UUFDM0IsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsRUFBRTtZQUNuQixJQUFJLGtCQUFrQixHQUFXLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO1lBQ3BGLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDakM7aUJBQU07Z0JBQ0gsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRTtvQkFDeEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxjQUFjLEdBQUcsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO29CQUM1RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7aUJBQzdFO2FBQ0o7U0FDSjthQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQUU7WUFDbEMsSUFBSSxhQUFhLElBQUksV0FBVyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLEVBQUU7Z0JBQzdGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsY0FBYyxHQUFHLGFBQWEsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLGFBQWEsR0FBRyxDQUFDLENBQUM7YUFDeEU7aUJBQU07Z0JBQ0gsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRTtvQkFDeEcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUNwRztxQkFBTTtvQkFDSCxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxhQUFhLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUN4RztnQkFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNoQztTQUNKO2FBQU07WUFDSCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFO2dCQUM3RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUM7YUFDM0Q7aUJBQU07Z0JBQ0gsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzVHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ2hDO1NBQ0o7UUFDRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFZLEVBQUUsS0FBSztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakMsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFO2dCQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ2pDO1NBQ0o7YUFBTTtZQUNILElBQUksTUFBTSxHQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9DLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3hDLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUNqQzthQUNKO1NBQ0o7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWEsRUFBRSxLQUFLO1FBQzVCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO1FBQ3pFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO1FBRXJFLElBQUksS0FBSyxJQUFJLEVBQUUsRUFBRTtZQUNiLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQzthQUMvSTtpQkFBTTtnQkFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDbEc7WUFDRCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQzthQUNwRDtTQUNKO2FBQU07WUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDbEQ7UUFFRCxJQUFJLGFBQWEsSUFBSSxXQUFXLEVBQUU7WUFFOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMxSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzNIO2FBQU07WUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7WUFDbkUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDO1NBQ3BFO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRTtZQUMzSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pCO2FBQU07WUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pHO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYTtRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1NBQ3RCO2FBQU07WUFDSCxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxFQUFFO2dCQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFFLHFCQUFxQixFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2FBQ25HO2lCQUFNO2dCQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdEQ7U0FDSjtJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSztRQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFLO1FBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxhQUFhLENBQUMsR0FBVyxJQUFJLENBQUM7SUFFOUIsY0FBYyxLQUFLLENBQUM7SUFFcEIsZ0JBQWdCLENBQUMsRUFBYztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBYztRQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDOztzSEFyS1EseUJBQXlCOzBHQUF6Qix5QkFBeUIsb1ZBUnZCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7WUFDeEQsS0FBSyxFQUFFLElBQUk7U0FDZDtLQUNKLGdKQ2JMLHl5QkFzQkE7MkZEUGEseUJBQXlCO2tCQVpyQyxTQUFTOytCQUNJLG9CQUFvQixhQUduQjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7MEVBTVEsR0FBRztzQkFBWCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBSXdCLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBWTdCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY2lsb2ctaW5wdXQtbnVtYmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2lsb2ctaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jaWxvZy1pbnB1dC1udW1iZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaWxvZ0lucHV0TnVtYmVyQ29tcG9uZW50KSxcclxuICAgICAgICAgICAgbXVsdGk6IHRydWVcclxuICAgICAgICB9XHJcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIENpbG9nSW5wdXROdW1iZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIHZhbHVlOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBtaW46IG51bWJlcjtcclxuICAgIEBJbnB1dCgpIG1heDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIG1heERlY2ltYWxzOiBudW1iZXI7XG4gICAgQElucHV0KCkgcHJlZml4ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN1ZmZpeGU6IHN0cmluZztcbiAgICBASW5wdXQoKSBpbnB1dFN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBPdXRwdXQoKSBvbklucHV0OiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICAgIEBPdXRwdXQoKSBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICBAT3V0cHV0KCkgb25Gb2N1czogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgdmFsdWVTdHI6IHN0cmluZyA9ICcnO1xuXG4gICAgQFZpZXdDaGlsZCgnY2lsb2dJbnB1dE51bWJlcicpIGNpbG9nSW5wdXROdW1iZXI6IEVsZW1lbnRSZWY7XG5cbiAgICBwcml2YXRlIHJlZ2V4OiBSZWdFeHA7XG4gICAgcHJpdmF0ZSBzcGVjaWFsS2V5czogQXJyYXk8c3RyaW5nPiA9IFsnVGFiJywgJ0VuZCcsICdIb21lJywgJ0Fycm93TGVmdCcsICdBcnJvd1JpZ2h0J107XG5cbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5yZWdleCA9IG5ldyBSZWdFeHAoYF4tP1xcXFxkezEsM30oPzpcXFxcZHszfSkqKFxcXFwuXFxcXGR7MCwke3RoaXMubWF4RGVjaW1hbHMgfHwgSW5maW5pdHl9fSk/JHxeLT9cXFxcZHsxLDN9KD86XFxcXGR7M30pKlxcXFwsXFxcXGR7MCwke3RoaXMubWF4RGVjaW1hbHMgfHwgSW5maW5pdHl9fSRgKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBvbktleURvd25FdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuXG4gICAgICAgIGlmICh0aGlzLnNwZWNpYWxLZXlzLmluZGV4T2YoZXZlbnQua2V5KSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5rZXkgPT0gJ0VudGVyJykge1xyXG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlSW5wdXQodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY3VycmVudDogc3RyaW5nID0gdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb25TdGFydCA9IHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICBjb25zdCBwb3NpdGlvbkVuZCA9IHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZDtcblxuICAgICAgICBsZXQgbmV4dDogc3RyaW5nID0gY3VycmVudDtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJy4nKSB7XG4gICAgICAgICAgICBsZXQgcG9zaXRpb25TdGFydFBvaW50OiBudW1iZXIgPSB0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgICAgIG5leHQgPSBbY3VycmVudC5zbGljZSgwLCBwb3NpdGlvblN0YXJ0KSwgJywnLCBjdXJyZW50LnNsaWNlKHBvc2l0aW9uRW5kKV0uam9pbignJykucmVwbGFjZSgvXFxzL2csICcnKTtcbiAgICAgICAgICAgIGlmIChTdHJpbmcobmV4dCkubWF0Y2godGhpcy5yZWdleCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWNjZXB0VmFsdWUobmV4dCwgZmFsc2UpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50LnNsaWNlKHBvc2l0aW9uU3RhcnQpWzBdID09ICcsJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID0gcG9zaXRpb25TdGFydFBvaW50ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID0gcG9zaXRpb25TdGFydFBvaW50ICsgMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0JhY2tzcGFjZScpIHtcbiAgICAgICAgICAgIGlmIChwb3NpdGlvblN0YXJ0ID09IHBvc2l0aW9uRW5kICYmIC9cXHMvZy50ZXN0KGN1cnJlbnQuc2xpY2UocG9zaXRpb25TdGFydCAtIDEsIHBvc2l0aW9uU3RhcnQpKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPSBwb3NpdGlvblN0YXJ0IC0gMTtcbiAgICAgICAgICAgICAgICB0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPSBwb3NpdGlvblN0YXJ0IC0gMTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgIT0gdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQgPSBbY3VycmVudC5zbGljZSgwLCBwb3NpdGlvblN0YXJ0KSwgY3VycmVudC5zbGljZShwb3NpdGlvbkVuZCldLmpvaW4oJycpLnJlcGxhY2UoL1xccy9nLCAnJyk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXh0ID0gW2N1cnJlbnQuc2xpY2UoMCwgcG9zaXRpb25TdGFydCAtIDEpLCBjdXJyZW50LnNsaWNlKHBvc2l0aW9uRW5kKV0uam9pbignJykucmVwbGFjZSgvXFxzL2csICcnKTtcclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrVmFsdWUobmV4dCwgZXZlbnQpO1xyXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnLCcgJiYgY3VycmVudC5zbGljZShwb3NpdGlvblN0YXJ0KVswXSA9PSAnLCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCArPSAxO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5leHQgPSBbY3VycmVudC5zbGljZSgwLCBwb3NpdGlvblN0YXJ0KSwgZXZlbnQua2V5LCBjdXJyZW50LnNsaWNlKHBvc2l0aW9uRW5kKV0uam9pbignJykucmVwbGFjZSgvXFxzL2csICcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrVmFsdWUobmV4dCwgZXZlbnQpO1xyXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBjaGVja1ZhbHVlKG5leHQ6IHN0cmluZywgZXZlbnQpIHtcbiAgICAgICAgaWYgKCFTdHJpbmcobmV4dCkubWF0Y2godGhpcy5yZWdleCkpIHtcbiAgICAgICAgICAgIGlmIChuZXh0ID09ICcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY2NlcHRWYWx1ZShuZXh0LCBldmVudCk7XHJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBudW1iZXI6IG51bWJlciA9ICsobmV4dC5yZXBsYWNlKCcsJywgJy4nKSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1pbiA9PSBudWxsIHx8IG51bWJlciA+PSB0aGlzLm1pbikge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4ID09IG51bGwgfHwgbnVtYmVyIDw9IHRoaXMubWF4KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWNjZXB0VmFsdWUobmV4dCwgZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cblxuICAgIGFjY2VwdFZhbHVlKHZhbHVlOiBzdHJpbmcsIGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU3RhcnQgPSB0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgY29uc3QgcG9zaXRpb25FbmQgPSB0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQ7XG5cbiAgICAgICAgaWYgKHZhbHVlICE9ICcnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tYXhEZWNpbWFscyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC52YWx1ZSA9ICgrdmFsdWUucmVwbGFjZSgnLCcsICcuJykpLnRvTG9jYWxlU3RyaW5nKCdmci1GUicsIHsgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiB0aGlzLm1heERlY2ltYWxzIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAoK3ZhbHVlLnJlcGxhY2UoJywnLCAnLicpKS50b0xvY2FsZVN0cmluZygnZnItRlInKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFsdWUuc2xpY2UoLTEpID09ICcsJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQudmFsdWUgKz0gJywnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwb3NpdGlvblN0YXJ0ID09IHBvc2l0aW9uRW5kKSB7XG5cbiAgICAgICAgICAgIHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID0gZXZlbnQua2V5ICE9ICdCYWNrc3BhY2UnID8gKHBvc2l0aW9uU3RhcnQgKyAxKSA6IChwb3NpdGlvblN0YXJ0IC0gMSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9IGV2ZW50LmtleSAhPSAnQmFja3NwYWNlJyA/IChwb3NpdGlvblN0YXJ0ICsgMSkgOiAocG9zaXRpb25TdGFydCAtIDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9IHBvc2l0aW9uU3RhcnQ7XHJcbiAgICAgICAgICAgIHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9IHBvc2l0aW9uU3RhcnQ7XHJcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC52YWx1ZS5yZXBsYWNlKC9cXHMvZywgJycpID09ICcnIHx8IHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnZhbHVlLnJlcGxhY2UoL1xccy9nLCAnJykgPT0gJy0nKSB7XHJcbiAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUoKyh0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC52YWx1ZS5yZXBsYWNlKCcsJywgJy4nKS5yZXBsYWNlQWxsKC9cXHMvZywgJycpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25DaGFuZ2VJbnB1dCh0aGlzLnZhbHVlKTtcclxuICAgICAgICB0aGlzLm9uSW5wdXQuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZVN0ciA9ICcnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1heERlY2ltYWxzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVTdHIgPSB0aGlzLnZhbHVlLnRvTG9jYWxlU3RyaW5nKCdmci1GUicsIHsgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiB0aGlzLm1heERlY2ltYWxzIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZVN0ciA9IHRoaXMudmFsdWUudG9Mb2NhbGVTdHJpbmcoJ2ZyLUZSJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XG5cbiAgICBvbkJsdXJFdmVudChldmVudCkge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VJbnB1dCh0aGlzLnZhbHVlKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5vbkJsdXIuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgIH1cblxuICAgIG9uRm9jdXNFdmVudChldmVudCkge1xyXG4gICAgICAgIHRoaXMub25Gb2N1cy5lbWl0KHRoaXMudmFsdWUpO1xyXG4gICAgfVxuXHJcbiAgICBvbkNoYW5nZUlucHV0KHZhbDogbnVtYmVyKSB7IH1cclxuXHJcbiAgICBvblRvdWNoZWRJbnB1dCgpIHsgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlSW5wdXQgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkSW5wdXQgPSBmbjtcclxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LWZ1bGxcIj5cclxuXHJcbiAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uIHByZWZpeGVcIlxyXG4gICAgICAgICAgKm5nSWY9XCJwcmVmaXhlICE9IG51bGxcIj5cclxuICAgICAgICB7eyBwcmVmaXhlIH19XHJcbiAgICA8L3NwYW4+XHJcblxyXG4gICAgPGlucHV0ICNjaWxvZ0lucHV0TnVtYmVyXHJcbiAgICAgICAgICAgcElucHV0VGV4dFxyXG4gICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVTdHJcIlxyXG4gICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgKGJsdXIpPVwib25CbHVyRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgW2NsYXNzXT1cIid3LWZ1bGwgei0xJyArIChpbnB1dFN0eWxlQ2xhc3MgPT0gbnVsbCA/ICcnIDogJyAnICsgaW5wdXRTdHlsZUNsYXNzKVwiXHJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwic3VmZml4ZSAhPSBudWxsICYmIHByZWZpeGUgIT0gbnVsbCA/ICdib3JkZXItbm9yb3VuZCcgOiBwcmVmaXhlICE9IG51bGwgPyAnYm9yZGVyLW5vcm91bmQtbGVmdCcgOiBzdWZmaXhlICE9IG51bGwgPyAnYm9yZGVyLW5vcm91bmQtcmlnaHQnIDogbnVsbFwiIC8+XHJcblxyXG4gICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvbiBzdWZmaXhlXCJcclxuICAgICAgICAgICpuZ0lmPVwic3VmZml4ZSAhPSBudWxsXCI+XHJcbiAgICAgICAge3sgc3VmZml4ZSB9fVxyXG4gICAgPC9zcGFuPlxyXG5cclxuPC9kaXY+XHJcbiJdfQ==