ngx-dial-input 1.0.0 → 2.0.1
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.
- package/README.md +9 -12
- package/data/countries.d.ts +2 -0
- package/data/countries.model.d.ts +9 -0
- package/esm2020/data/countries.mjs +1218 -0
- package/esm2020/data/countries.model.mjs +2 -0
- package/esm2020/lib/phone-input.component.mjs +292 -0
- package/esm2020/lib/phone-input.module.mjs +24 -0
- package/esm2020/ngx-dial-input.mjs +5 -0
- package/esm2020/public-api.mjs +6 -0
- package/fesm2015/ngx-dial-input.mjs +1542 -0
- package/fesm2015/ngx-dial-input.mjs.map +1 -0
- package/fesm2020/ngx-dial-input.mjs +1541 -0
- package/fesm2020/ngx-dial-input.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/phone-input.component.d.ts +37 -0
- package/lib/phone-input.module.d.ts +9 -0
- package/ngx-dial-input-2.0.1.tgz +0 -0
- package/package.json +32 -49
- package/{projects/phone-input/src/public-api.ts → public-api.d.ts} +0 -3
- package/.editorconfig +0 -16
- package/.vscode/extensions.json +0 -4
- package/.vscode/launch.json +0 -20
- package/.vscode/tasks.json +0 -42
- package/angular.json +0 -41
- package/country-phone-input-0.0.0.tgz +0 -0
- package/projects/phone-input/README.md +0 -24
- package/projects/phone-input/ng-package.json +0 -7
- package/projects/phone-input/package.json +0 -12
- package/projects/phone-input/src/data/countries.model.ts +0 -9
- package/projects/phone-input/src/data/countries.ts +0 -1219
- package/projects/phone-input/src/lib/phone-input.component.css +0 -0
- package/projects/phone-input/src/lib/phone-input.component.html +0 -0
- package/projects/phone-input/src/lib/phone-input.component.ts +0 -338
- package/projects/phone-input/src/lib/phone-input.module.ts +0 -15
- package/projects/phone-input/src/lib/phone-input.service.spec.ts +0 -16
- package/projects/phone-input/tsconfig.lib.json +0 -15
- package/projects/phone-input/tsconfig.lib.prod.json +0 -10
- package/projects/phone-input/tsconfig.spec.json +0 -14
- package/tsconfig.json +0 -33
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyaWVzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGhvbmUtaW5wdXQvc3JjL2RhdGEvY291bnRyaWVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENvdW50cmllc1Bob25lSW5wdXREYXRhIHtcclxuICBuYW1lIDogc3RyaW5nO1xyXG4gIG5hdGl2ZSA6IHN0cmluZztcclxuICBpc28yIDogc3RyaW5nO1xyXG4gIGRpYWxDb2RlIDogc3RyaW5nO1xyXG4gIGZsYWcgOiBzdHJpbmc7XHJcbiAgZm9ybWF0IDogc3RyaW5nO1xyXG4gIHBob25lTGVuZ3RoOiBudW1iZXI7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, HostListener, forwardRef } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { countries } from '../data/countries';
|
|
4
|
+
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "@angular/forms";
|
|
8
|
+
export class PhoneInputComponent {
|
|
9
|
+
constructor(eRef) {
|
|
10
|
+
this.eRef = eRef;
|
|
11
|
+
this.countriesList = countries;
|
|
12
|
+
this.searchTerm = '';
|
|
13
|
+
this.defaultCountry = '';
|
|
14
|
+
this.placeholder = '';
|
|
15
|
+
this.searchEnabled = true;
|
|
16
|
+
this.numberFormat = 'international';
|
|
17
|
+
this.setFirstCountry = '';
|
|
18
|
+
this.phoneChange = new EventEmitter();
|
|
19
|
+
this.phoneNumber = '';
|
|
20
|
+
this.isInvalid = false;
|
|
21
|
+
this.dropdownOpen = false;
|
|
22
|
+
this.animating = false;
|
|
23
|
+
this.selectedCountry = countries[0];
|
|
24
|
+
this.onChange = () => { };
|
|
25
|
+
this.onTouched = () => { };
|
|
26
|
+
}
|
|
27
|
+
ngOnInit() {
|
|
28
|
+
if (this.defaultCountry) {
|
|
29
|
+
const match = countries.find(c => c.iso2 === this.defaultCountry.toLowerCase());
|
|
30
|
+
if (match)
|
|
31
|
+
this.selectedCountry = match;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
handleClickOutside(event) {
|
|
35
|
+
if (!this.eRef.nativeElement.contains(event.target)) {
|
|
36
|
+
this.dropdownOpen = false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
onAnimationDone(event) {
|
|
40
|
+
if (!this.dropdownOpen) {
|
|
41
|
+
this.animating = false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
toggleDropdown() {
|
|
45
|
+
this.dropdownOpen = !this.dropdownOpen;
|
|
46
|
+
this.animating = true;
|
|
47
|
+
}
|
|
48
|
+
onClickOutside(event) {
|
|
49
|
+
if (!this.eRef.nativeElement.contains(event.target)) {
|
|
50
|
+
this.dropdownOpen = false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
onSearchChange() {
|
|
54
|
+
const term = this.searchTerm.toLowerCase();
|
|
55
|
+
this.countriesList = countries.filter(c => c.name.toLowerCase().includes(term));
|
|
56
|
+
}
|
|
57
|
+
selectCountry(country) {
|
|
58
|
+
this.selectedCountry = country;
|
|
59
|
+
this.searchTerm = '';
|
|
60
|
+
this.countriesList = countries;
|
|
61
|
+
this.dropdownOpen = false;
|
|
62
|
+
this.emitPhoneChange();
|
|
63
|
+
}
|
|
64
|
+
onPhoneInput() {
|
|
65
|
+
this.emitPhoneChange();
|
|
66
|
+
}
|
|
67
|
+
emitPhoneChange() {
|
|
68
|
+
const digitsOnly = this.phoneNumber.replace(/\D/g, '');
|
|
69
|
+
const length = digitsOnly.length;
|
|
70
|
+
const expectedLength = this.selectedCountry?.phoneLength;
|
|
71
|
+
if (expectedLength) {
|
|
72
|
+
this.isInvalid = length !== expectedLength;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// fallback validation
|
|
76
|
+
this.isInvalid = length < 7 || length > 12;
|
|
77
|
+
}
|
|
78
|
+
const fullPhone = this.selectedCountry.dialCode + this.phoneNumber;
|
|
79
|
+
const structuredValue = {
|
|
80
|
+
e164Number: fullPhone,
|
|
81
|
+
nationalNumber: this.phoneNumber,
|
|
82
|
+
dialCode: this.selectedCountry.dialCode,
|
|
83
|
+
countryCode: this.selectedCountry.iso2,
|
|
84
|
+
isValid: !this.isInvalid,
|
|
85
|
+
};
|
|
86
|
+
this.onChange(structuredValue);
|
|
87
|
+
this.phoneChange.emit(structuredValue);
|
|
88
|
+
}
|
|
89
|
+
writeValue(value) {
|
|
90
|
+
if (value && value.dialCode && value.countryCode) {
|
|
91
|
+
const match = countries.find(c => c.dialCode === value.dialCode && c.iso2 === value.countryCode);
|
|
92
|
+
if (match) {
|
|
93
|
+
this.selectedCountry = match;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
this.selectedCountry = countries[0];
|
|
97
|
+
}
|
|
98
|
+
this.phoneNumber = value.nationalNumber || '';
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
this.selectedCountry = countries[0];
|
|
102
|
+
this.phoneNumber = '';
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
registerOnChange(fn) {
|
|
106
|
+
this.onChange = fn;
|
|
107
|
+
}
|
|
108
|
+
registerOnTouched(fn) {
|
|
109
|
+
this.onTouched = fn;
|
|
110
|
+
}
|
|
111
|
+
allowOnlyNumbers(event) {
|
|
112
|
+
const charCode = event.charCode;
|
|
113
|
+
// Allow only digits (0–9)
|
|
114
|
+
if (charCode < 48 || charCode > 57) {
|
|
115
|
+
event.preventDefault();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
PhoneInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
120
|
+
PhoneInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PhoneInputComponent, selector: "phone-input", inputs: { defaultCountry: "defaultCountry", placeholder: "placeholder", searchEnabled: "searchEnabled", numberFormat: "numberFormat", setFirstCountry: "setFirstCountry" }, outputs: { phoneChange: "phoneChange" }, host: { listeners: { "document:click": "handleClickOutside($event)" } }, providers: [{
|
|
121
|
+
provide: NG_VALUE_ACCESSOR,
|
|
122
|
+
useExisting: forwardRef(() => PhoneInputComponent),
|
|
123
|
+
multi: true
|
|
124
|
+
}], ngImport: i0, template: `<div class="phone-input-wrapper">
|
|
125
|
+
<div class="input-container">
|
|
126
|
+
<!-- Country Selector (20%) -->
|
|
127
|
+
<div class="country-select" (click)="toggleDropdown()" (blur)="toggleDropdown()">
|
|
128
|
+
<img [src]="selectedCountry.flag" width="20" />
|
|
129
|
+
<span>{{selectedCountry.dialCode}}</span>
|
|
130
|
+
<span class="arrow-down">▾</span>
|
|
131
|
+
</div>
|
|
132
|
+
|
|
133
|
+
<!-- Phone Input (80%) -->
|
|
134
|
+
<input
|
|
135
|
+
type="tel"
|
|
136
|
+
pattern="[0-9]*"
|
|
137
|
+
inputmode="numeric"
|
|
138
|
+
class="phone-input"
|
|
139
|
+
[placeholder]="placeholder"
|
|
140
|
+
[(ngModel)]="phoneNumber"
|
|
141
|
+
[ngClass]="{ 'error-border': isInvalid }"
|
|
142
|
+
(input)="onPhoneInput()"
|
|
143
|
+
(keypress)="allowOnlyNumbers($event)"
|
|
144
|
+
/>
|
|
145
|
+
</div>
|
|
146
|
+
|
|
147
|
+
<!-- Dropdown Content (full width below) -->
|
|
148
|
+
<div
|
|
149
|
+
class="dropdown-content"
|
|
150
|
+
[@dropdownAnimation]="dropdownOpen ? 'open' : 'closed'"
|
|
151
|
+
*ngIf="dropdownOpen || animating"
|
|
152
|
+
(@dropdownAnimation.done)="onAnimationDone($event)" >
|
|
153
|
+
<input
|
|
154
|
+
*ngIf="searchEnabled"
|
|
155
|
+
type="text"
|
|
156
|
+
class="search-box"
|
|
157
|
+
placeholder="Search Country"
|
|
158
|
+
[(ngModel)]="searchTerm"
|
|
159
|
+
(input)="onSearchChange()"
|
|
160
|
+
/>
|
|
161
|
+
<div class="country-list">
|
|
162
|
+
<div
|
|
163
|
+
class="country-option"
|
|
164
|
+
*ngFor="let country of countriesList"
|
|
165
|
+
(click)="selectCountry(country)"
|
|
166
|
+
>
|
|
167
|
+
<img [src]="country.flag" width="20" />
|
|
168
|
+
<span class="country-name">{{ country.name }} ({{ country.native }})</span>
|
|
169
|
+
<span class="dial-code">{{ country.dialCode }}</span>
|
|
170
|
+
</div>
|
|
171
|
+
</div>
|
|
172
|
+
</div>
|
|
173
|
+
</div>
|
|
174
|
+
|
|
175
|
+
`, isInline: true, styles: [".phone-input-wrapper{position:relative;font-family:Arial,sans-serif}.input-container{display:flex;width:100%;padding-bottom:3px}.country-select{width:24%;display:flex;align-items:center;justify-content:space-between;border:1px solid #ccc;border-right:none;border-radius:4px 0 0 4px;padding:8px;cursor:pointer;background-color:#f8f8f8}.country-select img{margin-right:5px}.arrow-down{font-size:13px;color:#666}.arrow-down:after{display:none}.phone-input{width:80%;padding:8px 12px;border:1px solid #ccc;border-radius:0 4px 4px 0;outline:none}.dropdown-content{position:absolute;top:100%;left:0;width:100%;background:white;border:1px solid #ccc;border-radius:0 0 4px 4px;box-shadow:0 2px 4px #0000001a;z-index:1000;margin-top:-1px}.search-box{width:100%;padding:8px 12px;border:none;border-bottom:1px solid #eee;outline:none}.country-list{max-height:200px;overflow-y:auto}.country-option{display:flex;align-items:center;padding:8px 12px;cursor:pointer}.country-option:hover{background-color:#f5f5f5}.country-option img{margin-right:5px}.country-name{flex-grow:1}.dial-code{color:#666;font-size:.9em}input.error-border{border-color:red}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], animations: [
|
|
176
|
+
trigger('dropdownAnimation', [
|
|
177
|
+
state('open', style({
|
|
178
|
+
opacity: 1,
|
|
179
|
+
transform: 'scaleY(1)',
|
|
180
|
+
height: '*',
|
|
181
|
+
padding: '*'
|
|
182
|
+
})),
|
|
183
|
+
state('closed', style({
|
|
184
|
+
opacity: 0,
|
|
185
|
+
transform: 'scaleY(0)',
|
|
186
|
+
height: '0px',
|
|
187
|
+
padding: '0px'
|
|
188
|
+
})),
|
|
189
|
+
transition('closed => open', [
|
|
190
|
+
animate('200ms ease-out')
|
|
191
|
+
]),
|
|
192
|
+
transition('open => closed', [
|
|
193
|
+
animate('150ms ease-in')
|
|
194
|
+
])
|
|
195
|
+
])
|
|
196
|
+
] });
|
|
197
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputComponent, decorators: [{
|
|
198
|
+
type: Component,
|
|
199
|
+
args: [{ selector: 'phone-input', animations: [
|
|
200
|
+
trigger('dropdownAnimation', [
|
|
201
|
+
state('open', style({
|
|
202
|
+
opacity: 1,
|
|
203
|
+
transform: 'scaleY(1)',
|
|
204
|
+
height: '*',
|
|
205
|
+
padding: '*'
|
|
206
|
+
})),
|
|
207
|
+
state('closed', style({
|
|
208
|
+
opacity: 0,
|
|
209
|
+
transform: 'scaleY(0)',
|
|
210
|
+
height: '0px',
|
|
211
|
+
padding: '0px'
|
|
212
|
+
})),
|
|
213
|
+
transition('closed => open', [
|
|
214
|
+
animate('200ms ease-out')
|
|
215
|
+
]),
|
|
216
|
+
transition('open => closed', [
|
|
217
|
+
animate('150ms ease-in')
|
|
218
|
+
])
|
|
219
|
+
])
|
|
220
|
+
], template: `<div class="phone-input-wrapper">
|
|
221
|
+
<div class="input-container">
|
|
222
|
+
<!-- Country Selector (20%) -->
|
|
223
|
+
<div class="country-select" (click)="toggleDropdown()" (blur)="toggleDropdown()">
|
|
224
|
+
<img [src]="selectedCountry.flag" width="20" />
|
|
225
|
+
<span>{{selectedCountry.dialCode}}</span>
|
|
226
|
+
<span class="arrow-down">▾</span>
|
|
227
|
+
</div>
|
|
228
|
+
|
|
229
|
+
<!-- Phone Input (80%) -->
|
|
230
|
+
<input
|
|
231
|
+
type="tel"
|
|
232
|
+
pattern="[0-9]*"
|
|
233
|
+
inputmode="numeric"
|
|
234
|
+
class="phone-input"
|
|
235
|
+
[placeholder]="placeholder"
|
|
236
|
+
[(ngModel)]="phoneNumber"
|
|
237
|
+
[ngClass]="{ 'error-border': isInvalid }"
|
|
238
|
+
(input)="onPhoneInput()"
|
|
239
|
+
(keypress)="allowOnlyNumbers($event)"
|
|
240
|
+
/>
|
|
241
|
+
</div>
|
|
242
|
+
|
|
243
|
+
<!-- Dropdown Content (full width below) -->
|
|
244
|
+
<div
|
|
245
|
+
class="dropdown-content"
|
|
246
|
+
[@dropdownAnimation]="dropdownOpen ? 'open' : 'closed'"
|
|
247
|
+
*ngIf="dropdownOpen || animating"
|
|
248
|
+
(@dropdownAnimation.done)="onAnimationDone($event)" >
|
|
249
|
+
<input
|
|
250
|
+
*ngIf="searchEnabled"
|
|
251
|
+
type="text"
|
|
252
|
+
class="search-box"
|
|
253
|
+
placeholder="Search Country"
|
|
254
|
+
[(ngModel)]="searchTerm"
|
|
255
|
+
(input)="onSearchChange()"
|
|
256
|
+
/>
|
|
257
|
+
<div class="country-list">
|
|
258
|
+
<div
|
|
259
|
+
class="country-option"
|
|
260
|
+
*ngFor="let country of countriesList"
|
|
261
|
+
(click)="selectCountry(country)"
|
|
262
|
+
>
|
|
263
|
+
<img [src]="country.flag" width="20" />
|
|
264
|
+
<span class="country-name">{{ country.name }} ({{ country.native }})</span>
|
|
265
|
+
<span class="dial-code">{{ country.dialCode }}</span>
|
|
266
|
+
</div>
|
|
267
|
+
</div>
|
|
268
|
+
</div>
|
|
269
|
+
</div>
|
|
270
|
+
|
|
271
|
+
`, providers: [{
|
|
272
|
+
provide: NG_VALUE_ACCESSOR,
|
|
273
|
+
useExisting: forwardRef(() => PhoneInputComponent),
|
|
274
|
+
multi: true
|
|
275
|
+
}], styles: [".phone-input-wrapper{position:relative;font-family:Arial,sans-serif}.input-container{display:flex;width:100%;padding-bottom:3px}.country-select{width:24%;display:flex;align-items:center;justify-content:space-between;border:1px solid #ccc;border-right:none;border-radius:4px 0 0 4px;padding:8px;cursor:pointer;background-color:#f8f8f8}.country-select img{margin-right:5px}.arrow-down{font-size:13px;color:#666}.arrow-down:after{display:none}.phone-input{width:80%;padding:8px 12px;border:1px solid #ccc;border-radius:0 4px 4px 0;outline:none}.dropdown-content{position:absolute;top:100%;left:0;width:100%;background:white;border:1px solid #ccc;border-radius:0 0 4px 4px;box-shadow:0 2px 4px #0000001a;z-index:1000;margin-top:-1px}.search-box{width:100%;padding:8px 12px;border:none;border-bottom:1px solid #eee;outline:none}.country-list{max-height:200px;overflow-y:auto}.country-option{display:flex;align-items:center;padding:8px 12px;cursor:pointer}.country-option:hover{background-color:#f5f5f5}.country-option img{margin-right:5px}.country-name{flex-grow:1}.dial-code{color:#666;font-size:.9em}input.error-border{border-color:red}\n"] }]
|
|
276
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { defaultCountry: [{
|
|
277
|
+
type: Input
|
|
278
|
+
}], placeholder: [{
|
|
279
|
+
type: Input
|
|
280
|
+
}], searchEnabled: [{
|
|
281
|
+
type: Input
|
|
282
|
+
}], numberFormat: [{
|
|
283
|
+
type: Input
|
|
284
|
+
}], setFirstCountry: [{
|
|
285
|
+
type: Input
|
|
286
|
+
}], phoneChange: [{
|
|
287
|
+
type: Output
|
|
288
|
+
}], handleClickOutside: [{
|
|
289
|
+
type: HostListener,
|
|
290
|
+
args: ['document:click', ['$event']]
|
|
291
|
+
}] } });
|
|
292
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGhvbmUtaW5wdXQvc3JjL2xpYi9waG9uZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixZQUFZLEVBQ1osVUFBVSxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQTZMN0IsTUFBTSxPQUFPLG1CQUFtQjtJQWlCOUIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQWhCcEMsa0JBQWEsR0FBRyxTQUFTLENBQUM7UUFDMUIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNQLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBQzVCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBQzlCLGlCQUFZLEdBQWlDLGVBQWUsQ0FBQztRQUM3RCxvQkFBZSxHQUFXLEVBQUUsQ0FBQztRQUM1QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFL0MsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDMUIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNCLG9CQUFlLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBSXZCLGFBQVEsR0FBUSxHQUFHLEVBQUUs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QUssQ0FBQztnQ0FDbEIsT0FBTyxFQUFFLENBQUM7Z0NBQ1YsU0FBUyxFQUFFLFdBQVc7Z0NBQ3RCLE1BQU0sRUFBRSxHQUFHO2dDQUNYLE9BQU8sRUFBRSxHQUFHOzZCQUNiLENBQUMsQ0FBQzs0QkFDSCxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQztnQ0FDcEIsT0FBTyxFQUFFLENBQUM7Z0NBQ1YsU0FBUyxFQUFFLFdBQVc7Z0NBQ3RCLE1BQU0sRUFBRSxLQUFLO2dDQUNiLE9BQU8sRUFBRSxLQUFLOzZCQUNmLENBQUMsQ0FBQzs0QkFDSCxVQUFVLENBQUMsZ0JBQWdCLEVBQUU7Z0NBQzNCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQzs2QkFDMUIsQ0FBQzs0QkFDRixVQUFVLENBQUMsZ0JBQWdCLEVBQUU7Z0NBQzNCLE9BQU8sQ0FBQyxlQUFlLENBQUM7NkJBQ3pCLENBQUM7eUJBQ0gsQ0FBQztxQkFDSCxZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtRFQsYUF3R1UsQ0FBQzs0QkFDVixPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1osQ0FBQztpR0FLTyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFzQlAsa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBmb3J3YXJkUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgY291bnRyaWVzIH0gZnJvbSAnLi4vZGF0YS9jb3VudHJpZXMnO1xyXG5pbXBvcnQge1xyXG4gIHRyaWdnZXIsXHJcbiAgc3RhdGUsXHJcbiAgc3R5bGUsXHJcbiAgdHJhbnNpdGlvbixcclxuICBhbmltYXRlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcblxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncGhvbmUtaW5wdXQnLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2Ryb3Bkb3duQW5pbWF0aW9uJywgW1xyXG4gICAgICBzdGF0ZSgnb3BlbicsIHN0eWxlKHtcclxuICAgICAgICBvcGFjaXR5OiAxLFxyXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWSgxKScsXHJcbiAgICAgICAgaGVpZ2h0OiAnKicsXHJcbiAgICAgICAgcGFkZGluZzogJyonXHJcbiAgICAgIH0pKSxcclxuICAgICAgc3RhdGUoJ2Nsb3NlZCcsIHN0eWxlKHtcclxuICAgICAgICBvcGFjaXR5OiAwLFxyXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWSgwKScsXHJcbiAgICAgICAgaGVpZ2h0OiAnMHB4JyxcclxuICAgICAgICBwYWRkaW5nOiAnMHB4J1xyXG4gICAgICB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlZCA9PiBvcGVuJywgW1xyXG4gICAgICAgIGFuaW1hdGUoJzIwMG1zIGVhc2Utb3V0JylcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ29wZW4gPT4gY2xvc2VkJywgW1xyXG4gICAgICAgIGFuaW1hdGUoJzE1MG1zIGVhc2UtaW4nKVxyXG4gICAgICBdKVxyXG4gICAgXSlcclxuICBdLFxyXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cInBob25lLWlucHV0LXdyYXBwZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICA8IS0tIENvdW50cnkgU2VsZWN0b3IgKDIwJSkgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY291bnRyeS1zZWxlY3RcIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiIChibHVyKT1cInRvZ2dsZURyb3Bkb3duKClcIj5cclxuICAgICAgPGltZyBbc3JjXT1cInNlbGVjdGVkQ291bnRyeS5mbGFnXCIgd2lkdGg9XCIyMFwiIC8+XHJcbiAgICAgIDxzcGFuPnt7c2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3ctZG93blwiPuKWvjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUGhvbmUgSW5wdXQgKDgwJSkgLS0+XHJcbiAgICA8aW5wdXRcclxuICAgICAgdHlwZT1cInRlbFwiXHJcbiAgICAgIHBhdHRlcm49XCJbMC05XSpcIlxyXG4gICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcclxuICAgICAgY2xhc3M9XCJwaG9uZS1pbnB1dFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwicGhvbmVOdW1iZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7ICdlcnJvci1ib3JkZXInOiBpc0ludmFsaWQgfVwiXHJcbiAgICAgIChpbnB1dCk9XCJvblBob25lSW5wdXQoKVwiXHJcbiAgICAgIChrZXlwcmVzcyk9XCJhbGxvd09ubHlOdW1iZXJzKCRldmVudClcIlxyXG4gICAgLz5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBEcm9wZG93biBDb250ZW50IChmdWxsIHdpZHRoIGJlbG93KSAtLT5cclxuICA8ZGl2XHJcbiAgY2xhc3M9XCJkcm9wZG93bi1jb250ZW50XCJcclxuICBbQGRyb3Bkb3duQW5pbWF0aW9uXT1cImRyb3Bkb3duT3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnXCJcclxuICAqbmdJZj1cImRyb3Bkb3duT3BlbiB8fCBhbmltYXRpbmdcIlxyXG4gIChAZHJvcGRvd25BbmltYXRpb24uZG9uZSk9XCJvbkFuaW1hdGlvbkRvbmUoJGV2ZW50KVwiID5cclxuICAgIDxpbnB1dFxyXG4gICAgICAqbmdJZj1cInNlYXJjaEVuYWJsZWRcIlxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIGNsYXNzPVwic2VhcmNoLWJveFwiXHJcbiAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIENvdW50cnlcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxyXG4gICAgICAoaW5wdXQpPVwib25TZWFyY2hDaGFuZ2UoKVwiXHJcbiAgICAvPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvdW50cnktbGlzdFwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJjb3VudHJ5LW9wdGlvblwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGNvdW50cnkgb2YgY291bnRyaWVzTGlzdFwiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdENvdW50cnkoY291bnRyeSlcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cImNvdW50cnkuZmxhZ1wiIHdpZHRoPVwiMjBcIiAvPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRyeS1uYW1lXCI+e3sgY291bnRyeS5uYW1lIH19ICh7eyBjb3VudHJ5Lm5hdGl2ZSB9fSk8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkaWFsLWNvZGVcIj57eyBjb3VudHJ5LmRpYWxDb2RlIH19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbiAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICAucGhvbmUtaW5wdXQtd3JhcHBlciB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjtcclxufVxyXG5cclxuLmlucHV0LWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICB3aWR0aDogMTAwJTtcclxuICBwYWRkaW5nLWJvdHRvbTogM3B4O1xyXG59XHJcblxyXG4vKiBDb3VudHJ5IFNlbGVjdCAoMjAlKSAqL1xyXG4uY291bnRyeS1zZWxlY3Qge1xyXG4gIHdpZHRoOiAyNCU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yaWdodDogbm9uZTtcclxuICBib3JkZXItcmFkaXVzOiA0cHggMCAwIDRweDtcclxuICBwYWRkaW5nOiA4cHggOHB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4O1xyXG59XHJcblxyXG4uY291bnRyeS1zZWxlY3QgaW1nIHtcclxuICBtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuLmFycm93LWRvd24ge1xyXG4gIGZvbnQtc2l6ZTogMTNweDtcclxuICBjb2xvcjogIzY2NjtcclxufVxyXG4uYXJyb3ctZG93bjphZnRlciB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcbi8qIFBob25lIElucHV0ICg4MCUpICovXHJcbi5waG9uZS1pbnB1dCB7XHJcbiAgd2lkdGg6IDgwJTtcclxuICBwYWRkaW5nOiA4cHggMTJweDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAgNHB4IDRweCAwO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuXHJcbi8qIERyb3Bkb3duIENvbnRlbnQgKi9cclxuLmRyb3Bkb3duLWNvbnRlbnQge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDEwMCU7XHJcbiAgbGVmdDogMDtcclxuICB3aWR0aDogMTAwJTtcclxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAgMCA0cHggNHB4O1xyXG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsMCwwLDAuMSk7XHJcbiAgei1pbmRleDogMTAwMDtcclxuICBtYXJnaW4tdG9wOiAtMXB4O1xyXG59XHJcblxyXG4uc2VhcmNoLWJveCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcGFkZGluZzogOHB4IDEycHg7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuXHJcbi5jb3VudHJ5LWxpc3Qge1xyXG4gIG1heC1oZWlnaHQ6IDIwMHB4O1xyXG4gIG92ZXJmbG93LXk6IGF1dG87XHJcbn1cclxuXHJcbi5jb3VudHJ5LW9wdGlvbiB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIHBhZGRpbmc6IDhweCAxMnB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmNvdW50cnktb3B0aW9uOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xyXG59XHJcblxyXG4uY291bnRyeS1vcHRpb24gaW1nIHtcclxuICBtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuLmNvdW50cnktbmFtZSB7XHJcbiAgZmxleC1ncm93OiAxO1xyXG59XHJcblxyXG4uZGlhbC1jb2RlIHtcclxuICBjb2xvcjogIzY2NjtcclxuICBmb250LXNpemU6IDAuOWVtO1xyXG59XHJcblxyXG4vKiBFcnJvciBTdGF0ZSAqL1xyXG5pbnB1dC5lcnJvci1ib3JkZXIge1xyXG4gIGJvcmRlci1jb2xvcjogcmVkO1xyXG59XHJcblxyXG4gIGBdLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGhvbmVJbnB1dENvbXBvbmVudCksXHJcbiAgICBtdWx0aTogdHJ1ZVxyXG4gIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQaG9uZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIGNvdW50cmllc0xpc3QgPSBjb3VudHJpZXM7XHJcbiAgc2VhcmNoVGVybSA9ICcnO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRDb3VudHJ5OiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgc2VhcmNoRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgbnVtYmVyRm9ybWF0OiAnaW50ZXJuYXRpb25hbCcgfCAnbmF0aW9uYWwnID0gJ2ludGVybmF0aW9uYWwnO1xyXG4gIEBJbnB1dCgpIHNldEZpcnN0Q291bnRyeTogc3RyaW5nID0gJyc7XHJcbiAgQE91dHB1dCgpIHBob25lQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICBwaG9uZU51bWJlcjogc3RyaW5nID0gJyc7XHJcbiAgaXNJbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZHJvcGRvd25PcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYW5pbWF0aW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHNlbGVjdGVkQ291bnRyeSA9IGNvdW50cmllc1swXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmKSB7fVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcclxuICBwcml2YXRlIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XHJcblxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmRlZmF1bHRDb3VudHJ5KSB7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gY291bnRyaWVzLmZpbmQoYyA9PiBjLmlzbzIgPT09IHRoaXMuZGVmYXVsdENvdW50cnkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgIGlmIChtYXRjaCkgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBtYXRjaDtcclxuICAgIH1cclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmVSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IGFueSkge1xyXG4gIGlmICghdGhpcy5kcm9wZG93bk9wZW4pIHtcclxuICAgIHRoaXMuYW5pbWF0aW5nID0gZmFsc2U7XHJcbiAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9ICF0aGlzLmRyb3Bkb3duT3BlbjtcclxuICAgIHRoaXMuYW5pbWF0aW5nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tPdXRzaWRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgdGhpcy5kcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VhcmNoQ2hhbmdlKCkge1xyXG4gICAgY29uc3QgdGVybSA9IHRoaXMuc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzLmZpbHRlcihjID0+XHJcbiAgICAgIGMubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q291bnRyeShjb3VudHJ5OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gY291bnRyeTtcclxuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xyXG4gICAgdGhpcy5jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzO1xyXG4gICAgdGhpcy5kcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuZW1pdFBob25lQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBvblBob25lSW5wdXQoKSB7XHJcbiAgICB0aGlzLmVtaXRQaG9uZUNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0UGhvbmVDaGFuZ2UoKSB7XHJcbiAgICBjb25zdCBkaWdpdHNPbmx5ID0gdGhpcy5waG9uZU51bWJlci5yZXBsYWNlKC9cXEQvZywgJycpO1xyXG4gICAgY29uc3QgbGVuZ3RoID0gZGlnaXRzT25seS5sZW5ndGg7XHJcblxyXG4gICAgY29uc3QgZXhwZWN0ZWRMZW5ndGggPSB0aGlzLnNlbGVjdGVkQ291bnRyeT8ucGhvbmVMZW5ndGg7XHJcblxyXG4gICAgaWYgKGV4cGVjdGVkTGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gbGVuZ3RoICE9PSBleHBlY3RlZExlbmd0aDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGZhbGxiYWNrIHZhbGlkYXRpb25cclxuICAgICAgdGhpcy5pc0ludmFsaWQgPSBsZW5ndGggPCA3IHx8IGxlbmd0aCA+IDEyO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZ1bGxQaG9uZSA9IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlICsgdGhpcy5waG9uZU51bWJlcjtcclxuXHJcbiAgICBjb25zdCBzdHJ1Y3R1cmVkVmFsdWUgPSB7XHJcbiAgICAgIGUxNjROdW1iZXI6IGZ1bGxQaG9uZSxcclxuICAgICAgbmF0aW9uYWxOdW1iZXI6IHRoaXMucGhvbmVOdW1iZXIsXHJcbiAgICAgIGRpYWxDb2RlOiB0aGlzLnNlbGVjdGVkQ291bnRyeS5kaWFsQ29kZSxcclxuICAgICAgY291bnRyeUNvZGU6IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzIsXHJcbiAgICAgIGlzVmFsaWQ6ICF0aGlzLmlzSW52YWxpZCxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZShzdHJ1Y3R1cmVkVmFsdWUpO1xyXG4gICAgdGhpcy5waG9uZUNoYW5nZS5lbWl0KHN0cnVjdHVyZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5kaWFsQ29kZSAmJiB2YWx1ZS5jb3VudHJ5Q29kZSkge1xyXG4gICAgICBjb25zdCBtYXRjaCA9IGNvdW50cmllcy5maW5kKGMgPT5cclxuICAgICAgICBjLmRpYWxDb2RlID09PSB2YWx1ZS5kaWFsQ29kZSAmJiBjLmlzbzIgPT09IHZhbHVlLmNvdW50cnlDb2RlXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gbWF0Y2g7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBjb3VudHJpZXNbMF07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5waG9uZU51bWJlciA9IHZhbHVlLm5hdGlvbmFsTnVtYmVyIHx8ICcnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBjb3VudHJpZXNbMF07XHJcbiAgICAgIHRoaXMucGhvbmVOdW1iZXIgPSAnJztcclxuICAgIH1cclxuICB9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuICBhbGxvd09ubHlOdW1iZXJzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgY29uc3QgY2hhckNvZGUgPSBldmVudC5jaGFyQ29kZTtcclxuXHJcbiAgLy8gQWxsb3cgb25seSBkaWdpdHMgKDDigJM5KVxyXG4gIGlmIChjaGFyQ29kZSA8IDQ4IHx8IGNoYXJDb2RlID4gNTcpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG59XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { PhoneInputComponent } from './phone-input.component';
|
|
4
|
+
import { FormsModule } from '@angular/forms';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class PhoneInputModule {
|
|
7
|
+
}
|
|
8
|
+
PhoneInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
PhoneInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputModule, declarations: [PhoneInputComponent], imports: [CommonModule,
|
|
10
|
+
FormsModule], exports: [PhoneInputComponent] });
|
|
11
|
+
PhoneInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputModule, imports: [CommonModule,
|
|
12
|
+
FormsModule] });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputModule, decorators: [{
|
|
14
|
+
type: NgModule,
|
|
15
|
+
args: [{
|
|
16
|
+
declarations: [PhoneInputComponent],
|
|
17
|
+
imports: [
|
|
18
|
+
CommonModule,
|
|
19
|
+
FormsModule
|
|
20
|
+
],
|
|
21
|
+
exports: [PhoneInputComponent]
|
|
22
|
+
}]
|
|
23
|
+
}] });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGhvbmUtaW5wdXQvc3JjL2xpYi9waG9uZS1pbnB1dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVU3QyxNQUFNLE9BQU8sZ0JBQWdCOzs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsaUJBUFosbUJBQW1CLGFBRWhDLFlBQVk7UUFDWixXQUFXLGFBRUgsbUJBQW1COytHQUVsQixnQkFBZ0IsWUFMekIsWUFBWTtRQUNaLFdBQVc7NEZBSUYsZ0JBQWdCO2tCQVI1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3FCQUNaO29CQUNELE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFBob25lSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL3Bob25lLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtQaG9uZUlucHV0Q29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1Bob25lSW5wdXRDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQaG9uZUlucHV0TW9kdWxlIHsgfVxyXG5cclxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRpYWwtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9waG9uZS1pbnB1dC9zcmMvbmd4LWRpYWwtaW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of phone-input
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/phone-input.component';
|
|
5
|
+
export * from './lib/phone-input.module';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3Bob25lLWlucHV0L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHBob25lLWlucHV0XHJcbiAqL1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waG9uZS1pbnB1dC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waG9uZS1pbnB1dC5tb2R1bGUnO1xyXG4iXX0=
|