@testgorilla/tgo-ui 2.8.0 → 2.8.2

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.
Files changed (34) hide show
  1. package/components/autocomplete/autocomplete.component.d.ts +15 -1
  2. package/components/checkbox/checkbox.component.d.ts +16 -2
  3. package/components/datepicker/datepicker.component.d.ts +19 -4
  4. package/components/datepicker/datepicker.component.module.d.ts +3 -1
  5. package/components/deprecated-table/deprecated-table.component.d.ts +1 -1
  6. package/components/deprecated-table/deprecated-table.component.module.d.ts +1 -1
  7. package/components/dropdown/dropdown.component.d.ts +15 -1
  8. package/components/field/field.component.d.ts +17 -1
  9. package/components/phone-input/phone-input.component.d.ts +15 -1
  10. package/components/table/table.component.module.d.ts +1 -1
  11. package/components/validation-error/validation-error.component.d.ts +1 -1
  12. package/esm2022/components/autocomplete/autocomplete.component.mjs +21 -3
  13. package/esm2022/components/checkbox/checkbox.component.mjs +22 -4
  14. package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +3 -3
  15. package/esm2022/components/datepicker/datepicker.component.mjs +39 -26
  16. package/esm2022/components/datepicker/datepicker.component.module.mjs +10 -3
  17. package/esm2022/components/deprecated-table/deprecated-table.component.mjs +2 -2
  18. package/esm2022/components/deprecated-table/deprecated-table.component.module.mjs +4 -3
  19. package/esm2022/components/dropdown/dropdown.component.mjs +21 -3
  20. package/esm2022/components/field/field.component.mjs +27 -3
  21. package/esm2022/components/password-criteria/password.component.mjs +1 -1
  22. package/esm2022/components/phone-input/phone-input.component.mjs +22 -4
  23. package/esm2022/components/rating/rating.component.mjs +2 -2
  24. package/esm2022/components/table/table.component.mjs +4 -4
  25. package/esm2022/components/table/table.component.module.mjs +2 -2
  26. package/esm2022/components/validation-error/validation-error.component.mjs +1 -1
  27. package/esm2022/pipes/data-property-getter.mjs +33 -0
  28. package/esm2022/public-api.mjs +2 -2
  29. package/fesm2022/testgorilla-tgo-ui.mjs +159 -46
  30. package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
  31. package/package.json +1 -1
  32. package/public-api.d.ts +1 -1
  33. package/esm2022/components/deprecated-table/pipes/data-property-getter.mjs +0 -33
  34. /package/{components/deprecated-table/pipes → pipes}/data-property-getter.d.ts +0 -0
@@ -116,6 +116,20 @@ export class PhoneInputComponent {
116
116
  * @memberof PhoneInputComponent
117
117
  */
118
118
  this.fullWidth = false;
119
+ /**
120
+ * Hide in build errors for Reactive Forms
121
+ *
122
+ * @type {number}
123
+ * @memberof PhoneInputComponent
124
+ */
125
+ this.hideInBuildErrors = false;
126
+ /**
127
+ * Hide label in errors
128
+ *
129
+ * @type {number}
130
+ * @memberof PhoneInputComponent
131
+ */
132
+ this.hideLabelInErrors = false;
119
133
  /**
120
134
  * The language to be used
121
135
  * @property language
@@ -279,12 +293,12 @@ export class PhoneInputComponent {
279
293
  ev.stopPropagation();
280
294
  }
281
295
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PhoneInputComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.ErrorStateMatcher }, { token: i1.UntypedFormBuilder }, { token: i3.FocusMonitor }, { token: i0.ChangeDetectorRef }, { token: i4.DomSanitizer }, { token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
282
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PhoneInputComponent, selector: "ui-phone-input", inputs: { value: "value", countryList: "countryList", placeholder: "placeholder", disabled: "disabled", required: "required", applicationTheme: "applicationTheme", fullWidth: "fullWidth", errors: "errors", language: "language" }, host: { properties: { "attr.disabled": "this.disabled", "attr.theme": "this.applicationTheme", "id": "this.id", "class.floated": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy" } }, providers: [
296
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PhoneInputComponent, selector: "ui-phone-input", inputs: { value: "value", countryList: "countryList", placeholder: "placeholder", disabled: "disabled", required: "required", applicationTheme: "applicationTheme", fullWidth: "fullWidth", errors: "errors", hideInBuildErrors: "hideInBuildErrors", hideLabelInErrors: "hideLabelInErrors", language: "language" }, host: { properties: { "attr.disabled": "this.disabled", "attr.theme": "this.applicationTheme", "id": "this.id", "class.floated": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy" } }, providers: [
283
297
  {
284
298
  provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,
285
299
  useValue: { overlayPanelClass: 'phone-number-autocomplete' },
286
300
  },
287
- ], viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true, read: ElementRef, static: true }, { propertyName: "select", first: true, predicate: MatSelect, descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<mat-form-field\n [formGroup]=\"form\"\n appearance=\"outline\"\n [color]=\"(errorsLength || (ngControl?.errors && ngControl?.touched )) ? 'warn' : 'accent'\"\n [ngClass]=\"{ disabled: form.disabled || disabled, 'full-width': fullWidth }\"\n>\n <mat-label>{{ 'COMMON.PHONE_NUMBER' | uiTranslate : language }} <span *ngIf=\"required\">*</span></mat-label>\n\n <div matPrefix class=\"country\">\n <button class=\"selected-flag\" matPrefix *ngIf=\"selectedCountry\">\n <img [height]=\"20\" [width]=\"24\" [attr.src]=\"countryFlagSrc + selectedCountry?.alpha2Code?.toLowerCase() + '.svg'\"\n [alt]=\"'Country flag ' + selectedCountry?.alpha2Code?.toLowerCase()\">\n </button>\n <mat-select\n #select\n (selectionChange)=\"onOptionsSelected($event.value)\"\n [value]=\"selectedCountry\"\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'phone-number-select' + ' ' + applicationTheme\"\n [ngClass]=\"{ opened: select.panelOpen }\"\n >\n <mat-select-trigger>{{ selectedCountry?.callingCode }}</mat-select-trigger>\n <mat-option>\n <ngx-mat-select-search\n [formControl]=\"selectFilterCtrl\"\n ngDefaultControl\n placeholderLabel=\"\"\n noEntriesFoundLabel=\"\"\n >\n <ui-icon ngxMatSelectSearchClear size=\"24\" [name]=\"'Close-in-line'\"></ui-icon>\n </ngx-mat-select-search>\n </mat-option>\n <mat-option *ngFor=\"let country of countries$ | async; trackBy: filteredCountryTrackByMethod\" [value]=\"country\">\n <div class=\"country-option\">\n <img [height]=\"20\" [width]=\"24\" [attr.src]=\"countryFlagSrc + country?.alpha2Code?.toLowerCase()! + '.svg'\"\n [alt]=\"'Country flag ' + country?.alpha2Code?.toLowerCase()!\">\n <small>{{ $any([country?.name, '(' + country?.callingCode + ')']) | joinStrings : ' ' }}</small>\n </div>\n </mat-option>\n </mat-select>\n </div>\n\n <input\n (input)=\"onInput(form.get('phone_number')!.value)\"\n formControlName=\"phone_number\"\n (click)=\"disableClick($event)\"\n [ngStyle]=\"{ opacity: disabled ? 0.5 : 1 }\"\n [required]=\"required\"\n matInput\n type=\"text\"\n />\n\n <mat-hint class=\"error\" *ngIf=\"errorsLength || (ngControl?.errors | hasValidationError)\">\n <ng-container *ngIf=\"errorsLength\">\n <div class=\"errors\" *ngFor=\"let error of _errors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-container>\n\n <ui-validation-error [ngControl]=\"ngControl\" [label]=\"'COMMON.PHONE_NUMBER' | uiTranslate : language\" [language]=\"language\"></ui-validation-error>\n\n </mat-hint>\n</mat-form-field>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{display:flex;align-items:center}:host .selected-flag{display:flex;position:relative;margin-right:1rem;align-items:center}:host mat-spinner{padding:0 20px}:host .country{cursor:pointer!important;display:flex;align-items:center;margin:-8px 12px 0 16px}:host .country button{margin:0 8px 0 0;background:transparent;border:unset;padding:0}:host ::ng-deep .mat-mdc-select-trigger{display:flex;gap:8px}:host mat-select{flex:0}:host .mat-mdc-form-field{min-width:320px}:host .mat-mdc-form-field.full-width{width:100%}:host .mat-mdc-form-field.disabled ::ng-deep *{border-color:#d3d3d3;color:#d3d3d3;pointer-events:none}:host .mat-mdc-form-field.disabled ::ng-deep * .mat-mdc-select-arrow{opacity:.1}:host[theme=dark] mat-select ::ng-deep .mat-mdc-select-arrow,:host[theme=light] mat-select ::ng-deep .mat-mdc-select-arrow{background:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2225%22 viewBox%3D%220 0 24 25%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M12 17.025L6 11.025L7.4 9.625L12 14.225L16.6 9.625L18 11.025L12 17.025Z%22 fill%3D%22currentColor%22%2F%3E%3C%2Fsvg%3E\");background-size:cover;width:16px;height:16px}:host[theme=dark] mat-select ::ng-deep .mat-mdc-select-arrow svg,:host[theme=light] mat-select ::ng-deep .mat-mdc-select-arrow svg{display:none}:host[theme=dark] mat-select.opened ::ng-deep .mat-mdc-select-arrow,:host[theme=light] mat-select.opened ::ng-deep .mat-mdc-select-arrow{background:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2225%22 viewBox%3D%220 0 24 25%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M12 9.6249L18 15.6249L16.6 17.0249L12 12.4249L7.4 17.0249L6 15.6249L12 9.6249Z%22 fill%3D%22currentColor%22%2F%3E%3C%2Fsvg%3E\");background-size:cover;width:16px;height:16px}::ng-deep .mat-form-field-appearance-outline mat-select .mat-select-arrow-wrapper{transform:none}::ng-deep .mat-select-panel.phone-number-select{margin-top:36px;margin-left:45px}::ng-deep .mat-select-search-inner{box-shadow:none!important;height:48px;background-color:#fff!important;border-bottom:none!important}::ng-deep .mat-select-search-inner .mat-select-search-inner-row{width:100%}::ng-deep .mat-select-search-inner button.mat-select-search-clear{right:35px}::ng-deep .mat-select-search-inner button.mat-select-search-clear mat-icon{font-size:20px}@media screen and (min-width: 599px){::ng-deep .mat-select-panel.phone-number-select{margin-left:-33px;min-width:510px}::ng-deep .mat-select-search-inner{min-width:calc(100% + 33px)!important}}ngx-mat-select-search ::ng-deep button .mat-mdc-button-persistent-ripple,ngx-mat-select-search ::ng-deep button .mat-ripple,ngx-mat-select-search ::ng-deep button .mat-mdc-button-ripple{display:none}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i6.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "directive", type: i7.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i2.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatSelectSearchComponent, selector: "ngx-mat-select-search", inputs: ["placeholderLabel", "type", "closeIcon", "closeSvgIcon", "noEntriesFoundLabel", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toggleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"] }, { kind: "directive", type: i9.MatSelectSearchClearDirective, selector: "[ngxMatSelectSearchClear]" }, { kind: "component", type: i10.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme"] }, { kind: "component", type: i11.ValidationErrorComponent, selector: "ui-validation-error", inputs: ["ngControl", "label", "applicationTheme", "language"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i12.UiTranslatePipe, name: "uiTranslate" }, { kind: "pipe", type: i13.HasValidationErrorPipe, name: "hasValidationError" }, { kind: "pipe", type: i14.JoinStringsPipe, name: "joinStrings" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
301
+ ], viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true, read: ElementRef, static: true }, { propertyName: "select", first: true, predicate: MatSelect, descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<mat-form-field\n [formGroup]=\"form\"\n appearance=\"outline\"\n [color]=\"(errorsLength || (ngControl?.errors && ngControl?.touched )) ? 'warn' : 'accent'\"\n [ngClass]=\"{ disabled: form.disabled || disabled, 'full-width': fullWidth }\"\n>\n <mat-label>{{ 'COMMON.PHONE_NUMBER' | uiTranslate : language }} <span *ngIf=\"required\">*</span></mat-label>\n\n <div matPrefix class=\"country\">\n <button class=\"selected-flag\" matPrefix *ngIf=\"selectedCountry\">\n <img [height]=\"20\" [width]=\"24\" [attr.src]=\"countryFlagSrc + selectedCountry?.alpha2Code?.toLowerCase() + '.svg'\"\n [alt]=\"'Country flag ' + selectedCountry?.alpha2Code?.toLowerCase()\">\n </button>\n <mat-select\n #select\n (selectionChange)=\"onOptionsSelected($event.value)\"\n [value]=\"selectedCountry\"\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'phone-number-select' + ' ' + applicationTheme\"\n [ngClass]=\"{ opened: select.panelOpen }\"\n >\n <mat-select-trigger>{{ selectedCountry?.callingCode }}</mat-select-trigger>\n <mat-option>\n <ngx-mat-select-search\n [formControl]=\"selectFilterCtrl\"\n ngDefaultControl\n placeholderLabel=\"\"\n noEntriesFoundLabel=\"\"\n >\n <ui-icon ngxMatSelectSearchClear size=\"24\" [name]=\"'Close-in-line'\"></ui-icon>\n </ngx-mat-select-search>\n </mat-option>\n <mat-option *ngFor=\"let country of countries$ | async; trackBy: filteredCountryTrackByMethod\" [value]=\"country\">\n <div class=\"country-option\">\n <img [height]=\"20\" [width]=\"24\" [attr.src]=\"countryFlagSrc + country?.alpha2Code?.toLowerCase()! + '.svg'\"\n [alt]=\"'Country flag ' + country?.alpha2Code?.toLowerCase()!\">\n <small>{{ $any([country?.name, '(' + country?.callingCode + ')']) | joinStrings : ' ' }}</small>\n </div>\n </mat-option>\n </mat-select>\n </div>\n\n <input\n (input)=\"onInput(form.get('phone_number')!.value)\"\n formControlName=\"phone_number\"\n (click)=\"disableClick($event)\"\n [ngStyle]=\"{ opacity: disabled ? 0.5 : 1 }\"\n [required]=\"required\"\n matInput\n type=\"text\"\n />\n\n <mat-hint class=\"error\" *ngIf=\"errorsLength || (ngControl?.errors | hasValidationError)\">\n <ng-container *ngIf=\"errorsLength\">\n <div class=\"errors\" *ngFor=\"let error of _errors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-container>\n\n <ui-validation-error *ngIf=\"ngControl && !hideInBuildErrors\" [ngControl]=\"ngControl\" [label]=\"hideLabelInErrors ? null : ('COMMON.PHONE_NUMBER' | uiTranslate : language)\" [language]=\"language\"></ui-validation-error>\n\n </mat-hint>\n</mat-form-field>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{display:flex;align-items:center}:host .selected-flag{display:flex;position:relative;margin-right:1rem;align-items:center}:host mat-spinner{padding:0 20px}:host .country{cursor:pointer!important;display:flex;align-items:center;margin:-8px 12px 0 16px}:host .country button{margin:0 8px 0 0;background:transparent;border:unset;padding:0}:host ::ng-deep .mat-mdc-select-trigger{display:flex;gap:8px}:host mat-select{flex:0}:host .mat-mdc-form-field{min-width:320px}:host .mat-mdc-form-field.full-width{width:100%}:host .mat-mdc-form-field.disabled ::ng-deep *{border-color:#d3d3d3;color:#d3d3d3;pointer-events:none}:host .mat-mdc-form-field.disabled ::ng-deep * .mat-mdc-select-arrow{opacity:.1}:host[theme=dark] mat-select ::ng-deep .mat-mdc-select-arrow,:host[theme=light] mat-select ::ng-deep .mat-mdc-select-arrow{background:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2225%22 viewBox%3D%220 0 24 25%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M12 17.025L6 11.025L7.4 9.625L12 14.225L16.6 9.625L18 11.025L12 17.025Z%22 fill%3D%22currentColor%22%2F%3E%3C%2Fsvg%3E\");background-size:cover;width:16px;height:16px}:host[theme=dark] mat-select ::ng-deep .mat-mdc-select-arrow svg,:host[theme=light] mat-select ::ng-deep .mat-mdc-select-arrow svg{display:none}:host[theme=dark] mat-select.opened ::ng-deep .mat-mdc-select-arrow,:host[theme=light] mat-select.opened ::ng-deep .mat-mdc-select-arrow{background:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2225%22 viewBox%3D%220 0 24 25%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M12 9.6249L18 15.6249L16.6 17.0249L12 12.4249L7.4 17.0249L6 15.6249L12 9.6249Z%22 fill%3D%22currentColor%22%2F%3E%3C%2Fsvg%3E\");background-size:cover;width:16px;height:16px}::ng-deep .mat-form-field-appearance-outline mat-select .mat-select-arrow-wrapper{transform:none}::ng-deep .mat-select-panel.phone-number-select{margin-top:36px;margin-left:45px}::ng-deep .mat-select-search-inner{box-shadow:none!important;height:48px;background-color:#fff!important;border-bottom:none!important}::ng-deep .mat-select-search-inner .mat-select-search-inner-row{width:100%}::ng-deep .mat-select-search-inner button.mat-select-search-clear{right:35px}::ng-deep .mat-select-search-inner button.mat-select-search-clear mat-icon{font-size:20px}@media screen and (min-width: 599px){::ng-deep .mat-select-panel.phone-number-select{margin-left:-33px;min-width:510px}::ng-deep .mat-select-search-inner{min-width:calc(100% + 33px)!important}}ngx-mat-select-search ::ng-deep button .mat-mdc-button-persistent-ripple,ngx-mat-select-search ::ng-deep button .mat-ripple,ngx-mat-select-search ::ng-deep button .mat-mdc-button-ripple{display:none}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i6.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "directive", type: i7.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i2.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatSelectSearchComponent, selector: "ngx-mat-select-search", inputs: ["placeholderLabel", "type", "closeIcon", "closeSvgIcon", "noEntriesFoundLabel", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toggleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"] }, { kind: "directive", type: i9.MatSelectSearchClearDirective, selector: "[ngxMatSelectSearchClear]" }, { kind: "component", type: i10.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme"] }, { kind: "component", type: i11.ValidationErrorComponent, selector: "ui-validation-error", inputs: ["ngControl", "label", "applicationTheme", "language"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i12.UiTranslatePipe, name: "uiTranslate" }, { kind: "pipe", type: i13.HasValidationErrorPipe, name: "hasValidationError" }, { kind: "pipe", type: i14.JoinStringsPipe, name: "joinStrings" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
288
302
  }
289
303
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PhoneInputComponent, decorators: [{
290
304
  type: Component,
@@ -293,7 +307,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
293
307
  provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,
294
308
  useValue: { overlayPanelClass: 'phone-number-autocomplete' },
295
309
  },
296
- ], template: "<mat-form-field\n [formGroup]=\"form\"\n appearance=\"outline\"\n [color]=\"(errorsLength || (ngControl?.errors && ngControl?.touched )) ? 'warn' : 'accent'\"\n [ngClass]=\"{ disabled: form.disabled || disabled, 'full-width': fullWidth }\"\n>\n <mat-label>{{ 'COMMON.PHONE_NUMBER' | uiTranslate : language }} <span *ngIf=\"required\">*</span></mat-label>\n\n <div matPrefix class=\"country\">\n <button class=\"selected-flag\" matPrefix *ngIf=\"selectedCountry\">\n <img [height]=\"20\" [width]=\"24\" [attr.src]=\"countryFlagSrc + selectedCountry?.alpha2Code?.toLowerCase() + '.svg'\"\n [alt]=\"'Country flag ' + selectedCountry?.alpha2Code?.toLowerCase()\">\n </button>\n <mat-select\n #select\n (selectionChange)=\"onOptionsSelected($event.value)\"\n [value]=\"selectedCountry\"\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'phone-number-select' + ' ' + applicationTheme\"\n [ngClass]=\"{ opened: select.panelOpen }\"\n >\n <mat-select-trigger>{{ selectedCountry?.callingCode }}</mat-select-trigger>\n <mat-option>\n <ngx-mat-select-search\n [formControl]=\"selectFilterCtrl\"\n ngDefaultControl\n placeholderLabel=\"\"\n noEntriesFoundLabel=\"\"\n >\n <ui-icon ngxMatSelectSearchClear size=\"24\" [name]=\"'Close-in-line'\"></ui-icon>\n </ngx-mat-select-search>\n </mat-option>\n <mat-option *ngFor=\"let country of countries$ | async; trackBy: filteredCountryTrackByMethod\" [value]=\"country\">\n <div class=\"country-option\">\n <img [height]=\"20\" [width]=\"24\" [attr.src]=\"countryFlagSrc + country?.alpha2Code?.toLowerCase()! + '.svg'\"\n [alt]=\"'Country flag ' + country?.alpha2Code?.toLowerCase()!\">\n <small>{{ $any([country?.name, '(' + country?.callingCode + ')']) | joinStrings : ' ' }}</small>\n </div>\n </mat-option>\n </mat-select>\n </div>\n\n <input\n (input)=\"onInput(form.get('phone_number')!.value)\"\n formControlName=\"phone_number\"\n (click)=\"disableClick($event)\"\n [ngStyle]=\"{ opacity: disabled ? 0.5 : 1 }\"\n [required]=\"required\"\n matInput\n type=\"text\"\n />\n\n <mat-hint class=\"error\" *ngIf=\"errorsLength || (ngControl?.errors | hasValidationError)\">\n <ng-container *ngIf=\"errorsLength\">\n <div class=\"errors\" *ngFor=\"let error of _errors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-container>\n\n <ui-validation-error [ngControl]=\"ngControl\" [label]=\"'COMMON.PHONE_NUMBER' | uiTranslate : language\" [language]=\"language\"></ui-validation-error>\n\n </mat-hint>\n</mat-form-field>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{display:flex;align-items:center}:host .selected-flag{display:flex;position:relative;margin-right:1rem;align-items:center}:host mat-spinner{padding:0 20px}:host .country{cursor:pointer!important;display:flex;align-items:center;margin:-8px 12px 0 16px}:host .country button{margin:0 8px 0 0;background:transparent;border:unset;padding:0}:host ::ng-deep .mat-mdc-select-trigger{display:flex;gap:8px}:host mat-select{flex:0}:host .mat-mdc-form-field{min-width:320px}:host .mat-mdc-form-field.full-width{width:100%}:host .mat-mdc-form-field.disabled ::ng-deep *{border-color:#d3d3d3;color:#d3d3d3;pointer-events:none}:host .mat-mdc-form-field.disabled ::ng-deep * .mat-mdc-select-arrow{opacity:.1}:host[theme=dark] mat-select ::ng-deep .mat-mdc-select-arrow,:host[theme=light] mat-select ::ng-deep .mat-mdc-select-arrow{background:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2225%22 viewBox%3D%220 0 24 25%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M12 17.025L6 11.025L7.4 9.625L12 14.225L16.6 9.625L18 11.025L12 17.025Z%22 fill%3D%22currentColor%22%2F%3E%3C%2Fsvg%3E\");background-size:cover;width:16px;height:16px}:host[theme=dark] mat-select ::ng-deep .mat-mdc-select-arrow svg,:host[theme=light] mat-select ::ng-deep .mat-mdc-select-arrow svg{display:none}:host[theme=dark] mat-select.opened ::ng-deep .mat-mdc-select-arrow,:host[theme=light] mat-select.opened ::ng-deep .mat-mdc-select-arrow{background:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2225%22 viewBox%3D%220 0 24 25%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M12 9.6249L18 15.6249L16.6 17.0249L12 12.4249L7.4 17.0249L6 15.6249L12 9.6249Z%22 fill%3D%22currentColor%22%2F%3E%3C%2Fsvg%3E\");background-size:cover;width:16px;height:16px}::ng-deep .mat-form-field-appearance-outline mat-select .mat-select-arrow-wrapper{transform:none}::ng-deep .mat-select-panel.phone-number-select{margin-top:36px;margin-left:45px}::ng-deep .mat-select-search-inner{box-shadow:none!important;height:48px;background-color:#fff!important;border-bottom:none!important}::ng-deep .mat-select-search-inner .mat-select-search-inner-row{width:100%}::ng-deep .mat-select-search-inner button.mat-select-search-clear{right:35px}::ng-deep .mat-select-search-inner button.mat-select-search-clear mat-icon{font-size:20px}@media screen and (min-width: 599px){::ng-deep .mat-select-panel.phone-number-select{margin-left:-33px;min-width:510px}::ng-deep .mat-select-search-inner{min-width:calc(100% + 33px)!important}}ngx-mat-select-search ::ng-deep button .mat-mdc-button-persistent-ripple,ngx-mat-select-search ::ng-deep button .mat-ripple,ngx-mat-select-search ::ng-deep button .mat-mdc-button-ripple{display:none}\n"] }]
310
+ ], template: "<mat-form-field\n [formGroup]=\"form\"\n appearance=\"outline\"\n [color]=\"(errorsLength || (ngControl?.errors && ngControl?.touched )) ? 'warn' : 'accent'\"\n [ngClass]=\"{ disabled: form.disabled || disabled, 'full-width': fullWidth }\"\n>\n <mat-label>{{ 'COMMON.PHONE_NUMBER' | uiTranslate : language }} <span *ngIf=\"required\">*</span></mat-label>\n\n <div matPrefix class=\"country\">\n <button class=\"selected-flag\" matPrefix *ngIf=\"selectedCountry\">\n <img [height]=\"20\" [width]=\"24\" [attr.src]=\"countryFlagSrc + selectedCountry?.alpha2Code?.toLowerCase() + '.svg'\"\n [alt]=\"'Country flag ' + selectedCountry?.alpha2Code?.toLowerCase()\">\n </button>\n <mat-select\n #select\n (selectionChange)=\"onOptionsSelected($event.value)\"\n [value]=\"selectedCountry\"\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'phone-number-select' + ' ' + applicationTheme\"\n [ngClass]=\"{ opened: select.panelOpen }\"\n >\n <mat-select-trigger>{{ selectedCountry?.callingCode }}</mat-select-trigger>\n <mat-option>\n <ngx-mat-select-search\n [formControl]=\"selectFilterCtrl\"\n ngDefaultControl\n placeholderLabel=\"\"\n noEntriesFoundLabel=\"\"\n >\n <ui-icon ngxMatSelectSearchClear size=\"24\" [name]=\"'Close-in-line'\"></ui-icon>\n </ngx-mat-select-search>\n </mat-option>\n <mat-option *ngFor=\"let country of countries$ | async; trackBy: filteredCountryTrackByMethod\" [value]=\"country\">\n <div class=\"country-option\">\n <img [height]=\"20\" [width]=\"24\" [attr.src]=\"countryFlagSrc + country?.alpha2Code?.toLowerCase()! + '.svg'\"\n [alt]=\"'Country flag ' + country?.alpha2Code?.toLowerCase()!\">\n <small>{{ $any([country?.name, '(' + country?.callingCode + ')']) | joinStrings : ' ' }}</small>\n </div>\n </mat-option>\n </mat-select>\n </div>\n\n <input\n (input)=\"onInput(form.get('phone_number')!.value)\"\n formControlName=\"phone_number\"\n (click)=\"disableClick($event)\"\n [ngStyle]=\"{ opacity: disabled ? 0.5 : 1 }\"\n [required]=\"required\"\n matInput\n type=\"text\"\n />\n\n <mat-hint class=\"error\" *ngIf=\"errorsLength || (ngControl?.errors | hasValidationError)\">\n <ng-container *ngIf=\"errorsLength\">\n <div class=\"errors\" *ngFor=\"let error of _errors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-container>\n\n <ui-validation-error *ngIf=\"ngControl && !hideInBuildErrors\" [ngControl]=\"ngControl\" [label]=\"hideLabelInErrors ? null : ('COMMON.PHONE_NUMBER' | uiTranslate : language)\" [language]=\"language\"></ui-validation-error>\n\n </mat-hint>\n</mat-form-field>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{display:flex;align-items:center}:host .selected-flag{display:flex;position:relative;margin-right:1rem;align-items:center}:host mat-spinner{padding:0 20px}:host .country{cursor:pointer!important;display:flex;align-items:center;margin:-8px 12px 0 16px}:host .country button{margin:0 8px 0 0;background:transparent;border:unset;padding:0}:host ::ng-deep .mat-mdc-select-trigger{display:flex;gap:8px}:host mat-select{flex:0}:host .mat-mdc-form-field{min-width:320px}:host .mat-mdc-form-field.full-width{width:100%}:host .mat-mdc-form-field.disabled ::ng-deep *{border-color:#d3d3d3;color:#d3d3d3;pointer-events:none}:host .mat-mdc-form-field.disabled ::ng-deep * .mat-mdc-select-arrow{opacity:.1}:host[theme=dark] mat-select ::ng-deep .mat-mdc-select-arrow,:host[theme=light] mat-select ::ng-deep .mat-mdc-select-arrow{background:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2225%22 viewBox%3D%220 0 24 25%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M12 17.025L6 11.025L7.4 9.625L12 14.225L16.6 9.625L18 11.025L12 17.025Z%22 fill%3D%22currentColor%22%2F%3E%3C%2Fsvg%3E\");background-size:cover;width:16px;height:16px}:host[theme=dark] mat-select ::ng-deep .mat-mdc-select-arrow svg,:host[theme=light] mat-select ::ng-deep .mat-mdc-select-arrow svg{display:none}:host[theme=dark] mat-select.opened ::ng-deep .mat-mdc-select-arrow,:host[theme=light] mat-select.opened ::ng-deep .mat-mdc-select-arrow{background:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2225%22 viewBox%3D%220 0 24 25%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M12 9.6249L18 15.6249L16.6 17.0249L12 12.4249L7.4 17.0249L6 15.6249L12 9.6249Z%22 fill%3D%22currentColor%22%2F%3E%3C%2Fsvg%3E\");background-size:cover;width:16px;height:16px}::ng-deep .mat-form-field-appearance-outline mat-select .mat-select-arrow-wrapper{transform:none}::ng-deep .mat-select-panel.phone-number-select{margin-top:36px;margin-left:45px}::ng-deep .mat-select-search-inner{box-shadow:none!important;height:48px;background-color:#fff!important;border-bottom:none!important}::ng-deep .mat-select-search-inner .mat-select-search-inner-row{width:100%}::ng-deep .mat-select-search-inner button.mat-select-search-clear{right:35px}::ng-deep .mat-select-search-inner button.mat-select-search-clear mat-icon{font-size:20px}@media screen and (min-width: 599px){::ng-deep .mat-select-panel.phone-number-select{margin-left:-33px;min-width:510px}::ng-deep .mat-select-search-inner{min-width:calc(100% + 33px)!important}}ngx-mat-select-search ::ng-deep button .mat-mdc-button-persistent-ripple,ngx-mat-select-search ::ng-deep button .mat-ripple,ngx-mat-select-search ::ng-deep button .mat-mdc-button-ripple{display:none}\n"] }]
297
311
  }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
298
312
  type: Optional
299
313
  }, {
@@ -325,6 +339,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
325
339
  type: Input
326
340
  }], errors: [{
327
341
  type: Input
342
+ }], hideInBuildErrors: [{
343
+ type: Input
344
+ }], hideLabelInErrors: [{
345
+ type: Input
328
346
  }], language: [{
329
347
  type: Input
330
348
  }], input: [{
@@ -342,4 +360,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
342
360
  type: HostBinding,
343
361
  args: ['attr.aria-describedby']
344
362
  }] } });
345
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL3Bob25lLWlucHV0L3Bob25lLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9waG9uZS1pbnB1dC9waG9uZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUlMLGtCQUFrQixHQUVuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sS0FBSyxFQUNMLEdBQUcsRUFFSCxTQUFTLEVBQ1QsT0FBTyxFQUNQLElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBZTVFLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUI7Ozs7O09BS0c7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QVc7c0JBRGQsS0FBSztnQkFjTixRQUFRO3NCQUZQLFdBQVc7dUJBQUMsZUFBZTs7c0JBQzNCLEtBQUs7Z0JBU0csUUFBUTtzQkFBaEIsS0FBSztnQkFXTixnQkFBZ0I7c0JBRmYsV0FBVzt1QkFBQyxZQUFZOztzQkFDeEIsS0FBSztnQkFTRyxTQUFTO3NCQUFqQixLQUFLO2dCQVNPLE1BQU07c0JBQWxCLEtBQUs7Z0JBYUcsUUFBUTtzQkFBaEIsS0FBSztnQkFvQkMsS0FBSztzQkFEWCxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHaEQsTUFBTTtzQkFEWixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJeEQsRUFBRTtzQkFERCxXQUFXO2dCQUlSLGdCQUFnQjtzQkFEbkIsV0FBVzt1QkFBQyxlQUFlO2dCQUtVLFdBQVc7c0JBQWhELFdBQVc7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNlbGYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTmdDb250cm9sLFxuICBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcbiAgVW50eXBlZEZvcm1Hcm91cCxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTUFUX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IHBhcnNlUGhvbmVOdW1iZXIgfSBmcm9tICdsaWJwaG9uZW51bWJlci1qcyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGRlYm91bmNlVGltZSxcbiAgZGVsYXksXG4gIGZpbHRlcixcbiAgZmlyc3QsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgc3RhcnRXaXRoLFxuICBTdWJqZWN0LFxuICB0YWtlLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9sb2NhbGl6YXRpb24vbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBVSUNvdW50cnkgfSBmcm9tICcuL3Bob25lLWlucHV0Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktcGhvbmUtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGhvbmUtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9waG9uZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTUFUX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMsXG4gICAgICB1c2VWYWx1ZTogeyBvdmVybGF5UGFuZWxDbGFzczogJ3Bob25lLW51bWJlci1hdXRvY29tcGxldGUnIH0sXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUGhvbmVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRG9DaGVjayB7XG4gIC8qKlxuICAgKiBQaG9uZSBudW1iZXJcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIFBob25lSW5wdXRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pbml0aWFsVmFsdWUgPSB0aGlzLmluaXRpYWxWYWx1ZSB8fCB2YWx1ZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VQaG9uZU51bWJlcih2YWx1ZSk7XG4gICAgICBjb25zdCBmb3JtYXR0ZWQgPSBwYXJzZWQuZm9ybWF0SW50ZXJuYXRpb25hbCgpO1xuICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSB0aGlzLmdldENvdW50cnlCeUFscGhhMkNvZGUocGFyc2VkLmNvdW50cnkhKSB8fCB0aGlzLnNlbGVjdGVkQ291bnRyeTtcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgcGhvbmVfbnVtYmVyOiBmb3JtYXR0ZWQucmVwbGFjZSh0aGlzLnNlbGVjdGVkQ291bnRyeS5jYWxsaW5nQ29kZSwgJycpIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKHZhbHVlPy5sZW5ndGggPD0gNCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IHRoaXMuZ2V0Q291bnRyeUJ5Q2FsbGluZ0NvZGUodmFsdWUpIHx8IHRoaXMuc2VsZWN0ZWRDb3VudHJ5O1xuICAgICAgfVxuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBwaG9uZV9udW1iZXI6IHZhbHVlPy5yZXBsYWNlKHRoaXMuc2VsZWN0ZWRDb3VudHJ5Py5jYWxsaW5nQ29kZSwgJycpIH0pO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ291bnRyeSBsaXN0IGZvciBzZWxlY3RcbiAgICpcbiAgICogQHR5cGUge1VJQ291bnRyeVtdfVxuICAgKiBAbWVtYmVyb2YgUGhvbmVJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc2V0IGNvdW50cnlMaXN0KGNvdW50cnlMaXN0OiBVSUNvdW50cnlbXSkge1xuICAgIHRoaXMubG9hZENvdW50cmllcyQubmV4dChjb3VudHJ5TGlzdCk7XG4gICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSB0aGlzLnNlbGVjdGVkQ291bnRyeSA/PyBjb3VudHJ5TGlzdFswXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlciBpbnB1dFxuICAgKlxuICAgKiBAdHlwZSB7dGV4dH1cbiAgICogQG1lbWJlcm9mIFBob25lSW5wdXRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pbnRlcm5hbFBsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgaW5wdXQgaXMgZGlzYWJsZWRcbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBQaG9uZUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICBASW5wdXQoKVxuICBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5wdXQgaXMgcmVxdWlyZWQgb3Igbm90XG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgUGhvbmVJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqXG4gICAqIERlZmluZXMgdGhlIGFwcGxpY2F0aW9uIHRoZW1lXG4gICAqXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxuICAgKiBAbWVtYmVyb2YgUGhvbmVJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRoZW1lJylcbiAgQElucHV0KClcbiAgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRvciBvZiB0aGUgcGhvbmUgaW5wdXQgd2lkdGhcbiAgICogQHByb3BlcnR5IGZ1bGxXaWR0aFxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIFBob25lSW5wdXRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGZ1bGxXaWR0aCA9IGZhbHNlO1xuXG4gIF9lcnJvcnM6IFNhZmVIdG1sW107XG4gIC8qKlxuICAgKiBJbnB1dCBmaWVsZCBlcnJvcnNcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIFBob25lSW5wdXRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNldCBlcnJvcnMoZXJyb3JzOiBzdHJpbmdbXSkge1xuICAgIGlmIChlcnJvcnMpIHtcbiAgICAgIHRoaXMuX2Vycm9ycyA9IGVycm9ycz8uZmlsdGVyKEJvb2xlYW4pLm1hcChlcnJvciA9PiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChlcnJvcikpO1xuICAgICAgdGhpcy5lcnJvcnNMZW5ndGggPSB0aGlzLnNldEVycm9yc0xlbmd0aCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbGFuZ3VhZ2UgdG8gYmUgdXNlZFxuICAgKiBAcHJvcGVydHkgbGFuZ3VhZ2VcbiAgICogQHR5cGUge0xhbmd1YWdlfVxuICAgKiBAbWVtYmVyb2YgUGhvbmVJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgbGFuZ3VhZ2UgPSBMYW5ndWFnZVNlcnZpY2UuZGVmYXVsdExhbmd1YWdlO1xuXG4gIHN0YXRpYyBuZXh0SWQgPSAwO1xuXG4gIHByaXZhdGUgY291bnRyaWVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVSUNvdW50cnlbXT4oW10pO1xuICBwcm90ZWN0ZWQgY291bnRyaWVzJCA9IHRoaXMuY291bnRyaWVzLmFzT2JzZXJ2YWJsZSgpO1xuICBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgcGhvbmVfbnVtYmVyOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCksXG4gIH0pO1xuICBwcm90ZWN0ZWQgY29udHJvbFR5cGUgPSAncGhvbmUtbnVtYmVyJztcbiAgcHJvdGVjdGVkIHVzZXJBcmlhRGVzY3JpYmVkQnk/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBsb2FkQ291bnRyaWVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VUlDb3VudHJ5W10+KFtdKTtcbiAgcHJvdGVjdGVkIGNvdW50cnlDb2RlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCdVUycpO1xuICBwcm90ZWN0ZWQgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJvdGVjdGVkIGZvY3VzZWQ6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBzZWxlY3RGaWx0ZXJDdHJsID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyk7XG4gIHByb3RlY3RlZCBlcnJvcnNMZW5ndGg6IGJvb2xlYW47XG4gIHByb3RlY3RlZCByZWFkb25seSBjb3VudHJ5RmxhZ1NyYyA9ICdhc3NldHMvc3ZnLWNvdW50cnktZmxhZ3MvJztcblxuICBAVmlld0NoaWxkKE1hdElucHV0LCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgaW5wdXQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKE1hdFNlbGVjdCwgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIHNlbGVjdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQEhvc3RCaW5kaW5nKClcbiAgaWQgPSBgcGhvbmUtbnVtYmVyJHtQaG9uZUlucHV0Q29tcG9uZW50Lm5leHRJZCsrfWA7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mbG9hdGVkJylcbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kZXNjcmliZWRieScpIGRlc2NyaWJlZEJ5ID0gJyc7XG5cbiAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZm9ybS52YWx1ZTtcbiAgfVxuXG4gIGdldCBlcnJvclN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVycm9yTWF0Y2hlci5pc0Vycm9yU3RhdGUodGhpcy5uZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2wsIG51bGwpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TnVtYmVyV2l0aENvdW50cnlDb2RlKCk7XG4gIH1cblxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxQbGFjZWhvbGRlcjtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbFZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9DT1VOVFJZX0NPREUgPSAnVVMnO1xuICBwcml2YXRlIGludGVybmFsUGxhY2Vob2xkZXI6IHN0cmluZztcbiAgcHJvdGVjdGVkIHNlbGVjdGVkQ291bnRyeTogVUlDb3VudHJ5O1xuICBwcml2YXRlIHVuc3Vic2NyaWJlQWxsJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgcHJpdmF0ZSBlcnJvck1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ0NBTk9QWVVJX0RFRkFVTFRfQVBQTElDQVRJT05fVEhFTUUnKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcHBUaGVtZTogQXBwbGljYXRpb25UaGVtZSxcbiAgKSB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cblxuICAgIGlmIChkZWZhdWx0QXBwVGhlbWUpIHtcbiAgICAgIHRoaXMuYXBwbGljYXRpb25UaGVtZSA9IGRlZmF1bHRBcHBUaGVtZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBtYXJrIGNvbXBvbmVudCB2aWV3IGFzIGRpcnR5IHdoZW4gdG91Y2hlZCBwcm9ncmFtbWF0aWNhbGx5IHdpdGggbWFya0FzVG91Y2hlZC9tYXJrQWxsQXNUb3VjaGVkIG9yIGVycm9yc1xuICAgKiB0byBkaXNwbGF5IHZhbGlkYXRpb24gZXJyb3JzIHRoYXQgbWlnaHQgaGFwcGVuIChlLmcuIHJlcXVpcmVkKVxuICAgKi9cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbD8udG91Y2hlZCB8fCB0aGlzLm5nQ29udHJvbD8uZXJyb3JzKSB7XG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRDb3VudHJpZXMoKTtcbiAgICB0aGlzLnByZVNlbGVjdENvdW50cnkoKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvRm9jdXNFdmVudHMoKTtcbiAgfVxuXG4gIHNldEVycm9yc0xlbmd0aCgpOiBib29sZWFuIHtcbiAgICBpZiAoISF0aGlzLl9lcnJvcnMpIHtcbiAgICAgIHJldHVybiB0aGlzLl9lcnJvcnMuZmlsdGVyKGVyciA9PiAhIWVycikubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMudXNlckFyaWFEZXNjcmliZWRCeSA9IGlkcy5qb2luKCcgJyk7XG4gIH1cblxuICBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uVG91Y2g6ICgpID0+IHZvaWQ7XG5cbiAgd3JpdGVWYWx1ZShwaG9uZU51bWJlcjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHBob25lTnVtYmVyKSB7XG4gICAgICB0aGlzLnZhbHVlID0gcGhvbmVOdW1iZXI7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcbiAgICB9XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5pbnB1dCk7XG4gICAgdGhpcy5mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5zZWxlY3QpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy51bnN1YnNjcmliZUFsbCQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmVBbGwkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBvbk9wdGlvbnNTZWxlY3RlZCh2YWx1ZTogVUlDb3VudHJ5KSB7XG4gICAgdGhpcy5zZXRDb3VudHJ5KHZhbHVlKTtcbiAgfVxuXG4gIG9uSW5wdXQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSAodGhpcy5zZWxlY3RlZENvdW50cnk/LmNhbGxpbmdDb2RlID8/ICcnKSArIHZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICBmaWx0ZXJlZENvdW50cnlUcmFja0J5TWV0aG9kKGluZGV4OiBudW1iZXIsIGVsOiBVSUNvdW50cnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBlbC5hbHBoYTJDb2RlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROdW1iZXJXaXRoQ291bnRyeUNvZGUoKSB7XG4gICAgY29uc3QgbmF0aW9uYWxOdW1iZXIgPSB0aGlzLmZvcm0udmFsdWU/LnBob25lX251bWJlciBhcyBzdHJpbmc7XG4gICAgcmV0dXJuIG5hdGlvbmFsTnVtYmVyID8gKHRoaXMuc2VsZWN0ZWRDb3VudHJ5Py5jYWxsaW5nQ29kZSA/PyAnJykgKyBuYXRpb25hbE51bWJlciA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0ZvY3VzRXZlbnRzKCkge1xuICAgIGNvbnN0IHNlbGVjdEFuZElucHV0Rm9jdXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuc2VsZWN0KSxcbiAgICAgIHRoaXMuZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5pbnB1dCksXG4gICAgXSkucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZUFsbCQpLCBkZWJvdW5jZVRpbWUoMTApKTtcblxuICAgIHNlbGVjdEFuZElucHV0Rm9jdXMkLnN1YnNjcmliZSgoW3NlbGVjdEZvY3VzLCBpbnB1dEZvY3VzXSkgPT4ge1xuICAgICAgdGhpcy5mb2N1c2VkID0gISEoc2VsZWN0Rm9jdXMgfHwgaW5wdXRGb2N1cyk7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfSk7XG5cbiAgICBzZWxlY3RBbmRJbnB1dEZvY3VzJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLm9uVG91Y2goKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlU2VsZWN0Q291bnRyeSgpIHtcbiAgICB0aGlzLnNldERpc2FibGVkU3RhdGUodHJ1ZSk7XG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNvdW50cmllcyQucGlwZShcbiAgICAgICAgZmlsdGVyKGNvdW50cmllcyA9PiBjb3VudHJpZXMubGVuZ3RoID4gMCksXG4gICAgICAgIGZpcnN0KClcbiAgICAgICksXG4gICAgICB0aGlzLmNvdW50cnlDb2RlLFxuICAgIF0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChbY291bnRyaWVzLCBzZWxlY3RlZENvdW50cnldKSA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLmluaXRpYWxWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgY291bnRyeSA9XG4gICAgICAgICAgICAgIHRoaXMuZ2V0Q291bnRyeUJ5QWxwaGEyQ29kZShzZWxlY3RlZENvdW50cnkpIHx8IHRoaXMuZ2V0Q291bnRyeUJ5QWxwaGEyQ29kZSh0aGlzLkRFRkFVTFRfQ09VTlRSWV9DT0RFKTtcbiAgICAgICAgICAgIHRoaXMuc2V0Q291bnRyeShjb3VudHJ5IGFzIFVJQ291bnRyeSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmluaXRpYWxWYWx1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUoZmFsc2UpO1xuICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb3VudHJ5KGNvdW50cnk6IFVJQ291bnRyeSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoY291bnRyeSkge1xuICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBjb3VudHJ5O1xuICAgIH1cbiAgICB0aGlzLnZhbHVlID0gdGhpcy5nZXROdW1iZXJXaXRoQ291bnRyeUNvZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q291bnRyeUJ5QWxwaGEyQ29kZShhbHBoYTJDb2RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5jb3VudHJpZXMudmFsdWUuZmluZChjb3VudHJ5ID0+IGNvdW50cnkuYWxwaGEyQ29kZSA9PT0gYWxwaGEyQ29kZSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvdW50cnlCeUNhbGxpbmdDb2RlKGNhbGxpbmdDb2RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5jb3VudHJpZXMudmFsdWUuZmluZChjb3VudHJ5ID0+IGNvdW50cnkuY2FsbGluZ0NvZGUgPT09IGNhbGxpbmdDb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZENvdW50cmllcygpOiB2b2lkIHtcbiAgICBjb25zdCBzZWFyY2hUZXh0JDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5zZWxlY3RGaWx0ZXJDdHJsLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgxMDApLCBzdGFydFdpdGgoJycpKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMubG9hZENvdW50cmllcyQsIHNlYXJjaFRleHQkXSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZUFsbCQpLFxuICAgICAgICB0YXAoKFtjb3VudHJpZXMsIHNlYXJjaFRleHRdKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2VhcmNoVGV4dExvd2VyQ2FzZSA9IHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZENvdW50cmllcyA9IGNvdW50cmllc1xuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgb3B0aW9uID0+XG4gICAgICAgICAgICAgICAgb3B0aW9uLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXh0TG93ZXJDYXNlKSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5hbHBoYTJDb2RlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGV4dExvd2VyQ2FzZSkgfHxcbiAgICAgICAgICAgICAgICBvcHRpb24uY2FsbGluZ0NvZGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXh0TG93ZXJDYXNlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnNvcnQoKG9wdGlvbkEsIG9wdGlvbkIpID0+IChvcHRpb25CLm5hbWUuc3RhcnRzV2l0aChzZWFyY2hUZXh0KSA/IDEgOiAtMSkpO1xuICAgICAgICAgIHRoaXMuY291bnRyaWVzLm5leHQoZmlsdGVyZWRDb3VudHJpZXMpO1xuICAgICAgICB9KSxcbiAgICAgICAgZGVsYXkoMSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY291bnRyeUZvdW5kID0gdGhpcy5nZXRDb3VudHJ5QnlBbHBoYTJDb2RlKHRoaXMuc2VsZWN0ZWRDb3VudHJ5Py5hbHBoYTJDb2RlKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IGNvdW50cnlGb3VuZCB8fCB0aGlzLnNlbGVjdGVkQ291bnRyeTtcbiAgICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGRpc2FibGVDbGljayhldjogRXZlbnQpIHtcbiAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgdHJhY2tCeUZuID0gKGluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnkpID0+IHZhbHVlLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk7XG59XG4iLCI8bWF0LWZvcm0tZmllbGRcbiAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxuICBbY29sb3JdPVwiKGVycm9yc0xlbmd0aCB8fCAobmdDb250cm9sPy5lcnJvcnMgJiYgbmdDb250cm9sPy50b3VjaGVkICkpID8gJ3dhcm4nIDogJ2FjY2VudCdcIlxuICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBmb3JtLmRpc2FibGVkIHx8IGRpc2FibGVkLCAnZnVsbC13aWR0aCc6IGZ1bGxXaWR0aCB9XCJcbj5cbiAgPG1hdC1sYWJlbD57eyAnQ09NTU9OLlBIT05FX05VTUJFUicgfCB1aVRyYW5zbGF0ZSA6IGxhbmd1YWdlIH19IDxzcGFuICpuZ0lmPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbWF0LWxhYmVsPlxuXG4gIDxkaXYgbWF0UHJlZml4IGNsYXNzPVwiY291bnRyeVwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJzZWxlY3RlZC1mbGFnXCIgbWF0UHJlZml4ICpuZ0lmPVwic2VsZWN0ZWRDb3VudHJ5XCI+XG4gICAgICA8aW1nIFtoZWlnaHRdPVwiMjBcIiBbd2lkdGhdPVwiMjRcIiBbYXR0ci5zcmNdPVwiY291bnRyeUZsYWdTcmMgKyBzZWxlY3RlZENvdW50cnk/LmFscGhhMkNvZGU/LnRvTG93ZXJDYXNlKCkgKyAnLnN2ZydcIlxuICAgICAgICAgICBbYWx0XT1cIidDb3VudHJ5IGZsYWcgJyArIHNlbGVjdGVkQ291bnRyeT8uYWxwaGEyQ29kZT8udG9Mb3dlckNhc2UoKVwiPlxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtc2VsZWN0XG4gICAgICAjc2VsZWN0XG4gICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uT3B0aW9uc1NlbGVjdGVkKCRldmVudC52YWx1ZSlcIlxuICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkQ291bnRyeVwiXG4gICAgICBbZGlzYWJsZU9wdGlvbkNlbnRlcmluZ109XCJ0cnVlXCJcbiAgICAgIFtwYW5lbENsYXNzXT1cIidwaG9uZS1udW1iZXItc2VsZWN0JyArICcgJyArIGFwcGxpY2F0aW9uVGhlbWVcIlxuICAgICAgW25nQ2xhc3NdPVwieyBvcGVuZWQ6IHNlbGVjdC5wYW5lbE9wZW4gfVwiXG4gICAgPlxuICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj57eyBzZWxlY3RlZENvdW50cnk/LmNhbGxpbmdDb2RlIH19PC9tYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICA8bWF0LW9wdGlvbj5cbiAgICAgICAgPG5neC1tYXQtc2VsZWN0LXNlYXJjaFxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWxlY3RGaWx0ZXJDdHJsXCJcbiAgICAgICAgICBuZ0RlZmF1bHRDb250cm9sXG4gICAgICAgICAgcGxhY2Vob2xkZXJMYWJlbD1cIlwiXG4gICAgICAgICAgbm9FbnRyaWVzRm91bmRMYWJlbD1cIlwiXG4gICAgICAgID5cbiAgICAgICAgICA8dWktaWNvbiBuZ3hNYXRTZWxlY3RTZWFyY2hDbGVhciBzaXplPVwiMjRcIiBbbmFtZV09XCInQ2xvc2UtaW4tbGluZSdcIj48L3VpLWljb24+XG4gICAgICAgIDwvbmd4LW1hdC1zZWxlY3Qtc2VhcmNoPlxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgY291bnRyeSBvZiBjb3VudHJpZXMkIHwgYXN5bmM7IHRyYWNrQnk6IGZpbHRlcmVkQ291bnRyeVRyYWNrQnlNZXRob2RcIiBbdmFsdWVdPVwiY291bnRyeVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudHJ5LW9wdGlvblwiPlxuICAgICAgICAgICAgPGltZyBbaGVpZ2h0XT1cIjIwXCIgW3dpZHRoXT1cIjI0XCIgW2F0dHIuc3JjXT1cImNvdW50cnlGbGFnU3JjICsgY291bnRyeT8uYWxwaGEyQ29kZT8udG9Mb3dlckNhc2UoKSEgKyAnLnN2ZydcIlxuICAgICAgICAgICAgICAgICBbYWx0XT1cIidDb3VudHJ5IGZsYWcgJyArIGNvdW50cnk/LmFscGhhMkNvZGU/LnRvTG93ZXJDYXNlKCkhXCI+XG4gICAgICAgICAgICA8c21hbGw+e3sgJGFueShbY291bnRyeT8ubmFtZSwgJygnICsgY291bnRyeT8uY2FsbGluZ0NvZGUgKyAnKSddKSB8IGpvaW5TdHJpbmdzIDogJyAnIH19PC9zbWFsbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgIDwvbWF0LXNlbGVjdD5cbiAgPC9kaXY+XG5cbiAgPGlucHV0XG4gICAgKGlucHV0KT1cIm9uSW5wdXQoZm9ybS5nZXQoJ3Bob25lX251bWJlcicpIS52YWx1ZSlcIlxuICAgIGZvcm1Db250cm9sTmFtZT1cInBob25lX251bWJlclwiXG4gICAgKGNsaWNrKT1cImRpc2FibGVDbGljaygkZXZlbnQpXCJcbiAgICBbbmdTdHlsZV09XCJ7IG9wYWNpdHk6IGRpc2FibGVkID8gMC41IDogMSB9XCJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIG1hdElucHV0XG4gICAgdHlwZT1cInRleHRcIlxuICAvPlxuXG4gIDxtYXQtaGludCBjbGFzcz1cImVycm9yXCIgKm5nSWY9XCJlcnJvcnNMZW5ndGggfHwgKG5nQ29udHJvbD8uZXJyb3JzIHwgaGFzVmFsaWRhdGlvbkVycm9yKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlcnJvcnNMZW5ndGhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlcnJvcnNcIiAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgX2Vycm9yczsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgICAgIDx1aS1pY29uIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIiBbbmFtZV09XCInRXJyb3InXCI+PC91aS1pY29uPlxuICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImVycm9yXCI+PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8dWktdmFsaWRhdGlvbi1lcnJvciBbbmdDb250cm9sXT1cIm5nQ29udHJvbFwiIFtsYWJlbF09XCInQ09NTU9OLlBIT05FX05VTUJFUicgfCB1aVRyYW5zbGF0ZSA6IGxhbmd1YWdlXCIgW2xhbmd1YWdlXT1cImxhbmd1YWdlXCI+PC91aS12YWxpZGF0aW9uLWVycm9yPlxuXG4gIDwvbWF0LWhpbnQ+XG48L21hdC1mb3JtLWZpZWxkPlxuIl19
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL3Bob25lLWlucHV0L3Bob25lLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9waG9uZS1pbnB1dC9waG9uZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUlMLGtCQUFrQixHQUVuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sS0FBSyxFQUNMLEdBQUcsRUFFSCxTQUFTLEVBQ1QsT0FBTyxFQUNQLElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBZTVFLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUI7Ozs7O09BS0c7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UUFBUTs7MEJBQUksTUFBTTsyQkFBQyxvQ0FBb0M7NENBL0t0RCxLQUFLO3NCQURSLEtBQUs7Z0JBdUJPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBWUYsV0FBVztzQkFEZCxLQUFLO2dCQWNOLFFBQVE7c0JBRlAsV0FBVzt1QkFBQyxlQUFlOztzQkFDM0IsS0FBSztnQkFTRyxRQUFRO3NCQUFoQixLQUFLO2dCQVdOLGdCQUFnQjtzQkFGZixXQUFXO3VCQUFDLFlBQVk7O3NCQUN4QixLQUFLO2dCQVNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBU08sTUFBTTtzQkFBbEIsS0FBSztnQkFhRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBUUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQVFHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBb0JDLEtBQUs7c0JBRFgsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR2hELE1BQU07c0JBRFosU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXhELEVBQUU7c0JBREQsV0FBVztnQkFJUixnQkFBZ0I7c0JBRG5CLFdBQVc7dUJBQUMsZUFBZTtnQkFLVSxXQUFXO3NCQUFoRCxXQUFXO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEb0NoZWNrLFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBTZWxmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5nQ29udHJvbCxcbiAgVW50eXBlZEZvcm1CdWlsZGVyLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFVudHlwZWRGb3JtR3JvdXAsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1BVF9BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdFNlbGVjdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBwYXJzZVBob25lTnVtYmVyIH0gZnJvbSAnbGlicGhvbmVudW1iZXItanMnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGRlbGF5LFxuICBmaWx0ZXIsXG4gIGZpcnN0LFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIHN0YXJ0V2l0aCxcbiAgU3ViamVjdCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uVGhlbWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBwbGljYXRpb24tdGhlbWUubW9kZWwnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9jYWxpemF0aW9uL2xhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVUlDb3VudHJ5IH0gZnJvbSAnLi9waG9uZS1pbnB1dC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLXBob25lLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Bob25lLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGhvbmUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1BVF9BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TLFxuICAgICAgdXNlVmFsdWU6IHsgb3ZlcmxheVBhbmVsQ2xhc3M6ICdwaG9uZS1udW1iZXItYXV0b2NvbXBsZXRlJyB9LFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFBob25lSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIERvQ2hlY2sge1xuICAvKipcbiAgICogUGhvbmUgbnVtYmVyXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBQaG9uZUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuaW5pdGlhbFZhbHVlID0gdGhpcy5pbml0aWFsVmFsdWUgfHwgdmFsdWU7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlUGhvbmVOdW1iZXIodmFsdWUpO1xuICAgICAgY29uc3QgZm9ybWF0dGVkID0gcGFyc2VkLmZvcm1hdEludGVybmF0aW9uYWwoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gdGhpcy5nZXRDb3VudHJ5QnlBbHBoYTJDb2RlKHBhcnNlZC5jb3VudHJ5ISkgfHwgdGhpcy5zZWxlY3RlZENvdW50cnk7XG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IHBob25lX251bWJlcjogZm9ybWF0dGVkLnJlcGxhY2UodGhpcy5zZWxlY3RlZENvdW50cnkuY2FsbGluZ0NvZGUsICcnKSB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmICh2YWx1ZT8ubGVuZ3RoIDw9IDQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSB0aGlzLmdldENvdW50cnlCeUNhbGxpbmdDb2RlKHZhbHVlKSB8fCB0aGlzLnNlbGVjdGVkQ291bnRyeTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgcGhvbmVfbnVtYmVyOiB2YWx1ZT8ucmVwbGFjZSh0aGlzLnNlbGVjdGVkQ291bnRyeT8uY2FsbGluZ0NvZGUsICcnKSB9KTtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvdW50cnkgbGlzdCBmb3Igc2VsZWN0XG4gICAqXG4gICAqIEB0eXBlIHtVSUNvdW50cnlbXX1cbiAgICogQG1lbWJlcm9mIFBob25lSW5wdXRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNldCBjb3VudHJ5TGlzdChjb3VudHJ5TGlzdDogVUlDb3VudHJ5W10pIHtcbiAgICB0aGlzLmxvYWRDb3VudHJpZXMkLm5leHQoY291bnRyeUxpc3QpO1xuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gdGhpcy5zZWxlY3RlZENvdW50cnkgPz8gY291bnRyeUxpc3RbMF07XG4gIH1cblxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgaW5wdXRcbiAgICpcbiAgICogQHR5cGUge3RleHR9XG4gICAqIEBtZW1iZXJvZiBQaG9uZUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuaW50ZXJuYWxQbGFjZWhvbGRlciA9IHZhbHVlO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGlucHV0IGlzIGRpc2FibGVkXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgUGhvbmVJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcbiAgQElucHV0KClcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElucHV0IGlzIHJlcXVpcmVkIG9yIG5vdFxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIFBob25lSW5wdXRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKlxuICAgKiBEZWZpbmVzIHRoZSBhcHBsaWNhdGlvbiB0aGVtZVxuICAgKlxuICAgKiBAdHlwZSB7QXBwbGljYXRpb25UaGVtZX1cbiAgICogQG1lbWJlcm9mIFBob25lSW5wdXRDb21wb25lbnRcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci50aGVtZScpXG4gIEBJbnB1dCgpXG4gIGFwcGxpY2F0aW9uVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUgPSAnbGlnaHQnO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0b3Igb2YgdGhlIHBob25lIGlucHV0IHdpZHRoXG4gICAqIEBwcm9wZXJ0eSBmdWxsV2lkdGhcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBQaG9uZUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBmdWxsV2lkdGggPSBmYWxzZTtcblxuICBfZXJyb3JzOiBTYWZlSHRtbFtdO1xuICAvKipcbiAgICogSW5wdXQgZmllbGQgZXJyb3JzXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBQaG9uZUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzZXQgZXJyb3JzKGVycm9yczogc3RyaW5nW10pIHtcbiAgICBpZiAoZXJyb3JzKSB7XG4gICAgICB0aGlzLl9lcnJvcnMgPSBlcnJvcnM/LmZpbHRlcihCb29sZWFuKS5tYXAoZXJyb3IgPT4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZXJyb3IpKTtcbiAgICAgIHRoaXMuZXJyb3JzTGVuZ3RoID0gdGhpcy5zZXRFcnJvcnNMZW5ndGgoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGlkZSBpbiBidWlsZCBlcnJvcnMgZm9yIFJlYWN0aXZlIEZvcm1zXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBQaG9uZUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBoaWRlSW5CdWlsZEVycm9ycyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBIaWRlIGxhYmVsIGluIGVycm9yc1xuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAbWVtYmVyb2YgUGhvbmVJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgaGlkZUxhYmVsSW5FcnJvcnMgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGxhbmd1YWdlIHRvIGJlIHVzZWRcbiAgICogQHByb3BlcnR5IGxhbmd1YWdlXG4gICAqIEB0eXBlIHtMYW5ndWFnZX1cbiAgICogQG1lbWJlcm9mIFBob25lSW5wdXRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGxhbmd1YWdlID0gTGFuZ3VhZ2VTZXJ2aWNlLmRlZmF1bHRMYW5ndWFnZTtcblxuICBzdGF0aWMgbmV4dElkID0gMDtcblxuICBwcml2YXRlIGNvdW50cmllcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VUlDb3VudHJ5W10+KFtdKTtcbiAgcHJvdGVjdGVkIGNvdW50cmllcyQgPSB0aGlzLmNvdW50cmllcy5hc09ic2VydmFibGUoKTtcbiAgZm9ybTogVW50eXBlZEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgIHBob25lX251bWJlcjogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpLFxuICB9KTtcbiAgcHJvdGVjdGVkIGNvbnRyb2xUeXBlID0gJ3Bob25lLW51bWJlcic7XG4gIHByb3RlY3RlZCB1c2VyQXJpYURlc2NyaWJlZEJ5Pzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgbG9hZENvdW50cmllcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVJQ291bnRyeVtdPihbXSk7XG4gIHByb3RlY3RlZCBjb3VudHJ5Q29kZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignVVMnKTtcbiAgcHJvdGVjdGVkIHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByb3RlY3RlZCBmb2N1c2VkOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgc2VsZWN0RmlsdGVyQ3RybCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpO1xuICBwcm90ZWN0ZWQgZXJyb3JzTGVuZ3RoOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY291bnRyeUZsYWdTcmMgPSAnYXNzZXRzL3N2Zy1jb3VudHJ5LWZsYWdzLyc7XG5cbiAgQFZpZXdDaGlsZChNYXRJbnB1dCwgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIGlucHV0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChNYXRTZWxlY3QsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyBzZWxlY3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBIb3N0QmluZGluZygpXG4gIGlkID0gYHBob25lLW51bWJlciR7UGhvbmVJbnB1dENvbXBvbmVudC5uZXh0SWQrK31gO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZmxvYXRlZCcpXG4gIGdldCBzaG91bGRMYWJlbEZsb2F0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpYmVkYnknKSBkZXNjcmliZWRCeSA9ICcnO1xuXG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmZvcm0udmFsdWU7XG4gIH1cblxuICBnZXQgZXJyb3JTdGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvck1hdGNoZXIuaXNFcnJvclN0YXRlKHRoaXMubmdDb250cm9sLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sLCBudWxsKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldE51bWJlcldpdGhDb3VudHJ5Q29kZSgpO1xuICB9XG5cbiAgZ2V0IHBsYWNlaG9sZGVyKCkge1xuICAgIHJldHVybiB0aGlzLmludGVybmFsUGxhY2Vob2xkZXI7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxWYWx1ZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfQ09VTlRSWV9DT0RFID0gJ1VTJztcbiAgcHJpdmF0ZSBpbnRlcm5hbFBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBzZWxlY3RlZENvdW50cnk6IFVJQ291bnRyeTtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZUFsbCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIHByaXZhdGUgZXJyb3JNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcbiAgICBwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KCdDQU5PUFlVSV9ERUZBVUxUX0FQUExJQ0FUSU9OX1RIRU1FJykgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0QXBwVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUsXG4gICkge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICBpZiAoZGVmYXVsdEFwcFRoZW1lKSB7XG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSBkZWZhdWx0QXBwVGhlbWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWFyayBjb21wb25lbnQgdmlldyBhcyBkaXJ0eSB3aGVuIHRvdWNoZWQgcHJvZ3JhbW1hdGljYWxseSB3aXRoIG1hcmtBc1RvdWNoZWQvbWFya0FsbEFzVG91Y2hlZCBvciBlcnJvcnNcbiAgICogdG8gZGlzcGxheSB2YWxpZGF0aW9uIGVycm9ycyB0aGF0IG1pZ2h0IGhhcHBlbiAoZS5nLiByZXF1aXJlZClcbiAgICovXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LnRvdWNoZWQgfHwgdGhpcy5uZ0NvbnRyb2w/LmVycm9ycykge1xuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkQ291bnRyaWVzKCk7XG4gICAgdGhpcy5wcmVTZWxlY3RDb3VudHJ5KCk7XG4gICAgdGhpcy5zdWJzY3JpYmVUb0ZvY3VzRXZlbnRzKCk7XG4gIH1cblxuICBzZXRFcnJvcnNMZW5ndGgoKTogYm9vbGVhbiB7XG4gICAgaWYgKCEhdGhpcy5fZXJyb3JzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZXJyb3JzLmZpbHRlcihlcnIgPT4gISFlcnIpLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJBcmlhRGVzY3JpYmVkQnkgPSBpZHMuam9pbignICcpO1xuICB9XG5cbiAgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBvblRvdWNoOiAoKSA9PiB2b2lkO1xuXG4gIHdyaXRlVmFsdWUocGhvbmVOdW1iZXI6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChwaG9uZU51bWJlcikge1xuICAgICAgdGhpcy52YWx1ZSA9IHBob25lTnVtYmVyO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm0uZW5hYmxlKCk7XG4gICAgfVxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuaW5wdXQpO1xuICAgIHRoaXMuZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuc2VsZWN0KTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmVBbGwkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgb25PcHRpb25zU2VsZWN0ZWQodmFsdWU6IFVJQ291bnRyeSkge1xuICAgIHRoaXMuc2V0Q291bnRyeSh2YWx1ZSk7XG4gIH1cblxuICBvbklucHV0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gKHRoaXMuc2VsZWN0ZWRDb3VudHJ5Py5jYWxsaW5nQ29kZSA/PyAnJykgKyB2YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgZmlsdGVyZWRDb3VudHJ5VHJhY2tCeU1ldGhvZChpbmRleDogbnVtYmVyLCBlbDogVUlDb3VudHJ5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZWwuYWxwaGEyQ29kZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TnVtYmVyV2l0aENvdW50cnlDb2RlKCkge1xuICAgIGNvbnN0IG5hdGlvbmFsTnVtYmVyID0gdGhpcy5mb3JtLnZhbHVlPy5waG9uZV9udW1iZXIgYXMgc3RyaW5nO1xuICAgIHJldHVybiBuYXRpb25hbE51bWJlciA/ICh0aGlzLnNlbGVjdGVkQ291bnRyeT8uY2FsbGluZ0NvZGUgPz8gJycpICsgbmF0aW9uYWxOdW1iZXIgOiAnJztcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9Gb2N1c0V2ZW50cygpIHtcbiAgICBjb25zdCBzZWxlY3RBbmRJbnB1dEZvY3VzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLnNlbGVjdCksXG4gICAgICB0aGlzLmZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuaW5wdXQpLFxuICAgIF0pLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVBbGwkKSwgZGVib3VuY2VUaW1lKDEwKSk7XG5cbiAgICBzZWxlY3RBbmRJbnB1dEZvY3VzJC5zdWJzY3JpYmUoKFtzZWxlY3RGb2N1cywgaW5wdXRGb2N1c10pID0+IHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9ICEhKHNlbGVjdEZvY3VzIHx8IGlucHV0Rm9jdXMpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH0pO1xuXG4gICAgc2VsZWN0QW5kSW5wdXRGb2N1cyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByZVNlbGVjdENvdW50cnkoKSB7XG4gICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKHRydWUpO1xuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5jb3VudHJpZXMkLnBpcGUoXG4gICAgICAgIGZpbHRlcihjb3VudHJpZXMgPT4gY291bnRyaWVzLmxlbmd0aCA+IDApLFxuICAgICAgICBmaXJzdCgpXG4gICAgICApLFxuICAgICAgdGhpcy5jb3VudHJ5Q29kZSxcbiAgICBdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoW2NvdW50cmllcywgc2VsZWN0ZWRDb3VudHJ5XSkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5pbml0aWFsVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvdW50cnkgPVxuICAgICAgICAgICAgICB0aGlzLmdldENvdW50cnlCeUFscGhhMkNvZGUoc2VsZWN0ZWRDb3VudHJ5KSB8fCB0aGlzLmdldENvdW50cnlCeUFscGhhMkNvZGUodGhpcy5ERUZBVUxUX0NPVU5UUllfQ09ERSk7XG4gICAgICAgICAgICB0aGlzLnNldENvdW50cnkoY291bnRyeSBhcyBVSUNvdW50cnkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5pbml0aWFsVmFsdWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q291bnRyeShjb3VudHJ5OiBVSUNvdW50cnkgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKGNvdW50cnkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gY291bnRyeTtcbiAgICB9XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0TnVtYmVyV2l0aENvdW50cnlDb2RlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldENvdW50cnlCeUFscGhhMkNvZGUoYWxwaGEyQ29kZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuY291bnRyaWVzLnZhbHVlLmZpbmQoY291bnRyeSA9PiBjb3VudHJ5LmFscGhhMkNvZGUgPT09IGFscGhhMkNvZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb3VudHJ5QnlDYWxsaW5nQ29kZShjYWxsaW5nQ29kZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuY291bnRyaWVzLnZhbHVlLmZpbmQoY291bnRyeSA9PiBjb3VudHJ5LmNhbGxpbmdDb2RlID09PSBjYWxsaW5nQ29kZSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRDb3VudHJpZXMoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VhcmNoVGV4dCQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMuc2VsZWN0RmlsdGVyQ3RybC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMTAwKSwgc3RhcnRXaXRoKCcnKSk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmxvYWRDb3VudHJpZXMkLCBzZWFyY2hUZXh0JF0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVBbGwkKSxcbiAgICAgICAgdGFwKChbY291bnRyaWVzLCBzZWFyY2hUZXh0XSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlYXJjaFRleHRMb3dlckNhc2UgPSBzZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRDb3VudHJpZXMgPSBjb3VudHJpZXNcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgIG9wdGlvbiA9PlxuICAgICAgICAgICAgICAgIG9wdGlvbi5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGV4dExvd2VyQ2FzZSkgfHxcbiAgICAgICAgICAgICAgICBvcHRpb24uYWxwaGEyQ29kZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRleHRMb3dlckNhc2UpIHx8XG4gICAgICAgICAgICAgICAgb3B0aW9uLmNhbGxpbmdDb2RlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGV4dExvd2VyQ2FzZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zb3J0KChvcHRpb25BLCBvcHRpb25CKSA9PiAob3B0aW9uQi5uYW1lLnN0YXJ0c1dpdGgoc2VhcmNoVGV4dCkgPyAxIDogLTEpKTtcbiAgICAgICAgICB0aGlzLmNvdW50cmllcy5uZXh0KGZpbHRlcmVkQ291bnRyaWVzKTtcbiAgICAgICAgfSksXG4gICAgICAgIGRlbGF5KDEpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvdW50cnlGb3VuZCA9IHRoaXMuZ2V0Q291bnRyeUJ5QWxwaGEyQ29kZSh0aGlzLnNlbGVjdGVkQ291bnRyeT8uYWxwaGEyQ29kZSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBjb3VudHJ5Rm91bmQgfHwgdGhpcy5zZWxlY3RlZENvdW50cnk7XG4gICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBkaXNhYmxlQ2xpY2soZXY6IEV2ZW50KSB7XG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHRyYWNrQnlGbiA9IChpbmRleDogbnVtYmVyLCB2YWx1ZTogYW55KSA9PiB2YWx1ZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5O1xufVxuIiwiPG1hdC1mb3JtLWZpZWxkXG4gIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCJcbiAgW2NvbG9yXT1cIihlcnJvcnNMZW5ndGggfHwgKG5nQ29udHJvbD8uZXJyb3JzICYmIG5nQ29udHJvbD8udG91Y2hlZCApKSA/ICd3YXJuJyA6ICdhY2NlbnQnXCJcbiAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZm9ybS5kaXNhYmxlZCB8fCBkaXNhYmxlZCwgJ2Z1bGwtd2lkdGgnOiBmdWxsV2lkdGggfVwiXG4+XG4gIDxtYXQtbGFiZWw+e3sgJ0NPTU1PTi5QSE9ORV9OVU1CRVInIHwgdWlUcmFuc2xhdGUgOiBsYW5ndWFnZSB9fSA8c3BhbiAqbmdJZj1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L21hdC1sYWJlbD5cblxuICA8ZGl2IG1hdFByZWZpeCBjbGFzcz1cImNvdW50cnlcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwic2VsZWN0ZWQtZmxhZ1wiIG1hdFByZWZpeCAqbmdJZj1cInNlbGVjdGVkQ291bnRyeVwiPlxuICAgICAgPGltZyBbaGVpZ2h0XT1cIjIwXCIgW3dpZHRoXT1cIjI0XCIgW2F0dHIuc3JjXT1cImNvdW50cnlGbGFnU3JjICsgc2VsZWN0ZWRDb3VudHJ5Py5hbHBoYTJDb2RlPy50b0xvd2VyQ2FzZSgpICsgJy5zdmcnXCJcbiAgICAgICAgICAgW2FsdF09XCInQ291bnRyeSBmbGFnICcgKyBzZWxlY3RlZENvdW50cnk/LmFscGhhMkNvZGU/LnRvTG93ZXJDYXNlKClcIj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bWF0LXNlbGVjdFxuICAgICAgI3NlbGVjdFxuICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbk9wdGlvbnNTZWxlY3RlZCgkZXZlbnQudmFsdWUpXCJcbiAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZENvdW50cnlcIlxuICAgICAgW2Rpc2FibGVPcHRpb25DZW50ZXJpbmddPVwidHJ1ZVwiXG4gICAgICBbcGFuZWxDbGFzc109XCIncGhvbmUtbnVtYmVyLXNlbGVjdCcgKyAnICcgKyBhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgb3BlbmVkOiBzZWxlY3QucGFuZWxPcGVuIH1cIlxuICAgID5cbiAgICAgIDxtYXQtc2VsZWN0LXRyaWdnZXI+e3sgc2VsZWN0ZWRDb3VudHJ5Py5jYWxsaW5nQ29kZSB9fTwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuICAgICAgPG1hdC1vcHRpb24+XG4gICAgICAgIDxuZ3gtbWF0LXNlbGVjdC1zZWFyY2hcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VsZWN0RmlsdGVyQ3RybFwiXG4gICAgICAgICAgbmdEZWZhdWx0Q29udHJvbFxuICAgICAgICAgIHBsYWNlaG9sZGVyTGFiZWw9XCJcIlxuICAgICAgICAgIG5vRW50cmllc0ZvdW5kTGFiZWw9XCJcIlxuICAgICAgICA+XG4gICAgICAgICAgPHVpLWljb24gbmd4TWF0U2VsZWN0U2VhcmNoQ2xlYXIgc2l6ZT1cIjI0XCIgW25hbWVdPVwiJ0Nsb3NlLWluLWxpbmUnXCI+PC91aS1pY29uPlxuICAgICAgICA8L25neC1tYXQtc2VsZWN0LXNlYXJjaD5cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGNvdW50cnkgb2YgY291bnRyaWVzJCB8IGFzeW5jOyB0cmFja0J5OiBmaWx0ZXJlZENvdW50cnlUcmFja0J5TWV0aG9kXCIgW3ZhbHVlXT1cImNvdW50cnlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRyeS1vcHRpb25cIj5cbiAgICAgICAgICAgIDxpbWcgW2hlaWdodF09XCIyMFwiIFt3aWR0aF09XCIyNFwiIFthdHRyLnNyY109XCJjb3VudHJ5RmxhZ1NyYyArIGNvdW50cnk/LmFscGhhMkNvZGU/LnRvTG93ZXJDYXNlKCkhICsgJy5zdmcnXCJcbiAgICAgICAgICAgICAgICAgW2FsdF09XCInQ291bnRyeSBmbGFnICcgKyBjb3VudHJ5Py5hbHBoYTJDb2RlPy50b0xvd2VyQ2FzZSgpIVwiPlxuICAgICAgICAgICAgPHNtYWxsPnt7ICRhbnkoW2NvdW50cnk/Lm5hbWUsICcoJyArIGNvdW50cnk/LmNhbGxpbmdDb2RlICsgJyknXSkgfCBqb2luU3RyaW5ncyA6ICcgJyB9fTwvc21hbGw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gIDwvZGl2PlxuXG4gIDxpbnB1dFxuICAgIChpbnB1dCk9XCJvbklucHV0KGZvcm0uZ2V0KCdwaG9uZV9udW1iZXInKSEudmFsdWUpXCJcbiAgICBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZV9udW1iZXJcIlxuICAgIChjbGljayk9XCJkaXNhYmxlQ2xpY2soJGV2ZW50KVwiXG4gICAgW25nU3R5bGVdPVwieyBvcGFjaXR5OiBkaXNhYmxlZCA/IDAuNSA6IDEgfVwiXG4gICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBtYXRJbnB1dFxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgLz5cblxuICA8bWF0LWhpbnQgY2xhc3M9XCJlcnJvclwiICpuZ0lmPVwiZXJyb3JzTGVuZ3RoIHx8IChuZ0NvbnRyb2w/LmVycm9ycyB8IGhhc1ZhbGlkYXRpb25FcnJvcilcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JzTGVuZ3RoXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JzXCIgKm5nRm9yPVwibGV0IGVycm9yIG9mIF9lcnJvcnM7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiJ0Vycm9yJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJlcnJvclwiPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPHVpLXZhbGlkYXRpb24tZXJyb3IgKm5nSWY9XCJuZ0NvbnRyb2wgJiYgIWhpZGVJbkJ1aWxkRXJyb3JzXCIgW25nQ29udHJvbF09XCJuZ0NvbnRyb2xcIiBbbGFiZWxdPVwiaGlkZUxhYmVsSW5FcnJvcnMgPyBudWxsIDogKCdDT01NT04uUEhPTkVfTlVNQkVSJyB8IHVpVHJhbnNsYXRlIDogbGFuZ3VhZ2UpXCIgW2xhbmd1YWdlXT1cImxhbmd1YWdlXCI+PC91aS12YWxpZGF0aW9uLWVycm9yPlxuXG4gIDwvbWF0LWhpbnQ+XG48L21hdC1mb3JtLWZpZWxkPlxuIl19
@@ -53,7 +53,7 @@ export class RatingComponent {
53
53
  this.length = this.DEFAULT_LENGTH;
54
54
  }
55
55
  select(index) {
56
- this.value = index + 1;
56
+ this.value = this.value === index + 1 ? 0 : index + 1;
57
57
  this.valueChange.emit(this.value);
58
58
  }
59
59
  onHover(index) {
@@ -89,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
89
89
  }], valueChange: [{
90
90
  type: Output
91
91
  }] } });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9yYXRpbmcvcmF0aW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9yYXRpbmcvcmF0aW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVdsSCxNQUFNLE9BQU8sZUFBZTtJQTJEMUIsSUFBYSxNQUFNLENBQUMsTUFBYztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDbEQsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUNQLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFJRCxZQUM2RSxlQUFpQztRQUFqQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFuRTdGLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUMxQixVQUFLLEdBQWEsRUFBRSxDQUFDO1FBRy9COzs7Ozs7V0FNRztRQUNNLHFCQUFnQixHQUFxQixPQUFPLENBQUM7UUFTdEQ7Ozs7V0FJRztRQUNNLFVBQUssR0FBeUIsT0FBTyxDQUFDO1FBRS9DOzs7O1dBSUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBVTFCOzs7OztXQUtHO1FBQ00saUJBQVksR0FBRyxLQUFLLENBQUM7UUFFOUI7Ozs7V0FJRztRQUNNLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFRYixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFLakQsSUFBSSxlQUFlLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztTQUN6QztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUVwQyxDQUFDO0lBRVMsTUFBTSxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRVMsT0FBTyxDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7K0dBcEZVLGVBQWUsa0JBb0VKLG9DQUFvQzttR0FwRS9DLGVBQWUsZ1NDWDVCLCtsQ0ErQkE7OzRGRHBCYSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLFdBQVcsbUJBR0osdUJBQXVCLENBQUMsTUFBTTs7MEJBc0U1QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG9DQUFvQzs0Q0F2RGpELGdCQUFnQjtzQkFBeEIsS0FBSztnQkFPRyxLQUFLO3NCQUFiLEtBQUs7Z0JBT0csS0FBSztzQkFBYixLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBUUcsU0FBUztzQkFBakIsS0FBSztnQkFRRyxZQUFZO3NCQUFwQixLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRU8sTUFBTTtzQkFBbEIsS0FBSztnQkFNSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcblxuZXhwb3J0IHR5cGUgUmF0aW5nQ29tcG9uZW50VGhlbWUgPSAnc3RhcnMnIHwgJ2Jsb2NrJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktcmF0aW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhdGluZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JhdGluZy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUmF0aW5nQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBNSU5fTEVOR1RIID0gMDtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0xFTkdUSCA9IDU7XG4gIHByb3RlY3RlZCBpdGVtczogbnVtYmVyW10gPSBbXTtcbiAgcHJvdGVjdGVkIGhvdmVySW5kZXg6IG51bWJlcjtcblxuICAvKipcbiAgICpcbiAgICogRGVmaW5lcyB0aGUgYXBwbGljYXRpb24gdGhlbWUgd2hlcmUgYWNjb3JkaW9uIGlzIHVzZWRcbiAgICpcbiAgICogQHR5cGUge0FwcGxpY2F0aW9uVGhlbWV9XG4gICAqIEBtZW1iZXJvZiBBY2NvcmRpb25Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUgPSAnbGlnaHQnO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSByYXRpbmcuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBSYXRpbmdDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHZhbHVlOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0aGVtZSBvZiB0aGUgcmF0aW5nIGNvbXBvbmVudC4gRGVmYXVsdHMgXCJibG9ja1wiLlxuICAgKiBAdHlwZSB7UmF0aW5nQ29tcG9uZW50VGhlbWV9XG4gICAqIEBtZW1iZXJvZiBSYXRpbmdDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHRoZW1lOiBSYXRpbmdDb21wb25lbnRUaGVtZSA9ICdibG9jayc7XG5cbiAgLyoqXG4gICAqIEEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHJhdGluZyBjb21wb25lbnQgaXMgZGlzYWJsZWQuXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgUmF0aW5nQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgbGFiZWwgZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAqIFRoaXMgbGFiZWwgaXMgdXNlZCB0byBwcm92aWRlIGFuIGFjY2Vzc2libGUgbmFtZSBmb3IgdGhlIGlucHV0IGVsZW1lbnQuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBSYXRpbmdDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgcmVxdWlyZW1lbnQgZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAqIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgdG8gaW5kaWNhdGUgd2hldGhlciBhbiBpbnB1dCBmaWVsZCBpcyByZXF1aXJlZCBmb3IgZm9ybSBzdWJtaXNzaW9uLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIFJhdGluZ0NvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXJpYVJlcXVpcmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSB3aWR0aCBvZiB0aGUgcmF0aW5nIGJhci5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIFJhdGluZ0NvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYmFyV2lkdGggPSAzNTtcblxuICBASW5wdXQoKSBzZXQgbGVuZ3RoKGxlbmd0aDogbnVtYmVyKSB7XG4gICAgdGhpcy5pdGVtcyA9IEFycmF5KE1hdGgubWF4KGxlbmd0aCwgdGhpcy5NSU5fTEVOR1RIKSlcbiAgICAgIC5maWxsKDApXG4gICAgICAubWFwKCh4LCBpKSA9PiBpKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ0NBTk9QWVVJX0RFRkFVTFRfQVBQTElDQVRJT05fVEhFTUUnKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcHBUaGVtZTogQXBwbGljYXRpb25UaGVtZSxcbiAgKSB7XG4gICAgaWYgKGRlZmF1bHRBcHBUaGVtZSkge1xuICAgICAgdGhpcy5hcHBsaWNhdGlvblRoZW1lID0gZGVmYXVsdEFwcFRoZW1lO1xuICAgIH1cbiAgICB0aGlzLmxlbmd0aCA9IHRoaXMuREVGQVVMVF9MRU5HVEg7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3QoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBpbmRleCArIDE7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uSG92ZXIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuaG92ZXJJbmRleCA9IGluZGV4ICsgMTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJhdGluZ1wiXG4gICAgIChtb3VzZWxlYXZlKT1cIm9uSG92ZXIoLTEpXCJcbiAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImFyaWFSZXF1aXJlZFwiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aGVtZSA9PT0gJ2Jsb2NrJztlbHNlIHN0YXJzXCI+XG4gICAgPGRpdiBjbGFzcz1cInJhdGluZy1pdGVtXCIgW2F0dHIudGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCIgKGNsaWNrKT1cInNlbGVjdChpdGVtKVwiIChtb3VzZWVudGVyKT1cIm9uSG92ZXIoaXRlbSlcIlxuICAgICAgICAgW25nQ2xhc3NdPVwieyAncmF0aW5nLWl0ZW0tc2VsZWN0ZWQnOiBpdGVtIDwgdmFsdWUsICdyYXRpbmctaXRlbS1ob3Zlcic6IGl0ZW0gPCBob3ZlckluZGV4IH1cIlxuICAgICAgICAgW25nU3R5bGVdPVwieyd3aWR0aC5weCc6IGJhcldpZHRofVwiPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI3N0YXJzPlxuICAgIDxkaXYgY2xhc3M9XCJzdGFyLWNvbnRhaW5lclwiIFthdHRyLnRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzdGFyXCJcbiAgICAgICAgW3RhYkluZGV4XT1cIjBcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJvbkhvdmVyKGl0ZW0pXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Ib3ZlcigtMSlcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgZmlsbGVkOiB2YWx1ZSA+IGksXG4gICAgICAgICAgaG92ZXI6IGl0ZW0gPCBob3ZlckluZGV4ICYmICh2YWx1ZSA/IGl0ZW0gPj0gdmFsdWUgOiB0cnVlKSxcbiAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAnZmlsbGVkLWhhbGYnOiBpICsgMSB8IGhhbGZTdGFyIDogdmFsdWVcbiAgICAgICAgfVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBpbmRleCBhcyBpXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdChpdGVtKVwiXG4gICAgICA+PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9yYXRpbmcvcmF0aW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9yYXRpbmcvcmF0aW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVdsSCxNQUFNLE9BQU8sZUFBZTtJQTJEMUIsSUFBYSxNQUFNLENBQUMsTUFBYztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDbEQsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUNQLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFJRCxZQUM2RSxlQUFpQztRQUFqQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFuRTdGLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUMxQixVQUFLLEdBQWEsRUFBRSxDQUFDO1FBRy9COzs7Ozs7V0FNRztRQUNNLHFCQUFnQixHQUFxQixPQUFPLENBQUM7UUFTdEQ7Ozs7V0FJRztRQUNNLFVBQUssR0FBeUIsT0FBTyxDQUFDO1FBRS9DOzs7O1dBSUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBVTFCOzs7OztXQUtHO1FBQ00saUJBQVksR0FBRyxLQUFLLENBQUM7UUFFOUI7Ozs7V0FJRztRQUNNLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFRYixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFLakQsSUFBSSxlQUFlLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztTQUN6QztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUVwQyxDQUFDO0lBRVMsTUFBTSxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVTLE9BQU8sQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDOytHQXBGVSxlQUFlLGtCQW9FSixvQ0FBb0M7bUdBcEUvQyxlQUFlLGdTQ1g1QiwrbENBK0JBOzs0RkRwQmEsZUFBZTtrQkFOM0IsU0FBUzsrQkFDRSxXQUFXLG1CQUdKLHVCQUF1QixDQUFDLE1BQU07OzBCQXNFNUMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxvQ0FBb0M7NENBdkRqRCxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBT0csS0FBSztzQkFBYixLQUFLO2dCQU9HLEtBQUs7c0JBQWIsS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQVFHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBUUcsWUFBWTtzQkFBcEIsS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVPLE1BQU07c0JBQWxCLEtBQUs7Z0JBTUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XG5cbmV4cG9ydCB0eXBlIFJhdGluZ0NvbXBvbmVudFRoZW1lID0gJ3N0YXJzJyB8ICdibG9jayc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLXJhdGluZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYXRpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYXRpbmcuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFJhdGluZ0NvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgTUlOX0xFTkdUSCA9IDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9MRU5HVEggPSA1O1xuICBwcm90ZWN0ZWQgaXRlbXM6IG51bWJlcltdID0gW107XG4gIHByb3RlY3RlZCBob3ZlckluZGV4OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqXG4gICAqIERlZmluZXMgdGhlIGFwcGxpY2F0aW9uIHRoZW1lIHdoZXJlIGFjY29yZGlvbiBpcyB1c2VkXG4gICAqXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxuICAgKiBAbWVtYmVyb2YgQWNjb3JkaW9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcHBsaWNhdGlvblRoZW1lOiBBcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcblxuICAvKipcbiAgICogVGhlIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgcmF0aW5nLlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAbWVtYmVyb2YgUmF0aW5nQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdGhlbWUgb2YgdGhlIHJhdGluZyBjb21wb25lbnQuIERlZmF1bHRzIFwiYmxvY2tcIi5cbiAgICogQHR5cGUge1JhdGluZ0NvbXBvbmVudFRoZW1lfVxuICAgKiBAbWVtYmVyb2YgUmF0aW5nQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0aGVtZTogUmF0aW5nQ29tcG9uZW50VGhlbWUgPSAnYmxvY2snO1xuXG4gIC8qKlxuICAgKiBBIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSByYXRpbmcgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIFJhdGluZ0NvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIGxhYmVsIGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgKiBUaGlzIGxhYmVsIGlzIHVzZWQgdG8gcHJvdmlkZSBhbiBhY2Nlc3NpYmxlIG5hbWUgZm9yIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgUmF0aW5nQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIHJlcXVpcmVtZW50IGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgYW4gaW5wdXQgZmllbGQgaXMgcmVxdWlyZWQgZm9yIGZvcm0gc3VibWlzc2lvbi5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBSYXRpbmdDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFyaWFSZXF1aXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgd2lkdGggb2YgdGhlIHJhdGluZyBiYXIuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBSYXRpbmdDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGJhcldpZHRoID0gMzU7XG5cbiAgQElucHV0KCkgc2V0IGxlbmd0aChsZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuaXRlbXMgPSBBcnJheShNYXRoLm1heChsZW5ndGgsIHRoaXMuTUlOX0xFTkdUSCkpXG4gICAgICAuZmlsbCgwKVxuICAgICAgLm1hcCgoeCwgaSkgPT4gaSk7XG4gIH1cblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KCdDQU5PUFlVSV9ERUZBVUxUX0FQUExJQ0FUSU9OX1RIRU1FJykgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0QXBwVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUsXG4gICkge1xuICAgIGlmIChkZWZhdWx0QXBwVGhlbWUpIHtcbiAgICAgIHRoaXMuYXBwbGljYXRpb25UaGVtZSA9IGRlZmF1bHRBcHBUaGVtZTtcbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSB0aGlzLkRFRkFVTFRfTEVOR1RIO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZSA9PT0gaW5kZXggKyAxID8gMCA6IGluZGV4ICsgMTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Ib3ZlcihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5ob3ZlckluZGV4ID0gaW5kZXggKyAxO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicmF0aW5nXCJcbiAgICAgKG1vdXNlbGVhdmUpPVwib25Ib3ZlcigtMSlcIlxuICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiYXJpYVJlcXVpcmVkXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoZW1lID09PSAnYmxvY2snO2Vsc2Ugc3RhcnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwicmF0aW5nLWl0ZW1cIiBbYXR0ci50aGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIiAoY2xpY2spPVwic2VsZWN0KGl0ZW0pXCIgKG1vdXNlZW50ZXIpPVwib25Ib3ZlcihpdGVtKVwiXG4gICAgICAgICBbbmdDbGFzc109XCJ7ICdyYXRpbmctaXRlbS1zZWxlY3RlZCc6IGl0ZW0gPCB2YWx1ZSwgJ3JhdGluZy1pdGVtLWhvdmVyJzogaXRlbSA8IGhvdmVySW5kZXggfVwiXG4gICAgICAgICBbbmdTdHlsZV09XCJ7J3dpZHRoLnB4JzogYmFyV2lkdGh9XCI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy10ZW1wbGF0ZSAjc3RhcnM+XG4gICAgPGRpdiBjbGFzcz1cInN0YXItY29udGFpbmVyXCIgW2F0dHIudGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInN0YXJcIlxuICAgICAgICBbdGFiSW5kZXhdPVwiMFwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cIm9uSG92ZXIoaXRlbSlcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJvbkhvdmVyKC0xKVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICBmaWxsZWQ6IHZhbHVlID4gaSxcbiAgICAgICAgICBob3ZlcjogaXRlbSA8IGhvdmVySW5kZXggJiYgKHZhbHVlID8gaXRlbSA+PSB2YWx1ZSA6IHRydWUpLFxuICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICdmaWxsZWQtaGFsZic6IGkgKyAxIHwgaGFsZlN0YXIgOiB2YWx1ZVxuICAgICAgICB9XCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGluZGV4IGFzIGlcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0KGl0ZW0pXCJcbiAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19