@ohioepa/oepa-ui-lib 2.0.5 → 2.0.7

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.
@@ -113,11 +113,11 @@ export class AddressComponent {
113
113
  this.subscription.unsubscribe();
114
114
  }
115
115
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddressComponent, deps: [{ token: i1.OepaAddressService }, { token: i2.OepaComponentIdService }], target: i0.ɵɵFactoryTarget.Component });
116
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AddressComponent, selector: "oepa-address", inputs: { group: "group", showValidation: "showValidation", addressOneLabel: "addressOneLabel", addressTwoLabel: "addressTwoLabel", cityLabel: "cityLabel", stateLabel: "stateLabel", zipCodeLabel: "zipCodeLabel", disableState: "disableState", isSearch: "isSearch", hideLine2: "hideLine2", line1MaxLength: "line1MaxLength", line2MaxLength: "line2MaxLength", cityMaxLength: "cityMaxLength", foreignStateLabel: "foreignStateLabel", foreignZipLabel: "foreignZipLabel", countryLabel: "countryLabel", sameAsGroup: "sameAsGroup", sameAsLabel: "sameAsLabel", sameAsChecked: "sameAsChecked" }, ngImport: i0, template: "<div *ngIf=\"sameAsGroup && sameAsChecked\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label [ngStyle]=\"{ 'font-weight': sameAsChecked && group.disabled ? 'bold' : '' }\" id=\"addressOneLabel\">\n {{addressOneLabel}}\n <span *ngIf=\"sameAsGroup\">({{sameAsLabel}} \n <input type=\"checkbox\" [checked]=\"sameAsChecked\" (change)=\"toggleCopyFromSelection()\" [disabled]=\"group.parent?.disabled\" [attr.aria-label]=\"sameAsLabel\"/>\n </span>\n </label>\n </div>\n </div>\n </div>\n</div>\n<div *ngIf=\"!sameAsGroup || !sameAsChecked\" [formGroup]=\"group\">\n<div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label [ngStyle]=\"{ 'font-weight': sameAsChecked && group.disabled ? 'bold' : '' }\" id=\"addressOneLabel\">\n {{addressOneLabel}}\n <span *ngIf=\"sameAsGroup\">\n ({{sameAsLabel}} \n <input type=\"checkbox\" [checked]=\"sameAsChecked\" (change)=\"toggleCopyFromSelection()\" [disabled]=\"group.parent?.disabled\" [attr.aria-label]=\"sameAsLabel\"/>\n </span>\n </label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['line1'].status === 'INVALID'}\" \n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"line1\" [maxlength]=\"line1MaxLength\"\n [id]=\"componentId+'_Line1Input'\" [attr.aria-labelledby]=\"'addressOneLabel'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line1'].hasError('required')\">{{addressOneLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line1'].hasError('maxlength')\">{{addressOneLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n</div>\n<div *ngIf=\"!hideLine2\" class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label id=\"addressTwoLabel\">{{addressTwoLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['line2'].status === 'INVALID'}\"\n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"line2\" [maxlength]=\"line2MaxLength\"\n [id]=\"componentId+'_Line2Input'\" [attr.aria-labelledby]=\"'addressTwoLabel'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line2'].hasError('required')\">{{addressTwoLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line2'].hasError('maxlength')\">{{addressTwoLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n</div>\n<div class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>{{cityLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['city'].status === 'INVALID'}\"\n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"City\" maxlength=\"30\" formControlName=\"city\" [maxlength]=\"cityMaxLength\"\n [id]=\"componentId+'_CityInput'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('required')\">{{cityLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('maxlength')\">{{cityLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n <div class=\"col-md-2\">\n <div *ngIf=\"showStates && (!group.controls['country'] || group.get('country')?.value ==='USA')\" class=\"form-group\">\n <label>{{stateLabel}}</label>\n <select class=\"form-select\" [ngClass]=\"{'is-invalid':showValidation && group.controls['state'].status === 'INVALID'}\" \n name=\"AddressState\" formControlName=\"state\" [id]=\"componentId+'_StateSelect'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\">\n <option *ngFor=\"let s of usStates\" [ngValue]=\"s\">{{s}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['state'].hasError('required')\">State is required</small>\n </div>\n </div>\n <div class=\"col-md-4\">\n <div *ngIf=\"!group.controls['country'] || group.get('country')?.value ==='USA'\" class=\"form-group\">\n <label>{{zipCodeLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['postalCode'].status === 'INVALID'}\"\n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Zip Code\" formControlName=\"postalCode\" [id]=\"componentId+'_ZipInput'\" mask=\"00000\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['postalCode'].hasError('required')\">{{zipCodeLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['postalCode'].hasError('minlength')\">{{zipCodeLabel}} must contain exactly 5 digits</small>\n </div>\n </div>\n</div>\n<div *ngIf=\"group.controls['country'] && group.get('country')?.value !=='USA'\" class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>{{foreignStateLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['foreignState'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"Foreign State\" formControlName=\"foreignState\" [id]=\"componentId+'_ForeignStateInput'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\" >\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignState'].hasError('required')\">{{foreignStateLabel}} is required</small>\n \n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>{{foreignZipLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['foreignZip'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"Foreign Zip Code\" formControlName=\"foreignZip\" [id]=\"componentId+'_foreignZipInput'\" >\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignZip'].hasError('required')\">{{foreignZipLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignZip'].hasError('minlength')\">{{foreignZipLabel}} must contain exactly ? digits</small>\n </div> \n </div>\n\n</div>\n<div *ngIf=\"group.controls['country']\" class=\"row\">\n<div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>{{countryLabel}}</label>\n <select class=\"form-select\" [ngClass]=\"{'is-invalid':showValidation && group.controls['country'].status === 'INVALID'}\" \n name=\"AddressCountry\" formControlName=\"country\" [id]=\"componentId+'_CountrySelect'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\">\n <option *ngFor=\"let c of countries\" [ngValue]=\"c\">{{c}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['country'].hasError('required')\">Country{{countryLabel}} is required</small>\n </div>\n</div>\n</div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.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: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }] });
116
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AddressComponent, selector: "oepa-address", inputs: { group: "group", showValidation: "showValidation", addressOneLabel: "addressOneLabel", addressTwoLabel: "addressTwoLabel", cityLabel: "cityLabel", stateLabel: "stateLabel", zipCodeLabel: "zipCodeLabel", disableState: "disableState", isSearch: "isSearch", hideLine2: "hideLine2", line1MaxLength: "line1MaxLength", line2MaxLength: "line2MaxLength", cityMaxLength: "cityMaxLength", foreignStateLabel: "foreignStateLabel", foreignZipLabel: "foreignZipLabel", countryLabel: "countryLabel", sameAsGroup: "sameAsGroup", sameAsLabel: "sameAsLabel", sameAsChecked: "sameAsChecked" }, ngImport: i0, template: "<div *ngIf=\"sameAsGroup\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label [ngStyle]=\"{ 'font-weight': sameAsChecked && group.disabled ? 'bold' : '' }\" for=\"copyFromCheckbox\">\n {{sameAsLabel}} \n <input id=\"copyFromCheckbox\" type=\"checkbox\" [checked]=\"sameAsChecked\" (change)=\"toggleCopyFromSelection()\" [disabled]=\"group.parent?.disabled\"/>\n </label>\n </div>\n </div>\n </div>\n</div>\n<div *ngIf=\"!sameAsGroup || !sameAsChecked\" [formGroup]=\"group\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_Line1Input'\">{{addressOneLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['line1'].status === 'INVALID'}\" \n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"line1\" [maxlength]=\"line1MaxLength\"\n [id]=\"componentId+'_Line1Input'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line1'].hasError('required')\">{{addressOneLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line1'].hasError('maxlength')\">{{addressOneLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n </div>\n <div *ngIf=\"!hideLine2\" class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_Line2Input'\">{{addressTwoLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['line2'].status === 'INVALID'}\"\n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"line2\" [maxlength]=\"line2MaxLength\"\n [id]=\"componentId+'_Line2Input'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line2'].hasError('required')\">{{addressTwoLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line2'].hasError('maxlength')\">{{addressTwoLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_CityInput'\">{{cityLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['city'].status === 'INVALID'}\"\n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"City\" maxlength=\"30\" formControlName=\"city\" [maxlength]=\"cityMaxLength\"\n [id]=\"componentId+'_CityInput'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('required')\">{{cityLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('maxlength')\">{{cityLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n <div class=\"col-md-2\">\n <div *ngIf=\"showStates && (!group.controls['country'] || group.get('country')?.value ==='USA')\" class=\"form-group\">\n <label [for]=\"componentId+'_StateSelect'\">{{stateLabel}}</label>\n <select class=\"form-select\" [ngClass]=\"{'is-invalid':showValidation && group.controls['state'].status === 'INVALID'}\" \n name=\"AddressState\" formControlName=\"state\" [id]=\"componentId+'_StateSelect'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\">\n <option *ngFor=\"let s of usStates\" [ngValue]=\"s\">{{s}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['state'].hasError('required')\">State is required</small>\n </div>\n </div>\n <div class=\"col-md-4\">\n <div *ngIf=\"!group.controls['country'] || group.get('country')?.value ==='USA'\" class=\"form-group\">\n <label [for]=\"componentId+'_ZipInput'\">{{zipCodeLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['postalCode'].status === 'INVALID'}\"\n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Zip Code\" formControlName=\"postalCode\" [id]=\"componentId+'_ZipInput'\" mask=\"00000\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['postalCode'].hasError('required')\">{{zipCodeLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['postalCode'].hasError('minlength')\">{{zipCodeLabel}} must contain exactly 5 digits</small>\n </div>\n </div>\n </div>\n <div *ngIf=\"group.controls['country'] && group.get('country')?.value !=='USA'\" class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_ForeignStateInput'\">{{foreignStateLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['foreignState'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"Foreign State\" formControlName=\"foreignState\" [id]=\"componentId+'_ForeignStateInput'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\" >\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignState'].hasError('required')\">{{foreignStateLabel}} is required</small>\n \n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_foreignZipInput'\">{{foreignZipLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['foreignZip'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"Foreign Zip Code\" formControlName=\"foreignZip\" [id]=\"componentId+'_foreignZipInput'\" >\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignZip'].hasError('required')\">{{foreignZipLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignZip'].hasError('minlength')\">{{foreignZipLabel}} must contain exactly ? digits</small>\n </div> \n </div>\n </div>\n <div *ngIf=\"group.controls['country']\" class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_CountrySelect'\">{{countryLabel}}</label>\n <select class=\"form-select\" [ngClass]=\"{'is-invalid':showValidation && group.controls['country'].status === 'INVALID'}\" \n name=\"AddressCountry\" formControlName=\"country\" [id]=\"componentId+'_CountrySelect'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\">\n <option *ngFor=\"let c of countries\" [ngValue]=\"c\">{{c}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['country'].hasError('required')\">Country{{countryLabel}} is required</small>\n </div>\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.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: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }] });
117
117
  }
118
118
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddressComponent, decorators: [{
119
119
  type: Component,
120
- args: [{ selector: 'oepa-address', template: "<div *ngIf=\"sameAsGroup && sameAsChecked\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label [ngStyle]=\"{ 'font-weight': sameAsChecked && group.disabled ? 'bold' : '' }\" id=\"addressOneLabel\">\n {{addressOneLabel}}\n <span *ngIf=\"sameAsGroup\">({{sameAsLabel}} \n <input type=\"checkbox\" [checked]=\"sameAsChecked\" (change)=\"toggleCopyFromSelection()\" [disabled]=\"group.parent?.disabled\" [attr.aria-label]=\"sameAsLabel\"/>\n </span>\n </label>\n </div>\n </div>\n </div>\n</div>\n<div *ngIf=\"!sameAsGroup || !sameAsChecked\" [formGroup]=\"group\">\n<div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label [ngStyle]=\"{ 'font-weight': sameAsChecked && group.disabled ? 'bold' : '' }\" id=\"addressOneLabel\">\n {{addressOneLabel}}\n <span *ngIf=\"sameAsGroup\">\n ({{sameAsLabel}} \n <input type=\"checkbox\" [checked]=\"sameAsChecked\" (change)=\"toggleCopyFromSelection()\" [disabled]=\"group.parent?.disabled\" [attr.aria-label]=\"sameAsLabel\"/>\n </span>\n </label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['line1'].status === 'INVALID'}\" \n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"line1\" [maxlength]=\"line1MaxLength\"\n [id]=\"componentId+'_Line1Input'\" [attr.aria-labelledby]=\"'addressOneLabel'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line1'].hasError('required')\">{{addressOneLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line1'].hasError('maxlength')\">{{addressOneLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n</div>\n<div *ngIf=\"!hideLine2\" class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label id=\"addressTwoLabel\">{{addressTwoLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['line2'].status === 'INVALID'}\"\n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"line2\" [maxlength]=\"line2MaxLength\"\n [id]=\"componentId+'_Line2Input'\" [attr.aria-labelledby]=\"'addressTwoLabel'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line2'].hasError('required')\">{{addressTwoLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line2'].hasError('maxlength')\">{{addressTwoLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n</div>\n<div class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>{{cityLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['city'].status === 'INVALID'}\"\n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"City\" maxlength=\"30\" formControlName=\"city\" [maxlength]=\"cityMaxLength\"\n [id]=\"componentId+'_CityInput'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('required')\">{{cityLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('maxlength')\">{{cityLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n <div class=\"col-md-2\">\n <div *ngIf=\"showStates && (!group.controls['country'] || group.get('country')?.value ==='USA')\" class=\"form-group\">\n <label>{{stateLabel}}</label>\n <select class=\"form-select\" [ngClass]=\"{'is-invalid':showValidation && group.controls['state'].status === 'INVALID'}\" \n name=\"AddressState\" formControlName=\"state\" [id]=\"componentId+'_StateSelect'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\">\n <option *ngFor=\"let s of usStates\" [ngValue]=\"s\">{{s}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['state'].hasError('required')\">State is required</small>\n </div>\n </div>\n <div class=\"col-md-4\">\n <div *ngIf=\"!group.controls['country'] || group.get('country')?.value ==='USA'\" class=\"form-group\">\n <label>{{zipCodeLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['postalCode'].status === 'INVALID'}\"\n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Zip Code\" formControlName=\"postalCode\" [id]=\"componentId+'_ZipInput'\" mask=\"00000\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['postalCode'].hasError('required')\">{{zipCodeLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['postalCode'].hasError('minlength')\">{{zipCodeLabel}} must contain exactly 5 digits</small>\n </div>\n </div>\n</div>\n<div *ngIf=\"group.controls['country'] && group.get('country')?.value !=='USA'\" class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>{{foreignStateLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['foreignState'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"Foreign State\" formControlName=\"foreignState\" [id]=\"componentId+'_ForeignStateInput'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\" >\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignState'].hasError('required')\">{{foreignStateLabel}} is required</small>\n \n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>{{foreignZipLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['foreignZip'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"Foreign Zip Code\" formControlName=\"foreignZip\" [id]=\"componentId+'_foreignZipInput'\" >\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignZip'].hasError('required')\">{{foreignZipLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignZip'].hasError('minlength')\">{{foreignZipLabel}} must contain exactly ? digits</small>\n </div> \n </div>\n\n</div>\n<div *ngIf=\"group.controls['country']\" class=\"row\">\n<div class=\"col-md-6\">\n <div class=\"form-group\">\n <label>{{countryLabel}}</label>\n <select class=\"form-select\" [ngClass]=\"{'is-invalid':showValidation && group.controls['country'].status === 'INVALID'}\" \n name=\"AddressCountry\" formControlName=\"country\" [id]=\"componentId+'_CountrySelect'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\">\n <option *ngFor=\"let c of countries\" [ngValue]=\"c\">{{c}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['country'].hasError('required')\">Country{{countryLabel}} is required</small>\n </div>\n</div>\n</div>\n</div>" }]
120
+ args: [{ selector: 'oepa-address', template: "<div *ngIf=\"sameAsGroup\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label [ngStyle]=\"{ 'font-weight': sameAsChecked && group.disabled ? 'bold' : '' }\" for=\"copyFromCheckbox\">\n {{sameAsLabel}} \n <input id=\"copyFromCheckbox\" type=\"checkbox\" [checked]=\"sameAsChecked\" (change)=\"toggleCopyFromSelection()\" [disabled]=\"group.parent?.disabled\"/>\n </label>\n </div>\n </div>\n </div>\n</div>\n<div *ngIf=\"!sameAsGroup || !sameAsChecked\" [formGroup]=\"group\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_Line1Input'\">{{addressOneLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['line1'].status === 'INVALID'}\" \n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"line1\" [maxlength]=\"line1MaxLength\"\n [id]=\"componentId+'_Line1Input'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line1'].hasError('required')\">{{addressOneLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line1'].hasError('maxlength')\">{{addressOneLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n </div>\n <div *ngIf=\"!hideLine2\" class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_Line2Input'\">{{addressTwoLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['line2'].status === 'INVALID'}\"\n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"line2\" [maxlength]=\"line2MaxLength\"\n [id]=\"componentId+'_Line2Input'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line2'].hasError('required')\">{{addressTwoLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['line2'].hasError('maxlength')\">{{addressTwoLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_CityInput'\">{{cityLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['city'].status === 'INVALID'}\"\n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"City\" maxlength=\"30\" formControlName=\"city\" [maxlength]=\"cityMaxLength\"\n [id]=\"componentId+'_CityInput'\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('required')\">{{cityLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('maxlength')\">{{cityLabel}} has exceeded its maximum length</small>\n </div>\n </div>\n <div class=\"col-md-2\">\n <div *ngIf=\"showStates && (!group.controls['country'] || group.get('country')?.value ==='USA')\" class=\"form-group\">\n <label [for]=\"componentId+'_StateSelect'\">{{stateLabel}}</label>\n <select class=\"form-select\" [ngClass]=\"{'is-invalid':showValidation && group.controls['state'].status === 'INVALID'}\" \n name=\"AddressState\" formControlName=\"state\" [id]=\"componentId+'_StateSelect'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\">\n <option *ngFor=\"let s of usStates\" [ngValue]=\"s\">{{s}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['state'].hasError('required')\">State is required</small>\n </div>\n </div>\n <div class=\"col-md-4\">\n <div *ngIf=\"!group.controls['country'] || group.get('country')?.value ==='USA'\" class=\"form-group\">\n <label [for]=\"componentId+'_ZipInput'\">{{zipCodeLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['postalCode'].status === 'INVALID'}\"\n [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Zip Code\" formControlName=\"postalCode\" [id]=\"componentId+'_ZipInput'\" mask=\"00000\">\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['postalCode'].hasError('required')\">{{zipCodeLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['postalCode'].hasError('minlength')\">{{zipCodeLabel}} must contain exactly 5 digits</small>\n </div>\n </div>\n </div>\n <div *ngIf=\"group.controls['country'] && group.get('country')?.value !=='USA'\" class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_ForeignStateInput'\">{{foreignStateLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['foreignState'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"Foreign State\" formControlName=\"foreignState\" [id]=\"componentId+'_ForeignStateInput'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\" >\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignState'].hasError('required')\">{{foreignStateLabel}} is required</small>\n \n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_foreignZipInput'\">{{foreignZipLabel}}</label>\n <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['foreignZip'].status === 'INVALID'}\"\n type=\"text\" placeholder=\"Foreign Zip Code\" formControlName=\"foreignZip\" [id]=\"componentId+'_foreignZipInput'\" >\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignZip'].hasError('required')\">{{foreignZipLabel}} is required</small>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignZip'].hasError('minlength')\">{{foreignZipLabel}} must contain exactly ? digits</small>\n </div> \n </div>\n </div>\n <div *ngIf=\"group.controls['country']\" class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label [for]=\"componentId+'_CountrySelect'\">{{countryLabel}}</label>\n <select class=\"form-select\" [ngClass]=\"{'is-invalid':showValidation && group.controls['country'].status === 'INVALID'}\" \n name=\"AddressCountry\" formControlName=\"country\" [id]=\"componentId+'_CountrySelect'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\">\n <option *ngFor=\"let c of countries\" [ngValue]=\"c\">{{c}}</option>\n </select>\n <small class=\"invalid-feedback\" *ngIf=\"group.controls['country'].hasError('required')\">Country{{countryLabel}} is required</small>\n </div>\n </div>\n </div>\n</div>" }]
121
121
  }], ctorParameters: () => [{ type: i1.OepaAddressService }, { type: i2.OepaComponentIdService }], propDecorators: { group: [{
122
122
  type: Input
123
123
  }], showValidation: [{
@@ -171,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
171
171
  }], sameAsChecked: [{
172
172
  type: Input
173
173
  }] } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2FkZHJlc3MvYWRkcmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2FkZHJlc3MvYWRkcmVzcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVd6RCxNQUFNLE9BQU8sZ0JBQWdCO0lBdUNQO0lBQTRDO0lBdEN6RCxXQUFXLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0MsVUFBVSxHQUFHLElBQUksQ0FBQztJQUNsQixRQUFRLEdBQWEsRUFBRSxDQUFDO0lBQ3hCLFNBQVMsR0FBYSxFQUFFLENBQUM7SUFDekIsV0FBVyxHQUFHLHNCQUFzQixDQUFDO0lBR3BDLGVBQWUsQ0FBZTtJQUM5QixZQUFZLENBQWdCO0lBRTNCLEtBQUssQ0FBYTtJQUNsQixjQUFjLEdBQUcsS0FBSyxDQUFDO0lBRUMsZUFBZSxHQUFXLFdBQVcsQ0FBQztJQUN0QyxlQUFlLEdBQVcsV0FBVyxDQUFDO0lBQzVDLFNBQVMsR0FBVyxNQUFNLENBQUM7SUFDMUIsVUFBVSxHQUFXLE9BQU8sQ0FBQztJQUMzQixZQUFZLEdBQVcsVUFBVSxDQUFDO0lBQ2xDLFlBQVksR0FBVyxLQUFLLENBQUM7SUFDakMsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUV6QixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRTdDLHdDQUF3QztJQUNSLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDcEIsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUNyQixhQUFhLEdBQUcsRUFBRSxDQUFDO0lBRWYsaUJB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Z0JBQ1MsWUFBWTtzQkFBekMsS0FBSzt1QkFBQyxjQUFjO2dCQUNLLFFBQVE7c0JBQWpDLEtBQUs7dUJBQUMsVUFBVTtnQkFFVSxTQUFTO3NCQUFuQyxLQUFLO3VCQUFDLFdBQVc7Z0JBR2MsY0FBYztzQkFBN0MsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBQ1MsY0FBYztzQkFBN0MsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBQ1EsYUFBYTtzQkFBM0MsS0FBSzt1QkFBQyxlQUFlO2dCQUVhLGlCQUFpQjtzQkFBbkQsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBQ08sZUFBZTtzQkFBL0MsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBQ00sWUFBWTtzQkFBekMsS0FBSzt1QkFBQyxjQUFjO2dCQUlaLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9lcGFBZGRyZXNzU2VydmljZSB9IGZyb20gJy4vb2VwYS1hZGRyZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2VwYUNvbXBvbmVudElkU2VydmljZSwgT0VQQUFkZHJlc3MgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWNvbW1vbi1saWInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLWFkZHJlc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRkcmVzcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9hZGRyZXNzLmNvbXBvbmVudC5jc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBBZGRyZXNzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIHppcENvZGVNYXNrID0gWy9cXGQvLCAvXFxkLywgL1xcZC8sIC9cXGQvLCAvXFxkL107XG4gIHB1YmxpYyBzaG93U3RhdGVzID0gdHJ1ZTtcbiAgcHVibGljIHVzU3RhdGVzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgY291bnRyaWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgY29tcG9uZW50SWQgPSAnT2VwYUFkZHJlc3NDb21wb25lbnQnO1xuXG4gIFxuICBwcml2YXRlIG9yaWdpbmFsQWRkcmVzcyE6IE9FUEFBZGRyZXNzO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICBASW5wdXQoKSBncm91cCE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgc2hvd1ZhbGlkYXRpb24gPSBmYWxzZTtcblxuICBASW5wdXQoJ2FkZHJlc3NPbmVMYWJlbCcpIHB1YmxpYyBhZGRyZXNzT25lTGFiZWw6IHN0cmluZyA9ICdBZGRyZXNzIDEnO1xuICBASW5wdXQoJ2FkZHJlc3NUd29MYWJlbCcpIHB1YmxpYyBhZGRyZXNzVHdvTGFiZWw6IHN0cmluZyA9ICdBZGRyZXNzIDInO1xuICBASW5wdXQoJ2NpdHlMYWJlbCcpIHB1YmxpYyBjaXR5TGFiZWw6IHN0cmluZyA9ICdDaXR5JztcbiAgQElucHV0KCdzdGF0ZUxhYmVsJykgcHVibGljIHN0YXRlTGFiZWw6IHN0cmluZyA9ICdTdGF0ZSc7XG4gIEBJbnB1dCgnemlwQ29kZUxhYmVsJykgcHVibGljIHppcENvZGVMYWJlbDogc3RyaW5nID0gJ1ppcCBDb2RlJztcbiAgQElucHV0KCdkaXNhYmxlU3RhdGUnKSBwdWJsaWMgZGlzYWJsZVN0YXRlOmJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCdpc1NlYXJjaCcpIHB1YmxpYyBpc1NlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnaGlkZUxpbmUyJykgcHVibGljIGhpZGVMaW5lMiA9IGZhbHNlO1xuXG4gIC8vIG1heCBsZW5ndGggdmFsdWVzLiBvdmVycmlkZSBpZiBuZWVkZWRcbiAgQElucHV0KCdsaW5lMU1heExlbmd0aCcpIHB1YmxpYyBsaW5lMU1heExlbmd0aCA9IDQwO1xuICBASW5wdXQoJ2xpbmUyTWF4TGVuZ3RoJykgcHVibGljIGxpbmUyTWF4TGVuZ3RoID0gNDA7XG4gIEBJbnB1dCgnY2l0eU1heExlbmd0aCcpIHB1YmxpYyBjaXR5TWF4TGVuZ3RoID0gMzA7XG4gIFxuICBASW5wdXQoJ2ZvcmVpZ25TdGF0ZUxhYmVsJykgcHVibGljIGZvcmVpZ25TdGF0ZUxhYmVsOiBzdHJpbmcgPSAnRm9yZWlnbiBTdGF0ZSc7XG4gIEBJbnB1dCgnZm9yZWlnblppcExhYmVsJykgcHVibGljIGZvcmVpZ25aaXBMYWJlbDogc3RyaW5nID0gJ0ZvcmVpZ24gWmlwIENvZGUnO1xuICBASW5wdXQoJ2NvdW50cnlMYWJlbCcpIHB1YmxpYyBjb3VudHJ5TGFiZWw6IHN0cmluZyA9ICdDb3VudHJ5JztcblxuICAvLyBUaGVzZSB2YWx1ZXMgYXJlIG9ubHkgdXNlZCBpZiB5b3Ugd2FudCBhIFwic2FtZSBhc1wiIGNoZWNrYm94IGZvciB0aGUgYWRkcmVzc1xuICAvLyBBbGwgdGhyZWUgdmFsdWVzIG11c3QgYmUgcHJvdmlkZWQgaWYgdXNpbmcgdGhlIFwic2FtZSBhc1wiIGNhcGFiaWxpdHlcbiAgQElucHV0KCkgc2FtZUFzR3JvdXAgITogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBzYW1lQXNMYWJlbCAhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNhbWVBc0NoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFkZHJlc3NTZXJ2aWNlOiBPZXBhQWRkcmVzc1NlcnZpY2UsIHByaXZhdGUgaWRTZXJ2aWNlOiBPZXBhQ29tcG9uZW50SWRTZXJ2aWNlKSB7XG4gICAgdGhpcy5hZGRyZXNzU2VydmljZS5nZXRTdGF0ZXMoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHN0YXRlcykgPT4ge1xuICAgICAgdGhpcy51c1N0YXRlcyA9IHN0YXRlcztcbiAgICB9LCBlcnJvcjogZXJyID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdFUlJPUiByZXRyaWV2aW5nIHN0YXRlcyBmb3IgYWRkcmVzczogJyArIGVycik7XG4gICAgfX0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgIFxuICAgICAgaWYodGhpcy5ncm91cC5jb250cm9sc1snY291bnRyeSddKXtcbiAgICAgICAgIHRoaXMuYWRkcmVzc1NlcnZpY2UuZ2V0Q291bnRyaWVzKCkuc3Vic2NyaWJlKHsgXG4gICAgICAgICAgbmV4dDogKGNvdW50cmllczogYW55KSA9PiB7XG4gICAgICAgICAgICBsZXQgY291bnRyeUxpc3Q6c3RyaW5nW109W107XG4gICAgICAgICAgICAvL1JlbW92ZSBcIkNheW1lbiBJc2xhbmRzXCJcbiAgICAgICAgICAgIGNvdW50cmllcy5mb3JFYWNoKChjb3VudHJ5OiBhbnkpID0+e1xuICAgICAgICAgICAgICBpZihjb3VudHJ5ICE9PSBcIkNheW1lbiBJc2xhbmRzXCIpXG4gICAgICAgICAgICAgICAgY291bnRyeUxpc3QucHVzaChjb3VudHJ5KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB0aGlzLmNvdW50cmllcyA9IGNvdW50cnlMaXN0O1xuICAgICAgICAgIH0sIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0VSUk9SIHJldHJpZXZpbmcgY291bnRyaWVzIGZvciBhZGRyZXNzOiAnICsgZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5jb21wb25lbnRJZCA9IHRoaXMuaWRTZXJ2aWNlLmdldENvbXBvbmVudElkKHRoaXMuZ3JvdXApO1xuICAgICAgdGhpcy5vcmlnaW5hbEFkZHJlc3MgPSB0aGlzLmFkZHJlc3NGcm9tRm9ybUdyb3VwKHRoaXMuZ3JvdXApO1xuICAgICAgdGhpcy5zdWJzY3JpYmVUb0NoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVDb3B5RnJvbVNlbGVjdGlvbigpIHtcbiAgICB0aGlzLnNhbWVBc0NoZWNrZWQgPSAhdGhpcy5zYW1lQXNDaGVja2VkO1xuICAgIGlmICh0aGlzLnNhbWVBc0NoZWNrZWQpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmVGcm9tQ2hhbmdlcygpO1xuICAgICAgdGhpcy5ncm91cC5wYXRjaFZhbHVlKHRoaXMuYWRkcmVzc0Zyb21Gb3JtR3JvdXAodGhpcy5zYW1lQXNHcm91cCkpO1xuICAgICAgdGhpcy5ncm91cC5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3Vic2NyaWJlVG9DaGFuZ2VzKCk7XG4gICAgICB0aGlzLmdyb3VwLnBhdGNoVmFsdWUodGhpcy5vcmlnaW5hbEFkZHJlc3MpO1xuICAgICAgdGhpcy5ncm91cC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZHJlc3NGcm9tRm9ybUdyb3VwKGdyb3VwOiBGb3JtR3JvdXApOiBPRVBBQWRkcmVzcyB7XG4gICAgbGV0IGFkZHJlc3M6IE9FUEFBZGRyZXNzID0ge307XG4gICAgaWYgKGdyb3VwKSB7XG4gICAgICBhZGRyZXNzID0ge1xuICAgICAgICBsaW5lMTogZ3JvdXAuY29udHJvbHNbJ2xpbmUxJ10udmFsdWUsXG4gICAgICAgIGxpbmUyOiBncm91cC5jb250cm9sc1snbGluZTInXS52YWx1ZSxcbiAgICAgICAgY2l0eTogZ3JvdXAuY29udHJvbHNbJ2NpdHknXS52YWx1ZSxcbiAgICAgICAgc3RhdGU6IGdyb3VwLmNvbnRyb2xzWydzdGF0ZSddLnZhbHVlLFxuICAgICAgICBwb3N0YWxDb2RlOiAoZ3JvdXAuY29udHJvbHNbJ2NvdW50cnknXSAmJiBncm91cC5jb250cm9sc1snY291bnRyeSddLnZhbHVlICE9PSAnVVNBJykgPyBncm91cC5jb250cm9sc1snZm9yZWlnblppcCddOmdyb3VwLmNvbnRyb2xzWydwb3N0YWxDb2RlJ10udmFsdWUsXG4gICAgICAgIGZvcmVpZ25TdGF0ZTogZ3JvdXAuY29udHJvbHNbJ2ZvcmVpZ25TdGF0ZSddPyBncm91cC5jb250cm9sc1snZm9yZWlnblN0YXRlJ10udmFsdWU6bnVsbCxcbiAgICAgICAgY291bnRyeTogZ3JvdXAuY29udHJvbHNbJ2NvdW50cnknXSA/IGdyb3VwLmNvbnRyb2xzWydjb3VudHJ5J10udmFsdWU6bnVsbFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYWRkcmVzcztcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9DaGFuZ2VzKCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5ncm91cC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGFkZHJlc3MgPT4ge1xuICAgICAgdGhpcy5vcmlnaW5hbEFkZHJlc3MubGluZTEgPSBhZGRyZXNzLmxpbmUxO1xuICAgICAgdGhpcy5vcmlnaW5hbEFkZHJlc3MubGluZTIgPSBhZGRyZXNzLmxpbmUyO1xuICAgICAgdGhpcy5vcmlnaW5hbEFkZHJlc3MuY2l0eSA9IGFkZHJlc3MuY2l0eTtcbiAgICAgIHRoaXMub3JpZ2luYWxBZGRyZXNzLnN0YXRlID0gYWRkcmVzcy5zdGF0ZTtcbiAgICAgIHRoaXMub3JpZ2luYWxBZGRyZXNzLnBvc3RhbENvZGUgPSAoYWRkcmVzcy5jb3VudHJ5ICYmIGFkZHJlc3MuY291bnRyeSAhPT0gJ1VTQScpID8gYWRkcmVzcy5mb3JlaWduWmlwOmFkZHJlc3MucG9zdGFsQ29kZTtcbiAgICAgIHRoaXMub3JpZ2luYWxBZGRyZXNzLmZvcmVpZ25TdGF0ZSA9IGFkZHJlc3MuZm9yZWlnblN0YXRlID8gYWRkcmVzcy5mb3JlaWduU3RhdGUgOiBudWxsO1xuICAgICAgdGhpcy5vcmlnaW5hbEFkZHJlc3MuY291bnRyeSA9IGFkZHJlc3MuY291bnRyeSA/IGFkZHJlc3MuY291bnRyeSA6IG51bGw7XG4gICAgICBcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVGcm9tQ2hhbmdlcygpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwic2FtZUFzR3JvdXAgJiYgc2FtZUFzQ2hlY2tlZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgW25nU3R5bGVdPVwieyAnZm9udC13ZWlnaHQnOiBzYW1lQXNDaGVja2VkICYmIGdyb3VwLmRpc2FibGVkID8gJ2JvbGQnIDogJycgfVwiIGlkPVwiYWRkcmVzc09uZUxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7YWRkcmVzc09uZUxhYmVsfX1cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzYW1lQXNHcm91cFwiPih7e3NhbWVBc0xhYmVsfX0gXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwic2FtZUFzQ2hlY2tlZFwiIChjaGFuZ2UpPVwidG9nZ2xlQ29weUZyb21TZWxlY3Rpb24oKVwiIFtkaXNhYmxlZF09XCJncm91cC5wYXJlbnQ/LmRpc2FibGVkXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJzYW1lQXNMYWJlbFwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCIhc2FtZUFzR3JvdXAgfHwgIXNhbWVBc0NoZWNrZWRcIiBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XG48ZGl2IGNsYXNzPVwicm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIFtuZ1N0eWxlXT1cInsgJ2ZvbnQtd2VpZ2h0Jzogc2FtZUFzQ2hlY2tlZCAmJiBncm91cC5kaXNhYmxlZCA/ICdib2xkJyA6ICcnIH1cIiBpZD1cImFkZHJlc3NPbmVMYWJlbFwiPlxuICAgICAgICAgICAgICB7e2FkZHJlc3NPbmVMYWJlbH19XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2FtZUFzR3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICh7e3NhbWVBc0xhYmVsfX0gXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwic2FtZUFzQ2hlY2tlZFwiIChjaGFuZ2UpPVwidG9nZ2xlQ29weUZyb21TZWxlY3Rpb24oKVwiIFtkaXNhYmxlZF09XCJncm91cC5wYXJlbnQ/LmRpc2FibGVkXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJzYW1lQXNMYWJlbFwiLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snbGluZTEnXS5zdGF0dXMgPT09ICdJTlZBTElEJ31cIiBcbiAgICAgICAgICAgIFt0eXBlXT1cImlzU2VhcmNoID8gJ3NlYXJjaCcgOiAndGV4dCdcIiBwbGFjZWhvbGRlcj1cIkFkZHJlc3NcIiBtYXhsZW5ndGg9XCI0MFwiIGZvcm1Db250cm9sTmFtZT1cImxpbmUxXCIgW21heGxlbmd0aF09XCJsaW5lMU1heExlbmd0aFwiXG4gICAgICAgICAgICBbaWRdPVwiY29tcG9uZW50SWQrJ19MaW5lMUlucHV0J1wiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInYWRkcmVzc09uZUxhYmVsJ1wiPlxuICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydsaW5lMSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+e3thZGRyZXNzT25lTGFiZWx9fSBpcyByZXF1aXJlZDwvc21hbGw+XG4gICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2xpbmUxJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+e3thZGRyZXNzT25lTGFiZWx9fSBoYXMgZXhjZWVkZWQgaXRzIG1heGltdW0gbGVuZ3RoPC9zbWFsbD5cbiAgICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cIiFoaWRlTGluZTJcIiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBpZD1cImFkZHJlc3NUd29MYWJlbFwiPnt7YWRkcmVzc1R3b0xhYmVsfX08L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ2xpbmUyJ10uc3RhdHVzID09PSAnSU5WQUxJRCd9XCJcbiAgICAgICAgICAgW3R5cGVdPVwiaXNTZWFyY2ggPyAnc2VhcmNoJyA6ICd0ZXh0J1wiIHBsYWNlaG9sZGVyPVwiQWRkcmVzc1wiIG1heGxlbmd0aD1cIjQwXCIgZm9ybUNvbnRyb2xOYW1lPVwibGluZTJcIiBbbWF4bGVuZ3RoXT1cImxpbmUyTWF4TGVuZ3RoXCJcbiAgICAgICAgICAgIFtpZF09XCJjb21wb25lbnRJZCsnX0xpbmUySW5wdXQnXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidhZGRyZXNzVHdvTGFiZWwnXCI+XG4gICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2xpbmUyJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj57e2FkZHJlc3NUd29MYWJlbH19IGlzIHJlcXVpcmVkPC9zbWFsbD5cbiAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snbGluZTInXS5oYXNFcnJvcignbWF4bGVuZ3RoJylcIj57e2FkZHJlc3NUd29MYWJlbH19IGhhcyBleGNlZWRlZCBpdHMgbWF4aW11bSBsZW5ndGg8L3NtYWxsPlxuICAgICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWw+e3tjaXR5TGFiZWx9fTwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snY2l0eSddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiXG4gICAgICAgICAgICBbdHlwZV09XCJpc1NlYXJjaCA/ICdzZWFyY2gnIDogJ3RleHQnXCIgcGxhY2Vob2xkZXI9XCJDaXR5XCIgbWF4bGVuZ3RoPVwiMzBcIiBmb3JtQ29udHJvbE5hbWU9XCJjaXR5XCIgW21heGxlbmd0aF09XCJjaXR5TWF4TGVuZ3RoXCJcbiAgICAgICAgICAgIFtpZF09XCJjb21wb25lbnRJZCsnX0NpdHlJbnB1dCdcIj5cbiAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snY2l0eSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+e3tjaXR5TGFiZWx9fSBpcyByZXF1aXJlZDwvc21hbGw+XG4gICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2NpdHknXS5oYXNFcnJvcignbWF4bGVuZ3RoJylcIj57e2NpdHlMYWJlbH19IGhhcyBleGNlZWRlZCBpdHMgbWF4aW11bSBsZW5ndGg8L3NtYWxsPlxuICAgICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93U3RhdGVzICYmICghZ3JvdXAuY29udHJvbHNbJ2NvdW50cnknXSB8fCBncm91cC5nZXQoJ2NvdW50cnknKT8udmFsdWUgPT09J1VTQScpXCIgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsPnt7c3RhdGVMYWJlbH19PC9sYWJlbD5cbiAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3RcIiBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmNvbnRyb2xzWydzdGF0ZSddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiIFxuICAgICAgICAgICAgbmFtZT1cIkFkZHJlc3NTdGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cInN0YXRlXCIgW2lkXT1cImNvbXBvbmVudElkKydfU3RhdGVTZWxlY3QnXCIgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZVN0YXRlIHx8IGdyb3VwLmRpc2FibGVkID8gJycgOiBudWxsXCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgcyBvZiB1c1N0YXRlc1wiIFtuZ1ZhbHVlXT1cInNcIj57e3N9fTwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snc3RhdGUnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlN0YXRlIGlzIHJlcXVpcmVkPC9zbWFsbD5cbiAgICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIWdyb3VwLmNvbnRyb2xzWydjb3VudHJ5J10gIHx8IGdyb3VwLmdldCgnY291bnRyeScpPy52YWx1ZSA9PT0nVVNBJ1wiIGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbD57e3ppcENvZGVMYWJlbH19PC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmNvbnRyb2xzWydwb3N0YWxDb2RlJ10uc3RhdHVzID09PSAnSU5WQUxJRCd9XCJcbiAgICAgICAgICAgIFt0eXBlXT1cImlzU2VhcmNoID8gJ3NlYXJjaCcgOiAndGV4dCdcIiBwbGFjZWhvbGRlcj1cIlppcCBDb2RlXCIgZm9ybUNvbnRyb2xOYW1lPVwicG9zdGFsQ29kZVwiIFtpZF09XCJjb21wb25lbnRJZCsnX1ppcElucHV0J1wiIG1hc2s9XCIwMDAwMFwiPlxuICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydwb3N0YWxDb2RlJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj57e3ppcENvZGVMYWJlbH19IGlzIHJlcXVpcmVkPC9zbWFsbD5cbiAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1sncG9zdGFsQ29kZSddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKVwiPnt7emlwQ29kZUxhYmVsfX0gbXVzdCBjb250YWluIGV4YWN0bHkgNSBkaWdpdHM8L3NtYWxsPlxuICAgICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2NvdW50cnknXSAmJiBncm91cC5nZXQoJ2NvdW50cnknKT8udmFsdWUgIT09J1VTQSdcIiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWw+e3tmb3JlaWduU3RhdGVMYWJlbH19PC9sYWJlbD5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snZm9yZWlnblN0YXRlJ10uc3RhdHVzID09PSAnSU5WQUxJRCd9XCJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRm9yZWlnbiBTdGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cImZvcmVpZ25TdGF0ZVwiIFtpZF09XCJjb21wb25lbnRJZCsnX0ZvcmVpZ25TdGF0ZUlucHV0J1wiIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVTdGF0ZSB8fCBncm91cC5kaXNhYmxlZCA/ICcnIDogbnVsbFwiID5cbiAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2ZvcmVpZ25TdGF0ZSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+e3tmb3JlaWduU3RhdGVMYWJlbH19IGlzIHJlcXVpcmVkPC9zbWFsbD5cbiAgICAgICAgXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWw+e3tmb3JlaWduWmlwTGFiZWx9fTwvbGFiZWw+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ2ZvcmVpZ25aaXAnXS5zdGF0dXMgPT09ICdJTlZBTElEJ31cIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJGb3JlaWduIFppcCBDb2RlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZm9yZWlnblppcFwiIFtpZF09XCJjb21wb25lbnRJZCsnX2ZvcmVpZ25aaXBJbnB1dCdcIiAgPlxuICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snZm9yZWlnblppcCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+e3tmb3JlaWduWmlwTGFiZWx9fSBpcyByZXF1aXJlZDwvc21hbGw+XG4gICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydmb3JlaWduWmlwJ10uaGFzRXJyb3IoJ21pbmxlbmd0aCcpXCI+e3tmb3JlaWduWmlwTGFiZWx9fSBtdXN0IGNvbnRhaW4gZXhhY3RseSA/IGRpZ2l0czwvc21hbGw+XG4gICAgPC9kaXY+IFxuICA8L2Rpdj5cblxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2NvdW50cnknXVwiIGNsYXNzPVwicm93XCI+XG48ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWw+e3tjb3VudHJ5TGFiZWx9fTwvbGFiZWw+XG4gICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ2NvdW50cnknXS5zdGF0dXMgPT09ICdJTlZBTElEJ31cIiBcbiAgICAgICAgICBuYW1lPVwiQWRkcmVzc0NvdW50cnlcIiBmb3JtQ29udHJvbE5hbWU9XCJjb3VudHJ5XCIgW2lkXT1cImNvbXBvbmVudElkKydfQ291bnRyeVNlbGVjdCdcIiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlU3RhdGUgfHwgZ3JvdXAuZGlzYWJsZWQgPyAnJyA6IG51bGxcIj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgYyBvZiBjb3VudHJpZXNcIiBbbmdWYWx1ZV09XCJjXCI+e3tjfX08L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snY291bnRyeSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+Q291bnRyeXt7Y291bnRyeUxhYmVsfX0gaXMgcmVxdWlyZWQ8L3NtYWxsPlxuICAgIDwvZGl2PlxuPC9kaXY+XG48L2Rpdj5cbjwvZGl2PiJdfQ==
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2FkZHJlc3MvYWRkcmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2FkZHJlc3MvYWRkcmVzcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVd6RCxNQUFNLE9BQU8sZ0JBQWdCO0lBdUNQO0lBQTRDO0lBdEN6RCxXQUFXLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0MsVUFBVSxHQUFHLElBQUksQ0FBQztJQUNsQixRQUFRLEdBQWEsRUFBRSxDQUFDO0lBQ3hCLFNBQVMsR0FBYSxFQUFFLENBQUM7SUFDekIsV0FBVyxHQUFHLHNCQUFzQixDQUFDO0lBR3BDLGVBQWUsQ0FBZTtJQUM5QixZQUFZLENBQWdCO0lBRTNCLEtBQUssQ0FBYTtJQUNsQixjQUFjLEdBQUcsS0FBSyxDQUFDO0lBRUMsZUFBZSxHQUFXLFdBQVcsQ0FBQztJQUN0QyxlQUFlLEdBQVcsV0FBVyxDQUFDO0lBQzVDLFNBQVMsR0FBVyxNQUFNLENBQUM7SUFDMUIsVUFBVSxHQUFXLE9BQU8sQ0FBQztJQUMzQixZQUFZLEdBQVcsVUFBVSxDQUFDO0lBQ2xDLFlBQVksR0FBVyxLQUFLLENBQUM7SUFDakMsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUV6QixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRTdDLHdDQUF3QztJQUNSLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDcEIsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUNyQixhQUFhLEdBQUcsRUFBRSxDQUFDO0lBRWYsaUJBQWlCLEdBQVcsZUFBZSxDQUFDO0lBQzlDLGVBQWUsR0FBVyxrQkFBa0IsQ0FBQztJQUNoRCxZQUFZLEdBQVcsU0FBUyxDQUFDO0lBRS9ELDhFQUE4RTtJQUM5RSxzRUFBc0U7SUFDN0QsV0FBVyxDQUFjO0lBQ3pCLFdBQVcsQ0FBVztJQUN0QixhQUFhLEdBQVksS0FBSyxDQUFDO0lBRXhDLFlBQW9CLGNBQWtDLEVBQVUsU0FBaUM7UUFBN0UsbUJBQWMsR0FBZCxjQUFjLENBQW9CO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBd0I7UUFDL0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDeEMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO1lBQ3pCLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUM3RCxDQUFDO1NBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVmLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQzVDLElBQUksRUFBRSxDQUFDLFNBQWMsRUFBRSxFQUFFO3dCQUN2QixJQUFJLFdBQVcsR0FBVSxFQUFFLENBQUM7d0JBQzVCLHlCQUF5Qjt3QkFDekIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFOzRCQUNqQyxJQUFHLE9BQU8sS0FBSyxnQkFBZ0I7Z0NBQzdCLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQzlCLENBQUMsQ0FBQyxDQUFBO3dCQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDO29CQUMvQixDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO3dCQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsMENBQTBDLEdBQUcsR0FBRyxDQUFDLENBQUM7b0JBQ2hFLENBQUM7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsS0FBZ0I7UUFDM0MsSUFBSSxPQUFPLEdBQWdCLEVBQUUsQ0FBQztRQUM5QixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsT0FBTyxHQUFHO2dCQUNSLEtBQUssRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUs7Z0JBQ3BDLEtBQUssRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUs7Z0JBQ3BDLElBQUksRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUs7Z0JBQ2xDLEtBQUssRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUs7Z0JBQ3BDLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUEsQ0FBQyxDQUFBLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSztnQkFDdEosWUFBWSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUMsQ0FBQSxJQUFJO2dCQUN2RixPQUFPLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFBLElBQUk7YUFDMUUsQ0FBQTtRQUNILENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzlELElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUEsQ0FBQyxDQUFBLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFDekgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3ZGLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUUxRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO3dHQXBIVSxnQkFBZ0I7NEZBQWhCLGdCQUFnQiw0bkJDWDdCLDgzT0FvR007OzRGRHpGTyxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsY0FBYzs0SEFlZixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFMkIsZUFBZTtzQkFBL0MsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBQ1MsZUFBZTtzQkFBL0MsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBQ0csU0FBUztzQkFBbkMsS0FBSzt1QkFBQyxXQUFXO2dCQUNVLFVBQVU7c0JBQXJDLEtBQUs7dUJBQUMsWUFBWTtnQkFDVyxZQUFZO3NCQUF6QyxLQUFLO3VCQUFDLGNBQWM7Z0JBQ1MsWUFBWTtzQkFBekMsS0FBSzt1QkFBQyxjQUFjO2dCQUNLLFFBQVE7c0JBQWpDLEtBQUs7dUJBQUMsVUFBVTtnQkFFVSxTQUFTO3NCQUFuQyxLQUFLO3VCQUFDLFdBQVc7Z0JBR2MsY0FBYztzQkFBN0MsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBQ1MsY0FBYztzQkFBN0MsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBQ1EsYUFBYTtzQkFBM0MsS0FBSzt1QkFBQyxlQUFlO2dCQUVhLGlCQUFpQjtzQkFBbkQsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBQ08sZUFBZTtzQkFBL0MsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBQ00sWUFBWTtzQkFBekMsS0FBSzt1QkFBQyxjQUFjO2dCQUlaLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9lcGFBZGRyZXNzU2VydmljZSB9IGZyb20gJy4vb2VwYS1hZGRyZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2VwYUNvbXBvbmVudElkU2VydmljZSwgT0VQQUFkZHJlc3MgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWNvbW1vbi1saWInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLWFkZHJlc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRkcmVzcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9hZGRyZXNzLmNvbXBvbmVudC5jc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBBZGRyZXNzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIHppcENvZGVNYXNrID0gWy9cXGQvLCAvXFxkLywgL1xcZC8sIC9cXGQvLCAvXFxkL107XG4gIHB1YmxpYyBzaG93U3RhdGVzID0gdHJ1ZTtcbiAgcHVibGljIHVzU3RhdGVzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgY291bnRyaWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgY29tcG9uZW50SWQgPSAnT2VwYUFkZHJlc3NDb21wb25lbnQnO1xuXG4gIFxuICBwcml2YXRlIG9yaWdpbmFsQWRkcmVzcyE6IE9FUEFBZGRyZXNzO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICBASW5wdXQoKSBncm91cCE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgc2hvd1ZhbGlkYXRpb24gPSBmYWxzZTtcblxuICBASW5wdXQoJ2FkZHJlc3NPbmVMYWJlbCcpIHB1YmxpYyBhZGRyZXNzT25lTGFiZWw6IHN0cmluZyA9ICdBZGRyZXNzIDEnO1xuICBASW5wdXQoJ2FkZHJlc3NUd29MYWJlbCcpIHB1YmxpYyBhZGRyZXNzVHdvTGFiZWw6IHN0cmluZyA9ICdBZGRyZXNzIDInO1xuICBASW5wdXQoJ2NpdHlMYWJlbCcpIHB1YmxpYyBjaXR5TGFiZWw6IHN0cmluZyA9ICdDaXR5JztcbiAgQElucHV0KCdzdGF0ZUxhYmVsJykgcHVibGljIHN0YXRlTGFiZWw6IHN0cmluZyA9ICdTdGF0ZSc7XG4gIEBJbnB1dCgnemlwQ29kZUxhYmVsJykgcHVibGljIHppcENvZGVMYWJlbDogc3RyaW5nID0gJ1ppcCBDb2RlJztcbiAgQElucHV0KCdkaXNhYmxlU3RhdGUnKSBwdWJsaWMgZGlzYWJsZVN0YXRlOmJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCdpc1NlYXJjaCcpIHB1YmxpYyBpc1NlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnaGlkZUxpbmUyJykgcHVibGljIGhpZGVMaW5lMiA9IGZhbHNlO1xuXG4gIC8vIG1heCBsZW5ndGggdmFsdWVzLiBvdmVycmlkZSBpZiBuZWVkZWRcbiAgQElucHV0KCdsaW5lMU1heExlbmd0aCcpIHB1YmxpYyBsaW5lMU1heExlbmd0aCA9IDQwO1xuICBASW5wdXQoJ2xpbmUyTWF4TGVuZ3RoJykgcHVibGljIGxpbmUyTWF4TGVuZ3RoID0gNDA7XG4gIEBJbnB1dCgnY2l0eU1heExlbmd0aCcpIHB1YmxpYyBjaXR5TWF4TGVuZ3RoID0gMzA7XG4gIFxuICBASW5wdXQoJ2ZvcmVpZ25TdGF0ZUxhYmVsJykgcHVibGljIGZvcmVpZ25TdGF0ZUxhYmVsOiBzdHJpbmcgPSAnRm9yZWlnbiBTdGF0ZSc7XG4gIEBJbnB1dCgnZm9yZWlnblppcExhYmVsJykgcHVibGljIGZvcmVpZ25aaXBMYWJlbDogc3RyaW5nID0gJ0ZvcmVpZ24gWmlwIENvZGUnO1xuICBASW5wdXQoJ2NvdW50cnlMYWJlbCcpIHB1YmxpYyBjb3VudHJ5TGFiZWw6IHN0cmluZyA9ICdDb3VudHJ5JztcblxuICAvLyBUaGVzZSB2YWx1ZXMgYXJlIG9ubHkgdXNlZCBpZiB5b3Ugd2FudCBhIFwic2FtZSBhc1wiIGNoZWNrYm94IGZvciB0aGUgYWRkcmVzc1xuICAvLyBBbGwgdGhyZWUgdmFsdWVzIG11c3QgYmUgcHJvdmlkZWQgaWYgdXNpbmcgdGhlIFwic2FtZSBhc1wiIGNhcGFiaWxpdHlcbiAgQElucHV0KCkgc2FtZUFzR3JvdXAgITogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBzYW1lQXNMYWJlbCAhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNhbWVBc0NoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFkZHJlc3NTZXJ2aWNlOiBPZXBhQWRkcmVzc1NlcnZpY2UsIHByaXZhdGUgaWRTZXJ2aWNlOiBPZXBhQ29tcG9uZW50SWRTZXJ2aWNlKSB7XG4gICAgdGhpcy5hZGRyZXNzU2VydmljZS5nZXRTdGF0ZXMoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHN0YXRlcykgPT4ge1xuICAgICAgdGhpcy51c1N0YXRlcyA9IHN0YXRlcztcbiAgICB9LCBlcnJvcjogZXJyID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdFUlJPUiByZXRyaWV2aW5nIHN0YXRlcyBmb3IgYWRkcmVzczogJyArIGVycik7XG4gICAgfX0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgIFxuICAgICAgaWYodGhpcy5ncm91cC5jb250cm9sc1snY291bnRyeSddKXtcbiAgICAgICAgIHRoaXMuYWRkcmVzc1NlcnZpY2UuZ2V0Q291bnRyaWVzKCkuc3Vic2NyaWJlKHsgXG4gICAgICAgICAgbmV4dDogKGNvdW50cmllczogYW55KSA9PiB7XG4gICAgICAgICAgICBsZXQgY291bnRyeUxpc3Q6c3RyaW5nW109W107XG4gICAgICAgICAgICAvL1JlbW92ZSBcIkNheW1lbiBJc2xhbmRzXCJcbiAgICAgICAgICAgIGNvdW50cmllcy5mb3JFYWNoKChjb3VudHJ5OiBhbnkpID0+e1xuICAgICAgICAgICAgICBpZihjb3VudHJ5ICE9PSBcIkNheW1lbiBJc2xhbmRzXCIpXG4gICAgICAgICAgICAgICAgY291bnRyeUxpc3QucHVzaChjb3VudHJ5KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB0aGlzLmNvdW50cmllcyA9IGNvdW50cnlMaXN0O1xuICAgICAgICAgIH0sIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0VSUk9SIHJldHJpZXZpbmcgY291bnRyaWVzIGZvciBhZGRyZXNzOiAnICsgZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5jb21wb25lbnRJZCA9IHRoaXMuaWRTZXJ2aWNlLmdldENvbXBvbmVudElkKHRoaXMuZ3JvdXApO1xuICAgICAgdGhpcy5vcmlnaW5hbEFkZHJlc3MgPSB0aGlzLmFkZHJlc3NGcm9tRm9ybUdyb3VwKHRoaXMuZ3JvdXApO1xuICAgICAgdGhpcy5zdWJzY3JpYmVUb0NoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVDb3B5RnJvbVNlbGVjdGlvbigpIHtcbiAgICB0aGlzLnNhbWVBc0NoZWNrZWQgPSAhdGhpcy5zYW1lQXNDaGVja2VkO1xuICAgIGlmICh0aGlzLnNhbWVBc0NoZWNrZWQpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmVGcm9tQ2hhbmdlcygpO1xuICAgICAgdGhpcy5ncm91cC5wYXRjaFZhbHVlKHRoaXMuYWRkcmVzc0Zyb21Gb3JtR3JvdXAodGhpcy5zYW1lQXNHcm91cCkpO1xuICAgICAgdGhpcy5ncm91cC5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3Vic2NyaWJlVG9DaGFuZ2VzKCk7XG4gICAgICB0aGlzLmdyb3VwLnBhdGNoVmFsdWUodGhpcy5vcmlnaW5hbEFkZHJlc3MpO1xuICAgICAgdGhpcy5ncm91cC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZHJlc3NGcm9tRm9ybUdyb3VwKGdyb3VwOiBGb3JtR3JvdXApOiBPRVBBQWRkcmVzcyB7XG4gICAgbGV0IGFkZHJlc3M6IE9FUEFBZGRyZXNzID0ge307XG4gICAgaWYgKGdyb3VwKSB7XG4gICAgICBhZGRyZXNzID0ge1xuICAgICAgICBsaW5lMTogZ3JvdXAuY29udHJvbHNbJ2xpbmUxJ10udmFsdWUsXG4gICAgICAgIGxpbmUyOiBncm91cC5jb250cm9sc1snbGluZTInXS52YWx1ZSxcbiAgICAgICAgY2l0eTogZ3JvdXAuY29udHJvbHNbJ2NpdHknXS52YWx1ZSxcbiAgICAgICAgc3RhdGU6IGdyb3VwLmNvbnRyb2xzWydzdGF0ZSddLnZhbHVlLFxuICAgICAgICBwb3N0YWxDb2RlOiAoZ3JvdXAuY29udHJvbHNbJ2NvdW50cnknXSAmJiBncm91cC5jb250cm9sc1snY291bnRyeSddLnZhbHVlICE9PSAnVVNBJykgPyBncm91cC5jb250cm9sc1snZm9yZWlnblppcCddOmdyb3VwLmNvbnRyb2xzWydwb3N0YWxDb2RlJ10udmFsdWUsXG4gICAgICAgIGZvcmVpZ25TdGF0ZTogZ3JvdXAuY29udHJvbHNbJ2ZvcmVpZ25TdGF0ZSddPyBncm91cC5jb250cm9sc1snZm9yZWlnblN0YXRlJ10udmFsdWU6bnVsbCxcbiAgICAgICAgY291bnRyeTogZ3JvdXAuY29udHJvbHNbJ2NvdW50cnknXSA/IGdyb3VwLmNvbnRyb2xzWydjb3VudHJ5J10udmFsdWU6bnVsbFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYWRkcmVzcztcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9DaGFuZ2VzKCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5ncm91cC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGFkZHJlc3MgPT4ge1xuICAgICAgdGhpcy5vcmlnaW5hbEFkZHJlc3MubGluZTEgPSBhZGRyZXNzLmxpbmUxO1xuICAgICAgdGhpcy5vcmlnaW5hbEFkZHJlc3MubGluZTIgPSBhZGRyZXNzLmxpbmUyO1xuICAgICAgdGhpcy5vcmlnaW5hbEFkZHJlc3MuY2l0eSA9IGFkZHJlc3MuY2l0eTtcbiAgICAgIHRoaXMub3JpZ2luYWxBZGRyZXNzLnN0YXRlID0gYWRkcmVzcy5zdGF0ZTtcbiAgICAgIHRoaXMub3JpZ2luYWxBZGRyZXNzLnBvc3RhbENvZGUgPSAoYWRkcmVzcy5jb3VudHJ5ICYmIGFkZHJlc3MuY291bnRyeSAhPT0gJ1VTQScpID8gYWRkcmVzcy5mb3JlaWduWmlwOmFkZHJlc3MucG9zdGFsQ29kZTtcbiAgICAgIHRoaXMub3JpZ2luYWxBZGRyZXNzLmZvcmVpZ25TdGF0ZSA9IGFkZHJlc3MuZm9yZWlnblN0YXRlID8gYWRkcmVzcy5mb3JlaWduU3RhdGUgOiBudWxsO1xuICAgICAgdGhpcy5vcmlnaW5hbEFkZHJlc3MuY291bnRyeSA9IGFkZHJlc3MuY291bnRyeSA/IGFkZHJlc3MuY291bnRyeSA6IG51bGw7XG4gICAgICBcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVGcm9tQ2hhbmdlcygpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwic2FtZUFzR3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIFtuZ1N0eWxlXT1cInsgJ2ZvbnQtd2VpZ2h0Jzogc2FtZUFzQ2hlY2tlZCAmJiBncm91cC5kaXNhYmxlZCA/ICdib2xkJyA6ICcnIH1cIiBmb3I9XCJjb3B5RnJvbUNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7c2FtZUFzTGFiZWx9fSBcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiY29weUZyb21DaGVja2JveFwiIHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cInNhbWVBc0NoZWNrZWRcIiAoY2hhbmdlKT1cInRvZ2dsZUNvcHlGcm9tU2VsZWN0aW9uKClcIiBbZGlzYWJsZWRdPVwiZ3JvdXAucGFyZW50Py5kaXNhYmxlZFwiLz5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiIXNhbWVBc0dyb3VwIHx8ICFzYW1lQXNDaGVja2VkXCIgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJjb21wb25lbnRJZCsnX0xpbmUxSW5wdXQnXCI+e3thZGRyZXNzT25lTGFiZWx9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snbGluZTEnXS5zdGF0dXMgPT09ICdJTlZBTElEJ31cIiBcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiaXNTZWFyY2ggPyAnc2VhcmNoJyA6ICd0ZXh0J1wiIHBsYWNlaG9sZGVyPVwiQWRkcmVzc1wiIG1heGxlbmd0aD1cIjQwXCIgZm9ybUNvbnRyb2xOYW1lPVwibGluZTFcIiBbbWF4bGVuZ3RoXT1cImxpbmUxTWF4TGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImNvbXBvbmVudElkKydfTGluZTFJbnB1dCdcIj5cbiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snbGluZTEnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPnt7YWRkcmVzc09uZUxhYmVsfX0gaXMgcmVxdWlyZWQ8L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydsaW5lMSddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPnt7YWRkcmVzc09uZUxhYmVsfX0gaGFzIGV4Y2VlZGVkIGl0cyBtYXhpbXVtIGxlbmd0aDwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFoaWRlTGluZTJcIiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImNvbXBvbmVudElkKydfTGluZTJJbnB1dCdcIj57e2FkZHJlc3NUd29MYWJlbH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmNvbnRyb2xzWydsaW5lMiddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiXG4gICAgICAgICAgICAgICAgW3R5cGVdPVwiaXNTZWFyY2ggPyAnc2VhcmNoJyA6ICd0ZXh0J1wiIHBsYWNlaG9sZGVyPVwiQWRkcmVzc1wiIG1heGxlbmd0aD1cIjQwXCIgZm9ybUNvbnRyb2xOYW1lPVwibGluZTJcIiBbbWF4bGVuZ3RoXT1cImxpbmUyTWF4TGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImNvbXBvbmVudElkKydfTGluZTJJbnB1dCdcIj5cbiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snbGluZTInXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPnt7YWRkcmVzc1R3b0xhYmVsfX0gaXMgcmVxdWlyZWQ8L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydsaW5lMiddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPnt7YWRkcmVzc1R3b0xhYmVsfX0gaGFzIGV4Y2VlZGVkIGl0cyBtYXhpbXVtIGxlbmd0aDwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiY29tcG9uZW50SWQrJ19DaXR5SW5wdXQnXCI+e3tjaXR5TGFiZWx9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snY2l0eSddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImlzU2VhcmNoID8gJ3NlYXJjaCcgOiAndGV4dCdcIiBwbGFjZWhvbGRlcj1cIkNpdHlcIiBtYXhsZW5ndGg9XCIzMFwiIGZvcm1Db250cm9sTmFtZT1cImNpdHlcIiBbbWF4bGVuZ3RoXT1cImNpdHlNYXhMZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiY29tcG9uZW50SWQrJ19DaXR5SW5wdXQnXCI+XG4gICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2NpdHknXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPnt7Y2l0eUxhYmVsfX0gaXMgcmVxdWlyZWQ8L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydjaXR5J10uaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+e3tjaXR5TGFiZWx9fSBoYXMgZXhjZWVkZWQgaXRzIG1heGltdW0gbGVuZ3RoPC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd1N0YXRlcyAmJiAoIWdyb3VwLmNvbnRyb2xzWydjb3VudHJ5J10gfHwgZ3JvdXAuZ2V0KCdjb3VudHJ5Jyk/LnZhbHVlID09PSdVU0EnKVwiIGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImNvbXBvbmVudElkKydfU3RhdGVTZWxlY3QnXCI+e3tzdGF0ZUxhYmVsfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ3N0YXRlJ10uc3RhdHVzID09PSAnSU5WQUxJRCd9XCIgXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJBZGRyZXNzU3RhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJzdGF0ZVwiIFtpZF09XCJjb21wb25lbnRJZCsnX1N0YXRlU2VsZWN0J1wiIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVTdGF0ZSB8fCBncm91cC5kaXNhYmxlZCA/ICcnIDogbnVsbFwiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHMgb2YgdXNTdGF0ZXNcIiBbbmdWYWx1ZV09XCJzXCI+e3tzfX08L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ3N0YXRlJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5TdGF0ZSBpcyByZXF1aXJlZDwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFncm91cC5jb250cm9sc1snY291bnRyeSddICB8fCBncm91cC5nZXQoJ2NvdW50cnknKT8udmFsdWUgPT09J1VTQSdcIiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJjb21wb25lbnRJZCsnX1ppcElucHV0J1wiPnt7emlwQ29kZUxhYmVsfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ3Bvc3RhbENvZGUnXS5zdGF0dXMgPT09ICdJTlZBTElEJ31cIlxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJpc1NlYXJjaCA/ICdzZWFyY2gnIDogJ3RleHQnXCIgcGxhY2Vob2xkZXI9XCJaaXAgQ29kZVwiIGZvcm1Db250cm9sTmFtZT1cInBvc3RhbENvZGVcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19aaXBJbnB1dCdcIiBtYXNrPVwiMDAwMDBcIj5cbiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1sncG9zdGFsQ29kZSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+e3t6aXBDb2RlTGFiZWx9fSBpcyByZXF1aXJlZDwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ3Bvc3RhbENvZGUnXS5oYXNFcnJvcignbWlubGVuZ3RoJylcIj57e3ppcENvZGVMYWJlbH19IG11c3QgY29udGFpbiBleGFjdGx5IDUgZGlnaXRzPC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2NvdW50cnknXSAmJiBncm91cC5nZXQoJ2NvdW50cnknKT8udmFsdWUgIT09J1VTQSdcIiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiY29tcG9uZW50SWQrJ19Gb3JlaWduU3RhdGVJbnB1dCdcIj57e2ZvcmVpZ25TdGF0ZUxhYmVsfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ2ZvcmVpZ25TdGF0ZSddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkZvcmVpZ24gU3RhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJmb3JlaWduU3RhdGVcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19Gb3JlaWduU3RhdGVJbnB1dCdcIiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlU3RhdGUgfHwgZ3JvdXAuZGlzYWJsZWQgPyAnJyA6IG51bGxcIiA+XG4gICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2ZvcmVpZ25TdGF0ZSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+e3tmb3JlaWduU3RhdGVMYWJlbH19IGlzIHJlcXVpcmVkPC9zbWFsbD5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImNvbXBvbmVudElkKydfZm9yZWlnblppcElucHV0J1wiPnt7Zm9yZWlnblppcExhYmVsfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ2ZvcmVpZ25aaXAnXS5zdGF0dXMgPT09ICdJTlZBTElEJ31cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJGb3JlaWduIFppcCBDb2RlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZm9yZWlnblppcFwiIFtpZF09XCJjb21wb25lbnRJZCsnX2ZvcmVpZ25aaXBJbnB1dCdcIiAgPlxuICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydmb3JlaWduWmlwJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj57e2ZvcmVpZ25aaXBMYWJlbH19IGlzIHJlcXVpcmVkPC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snZm9yZWlnblppcCddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKVwiPnt7Zm9yZWlnblppcExhYmVsfX0gbXVzdCBjb250YWluIGV4YWN0bHkgPyBkaWdpdHM8L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+IFxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2NvdW50cnknXVwiIGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJjb21wb25lbnRJZCsnX0NvdW50cnlTZWxlY3QnXCI+e3tjb3VudHJ5TGFiZWx9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snY291bnRyeSddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiIFxuICAgICAgICAgICAgICAgIG5hbWU9XCJBZGRyZXNzQ291bnRyeVwiIGZvcm1Db250cm9sTmFtZT1cImNvdW50cnlcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19Db3VudHJ5U2VsZWN0J1wiIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVTdGF0ZSB8fCBncm91cC5kaXNhYmxlZCA/ICcnIDogbnVsbFwiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGMgb2YgY291bnRyaWVzXCIgW25nVmFsdWVdPVwiY1wiPnt7Y319PC9vcHRpb24+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydjb3VudHJ5J10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5Db3VudHJ5e3tjb3VudHJ5TGFiZWx9fSBpcyByZXF1aXJlZDwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -1,33 +1,24 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "@ohioepa/oepa-common-lib";
4
- import * as i2 from "@angular/common";
5
- import * as i3 from "@angular/forms";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/forms";
6
5
  export class CheckboxComponent {
7
- idService;
8
6
  group;
9
7
  field;
10
8
  label;
11
- componentId = 'OepaCheckbox';
12
- constructor(idService) {
13
- this.idService = idService;
14
- }
15
- ngOnInit() {
16
- if (this.group) {
17
- this.componentId = this.idService.getComponentId(this.group);
18
- }
19
- }
20
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckboxComponent, deps: [{ token: i1.OepaComponentIdService }], target: i0.ɵɵFactoryTarget.Component });
21
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CheckboxComponent, selector: "oepa-checkbox", inputs: { group: "group", field: "field", label: "label" }, ngImport: i0, template: "<span *ngIf=\"group.controls[field].value && group.disabled\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>\n<span [ngClass]=\"{ 'custom-checkbox': (group.controls[field].value && group.disabled) }\" [formGroup]=\"group\">\n <input [ngClass]=\"{ 'custom-control-input': (group.controls[field].value && group.disabled) }\" type=\"checkbox\" [formControlName]=\"field\" [id]=\"componentId\" [attr.aria-labelledby]=\"componentId+'_Label'\">\n <label [ngClass]=\"{ 'custom-control-label': (group.controls[field].value && group.disabled), 'label-bold': (group.controls[field].value && group.disabled) }\" [id]=\"componentId+'_Label'\">\n <span *ngIf=\"!group.controls[field].value || !group.disabled\">&nbsp;</span>\n {{label}}\n </label>\n</span>\n", styles: [".label-bold{font-weight:700}.custom-control-input:checked~.custom-control-label:before{color:#fff!important;background-color:#777!important;border-color:#777!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
9
+ constructor() { }
10
+ ngOnInit() { }
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CheckboxComponent, selector: "oepa-checkbox", inputs: { group: "group", field: "field", label: "label" }, ngImport: i0, template: "<span *ngIf=\"group.controls[field].value && group.disabled\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>\n<span [ngClass]=\"{ 'custom-checkbox': (group.controls[field].value && group.disabled) }\" [formGroup]=\"group\">\n <input \n [ngClass]=\"{ 'custom-control-input': (group.controls[field].value && group.disabled) }\"\n type=\"checkbox\"\n [formControlName]=\"field\"\n [id]=\"field\"\n >\n <label\n [ngClass]=\"{ 'custom-control-label': (group.controls[field].value && group.disabled), 'label-bold': (group.controls[field].value && group.disabled) }\"\n [for]=\"field\"\n >\n <span *ngIf=\"!group.controls[field].value || !group.disabled\">&nbsp;</span>\n {{label}}\n </label>\n</span>\n", styles: [".label-bold{font-weight:700}.custom-control-input:checked~.custom-control-label:before{color:#fff!important;background-color:#777!important;border-color:#777!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
22
13
  }
23
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckboxComponent, decorators: [{
24
15
  type: Component,
25
- args: [{ selector: 'oepa-checkbox', template: "<span *ngIf=\"group.controls[field].value && group.disabled\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>\n<span [ngClass]=\"{ 'custom-checkbox': (group.controls[field].value && group.disabled) }\" [formGroup]=\"group\">\n <input [ngClass]=\"{ 'custom-control-input': (group.controls[field].value && group.disabled) }\" type=\"checkbox\" [formControlName]=\"field\" [id]=\"componentId\" [attr.aria-labelledby]=\"componentId+'_Label'\">\n <label [ngClass]=\"{ 'custom-control-label': (group.controls[field].value && group.disabled), 'label-bold': (group.controls[field].value && group.disabled) }\" [id]=\"componentId+'_Label'\">\n <span *ngIf=\"!group.controls[field].value || !group.disabled\">&nbsp;</span>\n {{label}}\n </label>\n</span>\n", styles: [".label-bold{font-weight:700}.custom-control-input:checked~.custom-control-label:before{color:#fff!important;background-color:#777!important;border-color:#777!important}\n"] }]
26
- }], ctorParameters: () => [{ type: i1.OepaComponentIdService }], propDecorators: { group: [{
16
+ args: [{ selector: 'oepa-checkbox', template: "<span *ngIf=\"group.controls[field].value && group.disabled\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>\n<span [ngClass]=\"{ 'custom-checkbox': (group.controls[field].value && group.disabled) }\" [formGroup]=\"group\">\n <input \n [ngClass]=\"{ 'custom-control-input': (group.controls[field].value && group.disabled) }\"\n type=\"checkbox\"\n [formControlName]=\"field\"\n [id]=\"field\"\n >\n <label\n [ngClass]=\"{ 'custom-control-label': (group.controls[field].value && group.disabled), 'label-bold': (group.controls[field].value && group.disabled) }\"\n [for]=\"field\"\n >\n <span *ngIf=\"!group.controls[field].value || !group.disabled\">&nbsp;</span>\n {{label}}\n </label>\n</span>\n", styles: [".label-bold{font-weight:700}.custom-control-input:checked~.custom-control-label:before{color:#fff!important;background-color:#777!important;border-color:#777!important}\n"] }]
17
+ }], ctorParameters: () => [], propDecorators: { group: [{
27
18
  type: Input
28
19
  }], field: [{
29
20
  type: Input
30
21
  }], label: [{
31
22
  type: Input
32
23
  }] } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2VwYS11aS1saWIvc3JjL2xpYi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVN6RCxNQUFNLE9BQU8saUJBQWlCO0lBTVI7SUFMWCxLQUFLLENBQWE7SUFDbEIsS0FBSyxDQUFVO0lBQ2YsS0FBSyxDQUFVO0lBQ2pCLFdBQVcsR0FBRyxjQUFjLENBQUM7SUFFcEMsWUFBb0IsU0FBaUM7UUFBakMsY0FBUyxHQUFULFNBQVMsQ0FBd0I7SUFDckQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO3dHQWJVLGlCQUFpQjs0RkFBakIsaUJBQWlCLGlIQ1Q5Qix5dkJBUUE7OzRGRENhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlOzJGQUtoQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2VwYUNvbXBvbmVudElkU2VydmljZSB9IGZyb20gJ0BvaGlvZXBhL29lcGEtY29tbW9uLWxpYic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29lcGEtY2hlY2tib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBncm91cCE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgZmllbGQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhYmVsITogc3RyaW5nO1xuICBwdWJsaWMgY29tcG9uZW50SWQgPSAnT2VwYUNoZWNrYm94JztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlkU2VydmljZTogT2VwYUNvbXBvbmVudElkU2VydmljZSkgeyBcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudElkID0gdGhpcy5pZFNlcnZpY2UuZ2V0Q29tcG9uZW50SWQodGhpcy5ncm91cCk7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxzcGFuICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbZmllbGRdLnZhbHVlICYmIGdyb3VwLmRpc2FibGVkXCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPlxuPHNwYW4gW25nQ2xhc3NdPVwieyAnY3VzdG9tLWNoZWNrYm94JzogKGdyb3VwLmNvbnRyb2xzW2ZpZWxkXS52YWx1ZSAmJiBncm91cC5kaXNhYmxlZCkgfVwiIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cbiAgICA8aW5wdXQgW25nQ2xhc3NdPVwieyAnY3VzdG9tLWNvbnRyb2wtaW5wdXQnOiAoZ3JvdXAuY29udHJvbHNbZmllbGRdLnZhbHVlICYmIGdyb3VwLmRpc2FibGVkKSB9XCIgdHlwZT1cImNoZWNrYm94XCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZFwiIFtpZF09XCJjb21wb25lbnRJZFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJjb21wb25lbnRJZCsnX0xhYmVsJ1wiPlxuICAgIDxsYWJlbCBbbmdDbGFzc109XCJ7ICdjdXN0b20tY29udHJvbC1sYWJlbCc6IChncm91cC5jb250cm9sc1tmaWVsZF0udmFsdWUgJiYgZ3JvdXAuZGlzYWJsZWQpLCAnbGFiZWwtYm9sZCc6IChncm91cC5jb250cm9sc1tmaWVsZF0udmFsdWUgJiYgZ3JvdXAuZGlzYWJsZWQpIH1cIiBbaWRdPVwiY29tcG9uZW50SWQrJ19MYWJlbCdcIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhZ3JvdXAuY29udHJvbHNbZmllbGRdLnZhbHVlIHx8ICFncm91cC5kaXNhYmxlZFwiPiZuYnNwOzwvc3Bhbj5cbiAgICAgICAge3tsYWJlbH19XG4gICAgPC9sYWJlbD5cbjwvc3Bhbj5cbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2VwYS11aS1saWIvc3JjL2xpYi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBT3pELE1BQU0sT0FBTyxpQkFBaUI7SUFDbkIsS0FBSyxDQUFhO0lBQ2xCLEtBQUssQ0FBVTtJQUNmLEtBQUssQ0FBVTtJQUV4QixnQkFBa0IsQ0FBQztJQUVuQixRQUFRLEtBQU0sQ0FBQzt3R0FQSixpQkFBaUI7NEZBQWpCLGlCQUFpQixpSENQOUIsd3ZCQWdCQTs7NEZEVGEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGVBQWU7d0RBS2hCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLWNoZWNrYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hlY2tib3guY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrYm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZ3JvdXAhOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIGZpZWxkITogc3RyaW5nO1xuICBASW5wdXQoKSBsYWJlbCE6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHsgICB9XG5cbiAgbmdPbkluaXQoKSB7ICB9XG5cbn1cbiIsIjxzcGFuICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbZmllbGRdLnZhbHVlICYmIGdyb3VwLmRpc2FibGVkXCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPlxuPHNwYW4gW25nQ2xhc3NdPVwieyAnY3VzdG9tLWNoZWNrYm94JzogKGdyb3VwLmNvbnRyb2xzW2ZpZWxkXS52YWx1ZSAmJiBncm91cC5kaXNhYmxlZCkgfVwiIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cbiAgICA8aW5wdXQgXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2N1c3RvbS1jb250cm9sLWlucHV0JzogKGdyb3VwLmNvbnRyb2xzW2ZpZWxkXS52YWx1ZSAmJiBncm91cC5kaXNhYmxlZCkgfVwiXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGRcIlxuICAgICAgICBbaWRdPVwiZmllbGRcIlxuICAgID5cbiAgICA8bGFiZWxcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnY3VzdG9tLWNvbnRyb2wtbGFiZWwnOiAoZ3JvdXAuY29udHJvbHNbZmllbGRdLnZhbHVlICYmIGdyb3VwLmRpc2FibGVkKSwgJ2xhYmVsLWJvbGQnOiAoZ3JvdXAuY29udHJvbHNbZmllbGRdLnZhbHVlICYmIGdyb3VwLmRpc2FibGVkKSB9XCJcbiAgICAgICAgW2Zvcl09XCJmaWVsZFwiXG4gICAgPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFncm91cC5jb250cm9sc1tmaWVsZF0udmFsdWUgfHwgIWdyb3VwLmRpc2FibGVkXCI+Jm5ic3A7PC9zcGFuPlxuICAgICAgICB7e2xhYmVsfX1cbiAgICA8L2xhYmVsPlxuPC9zcGFuPlxuIl19
@@ -38,11 +38,11 @@ export class ContactComponent {
38
38
  }
39
39
  }
40
40
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContactComponent, deps: [{ token: i1.OepaComponentIdService }], target: i0.ɵɵFactoryTarget.Component });
41
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ContactComponent, selector: "oepa-contact", inputs: { group: "group", showValidation: "showValidation", firstNameLabel: "firstNameLabel", lastNameLabel: "lastNameLabel", showMiddleName: "showMiddleName", middleNameLabel: "middleNameLabel", emailLabel: "emailLabel", phoneLabel: "phoneLabel", faxLabel: "faxLabel", noFax: "noFax", showTitle: "showTitle", noPhone: "noPhone", noEmail: "noEmail", isSearch: "isSearch", firstNameMaxLength: "firstNameMaxLength", middleNameMaxLength: "middleNameMaxLength", lastNameMaxLength: "lastNameMaxLength", titleMaxLength: "titleMaxLength", emailMaxLength: "emailMaxLength" }, ngImport: i0, template: "<div [formGroup]=\"group\">\n\t<div *ngIf=\"!showMiddleName\" class=\"row\">\n\t\t<div class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label id=\"firstNameLabel\">{{firstNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['firstName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"First Name\" formControlName=\"firstName\" [id]=\"componentId+'_FirstNameInput'\" [maxlength]=\"firstNameMaxLength\" [attr.aria-labelledby]=\"'firstNameLabel'\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('required')\">{{firstNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('maxlength')\">{{firstNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label id=\"lastNameLabel\">{{lastNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['lastName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Last Name\" formControlName=\"lastName\" [id]=\"componentId+'_LastNameInput'\" [maxlength]=\"lastNameMaxLength\" [attr.aria-labelledby]=\"'lastNameLabel'\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('required')\">{{lastNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('maxlength')\">{{lastNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf=\"showMiddleName\" class=\"row\">\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label id=\"firstNameLabel\">{{firstNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['firstName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"First Name\" formControlName=\"firstName\" [id]=\"componentId+'_FirstNameInput'\" [maxlength]=\"firstNameMaxLength\" [attr.aria-labelledby]=\"'firstNameLabel'\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('required')\">{{firstNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('maxlength')\">{{firstNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\" [ngClass]=\"{'is-invalid':showValidation && group.controls['middleName'].status === 'INVALID'}\">\n\t\t\t\t<label id=\"middleNameLabel\">{{middleNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" placeholder=\"Middle Name\" formControlName=\"middleName\" [id]=\"componentId+'_MiddleNameInput'\" [maxlength]=\"middleNameMaxLength\" [attr.aria-labelledby]=\"'middleNameLabel'\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"showValidation && group.controls['middleName'].status === 'INVALID'\">Middle Name is required</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{lastNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['lastName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Last Name\" formControlName=\"lastName\" [id]=\"componentId+'_LastNameInput'\" [maxlength]=\"lastNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('required')\">{{lastNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('maxlength')\">{{lastNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf=\"showTitle\" class=\"row\">\n\t\t<div class=\"col-md-12\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>Title</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" placeholder=\"Title\" \n\t\t\t\t[ngClass]=\"{'is-invalid':showValidation && group.controls['title'].status === 'INVALID'}\"\n\t\t\t\tformControlName=\"title\" [id]=\"componentId+'_TitleInput'\" [maxlength]=\"titleMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['title'].hasError('required')\">Title is required</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"row\">\n\t\t<div *ngIf=\"!noEmail\" class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{emailLabel}}</label>\n\t\t\t\t<input type=\"email\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['emailAddress'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Email\" formControlName=\"emailAddress\" [id]=\"componentId+'_EmailInput'\" [maxlength]=\"emailMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('required')\">{{emailLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('maxlength')\">{{emailLabel}} has exceeded its maximum length</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('email')\">Please enter a valid email address</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div [ngClass]=\"{ 'col-md-3': !noFax, 'col-md-6': noFax }\">\n\t\t\t<div *ngIf=\"!noPhone\" class=\"form-group\">\n\t\t\t\t<label>{{phoneLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['phoneNumber'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"(xxx) xxx-xxxx\" formControlName=\"phoneNumber\" [id]=\"componentId+'_PhoneInput'\" mask=\"(000) 000-0000\" minlength=\"10\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['phoneNumber'].hasError('required')\">{{phoneLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['phoneNumber'].hasError('minlength')\">Please enter a valid phone number</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"!noFax\" class=\"col-md-3\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{faxLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['faxNumber'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"(xxx) xxx-xxxx\" formControlName=\"faxNumber\" [id]=\"componentId+'_FaxInput'\" mask=\"(000) 000-0000\" minlength=\"10\">\n\t\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['faxNumber'].hasError('required')\">{{faxLabel}} is required</small>\n\t\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['faxNumber'].hasError('minlength')\">Please enter a valid phone number</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }] });
41
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ContactComponent, selector: "oepa-contact", inputs: { group: "group", showValidation: "showValidation", firstNameLabel: "firstNameLabel", lastNameLabel: "lastNameLabel", showMiddleName: "showMiddleName", middleNameLabel: "middleNameLabel", emailLabel: "emailLabel", phoneLabel: "phoneLabel", faxLabel: "faxLabel", noFax: "noFax", showTitle: "showTitle", noPhone: "noPhone", noEmail: "noEmail", isSearch: "isSearch", firstNameMaxLength: "firstNameMaxLength", middleNameMaxLength: "middleNameMaxLength", lastNameMaxLength: "lastNameMaxLength", titleMaxLength: "titleMaxLength", emailMaxLength: "emailMaxLength" }, ngImport: i0, template: "<div [formGroup]=\"group\">\n\t<div *ngIf=\"!showMiddleName\" class=\"row\">\n\t\t<div class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label [for]=\"componentId+'_FirstNameInput'\">{{firstNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['firstName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"First Name\" formControlName=\"firstName\" [id]=\"componentId+'_FirstNameInput'\" [maxlength]=\"firstNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('required')\">{{firstNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('maxlength')\">{{firstNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label [for]=\"componentId+'_LastNameInput'\">{{lastNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['lastName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Last Name\" formControlName=\"lastName\" [id]=\"componentId+'_LastNameInput'\" [maxlength]=\"lastNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('required')\">{{lastNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('maxlength')\">{{lastNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf=\"showMiddleName\" class=\"row\">\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label [for]=\"componentId+'_FirstNameInput'\">{{firstNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['firstName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"First Name\" formControlName=\"firstName\" [id]=\"componentId+'_FirstNameInput'\" [maxlength]=\"firstNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('required')\">{{firstNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('maxlength')\">{{firstNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\" [ngClass]=\"{'is-invalid':showValidation && group.controls['middleName'].status === 'INVALID'}\">\n\t\t\t\t<label [for]=\"componentId+'_MiddleNameInput'\">{{middleNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" placeholder=\"Middle Name\" formControlName=\"middleName\" [id]=\"componentId+'_MiddleNameInput'\" [maxlength]=\"middleNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"showValidation && group.controls['middleName'].status === 'INVALID'\">Middle Name is required</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label [for]=\"componentId+'_LastNameInput'\">{{lastNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['lastName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Last Name\" formControlName=\"lastName\" [id]=\"componentId+'_LastNameInput'\" [maxlength]=\"lastNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('required')\">{{lastNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('maxlength')\">{{lastNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf=\"showTitle\" class=\"row\">\n\t\t<div class=\"col-md-12\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label [for]=\"componentId+'_TitleInput'\">Title</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" placeholder=\"Title\" \n\t\t\t\t[ngClass]=\"{'is-invalid':showValidation && group.controls['title'].status === 'INVALID'}\"\n\t\t\t\tformControlName=\"title\" [id]=\"componentId+'_TitleInput'\" [maxlength]=\"titleMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['title'].hasError('required')\">Title is required</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"row\">\n\t\t<div *ngIf=\"!noEmail\" class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label [for]=\"componentId+'_EmailInput'\">{{emailLabel}}</label>\n\t\t\t\t<input type=\"email\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['emailAddress'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Email\" formControlName=\"emailAddress\" [id]=\"componentId+'_EmailInput'\" [maxlength]=\"emailMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('required')\">{{emailLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('maxlength')\">{{emailLabel}} has exceeded its maximum length</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('email')\">Please enter a valid email address</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div [ngClass]=\"{ 'col-md-3': !noFax, 'col-md-6': noFax }\">\n\t\t\t<div *ngIf=\"!noPhone\" class=\"form-group\">\n\t\t\t\t<label [for]=\"componentId+'_PhoneInput'\">{{phoneLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['phoneNumber'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"(xxx) xxx-xxxx\" formControlName=\"phoneNumber\" [id]=\"componentId+'_PhoneInput'\" mask=\"(000) 000-0000\" minlength=\"10\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['phoneNumber'].hasError('required')\">{{phoneLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['phoneNumber'].hasError('minlength')\">Please enter a valid phone number</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"!noFax\" class=\"col-md-3\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label [for]=\"componentId+'_FaxInput'\">{{faxLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['faxNumber'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"(xxx) xxx-xxxx\" formControlName=\"faxNumber\" [id]=\"componentId+'_FaxInput'\" mask=\"(000) 000-0000\" minlength=\"10\">\n\t\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['faxNumber'].hasError('required')\">{{faxLabel}} is required</small>\n\t\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['faxNumber'].hasError('minlength')\">Please enter a valid phone number</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }] });
42
42
  }
43
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContactComponent, decorators: [{
44
44
  type: Component,
45
- args: [{ selector: 'oepa-contact', template: "<div [formGroup]=\"group\">\n\t<div *ngIf=\"!showMiddleName\" class=\"row\">\n\t\t<div class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label id=\"firstNameLabel\">{{firstNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['firstName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"First Name\" formControlName=\"firstName\" [id]=\"componentId+'_FirstNameInput'\" [maxlength]=\"firstNameMaxLength\" [attr.aria-labelledby]=\"'firstNameLabel'\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('required')\">{{firstNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('maxlength')\">{{firstNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label id=\"lastNameLabel\">{{lastNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['lastName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Last Name\" formControlName=\"lastName\" [id]=\"componentId+'_LastNameInput'\" [maxlength]=\"lastNameMaxLength\" [attr.aria-labelledby]=\"'lastNameLabel'\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('required')\">{{lastNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('maxlength')\">{{lastNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf=\"showMiddleName\" class=\"row\">\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label id=\"firstNameLabel\">{{firstNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['firstName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"First Name\" formControlName=\"firstName\" [id]=\"componentId+'_FirstNameInput'\" [maxlength]=\"firstNameMaxLength\" [attr.aria-labelledby]=\"'firstNameLabel'\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('required')\">{{firstNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('maxlength')\">{{firstNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\" [ngClass]=\"{'is-invalid':showValidation && group.controls['middleName'].status === 'INVALID'}\">\n\t\t\t\t<label id=\"middleNameLabel\">{{middleNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" placeholder=\"Middle Name\" formControlName=\"middleName\" [id]=\"componentId+'_MiddleNameInput'\" [maxlength]=\"middleNameMaxLength\" [attr.aria-labelledby]=\"'middleNameLabel'\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"showValidation && group.controls['middleName'].status === 'INVALID'\">Middle Name is required</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{lastNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['lastName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Last Name\" formControlName=\"lastName\" [id]=\"componentId+'_LastNameInput'\" [maxlength]=\"lastNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('required')\">{{lastNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('maxlength')\">{{lastNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf=\"showTitle\" class=\"row\">\n\t\t<div class=\"col-md-12\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>Title</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" placeholder=\"Title\" \n\t\t\t\t[ngClass]=\"{'is-invalid':showValidation && group.controls['title'].status === 'INVALID'}\"\n\t\t\t\tformControlName=\"title\" [id]=\"componentId+'_TitleInput'\" [maxlength]=\"titleMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['title'].hasError('required')\">Title is required</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"row\">\n\t\t<div *ngIf=\"!noEmail\" class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{emailLabel}}</label>\n\t\t\t\t<input type=\"email\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['emailAddress'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Email\" formControlName=\"emailAddress\" [id]=\"componentId+'_EmailInput'\" [maxlength]=\"emailMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('required')\">{{emailLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('maxlength')\">{{emailLabel}} has exceeded its maximum length</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('email')\">Please enter a valid email address</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div [ngClass]=\"{ 'col-md-3': !noFax, 'col-md-6': noFax }\">\n\t\t\t<div *ngIf=\"!noPhone\" class=\"form-group\">\n\t\t\t\t<label>{{phoneLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['phoneNumber'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"(xxx) xxx-xxxx\" formControlName=\"phoneNumber\" [id]=\"componentId+'_PhoneInput'\" mask=\"(000) 000-0000\" minlength=\"10\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['phoneNumber'].hasError('required')\">{{phoneLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['phoneNumber'].hasError('minlength')\">Please enter a valid phone number</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"!noFax\" class=\"col-md-3\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{faxLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['faxNumber'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"(xxx) xxx-xxxx\" formControlName=\"faxNumber\" [id]=\"componentId+'_FaxInput'\" mask=\"(000) 000-0000\" minlength=\"10\">\n\t\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['faxNumber'].hasError('required')\">{{faxLabel}} is required</small>\n\t\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['faxNumber'].hasError('minlength')\">Please enter a valid phone number</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>" }]
45
+ args: [{ selector: 'oepa-contact', template: "<div [formGroup]=\"group\">\n\t<div *ngIf=\"!showMiddleName\" class=\"row\">\n\t\t<div class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label [for]=\"componentId+'_FirstNameInput'\">{{firstNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['firstName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"First Name\" formControlName=\"firstName\" [id]=\"componentId+'_FirstNameInput'\" [maxlength]=\"firstNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('required')\">{{firstNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('maxlength')\">{{firstNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label [for]=\"componentId+'_LastNameInput'\">{{lastNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['lastName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Last Name\" formControlName=\"lastName\" [id]=\"componentId+'_LastNameInput'\" [maxlength]=\"lastNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('required')\">{{lastNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('maxlength')\">{{lastNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf=\"showMiddleName\" class=\"row\">\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label [for]=\"componentId+'_FirstNameInput'\">{{firstNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['firstName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"First Name\" formControlName=\"firstName\" [id]=\"componentId+'_FirstNameInput'\" [maxlength]=\"firstNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('required')\">{{firstNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('maxlength')\">{{firstNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\" [ngClass]=\"{'is-invalid':showValidation && group.controls['middleName'].status === 'INVALID'}\">\n\t\t\t\t<label [for]=\"componentId+'_MiddleNameInput'\">{{middleNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" placeholder=\"Middle Name\" formControlName=\"middleName\" [id]=\"componentId+'_MiddleNameInput'\" [maxlength]=\"middleNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"showValidation && group.controls['middleName'].status === 'INVALID'\">Middle Name is required</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label [for]=\"componentId+'_LastNameInput'\">{{lastNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['lastName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Last Name\" formControlName=\"lastName\" [id]=\"componentId+'_LastNameInput'\" [maxlength]=\"lastNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('required')\">{{lastNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('maxlength')\">{{lastNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf=\"showTitle\" class=\"row\">\n\t\t<div class=\"col-md-12\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label [for]=\"componentId+'_TitleInput'\">Title</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" placeholder=\"Title\" \n\t\t\t\t[ngClass]=\"{'is-invalid':showValidation && group.controls['title'].status === 'INVALID'}\"\n\t\t\t\tformControlName=\"title\" [id]=\"componentId+'_TitleInput'\" [maxlength]=\"titleMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['title'].hasError('required')\">Title is required</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"row\">\n\t\t<div *ngIf=\"!noEmail\" class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label [for]=\"componentId+'_EmailInput'\">{{emailLabel}}</label>\n\t\t\t\t<input type=\"email\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['emailAddress'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Email\" formControlName=\"emailAddress\" [id]=\"componentId+'_EmailInput'\" [maxlength]=\"emailMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('required')\">{{emailLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('maxlength')\">{{emailLabel}} has exceeded its maximum length</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('email')\">Please enter a valid email address</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div [ngClass]=\"{ 'col-md-3': !noFax, 'col-md-6': noFax }\">\n\t\t\t<div *ngIf=\"!noPhone\" class=\"form-group\">\n\t\t\t\t<label [for]=\"componentId+'_PhoneInput'\">{{phoneLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['phoneNumber'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"(xxx) xxx-xxxx\" formControlName=\"phoneNumber\" [id]=\"componentId+'_PhoneInput'\" mask=\"(000) 000-0000\" minlength=\"10\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['phoneNumber'].hasError('required')\">{{phoneLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['phoneNumber'].hasError('minlength')\">Please enter a valid phone number</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"!noFax\" class=\"col-md-3\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label [for]=\"componentId+'_FaxInput'\">{{faxLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['faxNumber'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"(xxx) xxx-xxxx\" formControlName=\"faxNumber\" [id]=\"componentId+'_FaxInput'\" mask=\"(000) 000-0000\" minlength=\"10\">\n\t\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['faxNumber'].hasError('required')\">{{faxLabel}} is required</small>\n\t\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['faxNumber'].hasError('minlength')\">Please enter a valid phone number</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>" }]
46
46
  }], ctorParameters: () => [{ type: i1.OepaComponentIdService }], propDecorators: { group: [{
47
47
  type: Input
48
48
  }], showValidation: [{
@@ -99,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
99
99
  type: Input,
100
100
  args: ['emailMaxLength']
101
101
  }] } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2NvbnRhY3QvY29udGFjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2NvbnRhY3QvY29udGFjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBVXpELE1BQU0sT0FBTyxnQkFBZ0I7SUE0QlA7SUExQmIsV0FBVyxHQUFHLHNCQUFzQixDQUFDO0lBQzVDLDBEQUEwRDtJQUNqRCxLQUFLLENBQWE7SUFDM0IscUVBQXFFO0lBQzVELGNBQWMsR0FBRyxLQUFLLENBQUM7SUFFQSxjQUFjLEdBQVcsWUFBWSxDQUFDO0lBQ3ZDLGFBQWEsR0FBVyxXQUFXLENBQUM7SUFDbkMsY0FBYyxHQUFZLEtBQUssQ0FBQztJQUMvQixlQUFlLEdBQVcsYUFBYSxDQUFDO0lBQzdDLFVBQVUsR0FBVyxPQUFPLENBQUM7SUFDN0IsVUFBVSxHQUFXLE9BQU8sQ0FBQztJQUMvQixRQUFRLEdBQVcsS0FBSyxDQUFDO0lBQzVCLEtBQUssR0FBWSxLQUFLLENBQUE7SUFDbEIsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUM3QixPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ3pCLE9BQU8sR0FBWSxLQUFLLENBQUM7SUFDeEIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUVsRCx3Q0FBd0M7SUFDSixrQkFBa0IsR0FBRyxFQUFFLENBQUM7SUFDdkIsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQzNCLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUMxQixjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFFdEQsWUFBb0IsU0FBaUM7UUFBakMsY0FBUyxHQUFULFNBQVMsQ0FBd0I7SUFDckQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO3dHQW5DVSxnQkFBZ0I7NEZBQWhCLGdCQUFnQiw0bUJDVjdCLHk2TkF5Rk07OzRGRC9FTyxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsY0FBYzsyRkFRZixLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFMEIsY0FBYztzQkFBN0MsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBQ1EsYUFBYTtzQkFBM0MsS0FBSzt1QkFBQyxlQUFlO2dCQUNVLGNBQWM7c0JBQTdDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNVLGVBQWU7c0JBQS9DLEtBQUs7dUJBQUMsaUJBQWlCO2dCQUNJLFVBQVU7c0JBQXJDLEtBQUs7dUJBQUMsWUFBWTtnQkFDUyxVQUFVO3NCQUFyQyxLQUFLO3VCQUFDLFlBQVk7Z0JBQ08sUUFBUTtzQkFBakMsS0FBSzt1QkFBQyxVQUFVO2dCQUNNLEtBQUs7c0JBQTNCLEtBQUs7dUJBQUMsT0FBTztnQkFDYSxTQUFTO3NCQUFuQyxLQUFLO3VCQUFDLFdBQVc7Z0JBQ08sT0FBTztzQkFBL0IsS0FBSzt1QkFBQyxTQUFTO2dCQUNTLE9BQU87c0JBQS9CLEtBQUs7dUJBQUMsU0FBUztnQkFDVSxRQUFRO3NCQUFqQyxLQUFLO3VCQUFDLFVBQVU7Z0JBR3FCLGtCQUFrQjtzQkFBckQsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBQ1UsbUJBQW1CO3NCQUF2RCxLQUFLO3VCQUFDLHFCQUFxQjtnQkFDTyxpQkFBaUI7c0JBQW5ELEtBQUs7dUJBQUMsbUJBQW1CO2dCQUNNLGNBQWM7c0JBQTdDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNTLGNBQWM7c0JBQTdDLEtBQUs7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE9lcGFDb21wb25lbnRJZFNlcnZpY2UgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWNvbW1vbi1saWInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLWNvbnRhY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGFjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRhY3QuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIENvbnRhY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBjb21wb25lbnRJZCA9ICdPZXBhQ29udGFjdENvbXBvbmVudCc7XG4gIC8qKiAgVGhlIGZvcm0gZ3JvdXAgZm9yIHdoaWNoIHRoaXMgYWRkcmVzcyBpcyBhIG1lbWJlci4gKi9cbiAgQElucHV0KCkgZ3JvdXAhOiBGb3JtR3JvdXA7XG4gIC8qKiBGb3JtIHZhbGlkYXRpb24gd2lsbCBiZSBkaXNwbGF5ZWQgd2hlbiBzaG93VmFsaWRhdGlvbiBpcyB0cnVlLiAqL1xuICBASW5wdXQoKSBzaG93VmFsaWRhdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnZmlyc3ROYW1lTGFiZWwnKSBwdWJsaWMgZmlyc3ROYW1lTGFiZWw6IHN0cmluZyA9ICdGaXJzdCBOYW1lJztcbiAgQElucHV0KCdsYXN0TmFtZUxhYmVsJykgcHVibGljIGxhc3ROYW1lTGFiZWw6IHN0cmluZyA9ICdMYXN0IE5hbWUnO1xuICBASW5wdXQoJ3Nob3dNaWRkbGVOYW1lJykgcHVibGljIHNob3dNaWRkbGVOYW1lOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgnbWlkZGxlTmFtZUxhYmVsJykgcHVibGljIG1pZGRsZU5hbWVMYWJlbDogc3RyaW5nID0gJ01pZGRsZSBOYW1lJztcbiAgQElucHV0KCdlbWFpbExhYmVsJykgcHVibGljIGVtYWlsTGFiZWw6IHN0cmluZyA9ICdFbWFpbCc7XG4gIEBJbnB1dCgncGhvbmVMYWJlbCcpIHB1YmxpYyBwaG9uZUxhYmVsOiBzdHJpbmcgPSAnUGhvbmUnO1xuICBASW5wdXQoJ2ZheExhYmVsJykgcHVibGljIGZheExhYmVsOiBzdHJpbmcgPSAnRmF4JztcbiAgQElucHV0KCdub0ZheCcpIHB1YmxpYyBub0ZheDogYm9vbGVhbiA9IGZhbHNlXG4gIEBJbnB1dCgnc2hvd1RpdGxlJykgcHVibGljIHNob3dUaXRsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ25vUGhvbmUnKSBwdWJsaWMgbm9QaG9uZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ25vRW1haWwnKSBwdWJsaWMgbm9FbWFpbDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ2lzU2VhcmNoJykgcHVibGljIGlzU2VhcmNoOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBtYXggbGVuZ3RoIHZhbHVlcy4gb3ZlcnJpZGUgaWYgbmVlZGVkXG4gICAgQElucHV0KCdmaXJzdE5hbWVNYXhMZW5ndGgnKSBwdWJsaWMgZmlyc3ROYW1lTWF4TGVuZ3RoID0gNTA7XG4gICAgQElucHV0KCdtaWRkbGVOYW1lTWF4TGVuZ3RoJykgcHVibGljIG1pZGRsZU5hbWVNYXhMZW5ndGggPSA1MDtcbiAgICBASW5wdXQoJ2xhc3ROYW1lTWF4TGVuZ3RoJykgcHVibGljIGxhc3ROYW1lTWF4TGVuZ3RoID0gNTA7XG4gICAgQElucHV0KCd0aXRsZU1heExlbmd0aCcpIHB1YmxpYyB0aXRsZU1heExlbmd0aCA9IDQwO1xuICAgIEBJbnB1dCgnZW1haWxNYXhMZW5ndGgnKSBwdWJsaWMgZW1haWxNYXhMZW5ndGggPSA4MDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlkU2VydmljZTogT2VwYUNvbXBvbmVudElkU2VydmljZSkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgIHRoaXMuY29tcG9uZW50SWQgPSB0aGlzLmlkU2VydmljZS5nZXRDb21wb25lbnRJZCh0aGlzLmdyb3VwKTtcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XG5cdDxkaXYgKm5nSWY9XCIhc2hvd01pZGRsZU5hbWVcIiBjbGFzcz1cInJvd1wiPlxuXHRcdDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cblx0XHRcdFx0PGxhYmVsIGlkPVwiZmlyc3ROYW1lTGFiZWxcIj57e2ZpcnN0TmFtZUxhYmVsfX08L2xhYmVsPlxuXHRcdFx0XHQ8aW5wdXQgW3R5cGVdPVwiaXNTZWFyY2ggPyAnc2VhcmNoJyA6ICd0ZXh0J1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snZmlyc3ROYW1lJ10uc3RhdHVzID09PSAnSU5WQUxJRCd9XCJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIkZpcnN0IE5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJmaXJzdE5hbWVcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19GaXJzdE5hbWVJbnB1dCdcIiBbbWF4bGVuZ3RoXT1cImZpcnN0TmFtZU1heExlbmd0aFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInZmlyc3ROYW1lTGFiZWwnXCI+XG5cdFx0XHRcdDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydmaXJzdE5hbWUnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPnt7Zmlyc3ROYW1lTGFiZWx9fSBpcyByZXF1aXJlZDwvc21hbGw+XG5cdFx0XHRcdDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydmaXJzdE5hbWUnXS5oYXNFcnJvcignbWF4bGVuZ3RoJylcIj57e2ZpcnN0TmFtZUxhYmVsfX0gaGFzIGV4Y2VlZGVkIGl0cyBtYXhpbXVtIGxlbmd0aDwvc21hbGw+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG5cdFx0XHRcdDxsYWJlbCBpZD1cImxhc3ROYW1lTGFiZWxcIj57e2xhc3ROYW1lTGFiZWx9fTwvbGFiZWw+XG5cdFx0XHRcdDxpbnB1dCBbdHlwZV09XCJpc1NlYXJjaCA/ICdzZWFyY2gnIDogJ3RleHQnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmNvbnRyb2xzWydsYXN0TmFtZSddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJMYXN0IE5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJsYXN0TmFtZVwiIFtpZF09XCJjb21wb25lbnRJZCsnX0xhc3ROYW1lSW5wdXQnXCIgW21heGxlbmd0aF09XCJsYXN0TmFtZU1heExlbmd0aFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFzdE5hbWVMYWJlbCdcIj5cblx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2xhc3ROYW1lJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj57e2xhc3ROYW1lTGFiZWx9fSBpcyByZXF1aXJlZDwvc21hbGw+XG5cdFx0XHRcdDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydsYXN0TmFtZSddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPnt7bGFzdE5hbWVMYWJlbH19IGhhcyBleGNlZWRlZCBpdHMgbWF4aW11bSBsZW5ndGg8L3NtYWxsPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdDwvZGl2PlxuXHQ8ZGl2ICpuZ0lmPVwic2hvd01pZGRsZU5hbWVcIiBjbGFzcz1cInJvd1wiPlxuXHRcdDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cblx0XHRcdFx0PGxhYmVsIGlkPVwiZmlyc3ROYW1lTGFiZWxcIj57e2ZpcnN0TmFtZUxhYmVsfX08L2xhYmVsPlxuXHRcdFx0XHQ8aW5wdXQgW3R5cGVdPVwiaXNTZWFyY2ggPyAnc2VhcmNoJyA6ICd0ZXh0J1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snZmlyc3ROYW1lJ10uc3RhdHVzID09PSAnSU5WQUxJRCd9XCJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIkZpcnN0IE5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJmaXJzdE5hbWVcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19GaXJzdE5hbWVJbnB1dCdcIiBbbWF4bGVuZ3RoXT1cImZpcnN0TmFtZU1heExlbmd0aFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInZmlyc3ROYW1lTGFiZWwnXCI+XG5cdFx0XHRcdDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydmaXJzdE5hbWUnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPnt7Zmlyc3ROYW1lTGFiZWx9fSBpcyByZXF1aXJlZDwvc21hbGw+XG5cdFx0XHRcdDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydmaXJzdE5hbWUnXS5oYXNFcnJvcignbWF4bGVuZ3RoJylcIj57e2ZpcnN0TmFtZUxhYmVsfX0gaGFzIGV4Y2VlZGVkIGl0cyBtYXhpbXVtIGxlbmd0aDwvc21hbGw+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snbWlkZGxlTmFtZSddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiPlxuXHRcdFx0XHQ8bGFiZWwgaWQ9XCJtaWRkbGVOYW1lTGFiZWxcIj57e21pZGRsZU5hbWVMYWJlbH19PC9sYWJlbD5cblx0XHRcdFx0PGlucHV0IFt0eXBlXT1cImlzU2VhcmNoID8gJ3NlYXJjaCcgOiAndGV4dCdcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiTWlkZGxlIE5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJtaWRkbGVOYW1lXCIgW2lkXT1cImNvbXBvbmVudElkKydfTWlkZGxlTmFtZUlucHV0J1wiIFttYXhsZW5ndGhdPVwibWlkZGxlTmFtZU1heExlbmd0aFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbWlkZGxlTmFtZUxhYmVsJ1wiPlxuXHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snbWlkZGxlTmFtZSddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnXCI+TWlkZGxlIE5hbWUgaXMgcmVxdWlyZWQ8L3NtYWxsPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuXHRcdFx0XHQ8bGFiZWw+e3tsYXN0TmFtZUxhYmVsfX08L2xhYmVsPlxuXHRcdFx0XHQ8aW5wdXQgW3R5cGVdPVwiaXNTZWFyY2ggPyAnc2VhcmNoJyA6ICd0ZXh0J1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snbGFzdE5hbWUnXS5zdGF0dXMgPT09ICdJTlZBTElEJ31cIlxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiTGFzdCBOYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwibGFzdE5hbWVcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19MYXN0TmFtZUlucHV0J1wiIFttYXhsZW5ndGhdPVwibGFzdE5hbWVNYXhMZW5ndGhcIj5cblx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2xhc3ROYW1lJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj57e2xhc3ROYW1lTGFiZWx9fSBpcyByZXF1aXJlZDwvc21hbGw+XG5cdFx0XHRcdDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydsYXN0TmFtZSddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPnt7bGFzdE5hbWVMYWJlbH19IGhhcyBleGNlZWRlZCBpdHMgbWF4aW11bSBsZW5ndGg8L3NtYWxsPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdDwvZGl2PlxuXHQ8ZGl2ICpuZ0lmPVwic2hvd1RpdGxlXCIgY2xhc3M9XCJyb3dcIj5cblx0XHQ8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuXHRcdFx0XHQ8bGFiZWw+VGl0bGU8L2xhYmVsPlxuXHRcdFx0XHQ8aW5wdXQgW3R5cGVdPVwiaXNTZWFyY2ggPyAnc2VhcmNoJyA6ICd0ZXh0J1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJUaXRsZVwiIFxuXHRcdFx0XHRbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmNvbnRyb2xzWyd0aXRsZSddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiXG5cdFx0XHRcdGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCIgIFtpZF09XCJjb21wb25lbnRJZCsnX1RpdGxlSW5wdXQnXCIgW21heGxlbmd0aF09XCJ0aXRsZU1heExlbmd0aFwiPlxuXHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1sndGl0bGUnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlRpdGxlIGlzIHJlcXVpcmVkPC9zbWFsbD5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cblx0PGRpdiBjbGFzcz1cInJvd1wiPlxuXHRcdDxkaXYgKm5nSWY9XCIhbm9FbWFpbFwiIGNsYXNzPVwiY29sLW1kLTZcIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG5cdFx0XHRcdDxsYWJlbD57e2VtYWlsTGFiZWx9fTwvbGFiZWw+XG5cdFx0XHRcdDxpbnB1dCB0eXBlPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ2VtYWlsQWRkcmVzcyddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJFbWFpbFwiIGZvcm1Db250cm9sTmFtZT1cImVtYWlsQWRkcmVzc1wiICBbaWRdPVwiY29tcG9uZW50SWQrJ19FbWFpbElucHV0J1wiIFttYXhsZW5ndGhdPVwiZW1haWxNYXhMZW5ndGhcIj5cblx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2VtYWlsQWRkcmVzcyddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+e3tlbWFpbExhYmVsfX0gaXMgcmVxdWlyZWQ8L3NtYWxsPlxuXHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snZW1haWxBZGRyZXNzJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+e3tlbWFpbExhYmVsfX0gaGFzIGV4Y2VlZGVkIGl0cyBtYXhpbXVtIGxlbmd0aDwvc21hbGw+XG5cdFx0XHRcdDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydlbWFpbEFkZHJlc3MnXS5oYXNFcnJvcignZW1haWwnKVwiPlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3M8L3NtYWxsPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBbbmdDbGFzc109XCJ7ICdjb2wtbWQtMyc6ICFub0ZheCwgJ2NvbC1tZC02Jzogbm9GYXggfVwiPlxuXHRcdFx0PGRpdiAqbmdJZj1cIiFub1Bob25lXCIgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG5cdFx0XHRcdDxsYWJlbD57e3Bob25lTGFiZWx9fTwvbGFiZWw+XG5cdFx0XHRcdDxpbnB1dCBbdHlwZV09XCJpc1NlYXJjaCA/ICdzZWFyY2gnIDogJ3RleHQnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmNvbnRyb2xzWydwaG9uZU51bWJlciddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCIoeHh4KSB4eHgteHh4eFwiIGZvcm1Db250cm9sTmFtZT1cInBob25lTnVtYmVyXCIgW2lkXT1cImNvbXBvbmVudElkKydfUGhvbmVJbnB1dCdcIiBtYXNrPVwiKDAwMCkgMDAwLTAwMDBcIiBtaW5sZW5ndGg9XCIxMFwiPlxuXHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1sncGhvbmVOdW1iZXInXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPnt7cGhvbmVMYWJlbH19IGlzIHJlcXVpcmVkPC9zbWFsbD5cblx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ3Bob25lTnVtYmVyJ10uaGFzRXJyb3IoJ21pbmxlbmd0aCcpXCI+UGxlYXNlIGVudGVyIGEgdmFsaWQgcGhvbmUgbnVtYmVyPC9zbWFsbD5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCIhbm9GYXhcIiBjbGFzcz1cImNvbC1tZC0zXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuXHRcdFx0XHQ8bGFiZWw+e3tmYXhMYWJlbH19PC9sYWJlbD5cblx0XHRcdFx0PGlucHV0IFt0eXBlXT1cImlzU2VhcmNoID8gJ3NlYXJjaCcgOiAndGV4dCdcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ2ZheE51bWJlciddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCIoeHh4KSB4eHgteHh4eFwiIGZvcm1Db250cm9sTmFtZT1cImZheE51bWJlclwiIFtpZF09XCJjb21wb25lbnRJZCsnX0ZheElucHV0J1wiICBtYXNrPVwiKDAwMCkgMDAwLTAwMDBcIiBtaW5sZW5ndGg9XCIxMFwiPlxuXHRcdFx0XHRcdDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydmYXhOdW1iZXInXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPnt7ZmF4TGFiZWx9fSBpcyByZXF1aXJlZDwvc21hbGw+XG5cdFx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2ZheE51bWJlciddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKVwiPlBsZWFzZSBlbnRlciBhIHZhbGlkIHBob25lIG51bWJlcjwvc21hbGw+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG48L2Rpdj4iXX0=
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2NvbnRhY3QvY29udGFjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2NvbnRhY3QvY29udGFjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBVXpELE1BQU0sT0FBTyxnQkFBZ0I7SUE0QlA7SUExQmIsV0FBVyxHQUFHLHNCQUFzQixDQUFDO0lBQzVDLDBEQUEwRDtJQUNqRCxLQUFLLENBQWE7SUFDM0IscUVBQXFFO0lBQzVELGNBQWMsR0FBRyxLQUFLLENBQUM7SUFFQSxjQUFjLEdBQVcsWUFBWSxDQUFDO0lBQ3ZDLGFBQWEsR0FBVyxXQUFXLENBQUM7SUFDbkMsY0FBYyxHQUFZLEtBQUssQ0FBQztJQUMvQixlQUFlLEdBQVcsYUFBYSxDQUFDO0lBQzdDLFVBQVUsR0FBVyxPQUFPLENBQUM7SUFDN0IsVUFBVSxHQUFXLE9BQU8sQ0FBQztJQUMvQixRQUFRLEdBQVcsS0FBSyxDQUFDO0lBQzVCLEtBQUssR0FBWSxLQUFLLENBQUE7SUFDbEIsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUM3QixPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ3pCLE9BQU8sR0FBWSxLQUFLLENBQUM7SUFDeEIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUVsRCx3Q0FBd0M7SUFDSixrQkFBa0IsR0FBRyxFQUFFLENBQUM7SUFDdkIsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQzNCLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUMxQixjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFFdEQsWUFBb0IsU0FBaUM7UUFBakMsY0FBUyxHQUFULFNBQVMsQ0FBd0I7SUFDckQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO3dHQW5DVSxnQkFBZ0I7NEZBQWhCLGdCQUFnQiw0bUJDVjdCLHMvTkF5Rk07OzRGRC9FTyxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsY0FBYzsyRkFRZixLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFMEIsY0FBYztzQkFBN0MsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBQ1EsYUFBYTtzQkFBM0MsS0FBSzt1QkFBQyxlQUFlO2dCQUNVLGNBQWM7c0JBQTdDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNVLGVBQWU7c0JBQS9DLEtBQUs7dUJBQUMsaUJBQWlCO2dCQUNJLFVBQVU7c0JBQXJDLEtBQUs7dUJBQUMsWUFBWTtnQkFDUyxVQUFVO3NCQUFyQyxLQUFLO3VCQUFDLFlBQVk7Z0JBQ08sUUFBUTtzQkFBakMsS0FBSzt1QkFBQyxVQUFVO2dCQUNNLEtBQUs7c0JBQTNCLEtBQUs7dUJBQUMsT0FBTztnQkFDYSxTQUFTO3NCQUFuQyxLQUFLO3VCQUFDLFdBQVc7Z0JBQ08sT0FBTztzQkFBL0IsS0FBSzt1QkFBQyxTQUFTO2dCQUNTLE9BQU87c0JBQS9CLEtBQUs7dUJBQUMsU0FBUztnQkFDVSxRQUFRO3NCQUFqQyxLQUFLO3VCQUFDLFVBQVU7Z0JBR3FCLGtCQUFrQjtzQkFBckQsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBQ1UsbUJBQW1CO3NCQUF2RCxLQUFLO3VCQUFDLHFCQUFxQjtnQkFDTyxpQkFBaUI7c0JBQW5ELEtBQUs7dUJBQUMsbUJBQW1CO2dCQUNNLGNBQWM7c0JBQTdDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNTLGNBQWM7c0JBQTdDLEtBQUs7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE9lcGFDb21wb25lbnRJZFNlcnZpY2UgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWNvbW1vbi1saWInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLWNvbnRhY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGFjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRhY3QuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIENvbnRhY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBjb21wb25lbnRJZCA9ICdPZXBhQ29udGFjdENvbXBvbmVudCc7XG4gIC8qKiAgVGhlIGZvcm0gZ3JvdXAgZm9yIHdoaWNoIHRoaXMgYWRkcmVzcyBpcyBhIG1lbWJlci4gKi9cbiAgQElucHV0KCkgZ3JvdXAhOiBGb3JtR3JvdXA7XG4gIC8qKiBGb3JtIHZhbGlkYXRpb24gd2lsbCBiZSBkaXNwbGF5ZWQgd2hlbiBzaG93VmFsaWRhdGlvbiBpcyB0cnVlLiAqL1xuICBASW5wdXQoKSBzaG93VmFsaWRhdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnZmlyc3ROYW1lTGFiZWwnKSBwdWJsaWMgZmlyc3ROYW1lTGFiZWw6IHN0cmluZyA9ICdGaXJzdCBOYW1lJztcbiAgQElucHV0KCdsYXN0TmFtZUxhYmVsJykgcHVibGljIGxhc3ROYW1lTGFiZWw6IHN0cmluZyA9ICdMYXN0IE5hbWUnO1xuICBASW5wdXQoJ3Nob3dNaWRkbGVOYW1lJykgcHVibGljIHNob3dNaWRkbGVOYW1lOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgnbWlkZGxlTmFtZUxhYmVsJykgcHVibGljIG1pZGRsZU5hbWVMYWJlbDogc3RyaW5nID0gJ01pZGRsZSBOYW1lJztcbiAgQElucHV0KCdlbWFpbExhYmVsJykgcHVibGljIGVtYWlsTGFiZWw6IHN0cmluZyA9ICdFbWFpbCc7XG4gIEBJbnB1dCgncGhvbmVMYWJlbCcpIHB1YmxpYyBwaG9uZUxhYmVsOiBzdHJpbmcgPSAnUGhvbmUnO1xuICBASW5wdXQoJ2ZheExhYmVsJykgcHVibGljIGZheExhYmVsOiBzdHJpbmcgPSAnRmF4JztcbiAgQElucHV0KCdub0ZheCcpIHB1YmxpYyBub0ZheDogYm9vbGVhbiA9IGZhbHNlXG4gIEBJbnB1dCgnc2hvd1RpdGxlJykgcHVibGljIHNob3dUaXRsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ25vUGhvbmUnKSBwdWJsaWMgbm9QaG9uZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ25vRW1haWwnKSBwdWJsaWMgbm9FbWFpbDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ2lzU2VhcmNoJykgcHVibGljIGlzU2VhcmNoOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBtYXggbGVuZ3RoIHZhbHVlcy4gb3ZlcnJpZGUgaWYgbmVlZGVkXG4gICAgQElucHV0KCdmaXJzdE5hbWVNYXhMZW5ndGgnKSBwdWJsaWMgZmlyc3ROYW1lTWF4TGVuZ3RoID0gNTA7XG4gICAgQElucHV0KCdtaWRkbGVOYW1lTWF4TGVuZ3RoJykgcHVibGljIG1pZGRsZU5hbWVNYXhMZW5ndGggPSA1MDtcbiAgICBASW5wdXQoJ2xhc3ROYW1lTWF4TGVuZ3RoJykgcHVibGljIGxhc3ROYW1lTWF4TGVuZ3RoID0gNTA7XG4gICAgQElucHV0KCd0aXRsZU1heExlbmd0aCcpIHB1YmxpYyB0aXRsZU1heExlbmd0aCA9IDQwO1xuICAgIEBJbnB1dCgnZW1haWxNYXhMZW5ndGgnKSBwdWJsaWMgZW1haWxNYXhMZW5ndGggPSA4MDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlkU2VydmljZTogT2VwYUNvbXBvbmVudElkU2VydmljZSkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgIHRoaXMuY29tcG9uZW50SWQgPSB0aGlzLmlkU2VydmljZS5nZXRDb21wb25lbnRJZCh0aGlzLmdyb3VwKTtcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XG5cdDxkaXYgKm5nSWY9XCIhc2hvd01pZGRsZU5hbWVcIiBjbGFzcz1cInJvd1wiPlxuXHRcdDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cblx0XHRcdFx0PGxhYmVsIFtmb3JdPVwiY29tcG9uZW50SWQrJ19GaXJzdE5hbWVJbnB1dCdcIj57e2ZpcnN0TmFtZUxhYmVsfX08L2xhYmVsPlxuXHRcdFx0XHQ8aW5wdXQgW3R5cGVdPVwiaXNTZWFyY2ggPyAnc2VhcmNoJyA6ICd0ZXh0J1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snZmlyc3ROYW1lJ10uc3RhdHVzID09PSAnSU5WQUxJRCd9XCJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIkZpcnN0IE5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJmaXJzdE5hbWVcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19GaXJzdE5hbWVJbnB1dCdcIiBbbWF4bGVuZ3RoXT1cImZpcnN0TmFtZU1heExlbmd0aFwiPlxuXHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snZmlyc3ROYW1lJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj57e2ZpcnN0TmFtZUxhYmVsfX0gaXMgcmVxdWlyZWQ8L3NtYWxsPlxuXHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snZmlyc3ROYW1lJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+e3tmaXJzdE5hbWVMYWJlbH19IGhhcyBleGNlZWRlZCBpdHMgbWF4aW11bSBsZW5ndGg8L3NtYWxsPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuXHRcdFx0XHQ8bGFiZWwgW2Zvcl09XCJjb21wb25lbnRJZCsnX0xhc3ROYW1lSW5wdXQnXCI+e3tsYXN0TmFtZUxhYmVsfX08L2xhYmVsPlxuXHRcdFx0XHQ8aW5wdXQgW3R5cGVdPVwiaXNTZWFyY2ggPyAnc2VhcmNoJyA6ICd0ZXh0J1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snbGFzdE5hbWUnXS5zdGF0dXMgPT09ICdJTlZBTElEJ31cIlxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiTGFzdCBOYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwibGFzdE5hbWVcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19MYXN0TmFtZUlucHV0J1wiIFttYXhsZW5ndGhdPVwibGFzdE5hbWVNYXhMZW5ndGhcIj5cblx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2xhc3ROYW1lJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj57e2xhc3ROYW1lTGFiZWx9fSBpcyByZXF1aXJlZDwvc21hbGw+XG5cdFx0XHRcdDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydsYXN0TmFtZSddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPnt7bGFzdE5hbWVMYWJlbH19IGhhcyBleGNlZWRlZCBpdHMgbWF4aW11bSBsZW5ndGg8L3NtYWxsPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdDwvZGl2PlxuXHQ8ZGl2ICpuZ0lmPVwic2hvd01pZGRsZU5hbWVcIiBjbGFzcz1cInJvd1wiPlxuXHRcdDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cblx0XHRcdFx0PGxhYmVsIFtmb3JdPVwiY29tcG9uZW50SWQrJ19GaXJzdE5hbWVJbnB1dCdcIj57e2ZpcnN0TmFtZUxhYmVsfX08L2xhYmVsPlxuXHRcdFx0XHQ8aW5wdXQgW3R5cGVdPVwiaXNTZWFyY2ggPyAnc2VhcmNoJyA6ICd0ZXh0J1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snZmlyc3ROYW1lJ10uc3RhdHVzID09PSAnSU5WQUxJRCd9XCJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIkZpcnN0IE5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJmaXJzdE5hbWVcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19GaXJzdE5hbWVJbnB1dCdcIiBbbWF4bGVuZ3RoXT1cImZpcnN0TmFtZU1heExlbmd0aFwiPlxuXHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snZmlyc3ROYW1lJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj57e2ZpcnN0TmFtZUxhYmVsfX0gaXMgcmVxdWlyZWQ8L3NtYWxsPlxuXHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snZmlyc3ROYW1lJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+e3tmaXJzdE5hbWVMYWJlbH19IGhhcyBleGNlZWRlZCBpdHMgbWF4aW11bSBsZW5ndGg8L3NtYWxsPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ21pZGRsZU5hbWUnXS5zdGF0dXMgPT09ICdJTlZBTElEJ31cIj5cblx0XHRcdFx0PGxhYmVsIFtmb3JdPVwiY29tcG9uZW50SWQrJ19NaWRkbGVOYW1lSW5wdXQnXCI+e3ttaWRkbGVOYW1lTGFiZWx9fTwvbGFiZWw+XG5cdFx0XHRcdDxpbnB1dCBbdHlwZV09XCJpc1NlYXJjaCA/ICdzZWFyY2gnIDogJ3RleHQnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cIk1pZGRsZSBOYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwibWlkZGxlTmFtZVwiIFtpZF09XCJjb21wb25lbnRJZCsnX01pZGRsZU5hbWVJbnB1dCdcIiBbbWF4bGVuZ3RoXT1cIm1pZGRsZU5hbWVNYXhMZW5ndGhcIj5cblx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwic2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ21pZGRsZU5hbWUnXS5zdGF0dXMgPT09ICdJTlZBTElEJ1wiPk1pZGRsZSBOYW1lIGlzIHJlcXVpcmVkPC9zbWFsbD5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cblx0XHRcdFx0PGxhYmVsIFtmb3JdPVwiY29tcG9uZW50SWQrJ19MYXN0TmFtZUlucHV0J1wiPnt7bGFzdE5hbWVMYWJlbH19PC9sYWJlbD5cblx0XHRcdFx0PGlucHV0IFt0eXBlXT1cImlzU2VhcmNoID8gJ3NlYXJjaCcgOiAndGV4dCdcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ2xhc3ROYW1lJ10uc3RhdHVzID09PSAnSU5WQUxJRCd9XCJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIkxhc3QgTmFtZVwiIGZvcm1Db250cm9sTmFtZT1cImxhc3ROYW1lXCIgW2lkXT1cImNvbXBvbmVudElkKydfTGFzdE5hbWVJbnB1dCdcIiBbbWF4bGVuZ3RoXT1cImxhc3ROYW1lTWF4TGVuZ3RoXCI+XG5cdFx0XHRcdDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydsYXN0TmFtZSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+e3tsYXN0TmFtZUxhYmVsfX0gaXMgcmVxdWlyZWQ8L3NtYWxsPlxuXHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snbGFzdE5hbWUnXS5oYXNFcnJvcignbWF4bGVuZ3RoJylcIj57e2xhc3ROYW1lTGFiZWx9fSBoYXMgZXhjZWVkZWQgaXRzIG1heGltdW0gbGVuZ3RoPC9zbWFsbD5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cblx0PGRpdiAqbmdJZj1cInNob3dUaXRsZVwiIGNsYXNzPVwicm93XCI+XG5cdFx0PGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cblx0XHRcdFx0PGxhYmVsIFtmb3JdPVwiY29tcG9uZW50SWQrJ19UaXRsZUlucHV0J1wiPlRpdGxlPC9sYWJlbD5cblx0XHRcdFx0PGlucHV0IFt0eXBlXT1cImlzU2VhcmNoID8gJ3NlYXJjaCcgOiAndGV4dCdcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiVGl0bGVcIiBcblx0XHRcdFx0W25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1sndGl0bGUnXS5zdGF0dXMgPT09ICdJTlZBTElEJ31cIlxuXHRcdFx0XHRmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiICBbaWRdPVwiY29tcG9uZW50SWQrJ19UaXRsZUlucHV0J1wiIFttYXhsZW5ndGhdPVwidGl0bGVNYXhMZW5ndGhcIj5cblx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ3RpdGxlJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5UaXRsZSBpcyByZXF1aXJlZDwvc21hbGw+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJyb3dcIj5cblx0XHQ8ZGl2ICpuZ0lmPVwiIW5vRW1haWxcIiBjbGFzcz1cImNvbC1tZC02XCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuXHRcdFx0XHQ8bGFiZWwgW2Zvcl09XCJjb21wb25lbnRJZCsnX0VtYWlsSW5wdXQnXCI+e3tlbWFpbExhYmVsfX08L2xhYmVsPlxuXHRcdFx0XHQ8aW5wdXQgdHlwZT1cImVtYWlsXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmNvbnRyb2xzWydlbWFpbEFkZHJlc3MnXS5zdGF0dXMgPT09ICdJTlZBTElEJ31cIlxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiRW1haWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbEFkZHJlc3NcIiAgW2lkXT1cImNvbXBvbmVudElkKydfRW1haWxJbnB1dCdcIiBbbWF4bGVuZ3RoXT1cImVtYWlsTWF4TGVuZ3RoXCI+XG5cdFx0XHRcdDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydlbWFpbEFkZHJlc3MnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPnt7ZW1haWxMYWJlbH19IGlzIHJlcXVpcmVkPC9zbWFsbD5cblx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2VtYWlsQWRkcmVzcyddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPnt7ZW1haWxMYWJlbH19IGhhcyBleGNlZWRlZCBpdHMgbWF4aW11bSBsZW5ndGg8L3NtYWxsPlxuXHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snZW1haWxBZGRyZXNzJ10uaGFzRXJyb3IoJ2VtYWlsJylcIj5QbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzPC9zbWFsbD5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgW25nQ2xhc3NdPVwieyAnY29sLW1kLTMnOiAhbm9GYXgsICdjb2wtbWQtNic6IG5vRmF4IH1cIj5cblx0XHRcdDxkaXYgKm5nSWY9XCIhbm9QaG9uZVwiIGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuXHRcdFx0XHQ8bGFiZWwgW2Zvcl09XCJjb21wb25lbnRJZCsnX1Bob25lSW5wdXQnXCI+e3twaG9uZUxhYmVsfX08L2xhYmVsPlxuXHRcdFx0XHQ8aW5wdXQgW3R5cGVdPVwiaXNTZWFyY2ggPyAnc2VhcmNoJyA6ICd0ZXh0J1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1sncGhvbmVOdW1iZXInXS5zdGF0dXMgPT09ICdJTlZBTElEJ31cIlxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiKHh4eCkgeHh4LXh4eHhcIiBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZU51bWJlclwiIFtpZF09XCJjb21wb25lbnRJZCsnX1Bob25lSW5wdXQnXCIgbWFzaz1cIigwMDApIDAwMC0wMDAwXCIgbWlubGVuZ3RoPVwiMTBcIj5cblx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ3Bob25lTnVtYmVyJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj57e3Bob25lTGFiZWx9fSBpcyByZXF1aXJlZDwvc21hbGw+XG5cdFx0XHRcdDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydwaG9uZU51bWJlciddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKVwiPlBsZWFzZSBlbnRlciBhIHZhbGlkIHBob25lIG51bWJlcjwvc21hbGw+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwiIW5vRmF4XCIgY2xhc3M9XCJjb2wtbWQtM1wiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cblx0XHRcdFx0PGxhYmVsIFtmb3JdPVwiY29tcG9uZW50SWQrJ19GYXhJbnB1dCdcIj57e2ZheExhYmVsfX08L2xhYmVsPlxuXHRcdFx0XHQ8aW5wdXQgW3R5cGVdPVwiaXNTZWFyY2ggPyAnc2VhcmNoJyA6ICd0ZXh0J1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snZmF4TnVtYmVyJ10uc3RhdHVzID09PSAnSU5WQUxJRCd9XCJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIih4eHgpIHh4eC14eHh4XCIgZm9ybUNvbnRyb2xOYW1lPVwiZmF4TnVtYmVyXCIgW2lkXT1cImNvbXBvbmVudElkKydfRmF4SW5wdXQnXCIgIG1hc2s9XCIoMDAwKSAwMDAtMDAwMFwiIG1pbmxlbmd0aD1cIjEwXCI+XG5cdFx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2ZheE51bWJlciddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+e3tmYXhMYWJlbH19IGlzIHJlcXVpcmVkPC9zbWFsbD5cblx0XHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snZmF4TnVtYmVyJ10uaGFzRXJyb3IoJ21pbmxlbmd0aCcpXCI+UGxlYXNlIGVudGVyIGEgdmFsaWQgcGhvbmUgbnVtYmVyPC9zbWFsbD5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cbjwvZGl2PiJdfQ==