@seniorsistemas/angular-components 16.10.5 → 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.
@@ -8,21 +8,24 @@ export declare class CountryPhonePickerComponent implements OnInit, ControlValue
8
8
  private readonly countryPhonePickerService;
9
9
  private readonly translate;
10
10
  private readonly eRef;
11
- value: PhoneSelectionData;
12
- private _onChange;
13
- private _onTouched;
11
+ mask: string;
14
12
  selectedItem: CountryPhoneData;
15
13
  currentItemIndex: number;
16
- countriesList: CountryPhoneData[];
17
14
  filteredCountriesList: CountryPhoneData[];
18
15
  phone: FormControl;
19
16
  filter: FormControl;
17
+ private _value;
18
+ private _onChange;
19
+ private _onTouched;
20
+ private _countriesList;
20
21
  private _open;
21
22
  private offsetTop;
22
23
  constructor(countryPhonePickerService: CountryPhonePickerService, translate: TranslateService, eRef: ElementRef);
24
+ get value(): PhoneSelectionData;
25
+ set value(value: PhoneSelectionData);
23
26
  writeValue(value: PhoneSelectionData): void;
24
- registerOnChange(onChange: (value: PhoneSelectionData) => {}): void;
25
- registerOnTouched(onTouched: () => {}): void;
27
+ registerOnChange(onChange: (value: PhoneSelectionData) => void): void;
28
+ registerOnTouched(onTouched: (value: PhoneSelectionData) => void): void;
26
29
  countries: string[];
27
30
  ordination: Ordination;
28
31
  selected: EventEmitter<CountryPhoneData>;
@@ -1,6 +1,6 @@
1
1
  var CountryPhonePickerComponent_1;
2
2
  import { __decorate } from "tslib";
3
- import { Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, OnInit, ViewChild } from "@angular/core";
3
+ import { Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, OnInit, ViewChild, forwardRef } from "@angular/core";
4
4
  import { FormControl, NG_VALUE_ACCESSOR } from "@angular/forms";
5
5
  import { TranslateService } from "@ngx-translate/core";
6
6
  import { Ordination } from "./models";
@@ -20,18 +20,34 @@ let CountryPhonePickerComponent = CountryPhonePickerComponent_1 = class CountryP
20
20
  this.tabindex = 0;
21
21
  this._filterCountries = (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((country) => {
26
+ this.filteredCountriesList = this._countriesList.filter((country) => {
27
27
  const countryName = this.translate.instant(`platform.angular_components.country_name_${country.id}`);
28
28
  return countryName.toLowerCase().includes(value.toLowerCase());
29
29
  });
30
30
  }
31
31
  };
32
32
  }
33
+ get value() {
34
+ return this._value;
35
+ }
36
+ set value(value) {
37
+ this._value = value;
38
+ this.mask = this.getMask();
39
+ }
33
40
  writeValue(value) {
34
41
  this.value = value;
42
+ if (value === null || value === void 0 ? void 0 : value.id) {
43
+ const country = this._countriesList.filter(({ id }) => id == value.id);
44
+ if (country.length) {
45
+ this.onSelectItem(country[0]);
46
+ }
47
+ }
48
+ if (value === null || value === void 0 ? void 0 : value.rawValue) {
49
+ this.phone.setValue(value.rawValue);
50
+ }
35
51
  }
36
52
  registerOnChange(onChange) {
37
53
  this._onChange = onChange;
@@ -51,28 +67,30 @@ let CountryPhonePickerComponent = CountryPhonePickerComponent_1 = class CountryP
51
67
  const countries = this.countryPhonePickerService.getCountries(this.ordination);
52
68
  this.filter.valueChanges.subscribe(this._filterCountries);
53
69
  if ((_a = this.countries) === null || _a === void 0 ? void 0 : _a.length) {
54
- this.countriesList = countries.filter((country) => this.countries.includes(country.id));
70
+ this._countriesList = countries.filter((country) => this.countries.includes(country.id));
55
71
  }
56
72
  else {
57
- this.countriesList = countries;
73
+ this._countriesList = countries;
58
74
  }
59
- this.filteredCountriesList = this.countriesList;
75
+ this.filteredCountriesList = this._countriesList;
60
76
  this.selectedItem = this._getSelectedCountryDefault();
77
+ this.mask = this.getMask();
61
78
  this.phone.valueChanges.subscribe((value) => {
62
- var _a;
63
79
  this.value = {
64
80
  id: this.selectedItem.id,
65
81
  ddi: this.selectedItem.ddi,
66
82
  rawValue: value !== null && value !== void 0 ? value : "",
67
83
  value: value ? `${this._applyMask(value)}` : "",
68
84
  };
69
- (_a = this._onChange) === null || _a === void 0 ? void 0 : _a.call(this.value);
85
+ if (this._onChange) {
86
+ this._onChange(this.value);
87
+ }
70
88
  });
71
89
  }
72
90
  onKeydown(event) {
73
91
  if (event.key === "Enter" || event.key === " ") {
74
92
  if (this.open) {
75
- this.selectedItem = this.countriesList[this.currentItemIndex];
93
+ this.selectedItem = this._countriesList[this.currentItemIndex];
76
94
  this.selected.emit(this.selectedItem);
77
95
  }
78
96
  this.open = !this.open;
@@ -98,13 +116,13 @@ let CountryPhonePickerComponent = CountryPhonePickerComponent_1 = class CountryP
98
116
  }
99
117
  onBlur() {
100
118
  this.open = false;
101
- this.currentItemIndex = this.countriesList.indexOf(this.selectedItem);
119
+ this.currentItemIndex = this._countriesList.indexOf(this.selectedItem);
102
120
  }
103
121
  onSelectItem(country) {
104
122
  this.open = false;
105
123
  this.selectedItem = country;
106
124
  this.phone.setValue("");
107
- this.currentItemIndex = this.countriesList.indexOf(this.selectedItem);
125
+ this.currentItemIndex = this._countriesList.indexOf(this.selectedItem);
108
126
  this.selected.emit(this.selectedItem);
109
127
  }
110
128
  onCleanFilter() {
@@ -114,9 +132,10 @@ let CountryPhonePickerComponent = CountryPhonePickerComponent_1 = class CountryP
114
132
  this.open = false;
115
133
  }
116
134
  getMask() {
135
+ var _a;
117
136
  const mask = this.selectedItem.mask;
118
137
  if (Array.isArray(mask)) {
119
- return !this.value || this.value.value.length <= mask[0].length - 1
138
+ return !((_a = this.value) === null || _a === void 0 ? void 0 : _a.rawValue) || this.value.rawValue.length <= mask[0].replace(/[^0]/g, "").length
120
139
  ? mask[0] // fixo
121
140
  : mask[1]; // celular
122
141
  }
@@ -125,14 +144,14 @@ let CountryPhonePickerComponent = CountryPhonePickerComponent_1 = class CountryP
125
144
  }
126
145
  }
127
146
  getPlaceholder() {
128
- return this.getMask().replace(/9/g, "");
147
+ return this.mask.replace(/9/g, "");
129
148
  }
130
149
  _getSelectedCountryDefault() {
131
- if (!this.countriesList.length) {
150
+ if (!this._countriesList.length) {
132
151
  throw new Error("No country loaded");
133
152
  }
134
- const filteredByBr = this.countriesList.filter((country) => country.id === "br");
135
- return filteredByBr.length ? filteredByBr[0] : this.countriesList[0];
153
+ const filteredByBr = this._countriesList.filter((country) => country.id === "br");
154
+ return filteredByBr.length ? filteredByBr[0] : this._countriesList[0];
136
155
  }
137
156
  _moveToUp() {
138
157
  if (this.currentItemIndex == 0) {
@@ -147,7 +166,7 @@ let CountryPhonePickerComponent = CountryPhonePickerComponent_1 = class CountryP
147
166
  }
148
167
  }
149
168
  _moveToDown() {
150
- if (this.currentItemIndex >= this.countriesList.length - 1) {
169
+ if (this.currentItemIndex >= this._countriesList.length - 1) {
151
170
  return;
152
171
  }
153
172
  this.currentItemIndex++;
@@ -167,7 +186,7 @@ let CountryPhonePickerComponent = CountryPhonePickerComponent_1 = class CountryP
167
186
  : this.selectedItem.mask[1] + "\0";
168
187
  }
169
188
  else {
170
- mask = this.selectedItem.mask;
189
+ mask = this.selectedItem.mask + "\0";
171
190
  }
172
191
  let tokens = "";
173
192
  let replace = "";
@@ -221,14 +240,14 @@ __decorate([
221
240
  CountryPhonePickerComponent = CountryPhonePickerComponent_1 = __decorate([
222
241
  Component({
223
242
  selector: "s-country-phone-picker",
224
- 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>",
243
+ 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>",
225
244
  providers: [{
226
245
  provide: NG_VALUE_ACCESSOR,
227
- useExisting: CountryPhonePickerComponent_1,
246
+ useExisting: forwardRef(() => CountryPhonePickerComponent_1),
228
247
  multi: true,
229
248
  }],
230
249
  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}"]
231
250
  })
232
251
  ], CountryPhonePickerComponent);
233
252
  export { CountryPhonePickerComponent };
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pJLE9BQU8sRUFBRSxXQUFXLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdkQsT0FBTyxFQUFvQixVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFZM0UsSUFBYSwyQkFBMkIsbUNBQXhDLE1BQWEsMkJBQTJCO0lBZXJDLFlBQ29CLHlCQUFvRCxFQUNwRCxTQUEyQixFQUMzQixJQUFnQjtRQUZoQiw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFaN0IscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBR3JCLFVBQUssR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QixXQUFNLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFNUIsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLGNBQVMsR0FBRyxDQUFDLENBQUM7UUF3QmYsZUFBVSxHQUFlLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFH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RUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSw2QkFBMkI7Z0JBQ3hDLEtBQUssRUFBRSxJQUFJO2FBQ2IsQ0FBQzs7S0FDSixDQUFDO0dBQ1csMkJBQTJCLENBMk92QztTQTNPWSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcblxuaW1wb3J0IHsgUGhvbmVTZWxlY3Rpb25EYXRhIH0gZnJvbSBcIi4vbW9kZWxzL3Bob25lLXNlbGVjdGlvbi1kYXRhXCI7XG5pbXBvcnQgeyBDb3VudHJ5UGhvbmVEYXRhLCBPcmRpbmF0aW9uIH0gZnJvbSBcIi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBDb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlIH0gZnJvbSBcIi4vY291bnRyeS1waG9uZS1waWNrZXIuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgIHNlbGVjdG9yOiBcInMtY291bnRyeS1waG9uZS1waWNrZXJcIixcbiAgIHRlbXBsYXRlVXJsOiBcIi4vY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgIHN0eWxlVXJsczogW1wiLi9jb3VudHJ5LXBob25lLXBpY2tlci5jb21wb25lbnQuc2Nzc1wiXSxcbiAgIHByb3ZpZGVyczogW3tcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IENvdW50cnlQaG9uZVBpY2tlckNvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgfV0sXG59KVxuZXhwb3J0IGNsYXNzIENvdW50cnlQaG9uZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgcHVibGljIHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGE7XG4gICBwcml2YXRlIF9vbkNoYW5nZTogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHt9O1xuICAgcHJpdmF0ZSBfb25Ub3VjaGVkOiAoKSA9PiB7fTtcblxuICAgcHVibGljIHNlbGVjdGVkSXRlbTogQ291bnRyeVBob25lRGF0YTtcbiAgIHB1YmxpYyBjdXJyZW50SXRlbUluZGV4ID0gMDtcbiAgIHB1YmxpYyBjb3VudHJpZXNMaXN0OiBDb3VudHJ5UGhvbmVEYXRhW107XG4gICBwdWJsaWMgZmlsdGVyZWRDb3VudHJpZXNMaXN0OiBDb3VudHJ5UGhvbmVEYXRhW107XG4gICBwdWJsaWMgcGhvbmUgPSBuZXcgRm9ybUNvbnRyb2woXCJcIik7XG4gICBwdWJsaWMgZmlsdGVyID0gbmV3IEZvcm1Db250cm9sKFwiXCIpO1xuXG4gICBwcml2YXRlIF9vcGVuID0gZmFsc2U7XG4gICBwcml2YXRlIG9mZnNldFRvcCA9IDA7XG5cbiAgIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBjb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlOiBDb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlLFxuICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGVSZWY6IEVsZW1lbnRSZWYsXG4gICApIHsgfVxuXG4gICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKTogdm9pZCB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICB9XG5cbiAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiAodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSkgPT4ge30pOiB2b2lkIHtcbiAgICAgIHRoaXMuX29uQ2hhbmdlID0gb25DaGFuZ2U7XG4gICB9XG5cbiAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6ICgpID0+IHt9KTogdm9pZCB7XG4gICAgICB0aGlzLl9vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gICB9XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgY291bnRyaWVzOiBzdHJpbmdbXTtcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyBvcmRpbmF0aW9uOiBPcmRpbmF0aW9uID0gT3JkaW5hdGlvbi5OTztcblxuICAgQE91dHB1dCgpXG4gICBwdWJsaWMgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxDb3VudHJ5UGhvbmVEYXRhPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgQFZpZXdDaGlsZChcInBob25lSW5wdXRcIiwgeyBzdGF0aWM6IHRydWUgfSlcbiAgIHB1YmxpYyBwaG9uZUlucHV0OiBFbGVtZW50UmVmO1xuXG4gICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6Y2xpY2tcIiwgW1wiJGV2ZW50XCJdKVxuICAgcHVibGljIG9uQ2xpY2tvdXQoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgIGlmICghdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgICB9XG4gICAgICB9XG4gICB9XG5cbiAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGNvdW50cmllcyA9IHRoaXMuY291bnRyeVBob25lUGlja2VyU2VydmljZS5nZXRDb3VudHJpZXModGhpcy5vcmRpbmF0aW9uKTtcbiAgICAgIHRoaXMuZmlsdGVyLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodGhpcy5fZmlsdGVyQ291bnRyaWVzKTtcblxuICAgICAgaWYgKHRoaXMuY291bnRyaWVzPy5sZW5ndGgpIHtcbiAgICAgICAgIHRoaXMuY291bnRyaWVzTGlzdCA9IGNvdW50cmllcy5maWx0ZXIoKGNvdW50cnkpID0+IHRoaXMuY291bnRyaWVzLmluY2x1ZGVzKGNvdW50cnkuaWQpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICB0aGlzLmNvdW50cmllc0xpc3QgPSBjb3VudHJpZXM7XG4gICAgICB9XG4gICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuY291bnRyaWVzTGlzdDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5fZ2V0U2VsZWN0ZWRDb3VudHJ5RGVmYXVsdCgpO1xuXG4gICAgICB0aGlzLnBob25lLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICB0aGlzLnZhbHVlID0ge1xuICAgICAgICAgICAgaWQ6IHRoaXMuc2VsZWN0ZWRJdGVtLmlkLFxuICAgICAgICAgICAgZGRpOiB0aGlzLnNlbGVjdGVkSXRlbS5kZGksXG4gICAgICAgICAgICByYXdWYWx1ZTogdmFsdWUgPz8gXCJcIixcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSA/IGAke3RoaXMuX2FwcGx5TWFzayh2YWx1ZSl9YCA6IFwiXCIsXG4gICAgICAgICB9O1xuICAgICAgICAgdGhpcy5fb25DaGFuZ2U/LmNhbGwodGhpcy52YWx1ZSk7XG4gICAgICB9KTtcbiAgIH1cblxuICAgQEhvc3RCaW5kaW5nKFwiYXR0ci50YWJpbmRleFwiKVxuICAgcHVibGljIHRhYmluZGV4ID0gMDtcblxuICAgQEhvc3RMaXN0ZW5lcihcImtleWRvd25cIiwgW1wiJGV2ZW50XCJdKVxuICAgcHVibGljIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmtleSA9PT0gXCIgXCIpIHtcbiAgICAgICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5jb3VudHJpZXNMaXN0W3RoaXMuY3VycmVudEl0ZW1JbmRleF07XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW0pO1xuICAgICAgICAgfVxuICAgICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkVzY2FwZVwiKSB7XG4gICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93RG93blwiKSB7XG4gICAgICAgICB0aGlzLl9tb3ZlVG9Eb3duKCk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd1VwXCIpIHtcbiAgICAgICAgIHRoaXMuX21vdmVUb1VwKCk7XG4gICAgICB9XG4gICB9XG5cbiAgIHB1YmxpYyBnZXQgb3BlbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9vcGVuO1xuICAgfVxuXG4gICBwdWJsaWMgc2V0IG9wZW4ob3BlbjogYm9vbGVhbikge1xuICAgICAgdGhpcy5fb3BlbiA9IG9wZW47XG5cbiAgICAgIGlmICghb3Blbikge1xuICAgICAgICAgdGhpcy5waG9uZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHVibGljIG9uQmx1cigpIHtcbiAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4ID0gdGhpcy5jb3VudHJpZXNMaXN0LmluZGV4T2YodGhpcy5zZWxlY3RlZEl0ZW0pO1xuICAgfVxuXG4gICBwdWJsaWMgb25TZWxlY3RJdGVtKGNvdW50cnk6IENvdW50cnlQaG9uZURhdGEpIHtcbiAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBjb3VudHJ5O1xuICAgICAgdGhpcy5waG9uZS5zZXRWYWx1ZShcIlwiKTtcbiAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleCA9IHRoaXMuY291bnRyaWVzTGlzdC5pbmRleE9mKHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbSk7XG4gICB9XG5cbiAgIHB1YmxpYyBvbkNsZWFuRmlsdGVyKCkge1xuICAgICAgdGhpcy5maWx0ZXIuc2V0VmFsdWUoXCJcIik7XG4gICB9XG5cbiAgIHB1YmxpYyBvblBob25lSW5wdXRGb2N1cygpIHtcbiAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgfVxuXG4gICBwdWJsaWMgZ2V0TWFzaygpIHtcbiAgICAgIGNvbnN0IG1hc2sgPSB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShtYXNrKSkge1xuICAgICAgICAgcmV0dXJuICF0aGlzLnZhbHVlIHx8IHRoaXMudmFsdWUudmFsdWUubGVuZ3RoIDw9IG1hc2tbMF0ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgPyBtYXNrWzBdIC8vIGZpeG9cbiAgICAgICAgICAgIDogbWFza1sxXTsgLy8gY2VsdWxhclxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgIHJldHVybiBtYXNrO1xuICAgICAgfVxuICAgfVxuXG4gICBwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRNYXNrKCkucmVwbGFjZSgvOS9nLCBcIlwiKTtcbiAgIH1cblxuICAgcHJpdmF0ZSBfZ2V0U2VsZWN0ZWRDb3VudHJ5RGVmYXVsdCgpIHtcbiAgICAgIGlmICghdGhpcy5jb3VudHJpZXNMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gY291bnRyeSBsb2FkZWRcIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbHRlcmVkQnlCciA9IHRoaXMuY291bnRyaWVzTGlzdC5maWx0ZXIoKGNvdW50cnk6IENvdW50cnlQaG9uZURhdGEpID0+IGNvdW50cnkuaWQgPT09IFwiYnJcIik7XG5cbiAgICAgIHJldHVybiBmaWx0ZXJlZEJ5QnIubGVuZ3RoID8gZmlsdGVyZWRCeUJyWzBdIDogdGhpcy5jb3VudHJpZXNMaXN0WzBdXG4gICB9XG5cbiAgIHByaXZhdGUgX2ZpbHRlckNvdW50cmllcyA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuY291bnRyaWVzTGlzdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuY291bnRyaWVzTGlzdC5maWx0ZXIoKGNvdW50cnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvdW50cnlOYW1lID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgcGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmNvdW50cnlfbmFtZV8ke2NvdW50cnkuaWR9YCkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgcmV0dXJuIGNvdW50cnlOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICB9KTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHJpdmF0ZSBfbW92ZVRvVXAoKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50SXRlbUluZGV4ID09IDApIHtcbiAgICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4LS07XG5cbiAgICAgIGNvbnN0IHNlbGVjdExpc3Q6IGFueSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2VsZWN0LWxpc3RcIik7XG4gICAgICBjb25zdCBpdGVtID0gc2VsZWN0TGlzdC5jaGlsZHJlblt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdO1xuXG4gICAgICBpZiAoaXRlbS5vZmZzZXRUb3AgLSBzZWxlY3RMaXN0Lm9mZnNldFRvcCA8PSB0aGlzLm9mZnNldFRvcCkge1xuICAgICAgICAgdGhpcy5vZmZzZXRUb3AgLT0gNDU7XG4gICAgICAgICBzZWxlY3RMaXN0LnNjcm9sbFRvKDAsIHRoaXMub2Zmc2V0VG9wKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHJpdmF0ZSBfbW92ZVRvRG93bigpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRJdGVtSW5kZXggPj0gdGhpcy5jb3VudHJpZXNMaXN0Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4Kys7XG5cbiAgICAgIGNvbnN0IHNlbGVjdExpc3Q6IGFueSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2VsZWN0LWxpc3RcIik7XG4gICAgICBjb25zdCBpdGVtID0gc2VsZWN0TGlzdC5jaGlsZHJlblt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdO1xuXG4gICAgICBpZiAoaXRlbS5vZmZzZXRUb3AgLSBzZWxlY3RMaXN0Lm9mZnNldFRvcCA+IHRoaXMub2Zmc2V0VG9wICsgMTgwKSB7XG4gICAgICAgICB0aGlzLm9mZnNldFRvcCArPSA0NTtcbiAgICAgICAgIHNlbGVjdExpc3Quc2Nyb2xsVG8oMCwgdGhpcy5vZmZzZXRUb3ApO1xuICAgICAgfVxuICAgfVxuXG4gICBwcml2YXRlIF9hcHBseU1hc2sodmFsdWU6IHN0cmluZykge1xuICAgICAgbGV0IG1hc2s7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2spKSB7XG4gICAgICAgICBjb25zdCByYXdNYXNrID0gdGhpcy5zZWxlY3RlZEl0ZW0ubWFza1swXS5yZXBsYWNlKC9bXjBdL2csIFwiXCIpO1xuICAgICAgICAgbWFzayA9IHZhbHVlLmxlbmd0aCA8PSByYXdNYXNrLmxlbmd0aFxuICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrWzBdICsgXCJcXDBcIlxuICAgICAgICAgICAgOiB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrWzFdICsgXCJcXDBcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICBtYXNrID0gdGhpcy5zZWxlY3RlZEl0ZW0ubWFzaztcbiAgICAgIH1cblxuICAgICAgbGV0IHRva2VucyA9IFwiXCI7XG4gICAgICBsZXQgcmVwbGFjZSA9IFwiXCI7XG4gICAgICBsZXQgYWN1bXVsYWRvciA9IDA7XG4gICAgICBsZXQgY29udGFkb3IgPSAwO1xuXG4gICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIG1hc2spIHtcbiAgICAgICAgIGlmIChpc05hTihwYXJzZUludCh0b2tlbikpKSB7XG4gICAgICAgICAgICBpZiAoYWN1bXVsYWRvcikge1xuICAgICAgICAgICAgICAgdG9rZW5zICs9IGAoXFxcXGR7JHthY3VtdWxhZG9yfX0pYDtcbiAgICAgICAgICAgICAgIHJlcGxhY2UgKz0gYCQkeysrY29udGFkb3J9YDtcbiAgICAgICAgICAgICAgIGFjdW11bGFkb3IgPSAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodG9rZW4gIT09IFwiXFwwXCIpIHtcbiAgICAgICAgICAgICAgIHJlcGxhY2UgKz0gdG9rZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWN1bXVsYWRvcisrO1xuICAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0b2tlbnMgPSBgXiR7dG9rZW5zfSpgO1xuICAgICAgcmV0dXJuIHRoaXMucGhvbmUudmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKHRva2VucyksIHJlcGxhY2UpO1xuICAgfVxufVxuIl19
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3SSxPQUFPLEVBQUUsV0FBVyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3ZELE9BQU8sRUFBb0IsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBWTNFLElBQWEsMkJBQTJCLG1DQUF4QyxNQUFhLDJCQUEyQjtJQWVyQyxZQUNvQix5QkFBb0QsRUFDcEQsU0FBMkIsRUFDM0IsSUFBZ0I7UUFGaEIsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUNwRCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBZjdCLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUVyQixVQUFLLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsV0FBTSxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBTTVCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBNENmLGVBQVUsR0FBZSxVQUFVLENBQUMsRUFB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bWl0dGVyLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0LCBPbkluaXQsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuXG5pbXBvcnQgeyBQaG9uZVNlbGVjdGlvbkRhdGEgfSBmcm9tIFwiLi9tb2RlbHMvcGhvbmUtc2VsZWN0aW9uLWRhdGFcIjtcbmltcG9ydCB7IENvdW50cnlQaG9uZURhdGEsIE9yZGluYXRpb24gfSBmcm9tIFwiLi9tb2RlbHNcIjtcbmltcG9ydCB7IENvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UgfSBmcm9tIFwiLi9jb3VudHJ5LXBob25lLXBpY2tlci5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICAgc2VsZWN0b3I6IFwicy1jb3VudHJ5LXBob25lLXBpY2tlclwiLFxuICAgdGVtcGxhdGVVcmw6IFwiLi9jb3VudHJ5LXBob25lLXBpY2tlci5jb21wb25lbnQuaHRtbFwiLFxuICAgc3R5bGVVcmxzOiBbXCIuL2NvdW50cnktcGhvbmUtcGlja2VyLmNvbXBvbmVudC5zY3NzXCJdLFxuICAgcHJvdmlkZXJzOiBbe1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDb3VudHJ5UGhvbmVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICB9XSxcbn0pXG5leHBvcnQgY2xhc3MgQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICBwdWJsaWMgbWFzazogc3RyaW5nO1xuICAgcHVibGljIHNlbGVjdGVkSXRlbTogQ291bnRyeVBob25lRGF0YTtcbiAgIHB1YmxpYyBjdXJyZW50SXRlbUluZGV4ID0gMDtcbiAgIHB1YmxpYyBmaWx0ZXJlZENvdW50cmllc0xpc3Q6IENvdW50cnlQaG9uZURhdGFbXTtcbiAgIHB1YmxpYyBwaG9uZSA9IG5ldyBGb3JtQ29udHJvbChcIlwiKTtcbiAgIHB1YmxpYyBmaWx0ZXIgPSBuZXcgRm9ybUNvbnRyb2woXCJcIik7XG5cbiAgIHByaXZhdGUgX3ZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGE7ICAgXG4gICBwcml2YXRlIF9vbkNoYW5nZTogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHZvaWQ7XG4gICBwcml2YXRlIF9vblRvdWNoZWQ6ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkO1xuICAgcHJpdmF0ZSBfY291bnRyaWVzTGlzdDogQ291bnRyeVBob25lRGF0YVtdO1xuICAgcHJpdmF0ZSBfb3BlbiA9IGZhbHNlO1xuICAgcHJpdmF0ZSBvZmZzZXRUb3AgPSAwO1xuXG4gICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgY291bnRyeVBob25lUGlja2VyU2VydmljZTogQ291bnRyeVBob25lUGlja2VyU2VydmljZSxcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBlUmVmOiBFbGVtZW50UmVmLFxuICAgKSB7IH1cblxuICAgcHVibGljIGdldCB2YWx1ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgIH1cblxuICAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5tYXNrID0gdGhpcy5nZXRNYXNrKCk7XG4gICB9XG5cbiAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpOiB2b2lkIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcblxuICAgICAgaWYgKHZhbHVlPy5pZCkge1xuICAgICAgICAgY29uc3QgY291bnRyeSA9IHRoaXMuX2NvdW50cmllc0xpc3QuZmlsdGVyKCh7IGlkIH0pID0+IGlkID09IHZhbHVlLmlkKTtcbiAgICAgICAgIGlmIChjb3VudHJ5Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5vblNlbGVjdEl0ZW0oY291bnRyeVswXSk7XG4gICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZT8ucmF3VmFsdWUpIHtcbiAgICAgICAgIHRoaXMucGhvbmUuc2V0VmFsdWUodmFsdWUucmF3VmFsdWUpO1xuICAgICAgfVxuICAgfVxuXG4gICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgIHRoaXMuX29uQ2hhbmdlID0gb25DaGFuZ2U7XG4gICB9XG5cbiAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICB0aGlzLl9vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gICB9XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgY291bnRyaWVzOiBzdHJpbmdbXTtcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyBvcmRpbmF0aW9uOiBPcmRpbmF0aW9uID0gT3JkaW5hdGlvbi5OTztcblxuICAgQE91dHB1dCgpXG4gICBwdWJsaWMgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxDb3VudHJ5UGhvbmVEYXRhPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgQFZpZXdDaGlsZChcInBob25lSW5wdXRcIiwgeyBzdGF0aWM6IHRydWUgfSlcbiAgIHB1YmxpYyBwaG9uZUlucHV0OiBFbGVtZW50UmVmO1xuXG4gICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6Y2xpY2tcIiwgW1wiJGV2ZW50XCJdKVxuICAgcHVibGljIG9uQ2xpY2tvdXQoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgIGlmICghdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgICB9XG4gICAgICB9XG4gICB9XG5cbiAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHsgICAgICBcbiAgICAgIGNvbnN0IGNvdW50cmllcyA9IHRoaXMuY291bnRyeVBob25lUGlja2VyU2VydmljZS5nZXRDb3VudHJpZXModGhpcy5vcmRpbmF0aW9uKTtcbiAgICAgIHRoaXMuZmlsdGVyLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodGhpcy5fZmlsdGVyQ291bnRyaWVzKTtcbiAgICAgIFxuICAgICAgaWYgKHRoaXMuY291bnRyaWVzPy5sZW5ndGgpIHtcbiAgICAgICAgIHRoaXMuX2NvdW50cmllc0xpc3QgPSBjb3VudHJpZXMuZmlsdGVyKChjb3VudHJ5KSA9PiB0aGlzLmNvdW50cmllcy5pbmNsdWRlcyhjb3VudHJ5LmlkKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAgdGhpcy5fY291bnRyaWVzTGlzdCA9IGNvdW50cmllcztcbiAgICAgIH1cbiAgICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXNMaXN0ID0gdGhpcy5fY291bnRyaWVzTGlzdDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5fZ2V0U2VsZWN0ZWRDb3VudHJ5RGVmYXVsdCgpO1xuICAgICAgdGhpcy5tYXNrID0gdGhpcy5nZXRNYXNrKCk7XG5cbiAgICAgIHRoaXMucGhvbmUudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgIHRoaXMudmFsdWUgPSB7XG4gICAgICAgICAgICBpZDogdGhpcy5zZWxlY3RlZEl0ZW0uaWQsXG4gICAgICAgICAgICBkZGk6IHRoaXMuc2VsZWN0ZWRJdGVtLmRkaSxcbiAgICAgICAgICAgIHJhd1ZhbHVlOiB2YWx1ZSA/PyBcIlwiLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlID8gYCR7dGhpcy5fYXBwbHlNYXNrKHZhbHVlKX1gIDogXCJcIixcbiAgICAgICAgIH07XG4gICAgICAgICBpZiAodGhpcy5fb25DaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICAgfVxuICAgICAgfSk7XG4gICB9XG5cbiAgIEBIb3N0QmluZGluZyhcImF0dHIudGFiaW5kZXhcIilcbiAgIHB1YmxpYyB0YWJpbmRleCA9IDA7XG5cbiAgIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duXCIsIFtcIiRldmVudFwiXSlcbiAgIHB1YmxpYyBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09IFwiRW50ZXJcIiB8fCBldmVudC5rZXkgPT09IFwiIFwiKSB7XG4gICAgICAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuX2NvdW50cmllc0xpc3RbdGhpcy5jdXJyZW50SXRlbUluZGV4XTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbSk7XG4gICAgICAgICB9XG4gICAgICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09IFwiRXNjYXBlXCIpIHtcbiAgICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dEb3duXCIpIHtcbiAgICAgICAgIHRoaXMuX21vdmVUb0Rvd24oKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93VXBcIikge1xuICAgICAgICAgdGhpcy5fbW92ZVRvVXAoKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHVibGljIGdldCBvcGVuKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX29wZW47XG4gICB9XG5cbiAgIHB1YmxpYyBzZXQgb3BlbihvcGVuOiBib29sZWFuKSB7XG4gICAgICB0aGlzLl9vcGVuID0gb3BlbjtcblxuICAgICAgaWYgKCFvcGVuKSB7XG4gICAgICAgICB0aGlzLnBob25lSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgfVxuXG4gICBwdWJsaWMgb25CbHVyKCkge1xuICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLmN1cnJlbnRJdGVtSW5kZXggPSB0aGlzLl9jb3VudHJpZXNMaXN0LmluZGV4T2YodGhpcy5zZWxlY3RlZEl0ZW0pO1xuICAgfVxuXG4gICBwdWJsaWMgb25TZWxlY3RJdGVtKGNvdW50cnk6IENvdW50cnlQaG9uZURhdGEpIHtcbiAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBjb3VudHJ5O1xuICAgICAgdGhpcy5waG9uZS5zZXRWYWx1ZShcIlwiKTtcbiAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleCA9IHRoaXMuX2NvdW50cmllc0xpc3QuaW5kZXhPZih0aGlzLnNlbGVjdGVkSXRlbSk7XG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW0pO1xuICAgfVxuXG4gICBwdWJsaWMgb25DbGVhbkZpbHRlcigpIHtcbiAgICAgIHRoaXMuZmlsdGVyLnNldFZhbHVlKFwiXCIpO1xuICAgfVxuXG4gICBwdWJsaWMgb25QaG9uZUlucHV0Rm9jdXMoKSB7XG4gICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgIH1cblxuICAgcHVibGljIGdldE1hc2soKSB7XG4gICAgICBjb25zdCBtYXNrID0gdGhpcy5zZWxlY3RlZEl0ZW0ubWFzaztcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWFzaykpIHtcbiAgICAgICAgIHJldHVybiAhdGhpcy52YWx1ZT8ucmF3VmFsdWUgfHwgdGhpcy52YWx1ZS5yYXdWYWx1ZS5sZW5ndGggPD0gbWFza1swXS5yZXBsYWNlKC9bXjBdL2csIFwiXCIpLmxlbmd0aFxuICAgICAgICAgICAgPyBtYXNrWzBdIC8vIGZpeG9cbiAgICAgICAgICAgIDogbWFza1sxXTsgLy8gY2VsdWxhclxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgIHJldHVybiBtYXNrO1xuICAgICAgfVxuICAgfVxuXG4gICBwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXNrLnJlcGxhY2UoLzkvZywgXCJcIik7XG4gICB9XG5cbiAgIHByaXZhdGUgX2dldFNlbGVjdGVkQ291bnRyeURlZmF1bHQoKSB7XG4gICAgICBpZiAoIXRoaXMuX2NvdW50cmllc0xpc3QubGVuZ3RoKSB7XG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb3VudHJ5IGxvYWRlZFwiKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsdGVyZWRCeUJyID0gdGhpcy5fY291bnRyaWVzTGlzdC5maWx0ZXIoKGNvdW50cnk6IENvdW50cnlQaG9uZURhdGEpID0+IGNvdW50cnkuaWQgPT09IFwiYnJcIik7XG5cbiAgICAgIHJldHVybiBmaWx0ZXJlZEJ5QnIubGVuZ3RoID8gZmlsdGVyZWRCeUJyWzBdIDogdGhpcy5fY291bnRyaWVzTGlzdFswXVxuICAgfVxuXG4gICBwcml2YXRlIF9maWx0ZXJDb3VudHJpZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgdGhpcy5maWx0ZXJlZENvdW50cmllc0xpc3QgPSB0aGlzLl9jb3VudHJpZXNMaXN0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXNMaXN0ID0gdGhpcy5fY291bnRyaWVzTGlzdC5maWx0ZXIoKGNvdW50cnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvdW50cnlOYW1lID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgcGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmNvdW50cnlfbmFtZV8ke2NvdW50cnkuaWR9YCkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgcmV0dXJuIGNvdW50cnlOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICB9KTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHJpdmF0ZSBfbW92ZVRvVXAoKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50SXRlbUluZGV4ID09IDApIHtcbiAgICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4LS07XG5cbiAgICAgIGNvbnN0IHNlbGVjdExpc3Q6IGFueSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2VsZWN0LWxpc3RcIik7XG4gICAgICBjb25zdCBpdGVtID0gc2VsZWN0TGlzdC5jaGlsZHJlblt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdO1xuXG4gICAgICBpZiAoaXRlbS5vZmZzZXRUb3AgLSBzZWxlY3RMaXN0Lm9mZnNldFRvcCA8PSB0aGlzLm9mZnNldFRvcCkge1xuICAgICAgICAgdGhpcy5vZmZzZXRUb3AgLT0gNDU7XG4gICAgICAgICBzZWxlY3RMaXN0LnNjcm9sbFRvKDAsIHRoaXMub2Zmc2V0VG9wKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHJpdmF0ZSBfbW92ZVRvRG93bigpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRJdGVtSW5kZXggPj0gdGhpcy5fY291bnRyaWVzTGlzdC5sZW5ndGggLSAxKSB7XG4gICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleCsrO1xuXG4gICAgICBjb25zdCBzZWxlY3RMaXN0OiBhbnkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLnNlbGVjdC1saXN0XCIpO1xuICAgICAgY29uc3QgaXRlbSA9IHNlbGVjdExpc3QuY2hpbGRyZW5bdGhpcy5jdXJyZW50SXRlbUluZGV4XTtcblxuICAgICAgaWYgKGl0ZW0ub2Zmc2V0VG9wIC0gc2VsZWN0TGlzdC5vZmZzZXRUb3AgPiB0aGlzLm9mZnNldFRvcCArIDE4MCkge1xuICAgICAgICAgdGhpcy5vZmZzZXRUb3AgKz0gNDU7XG4gICAgICAgICBzZWxlY3RMaXN0LnNjcm9sbFRvKDAsIHRoaXMub2Zmc2V0VG9wKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHJpdmF0ZSBfYXBwbHlNYXNrKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgIGxldCBtYXNrO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkSXRlbS5tYXNrKSkge1xuICAgICAgICAgY29uc3QgcmF3TWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2tbMF0ucmVwbGFjZSgvW14wXS9nLCBcIlwiKTtcbiAgICAgICAgIG1hc2sgPSB2YWx1ZS5sZW5ndGggPD0gcmF3TWFzay5sZW5ndGhcbiAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZEl0ZW0ubWFza1swXSArIFwiXFwwXCJcbiAgICAgICAgICAgIDogdGhpcy5zZWxlY3RlZEl0ZW0ubWFza1sxXSArIFwiXFwwXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAgbWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2sgKyBcIlxcMFwiO1xuICAgICAgfVxuXG4gICAgICBsZXQgdG9rZW5zID0gXCJcIjtcbiAgICAgIGxldCByZXBsYWNlID0gXCJcIjtcbiAgICAgIGxldCBhY3VtdWxhZG9yID0gMDtcbiAgICAgIGxldCBjb250YWRvciA9IDA7XG5cbiAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgbWFzaykge1xuICAgICAgICAgaWYgKGlzTmFOKHBhcnNlSW50KHRva2VuKSkpIHtcbiAgICAgICAgICAgIGlmIChhY3VtdWxhZG9yKSB7XG4gICAgICAgICAgICAgICB0b2tlbnMgKz0gYChcXFxcZHske2FjdW11bGFkb3J9fSlgO1xuICAgICAgICAgICAgICAgcmVwbGFjZSArPSBgJCR7Kytjb250YWRvcn1gO1xuICAgICAgICAgICAgICAgYWN1bXVsYWRvciA9IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gXCJcXDBcIikge1xuICAgICAgICAgICAgICAgcmVwbGFjZSArPSB0b2tlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhY3VtdWxhZG9yKys7XG4gICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRva2VucyA9IGBeJHt0b2tlbnN9KmA7XG4gICAgICByZXR1cm4gdGhpcy5waG9uZS52YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAodG9rZW5zKSwgcmVwbGFjZSk7XG4gICB9XG59XG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdJLE9BQU8sRUFBRSxXQUFXLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdkQsT0FBTyxFQUFvQixVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFZM0U7SUFlRyxxQ0FDb0IseUJBQW9ELEVBQ3BELFNBQTJCLEVBQzNCLElBQWdCO1FBSHBDLGlCQUlLO1FBSGUsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUNwRCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBZjdCLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUVyQixVQUFLLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsV0FBTSxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBTTVCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBNENmLGVBQVUsR0FBZSxVQUFVLENBQUMsRUFBRSxDQUFDO1FBR3ZDLGFBQVEsR0FB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QixFQUEzQixDQUEyQixDQUFDO29CQUMxRCxLQUFLLEVBQUUsSUFBSTtpQkFDYixDQUFDOztTQUNKLENBQUM7T0FDVywyQkFBMkIsQ0FrUXZDO0lBQUQsa0NBQUM7Q0FBQSxBQWxRRCxJQWtRQztTQWxRWSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgT25Jbml0LCBWaWV3Q2hpbGQsIGZvcndhcmRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcblxuaW1wb3J0IHsgUGhvbmVTZWxlY3Rpb25EYXRhIH0gZnJvbSBcIi4vbW9kZWxzL3Bob25lLXNlbGVjdGlvbi1kYXRhXCI7XG5pbXBvcnQgeyBDb3VudHJ5UGhvbmVEYXRhLCBPcmRpbmF0aW9uIH0gZnJvbSBcIi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBDb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlIH0gZnJvbSBcIi4vY291bnRyeS1waG9uZS1waWNrZXIuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgIHNlbGVjdG9yOiBcInMtY291bnRyeS1waG9uZS1waWNrZXJcIixcbiAgIHRlbXBsYXRlVXJsOiBcIi4vY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgIHN0eWxlVXJsczogW1wiLi9jb3VudHJ5LXBob25lLXBpY2tlci5jb21wb25lbnQuc2Nzc1wiXSxcbiAgIHByb3ZpZGVyczogW3tcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgfV0sXG59KVxuZXhwb3J0IGNsYXNzIENvdW50cnlQaG9uZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgcHVibGljIG1hc2s6IHN0cmluZztcbiAgIHB1YmxpYyBzZWxlY3RlZEl0ZW06IENvdW50cnlQaG9uZURhdGE7XG4gICBwdWJsaWMgY3VycmVudEl0ZW1JbmRleCA9IDA7XG4gICBwdWJsaWMgZmlsdGVyZWRDb3VudHJpZXNMaXN0OiBDb3VudHJ5UGhvbmVEYXRhW107XG4gICBwdWJsaWMgcGhvbmUgPSBuZXcgRm9ybUNvbnRyb2woXCJcIik7XG4gICBwdWJsaWMgZmlsdGVyID0gbmV3IEZvcm1Db250cm9sKFwiXCIpO1xuXG4gICBwcml2YXRlIF92YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhOyAgIFxuICAgcHJpdmF0ZSBfb25DaGFuZ2U6ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkO1xuICAgcHJpdmF0ZSBfb25Ub3VjaGVkOiAodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSkgPT4gdm9pZDtcbiAgIHByaXZhdGUgX2NvdW50cmllc0xpc3Q6IENvdW50cnlQaG9uZURhdGFbXTtcbiAgIHByaXZhdGUgX29wZW4gPSBmYWxzZTtcbiAgIHByaXZhdGUgb2Zmc2V0VG9wID0gMDtcblxuICAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGNvdW50cnlQaG9uZVBpY2tlclNlcnZpY2U6IENvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UsXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgZVJlZjogRWxlbWVudFJlZixcbiAgICkgeyB9XG5cbiAgIHB1YmxpYyBnZXQgdmFsdWUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICB9XG5cbiAgIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMubWFzayA9IHRoaXMuZ2V0TWFzaygpO1xuICAgfVxuXG4gICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKTogdm9pZCB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAgIGlmICh2YWx1ZT8uaWQpIHtcbiAgICAgICAgIGNvbnN0IGNvdW50cnkgPSB0aGlzLl9jb3VudHJpZXNMaXN0LmZpbHRlcigoeyBpZCB9KSA9PiBpZCA9PSB2YWx1ZS5pZCk7XG4gICAgICAgICBpZiAoY291bnRyeS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMub25TZWxlY3RJdGVtKGNvdW50cnlbMF0pO1xuICAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWU/LnJhd1ZhbHVlKSB7XG4gICAgICAgICB0aGlzLnBob25lLnNldFZhbHVlKHZhbHVlLnJhd1ZhbHVlKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICB0aGlzLl9vbkNoYW5nZSA9IG9uQ2hhbmdlO1xuICAgfVxuXG4gICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiAodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgdGhpcy5fb25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICAgfVxuXG4gICBASW5wdXQoKVxuICAgcHVibGljIGNvdW50cmllczogc3RyaW5nW107XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgb3JkaW5hdGlvbjogT3JkaW5hdGlvbiA9IE9yZGluYXRpb24uTk87XG5cbiAgIEBPdXRwdXQoKVxuICAgcHVibGljIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8Q291bnRyeVBob25lRGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgIEBWaWV3Q2hpbGQoXCJwaG9uZUlucHV0XCIsIHsgc3RhdGljOiB0cnVlIH0pXG4gICBwdWJsaWMgcGhvbmVJbnB1dDogRWxlbWVudFJlZjtcblxuICAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50OmNsaWNrXCIsIFtcIiRldmVudFwiXSlcbiAgIHB1YmxpYyBvbkNsaWNrb3V0KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICBpZiAoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICAgfVxuICAgICAgfVxuICAgfVxuXG4gICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7ICAgICAgXG4gICAgICBjb25zdCBjb3VudHJpZXMgPSB0aGlzLmNvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UuZ2V0Q291bnRyaWVzKHRoaXMub3JkaW5hdGlvbik7XG4gICAgICB0aGlzLmZpbHRlci52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHRoaXMuX2ZpbHRlckNvdW50cmllcyk7XG4gICAgICBcbiAgICAgIGlmICh0aGlzLmNvdW50cmllcz8ubGVuZ3RoKSB7XG4gICAgICAgICB0aGlzLl9jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzLmZpbHRlcigoY291bnRyeSkgPT4gdGhpcy5jb3VudHJpZXMuaW5jbHVkZXMoY291bnRyeS5pZCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgIHRoaXMuX2NvdW50cmllc0xpc3QgPSBjb3VudHJpZXM7XG4gICAgICB9XG4gICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuX2NvdW50cmllc0xpc3Q7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuX2dldFNlbGVjdGVkQ291bnRyeURlZmF1bHQoKTtcbiAgICAgIHRoaXMubWFzayA9IHRoaXMuZ2V0TWFzaygpO1xuXG4gICAgICB0aGlzLnBob25lLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICB0aGlzLnZhbHVlID0ge1xuICAgICAgICAgICAgaWQ6IHRoaXMuc2VsZWN0ZWRJdGVtLmlkLFxuICAgICAgICAgICAgZGRpOiB0aGlzLnNlbGVjdGVkSXRlbS5kZGksXG4gICAgICAgICAgICByYXdWYWx1ZTogdmFsdWUgPz8gXCJcIixcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSA/IGAke3RoaXMuX2FwcGx5TWFzayh2YWx1ZSl9YCA6IFwiXCIsXG4gICAgICAgICB9O1xuICAgICAgICAgaWYgKHRoaXMuX29uQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgIH1cbiAgICAgIH0pO1xuICAgfVxuXG4gICBASG9zdEJpbmRpbmcoXCJhdHRyLnRhYmluZGV4XCIpXG4gICBwdWJsaWMgdGFiaW5kZXggPSAwO1xuXG4gICBASG9zdExpc3RlbmVyKFwia2V5ZG93blwiLCBbXCIkZXZlbnRcIl0pXG4gICBwdWJsaWMgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkVudGVyXCIgfHwgZXZlbnQua2V5ID09PSBcIiBcIikge1xuICAgICAgICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLl9jb3VudHJpZXNMaXN0W3RoaXMuY3VycmVudEl0ZW1JbmRleF07XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW0pO1xuICAgICAgICAgfVxuICAgICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkVzY2FwZVwiKSB7XG4gICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93RG93blwiKSB7XG4gICAgICAgICB0aGlzLl9tb3ZlVG9Eb3duKCk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd1VwXCIpIHtcbiAgICAgICAgIHRoaXMuX21vdmVUb1VwKCk7XG4gICAgICB9XG4gICB9XG5cbiAgIHB1YmxpYyBnZXQgb3BlbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9vcGVuO1xuICAgfVxuXG4gICBwdWJsaWMgc2V0IG9wZW4ob3BlbjogYm9vbGVhbikge1xuICAgICAgdGhpcy5fb3BlbiA9IG9wZW47XG5cbiAgICAgIGlmICghb3Blbikge1xuICAgICAgICAgdGhpcy5waG9uZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHVibGljIG9uQmx1cigpIHtcbiAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4ID0gdGhpcy5fY291bnRyaWVzTGlzdC5pbmRleE9mKHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgIH1cblxuICAgcHVibGljIG9uU2VsZWN0SXRlbShjb3VudHJ5OiBDb3VudHJ5UGhvbmVEYXRhKSB7XG4gICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gY291bnRyeTtcbiAgICAgIHRoaXMucGhvbmUuc2V0VmFsdWUoXCJcIik7XG4gICAgICB0aGlzLmN1cnJlbnRJdGVtSW5kZXggPSB0aGlzLl9jb3VudHJpZXNMaXN0LmluZGV4T2YodGhpcy5zZWxlY3RlZEl0ZW0pO1xuICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgIH1cblxuICAgcHVibGljIG9uQ2xlYW5GaWx0ZXIoKSB7XG4gICAgICB0aGlzLmZpbHRlci5zZXRWYWx1ZShcIlwiKTtcbiAgIH1cblxuICAgcHVibGljIG9uUGhvbmVJbnB1dEZvY3VzKCkge1xuICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICB9XG5cbiAgIHB1YmxpYyBnZXRNYXNrKCkge1xuICAgICAgY29uc3QgbWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2s7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG1hc2spKSB7XG4gICAgICAgICByZXR1cm4gIXRoaXMudmFsdWU/LnJhd1ZhbHVlIHx8IHRoaXMudmFsdWUucmF3VmFsdWUubGVuZ3RoIDw9IG1hc2tbMF0ucmVwbGFjZSgvW14wXS9nLCBcIlwiKS5sZW5ndGhcbiAgICAgICAgICAgID8gbWFza1swXSAvLyBmaXhvXG4gICAgICAgICAgICA6IG1hc2tbMV07IC8vIGNlbHVsYXJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICByZXR1cm4gbWFzaztcbiAgICAgIH1cbiAgIH1cblxuICAgcHVibGljIGdldFBsYWNlaG9sZGVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMubWFzay5yZXBsYWNlKC85L2csIFwiXCIpO1xuICAgfVxuXG4gICBwcml2YXRlIF9nZXRTZWxlY3RlZENvdW50cnlEZWZhdWx0KCkge1xuICAgICAgaWYgKCF0aGlzLl9jb3VudHJpZXNMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gY291bnRyeSBsb2FkZWRcIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbHRlcmVkQnlCciA9IHRoaXMuX2NvdW50cmllc0xpc3QuZmlsdGVyKChjb3VudHJ5OiBDb3VudHJ5UGhvbmVEYXRhKSA9PiBjb3VudHJ5LmlkID09PSBcImJyXCIpO1xuXG4gICAgICByZXR1cm4gZmlsdGVyZWRCeUJyLmxlbmd0aCA/IGZpbHRlcmVkQnlCclswXSA6IHRoaXMuX2NvdW50cmllc0xpc3RbMF1cbiAgIH1cblxuICAgcHJpdmF0ZSBfZmlsdGVyQ291bnRyaWVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXNMaXN0ID0gdGhpcy5fY291bnRyaWVzTGlzdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuX2NvdW50cmllc0xpc3QuZmlsdGVyKChjb3VudHJ5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb3VudHJ5TmFtZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYHBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jb3VudHJ5X25hbWVfJHtjb3VudHJ5LmlkfWApIGFzIHN0cmluZztcbiAgICAgICAgICAgIHJldHVybiBjb3VudHJ5TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgfSk7XG4gICAgICB9XG4gICB9XG5cbiAgIHByaXZhdGUgX21vdmVUb1VwKCkge1xuICAgICAgaWYgKHRoaXMuY3VycmVudEl0ZW1JbmRleCA9PSAwKSB7XG4gICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleC0tO1xuXG4gICAgICBjb25zdCBzZWxlY3RMaXN0OiBhbnkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLnNlbGVjdC1saXN0XCIpO1xuICAgICAgY29uc3QgaXRlbSA9IHNlbGVjdExpc3QuY2hpbGRyZW5bdGhpcy5jdXJyZW50SXRlbUluZGV4XTtcblxuICAgICAgaWYgKGl0ZW0ub2Zmc2V0VG9wIC0gc2VsZWN0TGlzdC5vZmZzZXRUb3AgPD0gdGhpcy5vZmZzZXRUb3ApIHtcbiAgICAgICAgIHRoaXMub2Zmc2V0VG9wIC09IDQ1O1xuICAgICAgICAgc2VsZWN0TGlzdC5zY3JvbGxUbygwLCB0aGlzLm9mZnNldFRvcCk7XG4gICAgICB9XG4gICB9XG5cbiAgIHByaXZhdGUgX21vdmVUb0Rvd24oKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50SXRlbUluZGV4ID49IHRoaXMuX2NvdW50cmllc0xpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRJdGVtSW5kZXgrKztcblxuICAgICAgY29uc3Qgc2VsZWN0TGlzdDogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5zZWxlY3QtbGlzdFwiKTtcbiAgICAgIGNvbnN0IGl0ZW0gPSBzZWxlY3RMaXN0LmNoaWxkcmVuW3RoaXMuY3VycmVudEl0ZW1JbmRleF07XG5cbiAgICAgIGlmIChpdGVtLm9mZnNldFRvcCAtIHNlbGVjdExpc3Qub2Zmc2V0VG9wID4gdGhpcy5vZmZzZXRUb3AgKyAxODApIHtcbiAgICAgICAgIHRoaXMub2Zmc2V0VG9wICs9IDQ1O1xuICAgICAgICAgc2VsZWN0TGlzdC5zY3JvbGxUbygwLCB0aGlzLm9mZnNldFRvcCk7XG4gICAgICB9XG4gICB9XG5cbiAgIHByaXZhdGUgX2FwcGx5TWFzayh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICBsZXQgbWFzaztcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZEl0ZW0ubWFzaykpIHtcbiAgICAgICAgIGNvbnN0IHJhd01hc2sgPSB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrWzBdLnJlcGxhY2UoL1teMF0vZywgXCJcIik7XG4gICAgICAgICBtYXNrID0gdmFsdWUubGVuZ3RoIDw9IHJhd01hc2subGVuZ3RoXG4gICAgICAgICAgICA/IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2tbMF0gKyBcIlxcMFwiXG4gICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2tbMV0gKyBcIlxcMFwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgIG1hc2sgPSB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrICsgXCJcXDBcIjtcbiAgICAgIH1cblxuICAgICAgbGV0IHRva2VucyA9IFwiXCI7XG4gICAgICBsZXQgcmVwbGFjZSA9IFwiXCI7XG4gICAgICBsZXQgYWN1bXVsYWRvciA9IDA7XG4gICAgICBsZXQgY29udGFkb3IgPSAwO1xuXG4gICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIG1hc2spIHtcbiAgICAgICAgIGlmIChpc05hTihwYXJzZUludCh0b2tlbikpKSB7XG4gICAgICAgICAgICBpZiAoYWN1bXVsYWRvcikge1xuICAgICAgICAgICAgICAgdG9rZW5zICs9IGAoXFxcXGR7JHthY3VtdWxhZG9yfX0pYDtcbiAgICAgICAgICAgICAgIHJlcGxhY2UgKz0gYCQkeysrY29udGFkb3J9YDtcbiAgICAgICAgICAgICAgIGFjdW11bGFkb3IgPSAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodG9rZW4gIT09IFwiXFwwXCIpIHtcbiAgICAgICAgICAgICAgIHJlcGxhY2UgKz0gdG9rZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWN1bXVsYWRvcisrO1xuICAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0b2tlbnMgPSBgXiR7dG9rZW5zfSpgO1xuICAgICAgcmV0dXJuIHRoaXMucGhvbmUudmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKHRva2VucyksIHJlcGxhY2UpO1xuICAgfVxufVxuIl19