@seniorsistemas/angular-components 16.10.4 → 16.10.6

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
1
  import { __decorate, __values } from "tslib";
2
- import { Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, OnInit, ViewChild } from "@angular/core";
2
+ import { Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, OnInit, ViewChild, forwardRef } from "@angular/core";
3
3
  import { FormControl, NG_VALUE_ACCESSOR } from "@angular/forms";
4
4
  import { TranslateService } from "@ngx-translate/core";
5
5
  import { Ordination } from "./models";
@@ -20,10 +20,10 @@ var CountryPhonePickerComponent = /** @class */ (function () {
20
20
  this.tabindex = 0;
21
21
  this._filterCountries = function (value) {
22
22
  if (!value) {
23
- _this.filteredCountriesList = _this.countriesList;
23
+ _this.filteredCountriesList = _this._countriesList;
24
24
  }
25
25
  else {
26
- _this.filteredCountriesList = _this.countriesList.filter(function (country) {
26
+ _this.filteredCountriesList = _this._countriesList.filter(function (country) {
27
27
  var countryName = _this.translate.instant("platform.angular_components.country_name_" + country.id);
28
28
  return countryName.toLowerCase().includes(value.toLowerCase());
29
29
  });
@@ -31,8 +31,31 @@ var CountryPhonePickerComponent = /** @class */ (function () {
31
31
  };
32
32
  }
33
33
  CountryPhonePickerComponent_1 = CountryPhonePickerComponent;
34
+ Object.defineProperty(CountryPhonePickerComponent.prototype, "value", {
35
+ get: function () {
36
+ return this._value;
37
+ },
38
+ set: function (value) {
39
+ this._value = value;
40
+ this.mask = this.getMask();
41
+ },
42
+ enumerable: true,
43
+ configurable: true
44
+ });
34
45
  CountryPhonePickerComponent.prototype.writeValue = function (value) {
35
46
  this.value = value;
47
+ if (value === null || value === void 0 ? void 0 : value.id) {
48
+ var country = this._countriesList.filter(function (_a) {
49
+ var id = _a.id;
50
+ return id == value.id;
51
+ });
52
+ if (country.length) {
53
+ this.onSelectItem(country[0]);
54
+ }
55
+ }
56
+ if (value === null || value === void 0 ? void 0 : value.rawValue) {
57
+ this.phone.setValue(value.rawValue);
58
+ }
36
59
  };
37
60
  CountryPhonePickerComponent.prototype.registerOnChange = function (onChange) {
38
61
  this._onChange = onChange;
@@ -53,28 +76,30 @@ var CountryPhonePickerComponent = /** @class */ (function () {
53
76
  var countries = this.countryPhonePickerService.getCountries(this.ordination);
54
77
  this.filter.valueChanges.subscribe(this._filterCountries);
55
78
  if ((_a = this.countries) === null || _a === void 0 ? void 0 : _a.length) {
56
- this.countriesList = countries.filter(function (country) { return _this.countries.includes(country.id); });
79
+ this._countriesList = countries.filter(function (country) { return _this.countries.includes(country.id); });
57
80
  }
58
81
  else {
59
- this.countriesList = countries;
82
+ this._countriesList = countries;
60
83
  }
61
- this.filteredCountriesList = this.countriesList;
84
+ this.filteredCountriesList = this._countriesList;
62
85
  this.selectedItem = this._getSelectedCountryDefault();
86
+ this.mask = this.getMask();
63
87
  this.phone.valueChanges.subscribe(function (value) {
64
- var _a;
65
88
  _this.value = {
66
89
  id: _this.selectedItem.id,
67
90
  ddi: _this.selectedItem.ddi,
68
91
  rawValue: value !== null && value !== void 0 ? value : "",
69
92
  value: value ? "" + _this._applyMask(value) : "",
70
93
  };
71
- (_a = _this._onChange) === null || _a === void 0 ? void 0 : _a.call(_this.value);
94
+ if (_this._onChange) {
95
+ _this._onChange(_this.value);
96
+ }
72
97
  });
73
98
  };
74
99
  CountryPhonePickerComponent.prototype.onKeydown = function (event) {
75
100
  if (event.key === "Enter" || event.key === " ") {
76
101
  if (this.open) {
77
- this.selectedItem = this.countriesList[this.currentItemIndex];
102
+ this.selectedItem = this._countriesList[this.currentItemIndex];
78
103
  this.selected.emit(this.selectedItem);
79
104
  }
80
105
  this.open = !this.open;
@@ -104,13 +129,13 @@ var CountryPhonePickerComponent = /** @class */ (function () {
104
129
  });
105
130
  CountryPhonePickerComponent.prototype.onBlur = function () {
106
131
  this.open = false;
107
- this.currentItemIndex = this.countriesList.indexOf(this.selectedItem);
132
+ this.currentItemIndex = this._countriesList.indexOf(this.selectedItem);
108
133
  };
109
134
  CountryPhonePickerComponent.prototype.onSelectItem = function (country) {
110
135
  this.open = false;
111
136
  this.selectedItem = country;
112
137
  this.phone.setValue("");
113
- this.currentItemIndex = this.countriesList.indexOf(this.selectedItem);
138
+ this.currentItemIndex = this._countriesList.indexOf(this.selectedItem);
114
139
  this.selected.emit(this.selectedItem);
115
140
  };
116
141
  CountryPhonePickerComponent.prototype.onCleanFilter = function () {
@@ -120,9 +145,10 @@ var CountryPhonePickerComponent = /** @class */ (function () {
120
145
  this.open = false;
121
146
  };
122
147
  CountryPhonePickerComponent.prototype.getMask = function () {
148
+ var _a;
123
149
  var mask = this.selectedItem.mask;
124
150
  if (Array.isArray(mask)) {
125
- return !this.value || this.value.value.length <= mask[0].length - 1
151
+ return !((_a = this.value) === null || _a === void 0 ? void 0 : _a.rawValue) || this.value.rawValue.length <= mask[0].replace(/[^0]/g, "").length
126
152
  ? mask[0] // fixo
127
153
  : mask[1]; // celular
128
154
  }
@@ -131,14 +157,14 @@ var CountryPhonePickerComponent = /** @class */ (function () {
131
157
  }
132
158
  };
133
159
  CountryPhonePickerComponent.prototype.getPlaceholder = function () {
134
- return this.getMask().replace(/9/g, "");
160
+ return this.mask.replace(/9/g, "");
135
161
  };
136
162
  CountryPhonePickerComponent.prototype._getSelectedCountryDefault = function () {
137
- if (!this.countriesList.length) {
163
+ if (!this._countriesList.length) {
138
164
  throw new Error("No country loaded");
139
165
  }
140
- var filteredByBr = this.countriesList.filter(function (country) { return country.id === "br"; });
141
- return filteredByBr.length ? filteredByBr[0] : this.countriesList[0];
166
+ var filteredByBr = this._countriesList.filter(function (country) { return country.id === "br"; });
167
+ return filteredByBr.length ? filteredByBr[0] : this._countriesList[0];
142
168
  };
143
169
  CountryPhonePickerComponent.prototype._moveToUp = function () {
144
170
  if (this.currentItemIndex == 0) {
@@ -153,7 +179,7 @@ var CountryPhonePickerComponent = /** @class */ (function () {
153
179
  }
154
180
  };
155
181
  CountryPhonePickerComponent.prototype._moveToDown = function () {
156
- if (this.currentItemIndex >= this.countriesList.length - 1) {
182
+ if (this.currentItemIndex >= this._countriesList.length - 1) {
157
183
  return;
158
184
  }
159
185
  this.currentItemIndex++;
@@ -174,7 +200,7 @@ var CountryPhonePickerComponent = /** @class */ (function () {
174
200
  : this.selectedItem.mask[1] + "\0";
175
201
  }
176
202
  else {
177
- mask = this.selectedItem.mask;
203
+ mask = this.selectedItem.mask + "\0";
178
204
  }
179
205
  var tokens = "";
180
206
  var replace = "";
@@ -238,10 +264,10 @@ var CountryPhonePickerComponent = /** @class */ (function () {
238
264
  CountryPhonePickerComponent = CountryPhonePickerComponent_1 = __decorate([
239
265
  Component({
240
266
  selector: "s-country-phone-picker",
241
- template: "<div class=\"country-phone-picker\">\n <div class=\"phone-input\">\n <div class=\"drop\" (click)=\"open = !open\">\n <span class=\"drop-flag\" [ngClass]=\"'fi fi-' + selectedItem.id\">\n </span>\n <span class=\"drop-icon fas fa-caret-down\"></span>\n </div>\n <p class=\"phone-ddi\">{{ selectedItem.ddi }}</p>\n <input\n #phoneInput\n type=\"tel\"\n autofocus\n [mask]=\"getMask()\" \n [placeholder]=\"getPlaceholder()\"\n [formControl]=\"phone\"\n (focus)=\"onPhoneInputFocus()\" />\n </div>\n <div *ngIf=\"open\" class=\"dropdown\">\n <div class=\"search\">\n <input\n class=\"search-field\"\n type=\"text\"\n [formControl]=\"filter\">\n <span class=\"search-icon fas fa-search\"></span>\n <span\n class=\"search-clear fa fa-times\"\n (click)=\"onCleanFilter()\"></span>\n </div>\n <ul class=\"select-list\">\n <li\n *ngFor=\"let country of filteredCountriesList; let i = index;\"\n class=\"select-option\"\n [ngClass]=\"{ 'select-option--focused': i == currentItemIndex }\"\n (click)=\"onSelectItem(country)\">\n <span\n class=\"select-option__flag\"\n [ngClass]=\"'fi fi-' + country.id\">\n </span>\n <span class=\"select-option__name\">\n {{ \"platform.angular_components.country_name_\" + country.id | translate }}\n </span>\n <span class=\"select-option__ddi\">\n {{ country.ddi }}\n </span>\n </li>\n </ul>\n </div>\n</div>",
267
+ template: "<div class=\"country-phone-picker\">\n <div class=\"phone-input\">\n <div class=\"drop\" (click)=\"open = !open\">\n <span class=\"drop-flag\" [ngClass]=\"'fi fi-' + selectedItem.id\">\n </span>\n <span class=\"drop-icon fas fa-caret-down\"></span>\n </div>\n <p class=\"phone-ddi\">{{ selectedItem.ddi }}</p>\n <input\n #phoneInput\n type=\"tel\"\n autofocus\n [mask]=\"mask\" \n [placeholder]=\"getPlaceholder()\"\n [formControl]=\"phone\"\n (focus)=\"onPhoneInputFocus()\" />\n </div>\n <div *ngIf=\"open\" class=\"dropdown\">\n <div class=\"search\">\n <input\n class=\"search-field\"\n type=\"text\"\n [formControl]=\"filter\">\n <span class=\"search-icon fas fa-search\"></span>\n <span\n class=\"search-clear fa fa-times\"\n (click)=\"onCleanFilter()\"></span>\n </div>\n <ul class=\"select-list\">\n <li\n *ngFor=\"let country of filteredCountriesList; let i = index;\"\n class=\"select-option\"\n [ngClass]=\"{ 'select-option--focused': i == currentItemIndex }\"\n (click)=\"onSelectItem(country)\">\n <span\n class=\"select-option__flag\"\n [ngClass]=\"'fi fi-' + country.id\">\n </span>\n <span class=\"select-option__name\">\n {{ \"platform.angular_components.country_name_\" + country.id | translate }}\n </span>\n <span class=\"select-option__ddi\">\n {{ country.ddi }}\n </span>\n </li>\n </ul>\n </div>\n</div>",
242
268
  providers: [{
243
269
  provide: NG_VALUE_ACCESSOR,
244
- useExisting: CountryPhonePickerComponent_1,
270
+ useExisting: forwardRef(function () { return CountryPhonePickerComponent_1; }),
245
271
  multi: true,
246
272
  }],
247
273
  styles: [".country-phone-picker .phone-input{background-color:#fff;border:1px solid #d8d8d8;border-radius:4px;display:-ms-flexbox;display:flex;line-height:normal}.country-phone-picker .phone-input .drop{-ms-flex-align:center;align-items:center;cursor:pointer;display:-ms-flexbox;display:flex}.country-phone-picker .phone-input .drop .drop-flag{margin-left:12px}.country-phone-picker .phone-input .drop .drop-icon{font-size:12px;margin:0 8px}.country-phone-picker .phone-input .phone-ddi{margin:8px 0}.country-phone-picker .phone-input input{border:none;-ms-flex-positive:1;flex-grow:1;font-family:\"Open Sans\",sans-serif;font-size:14px;font-weight:400;line-height:150%;margin-left:8px}.country-phone-picker .phone-input input:focus{color:#697882;outline:0}.country-phone-picker .dropdown{background-color:#fff;border-radius:4px;box-shadow:0 4px 5px #00000033;padding:4px 0;position:absolute;margin:2px 0;z-index:999999}.country-phone-picker .dropdown .search{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;padding:8px 12px}.country-phone-picker .dropdown .search .search-field{border:1px solid #d8d8d8;border-radius:4px;-ms-flex-positive:1;flex-grow:1;font-family:\"Open Sans\",sans-serif;font-size:14px;font-weight:400;height:36px;line-height:150%;padding:0 32px 0 8px}.country-phone-picker .dropdown .search .search-icon{color:#333;font-size:12px;position:relative;right:24px}.country-phone-picker .dropdown .search .search-clear{color:#333;cursor:pointer;font-size:1rem}.country-phone-picker .dropdown .select-list{list-style:none;max-height:234px;min-width:360px;max-width:100vw;overflow:scroll;padding:0}.country-phone-picker .dropdown .select-list .select-option{cursor:pointer;display:-ms-flexbox;display:flex;padding:12px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.country-phone-picker .dropdown .select-list .select-option .select-option__flag{margin-right:12px}.country-phone-picker .dropdown .select-list .select-option .select-option__name{margin-right:.5rem;max-width:100%;overflow:hidden;text-overflow:ellipsis}.country-phone-picker .dropdown .select-list .select-option .select-option__ddi{color:#697882;font-size:14px;font-family:\"Open Sans\",sans-serif;font-weight:400;line-height:150%}.country-phone-picker .dropdown .select-list .select-option--focused,.country-phone-picker .dropdown .select-list .select-option:hover{background-color:#e5eaea}"]
@@ -250,4 +276,4 @@ var CountryPhonePickerComponent = /** @class */ (function () {
250
276
  return CountryPhonePickerComponent;
251
277
  }());
252
278
  export { CountryPhonePickerComponent };
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUFFLFdBQVcsRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd2RCxPQUFPLEVBQW9CLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQVkzRTtJQWVHLHFDQUNvQix5QkFBb0QsRUFDcEQsU0FBMkIsRUFDM0IsSUFBZ0I7UUFIcEMsaUJBSUs7UUFIZSw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFaN0IscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBR3JCLFVBQUssR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QixXQUFNLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFNUIsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLGNBQVMsR0FBRyxDQUFDLENBQUM7UUF3QmYsZUFBVSxHQUFlLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFHdkMsYUFBUSxHQUFtQyxJQUFJLFlB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QVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dFQWVuQztJQS9GUywyQkFBMkI7UUFWdkMsU0FBUyxDQUFDO1lBQ1IsUUFBUSxFQUFFLHdCQUF3QjtZQUNsQywwc0RBQW9EO1lBRXBELFNBQVMsRUFBRSxDQUFDO29CQUNULE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFdBQVcsRUFBRSw2QkFBMkI7b0JBQ3hDLEtBQUssRUFBRSxJQUFJO2lCQUNiLENBQUM7O1NBQ0osQ0FBQztPQUNXLDJCQUEyQixDQTJPdkM7SUFBRCxrQ0FBQztDQUFBLEFBM09ELElBMk9DO1NBM09ZLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuXG5pbXBvcnQgeyBQaG9uZVNlbGVjdGlvbkRhdGEgfSBmcm9tIFwiLi9tb2RlbHMvcGhvbmUtc2VsZWN0aW9uLWRhdGFcIjtcbmltcG9ydCB7IENvdW50cnlQaG9uZURhdGEsIE9yZGluYXRpb24gfSBmcm9tIFwiLi9tb2RlbHNcIjtcbmltcG9ydCB7IENvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UgfSBmcm9tIFwiLi9jb3VudHJ5LXBob25lLXBpY2tlci5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICAgc2VsZWN0b3I6IFwicy1jb3VudHJ5LXBob25lLXBpY2tlclwiLFxuICAgdGVtcGxhdGVVcmw6IFwiLi9jb3VudHJ5LXBob25lLXBpY2tlci5jb21wb25lbnQuaHRtbFwiLFxuICAgc3R5bGVVcmxzOiBbXCIuL2NvdW50cnktcGhvbmUtcGlja2VyLmNvbXBvbmVudC5zY3NzXCJdLFxuICAgcHJvdmlkZXJzOiBbe1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICB9XSxcbn0pXG5leHBvcnQgY2xhc3MgQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICBwdWJsaWMgdmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YTtcbiAgIHByaXZhdGUgX29uQ2hhbmdlOiAodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSkgPT4ge307XG4gICBwcml2YXRlIF9vblRvdWNoZWQ6ICgpID0+IHt9O1xuXG4gICBwdWJsaWMgc2VsZWN0ZWRJdGVtOiBDb3VudHJ5UGhvbmVEYXRhO1xuICAgcHVibGljIGN1cnJlbnRJdGVtSW5kZXggPSAwO1xuICAgcHVibGljIGNvdW50cmllc0xpc3Q6IENvdW50cnlQaG9uZURhdGFbXTtcbiAgIHB1YmxpYyBmaWx0ZXJlZENvdW50cmllc0xpc3Q6IENvdW50cnlQaG9uZURhdGFbXTtcbiAgIHB1YmxpYyBwaG9uZSA9IG5ldyBGb3JtQ29udHJvbChcIlwiKTtcbiAgIHB1YmxpYyBmaWx0ZXIgPSBuZXcgRm9ybUNvbnRyb2woXCJcIik7XG5cbiAgIHByaXZhdGUgX29wZW4gPSBmYWxzZTtcbiAgIHByaXZhdGUgb2Zmc2V0VG9wID0gMDtcblxuICAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGNvdW50cnlQaG9uZVBpY2tlclNlcnZpY2U6IENvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UsXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgZVJlZjogRWxlbWVudFJlZixcbiAgICkgeyB9XG5cbiAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpOiB2b2lkIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgIH1cblxuICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB7fSk6IHZvaWQge1xuICAgICAgdGhpcy5fb25DaGFuZ2UgPSBvbkNoYW5nZTtcbiAgIH1cblxuICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogKCkgPT4ge30pOiB2b2lkIHtcbiAgICAgIHRoaXMuX29uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgIH1cblxuICAgQElucHV0KClcbiAgIHB1YmxpYyBjb3VudHJpZXM6IHN0cmluZ1tdO1xuXG4gICBASW5wdXQoKVxuICAgcHVibGljIG9yZGluYXRpb246IE9yZGluYXRpb24gPSBPcmRpbmF0aW9uLk5PO1xuXG4gICBAT3V0cHV0KClcbiAgIHB1YmxpYyBzZWxlY3RlZDogRXZlbnRFbWl0dGVyPENvdW50cnlQaG9uZURhdGE+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICBAVmlld0NoaWxkKFwicGhvbmVJbnB1dFwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgcHVibGljIHBob25lSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDpjbGlja1wiLCBbXCIkZXZlbnRcIl0pXG4gICBwdWJsaWMgb25DbGlja291dChldmVudDogTW91c2VFdmVudCkge1xuICAgICAgaWYgKCF0aGlzLmVSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgIH1cbiAgICAgIH1cbiAgIH1cblxuICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgY29uc3QgY291bnRyaWVzID0gdGhpcy5jb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlLmdldENvdW50cmllcyh0aGlzLm9yZGluYXRpb24pO1xuICAgICAgdGhpcy5maWx0ZXIudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh0aGlzLl9maWx0ZXJDb3VudHJpZXMpO1xuXG4gICAgICBpZiAodGhpcy5jb3VudHJpZXM/Lmxlbmd0aCkge1xuICAgICAgICAgdGhpcy5jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzLmZpbHRlcigoY291bnRyeSkgPT4gdGhpcy5jb3VudHJpZXMuaW5jbHVkZXMoY291bnRyeS5pZCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgIHRoaXMuY291bnRyaWVzTGlzdCA9IGNvdW50cmllcztcbiAgICAgIH1cbiAgICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXNMaXN0ID0gdGhpcy5jb3VudHJpZXNMaXN0O1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLl9nZXRTZWxlY3RlZENvdW50cnlEZWZhdWx0KCk7XG5cbiAgICAgIHRoaXMucGhvbmUudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgIHRoaXMudmFsdWUgPSB7XG4gICAgICAgICAgICBpZDogdGhpcy5zZWxlY3RlZEl0ZW0uaWQsXG4gICAgICAgICAgICBkZGk6IHRoaXMuc2VsZWN0ZWRJdGVtLmRkaSxcbiAgICAgICAgICAgIHJhd1ZhbHVlOiB2YWx1ZSA/PyBcIlwiLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlID8gYCR7dGhpcy5fYXBwbHlNYXNrKHZhbHVlKX1gIDogXCJcIixcbiAgICAgICAgIH07XG4gICAgICAgICB0aGlzLl9vbkNoYW5nZT8uY2FsbCh0aGlzLnZhbHVlKTtcbiAgICAgIH0pO1xuICAgfVxuXG4gICBASG9zdEJpbmRpbmcoXCJhdHRyLnRhYmluZGV4XCIpXG4gICBwdWJsaWMgdGFiaW5kZXggPSAwO1xuXG4gICBASG9zdExpc3RlbmVyKFwia2V5ZG93blwiLCBbXCIkZXZlbnRcIl0pXG4gICBwdWJsaWMgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkVudGVyXCIgfHwgZXZlbnQua2V5ID09PSBcIiBcIikge1xuICAgICAgICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLmNvdW50cmllc0xpc3RbdGhpcy5jdXJyZW50SXRlbUluZGV4XTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbSk7XG4gICAgICAgICB9XG4gICAgICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09IFwiRXNjYXBlXCIpIHtcbiAgICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dEb3duXCIpIHtcbiAgICAgICAgIHRoaXMuX21vdmVUb0Rvd24oKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93VXBcIikge1xuICAgICAgICAgdGhpcy5fbW92ZVRvVXAoKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHVibGljIGdldCBvcGVuKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX29wZW47XG4gICB9XG5cbiAgIHB1YmxpYyBzZXQgb3BlbihvcGVuOiBib29sZWFuKSB7XG4gICAgICB0aGlzLl9vcGVuID0gb3BlbjtcblxuICAgICAgaWYgKCFvcGVuKSB7XG4gICAgICAgICB0aGlzLnBob25lSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgfVxuXG4gICBwdWJsaWMgb25CbHVyKCkge1xuICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLmN1cnJlbnRJdGVtSW5kZXggPSB0aGlzLmNvdW50cmllc0xpc3QuaW5kZXhPZih0aGlzLnNlbGVjdGVkSXRlbSk7XG4gICB9XG5cbiAgIHB1YmxpYyBvblNlbGVjdEl0ZW0oY291bnRyeTogQ291bnRyeVBob25lRGF0YSkge1xuICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGNvdW50cnk7XG4gICAgICB0aGlzLnBob25lLnNldFZhbHVlKFwiXCIpO1xuICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4ID0gdGhpcy5jb3VudHJpZXNMaXN0LmluZGV4T2YodGhpcy5zZWxlY3RlZEl0ZW0pO1xuICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgIH1cblxuICAgcHVibGljIG9uQ2xlYW5GaWx0ZXIoKSB7XG4gICAgICB0aGlzLmZpbHRlci5zZXRWYWx1ZShcIlwiKTtcbiAgIH1cblxuICAgcHVibGljIG9uUGhvbmVJbnB1dEZvY3VzKCkge1xuICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICB9XG5cbiAgIHB1YmxpYyBnZXRNYXNrKCkge1xuICAgICAgY29uc3QgbWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2s7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG1hc2spKSB7XG4gICAgICAgICByZXR1cm4gIXRoaXMudmFsdWUgfHwgdGhpcy52YWx1ZS52YWx1ZS5sZW5ndGggPD0gbWFza1swXS5sZW5ndGggLSAxXG4gICAgICAgICAgICA/IG1hc2tbMF0gLy8gZml4b1xuICAgICAgICAgICAgOiBtYXNrWzFdOyAvLyBjZWx1bGFyXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAgcmV0dXJuIG1hc2s7XG4gICAgICB9XG4gICB9XG5cbiAgIHB1YmxpYyBnZXRQbGFjZWhvbGRlcigpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldE1hc2soKS5yZXBsYWNlKC85L2csIFwiXCIpO1xuICAgfVxuXG4gICBwcml2YXRlIF9nZXRTZWxlY3RlZENvdW50cnlEZWZhdWx0KCkge1xuICAgICAgaWYgKCF0aGlzLmNvdW50cmllc0xpc3QubGVuZ3RoKSB7XG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb3VudHJ5IGxvYWRlZFwiKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsdGVyZWRCeUJyID0gdGhpcy5jb3VudHJpZXNMaXN0LmZpbHRlcigoY291bnRyeTogQ291bnRyeVBob25lRGF0YSkgPT4gY291bnRyeS5pZCA9PT0gXCJiclwiKTtcblxuICAgICAgcmV0dXJuIGZpbHRlcmVkQnlCci5sZW5ndGggPyBmaWx0ZXJlZEJ5QnJbMF0gOiB0aGlzLmNvdW50cmllc0xpc3RbMF1cbiAgIH1cblxuICAgcHJpdmF0ZSBfZmlsdGVyQ291bnRyaWVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXNMaXN0ID0gdGhpcy5jb3VudHJpZXNMaXN0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXNMaXN0ID0gdGhpcy5jb3VudHJpZXNMaXN0LmZpbHRlcigoY291bnRyeSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY291bnRyeU5hbWUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGBwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuY291bnRyeV9uYW1lXyR7Y291bnRyeS5pZH1gKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICByZXR1cm4gY291bnRyeU5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWx1ZS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgIH0pO1xuICAgICAgfVxuICAgfVxuXG4gICBwcml2YXRlIF9tb3ZlVG9VcCgpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRJdGVtSW5kZXggPT0gMCkge1xuICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRJdGVtSW5kZXgtLTtcblxuICAgICAgY29uc3Qgc2VsZWN0TGlzdDogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5zZWxlY3QtbGlzdFwiKTtcbiAgICAgIGNvbnN0IGl0ZW0gPSBzZWxlY3RMaXN0LmNoaWxkcmVuW3RoaXMuY3VycmVudEl0ZW1JbmRleF07XG5cbiAgICAgIGlmIChpdGVtLm9mZnNldFRvcCAtIHNlbGVjdExpc3Qub2Zmc2V0VG9wIDw9IHRoaXMub2Zmc2V0VG9wKSB7XG4gICAgICAgICB0aGlzLm9mZnNldFRvcCAtPSA0NTtcbiAgICAgICAgIHNlbGVjdExpc3Quc2Nyb2xsVG8oMCwgdGhpcy5vZmZzZXRUb3ApO1xuICAgICAgfVxuICAgfVxuXG4gICBwcml2YXRlIF9tb3ZlVG9Eb3duKCkge1xuICAgICAgaWYgKHRoaXMuY3VycmVudEl0ZW1JbmRleCA+PSB0aGlzLmNvdW50cmllc0xpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRJdGVtSW5kZXgrKztcblxuICAgICAgY29uc3Qgc2VsZWN0TGlzdDogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5zZWxlY3QtbGlzdFwiKTtcbiAgICAgIGNvbnN0IGl0ZW0gPSBzZWxlY3RMaXN0LmNoaWxkcmVuW3RoaXMuY3VycmVudEl0ZW1JbmRleF07XG5cbiAgICAgIGlmIChpdGVtLm9mZnNldFRvcCAtIHNlbGVjdExpc3Qub2Zmc2V0VG9wID4gdGhpcy5vZmZzZXRUb3AgKyAxODApIHtcbiAgICAgICAgIHRoaXMub2Zmc2V0VG9wICs9IDQ1O1xuICAgICAgICAgc2VsZWN0TGlzdC5zY3JvbGxUbygwLCB0aGlzLm9mZnNldFRvcCk7XG4gICAgICB9XG4gICB9XG5cbiAgIHByaXZhdGUgX2FwcGx5TWFzayh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICBsZXQgbWFzaztcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZEl0ZW0ubWFzaykpIHtcbiAgICAgICAgIGNvbnN0IHJhd01hc2sgPSB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrWzBdLnJlcGxhY2UoL1teMF0vZywgXCJcIik7XG4gICAgICAgICBtYXNrID0gdmFsdWUubGVuZ3RoIDw9IHJhd01hc2subGVuZ3RoXG4gICAgICAgICAgICA/IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2tbMF0gKyBcIlxcMFwiXG4gICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2tbMV0gKyBcIlxcMFwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgIG1hc2sgPSB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrO1xuICAgICAgfVxuXG4gICAgICBsZXQgdG9rZW5zID0gXCJcIjtcbiAgICAgIGxldCByZXBsYWNlID0gXCJcIjtcbiAgICAgIGxldCBhY3VtdWxhZG9yID0gMDtcbiAgICAgIGxldCBjb250YWRvciA9IDA7XG5cbiAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgbWFzaykge1xuICAgICAgICAgaWYgKGlzTmFOKHBhcnNlSW50KHRva2VuKSkpIHtcbiAgICAgICAgICAgIGlmIChhY3VtdWxhZG9yKSB7XG4gICAgICAgICAgICAgICB0b2tlbnMgKz0gYChcXFxcZHske2FjdW11bGFkb3J9fSlgO1xuICAgICAgICAgICAgICAgcmVwbGFjZSArPSBgJCR7Kytjb250YWRvcn1gO1xuICAgICAgICAgICAgICAgYWN1bXVsYWRvciA9IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gXCJcXDBcIikge1xuICAgICAgICAgICAgICAgcmVwbGFjZSArPSB0b2tlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhY3VtdWxhZG9yKys7XG4gICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRva2VucyA9IGBeJHt0b2tlbnN9KmA7XG4gICAgICByZXR1cm4gdGhpcy5waG9uZS52YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAodG9rZW5zKSwgcmVwbGFjZSk7XG4gICB9XG59XG4iXX0=
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdJLE9BQU8sRUFBRSxXQUFXLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdkQsT0FBTyxFQUFvQixVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFZM0U7SUFlRyxxQ0FDb0IseUJBQW9ELEVBQ3BELFNBQTJCLEVBQzNCLElBQWdCO1FBSHBDLGlCQUlLO1FBSGUsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUNwRCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBZjdCLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUVyQixVQUFLLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsV0FBTSxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBTTVCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBNENmLGVBQVUsR0FBZSxVQUFVLENBQUMsRUFBRSxDQUFDO1FBR3ZDLGFBQVEsR0FBbUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQXlDOUQsYUFBUSxHQUFHLENBQUMsQ0FBQztRQThFWixxQkFBZ0IsR0FBRyxVQUFDLEtBQWE7WUFDdEMsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDVCxLQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSSxDQUFDLGNBQWMsQ0FBQzthQUNuRDtpQkFBTTtnQkFDSixLQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsVUFBQyxPQUFPO29CQUM3RCxJQUFNLFdBQVcsR0FBRyxLQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyw4Q0FBNEMsT0FBTyxDQUFDLEVBQUksQ0FBVyxDQUFDO29CQUMvRyxPQUFPLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBQ2xFLENBQUMsQ0FBQyxDQUFDO2FBQ0w7UUFDSixDQUFDLENBQUE7SUF6S0csQ0FBQztvQ0FuQkssMkJBQTJCO0lBcUJyQyxzQkFBVyw4Q0FBSzthQUFoQjtZQUNHLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN0QixDQUFDO2FBRUQsVUFBaUIsS0FBeUI7WUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUIsQ0FBQzs7O09BTEE7SUFPTSxnREFBVSxHQUFqQixVQUFrQixLQUF5QjtRQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixJQUFJLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxFQUFFLEVBQUU7WUFDWixJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxVQUFDLEVBQU07b0JBQUosVUFBRTtnQkFBTyxPQUFBLEVBQUUsSUFBSSxLQUFLLENBQUMsRUFBRTtZQUFkLENBQWMsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtnQkFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQztTQUNIO1FBRUQsSUFBSSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN0QztJQUNKLENBQUM7SUFFTSxzREFBZ0IsR0FBdkIsVUFBd0IsUUFBNkM7UUFDbEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDN0IsQ0FBQztJQUVNLHVEQUFpQixHQUF4QixVQUF5QixTQUE4QztRQUNwRSxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBZU0sZ0RBQVUsR0FBakIsVUFBa0IsS0FBaUI7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO2FBQ3BCO1NBQ0g7SUFDSixDQUFDO0lBRU0sOENBQVEsR0FBZjtRQUFBLGlCQXdCQzs7UUF2QkUsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTFELFVBQUksSUFBSSxDQUFDLFNBQVMsMENBQUUsTUFBTSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFDLE9BQU8sSUFBSyxPQUFBLEtBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBbkMsQ0FBbUMsQ0FBQyxDQUFDO1NBQzNGO2FBQU07WUFDSixJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDdEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQUMsS0FBSztZQUNyQyxLQUFJLENBQUMsS0FBSyxHQUFHO2dCQUNWLEVBQUUsRUFBRSxLQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQ3hCLEdBQUcsRUFBRSxLQUFJLENBQUMsWUFBWSxDQUFDLEdBQUc7Z0JBQzFCLFFBQVEsRUFBRSxLQUFLLGFBQUwsS0FBSyxjQUFMLEtBQUssR0FBSSxFQUFFO2dCQUNyQixLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7YUFDakQsQ0FBQztZQUNGLElBQUksS0FBSSxDQUFDLFNBQVMsRUFBRTtnQkFDakIsS0FBSSxDQUFDLFNBQVMsQ0FBQyxLQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0I7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFNTSwrQ0FBUyxHQUFoQixVQUFpQixLQUFvQjtRQUNsQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxFQUFFO1lBQzdDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDWixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQy9ELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUN4QztZQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ3pCO2FBQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUNoQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztTQUNwQjthQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3JCO2FBQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRTtZQUNqQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDbkI7SUFDSixDQUFDO0lBRUQsc0JBQVcsNkNBQUk7YUFBZjtZQUNHLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNyQixDQUFDO2FBRUQsVUFBZ0IsSUFBYTtZQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUVsQixJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3hDO1FBQ0osQ0FBQzs7O09BUkE7SUFVTSw0Q0FBTSxHQUFiO1FBQ0csSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU0sa0RBQVksR0FBbkIsVUFBb0IsT0FBeUI7UUFDMUMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLG1EQUFhLEdBQXBCO1FBQ0csSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVNLHVEQUFpQixHQUF4QjtRQUNHLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFTSw2Q0FBTyxHQUFkOztRQUNHLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1FBRXBDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QixPQUFPLFFBQUMsSUFBSSxDQUFDLEtBQUssMENBQUUsUUFBUSxDQUFBLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU07Z0JBQzlGLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTztnQkFDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVU7U0FDMUI7YUFBTTtZQUNKLE9BQU8sSUFBSSxDQUFDO1NBQ2Q7SUFDSixDQUFDO0lBRU0sb0RBQWMsR0FBckI7UUFDRyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sZ0VBQTBCLEdBQWxDO1FBQ0csSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUN2QztRQUVELElBQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFVBQUMsT0FBeUIsSUFBSyxPQUFBLE9BQU8sQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFuQixDQUFtQixDQUFDLENBQUM7UUFFcEcsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDeEUsQ0FBQztJQWFPLCtDQUFTLEdBQWpCO1FBQ0csSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxFQUFFO1lBQzdCLE9BQU87U0FDVDtRQUVELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXhCLElBQU0sVUFBVSxHQUFRLFFBQVEsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0QsSUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUV4RCxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzFELElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1lBQ3JCLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN6QztJQUNKLENBQUM7SUFFTyxpREFBVyxHQUFuQjtRQUNHLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMxRCxPQUFPO1NBQ1Q7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QixJQUFNLFVBQVUsR0FBUSxRQUFRLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9ELElBQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFeEQsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUU7WUFDL0QsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7WUFDckIsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0osQ0FBQztJQUVPLGdEQUFVLEdBQWxCLFVBQW1CLEtBQWE7O1FBQzdCLElBQUksSUFBSSxDQUFDO1FBRVQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEMsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMvRCxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTTtnQkFDbEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7Z0JBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDeEM7YUFBTTtZQUNKLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDdkM7UUFFRCxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7O1lBRWpCLEtBQW9CLElBQUEsU0FBQSxTQUFBLElBQUksQ0FBQSwwQkFBQSw0Q0FBRTtnQkFBckIsSUFBTSxLQUFLLGlCQUFBO2dCQUNiLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUN6QixJQUFJLFVBQVUsRUFBRTt3QkFDYixNQUFNLElBQUksVUFBUSxVQUFVLE9BQUksQ0FBQzt3QkFDakMsT0FBTyxJQUFJLE1BQUksRUFBRSxRQUFVLENBQUM7d0JBQzVCLFVBQVUsR0FBRyxDQUFDLENBQUM7cUJBQ2pCO29CQUVELElBQUksS0FBSyxLQUFLLElBQUksRUFBRTt3QkFDakIsT0FBTyxJQUFJLEtBQUssQ0FBQztxQkFDbkI7aUJBQ0g7cUJBQU07b0JBQ0osVUFBVSxFQUFFLENBQUM7aUJBQ2Y7YUFDSDs7Ozs7Ozs7O1FBRUQsTUFBTSxHQUFHLE1BQUksTUFBTSxNQUFHLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7O2dCQWpQOEMseUJBQXlCO2dCQUN6QyxnQkFBZ0I7Z0JBQ3JCLFVBQVU7O0lBb0NwQztRQURDLEtBQUssRUFBRTtrRUFDbUI7SUFHM0I7UUFEQyxLQUFLLEVBQUU7bUVBQ3NDO0lBRzlDO1FBREMsTUFBTSxFQUFFO2lFQUM0RDtJQUdyRTtRQURDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7bUVBQ1o7SUFHOUI7UUFEQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztpRUFPMUM7SUE2QkQ7UUFEQyxXQUFXLENBQUMsZUFBZSxDQUFDO2lFQUNUO0lBR3BCO1FBREMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dFQWVuQztJQXRIUywyQkFBMkI7UUFWdkMsU0FBUyxDQUFDO1lBQ1IsUUFBUSxFQUFFLHdCQUF3QjtZQUNsQyxxc0RBQW9EO1lBRXBELFNBQVMsRUFBRSxDQUFDO29CQUNULE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLDZCQUEyQixFQUEzQixDQUEyQixDQUFDO29CQUMxRCxLQUFLLEVBQUUsSUFBSTtpQkFDYixDQUFDOztTQUNKLENBQUM7T0FDVywyQkFBMkIsQ0FrUXZDO0lBQUQsa0NBQUM7Q0FBQSxBQWxRRCxJQWtRQztTQWxRWSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgT25Jbml0LCBWaWV3Q2hpbGQsIGZvcndhcmRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcblxuaW1wb3J0IHsgUGhvbmVTZWxlY3Rpb25EYXRhIH0gZnJvbSBcIi4vbW9kZWxzL3Bob25lLXNlbGVjdGlvbi1kYXRhXCI7XG5pbXBvcnQgeyBDb3VudHJ5UGhvbmVEYXRhLCBPcmRpbmF0aW9uIH0gZnJvbSBcIi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBDb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlIH0gZnJvbSBcIi4vY291bnRyeS1waG9uZS1waWNrZXIuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgIHNlbGVjdG9yOiBcInMtY291bnRyeS1waG9uZS1waWNrZXJcIixcbiAgIHRlbXBsYXRlVXJsOiBcIi4vY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgIHN0eWxlVXJsczogW1wiLi9jb3VudHJ5LXBob25lLXBpY2tlci5jb21wb25lbnQuc2Nzc1wiXSxcbiAgIHByb3ZpZGVyczogW3tcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgfV0sXG59KVxuZXhwb3J0IGNsYXNzIENvdW50cnlQaG9uZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgcHVibGljIG1hc2s6IHN0cmluZztcbiAgIHB1YmxpYyBzZWxlY3RlZEl0ZW06IENvdW50cnlQaG9uZURhdGE7XG4gICBwdWJsaWMgY3VycmVudEl0ZW1JbmRleCA9IDA7XG4gICBwdWJsaWMgZmlsdGVyZWRDb3VudHJpZXNMaXN0OiBDb3VudHJ5UGhvbmVEYXRhW107XG4gICBwdWJsaWMgcGhvbmUgPSBuZXcgRm9ybUNvbnRyb2woXCJcIik7XG4gICBwdWJsaWMgZmlsdGVyID0gbmV3IEZvcm1Db250cm9sKFwiXCIpO1xuXG4gICBwcml2YXRlIF92YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhOyAgIFxuICAgcHJpdmF0ZSBfb25DaGFuZ2U6ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkO1xuICAgcHJpdmF0ZSBfb25Ub3VjaGVkOiAodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSkgPT4gdm9pZDtcbiAgIHByaXZhdGUgX2NvdW50cmllc0xpc3Q6IENvdW50cnlQaG9uZURhdGFbXTtcbiAgIHByaXZhdGUgX29wZW4gPSBmYWxzZTtcbiAgIHByaXZhdGUgb2Zmc2V0VG9wID0gMDtcblxuICAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGNvdW50cnlQaG9uZVBpY2tlclNlcnZpY2U6IENvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UsXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgZVJlZjogRWxlbWVudFJlZixcbiAgICkgeyB9XG5cbiAgIHB1YmxpYyBnZXQgdmFsdWUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICB9XG5cbiAgIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMubWFzayA9IHRoaXMuZ2V0TWFzaygpO1xuICAgfVxuXG4gICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKTogdm9pZCB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAgIGlmICh2YWx1ZT8uaWQpIHtcbiAgICAgICAgIGNvbnN0IGNvdW50cnkgPSB0aGlzLl9jb3VudHJpZXNMaXN0LmZpbHRlcigoeyBpZCB9KSA9PiBpZCA9PSB2YWx1ZS5pZCk7XG4gICAgICAgICBpZiAoY291bnRyeS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMub25TZWxlY3RJdGVtKGNvdW50cnlbMF0pO1xuICAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWU/LnJhd1ZhbHVlKSB7XG4gICAgICAgICB0aGlzLnBob25lLnNldFZhbHVlKHZhbHVlLnJhd1ZhbHVlKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICB0aGlzLl9vbkNoYW5nZSA9IG9uQ2hhbmdlO1xuICAgfVxuXG4gICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiAodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgdGhpcy5fb25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICAgfVxuXG4gICBASW5wdXQoKVxuICAgcHVibGljIGNvdW50cmllczogc3RyaW5nW107XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgb3JkaW5hdGlvbjogT3JkaW5hdGlvbiA9IE9yZGluYXRpb24uTk87XG5cbiAgIEBPdXRwdXQoKVxuICAgcHVibGljIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8Q291bnRyeVBob25lRGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgIEBWaWV3Q2hpbGQoXCJwaG9uZUlucHV0XCIsIHsgc3RhdGljOiB0cnVlIH0pXG4gICBwdWJsaWMgcGhvbmVJbnB1dDogRWxlbWVudFJlZjtcblxuICAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50OmNsaWNrXCIsIFtcIiRldmVudFwiXSlcbiAgIHB1YmxpYyBvbkNsaWNrb3V0KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICBpZiAoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICAgfVxuICAgICAgfVxuICAgfVxuXG4gICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7ICAgICAgXG4gICAgICBjb25zdCBjb3VudHJpZXMgPSB0aGlzLmNvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UuZ2V0Q291bnRyaWVzKHRoaXMub3JkaW5hdGlvbik7XG4gICAgICB0aGlzLmZpbHRlci52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHRoaXMuX2ZpbHRlckNvdW50cmllcyk7XG4gICAgICBcbiAgICAgIGlmICh0aGlzLmNvdW50cmllcz8ubGVuZ3RoKSB7XG4gICAgICAgICB0aGlzLl9jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzLmZpbHRlcigoY291bnRyeSkgPT4gdGhpcy5jb3VudHJpZXMuaW5jbHVkZXMoY291bnRyeS5pZCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgIHRoaXMuX2NvdW50cmllc0xpc3QgPSBjb3VudHJpZXM7XG4gICAgICB9XG4gICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuX2NvdW50cmllc0xpc3Q7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuX2dldFNlbGVjdGVkQ291bnRyeURlZmF1bHQoKTtcbiAgICAgIHRoaXMubWFzayA9IHRoaXMuZ2V0TWFzaygpO1xuXG4gICAgICB0aGlzLnBob25lLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICB0aGlzLnZhbHVlID0ge1xuICAgICAgICAgICAgaWQ6IHRoaXMuc2VsZWN0ZWRJdGVtLmlkLFxuICAgICAgICAgICAgZGRpOiB0aGlzLnNlbGVjdGVkSXRlbS5kZGksXG4gICAgICAgICAgICByYXdWYWx1ZTogdmFsdWUgPz8gXCJcIixcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSA/IGAke3RoaXMuX2FwcGx5TWFzayh2YWx1ZSl9YCA6IFwiXCIsXG4gICAgICAgICB9O1xuICAgICAgICAgaWYgKHRoaXMuX29uQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgIH1cbiAgICAgIH0pO1xuICAgfVxuXG4gICBASG9zdEJpbmRpbmcoXCJhdHRyLnRhYmluZGV4XCIpXG4gICBwdWJsaWMgdGFiaW5kZXggPSAwO1xuXG4gICBASG9zdExpc3RlbmVyKFwia2V5ZG93blwiLCBbXCIkZXZlbnRcIl0pXG4gICBwdWJsaWMgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkVudGVyXCIgfHwgZXZlbnQua2V5ID09PSBcIiBcIikge1xuICAgICAgICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLl9jb3VudHJpZXNMaXN0W3RoaXMuY3VycmVudEl0ZW1JbmRleF07XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW0pO1xuICAgICAgICAgfVxuICAgICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkVzY2FwZVwiKSB7XG4gICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93RG93blwiKSB7XG4gICAgICAgICB0aGlzLl9tb3ZlVG9Eb3duKCk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd1VwXCIpIHtcbiAgICAgICAgIHRoaXMuX21vdmVUb1VwKCk7XG4gICAgICB9XG4gICB9XG5cbiAgIHB1YmxpYyBnZXQgb3BlbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9vcGVuO1xuICAgfVxuXG4gICBwdWJsaWMgc2V0IG9wZW4ob3BlbjogYm9vbGVhbikge1xuICAgICAgdGhpcy5fb3BlbiA9IG9wZW47XG5cbiAgICAgIGlmICghb3Blbikge1xuICAgICAgICAgdGhpcy5waG9uZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHVibGljIG9uQmx1cigpIHtcbiAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4ID0gdGhpcy5fY291bnRyaWVzTGlzdC5pbmRleE9mKHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgIH1cblxuICAgcHVibGljIG9uU2VsZWN0SXRlbShjb3VudHJ5OiBDb3VudHJ5UGhvbmVEYXRhKSB7XG4gICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gY291bnRyeTtcbiAgICAgIHRoaXMucGhvbmUuc2V0VmFsdWUoXCJcIik7XG4gICAgICB0aGlzLmN1cnJlbnRJdGVtSW5kZXggPSB0aGlzLl9jb3VudHJpZXNMaXN0LmluZGV4T2YodGhpcy5zZWxlY3RlZEl0ZW0pO1xuICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgIH1cblxuICAgcHVibGljIG9uQ2xlYW5GaWx0ZXIoKSB7XG4gICAgICB0aGlzLmZpbHRlci5zZXRWYWx1ZShcIlwiKTtcbiAgIH1cblxuICAgcHVibGljIG9uUGhvbmVJbnB1dEZvY3VzKCkge1xuICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICB9XG5cbiAgIHB1YmxpYyBnZXRNYXNrKCkge1xuICAgICAgY29uc3QgbWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2s7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG1hc2spKSB7XG4gICAgICAgICByZXR1cm4gIXRoaXMudmFsdWU/LnJhd1ZhbHVlIHx8IHRoaXMudmFsdWUucmF3VmFsdWUubGVuZ3RoIDw9IG1hc2tbMF0ucmVwbGFjZSgvW14wXS9nLCBcIlwiKS5sZW5ndGhcbiAgICAgICAgICAgID8gbWFza1swXSAvLyBmaXhvXG4gICAgICAgICAgICA6IG1hc2tbMV07IC8vIGNlbHVsYXJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICByZXR1cm4gbWFzaztcbiAgICAgIH1cbiAgIH1cblxuICAgcHVibGljIGdldFBsYWNlaG9sZGVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMubWFzay5yZXBsYWNlKC85L2csIFwiXCIpO1xuICAgfVxuXG4gICBwcml2YXRlIF9nZXRTZWxlY3RlZENvdW50cnlEZWZhdWx0KCkge1xuICAgICAgaWYgKCF0aGlzLl9jb3VudHJpZXNMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gY291bnRyeSBsb2FkZWRcIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbHRlcmVkQnlCciA9IHRoaXMuX2NvdW50cmllc0xpc3QuZmlsdGVyKChjb3VudHJ5OiBDb3VudHJ5UGhvbmVEYXRhKSA9PiBjb3VudHJ5LmlkID09PSBcImJyXCIpO1xuXG4gICAgICByZXR1cm4gZmlsdGVyZWRCeUJyLmxlbmd0aCA/IGZpbHRlcmVkQnlCclswXSA6IHRoaXMuX2NvdW50cmllc0xpc3RbMF1cbiAgIH1cblxuICAgcHJpdmF0ZSBfZmlsdGVyQ291bnRyaWVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXNMaXN0ID0gdGhpcy5fY291bnRyaWVzTGlzdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuX2NvdW50cmllc0xpc3QuZmlsdGVyKChjb3VudHJ5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb3VudHJ5TmFtZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYHBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jb3VudHJ5X25hbWVfJHtjb3VudHJ5LmlkfWApIGFzIHN0cmluZztcbiAgICAgICAgICAgIHJldHVybiBjb3VudHJ5TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgfSk7XG4gICAgICB9XG4gICB9XG5cbiAgIHByaXZhdGUgX21vdmVUb1VwKCkge1xuICAgICAgaWYgKHRoaXMuY3VycmVudEl0ZW1JbmRleCA9PSAwKSB7XG4gICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleC0tO1xuXG4gICAgICBjb25zdCBzZWxlY3RMaXN0OiBhbnkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLnNlbGVjdC1saXN0XCIpO1xuICAgICAgY29uc3QgaXRlbSA9IHNlbGVjdExpc3QuY2hpbGRyZW5bdGhpcy5jdXJyZW50SXRlbUluZGV4XTtcblxuICAgICAgaWYgKGl0ZW0ub2Zmc2V0VG9wIC0gc2VsZWN0TGlzdC5vZmZzZXRUb3AgPD0gdGhpcy5vZmZzZXRUb3ApIHtcbiAgICAgICAgIHRoaXMub2Zmc2V0VG9wIC09IDQ1O1xuICAgICAgICAgc2VsZWN0TGlzdC5zY3JvbGxUbygwLCB0aGlzLm9mZnNldFRvcCk7XG4gICAgICB9XG4gICB9XG5cbiAgIHByaXZhdGUgX21vdmVUb0Rvd24oKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50SXRlbUluZGV4ID49IHRoaXMuX2NvdW50cmllc0xpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRJdGVtSW5kZXgrKztcblxuICAgICAgY29uc3Qgc2VsZWN0TGlzdDogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5zZWxlY3QtbGlzdFwiKTtcbiAgICAgIGNvbnN0IGl0ZW0gPSBzZWxlY3RMaXN0LmNoaWxkcmVuW3RoaXMuY3VycmVudEl0ZW1JbmRleF07XG5cbiAgICAgIGlmIChpdGVtLm9mZnNldFRvcCAtIHNlbGVjdExpc3Qub2Zmc2V0VG9wID4gdGhpcy5vZmZzZXRUb3AgKyAxODApIHtcbiAgICAgICAgIHRoaXMub2Zmc2V0VG9wICs9IDQ1O1xuICAgICAgICAgc2VsZWN0TGlzdC5zY3JvbGxUbygwLCB0aGlzLm9mZnNldFRvcCk7XG4gICAgICB9XG4gICB9XG5cbiAgIHByaXZhdGUgX2FwcGx5TWFzayh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICBsZXQgbWFzaztcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZEl0ZW0ubWFzaykpIHtcbiAgICAgICAgIGNvbnN0IHJhd01hc2sgPSB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrWzBdLnJlcGxhY2UoL1teMF0vZywgXCJcIik7XG4gICAgICAgICBtYXNrID0gdmFsdWUubGVuZ3RoIDw9IHJhd01hc2subGVuZ3RoXG4gICAgICAgICAgICA/IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2tbMF0gKyBcIlxcMFwiXG4gICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2tbMV0gKyBcIlxcMFwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgIG1hc2sgPSB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrICsgXCJcXDBcIjtcbiAgICAgIH1cblxuICAgICAgbGV0IHRva2VucyA9IFwiXCI7XG4gICAgICBsZXQgcmVwbGFjZSA9IFwiXCI7XG4gICAgICBsZXQgYWN1bXVsYWRvciA9IDA7XG4gICAgICBsZXQgY29udGFkb3IgPSAwO1xuXG4gICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIG1hc2spIHtcbiAgICAgICAgIGlmIChpc05hTihwYXJzZUludCh0b2tlbikpKSB7XG4gICAgICAgICAgICBpZiAoYWN1bXVsYWRvcikge1xuICAgICAgICAgICAgICAgdG9rZW5zICs9IGAoXFxcXGR7JHthY3VtdWxhZG9yfX0pYDtcbiAgICAgICAgICAgICAgIHJlcGxhY2UgKz0gYCQkeysrY29udGFkb3J9YDtcbiAgICAgICAgICAgICAgIGFjdW11bGFkb3IgPSAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodG9rZW4gIT09IFwiXFwwXCIpIHtcbiAgICAgICAgICAgICAgIHJlcGxhY2UgKz0gdG9rZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWN1bXVsYWRvcisrO1xuICAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0b2tlbnMgPSBgXiR7dG9rZW5zfSpgO1xuICAgICAgcmV0dXJuIHRoaXMucGhvbmUudmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKHRva2VucyksIHJlcGxhY2UpO1xuICAgfVxufVxuIl19
@@ -173,11 +173,11 @@ var FileUploadComponent = /** @class */ (function () {
173
173
  .then(function (metadata) { return _this.setModifiedDate(metadata); });
174
174
  };
175
175
  FileUploadComponent.prototype.setModifiedDate = function (metadata) {
176
- var hour = moment(metadata.modified).hour();
177
- var minutes = moment(metadata.modified).minutes();
178
- var day = moment(metadata.modified).date();
179
- var month = moment(metadata.modified).month();
180
- var fullYear = moment(metadata.modified).year();
176
+ var hour = moment(metadata.modified).format("HH");
177
+ var minutes = moment(metadata.modified).format("mm");
178
+ var day = moment(metadata.modified).format("DD");
179
+ var month = moment(metadata.modified).format("MM");
180
+ var fullYear = moment(metadata.modified).format("YYYY");
181
181
  this.modifiedDate = this.translate.instant("platform.angular_components.date_modified_custom_blob", { hour: hour, minutes: minutes, day: day, month: month, fullYear: fullYear });
182
182
  };
183
183
  var FileUploadComponent_1;
@@ -278,4 +278,4 @@ var FileUploadComponent = /** @class */ (function () {
278
278
  return FileUploadComponent;
279
279
  }());
280
280
  export { FileUploadComponent };
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFPdkQ7SUFtREksNkJBQTZCLFNBQXVCLEVBQ3ZCLGlCQUFvQyxFQUNwQyxTQUEyQjtRQUYzQixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3ZCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUE1Q3hDLE9BQUUsR0FBRyxtQkFBaUIscUJBQW1CLENBQUMsTUFBTSxFQUFJLENBQUM7UUFDckQsZ0JBQVcsR0FBRyxpQkFBaUIsQ0FBQztRQUNoQyxnQkFBVyxHQUFHLFNBQVMsQ0FBQztRQUN4QixnQkFBVyxHQUFHLFVBQVUsQ0FBQztRQUN6QixtQkFBYyxHQUFHLDZCQUE2QixDQUFDO1FBRy9DLHdCQUFtQixHQUFhLEVBQUUsQ0FBQztRQUluQyxzQkFBaUIsR0FBRyxvQkFBb0IsQ0FBQztRQUt6QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQWFuQyxrQkFBYSxHQUF1QyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZFLGVBQVUsR0FBaUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5RCxpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hELGlCQUFZLEdBQXdELElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkYsbUJBQWMsR0FBOEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV4RSxXQUFNLEdBQWMsRUFBRSxDQUFDO1FBQ2QsaUJBQVksR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUV0RCxlQUFVLEdBQUcsRUFBRSxDQUFDO0lBS3FDLENBQUM7NEJBckRwRCxtQkFBbUI7SUEyQm5CLHNCQUFXLHNDQUFLO2FBdUh6QjtZQUNJLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN2QixDQUFDO2FBekhRLFVBQWlCLEtBQWdCO1lBQTFDLGlCQVVDOztZQVRHLElBQUcsSUFBSSxDQUFDLGtCQUFrQixXQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsMENBQUUsUUFBUSxDQUFBLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0I7WUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBQSxJQUFJO2dCQUN4QixJQUFJLEtBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUM1RjtnQkFDRCxPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7OztPQUFBO0lBa0JNLHNDQUFRLEdBQWY7UUFDSSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQjthQUNsRCxHQUFHLENBQUMsVUFBQSxTQUFTLElBQUksT0FBQSxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBeEMsQ0FBd0MsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTSx5Q0FBVyxHQUFsQjtRQUNJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sZ0RBQWtCLEdBQXpCO1FBQ0ksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFHTSxzQ0FBUSxHQUFmO1FBQ0ksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFTSwwQ0FBWSxHQUFuQixVQUFvQixLQUFnQjs7UUFDaEMsSUFBTSxRQUFRLEdBQWMsRUFBRSxDQUFDO1FBRS9CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ25CO1FBRUQsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEtBQUssT0FBQTtnQkFDTCxVQUFVLEVBQUUsY0FBYyxDQUFDLGNBQWM7YUFDNUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLE9BQU87U0FDVjs7WUFFRCxLQUFtQixJQUFBLFVBQUEsU0FBQSxLQUFLLENBQUEsNEJBQUEsK0NBQUU7Z0JBQXJCLElBQU0sSUFBSSxrQkFBQTtnQkFDWCxJQUFJLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7d0JBQ3JCLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQzt3QkFDYixVQUFVLEVBQUUsY0FBYyxDQUFDLHFCQUFxQjtxQkFDbkQsQ0FBQyxDQUFDO29CQUNILFNBQVM7aUJBQ1o7Z0JBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO3dCQUNyQixLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUM7d0JBQ2IsVUFBVSxFQUFFLGNBQWMsQ0FBQyxhQUFhO3FCQUMzQyxDQUFDLENBQUM7b0JBQ0gsU0FBUztpQkFDWjtnQkFFRCxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZCOzs7Ozs7Ozs7UUFFRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztnQkFDcEIsS0FBSyxFQUFFLFFBQVE7YUFDbEIsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLDBDQUFZLEdBQW5CLFVBQW9CLElBQWE7UUFDN0IsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXJELElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksTUFBQSxFQUFFLENBQUMsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFTSw0Q0FBYyxHQUFyQixVQUFzQixLQUFhO1FBQy9CLElBQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVqRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakM7UUFFRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLDJDQUFhLEdBQXBCLFVBQXFCLEtBQWE7UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDbkIsS0FBSyxPQUFBO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3RCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFNTyxvQ0FBTSxHQUFkO1FBQ0ksSUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDO0lBQzNELENBQUM7SUFFTyxxQ0FBTyxHQUFmLFVBQWdCLElBQVU7UUFDdEIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8saURBQW1CLEdBQTNCLFVBQTRCLEtBQWdCO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2pCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDN0QsQ0FBQztJQUVPLGdEQUFrQixHQUExQixVQUEyQixJQUFVO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ25CLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDeEMsQ0FBQztJQUVPLHdEQUEwQixHQUFsQyxVQUFtQyxJQUFVOztRQUN6QyxVQUFJLElBQUksQ0FBQyxtQkFBbUIsMENBQUUsTUFBTSxFQUFFO1lBQ2xDLElBQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzNELE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVPLDRDQUFjLEdBQXRCO1FBQ0ksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNoRCxDQUFDO0lBRU8sMkNBQWEsR0FBckIsVUFBc0IsUUFBbUI7UUFBekMsaUJBT0M7UUFORyxJQUFHLENBQUMsUUFBUSxFQUFFO1lBQ1YsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUM1RSxJQUFJLENBQUMsVUFBQSxRQUFRLElBQUksT0FBQSxLQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUE5QixDQUE4QixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVPLDZDQUFlLEdBQXZCLFVBQXdCLFFBQWtDO1FBQ3RELElBQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUMsSUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwRCxJQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdDLElBQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEQsSUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVsRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHVEQUF1RCxFQUFFLEVBQUUsSUFBSSxNQUFBLEVBQUUsT0FBTyxTQUFBLEVBQUUsR0FBRyxLQUFBLEVBQUUsS0FBSyxPQUFBLEVBQUUsUUFBUSxVQUFBLEVBQUUsQ0FBQyxDQUFDO0lBQ2pKLENBQUM7O0lBek1hLDBCQUFNLEdBQUcsQ0FBQyxDQUFDOztnQkFrRGUsWUFBWTtnQkFDSixpQkFBaUI7Z0JBQ3pCLGdCQUFnQjs7SUFqRHhEO1FBREMsU0FBUyxDQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQzs0REFDSDtJQUd6QztRQURDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7dURBQ0g7SUFFM0I7UUFBUixLQUFLLEVBQUU7bURBQTZEO0lBQzVEO1FBQVIsS0FBSyxFQUFFOzREQUF3QztJQUN2QztRQUFSLEtBQUssRUFBRTs0REFBZ0M7SUFDL0I7UUFBUixLQUFLLEVBQUU7NERBQWlDO0lBQ2hDO1FBQVIsS0FBSyxFQUFFOytEQUF1RDtJQUN0RDtRQUFSLEtBQUssRUFBRTt5REFBMEI7SUFDekI7UUFBUixLQUFLLEVBQUU7dURBQXVCO0lBQ3RCO1FBQVIsS0FBSyxFQUFFO29FQUEyQztJQUMxQztRQUFSLEtBQUssRUFBRTtrRUFBa0M7SUFDakM7UUFBUixLQUFLLEVBQUU7NERBQTRCO0lBQzNCO1FBQVIsS0FBSyxFQUFFOzBEQUEwQjtJQUN6QjtRQUFSLEtBQUssRUFBRTtrRUFBaUQ7SUFDaEQ7UUFBUixLQUFLLEVBQUU7aUVBQWlDO0lBQ2hDO1FBQVIsS0FBSyxFQUFFOytEQUErQjtJQUM5QjtRQUFSLEtBQUssRUFBRTtnRUFBZ0M7SUFDL0I7UUFBUixLQUFLLEVBQUU7MERBQStCO0lBQzlCO1FBQVIsS0FBSyxFQUFFO3lEQUF5QjtJQUN4QjtRQUFSLEtBQUssRUFBRTttRUFBNEM7SUFDM0M7UUFBUixLQUFLLEVBQUU7b0RBVVA7SUFFUztRQUFULE1BQU0sRUFBRTs4REFBK0U7SUFDOUU7UUFBVCxNQUFNLEVBQUU7MkRBQXNFO0lBQ3JFO1FBQVQsTUFBTSxFQUFFOzZEQUFnRTtJQUMvRDtRQUFULE1BQU0sRUFBRTs2REFBK0Y7SUFDOUY7UUFBVCxNQUFNLEVBQUU7K0RBQXVFO0lBMkJoRjtRQURDLFlBQVksQ0FBQyxlQUFlLENBQUM7dURBRzdCO0lBeEVRLG1CQUFtQjtRQUwvQixTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsZUFBZTtZQUN6QixzMktBQTJDOztTQUU5QyxDQUFDO09BQ1csbUJBQW1CLENBMk0vQjtJQUFELDBCQUFDO0NBQUEsQUEzTUQsSUEyTUM7U0EzTVksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuXG5pbXBvcnQgeyBGaWxlRHRvIH0gZnJvbSBcIi4vbW9kZWxzL2ZpbGUtZHRvXCI7XG5pbXBvcnQgeyBWYWxpZGF0ZUVycm9ycyB9IGZyb20gXCIuL21vZGVscy92YWxpZGF0ZS1lcnJvcnNcIjtcbmltcG9ydCB7IFVwbG9hZEVycm9yIH0gZnJvbSBcIi4vbW9kZWxzL3VwbG9hZEVycm9yXCI7XG5pbXBvcnQgeyBCcmVha3BvaW50cyB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgRmlsZVVwbG9hZFNlcnZpY2UgfSBmcm9tIFwiLi9maWxlLXVwbG9hZC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBMaXN0QmxvYk1ldGFkYXRhUmVzcG9uc2UgfSBmcm9tIFwiLi9tb2RlbHMvbGlzdC1ibG9iLW1ldGFkYXRhXCI7XG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMtZmlsZS11cGxvYWRcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICAgIHB1YmxpYyBzdGF0aWMgbmV4dElkID0gMDtcblxuICAgIEBWaWV3Q2hpbGQoXCJpbnB1dFVwbG9hZFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0VXBsb2FkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZChcImFuY2hvclwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFuY2hvcjogRWxlbWVudFJlZjtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBpZCA9IGBzLWZpbGUtdXBsb2FkLSR7RmlsZVVwbG9hZENvbXBvbmVudC5uZXh0SWQrK31gO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjaG9vc2VMYWJlbCA9IFwiQW5leGFyIGFycXVpdm9zXCI7XG4gICAgQElucHV0KCkgcHVibGljIHJlbW92ZUxhYmVsID0gXCJSZW1vdmVyXCI7XG4gICAgQElucHV0KCkgcHVibGljIGNhbmNlbExhYmVsID0gXCJDYW5jZWxhclwiO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzdWNjZXNzVG9vbHRpcCA9IFwiQXJxdWl2byBhbmV4YWRvIGNvbSBzdWNlc3NvXCI7XG4gICAgQElucHV0KCkgcHVibGljIG11bHRpcGxlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhY2NlcHQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgc3VwcG9ydGVkRXh0ZW5zaW9uczogc3RyaW5nW10gPSBbXTtcbiAgICBASW5wdXQoKSBwdWJsaWMgYXJpYUxhYmVsRmlsZU5hbWU6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgbWF4RmlsZVNpemU6IG51bWJlcjtcbiAgICBASW5wdXQoKSBwdWJsaWMgZmlsZUxpbWl0OiBudW1iZXI7XG4gICAgQElucHV0KCkgcHVibGljIGFyaWFMYWJlbFByb2dyZXNzID0gXCJDYXJyZWdhbmRvIGFycXVpdm9cIjtcbiAgICBASW5wdXQoKSBwdWJsaWMgYXJpYUxhYmVsU3VjY2Vzczogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhcmlhTGFiZWxFcnJvcjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhcmlhTGFiZWxSZW1vdmU6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtQ29udHJvbDtcbiAgICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd0ZpbGVVcGxvYWREYXRlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIHNldCBmaWxlcyhmaWxlczogRmlsZUR0b1tdKSB7XG4gICAgICAgIGlmKHRoaXMuc2hvd0ZpbGVVcGxvYWREYXRlICYmIGZpbGVzWzBdPy5vYmplY3RJZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRVcGxvYWREYXRlKGZpbGVzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9maWxlcyA9IGZpbGVzLm1hcChmaWxlID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzSW1hZ2UoZmlsZSkpIHtcbiAgICAgICAgICAgICAgICBmaWxlLm9iamVjdFVSTCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwod2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBwdWJsaWMgdXBsb2FkSGFuZGxlcjogRXZlbnRFbWl0dGVyPHsgZmlsZXM6IEZpbGVEdG9bXSB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIHJlbW92ZUZpbGU6IEV2ZW50RW1pdHRlcjx7IGZpbGU6IEZpbGUgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBjYW5jZWxVcGxvYWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgZG93bmxvYWRGaWxlOiBFdmVudEVtaXR0ZXI8eyBpbmRleDogbnVtYmVyOyBhbmNob3I6IEVsZW1lbnRSZWYgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyB2YWxpZGF0ZUVycm9yczogRXZlbnRFbWl0dGVyPFVwbG9hZEVycm9yPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHByaXZhdGUgX2ZpbGVzOiBGaWxlRHRvW10gPSBbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nVXN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHVibGljIGlzU21hbGxEZXZpY2U6IGJvb2xlYW47XG4gICAgcHVibGljIGlucHV0VmFsdWUgPSBcIlwiO1xuICAgIHB1YmxpYyBtb2RpZmllZERhdGU6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmaWxlVXBsb2FkU2VydmljZTogRmlsZVVwbG9hZFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHsgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1cHBvcnRlZEV4dGVuc2lvbnMgPSB0aGlzLnN1cHBvcnRlZEV4dGVuc2lvbnNcbiAgICAgICAgLm1hcChleHRlbnNpb24gPT4gZXh0ZW5zaW9uLnJlcGxhY2UoXCIuXCIsIFwiXCIpLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5uZ1VzdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVXN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIilcbiAgICBwdWJsaWMgb25SZXNpemUoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRmlsZVNlbGVjdChmaWxlczogRmlsZUR0b1tdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld0ZpbGVzOiBGaWxlRHRvW10gPSBbXTtcblxuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRmlsZUxpbWl0RXhjZWVkZWQoZmlsZXMpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlRXJyb3JzLmVtaXQoe1xuICAgICAgICAgICAgICAgIGZpbGVzLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFZhbGlkYXRlRXJyb3JzLk1BWF9GSUxFX0xJTUlULFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNsZWFyRmlsZUlucHV0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVW5zdXBwb3J0ZWRGaWxlRXh0ZW5zaW9uKGZpbGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUVycm9ycy5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZXM6IFtmaWxlXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdGVFcnJvcnMuVU5TVVBQT1JURURfRVhURU5TSU9OLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0ZpbGVTaXplRXhjZWVkZWQoZmlsZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlRXJyb3JzLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBmaWxlczogW2ZpbGVdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBWYWxpZGF0ZUVycm9ycy5NQVhfRklMRV9TSVpFLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBuZXdGaWxlcy5wdXNoKGZpbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld0ZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5maWxlcyA9IHRoaXMuZmlsZXMuY29uY2F0KG5ld0ZpbGVzKTtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkSGFuZGxlci5lbWl0KHtcbiAgICAgICAgICAgICAgICBmaWxlczogbmV3RmlsZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xlYXJGaWxlSW5wdXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZW1vdmVGaWxlKGZpbGU6IEZpbGVEdG8pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsZUluZGV4ID0gdGhpcy5maWxlcy5pbmRleE9mKGZpbGUpO1xuICAgICAgICBjb25zdCByZW1vdmVkRmlsZXMgPSB0aGlzLmZpbGVzLnNwbGljZShmaWxlSW5kZXgsIDEpO1xuXG4gICAgICAgIGlmIChyZW1vdmVkRmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUZpbGUuZW1pdCh7IGZpbGUgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DYW5jZWxVcGxvYWQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCByZW1vdmVkRmlsZXMgPSB0aGlzLmZpbGVzLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICAgICAgaWYgKHJlbW92ZWRGaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsVXBsb2FkLmVtaXQoaW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbGVhckZpbGVJbnB1dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRvd2xvYWRGaWxlKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUuZW1pdCh7XG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIGFuY2hvcjogdGhpcy5hbmNob3IsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsZXMoKTogRmlsZUR0b1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlKCkge1xuICAgICAgICBjb25zdCB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB0aGlzLmlzU21hbGxEZXZpY2UgPSB3aW5kb3dXaWR0aCA8PSBCcmVha3BvaW50cy5TTV9NQVg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ltYWdlKGZpbGU6IEZpbGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIC9eaW1hZ2VcXC8vLnRlc3QoZmlsZS50eXBlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRmlsZUxpbWl0RXhjZWVkZWQoZmlsZXM6IEZpbGVEdG9bXSkge1xuICAgICAgICBpZiAoIXRoaXMuZmlsZUxpbWl0KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZXMubGVuZ3RoICsgZmlsZXMubGVuZ3RoID4gdGhpcy5maWxlTGltaXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpbGVTaXplRXhjZWVkZWQoZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMubWF4RmlsZVNpemUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsZS5zaXplID4gdGhpcy5tYXhGaWxlU2l6ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVW5zdXBwb3J0ZWRGaWxlRXh0ZW5zaW9uKGZpbGU6IEZpbGUpIHtcbiAgICAgICAgaWYgKHRoaXMuc3VwcG9ydGVkRXh0ZW5zaW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSBmaWxlLm5hbWUuc3BsaXQoXCIuXCIpLnBvcCgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuc3VwcG9ydGVkRXh0ZW5zaW9ucy5pbmNsdWRlcyhleHRlbnNpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyRmlsZUlucHV0KCkge1xuICAgICAgICB0aGlzLmlucHV0VXBsb2FkLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VXBsb2FkRGF0ZShibG9iRmlsZTogRmlsZUR0b1tdKTogdm9pZCB7XG4gICAgICAgIGlmKCFibG9iRmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLmdldE1ldGFkYXRhQ3VzdG9tRmllbGQoeyBvYmplY3RJZDogYmxvYkZpbGVbMF0ub2JqZWN0SWQgfSlcbiAgICAgICAgICAgIC50aGVuKG1ldGFkYXRhID0+IHRoaXMuc2V0TW9kaWZpZWREYXRlKG1ldGFkYXRhKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRNb2RpZmllZERhdGUobWV0YWRhdGE6IExpc3RCbG9iTWV0YWRhdGFSZXNwb25zZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBob3VyID0gbW9tZW50KG1ldGFkYXRhLm1vZGlmaWVkKS5ob3VyKCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBtb21lbnQobWV0YWRhdGEubW9kaWZpZWQpLm1pbnV0ZXMoKTtcbiAgICAgICAgY29uc3QgZGF5ID0gbW9tZW50KG1ldGFkYXRhLm1vZGlmaWVkKS5kYXRlKCk7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gbW9tZW50KG1ldGFkYXRhLm1vZGlmaWVkKS5tb250aCgpO1xuICAgICAgICBjb25zdCBmdWxsWWVhciA9IG1vbWVudChtZXRhZGF0YS5tb2RpZmllZCkueWVhcigpO1xuXG4gICAgICAgIHRoaXMubW9kaWZpZWREYXRlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5kYXRlX21vZGlmaWVkX2N1c3RvbV9ibG9iXCIsIHsgaG91ciwgbWludXRlcywgZGF5LCBtb250aCwgZnVsbFllYXIgfSk7XG4gICAgfVxufVxuIl19
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFPdkQ7SUFtREksNkJBQTZCLFNBQXVCLEVBQ3ZCLGlCQUFvQyxFQUNwQyxTQUEyQjtRQUYzQixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3ZCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUE1Q3hDLE9BQUUsR0FBRyxtQkFBaUIscUJBQW1CLENBQUMsTUFBTSxFQUFJLENBQUM7UUFDckQsZ0JBQVcsR0FBRyxpQkFBaUIsQ0FBQztRQUNoQyxnQkFBVyxHQUFHLFNBQVMsQ0FBQztRQUN4QixnQkFBVyxHQUFHLFVBQVUsQ0FBQztRQUN6QixtQkFBYyxHQUFHLDZCQUE2QixDQUFDO1FBRy9DLHdCQUFtQixHQUFhLEVBQUUsQ0FBQztR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QUMvQjtRQUFSLEtBQUssRUFBRTswREFBK0I7SUFDOUI7UUFBUixLQUFLLEVBQUU7eURBQXlCO0lBQ3hCO1FBQVIsS0FBSyxFQUFFO21FQUE0QztJQUMzQztRQUFSLEtBQUssRUFBRTtvREFVUDtJQUVTO1FBQVQsTUFBTSxFQUFFOzhEQUErRTtJQUM5RTtRQUFULE1BQU0sRUFBRTsyREFBc0U7SUFDckU7UUFBVCxNQUFNLEVBQUU7NkRBQWdFO0lBQy9EO1FBQVQsTUFBTSxFQUFFOzZEQUErRjtJQUM5RjtRQUFULE1BQU0sRUFBRTsrREFBdUU7SUEyQmhGO1FBREMsWUFBWSxDQUFDLGVBQWUsQ0FBQzt1REFHN0I7SUF4RVEsbUJBQW1CO1FBTC9CLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLHMyS0FBMkM7O1NBRTlDLENBQUM7T0FDVyxtQkFBbUIsQ0EyTS9CO0lBQUQsMEJBQUM7Q0FBQSxBQTNNRCxJQTJNQztTQTNNWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5cbmltcG9ydCB7IEZpbGVEdG8gfSBmcm9tIFwiLi9tb2RlbHMvZmlsZS1kdG9cIjtcbmltcG9ydCB7IFZhbGlkYXRlRXJyb3JzIH0gZnJvbSBcIi4vbW9kZWxzL3ZhbGlkYXRlLWVycm9yc1wiO1xuaW1wb3J0IHsgVXBsb2FkRXJyb3IgfSBmcm9tIFwiLi9tb2RlbHMvdXBsb2FkRXJyb3JcIjtcbmltcG9ydCB7IEJyZWFrcG9pbnRzIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBGaWxlVXBsb2FkU2VydmljZSB9IGZyb20gXCIuL2ZpbGUtdXBsb2FkLnNlcnZpY2VcIjtcbmltcG9ydCB7IExpc3RCbG9iTWV0YWRhdGFSZXNwb25zZSB9IGZyb20gXCIuL21vZGVscy9saXN0LWJsb2ItbWV0YWRhdGFcIjtcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tIFwibW9tZW50XCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1maWxlLXVwbG9hZFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgcHVibGljIHN0YXRpYyBuZXh0SWQgPSAwO1xuXG4gICAgQFZpZXdDaGlsZChcImlucHV0VXBsb2FkXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRVcGxvYWQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKFwiYW5jaG9yXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgYW5jaG9yOiBFbGVtZW50UmVmO1xuXG4gICAgQElucHV0KCkgcHVibGljIGlkID0gYHMtZmlsZS11cGxvYWQtJHtGaWxlVXBsb2FkQ29tcG9uZW50Lm5leHRJZCsrfWA7XG4gICAgQElucHV0KCkgcHVibGljIGNob29zZUxhYmVsID0gXCJBbmV4YXIgYXJxdWl2b3NcIjtcbiAgICBASW5wdXQoKSBwdWJsaWMgcmVtb3ZlTGFiZWwgPSBcIlJlbW92ZXJcIjtcbiAgICBASW5wdXQoKSBwdWJsaWMgY2FuY2VsTGFiZWwgPSBcIkNhbmNlbGFyXCI7XG4gICAgQElucHV0KCkgcHVibGljIHN1Y2Nlc3NUb29sdGlwID0gXCJBcnF1aXZvIGFuZXhhZG8gY29tIHN1Y2Vzc29cIjtcbiAgICBASW5wdXQoKSBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIGFjY2VwdDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzdXBwb3J0ZWRFeHRlbnNpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhcmlhTGFiZWxGaWxlTmFtZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBtYXhGaWxlU2l6ZTogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBmaWxlTGltaXQ6IG51bWJlcjtcbiAgICBASW5wdXQoKSBwdWJsaWMgYXJpYUxhYmVsUHJvZ3Jlc3MgPSBcIkNhcnJlZ2FuZG8gYXJxdWl2b1wiO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhcmlhTGFiZWxTdWNjZXNzOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGFyaWFMYWJlbEVycm9yOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGFyaWFMYWJlbFJlbW92ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Db250cm9sO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93RmlsZVVwbG9hZERhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgc2V0IGZpbGVzKGZpbGVzOiBGaWxlRHRvW10pIHtcbiAgICAgICAgaWYodGhpcy5zaG93RmlsZVVwbG9hZERhdGUgJiYgZmlsZXNbMF0/Lm9iamVjdElkKSB7XG4gICAgICAgICAgICB0aGlzLmdldFVwbG9hZERhdGUoZmlsZXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2ZpbGVzID0gZmlsZXMubWFwKGZpbGUgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNJbWFnZShmaWxlKSkge1xuICAgICAgICAgICAgICAgIGZpbGUub2JqZWN0VVJMID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIHB1YmxpYyB1cGxvYWRIYW5kbGVyOiBFdmVudEVtaXR0ZXI8eyBmaWxlczogRmlsZUR0b1tdIH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVtb3ZlRmlsZTogRXZlbnRFbWl0dGVyPHsgZmlsZTogRmlsZSB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIGNhbmNlbFVwbG9hZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBkb3dubG9hZEZpbGU6IEV2ZW50RW1pdHRlcjx7IGluZGV4OiBudW1iZXI7IGFuY2hvcjogRWxlbWVudFJlZiB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIHZhbGlkYXRlRXJyb3JzOiBFdmVudEVtaXR0ZXI8VXBsb2FkRXJyb3I+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSBfZmlsZXM6IEZpbGVEdG9bXSA9IFtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdVc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwdWJsaWMgaXNTbWFsbERldmljZTogYm9vbGVhbjtcbiAgICBwdWJsaWMgaW5wdXRWYWx1ZSA9IFwiXCI7XG4gICAgcHVibGljIG1vZGlmaWVkRGF0ZTogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZpbGVVcGxvYWRTZXJ2aWNlOiBGaWxlVXBsb2FkU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkgeyB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3VwcG9ydGVkRXh0ZW5zaW9ucyA9IHRoaXMuc3VwcG9ydGVkRXh0ZW5zaW9uc1xuICAgICAgICAubWFwKGV4dGVuc2lvbiA9PiBleHRlbnNpb24ucmVwbGFjZShcIi5cIiwgXCJcIikudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVXN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxuICAgIHB1YmxpYyBvblJlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25GaWxlU2VsZWN0KGZpbGVzOiBGaWxlRHRvW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3RmlsZXM6IEZpbGVEdG9bXSA9IFtdO1xuXG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlcyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNGaWxlTGltaXRFeGNlZWRlZChmaWxlcykpIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcnMuZW1pdCh7XG4gICAgICAgICAgICAgICAgZmlsZXMsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdGVFcnJvcnMuTUFYX0ZJTEVfTElNSVQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJGaWxlSW5wdXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNVbnN1cHBvcnRlZEZpbGVFeHRlbnNpb24oZmlsZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlRXJyb3JzLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBmaWxlczogW2ZpbGVdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBWYWxpZGF0ZUVycm9ycy5VTlNVUFBPUlRFRF9FWFRFTlNJT04sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzRmlsZVNpemVFeGNlZWRlZChmaWxlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcnMuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzOiBbZmlsZV0sXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFZhbGlkYXRlRXJyb3JzLk1BWF9GSUxFX1NJWkUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5ld0ZpbGVzLnB1c2goZmlsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3RmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5jb25jYXQobmV3RmlsZXMpO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRIYW5kbGVyLmVtaXQoe1xuICAgICAgICAgICAgICAgIGZpbGVzOiBuZXdGaWxlcyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbGVhckZpbGVJbnB1dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblJlbW92ZUZpbGUoZmlsZTogRmlsZUR0byk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWxlSW5kZXggPSB0aGlzLmZpbGVzLmluZGV4T2YoZmlsZSk7XG4gICAgICAgIGNvbnN0IHJlbW92ZWRGaWxlcyA9IHRoaXMuZmlsZXMuc3BsaWNlKGZpbGVJbmRleCwgMSk7XG5cbiAgICAgICAgaWYgKHJlbW92ZWRGaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRmlsZS5lbWl0KHsgZmlsZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNhbmNlbFVwbG9hZChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHJlbW92ZWRGaWxlcyA9IHRoaXMuZmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICBpZiAocmVtb3ZlZEZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5jYW5jZWxVcGxvYWQuZW1pdChpbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsZWFyRmlsZUlucHV0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRG93bG9hZEZpbGUoaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmRvd25sb2FkRmlsZS5lbWl0KHtcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgYW5jaG9yOiB0aGlzLmFuY2hvcixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWxlcygpOiBGaWxlRHRvW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGUoKSB7XG4gICAgICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIHRoaXMuaXNTbWFsbERldmljZSA9IHdpbmRvd1dpZHRoIDw9IEJyZWFrcG9pbnRzLlNNX01BWDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW1hZ2UoZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gL15pbWFnZVxcLy8udGVzdChmaWxlLnR5cGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaWxlTGltaXRFeGNlZWRlZChmaWxlczogRmlsZUR0b1tdKSB7XG4gICAgICAgIGlmICghdGhpcy5maWxlTGltaXQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5maWxlcy5sZW5ndGggKyBmaWxlcy5sZW5ndGggPiB0aGlzLmZpbGVMaW1pdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRmlsZVNpemVFeGNlZWRlZChmaWxlOiBGaWxlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5tYXhGaWxlU2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxlLnNpemUgPiB0aGlzLm1heEZpbGVTaXplO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNVbnN1cHBvcnRlZEZpbGVFeHRlbnNpb24oZmlsZTogRmlsZSkge1xuICAgICAgICBpZiAodGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGUubmFtZS5zcGxpdChcIi5cIikucG9wKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zLmluY2x1ZGVzKGV4dGVuc2lvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJGaWxlSW5wdXQoKSB7XG4gICAgICAgIHRoaXMuaW5wdXRVcGxvYWQubmF0aXZlRWxlbWVudC52YWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRVcGxvYWREYXRlKGJsb2JGaWxlOiBGaWxlRHRvW10pOiB2b2lkIHtcbiAgICAgICAgaWYoIWJsb2JGaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UuZ2V0TWV0YWRhdGFDdXN0b21GaWVsZCh7IG9iamVjdElkOiBibG9iRmlsZVswXS5vYmplY3RJZCB9KVxuICAgICAgICAgICAgLnRoZW4obWV0YWRhdGEgPT4gdGhpcy5zZXRNb2RpZmllZERhdGUobWV0YWRhdGEpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE1vZGlmaWVkRGF0ZShtZXRhZGF0YTogTGlzdEJsb2JNZXRhZGF0YVJlc3BvbnNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGhvdXIgPSBtb21lbnQobWV0YWRhdGEubW9kaWZpZWQpLmZvcm1hdChcIkhIXCIpO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gbW9tZW50KG1ldGFkYXRhLm1vZGlmaWVkKS5mb3JtYXQoXCJtbVwiKTtcbiAgICAgICAgY29uc3QgZGF5ID0gbW9tZW50KG1ldGFkYXRhLm1vZGlmaWVkKS5mb3JtYXQoXCJERFwiKTtcbiAgICAgICAgY29uc3QgbW9udGggPSBtb21lbnQobWV0YWRhdGEubW9kaWZpZWQpLmZvcm1hdChcIk1NXCIpO1xuICAgICAgICBjb25zdCBmdWxsWWVhciA9IG1vbWVudChtZXRhZGF0YS5tb2RpZmllZCkuZm9ybWF0KFwiWVlZWVwiKTtcblxuICAgICAgICB0aGlzLm1vZGlmaWVkRGF0ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuZGF0ZV9tb2RpZmllZF9jdXN0b21fYmxvYlwiLCB7IGhvdXIsIG1pbnV0ZXMsIGRheSwgbW9udGgsIGZ1bGxZZWFyIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { __decorate, __rest, __awaiter, __param } from 'tslib';
2
- import { EventEmitter, Input, Output, HostListener, Component, NgModule, HostBinding, ViewChild, Renderer2, Directive, Injectable, ElementRef, Pipe, forwardRef, ViewEncapsulation, ɵɵdefineInjectable, InjectionToken, Inject, ApplicationRef, ComponentFactoryResolver, Injector, TemplateRef, ViewContainerRef, ChangeDetectorRef, Optional, ContentChild, ContentChildren } from '@angular/core';
2
+ import { EventEmitter, Input, Output, HostListener, Component, NgModule, HostBinding, ViewChild, Renderer2, Directive, Injectable, ElementRef, forwardRef, Pipe, ViewEncapsulation, ɵɵdefineInjectable, InjectionToken, Inject, ApplicationRef, ComponentFactoryResolver, Injector, TemplateRef, ViewContainerRef, ChangeDetectorRef, Optional, ContentChild, ContentChildren } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { RouterModule, NavigationEnd, PRIMARY_OUTLET, ActivatedRoute, Router } from '@angular/router';
5
5
  import { BreadcrumbModule as BreadcrumbModule$1 } from 'primeng/breadcrumb';
@@ -1334,18 +1334,34 @@ let CountryPhonePickerComponent = CountryPhonePickerComponent_1 = class CountryP
1334
1334
  this.tabindex = 0;
1335
1335
  this._filterCountries = (value) => {
1336
1336
  if (!value) {
1337
- this.filteredCountriesList = this.countriesList;
1337
+ this.filteredCountriesList = this._countriesList;
1338
1338
  }
1339
1339
  else {
1340
- this.filteredCountriesList = this.countriesList.filter((country) => {
1340
+ this.filteredCountriesList = this._countriesList.filter((country) => {
1341
1341
  const countryName = this.translate.instant(`platform.angular_components.country_name_${country.id}`);
1342
1342
  return countryName.toLowerCase().includes(value.toLowerCase());
1343
1343
  });
1344
1344
  }
1345
1345
  };
1346
1346
  }
1347
+ get value() {
1348
+ return this._value;
1349
+ }
1350
+ set value(value) {
1351
+ this._value = value;
1352
+ this.mask = this.getMask();
1353
+ }
1347
1354
  writeValue(value) {
1348
1355
  this.value = value;
1356
+ if (value === null || value === void 0 ? void 0 : value.id) {
1357
+ const country = this._countriesList.filter(({ id }) => id == value.id);
1358
+ if (country.length) {
1359
+ this.onSelectItem(country[0]);
1360
+ }
1361
+ }
1362
+ if (value === null || value === void 0 ? void 0 : value.rawValue) {
1363
+ this.phone.setValue(value.rawValue);
1364
+ }
1349
1365
  }
1350
1366
  registerOnChange(onChange) {
1351
1367
  this._onChange = onChange;
@@ -1365,28 +1381,30 @@ let CountryPhonePickerComponent = CountryPhonePickerComponent_1 = class CountryP
1365
1381
  const countries = this.countryPhonePickerService.getCountries(this.ordination);
1366
1382
  this.filter.valueChanges.subscribe(this._filterCountries);
1367
1383
  if ((_a = this.countries) === null || _a === void 0 ? void 0 : _a.length) {
1368
- this.countriesList = countries.filter((country) => this.countries.includes(country.id));
1384
+ this._countriesList = countries.filter((country) => this.countries.includes(country.id));
1369
1385
  }
1370
1386
  else {
1371
- this.countriesList = countries;
1387
+ this._countriesList = countries;
1372
1388
  }
1373
- this.filteredCountriesList = this.countriesList;
1389
+ this.filteredCountriesList = this._countriesList;
1374
1390
  this.selectedItem = this._getSelectedCountryDefault();
1391
+ this.mask = this.getMask();
1375
1392
  this.phone.valueChanges.subscribe((value) => {
1376
- var _a;
1377
1393
  this.value = {
1378
1394
  id: this.selectedItem.id,
1379
1395
  ddi: this.selectedItem.ddi,
1380
1396
  rawValue: value !== null && value !== void 0 ? value : "",
1381
1397
  value: value ? `${this._applyMask(value)}` : "",
1382
1398
  };
1383
- (_a = this._onChange) === null || _a === void 0 ? void 0 : _a.call(this.value);
1399
+ if (this._onChange) {
1400
+ this._onChange(this.value);
1401
+ }
1384
1402
  });
1385
1403
  }
1386
1404
  onKeydown(event) {
1387
1405
  if (event.key === "Enter" || event.key === " ") {
1388
1406
  if (this.open) {
1389
- this.selectedItem = this.countriesList[this.currentItemIndex];
1407
+ this.selectedItem = this._countriesList[this.currentItemIndex];
1390
1408
  this.selected.emit(this.selectedItem);
1391
1409
  }
1392
1410
  this.open = !this.open;
@@ -1412,13 +1430,13 @@ let CountryPhonePickerComponent = CountryPhonePickerComponent_1 = class CountryP
1412
1430
  }
1413
1431
  onBlur() {
1414
1432
  this.open = false;
1415
- this.currentItemIndex = this.countriesList.indexOf(this.selectedItem);
1433
+ this.currentItemIndex = this._countriesList.indexOf(this.selectedItem);
1416
1434
  }
1417
1435
  onSelectItem(country) {
1418
1436
  this.open = false;
1419
1437
  this.selectedItem = country;
1420
1438
  this.phone.setValue("");
1421
- this.currentItemIndex = this.countriesList.indexOf(this.selectedItem);
1439
+ this.currentItemIndex = this._countriesList.indexOf(this.selectedItem);
1422
1440
  this.selected.emit(this.selectedItem);
1423
1441
  }
1424
1442
  onCleanFilter() {
@@ -1428,9 +1446,10 @@ let CountryPhonePickerComponent = CountryPhonePickerComponent_1 = class CountryP
1428
1446
  this.open = false;
1429
1447
  }
1430
1448
  getMask() {
1449
+ var _a;
1431
1450
  const mask = this.selectedItem.mask;
1432
1451
  if (Array.isArray(mask)) {
1433
- return !this.value || this.value.value.length <= mask[0].length - 1
1452
+ return !((_a = this.value) === null || _a === void 0 ? void 0 : _a.rawValue) || this.value.rawValue.length <= mask[0].replace(/[^0]/g, "").length
1434
1453
  ? mask[0] // fixo
1435
1454
  : mask[1]; // celular
1436
1455
  }
@@ -1439,14 +1458,14 @@ let CountryPhonePickerComponent = CountryPhonePickerComponent_1 = class CountryP
1439
1458
  }
1440
1459
  }
1441
1460
  getPlaceholder() {
1442
- return this.getMask().replace(/9/g, "");
1461
+ return this.mask.replace(/9/g, "");
1443
1462
  }
1444
1463
  _getSelectedCountryDefault() {
1445
- if (!this.countriesList.length) {
1464
+ if (!this._countriesList.length) {
1446
1465
  throw new Error("No country loaded");
1447
1466
  }
1448
- const filteredByBr = this.countriesList.filter((country) => country.id === "br");
1449
- return filteredByBr.length ? filteredByBr[0] : this.countriesList[0];
1467
+ const filteredByBr = this._countriesList.filter((country) => country.id === "br");
1468
+ return filteredByBr.length ? filteredByBr[0] : this._countriesList[0];
1450
1469
  }
1451
1470
  _moveToUp() {
1452
1471
  if (this.currentItemIndex == 0) {
@@ -1461,7 +1480,7 @@ let CountryPhonePickerComponent = CountryPhonePickerComponent_1 = class CountryP
1461
1480
  }
1462
1481
  }
1463
1482
  _moveToDown() {
1464
- if (this.currentItemIndex >= this.countriesList.length - 1) {
1483
+ if (this.currentItemIndex >= this._countriesList.length - 1) {
1465
1484
  return;
1466
1485
  }
1467
1486
  this.currentItemIndex++;
@@ -1481,7 +1500,7 @@ let CountryPhonePickerComponent = CountryPhonePickerComponent_1 = class CountryP
1481
1500
  : this.selectedItem.mask[1] + "\0";
1482
1501
  }
1483
1502
  else {
1484
- mask = this.selectedItem.mask;
1503
+ mask = this.selectedItem.mask + "\0";
1485
1504
  }
1486
1505
  let tokens = "";
1487
1506
  let replace = "";
@@ -1535,10 +1554,10 @@ __decorate([
1535
1554
  CountryPhonePickerComponent = CountryPhonePickerComponent_1 = __decorate([
1536
1555
  Component({
1537
1556
  selector: "s-country-phone-picker",
1538
- template: "<div class=\"country-phone-picker\">\n <div class=\"phone-input\">\n <div class=\"drop\" (click)=\"open = !open\">\n <span class=\"drop-flag\" [ngClass]=\"'fi fi-' + selectedItem.id\">\n </span>\n <span class=\"drop-icon fas fa-caret-down\"></span>\n </div>\n <p class=\"phone-ddi\">{{ selectedItem.ddi }}</p>\n <input\n #phoneInput\n type=\"tel\"\n autofocus\n [mask]=\"getMask()\" \n [placeholder]=\"getPlaceholder()\"\n [formControl]=\"phone\"\n (focus)=\"onPhoneInputFocus()\" />\n </div>\n <div *ngIf=\"open\" class=\"dropdown\">\n <div class=\"search\">\n <input\n class=\"search-field\"\n type=\"text\"\n [formControl]=\"filter\">\n <span class=\"search-icon fas fa-search\"></span>\n <span\n class=\"search-clear fa fa-times\"\n (click)=\"onCleanFilter()\"></span>\n </div>\n <ul class=\"select-list\">\n <li\n *ngFor=\"let country of filteredCountriesList; let i = index;\"\n class=\"select-option\"\n [ngClass]=\"{ 'select-option--focused': i == currentItemIndex }\"\n (click)=\"onSelectItem(country)\">\n <span\n class=\"select-option__flag\"\n [ngClass]=\"'fi fi-' + country.id\">\n </span>\n <span class=\"select-option__name\">\n {{ \"platform.angular_components.country_name_\" + country.id | translate }}\n </span>\n <span class=\"select-option__ddi\">\n {{ country.ddi }}\n </span>\n </li>\n </ul>\n </div>\n</div>",
1557
+ template: "<div class=\"country-phone-picker\">\n <div class=\"phone-input\">\n <div class=\"drop\" (click)=\"open = !open\">\n <span class=\"drop-flag\" [ngClass]=\"'fi fi-' + selectedItem.id\">\n </span>\n <span class=\"drop-icon fas fa-caret-down\"></span>\n </div>\n <p class=\"phone-ddi\">{{ selectedItem.ddi }}</p>\n <input\n #phoneInput\n type=\"tel\"\n autofocus\n [mask]=\"mask\" \n [placeholder]=\"getPlaceholder()\"\n [formControl]=\"phone\"\n (focus)=\"onPhoneInputFocus()\" />\n </div>\n <div *ngIf=\"open\" class=\"dropdown\">\n <div class=\"search\">\n <input\n class=\"search-field\"\n type=\"text\"\n [formControl]=\"filter\">\n <span class=\"search-icon fas fa-search\"></span>\n <span\n class=\"search-clear fa fa-times\"\n (click)=\"onCleanFilter()\"></span>\n </div>\n <ul class=\"select-list\">\n <li\n *ngFor=\"let country of filteredCountriesList; let i = index;\"\n class=\"select-option\"\n [ngClass]=\"{ 'select-option--focused': i == currentItemIndex }\"\n (click)=\"onSelectItem(country)\">\n <span\n class=\"select-option__flag\"\n [ngClass]=\"'fi fi-' + country.id\">\n </span>\n <span class=\"select-option__name\">\n {{ \"platform.angular_components.country_name_\" + country.id | translate }}\n </span>\n <span class=\"select-option__ddi\">\n {{ country.ddi }}\n </span>\n </li>\n </ul>\n </div>\n</div>",
1539
1558
  providers: [{
1540
1559
  provide: NG_VALUE_ACCESSOR,
1541
- useExisting: CountryPhonePickerComponent_1,
1560
+ useExisting: forwardRef(() => CountryPhonePickerComponent_1),
1542
1561
  multi: true,
1543
1562
  }],
1544
1563
  styles: [".country-phone-picker .phone-input{background-color:#fff;border:1px solid #d8d8d8;border-radius:4px;display:-ms-flexbox;display:flex;line-height:normal}.country-phone-picker .phone-input .drop{-ms-flex-align:center;align-items:center;cursor:pointer;display:-ms-flexbox;display:flex}.country-phone-picker .phone-input .drop .drop-flag{margin-left:12px}.country-phone-picker .phone-input .drop .drop-icon{font-size:12px;margin:0 8px}.country-phone-picker .phone-input .phone-ddi{margin:8px 0}.country-phone-picker .phone-input input{border:none;-ms-flex-positive:1;flex-grow:1;font-family:\"Open Sans\",sans-serif;font-size:14px;font-weight:400;line-height:150%;margin-left:8px}.country-phone-picker .phone-input input:focus{color:#697882;outline:0}.country-phone-picker .dropdown{background-color:#fff;border-radius:4px;box-shadow:0 4px 5px #00000033;padding:4px 0;position:absolute;margin:2px 0;z-index:999999}.country-phone-picker .dropdown .search{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;padding:8px 12px}.country-phone-picker .dropdown .search .search-field{border:1px solid #d8d8d8;border-radius:4px;-ms-flex-positive:1;flex-grow:1;font-family:\"Open Sans\",sans-serif;font-size:14px;font-weight:400;height:36px;line-height:150%;padding:0 32px 0 8px}.country-phone-picker .dropdown .search .search-icon{color:#333;font-size:12px;position:relative;right:24px}.country-phone-picker .dropdown .search .search-clear{color:#333;cursor:pointer;font-size:1rem}.country-phone-picker .dropdown .select-list{list-style:none;max-height:234px;min-width:360px;max-width:100vw;overflow:scroll;padding:0}.country-phone-picker .dropdown .select-list .select-option{cursor:pointer;display:-ms-flexbox;display:flex;padding:12px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.country-phone-picker .dropdown .select-list .select-option .select-option__flag{margin-right:12px}.country-phone-picker .dropdown .select-list .select-option .select-option__name{margin-right:.5rem;max-width:100%;overflow:hidden;text-overflow:ellipsis}.country-phone-picker .dropdown .select-list .select-option .select-option__ddi{color:#697882;font-size:14px;font-family:\"Open Sans\",sans-serif;font-weight:400;line-height:150%}.country-phone-picker .dropdown .select-list .select-option--focused,.country-phone-picker .dropdown .select-list .select-option:hover{background-color:#e5eaea}"]
@@ -3705,11 +3724,11 @@ let FileUploadComponent = FileUploadComponent_1 = class FileUploadComponent {
3705
3724
  .then(metadata => this.setModifiedDate(metadata));
3706
3725
  }
3707
3726
  setModifiedDate(metadata) {
3708
- const hour = moment$4(metadata.modified).hour();
3709
- const minutes = moment$4(metadata.modified).minutes();
3710
- const day = moment$4(metadata.modified).date();
3711
- const month = moment$4(metadata.modified).month();
3712
- const fullYear = moment$4(metadata.modified).year();
3727
+ const hour = moment$4(metadata.modified).format("HH");
3728
+ const minutes = moment$4(metadata.modified).format("mm");
3729
+ const day = moment$4(metadata.modified).format("DD");
3730
+ const month = moment$4(metadata.modified).format("MM");
3731
+ const fullYear = moment$4(metadata.modified).format("YYYY");
3713
3732
  this.modifiedDate = this.translate.instant("platform.angular_components.date_modified_custom_blob", { hour, minutes, day, month, fullYear });
3714
3733
  }
3715
3734
  };