master-control 0.5.2 → 0.5.3

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.
@@ -3,9 +3,16 @@ export function initializeFieldNameAttribute(field) {
3
3
  return field;
4
4
  }
5
5
  const label = typeof field.label === 'string' ? field.label.trim() : '';
6
- field.fieldNameAttribute = label
7
- ? label.replace(/\s+/g, '_')
6
+ const sanitizedLabel = label.replace(/[{}()]/g, '').trim();
7
+ field.fieldNameAttribute = sanitizedLabel
8
+ ? sanitizedLabel.replace(/\s+/g, '_')
8
9
  : field.fieldName;
10
+ if (Array.isArray(field.options)) {
11
+ field.options.forEach((option) => {
12
+ const optionLabel = typeof option.label === 'string' ? option.label.trim() : '';
13
+ option.optionFieldNameAttribute = optionLabel.replace(/\s+/g, '_');
14
+ });
15
+ }
9
16
  return field;
10
17
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbmFtZS1hdHRyaWJ1dGUudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hc3Rlci1jb250cm9sL3NyYy9saWIvZmllbGQtbmFtZS1hdHRyaWJ1dGUudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsNEJBQTRCLENBQUMsS0FBVTtJQUNyRCxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sS0FBSyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN4RSxLQUFLLENBQUMsa0JBQWtCLEdBQUcsS0FBSztRQUM5QixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBRXBCLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplRmllbGROYW1lQXR0cmlidXRlKGZpZWxkOiBhbnkpOiBhbnkge1xuICBpZiAoIWZpZWxkIHx8IHR5cGVvZiBmaWVsZCAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmllbGQ7XG4gIH1cblxuICBjb25zdCBsYWJlbCA9IHR5cGVvZiBmaWVsZC5sYWJlbCA9PT0gJ3N0cmluZycgPyBmaWVsZC5sYWJlbC50cmltKCkgOiAnJztcbiAgZmllbGQuZmllbGROYW1lQXR0cmlidXRlID0gbGFiZWxcbiAgICA/IGxhYmVsLnJlcGxhY2UoL1xccysvZywgJ18nKVxuICAgIDogZmllbGQuZmllbGROYW1lO1xuXG4gIHJldHVybiBmaWVsZDtcbn1cbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbmFtZS1hdHRyaWJ1dGUudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hc3Rlci1jb250cm9sL3NyYy9saWIvZmllbGQtbmFtZS1hdHRyaWJ1dGUudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsNEJBQTRCLENBQUMsS0FBVTtJQUNyRCxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sS0FBSyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN4RSxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzRCxLQUFLLENBQUMsa0JBQWtCLEdBQUcsY0FBYztRQUN2QyxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBRXBCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNqQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQ3BDLE1BQU0sV0FBVyxHQUFHLE9BQU8sTUFBTSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNoRixNQUFNLENBQUMsd0JBQXdCLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVGaWVsZE5hbWVBdHRyaWJ1dGUoZmllbGQ6IGFueSk6IGFueSB7XG4gIGlmICghZmllbGQgfHwgdHlwZW9mIGZpZWxkICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmaWVsZDtcbiAgfVxuXG4gIGNvbnN0IGxhYmVsID0gdHlwZW9mIGZpZWxkLmxhYmVsID09PSAnc3RyaW5nJyA/IGZpZWxkLmxhYmVsLnRyaW0oKSA6ICcnO1xuICBjb25zdCBzYW5pdGl6ZWRMYWJlbCA9IGxhYmVsLnJlcGxhY2UoL1t7fSgpXS9nLCAnJykudHJpbSgpO1xuICBmaWVsZC5maWVsZE5hbWVBdHRyaWJ1dGUgPSBzYW5pdGl6ZWRMYWJlbFxuICAgID8gc2FuaXRpemVkTGFiZWwucmVwbGFjZSgvXFxzKy9nLCAnXycpXG4gICAgOiBmaWVsZC5maWVsZE5hbWU7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQub3B0aW9ucykpIHtcbiAgICBmaWVsZC5vcHRpb25zLmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICBjb25zdCBvcHRpb25MYWJlbCA9IHR5cGVvZiBvcHRpb24ubGFiZWwgPT09ICdzdHJpbmcnID8gb3B0aW9uLmxhYmVsLnRyaW0oKSA6ICcnO1xuICAgICAgb3B0aW9uLm9wdGlvbkZpZWxkTmFtZUF0dHJpYnV0ZSA9IG9wdGlvbkxhYmVsLnJlcGxhY2UoL1xccysvZywgJ18nKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBmaWVsZDtcbn1cbiJdfQ==
@@ -63,7 +63,7 @@ export class RadioComponent {
63
63
  useExisting: RadioComponent,
64
64
  multi: true
65
65
  }
66
- ], ngImport: i0, template: "<div [class]=\"field()?.configData?.isInlineLabel ? 'radio-inline-wrapper' : ''\">\n <label class=\"field-lable\" *ngIf=\"field() && field()?.isVisible && field().isShowLabel\" [class.radio-inline-label]=\"field()?.configData?.isInlineLabel\" [ngStyle]=\"{\n }\">{{field()?.label}}<span class=\"error-message\" *ngIf=\"field()?.validators?.isRequired\">*</span>\n <span [appTooltipTemplate]=\"HtmlContent\" arrowPosition=\"left\" tooltipPosition=\"bottom\">\n <img [src]=\"field().configData?.labelIconUrl\" class=\"toggle-img mx-1\" />\n </span>\n <ng-template #HtmlContent>\n <span [innerHTML]=\"field().configData?.tooltipMessage\"></span>\n </ng-template>\n </label>\n @if(reactiveFormControlobject()) {\n <mat-radio-group [class]=\"'radio-btn-group radio-btn-gender ' + field()?.fieldName + (field()?.configData?.isInlineLabel ? ' radio-inline-group' : ' w-100')\" *ngIf=\"field() && field()?.isVisible\"\n [required]=\"field()?.validators?.isRequired\"\n [value]=\"inputValue\"\n [formControl]=\"reactiveFormControlobject()\"\n (change)=\"onRadioGroupChange($event)\"\n [id]=\"field()?.fieldName\"\n [attr.name]=\"field()?.fieldNameAttribute\"\n >\n <div\n class=\"card radio-card-gender py-auto px-1\"\n *ngFor=\"let data of field()?.options\"\n [ngClass]=\"{'disable-radio-btn': field()?.isDisable || reactiveFormControlobject?.disabled || data.disabled === true || data.disabled === 'true', 'two-options': field()?.options?.length === 2}\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n [ngStyle]=\"{\n '--radio-button-border-color': inputValue === data.value ? field()?.controlStyle?.focusBorderColor : field()?.controlStyle?.borderColor,\n '--radio-button-background-color': inputValue === data.value ? field()?.controlStyle?.focusBackground : field()?.controlStyle?.background,\n '--radio-button-border-width': inputValue === data.value ? field()?.controlStyle?.focusBorderWidth : field()?.controlStyle?.borderWidth,\n '--radio-button-border-radius': inputValue === data.value ? field()?.controlStyle?.borderRadius : field()?.controlStyle?.borderRadius,\n }\"\n >\n <mat-radio-button\n style=\"min-width: 72px; text-align: center;\"\n class=\"radioButtonGender\"\n [value]=\"data.value\"\n [disabled]=\"data.disabled === true || data.disabled === 'true'\"\n [id]=\"field()?.fieldName + '_' + data.value\"\n [name]=\"field()?.fieldNameAttribute + '_' + data.value\"\n >\n <span style=\"white-space: pre-line;\" class=\"forRadioLabel\" [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color,\n }\">{{ data.label }}\n <img class=\"radio-btn-icon\" *ngIf=\"field()?.imageUrl\" [src]=\"field()?.imageUrl\" alt=\"\">\n </span>\n </mat-radio-button>\n </div>\n </mat-radio-group>\n }@else {\n <mat-radio-group [class]=\"'radio-btn-group radio-btn-gender ' + field()?.fieldName + (field()?.configData?.isInlineLabel ? ' radio-inline-group' : ' w-100')\" *ngIf=\"field() && field()?.isVisible\"\n [required]=\"field()?.validators?.isRequired\"\n [value]=\"inputValue\"\n (change)=\"onRadioGroupChange($event)\"\n [id]=\"field()?.fieldName\"\n [attr.name]=\"field()?.fieldNameAttribute\"\n >\n <div\n class=\"card radio-card-gender py-auto px-1\"\n *ngFor=\"let data of field()?.options\"\n [ngClass]=\"{'disable-radio-btn': field()?.isDisable || data.disabled === true || data.disabled === 'true', 'two-options': field()?.options?.length === 2}\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n [ngStyle]=\"{\n '--radio-button-border-color': inputValue === data.value ? field()?.controlStyle?.focusBorderColor : field()?.controlStyle?.borderColor,\n '--radio-button-background-color': inputValue === data.value ? field()?.controlStyle?.focusBackground : field()?.controlStyle?.background,\n '--radio-button-border-width': inputValue === data.value ? field()?.controlStyle?.focusBorderWidth : field()?.controlStyle?.borderWidth,\n '--radio-button-border-radius': inputValue === data.value ? field()?.controlStyle?.borderRadius : field()?.controlStyle?.borderRadius,\n }\"\n >\n <mat-radio-button\n style=\"min-width: 72px; text-align: center;\"\n class=\"radioButtonGender\"\n [value]=\"data.value\"\n [disabled]=\"data.disabled === true || data.disabled === 'true'\"\n [id]=\"field()?.fieldName + '_' + data.value\"\n [name]=\"field()?.fieldNameAttribute + '_' + data.value\"\n >\n <span style=\"white-space: pre-line;\" class=\"forRadioLabel\" [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color,\n }\">{{ data.label }}\n <img class=\"radio-btn-icon\" *ngIf=\"field()?.imageUrl\" [src]=\"field()?.imageUrl\" alt=\"\">\n </span>\n </mat-radio-button>\n </div>\n </mat-radio-group>\n }\n <div class=\"error-message\" *ngIf=\"false\">\n {{field()?.validators?.patternMessage}}.\n </div>\n</div>\n", styles: [".radio-selection-border{border:1px solid #ffbb00!important;background:#fffaeb!important}*{font-family:mulish!important}.field-lable{font-size:12px!important;font-weight:700!important;color:#444!important;margin-bottom:0!important;white-space:pre-wrap!important}.error-message{color:red}.toggle-img{width:12px;margin-left:8px!important}@media screen and (max-width: 768px){.toggle-img{width:16px}}.radio-btn-group{display:flex;align-items:center;gap:1rem;align-self:stretch}::ng-deep .radio-btn-gender .mdc-form-field .mdc-radio{display:none!important}.radio-card-gender{box-shadow:none;border-color:var(--radio-button-border-color,#DADADA);border-width:var(--radio-button-border-width, 1px solid);background:var(--radio-button-background-color, #FFFFFF);display:flex;align-items:center;cursor:pointer;width:max-content!important;height:100%;border-radius:var(--radio-button-border-radius, 6px)}.radio-card-gender.two-options{min-width:144px!important}@media (max-width: 400px){.radio-btn-group .radio-card-gender.two-options{min-width:0!important;width:50%!important;max-width:50%!important}}::ng-deep .radioButtonGender .mdc-form-field .mdc-radio{display:none!important}.forRadioLabel{font-size:var(--radio-button-font-size, 12px)!important;font-weight:var(--radio-button-font-weight, 400);cursor:pointer;color:var(--radio-button-font-color, #444444)}.radio-btn-icon{margin-top:-2px;margin-left:4px}.selected-radio-btn{border:1px solid #ffbb00!important}.disable-radio-btn{background:#f5f5f5;pointer-events:none;cursor:none}@media (min-width: 769px){.radio-inline-wrapper{display:flex;align-items:center;justify-content:space-between;width:100%;gap:1rem}.radio-inline-label{flex:1;margin-bottom:0!important;white-space:normal!important}.radio-inline-group{flex-shrink:0}}\n"], dependencies: [{ kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i2.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i2.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: CommonModule }, { 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: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: CustomizedTooltipDirective, selector: "[appTooltipTemplate]", inputs: ["appTooltipTemplate"] }] });
66
+ ], ngImport: i0, template: "<div [class]=\"field()?.configData?.isInlineLabel ? 'radio-inline-wrapper' : ''\">\n <label class=\"field-lable\" *ngIf=\"field() && field()?.isVisible && field().isShowLabel\" [class.radio-inline-label]=\"field()?.configData?.isInlineLabel\" [ngStyle]=\"{\n }\">{{field()?.label}}<span class=\"error-message\" *ngIf=\"field()?.validators?.isRequired\">*</span>\n <span [appTooltipTemplate]=\"HtmlContent\" arrowPosition=\"left\" tooltipPosition=\"bottom\">\n <img [src]=\"field().configData?.labelIconUrl\" class=\"toggle-img mx-1\" />\n </span>\n <ng-template #HtmlContent>\n <span [innerHTML]=\"field().configData?.tooltipMessage\"></span>\n </ng-template>\n </label>\n @if(reactiveFormControlobject()) {\n <mat-radio-group [class]=\"'radio-btn-group radio-btn-gender ' + field()?.fieldName + (field()?.configData?.isInlineLabel ? ' radio-inline-group' : ' w-100')\" *ngIf=\"field() && field()?.isVisible\"\n [required]=\"field()?.validators?.isRequired\"\n [value]=\"inputValue\"\n [formControl]=\"reactiveFormControlobject()\"\n (change)=\"onRadioGroupChange($event)\"\n [id]=\"field()?.fieldName\"\n [attr.name]=\"field()?.fieldNameAttribute\"\n >\n <div\n class=\"card radio-card-gender py-auto px-1\"\n *ngFor=\"let data of field()?.options\"\n [ngClass]=\"{'disable-radio-btn': field()?.isDisable || reactiveFormControlobject?.disabled || data.disabled === true || data.disabled === 'true', 'two-options': field()?.options?.length === 2}\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n [ngStyle]=\"{\n '--radio-button-border-color': inputValue === data.value ? field()?.controlStyle?.focusBorderColor : field()?.controlStyle?.borderColor,\n '--radio-button-background-color': inputValue === data.value ? field()?.controlStyle?.focusBackground : field()?.controlStyle?.background,\n '--radio-button-border-width': inputValue === data.value ? field()?.controlStyle?.focusBorderWidth : field()?.controlStyle?.borderWidth,\n '--radio-button-border-radius': inputValue === data.value ? field()?.controlStyle?.borderRadius : field()?.controlStyle?.borderRadius,\n }\"\n >\n <mat-radio-button\n style=\"min-width: 72px; text-align: center;\"\n class=\"radioButtonGender\"\n [value]=\"data.value\"\n [disabled]=\"data.disabled === true || data.disabled === 'true'\"\n [id]=\"field()?.fieldName + '_' + data.value\"\n [name]=\"field()?.fieldNameAttribute + '_' + data.optionFieldNameAttribute\"\n >\n <span style=\"white-space: pre-line;\" class=\"forRadioLabel\" [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color,\n }\">{{ data.label }}\n <img class=\"radio-btn-icon\" *ngIf=\"field()?.imageUrl\" [src]=\"field()?.imageUrl\" alt=\"\">\n </span>\n </mat-radio-button>\n </div>\n </mat-radio-group>\n }@else {\n <mat-radio-group [class]=\"'radio-btn-group radio-btn-gender ' + field()?.fieldName + (field()?.configData?.isInlineLabel ? ' radio-inline-group' : ' w-100')\" *ngIf=\"field() && field()?.isVisible\"\n [required]=\"field()?.validators?.isRequired\"\n [value]=\"inputValue\"\n (change)=\"onRadioGroupChange($event)\"\n [id]=\"field()?.fieldName\"\n [attr.name]=\"field()?.fieldNameAttribute\"\n >\n <div\n class=\"card radio-card-gender py-auto px-1\"\n *ngFor=\"let data of field()?.options\"\n [ngClass]=\"{'disable-radio-btn': field()?.isDisable || data.disabled === true || data.disabled === 'true', 'two-options': field()?.options?.length === 2}\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n [ngStyle]=\"{\n '--radio-button-border-color': inputValue === data.value ? field()?.controlStyle?.focusBorderColor : field()?.controlStyle?.borderColor,\n '--radio-button-background-color': inputValue === data.value ? field()?.controlStyle?.focusBackground : field()?.controlStyle?.background,\n '--radio-button-border-width': inputValue === data.value ? field()?.controlStyle?.focusBorderWidth : field()?.controlStyle?.borderWidth,\n '--radio-button-border-radius': inputValue === data.value ? field()?.controlStyle?.borderRadius : field()?.controlStyle?.borderRadius,\n }\"\n >\n <mat-radio-button\n style=\"min-width: 72px; text-align: center;\"\n class=\"radioButtonGender\"\n [value]=\"data.value\"\n [disabled]=\"data.disabled === true || data.disabled === 'true'\"\n [id]=\"field()?.fieldName + '_' + data.value\"\n [name]=\"field()?.fieldNameAttribute + '_' + data.optionFieldNameAttribute\"\n >\n <span style=\"white-space: pre-line;\" class=\"forRadioLabel\" [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color,\n }\">{{ data.label }}\n <img class=\"radio-btn-icon\" *ngIf=\"field()?.imageUrl\" [src]=\"field()?.imageUrl\" alt=\"\">\n </span>\n </mat-radio-button>\n </div>\n </mat-radio-group>\n }\n <div class=\"error-message\" *ngIf=\"false\">\n {{field()?.validators?.patternMessage}}.\n </div>\n</div>\n", styles: [".radio-selection-border{border:1px solid #ffbb00!important;background:#fffaeb!important}*{font-family:mulish!important}.field-lable{font-size:12px!important;font-weight:700!important;color:#444!important;margin-bottom:0!important;white-space:pre-wrap!important}.error-message{color:red}.toggle-img{width:12px;margin-left:8px!important}@media screen and (max-width: 768px){.toggle-img{width:16px}}.radio-btn-group{display:flex;align-items:center;gap:1rem;align-self:stretch}::ng-deep .radio-btn-gender .mdc-form-field .mdc-radio{display:none!important}.radio-card-gender{box-shadow:none;border-color:var(--radio-button-border-color,#DADADA);border-width:var(--radio-button-border-width, 1px solid);background:var(--radio-button-background-color, #FFFFFF);display:flex;align-items:center;cursor:pointer;width:max-content!important;height:100%;border-radius:var(--radio-button-border-radius, 6px)}.radio-card-gender.two-options{min-width:144px!important}@media (max-width: 400px){.radio-btn-group .radio-card-gender.two-options{min-width:0!important;width:50%!important;max-width:50%!important}}::ng-deep .radioButtonGender .mdc-form-field .mdc-radio{display:none!important}.forRadioLabel{font-size:var(--radio-button-font-size, 12px)!important;font-weight:var(--radio-button-font-weight, 400);cursor:pointer;color:var(--radio-button-font-color, #444444)}.radio-btn-icon{margin-top:-2px;margin-left:4px}.selected-radio-btn{border:1px solid #ffbb00!important}.disable-radio-btn{background:#f5f5f5;pointer-events:none;cursor:none}@media (min-width: 769px){.radio-inline-wrapper{display:flex;align-items:center;justify-content:space-between;width:100%;gap:1rem}.radio-inline-label{flex:1;margin-bottom:0!important;white-space:normal!important}.radio-inline-group{flex-shrink:0}}\n"], dependencies: [{ kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i2.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i2.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: CommonModule }, { 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: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: CustomizedTooltipDirective, selector: "[appTooltipTemplate]", inputs: ["appTooltipTemplate"] }] });
67
67
  }
68
68
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RadioComponent, decorators: [{
69
69
  type: Component,
@@ -79,8 +79,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
79
79
  useExisting: RadioComponent,
80
80
  multi: true
81
81
  }
82
- ], template: "<div [class]=\"field()?.configData?.isInlineLabel ? 'radio-inline-wrapper' : ''\">\n <label class=\"field-lable\" *ngIf=\"field() && field()?.isVisible && field().isShowLabel\" [class.radio-inline-label]=\"field()?.configData?.isInlineLabel\" [ngStyle]=\"{\n }\">{{field()?.label}}<span class=\"error-message\" *ngIf=\"field()?.validators?.isRequired\">*</span>\n <span [appTooltipTemplate]=\"HtmlContent\" arrowPosition=\"left\" tooltipPosition=\"bottom\">\n <img [src]=\"field().configData?.labelIconUrl\" class=\"toggle-img mx-1\" />\n </span>\n <ng-template #HtmlContent>\n <span [innerHTML]=\"field().configData?.tooltipMessage\"></span>\n </ng-template>\n </label>\n @if(reactiveFormControlobject()) {\n <mat-radio-group [class]=\"'radio-btn-group radio-btn-gender ' + field()?.fieldName + (field()?.configData?.isInlineLabel ? ' radio-inline-group' : ' w-100')\" *ngIf=\"field() && field()?.isVisible\"\n [required]=\"field()?.validators?.isRequired\"\n [value]=\"inputValue\"\n [formControl]=\"reactiveFormControlobject()\"\n (change)=\"onRadioGroupChange($event)\"\n [id]=\"field()?.fieldName\"\n [attr.name]=\"field()?.fieldNameAttribute\"\n >\n <div\n class=\"card radio-card-gender py-auto px-1\"\n *ngFor=\"let data of field()?.options\"\n [ngClass]=\"{'disable-radio-btn': field()?.isDisable || reactiveFormControlobject?.disabled || data.disabled === true || data.disabled === 'true', 'two-options': field()?.options?.length === 2}\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n [ngStyle]=\"{\n '--radio-button-border-color': inputValue === data.value ? field()?.controlStyle?.focusBorderColor : field()?.controlStyle?.borderColor,\n '--radio-button-background-color': inputValue === data.value ? field()?.controlStyle?.focusBackground : field()?.controlStyle?.background,\n '--radio-button-border-width': inputValue === data.value ? field()?.controlStyle?.focusBorderWidth : field()?.controlStyle?.borderWidth,\n '--radio-button-border-radius': inputValue === data.value ? field()?.controlStyle?.borderRadius : field()?.controlStyle?.borderRadius,\n }\"\n >\n <mat-radio-button\n style=\"min-width: 72px; text-align: center;\"\n class=\"radioButtonGender\"\n [value]=\"data.value\"\n [disabled]=\"data.disabled === true || data.disabled === 'true'\"\n [id]=\"field()?.fieldName + '_' + data.value\"\n [name]=\"field()?.fieldNameAttribute + '_' + data.value\"\n >\n <span style=\"white-space: pre-line;\" class=\"forRadioLabel\" [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color,\n }\">{{ data.label }}\n <img class=\"radio-btn-icon\" *ngIf=\"field()?.imageUrl\" [src]=\"field()?.imageUrl\" alt=\"\">\n </span>\n </mat-radio-button>\n </div>\n </mat-radio-group>\n }@else {\n <mat-radio-group [class]=\"'radio-btn-group radio-btn-gender ' + field()?.fieldName + (field()?.configData?.isInlineLabel ? ' radio-inline-group' : ' w-100')\" *ngIf=\"field() && field()?.isVisible\"\n [required]=\"field()?.validators?.isRequired\"\n [value]=\"inputValue\"\n (change)=\"onRadioGroupChange($event)\"\n [id]=\"field()?.fieldName\"\n [attr.name]=\"field()?.fieldNameAttribute\"\n >\n <div\n class=\"card radio-card-gender py-auto px-1\"\n *ngFor=\"let data of field()?.options\"\n [ngClass]=\"{'disable-radio-btn': field()?.isDisable || data.disabled === true || data.disabled === 'true', 'two-options': field()?.options?.length === 2}\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n [ngStyle]=\"{\n '--radio-button-border-color': inputValue === data.value ? field()?.controlStyle?.focusBorderColor : field()?.controlStyle?.borderColor,\n '--radio-button-background-color': inputValue === data.value ? field()?.controlStyle?.focusBackground : field()?.controlStyle?.background,\n '--radio-button-border-width': inputValue === data.value ? field()?.controlStyle?.focusBorderWidth : field()?.controlStyle?.borderWidth,\n '--radio-button-border-radius': inputValue === data.value ? field()?.controlStyle?.borderRadius : field()?.controlStyle?.borderRadius,\n }\"\n >\n <mat-radio-button\n style=\"min-width: 72px; text-align: center;\"\n class=\"radioButtonGender\"\n [value]=\"data.value\"\n [disabled]=\"data.disabled === true || data.disabled === 'true'\"\n [id]=\"field()?.fieldName + '_' + data.value\"\n [name]=\"field()?.fieldNameAttribute + '_' + data.value\"\n >\n <span style=\"white-space: pre-line;\" class=\"forRadioLabel\" [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color,\n }\">{{ data.label }}\n <img class=\"radio-btn-icon\" *ngIf=\"field()?.imageUrl\" [src]=\"field()?.imageUrl\" alt=\"\">\n </span>\n </mat-radio-button>\n </div>\n </mat-radio-group>\n }\n <div class=\"error-message\" *ngIf=\"false\">\n {{field()?.validators?.patternMessage}}.\n </div>\n</div>\n", styles: [".radio-selection-border{border:1px solid #ffbb00!important;background:#fffaeb!important}*{font-family:mulish!important}.field-lable{font-size:12px!important;font-weight:700!important;color:#444!important;margin-bottom:0!important;white-space:pre-wrap!important}.error-message{color:red}.toggle-img{width:12px;margin-left:8px!important}@media screen and (max-width: 768px){.toggle-img{width:16px}}.radio-btn-group{display:flex;align-items:center;gap:1rem;align-self:stretch}::ng-deep .radio-btn-gender .mdc-form-field .mdc-radio{display:none!important}.radio-card-gender{box-shadow:none;border-color:var(--radio-button-border-color,#DADADA);border-width:var(--radio-button-border-width, 1px solid);background:var(--radio-button-background-color, #FFFFFF);display:flex;align-items:center;cursor:pointer;width:max-content!important;height:100%;border-radius:var(--radio-button-border-radius, 6px)}.radio-card-gender.two-options{min-width:144px!important}@media (max-width: 400px){.radio-btn-group .radio-card-gender.two-options{min-width:0!important;width:50%!important;max-width:50%!important}}::ng-deep .radioButtonGender .mdc-form-field .mdc-radio{display:none!important}.forRadioLabel{font-size:var(--radio-button-font-size, 12px)!important;font-weight:var(--radio-button-font-weight, 400);cursor:pointer;color:var(--radio-button-font-color, #444444)}.radio-btn-icon{margin-top:-2px;margin-left:4px}.selected-radio-btn{border:1px solid #ffbb00!important}.disable-radio-btn{background:#f5f5f5;pointer-events:none;cursor:none}@media (min-width: 769px){.radio-inline-wrapper{display:flex;align-items:center;justify-content:space-between;width:100%;gap:1rem}.radio-inline-label{flex:1;margin-bottom:0!important;white-space:normal!important}.radio-inline-group{flex-shrink:0}}\n"] }]
82
+ ], template: "<div [class]=\"field()?.configData?.isInlineLabel ? 'radio-inline-wrapper' : ''\">\n <label class=\"field-lable\" *ngIf=\"field() && field()?.isVisible && field().isShowLabel\" [class.radio-inline-label]=\"field()?.configData?.isInlineLabel\" [ngStyle]=\"{\n }\">{{field()?.label}}<span class=\"error-message\" *ngIf=\"field()?.validators?.isRequired\">*</span>\n <span [appTooltipTemplate]=\"HtmlContent\" arrowPosition=\"left\" tooltipPosition=\"bottom\">\n <img [src]=\"field().configData?.labelIconUrl\" class=\"toggle-img mx-1\" />\n </span>\n <ng-template #HtmlContent>\n <span [innerHTML]=\"field().configData?.tooltipMessage\"></span>\n </ng-template>\n </label>\n @if(reactiveFormControlobject()) {\n <mat-radio-group [class]=\"'radio-btn-group radio-btn-gender ' + field()?.fieldName + (field()?.configData?.isInlineLabel ? ' radio-inline-group' : ' w-100')\" *ngIf=\"field() && field()?.isVisible\"\n [required]=\"field()?.validators?.isRequired\"\n [value]=\"inputValue\"\n [formControl]=\"reactiveFormControlobject()\"\n (change)=\"onRadioGroupChange($event)\"\n [id]=\"field()?.fieldName\"\n [attr.name]=\"field()?.fieldNameAttribute\"\n >\n <div\n class=\"card radio-card-gender py-auto px-1\"\n *ngFor=\"let data of field()?.options\"\n [ngClass]=\"{'disable-radio-btn': field()?.isDisable || reactiveFormControlobject?.disabled || data.disabled === true || data.disabled === 'true', 'two-options': field()?.options?.length === 2}\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n [ngStyle]=\"{\n '--radio-button-border-color': inputValue === data.value ? field()?.controlStyle?.focusBorderColor : field()?.controlStyle?.borderColor,\n '--radio-button-background-color': inputValue === data.value ? field()?.controlStyle?.focusBackground : field()?.controlStyle?.background,\n '--radio-button-border-width': inputValue === data.value ? field()?.controlStyle?.focusBorderWidth : field()?.controlStyle?.borderWidth,\n '--radio-button-border-radius': inputValue === data.value ? field()?.controlStyle?.borderRadius : field()?.controlStyle?.borderRadius,\n }\"\n >\n <mat-radio-button\n style=\"min-width: 72px; text-align: center;\"\n class=\"radioButtonGender\"\n [value]=\"data.value\"\n [disabled]=\"data.disabled === true || data.disabled === 'true'\"\n [id]=\"field()?.fieldName + '_' + data.value\"\n [name]=\"field()?.fieldNameAttribute + '_' + data.optionFieldNameAttribute\"\n >\n <span style=\"white-space: pre-line;\" class=\"forRadioLabel\" [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color,\n }\">{{ data.label }}\n <img class=\"radio-btn-icon\" *ngIf=\"field()?.imageUrl\" [src]=\"field()?.imageUrl\" alt=\"\">\n </span>\n </mat-radio-button>\n </div>\n </mat-radio-group>\n }@else {\n <mat-radio-group [class]=\"'radio-btn-group radio-btn-gender ' + field()?.fieldName + (field()?.configData?.isInlineLabel ? ' radio-inline-group' : ' w-100')\" *ngIf=\"field() && field()?.isVisible\"\n [required]=\"field()?.validators?.isRequired\"\n [value]=\"inputValue\"\n (change)=\"onRadioGroupChange($event)\"\n [id]=\"field()?.fieldName\"\n [attr.name]=\"field()?.fieldNameAttribute\"\n >\n <div\n class=\"card radio-card-gender py-auto px-1\"\n *ngFor=\"let data of field()?.options\"\n [ngClass]=\"{'disable-radio-btn': field()?.isDisable || data.disabled === true || data.disabled === 'true', 'two-options': field()?.options?.length === 2}\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n [ngStyle]=\"{\n '--radio-button-border-color': inputValue === data.value ? field()?.controlStyle?.focusBorderColor : field()?.controlStyle?.borderColor,\n '--radio-button-background-color': inputValue === data.value ? field()?.controlStyle?.focusBackground : field()?.controlStyle?.background,\n '--radio-button-border-width': inputValue === data.value ? field()?.controlStyle?.focusBorderWidth : field()?.controlStyle?.borderWidth,\n '--radio-button-border-radius': inputValue === data.value ? field()?.controlStyle?.borderRadius : field()?.controlStyle?.borderRadius,\n }\"\n >\n <mat-radio-button\n style=\"min-width: 72px; text-align: center;\"\n class=\"radioButtonGender\"\n [value]=\"data.value\"\n [disabled]=\"data.disabled === true || data.disabled === 'true'\"\n [id]=\"field()?.fieldName + '_' + data.value\"\n [name]=\"field()?.fieldNameAttribute + '_' + data.optionFieldNameAttribute\"\n >\n <span style=\"white-space: pre-line;\" class=\"forRadioLabel\" [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color,\n }\">{{ data.label }}\n <img class=\"radio-btn-icon\" *ngIf=\"field()?.imageUrl\" [src]=\"field()?.imageUrl\" alt=\"\">\n </span>\n </mat-radio-button>\n </div>\n </mat-radio-group>\n }\n <div class=\"error-message\" *ngIf=\"false\">\n {{field()?.validators?.patternMessage}}.\n </div>\n</div>\n", styles: [".radio-selection-border{border:1px solid #ffbb00!important;background:#fffaeb!important}*{font-family:mulish!important}.field-lable{font-size:12px!important;font-weight:700!important;color:#444!important;margin-bottom:0!important;white-space:pre-wrap!important}.error-message{color:red}.toggle-img{width:12px;margin-left:8px!important}@media screen and (max-width: 768px){.toggle-img{width:16px}}.radio-btn-group{display:flex;align-items:center;gap:1rem;align-self:stretch}::ng-deep .radio-btn-gender .mdc-form-field .mdc-radio{display:none!important}.radio-card-gender{box-shadow:none;border-color:var(--radio-button-border-color,#DADADA);border-width:var(--radio-button-border-width, 1px solid);background:var(--radio-button-background-color, #FFFFFF);display:flex;align-items:center;cursor:pointer;width:max-content!important;height:100%;border-radius:var(--radio-button-border-radius, 6px)}.radio-card-gender.two-options{min-width:144px!important}@media (max-width: 400px){.radio-btn-group .radio-card-gender.two-options{min-width:0!important;width:50%!important;max-width:50%!important}}::ng-deep .radioButtonGender .mdc-form-field .mdc-radio{display:none!important}.forRadioLabel{font-size:var(--radio-button-font-size, 12px)!important;font-weight:var(--radio-button-font-weight, 400);cursor:pointer;color:var(--radio-button-font-color, #444444)}.radio-btn-icon{margin-top:-2px;margin-left:4px}.selected-radio-btn{border:1px solid #ffbb00!important}.disable-radio-btn{background:#f5f5f5;pointer-events:none;cursor:none}@media (min-width: 769px){.radio-inline-wrapper{display:flex;align-items:center;justify-content:space-between;width:100%;gap:1rem}.radio-inline-label{flex:1;margin-bottom:0!important;white-space:normal!important}.radio-inline-group{flex-shrink:0}}\n"] }]
83
83
  }], ctorParameters: () => [{ type: i1.MasterControlService }], propDecorators: { change: [{
84
84
  type: Output
85
85
  }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFzdGVyLWNvbnRyb2wvc3JjL2xpYi9yYWRpby9yYWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXN0ZXItY29udHJvbC9zcmMvbGliL3JhZGlvL3JhZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxjQUFjLEVBQWtCLE1BQU0seUJBQXlCLENBQUM7QUFFekUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7OztBQXNCNUUsTUFBTSxPQUFPLGNBQWM7SUFDTjtJQUFuQixZQUFtQixhQUFvQztRQUFwQyxrQkFBYSxHQUFiLGFBQWEsQ0FBdUI7SUFBRSxDQUFDO0lBQzFELHlCQUF5QixHQUFTLEtBQUssRUFBTyxDQUFDO0lBQy9DLEtBQUssR0FBUyxLQUFLLENBQUMsUUFBUSxFQUFPLENBQUM7SUFDcEMsVUFBVSxHQUFRLElBQUksQ0FBQztJQUV2QixRQUFRLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQ3pCLFNBQVMsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFFaEIsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFFM0MsUUFBUTtRQUNOLDRCQUE0QixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLGtFQUFrRTtJQUNwRSxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUFhO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFxQjtRQUN0QyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVLEVBQUUsS0FBWTtRQUNsQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5RSxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7d0dBcERVLGNBQWM7NEZBQWQsY0FBYyw4WUFSWjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxjQUFjO2dCQUMzQixLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsMEJDMUJMLHcwS0E0RkEsdXlERGhGSSxjQUFjLG9sQkFDZCxZQUFZLGtiQUNaLG1CQUFtQixzaEJBQ25CLFdBQVcsK0JBQ1gsMEJBQTBCOzs0RkFZakIsY0FBYztrQkFwQjFCLFNBQVM7K0JBQ0UsV0FBVyxjQUNULElBQUksV0FDUDt3QkFDUCxjQUFjO3dCQUNkLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLDBCQUEwQjtxQkFDM0IsYUFHWTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLGdCQUFnQjs0QkFDM0IsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7eUZBV08sTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VzdG9taXplZFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLy4uL2RpcmVjdGl2ZXMvY3VzdG9taXplZC50b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgaW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0UmFkaW9Nb2R1bGUsIE1hdFJhZGlvQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuaW1wb3J0IHsgTWFzdGVyQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi9tYXN0ZXItY29udHJvbC5zZXJ2aWNlJztcbmltcG9ydCB7IGluaXRpYWxpemVGaWVsZE5hbWVBdHRyaWJ1dGUgfSBmcm9tICcuLi9maWVsZC1uYW1lLWF0dHJpYnV0ZS51dGlsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXJhZGlvJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdFJhZGlvTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEN1c3RvbWl6ZWRUb29sdGlwRGlyZWN0aXZlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpby5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9yYWRpby5jb21wb25lbnQuY3NzJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgIHVzZUV4aXN0aW5nOiBSYWRpb0NvbXBvbmVudCxcbiAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFJhZGlvQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbWFzdGVyU2VydmljZSA6IE1hc3RlckNvbnRyb2xTZXJ2aWNlKXt9XG4gIHJlYWN0aXZlRm9ybUNvbnRyb2xvYmplY3QgOiBhbnkgPSBpbnB1dDxhbnk+KCk7XG4gIGZpZWxkIDogYW55ID0gaW5wdXQucmVxdWlyZWQ8YW55PigpO1xuICBpbnB1dFZhbHVlOiBhbnkgPSBudWxsO1xuXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaW5pdGlhbGl6ZUZpZWxkTmFtZUF0dHJpYnV0ZSh0aGlzLmZpZWxkKCkpO1xuICAgIC8vIEluaXRpYWxpemUgaW5wdXRWYWx1ZSB3aXRoIGEgZGVmYXVsdCBvciBpbml0aWFsIHZhbHVlIGlmIG5lZWRlZFxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIG9uVmFsdWVDaGFuZ2UobmV3VmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UobmV3VmFsdWUpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5jaGFuZ2UuZW1pdChuZXdWYWx1ZSk7XG4gIH1cblxuICBvblJhZGlvR3JvdXBDaGFuZ2UoZXZlbnQ6IE1hdFJhZGlvQ2hhbmdlKTogdm9pZCB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBldmVudC52YWx1ZTtcbiAgICB0aGlzLmlucHV0VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMuY2hhbmdlLmVtaXQobmV3VmFsdWUpO1xuICAgIGNvbnNvbGUubG9nKCdSYWRpbyBncm91cCBjaGFuZ2VkOicsIG5ld1ZhbHVlKTtcbiAgfVxuXG4gIHRvZ2dsZVJhZGlvKHZhbHVlOiBhbnksIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gdmFsdWU7XG4gICAgaWYgKHRoaXMucmVhY3RpdmVGb3JtQ29udHJvbG9iamVjdCAmJiB0aGlzLnJlYWN0aXZlRm9ybUNvbnRyb2xvYmplY3Quc2V0VmFsdWUpIHtcbiAgICAgIHRoaXMucmVhY3RpdmVGb3JtQ29udHJvbG9iamVjdC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMub25SYWRpb0dyb3VwQ2hhbmdlKHsgc291cmNlOiB7fSBhcyBhbnksIHZhbHVlOiB2YWx1ZSB9KTtcbiAgfVxuXG59XG5cbiIsIjxkaXYgW2NsYXNzXT1cImZpZWxkKCk/LmNvbmZpZ0RhdGE/LmlzSW5saW5lTGFiZWwgPyAncmFkaW8taW5saW5lLXdyYXBwZXInIDogJydcIj5cbiAgPGxhYmVsIGNsYXNzPVwiZmllbGQtbGFibGVcIiAgKm5nSWY9XCJmaWVsZCgpICYmIGZpZWxkKCk/LmlzVmlzaWJsZSAmJiBmaWVsZCgpLmlzU2hvd0xhYmVsXCIgW2NsYXNzLnJhZGlvLWlubGluZS1sYWJlbF09XCJmaWVsZCgpPy5jb25maWdEYXRhPy5pc0lubGluZUxhYmVsXCIgW25nU3R5bGVdPVwie1xuICB9XCI+e3tmaWVsZCgpPy5sYWJlbH19PHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJmaWVsZCgpPy52YWxpZGF0b3JzPy5pc1JlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgPHNwYW4gW2FwcFRvb2x0aXBUZW1wbGF0ZV09XCJIdG1sQ29udGVudFwiIGFycm93UG9zaXRpb249XCJsZWZ0XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+XG4gICAgPGltZyBbc3JjXT1cImZpZWxkKCkuY29uZmlnRGF0YT8ubGFiZWxJY29uVXJsXCIgY2xhc3M9XCJ0b2dnbGUtaW1nIG14LTFcIiAvPlxuICA8L3NwYW4+XG4gIDxuZy10ZW1wbGF0ZSAjSHRtbENvbnRlbnQ+XG4gICAgPHNwYW4gW2lubmVySFRNTF09XCJmaWVsZCgpLmNvbmZpZ0RhdGE/LnRvb2x0aXBNZXNzYWdlXCI+PC9zcGFuPlxuICA8L25nLXRlbXBsYXRlPlxuICA8L2xhYmVsPlxuICBAaWYocmVhY3RpdmVGb3JtQ29udHJvbG9iamVjdCgpKSB7XG4gICAgIDxtYXQtcmFkaW8tZ3JvdXAgW2NsYXNzXT1cIidyYWRpby1idG4tZ3JvdXAgcmFkaW8tYnRuLWdlbmRlciAnICsgZmllbGQoKT8uZmllbGROYW1lICsgKGZpZWxkKCk/LmNvbmZpZ0RhdGE/LmlzSW5saW5lTGFiZWwgPyAnIHJhZGlvLWlubGluZS1ncm91cCcgOiAnIHctMTAwJylcIiAqbmdJZj1cImZpZWxkKCkgJiYgZmllbGQoKT8uaXNWaXNpYmxlXCJcbiAgICBbcmVxdWlyZWRdPVwiZmllbGQoKT8udmFsaWRhdG9ycz8uaXNSZXF1aXJlZFwiXG4gICAgW3ZhbHVlXT1cImlucHV0VmFsdWVcIlxuICAgIFtmb3JtQ29udHJvbF09XCJyZWFjdGl2ZUZvcm1Db250cm9sb2JqZWN0KClcIlxuICAgIChjaGFuZ2UpPVwib25SYWRpb0dyb3VwQ2hhbmdlKCRldmVudClcIlxuICAgIFtpZF09XCJmaWVsZCgpPy5maWVsZE5hbWVcIlxuICAgIFthdHRyLm5hbWVdPVwiZmllbGQoKT8uZmllbGROYW1lQXR0cmlidXRlXCJcbiAgICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjYXJkIHJhZGlvLWNhcmQtZ2VuZGVyIHB5LWF1dG8gcHgtMVwiXG4gICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBmaWVsZCgpPy5vcHRpb25zXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsnZGlzYWJsZS1yYWRpby1idG4nOiBmaWVsZCgpPy5pc0Rpc2FibGUgfHwgcmVhY3RpdmVGb3JtQ29udHJvbG9iamVjdD8uZGlzYWJsZWQgfHwgZGF0YS5kaXNhYmxlZCA9PT0gdHJ1ZSB8fCBkYXRhLmRpc2FibGVkID09PSAndHJ1ZScsICd0d28tb3B0aW9ucyc6IGZpZWxkKCk/Lm9wdGlvbnM/Lmxlbmd0aCA9PT0gMn1cIlxuICAgICAgKGNsaWNrKT1cIihkYXRhLmRpc2FibGVkID09PSB0cnVlIHx8IGRhdGEuZGlzYWJsZWQgPT09ICd0cnVlJykgPyBudWxsIDogdG9nZ2xlUmFkaW8oZGF0YS52YWx1ZSwgJGV2ZW50KVwiXG4gICAgICAgW25nU3R5bGVdPVwie1xuICAgICctLXJhZGlvLWJ1dHRvbi1ib3JkZXItY29sb3InOiBpbnB1dFZhbHVlID09PSBkYXRhLnZhbHVlID8gZmllbGQoKT8uY29udHJvbFN0eWxlPy5mb2N1c0JvcmRlckNvbG9yIDogZmllbGQoKT8uY29udHJvbFN0eWxlPy5ib3JkZXJDb2xvcixcbiAgICAnLS1yYWRpby1idXR0b24tYmFja2dyb3VuZC1jb2xvcic6IGlucHV0VmFsdWUgPT09IGRhdGEudmFsdWUgPyBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmZvY3VzQmFja2dyb3VuZCA6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uYmFja2dyb3VuZCxcbiAgICAnLS1yYWRpby1idXR0b24tYm9yZGVyLXdpZHRoJzogaW5wdXRWYWx1ZSA9PT0gZGF0YS52YWx1ZSA/IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uZm9jdXNCb3JkZXJXaWR0aCA6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uYm9yZGVyV2lkdGgsXG4gICAgJy0tcmFkaW8tYnV0dG9uLWJvcmRlci1yYWRpdXMnOiBpbnB1dFZhbHVlID09PSBkYXRhLnZhbHVlID8gZmllbGQoKT8uY29udHJvbFN0eWxlPy5ib3JkZXJSYWRpdXMgOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmJvcmRlclJhZGl1cyxcbiAgfVwiXG4gICAgICA+XG4gICAgICA8bWF0LXJhZGlvLWJ1dHRvblxuICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogNzJweDsgdGV4dC1hbGlnbjogY2VudGVyO1wiXG4gICAgICAgIGNsYXNzPVwicmFkaW9CdXR0b25HZW5kZXJcIlxuICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkYXRhLmRpc2FibGVkID09PSB0cnVlIHx8IGRhdGEuZGlzYWJsZWQgPT09ICd0cnVlJ1wiXG4gICAgICAgIFtpZF09XCJmaWVsZCgpPy5maWVsZE5hbWUgKyAnXycgKyBkYXRhLnZhbHVlXCJcbiAgICAgICAgW25hbWVdPVwiZmllbGQoKT8uZmllbGROYW1lQXR0cmlidXRlICsgJ18nICsgZGF0YS52YWx1ZVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIHN0eWxlPVwid2hpdGUtc3BhY2U6IHByZS1saW5lO1wiIGNsYXNzPVwiZm9yUmFkaW9MYWJlbFwiIFtuZ1N0eWxlXT1cIntcbiAgICAnLS1yYWRpby1idXR0b24tZm9udC13ZWlnaHQnOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmZvbnRXZWlnaHQsXG4gICAgJy0tcmFkaW8tYnV0dG9uLWZvbnQtc2l6ZSc6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uZm9udFNpemUsXG4gICAgJy0tcmFkaW8tYnV0dG9uLWZvbnQtY29sb3InOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmNvbG9yLFxuICB9XCI+e3sgZGF0YS5sYWJlbCB9fVxuICA8aW1nIGNsYXNzPVwicmFkaW8tYnRuLWljb25cIiAqbmdJZj1cImZpZWxkKCk/LmltYWdlVXJsXCIgW3NyY109XCJmaWVsZCgpPy5pbWFnZVVybFwiIGFsdD1cIlwiPlxuICA8L3NwYW4+XG4gICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbWF0LXJhZGlvLWdyb3VwPlxuICB9QGVsc2Uge1xuICAgICA8bWF0LXJhZGlvLWdyb3VwIFtjbGFzc109XCIncmFkaW8tYnRuLWdyb3VwIHJhZGlvLWJ0bi1nZW5kZXIgJyArIGZpZWxkKCk/LmZpZWxkTmFtZSArIChmaWVsZCgpPy5jb25maWdEYXRhPy5pc0lubGluZUxhYmVsID8gJyByYWRpby1pbmxpbmUtZ3JvdXAnIDogJyB3LTEwMCcpXCIgKm5nSWY9XCJmaWVsZCgpICYmIGZpZWxkKCk/LmlzVmlzaWJsZVwiXG4gICAgW3JlcXVpcmVkXT1cImZpZWxkKCk/LnZhbGlkYXRvcnM/LmlzUmVxdWlyZWRcIlxuICAgIFt2YWx1ZV09XCJpbnB1dFZhbHVlXCJcbiAgICAoY2hhbmdlKT1cIm9uUmFkaW9Hcm91cENoYW5nZSgkZXZlbnQpXCJcbiAgICBbaWRdPVwiZmllbGQoKT8uZmllbGROYW1lXCJcbiAgICBbYXR0ci5uYW1lXT1cImZpZWxkKCk/LmZpZWxkTmFtZUF0dHJpYnV0ZVwiXG4gICAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY2FyZCByYWRpby1jYXJkLWdlbmRlciBweS1hdXRvIHB4LTFcIlxuICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmllbGQoKT8ub3B0aW9uc1wiXG4gICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGUtcmFkaW8tYnRuJzogZmllbGQoKT8uaXNEaXNhYmxlIHx8IGRhdGEuZGlzYWJsZWQgPT09IHRydWUgfHwgZGF0YS5kaXNhYmxlZCA9PT0gJ3RydWUnLCAndHdvLW9wdGlvbnMnOiBmaWVsZCgpPy5vcHRpb25zPy5sZW5ndGggPT09IDJ9XCJcbiAgICAgIChjbGljayk9XCIoZGF0YS5kaXNhYmxlZCA9PT0gdHJ1ZSB8fCBkYXRhLmRpc2FibGVkID09PSAndHJ1ZScpID8gbnVsbCA6IHRvZ2dsZVJhZGlvKGRhdGEudmFsdWUsICRldmVudClcIlxuICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAnLS1yYWRpby1idXR0b24tYm9yZGVyLWNvbG9yJzogaW5wdXRWYWx1ZSA9PT0gZGF0YS52YWx1ZSA/IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uZm9jdXNCb3JkZXJDb2xvciA6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uYm9yZGVyQ29sb3IsXG4gICAgJy0tcmFkaW8tYnV0dG9uLWJhY2tncm91bmQtY29sb3InOiBpbnB1dFZhbHVlID09PSBkYXRhLnZhbHVlID8gZmllbGQoKT8uY29udHJvbFN0eWxlPy5mb2N1c0JhY2tncm91bmQgOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmJhY2tncm91bmQsXG4gICAgJy0tcmFkaW8tYnV0dG9uLWJvcmRlci13aWR0aCc6IGlucHV0VmFsdWUgPT09IGRhdGEudmFsdWUgPyBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmZvY3VzQm9yZGVyV2lkdGggOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmJvcmRlcldpZHRoLFxuICAgICctLXJhZGlvLWJ1dHRvbi1ib3JkZXItcmFkaXVzJzogaW5wdXRWYWx1ZSA9PT0gZGF0YS52YWx1ZSA/IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uYm9yZGVyUmFkaXVzIDogZmllbGQoKT8uY29udHJvbFN0eWxlPy5ib3JkZXJSYWRpdXMsXG4gIH1cIlxuICAgICAgPlxuICAgICAgPG1hdC1yYWRpby1idXR0b25cbiAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDcycHg7IHRleHQtYWxpZ246IGNlbnRlcjtcIlxuICAgICAgICBjbGFzcz1cInJhZGlvQnV0dG9uR2VuZGVyXCJcbiAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGF0YS5kaXNhYmxlZCA9PT0gdHJ1ZSB8fCBkYXRhLmRpc2FibGVkID09PSAndHJ1ZSdcIlxuICAgICAgICBbaWRdPVwiZmllbGQoKT8uZmllbGROYW1lICsgJ18nICsgZGF0YS52YWx1ZVwiXG4gICAgICAgIFtuYW1lXT1cImZpZWxkKCk/LmZpZWxkTmFtZUF0dHJpYnV0ZSArICdfJyArIGRhdGEudmFsdWVcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBzdHlsZT1cIndoaXRlLXNwYWNlOiBwcmUtbGluZTtcIiBjbGFzcz1cImZvclJhZGlvTGFiZWxcIiBbbmdTdHlsZV09XCJ7XG4gICAgJy0tcmFkaW8tYnV0dG9uLWZvbnQtd2VpZ2h0JzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5mb250V2VpZ2h0LFxuICAgICctLXJhZGlvLWJ1dHRvbi1mb250LXNpemUnOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmZvbnRTaXplLFxuICAgICctLXJhZGlvLWJ1dHRvbi1mb250LWNvbG9yJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5jb2xvcixcbiAgfVwiPnt7IGRhdGEubGFiZWwgfX1cbiAgPGltZyBjbGFzcz1cInJhZGlvLWJ0bi1pY29uXCIgKm5nSWY9XCJmaWVsZCgpPy5pbWFnZVVybFwiIFtzcmNdPVwiZmllbGQoKT8uaW1hZ2VVcmxcIiBhbHQ9XCJcIj5cbiAgPC9zcGFuPlxuICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L21hdC1yYWRpby1ncm91cD5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiZmFsc2VcIj5cbiAgICB7e2ZpZWxkKCk/LnZhbGlkYXRvcnM/LnBhdHRlcm5NZXNzYWdlfX0uXG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFzdGVyLWNvbnRyb2wvc3JjL2xpYi9yYWRpby9yYWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXN0ZXItY29udHJvbC9zcmMvbGliL3JhZGlvL3JhZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxjQUFjLEVBQWtCLE1BQU0seUJBQXlCLENBQUM7QUFFekUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7OztBQXNCNUUsTUFBTSxPQUFPLGNBQWM7SUFDTjtJQUFuQixZQUFtQixhQUFvQztRQUFwQyxrQkFBYSxHQUFiLGFBQWEsQ0FBdUI7SUFBRSxDQUFDO0lBQzFELHlCQUF5QixHQUFTLEtBQUssRUFBTyxDQUFDO0lBQy9DLEtBQUssR0FBUyxLQUFLLENBQUMsUUFBUSxFQUFPLENBQUM7SUFDcEMsVUFBVSxHQUFRLElBQUksQ0FBQztJQUV2QixRQUFRLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQ3pCLFNBQVMsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFFaEIsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFFM0MsUUFBUTtRQUNOLDRCQUE0QixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLGtFQUFrRTtJQUNwRSxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUFhO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFxQjtRQUN0QyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVLEVBQUUsS0FBWTtRQUNsQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5RSxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7d0dBcERVLGNBQWM7NEZBQWQsY0FBYyw4WUFSWjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxjQUFjO2dCQUMzQixLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsMEJDMUJMLDgyS0E0RkEsdXlERGhGSSxjQUFjLG9sQkFDZCxZQUFZLGtiQUNaLG1CQUFtQixzaEJBQ25CLFdBQVcsK0JBQ1gsMEJBQTBCOzs0RkFZakIsY0FBYztrQkFwQjFCLFNBQVM7K0JBQ0UsV0FBVyxjQUNULElBQUksV0FDUDt3QkFDUCxjQUFjO3dCQUNkLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLDBCQUEwQjtxQkFDM0IsYUFHWTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLGdCQUFnQjs0QkFDM0IsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7eUZBV08sTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VzdG9taXplZFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLy4uL2RpcmVjdGl2ZXMvY3VzdG9taXplZC50b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgaW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0UmFkaW9Nb2R1bGUsIE1hdFJhZGlvQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuaW1wb3J0IHsgTWFzdGVyQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi9tYXN0ZXItY29udHJvbC5zZXJ2aWNlJztcbmltcG9ydCB7IGluaXRpYWxpemVGaWVsZE5hbWVBdHRyaWJ1dGUgfSBmcm9tICcuLi9maWVsZC1uYW1lLWF0dHJpYnV0ZS51dGlsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXJhZGlvJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdFJhZGlvTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEN1c3RvbWl6ZWRUb29sdGlwRGlyZWN0aXZlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpby5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9yYWRpby5jb21wb25lbnQuY3NzJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgIHVzZUV4aXN0aW5nOiBSYWRpb0NvbXBvbmVudCxcbiAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFJhZGlvQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbWFzdGVyU2VydmljZSA6IE1hc3RlckNvbnRyb2xTZXJ2aWNlKXt9XG4gIHJlYWN0aXZlRm9ybUNvbnRyb2xvYmplY3QgOiBhbnkgPSBpbnB1dDxhbnk+KCk7XG4gIGZpZWxkIDogYW55ID0gaW5wdXQucmVxdWlyZWQ8YW55PigpO1xuICBpbnB1dFZhbHVlOiBhbnkgPSBudWxsO1xuXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaW5pdGlhbGl6ZUZpZWxkTmFtZUF0dHJpYnV0ZSh0aGlzLmZpZWxkKCkpO1xuICAgIC8vIEluaXRpYWxpemUgaW5wdXRWYWx1ZSB3aXRoIGEgZGVmYXVsdCBvciBpbml0aWFsIHZhbHVlIGlmIG5lZWRlZFxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIG9uVmFsdWVDaGFuZ2UobmV3VmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UobmV3VmFsdWUpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5jaGFuZ2UuZW1pdChuZXdWYWx1ZSk7XG4gIH1cblxuICBvblJhZGlvR3JvdXBDaGFuZ2UoZXZlbnQ6IE1hdFJhZGlvQ2hhbmdlKTogdm9pZCB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBldmVudC52YWx1ZTtcbiAgICB0aGlzLmlucHV0VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMuY2hhbmdlLmVtaXQobmV3VmFsdWUpO1xuICAgIGNvbnNvbGUubG9nKCdSYWRpbyBncm91cCBjaGFuZ2VkOicsIG5ld1ZhbHVlKTtcbiAgfVxuXG4gIHRvZ2dsZVJhZGlvKHZhbHVlOiBhbnksIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gdmFsdWU7XG4gICAgaWYgKHRoaXMucmVhY3RpdmVGb3JtQ29udHJvbG9iamVjdCAmJiB0aGlzLnJlYWN0aXZlRm9ybUNvbnRyb2xvYmplY3Quc2V0VmFsdWUpIHtcbiAgICAgIHRoaXMucmVhY3RpdmVGb3JtQ29udHJvbG9iamVjdC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMub25SYWRpb0dyb3VwQ2hhbmdlKHsgc291cmNlOiB7fSBhcyBhbnksIHZhbHVlOiB2YWx1ZSB9KTtcbiAgfVxuXG59XG5cbiIsIjxkaXYgW2NsYXNzXT1cImZpZWxkKCk/LmNvbmZpZ0RhdGE/LmlzSW5saW5lTGFiZWwgPyAncmFkaW8taW5saW5lLXdyYXBwZXInIDogJydcIj5cbiAgPGxhYmVsIGNsYXNzPVwiZmllbGQtbGFibGVcIiAgKm5nSWY9XCJmaWVsZCgpICYmIGZpZWxkKCk/LmlzVmlzaWJsZSAmJiBmaWVsZCgpLmlzU2hvd0xhYmVsXCIgW2NsYXNzLnJhZGlvLWlubGluZS1sYWJlbF09XCJmaWVsZCgpPy5jb25maWdEYXRhPy5pc0lubGluZUxhYmVsXCIgW25nU3R5bGVdPVwie1xuICB9XCI+e3tmaWVsZCgpPy5sYWJlbH19PHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJmaWVsZCgpPy52YWxpZGF0b3JzPy5pc1JlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgPHNwYW4gW2FwcFRvb2x0aXBUZW1wbGF0ZV09XCJIdG1sQ29udGVudFwiIGFycm93UG9zaXRpb249XCJsZWZ0XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+XG4gICAgPGltZyBbc3JjXT1cImZpZWxkKCkuY29uZmlnRGF0YT8ubGFiZWxJY29uVXJsXCIgY2xhc3M9XCJ0b2dnbGUtaW1nIG14LTFcIiAvPlxuICA8L3NwYW4+XG4gIDxuZy10ZW1wbGF0ZSAjSHRtbENvbnRlbnQ+XG4gICAgPHNwYW4gW2lubmVySFRNTF09XCJmaWVsZCgpLmNvbmZpZ0RhdGE/LnRvb2x0aXBNZXNzYWdlXCI+PC9zcGFuPlxuICA8L25nLXRlbXBsYXRlPlxuICA8L2xhYmVsPlxuICBAaWYocmVhY3RpdmVGb3JtQ29udHJvbG9iamVjdCgpKSB7XG4gICAgIDxtYXQtcmFkaW8tZ3JvdXAgW2NsYXNzXT1cIidyYWRpby1idG4tZ3JvdXAgcmFkaW8tYnRuLWdlbmRlciAnICsgZmllbGQoKT8uZmllbGROYW1lICsgKGZpZWxkKCk/LmNvbmZpZ0RhdGE/LmlzSW5saW5lTGFiZWwgPyAnIHJhZGlvLWlubGluZS1ncm91cCcgOiAnIHctMTAwJylcIiAqbmdJZj1cImZpZWxkKCkgJiYgZmllbGQoKT8uaXNWaXNpYmxlXCJcbiAgICBbcmVxdWlyZWRdPVwiZmllbGQoKT8udmFsaWRhdG9ycz8uaXNSZXF1aXJlZFwiXG4gICAgW3ZhbHVlXT1cImlucHV0VmFsdWVcIlxuICAgIFtmb3JtQ29udHJvbF09XCJyZWFjdGl2ZUZvcm1Db250cm9sb2JqZWN0KClcIlxuICAgIChjaGFuZ2UpPVwib25SYWRpb0dyb3VwQ2hhbmdlKCRldmVudClcIlxuICAgIFtpZF09XCJmaWVsZCgpPy5maWVsZE5hbWVcIlxuICAgIFthdHRyLm5hbWVdPVwiZmllbGQoKT8uZmllbGROYW1lQXR0cmlidXRlXCJcbiAgICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjYXJkIHJhZGlvLWNhcmQtZ2VuZGVyIHB5LWF1dG8gcHgtMVwiXG4gICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBmaWVsZCgpPy5vcHRpb25zXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsnZGlzYWJsZS1yYWRpby1idG4nOiBmaWVsZCgpPy5pc0Rpc2FibGUgfHwgcmVhY3RpdmVGb3JtQ29udHJvbG9iamVjdD8uZGlzYWJsZWQgfHwgZGF0YS5kaXNhYmxlZCA9PT0gdHJ1ZSB8fCBkYXRhLmRpc2FibGVkID09PSAndHJ1ZScsICd0d28tb3B0aW9ucyc6IGZpZWxkKCk/Lm9wdGlvbnM/Lmxlbmd0aCA9PT0gMn1cIlxuICAgICAgKGNsaWNrKT1cIihkYXRhLmRpc2FibGVkID09PSB0cnVlIHx8IGRhdGEuZGlzYWJsZWQgPT09ICd0cnVlJykgPyBudWxsIDogdG9nZ2xlUmFkaW8oZGF0YS52YWx1ZSwgJGV2ZW50KVwiXG4gICAgICAgW25nU3R5bGVdPVwie1xuICAgICctLXJhZGlvLWJ1dHRvbi1ib3JkZXItY29sb3InOiBpbnB1dFZhbHVlID09PSBkYXRhLnZhbHVlID8gZmllbGQoKT8uY29udHJvbFN0eWxlPy5mb2N1c0JvcmRlckNvbG9yIDogZmllbGQoKT8uY29udHJvbFN0eWxlPy5ib3JkZXJDb2xvcixcbiAgICAnLS1yYWRpby1idXR0b24tYmFja2dyb3VuZC1jb2xvcic6IGlucHV0VmFsdWUgPT09IGRhdGEudmFsdWUgPyBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmZvY3VzQmFja2dyb3VuZCA6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uYmFja2dyb3VuZCxcbiAgICAnLS1yYWRpby1idXR0b24tYm9yZGVyLXdpZHRoJzogaW5wdXRWYWx1ZSA9PT0gZGF0YS52YWx1ZSA/IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uZm9jdXNCb3JkZXJXaWR0aCA6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uYm9yZGVyV2lkdGgsXG4gICAgJy0tcmFkaW8tYnV0dG9uLWJvcmRlci1yYWRpdXMnOiBpbnB1dFZhbHVlID09PSBkYXRhLnZhbHVlID8gZmllbGQoKT8uY29udHJvbFN0eWxlPy5ib3JkZXJSYWRpdXMgOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmJvcmRlclJhZGl1cyxcbiAgfVwiXG4gICAgICA+XG4gICAgICA8bWF0LXJhZGlvLWJ1dHRvblxuICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogNzJweDsgdGV4dC1hbGlnbjogY2VudGVyO1wiXG4gICAgICAgIGNsYXNzPVwicmFkaW9CdXR0b25HZW5kZXJcIlxuICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkYXRhLmRpc2FibGVkID09PSB0cnVlIHx8IGRhdGEuZGlzYWJsZWQgPT09ICd0cnVlJ1wiXG4gICAgICAgIFtpZF09XCJmaWVsZCgpPy5maWVsZE5hbWUgKyAnXycgKyBkYXRhLnZhbHVlXCJcbiAgICAgICAgW25hbWVdPVwiZmllbGQoKT8uZmllbGROYW1lQXR0cmlidXRlICsgJ18nICsgZGF0YS5vcHRpb25GaWVsZE5hbWVBdHRyaWJ1dGVcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBzdHlsZT1cIndoaXRlLXNwYWNlOiBwcmUtbGluZTtcIiBjbGFzcz1cImZvclJhZGlvTGFiZWxcIiBbbmdTdHlsZV09XCJ7XG4gICAgJy0tcmFkaW8tYnV0dG9uLWZvbnQtd2VpZ2h0JzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5mb250V2VpZ2h0LFxuICAgICctLXJhZGlvLWJ1dHRvbi1mb250LXNpemUnOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmZvbnRTaXplLFxuICAgICctLXJhZGlvLWJ1dHRvbi1mb250LWNvbG9yJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5jb2xvcixcbiAgfVwiPnt7IGRhdGEubGFiZWwgfX1cbiAgPGltZyBjbGFzcz1cInJhZGlvLWJ0bi1pY29uXCIgKm5nSWY9XCJmaWVsZCgpPy5pbWFnZVVybFwiIFtzcmNdPVwiZmllbGQoKT8uaW1hZ2VVcmxcIiBhbHQ9XCJcIj5cbiAgPC9zcGFuPlxuICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L21hdC1yYWRpby1ncm91cD5cbiAgfUBlbHNlIHtcbiAgICAgPG1hdC1yYWRpby1ncm91cCBbY2xhc3NdPVwiJ3JhZGlvLWJ0bi1ncm91cCByYWRpby1idG4tZ2VuZGVyICcgKyBmaWVsZCgpPy5maWVsZE5hbWUgKyAoZmllbGQoKT8uY29uZmlnRGF0YT8uaXNJbmxpbmVMYWJlbCA/ICcgcmFkaW8taW5saW5lLWdyb3VwJyA6ICcgdy0xMDAnKVwiICpuZ0lmPVwiZmllbGQoKSAmJiBmaWVsZCgpPy5pc1Zpc2libGVcIlxuICAgIFtyZXF1aXJlZF09XCJmaWVsZCgpPy52YWxpZGF0b3JzPy5pc1JlcXVpcmVkXCJcbiAgICBbdmFsdWVdPVwiaW5wdXRWYWx1ZVwiXG4gICAgKGNoYW5nZSk9XCJvblJhZGlvR3JvdXBDaGFuZ2UoJGV2ZW50KVwiXG4gICAgW2lkXT1cImZpZWxkKCk/LmZpZWxkTmFtZVwiXG4gICAgW2F0dHIubmFtZV09XCJmaWVsZCgpPy5maWVsZE5hbWVBdHRyaWJ1dGVcIlxuICAgID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNhcmQgcmFkaW8tY2FyZC1nZW5kZXIgcHktYXV0byBweC0xXCJcbiAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpZWxkKCk/Lm9wdGlvbnNcIlxuICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlLXJhZGlvLWJ0bic6IGZpZWxkKCk/LmlzRGlzYWJsZSB8fCBkYXRhLmRpc2FibGVkID09PSB0cnVlIHx8IGRhdGEuZGlzYWJsZWQgPT09ICd0cnVlJywgJ3R3by1vcHRpb25zJzogZmllbGQoKT8ub3B0aW9ucz8ubGVuZ3RoID09PSAyfVwiXG4gICAgICAoY2xpY2spPVwiKGRhdGEuZGlzYWJsZWQgPT09IHRydWUgfHwgZGF0YS5kaXNhYmxlZCA9PT0gJ3RydWUnKSA/IG51bGwgOiB0b2dnbGVSYWRpbyhkYXRhLnZhbHVlLCAkZXZlbnQpXCJcbiAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgJy0tcmFkaW8tYnV0dG9uLWJvcmRlci1jb2xvcic6IGlucHV0VmFsdWUgPT09IGRhdGEudmFsdWUgPyBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmZvY3VzQm9yZGVyQ29sb3IgOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmJvcmRlckNvbG9yLFxuICAgICctLXJhZGlvLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yJzogaW5wdXRWYWx1ZSA9PT0gZGF0YS52YWx1ZSA/IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uZm9jdXNCYWNrZ3JvdW5kIDogZmllbGQoKT8uY29udHJvbFN0eWxlPy5iYWNrZ3JvdW5kLFxuICAgICctLXJhZGlvLWJ1dHRvbi1ib3JkZXItd2lkdGgnOiBpbnB1dFZhbHVlID09PSBkYXRhLnZhbHVlID8gZmllbGQoKT8uY29udHJvbFN0eWxlPy5mb2N1c0JvcmRlcldpZHRoIDogZmllbGQoKT8uY29udHJvbFN0eWxlPy5ib3JkZXJXaWR0aCxcbiAgICAnLS1yYWRpby1idXR0b24tYm9yZGVyLXJhZGl1cyc6IGlucHV0VmFsdWUgPT09IGRhdGEudmFsdWUgPyBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmJvcmRlclJhZGl1cyA6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uYm9yZGVyUmFkaXVzLFxuICB9XCJcbiAgICAgID5cbiAgICAgIDxtYXQtcmFkaW8tYnV0dG9uXG4gICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiA3MnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7XCJcbiAgICAgICAgY2xhc3M9XCJyYWRpb0J1dHRvbkdlbmRlclwiXG4gICAgICAgIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRhdGEuZGlzYWJsZWQgPT09IHRydWUgfHwgZGF0YS5kaXNhYmxlZCA9PT0gJ3RydWUnXCJcbiAgICAgICAgW2lkXT1cImZpZWxkKCk/LmZpZWxkTmFtZSArICdfJyArIGRhdGEudmFsdWVcIlxuICAgICAgICBbbmFtZV09XCJmaWVsZCgpPy5maWVsZE5hbWVBdHRyaWJ1dGUgKyAnXycgKyBkYXRhLm9wdGlvbkZpZWxkTmFtZUF0dHJpYnV0ZVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIHN0eWxlPVwid2hpdGUtc3BhY2U6IHByZS1saW5lO1wiIGNsYXNzPVwiZm9yUmFkaW9MYWJlbFwiIFtuZ1N0eWxlXT1cIntcbiAgICAnLS1yYWRpby1idXR0b24tZm9udC13ZWlnaHQnOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmZvbnRXZWlnaHQsXG4gICAgJy0tcmFkaW8tYnV0dG9uLWZvbnQtc2l6ZSc6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uZm9udFNpemUsXG4gICAgJy0tcmFkaW8tYnV0dG9uLWZvbnQtY29sb3InOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmNvbG9yLFxuICB9XCI+e3sgZGF0YS5sYWJlbCB9fVxuICA8aW1nIGNsYXNzPVwicmFkaW8tYnRuLWljb25cIiAqbmdJZj1cImZpZWxkKCk/LmltYWdlVXJsXCIgW3NyY109XCJmaWVsZCgpPy5pbWFnZVVybFwiIGFsdD1cIlwiPlxuICA8L3NwYW4+XG4gICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbWF0LXJhZGlvLWdyb3VwPlxuICB9XG4gIDxkaXYgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJmYWxzZVwiPlxuICAgIHt7ZmllbGQoKT8udmFsaWRhdG9ycz8ucGF0dGVybk1lc3NhZ2V9fS5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -323,9 +323,16 @@ function initializeFieldNameAttribute(field) {
323
323
  return field;
324
324
  }
325
325
  const label = typeof field.label === 'string' ? field.label.trim() : '';
326
- field.fieldNameAttribute = label
327
- ? label.replace(/\s+/g, '_')
326
+ const sanitizedLabel = label.replace(/[{}()]/g, '').trim();
327
+ field.fieldNameAttribute = sanitizedLabel
328
+ ? sanitizedLabel.replace(/\s+/g, '_')
328
329
  : field.fieldName;
330
+ if (Array.isArray(field.options)) {
331
+ field.options.forEach((option) => {
332
+ const optionLabel = typeof option.label === 'string' ? option.label.trim() : '';
333
+ option.optionFieldNameAttribute = optionLabel.replace(/\s+/g, '_');
334
+ });
335
+ }
329
336
  return field;
330
337
  }
331
338
 
@@ -796,7 +803,7 @@ class RadioComponent {
796
803
  useExisting: RadioComponent,
797
804
  multi: true
798
805
  }
799
- ], ngImport: i0, template: "<div [class]=\"field()?.configData?.isInlineLabel ? 'radio-inline-wrapper' : ''\">\n <label class=\"field-lable\" *ngIf=\"field() && field()?.isVisible && field().isShowLabel\" [class.radio-inline-label]=\"field()?.configData?.isInlineLabel\" [ngStyle]=\"{\n }\">{{field()?.label}}<span class=\"error-message\" *ngIf=\"field()?.validators?.isRequired\">*</span>\n <span [appTooltipTemplate]=\"HtmlContent\" arrowPosition=\"left\" tooltipPosition=\"bottom\">\n <img [src]=\"field().configData?.labelIconUrl\" class=\"toggle-img mx-1\" />\n </span>\n <ng-template #HtmlContent>\n <span [innerHTML]=\"field().configData?.tooltipMessage\"></span>\n </ng-template>\n </label>\n @if(reactiveFormControlobject()) {\n <mat-radio-group [class]=\"'radio-btn-group radio-btn-gender ' + field()?.fieldName + (field()?.configData?.isInlineLabel ? ' radio-inline-group' : ' w-100')\" *ngIf=\"field() && field()?.isVisible\"\n [required]=\"field()?.validators?.isRequired\"\n [value]=\"inputValue\"\n [formControl]=\"reactiveFormControlobject()\"\n (change)=\"onRadioGroupChange($event)\"\n [id]=\"field()?.fieldName\"\n [attr.name]=\"field()?.fieldNameAttribute\"\n >\n <div\n class=\"card radio-card-gender py-auto px-1\"\n *ngFor=\"let data of field()?.options\"\n [ngClass]=\"{'disable-radio-btn': field()?.isDisable || reactiveFormControlobject?.disabled || data.disabled === true || data.disabled === 'true', 'two-options': field()?.options?.length === 2}\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n [ngStyle]=\"{\n '--radio-button-border-color': inputValue === data.value ? field()?.controlStyle?.focusBorderColor : field()?.controlStyle?.borderColor,\n '--radio-button-background-color': inputValue === data.value ? field()?.controlStyle?.focusBackground : field()?.controlStyle?.background,\n '--radio-button-border-width': inputValue === data.value ? field()?.controlStyle?.focusBorderWidth : field()?.controlStyle?.borderWidth,\n '--radio-button-border-radius': inputValue === data.value ? field()?.controlStyle?.borderRadius : field()?.controlStyle?.borderRadius,\n }\"\n >\n <mat-radio-button\n style=\"min-width: 72px; text-align: center;\"\n class=\"radioButtonGender\"\n [value]=\"data.value\"\n [disabled]=\"data.disabled === true || data.disabled === 'true'\"\n [id]=\"field()?.fieldName + '_' + data.value\"\n [name]=\"field()?.fieldNameAttribute + '_' + data.value\"\n >\n <span style=\"white-space: pre-line;\" class=\"forRadioLabel\" [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color,\n }\">{{ data.label }}\n <img class=\"radio-btn-icon\" *ngIf=\"field()?.imageUrl\" [src]=\"field()?.imageUrl\" alt=\"\">\n </span>\n </mat-radio-button>\n </div>\n </mat-radio-group>\n }@else {\n <mat-radio-group [class]=\"'radio-btn-group radio-btn-gender ' + field()?.fieldName + (field()?.configData?.isInlineLabel ? ' radio-inline-group' : ' w-100')\" *ngIf=\"field() && field()?.isVisible\"\n [required]=\"field()?.validators?.isRequired\"\n [value]=\"inputValue\"\n (change)=\"onRadioGroupChange($event)\"\n [id]=\"field()?.fieldName\"\n [attr.name]=\"field()?.fieldNameAttribute\"\n >\n <div\n class=\"card radio-card-gender py-auto px-1\"\n *ngFor=\"let data of field()?.options\"\n [ngClass]=\"{'disable-radio-btn': field()?.isDisable || data.disabled === true || data.disabled === 'true', 'two-options': field()?.options?.length === 2}\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n [ngStyle]=\"{\n '--radio-button-border-color': inputValue === data.value ? field()?.controlStyle?.focusBorderColor : field()?.controlStyle?.borderColor,\n '--radio-button-background-color': inputValue === data.value ? field()?.controlStyle?.focusBackground : field()?.controlStyle?.background,\n '--radio-button-border-width': inputValue === data.value ? field()?.controlStyle?.focusBorderWidth : field()?.controlStyle?.borderWidth,\n '--radio-button-border-radius': inputValue === data.value ? field()?.controlStyle?.borderRadius : field()?.controlStyle?.borderRadius,\n }\"\n >\n <mat-radio-button\n style=\"min-width: 72px; text-align: center;\"\n class=\"radioButtonGender\"\n [value]=\"data.value\"\n [disabled]=\"data.disabled === true || data.disabled === 'true'\"\n [id]=\"field()?.fieldName + '_' + data.value\"\n [name]=\"field()?.fieldNameAttribute + '_' + data.value\"\n >\n <span style=\"white-space: pre-line;\" class=\"forRadioLabel\" [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color,\n }\">{{ data.label }}\n <img class=\"radio-btn-icon\" *ngIf=\"field()?.imageUrl\" [src]=\"field()?.imageUrl\" alt=\"\">\n </span>\n </mat-radio-button>\n </div>\n </mat-radio-group>\n }\n <div class=\"error-message\" *ngIf=\"false\">\n {{field()?.validators?.patternMessage}}.\n </div>\n</div>\n", styles: [".radio-selection-border{border:1px solid #ffbb00!important;background:#fffaeb!important}*{font-family:mulish!important}.field-lable{font-size:12px!important;font-weight:700!important;color:#444!important;margin-bottom:0!important;white-space:pre-wrap!important}.error-message{color:red}.toggle-img{width:12px;margin-left:8px!important}@media screen and (max-width: 768px){.toggle-img{width:16px}}.radio-btn-group{display:flex;align-items:center;gap:1rem;align-self:stretch}::ng-deep .radio-btn-gender .mdc-form-field .mdc-radio{display:none!important}.radio-card-gender{box-shadow:none;border-color:var(--radio-button-border-color,#DADADA);border-width:var(--radio-button-border-width, 1px solid);background:var(--radio-button-background-color, #FFFFFF);display:flex;align-items:center;cursor:pointer;width:max-content!important;height:100%;border-radius:var(--radio-button-border-radius, 6px)}.radio-card-gender.two-options{min-width:144px!important}@media (max-width: 400px){.radio-btn-group .radio-card-gender.two-options{min-width:0!important;width:50%!important;max-width:50%!important}}::ng-deep .radioButtonGender .mdc-form-field .mdc-radio{display:none!important}.forRadioLabel{font-size:var(--radio-button-font-size, 12px)!important;font-weight:var(--radio-button-font-weight, 400);cursor:pointer;color:var(--radio-button-font-color, #444444)}.radio-btn-icon{margin-top:-2px;margin-left:4px}.selected-radio-btn{border:1px solid #ffbb00!important}.disable-radio-btn{background:#f5f5f5;pointer-events:none;cursor:none}@media (min-width: 769px){.radio-inline-wrapper{display:flex;align-items:center;justify-content:space-between;width:100%;gap:1rem}.radio-inline-label{flex:1;margin-bottom:0!important;white-space:normal!important}.radio-inline-group{flex-shrink:0}}\n"], dependencies: [{ kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i2$2.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i2$2.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: CustomizedTooltipDirective, selector: "[appTooltipTemplate]", inputs: ["appTooltipTemplate"] }] });
806
+ ], ngImport: i0, template: "<div [class]=\"field()?.configData?.isInlineLabel ? 'radio-inline-wrapper' : ''\">\n <label class=\"field-lable\" *ngIf=\"field() && field()?.isVisible && field().isShowLabel\" [class.radio-inline-label]=\"field()?.configData?.isInlineLabel\" [ngStyle]=\"{\n }\">{{field()?.label}}<span class=\"error-message\" *ngIf=\"field()?.validators?.isRequired\">*</span>\n <span [appTooltipTemplate]=\"HtmlContent\" arrowPosition=\"left\" tooltipPosition=\"bottom\">\n <img [src]=\"field().configData?.labelIconUrl\" class=\"toggle-img mx-1\" />\n </span>\n <ng-template #HtmlContent>\n <span [innerHTML]=\"field().configData?.tooltipMessage\"></span>\n </ng-template>\n </label>\n @if(reactiveFormControlobject()) {\n <mat-radio-group [class]=\"'radio-btn-group radio-btn-gender ' + field()?.fieldName + (field()?.configData?.isInlineLabel ? ' radio-inline-group' : ' w-100')\" *ngIf=\"field() && field()?.isVisible\"\n [required]=\"field()?.validators?.isRequired\"\n [value]=\"inputValue\"\n [formControl]=\"reactiveFormControlobject()\"\n (change)=\"onRadioGroupChange($event)\"\n [id]=\"field()?.fieldName\"\n [attr.name]=\"field()?.fieldNameAttribute\"\n >\n <div\n class=\"card radio-card-gender py-auto px-1\"\n *ngFor=\"let data of field()?.options\"\n [ngClass]=\"{'disable-radio-btn': field()?.isDisable || reactiveFormControlobject?.disabled || data.disabled === true || data.disabled === 'true', 'two-options': field()?.options?.length === 2}\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n [ngStyle]=\"{\n '--radio-button-border-color': inputValue === data.value ? field()?.controlStyle?.focusBorderColor : field()?.controlStyle?.borderColor,\n '--radio-button-background-color': inputValue === data.value ? field()?.controlStyle?.focusBackground : field()?.controlStyle?.background,\n '--radio-button-border-width': inputValue === data.value ? field()?.controlStyle?.focusBorderWidth : field()?.controlStyle?.borderWidth,\n '--radio-button-border-radius': inputValue === data.value ? field()?.controlStyle?.borderRadius : field()?.controlStyle?.borderRadius,\n }\"\n >\n <mat-radio-button\n style=\"min-width: 72px; text-align: center;\"\n class=\"radioButtonGender\"\n [value]=\"data.value\"\n [disabled]=\"data.disabled === true || data.disabled === 'true'\"\n [id]=\"field()?.fieldName + '_' + data.value\"\n [name]=\"field()?.fieldNameAttribute + '_' + data.optionFieldNameAttribute\"\n >\n <span style=\"white-space: pre-line;\" class=\"forRadioLabel\" [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color,\n }\">{{ data.label }}\n <img class=\"radio-btn-icon\" *ngIf=\"field()?.imageUrl\" [src]=\"field()?.imageUrl\" alt=\"\">\n </span>\n </mat-radio-button>\n </div>\n </mat-radio-group>\n }@else {\n <mat-radio-group [class]=\"'radio-btn-group radio-btn-gender ' + field()?.fieldName + (field()?.configData?.isInlineLabel ? ' radio-inline-group' : ' w-100')\" *ngIf=\"field() && field()?.isVisible\"\n [required]=\"field()?.validators?.isRequired\"\n [value]=\"inputValue\"\n (change)=\"onRadioGroupChange($event)\"\n [id]=\"field()?.fieldName\"\n [attr.name]=\"field()?.fieldNameAttribute\"\n >\n <div\n class=\"card radio-card-gender py-auto px-1\"\n *ngFor=\"let data of field()?.options\"\n [ngClass]=\"{'disable-radio-btn': field()?.isDisable || data.disabled === true || data.disabled === 'true', 'two-options': field()?.options?.length === 2}\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n [ngStyle]=\"{\n '--radio-button-border-color': inputValue === data.value ? field()?.controlStyle?.focusBorderColor : field()?.controlStyle?.borderColor,\n '--radio-button-background-color': inputValue === data.value ? field()?.controlStyle?.focusBackground : field()?.controlStyle?.background,\n '--radio-button-border-width': inputValue === data.value ? field()?.controlStyle?.focusBorderWidth : field()?.controlStyle?.borderWidth,\n '--radio-button-border-radius': inputValue === data.value ? field()?.controlStyle?.borderRadius : field()?.controlStyle?.borderRadius,\n }\"\n >\n <mat-radio-button\n style=\"min-width: 72px; text-align: center;\"\n class=\"radioButtonGender\"\n [value]=\"data.value\"\n [disabled]=\"data.disabled === true || data.disabled === 'true'\"\n [id]=\"field()?.fieldName + '_' + data.value\"\n [name]=\"field()?.fieldNameAttribute + '_' + data.optionFieldNameAttribute\"\n >\n <span style=\"white-space: pre-line;\" class=\"forRadioLabel\" [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color,\n }\">{{ data.label }}\n <img class=\"radio-btn-icon\" *ngIf=\"field()?.imageUrl\" [src]=\"field()?.imageUrl\" alt=\"\">\n </span>\n </mat-radio-button>\n </div>\n </mat-radio-group>\n }\n <div class=\"error-message\" *ngIf=\"false\">\n {{field()?.validators?.patternMessage}}.\n </div>\n</div>\n", styles: [".radio-selection-border{border:1px solid #ffbb00!important;background:#fffaeb!important}*{font-family:mulish!important}.field-lable{font-size:12px!important;font-weight:700!important;color:#444!important;margin-bottom:0!important;white-space:pre-wrap!important}.error-message{color:red}.toggle-img{width:12px;margin-left:8px!important}@media screen and (max-width: 768px){.toggle-img{width:16px}}.radio-btn-group{display:flex;align-items:center;gap:1rem;align-self:stretch}::ng-deep .radio-btn-gender .mdc-form-field .mdc-radio{display:none!important}.radio-card-gender{box-shadow:none;border-color:var(--radio-button-border-color,#DADADA);border-width:var(--radio-button-border-width, 1px solid);background:var(--radio-button-background-color, #FFFFFF);display:flex;align-items:center;cursor:pointer;width:max-content!important;height:100%;border-radius:var(--radio-button-border-radius, 6px)}.radio-card-gender.two-options{min-width:144px!important}@media (max-width: 400px){.radio-btn-group .radio-card-gender.two-options{min-width:0!important;width:50%!important;max-width:50%!important}}::ng-deep .radioButtonGender .mdc-form-field .mdc-radio{display:none!important}.forRadioLabel{font-size:var(--radio-button-font-size, 12px)!important;font-weight:var(--radio-button-font-weight, 400);cursor:pointer;color:var(--radio-button-font-color, #444444)}.radio-btn-icon{margin-top:-2px;margin-left:4px}.selected-radio-btn{border:1px solid #ffbb00!important}.disable-radio-btn{background:#f5f5f5;pointer-events:none;cursor:none}@media (min-width: 769px){.radio-inline-wrapper{display:flex;align-items:center;justify-content:space-between;width:100%;gap:1rem}.radio-inline-label{flex:1;margin-bottom:0!important;white-space:normal!important}.radio-inline-group{flex-shrink:0}}\n"], dependencies: [{ kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i2$2.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i2$2.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: CustomizedTooltipDirective, selector: "[appTooltipTemplate]", inputs: ["appTooltipTemplate"] }] });
800
807
  }
801
808
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RadioComponent, decorators: [{
802
809
  type: Component,
@@ -812,7 +819,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
812
819
  useExisting: RadioComponent,
813
820
  multi: true
814
821
  }
815
- ], template: "<div [class]=\"field()?.configData?.isInlineLabel ? 'radio-inline-wrapper' : ''\">\n <label class=\"field-lable\" *ngIf=\"field() && field()?.isVisible && field().isShowLabel\" [class.radio-inline-label]=\"field()?.configData?.isInlineLabel\" [ngStyle]=\"{\n }\">{{field()?.label}}<span class=\"error-message\" *ngIf=\"field()?.validators?.isRequired\">*</span>\n <span [appTooltipTemplate]=\"HtmlContent\" arrowPosition=\"left\" tooltipPosition=\"bottom\">\n <img [src]=\"field().configData?.labelIconUrl\" class=\"toggle-img mx-1\" />\n </span>\n <ng-template #HtmlContent>\n <span [innerHTML]=\"field().configData?.tooltipMessage\"></span>\n </ng-template>\n </label>\n @if(reactiveFormControlobject()) {\n <mat-radio-group [class]=\"'radio-btn-group radio-btn-gender ' + field()?.fieldName + (field()?.configData?.isInlineLabel ? ' radio-inline-group' : ' w-100')\" *ngIf=\"field() && field()?.isVisible\"\n [required]=\"field()?.validators?.isRequired\"\n [value]=\"inputValue\"\n [formControl]=\"reactiveFormControlobject()\"\n (change)=\"onRadioGroupChange($event)\"\n [id]=\"field()?.fieldName\"\n [attr.name]=\"field()?.fieldNameAttribute\"\n >\n <div\n class=\"card radio-card-gender py-auto px-1\"\n *ngFor=\"let data of field()?.options\"\n [ngClass]=\"{'disable-radio-btn': field()?.isDisable || reactiveFormControlobject?.disabled || data.disabled === true || data.disabled === 'true', 'two-options': field()?.options?.length === 2}\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n [ngStyle]=\"{\n '--radio-button-border-color': inputValue === data.value ? field()?.controlStyle?.focusBorderColor : field()?.controlStyle?.borderColor,\n '--radio-button-background-color': inputValue === data.value ? field()?.controlStyle?.focusBackground : field()?.controlStyle?.background,\n '--radio-button-border-width': inputValue === data.value ? field()?.controlStyle?.focusBorderWidth : field()?.controlStyle?.borderWidth,\n '--radio-button-border-radius': inputValue === data.value ? field()?.controlStyle?.borderRadius : field()?.controlStyle?.borderRadius,\n }\"\n >\n <mat-radio-button\n style=\"min-width: 72px; text-align: center;\"\n class=\"radioButtonGender\"\n [value]=\"data.value\"\n [disabled]=\"data.disabled === true || data.disabled === 'true'\"\n [id]=\"field()?.fieldName + '_' + data.value\"\n [name]=\"field()?.fieldNameAttribute + '_' + data.value\"\n >\n <span style=\"white-space: pre-line;\" class=\"forRadioLabel\" [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color,\n }\">{{ data.label }}\n <img class=\"radio-btn-icon\" *ngIf=\"field()?.imageUrl\" [src]=\"field()?.imageUrl\" alt=\"\">\n </span>\n </mat-radio-button>\n </div>\n </mat-radio-group>\n }@else {\n <mat-radio-group [class]=\"'radio-btn-group radio-btn-gender ' + field()?.fieldName + (field()?.configData?.isInlineLabel ? ' radio-inline-group' : ' w-100')\" *ngIf=\"field() && field()?.isVisible\"\n [required]=\"field()?.validators?.isRequired\"\n [value]=\"inputValue\"\n (change)=\"onRadioGroupChange($event)\"\n [id]=\"field()?.fieldName\"\n [attr.name]=\"field()?.fieldNameAttribute\"\n >\n <div\n class=\"card radio-card-gender py-auto px-1\"\n *ngFor=\"let data of field()?.options\"\n [ngClass]=\"{'disable-radio-btn': field()?.isDisable || data.disabled === true || data.disabled === 'true', 'two-options': field()?.options?.length === 2}\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n [ngStyle]=\"{\n '--radio-button-border-color': inputValue === data.value ? field()?.controlStyle?.focusBorderColor : field()?.controlStyle?.borderColor,\n '--radio-button-background-color': inputValue === data.value ? field()?.controlStyle?.focusBackground : field()?.controlStyle?.background,\n '--radio-button-border-width': inputValue === data.value ? field()?.controlStyle?.focusBorderWidth : field()?.controlStyle?.borderWidth,\n '--radio-button-border-radius': inputValue === data.value ? field()?.controlStyle?.borderRadius : field()?.controlStyle?.borderRadius,\n }\"\n >\n <mat-radio-button\n style=\"min-width: 72px; text-align: center;\"\n class=\"radioButtonGender\"\n [value]=\"data.value\"\n [disabled]=\"data.disabled === true || data.disabled === 'true'\"\n [id]=\"field()?.fieldName + '_' + data.value\"\n [name]=\"field()?.fieldNameAttribute + '_' + data.value\"\n >\n <span style=\"white-space: pre-line;\" class=\"forRadioLabel\" [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color,\n }\">{{ data.label }}\n <img class=\"radio-btn-icon\" *ngIf=\"field()?.imageUrl\" [src]=\"field()?.imageUrl\" alt=\"\">\n </span>\n </mat-radio-button>\n </div>\n </mat-radio-group>\n }\n <div class=\"error-message\" *ngIf=\"false\">\n {{field()?.validators?.patternMessage}}.\n </div>\n</div>\n", styles: [".radio-selection-border{border:1px solid #ffbb00!important;background:#fffaeb!important}*{font-family:mulish!important}.field-lable{font-size:12px!important;font-weight:700!important;color:#444!important;margin-bottom:0!important;white-space:pre-wrap!important}.error-message{color:red}.toggle-img{width:12px;margin-left:8px!important}@media screen and (max-width: 768px){.toggle-img{width:16px}}.radio-btn-group{display:flex;align-items:center;gap:1rem;align-self:stretch}::ng-deep .radio-btn-gender .mdc-form-field .mdc-radio{display:none!important}.radio-card-gender{box-shadow:none;border-color:var(--radio-button-border-color,#DADADA);border-width:var(--radio-button-border-width, 1px solid);background:var(--radio-button-background-color, #FFFFFF);display:flex;align-items:center;cursor:pointer;width:max-content!important;height:100%;border-radius:var(--radio-button-border-radius, 6px)}.radio-card-gender.two-options{min-width:144px!important}@media (max-width: 400px){.radio-btn-group .radio-card-gender.two-options{min-width:0!important;width:50%!important;max-width:50%!important}}::ng-deep .radioButtonGender .mdc-form-field .mdc-radio{display:none!important}.forRadioLabel{font-size:var(--radio-button-font-size, 12px)!important;font-weight:var(--radio-button-font-weight, 400);cursor:pointer;color:var(--radio-button-font-color, #444444)}.radio-btn-icon{margin-top:-2px;margin-left:4px}.selected-radio-btn{border:1px solid #ffbb00!important}.disable-radio-btn{background:#f5f5f5;pointer-events:none;cursor:none}@media (min-width: 769px){.radio-inline-wrapper{display:flex;align-items:center;justify-content:space-between;width:100%;gap:1rem}.radio-inline-label{flex:1;margin-bottom:0!important;white-space:normal!important}.radio-inline-group{flex-shrink:0}}\n"] }]
822
+ ], template: "<div [class]=\"field()?.configData?.isInlineLabel ? 'radio-inline-wrapper' : ''\">\n <label class=\"field-lable\" *ngIf=\"field() && field()?.isVisible && field().isShowLabel\" [class.radio-inline-label]=\"field()?.configData?.isInlineLabel\" [ngStyle]=\"{\n }\">{{field()?.label}}<span class=\"error-message\" *ngIf=\"field()?.validators?.isRequired\">*</span>\n <span [appTooltipTemplate]=\"HtmlContent\" arrowPosition=\"left\" tooltipPosition=\"bottom\">\n <img [src]=\"field().configData?.labelIconUrl\" class=\"toggle-img mx-1\" />\n </span>\n <ng-template #HtmlContent>\n <span [innerHTML]=\"field().configData?.tooltipMessage\"></span>\n </ng-template>\n </label>\n @if(reactiveFormControlobject()) {\n <mat-radio-group [class]=\"'radio-btn-group radio-btn-gender ' + field()?.fieldName + (field()?.configData?.isInlineLabel ? ' radio-inline-group' : ' w-100')\" *ngIf=\"field() && field()?.isVisible\"\n [required]=\"field()?.validators?.isRequired\"\n [value]=\"inputValue\"\n [formControl]=\"reactiveFormControlobject()\"\n (change)=\"onRadioGroupChange($event)\"\n [id]=\"field()?.fieldName\"\n [attr.name]=\"field()?.fieldNameAttribute\"\n >\n <div\n class=\"card radio-card-gender py-auto px-1\"\n *ngFor=\"let data of field()?.options\"\n [ngClass]=\"{'disable-radio-btn': field()?.isDisable || reactiveFormControlobject?.disabled || data.disabled === true || data.disabled === 'true', 'two-options': field()?.options?.length === 2}\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n [ngStyle]=\"{\n '--radio-button-border-color': inputValue === data.value ? field()?.controlStyle?.focusBorderColor : field()?.controlStyle?.borderColor,\n '--radio-button-background-color': inputValue === data.value ? field()?.controlStyle?.focusBackground : field()?.controlStyle?.background,\n '--radio-button-border-width': inputValue === data.value ? field()?.controlStyle?.focusBorderWidth : field()?.controlStyle?.borderWidth,\n '--radio-button-border-radius': inputValue === data.value ? field()?.controlStyle?.borderRadius : field()?.controlStyle?.borderRadius,\n }\"\n >\n <mat-radio-button\n style=\"min-width: 72px; text-align: center;\"\n class=\"radioButtonGender\"\n [value]=\"data.value\"\n [disabled]=\"data.disabled === true || data.disabled === 'true'\"\n [id]=\"field()?.fieldName + '_' + data.value\"\n [name]=\"field()?.fieldNameAttribute + '_' + data.optionFieldNameAttribute\"\n >\n <span style=\"white-space: pre-line;\" class=\"forRadioLabel\" [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color,\n }\">{{ data.label }}\n <img class=\"radio-btn-icon\" *ngIf=\"field()?.imageUrl\" [src]=\"field()?.imageUrl\" alt=\"\">\n </span>\n </mat-radio-button>\n </div>\n </mat-radio-group>\n }@else {\n <mat-radio-group [class]=\"'radio-btn-group radio-btn-gender ' + field()?.fieldName + (field()?.configData?.isInlineLabel ? ' radio-inline-group' : ' w-100')\" *ngIf=\"field() && field()?.isVisible\"\n [required]=\"field()?.validators?.isRequired\"\n [value]=\"inputValue\"\n (change)=\"onRadioGroupChange($event)\"\n [id]=\"field()?.fieldName\"\n [attr.name]=\"field()?.fieldNameAttribute\"\n >\n <div\n class=\"card radio-card-gender py-auto px-1\"\n *ngFor=\"let data of field()?.options\"\n [ngClass]=\"{'disable-radio-btn': field()?.isDisable || data.disabled === true || data.disabled === 'true', 'two-options': field()?.options?.length === 2}\"\n (click)=\"(data.disabled === true || data.disabled === 'true') ? null : toggleRadio(data.value, $event)\"\n [ngStyle]=\"{\n '--radio-button-border-color': inputValue === data.value ? field()?.controlStyle?.focusBorderColor : field()?.controlStyle?.borderColor,\n '--radio-button-background-color': inputValue === data.value ? field()?.controlStyle?.focusBackground : field()?.controlStyle?.background,\n '--radio-button-border-width': inputValue === data.value ? field()?.controlStyle?.focusBorderWidth : field()?.controlStyle?.borderWidth,\n '--radio-button-border-radius': inputValue === data.value ? field()?.controlStyle?.borderRadius : field()?.controlStyle?.borderRadius,\n }\"\n >\n <mat-radio-button\n style=\"min-width: 72px; text-align: center;\"\n class=\"radioButtonGender\"\n [value]=\"data.value\"\n [disabled]=\"data.disabled === true || data.disabled === 'true'\"\n [id]=\"field()?.fieldName + '_' + data.value\"\n [name]=\"field()?.fieldNameAttribute + '_' + data.optionFieldNameAttribute\"\n >\n <span style=\"white-space: pre-line;\" class=\"forRadioLabel\" [ngStyle]=\"{\n '--radio-button-font-weight': field()?.controlStyle?.fontWeight,\n '--radio-button-font-size': field()?.controlStyle?.fontSize,\n '--radio-button-font-color': field()?.controlStyle?.color,\n }\">{{ data.label }}\n <img class=\"radio-btn-icon\" *ngIf=\"field()?.imageUrl\" [src]=\"field()?.imageUrl\" alt=\"\">\n </span>\n </mat-radio-button>\n </div>\n </mat-radio-group>\n }\n <div class=\"error-message\" *ngIf=\"false\">\n {{field()?.validators?.patternMessage}}.\n </div>\n</div>\n", styles: [".radio-selection-border{border:1px solid #ffbb00!important;background:#fffaeb!important}*{font-family:mulish!important}.field-lable{font-size:12px!important;font-weight:700!important;color:#444!important;margin-bottom:0!important;white-space:pre-wrap!important}.error-message{color:red}.toggle-img{width:12px;margin-left:8px!important}@media screen and (max-width: 768px){.toggle-img{width:16px}}.radio-btn-group{display:flex;align-items:center;gap:1rem;align-self:stretch}::ng-deep .radio-btn-gender .mdc-form-field .mdc-radio{display:none!important}.radio-card-gender{box-shadow:none;border-color:var(--radio-button-border-color,#DADADA);border-width:var(--radio-button-border-width, 1px solid);background:var(--radio-button-background-color, #FFFFFF);display:flex;align-items:center;cursor:pointer;width:max-content!important;height:100%;border-radius:var(--radio-button-border-radius, 6px)}.radio-card-gender.two-options{min-width:144px!important}@media (max-width: 400px){.radio-btn-group .radio-card-gender.two-options{min-width:0!important;width:50%!important;max-width:50%!important}}::ng-deep .radioButtonGender .mdc-form-field .mdc-radio{display:none!important}.forRadioLabel{font-size:var(--radio-button-font-size, 12px)!important;font-weight:var(--radio-button-font-weight, 400);cursor:pointer;color:var(--radio-button-font-color, #444444)}.radio-btn-icon{margin-top:-2px;margin-left:4px}.selected-radio-btn{border:1px solid #ffbb00!important}.disable-radio-btn{background:#f5f5f5;pointer-events:none;cursor:none}@media (min-width: 769px){.radio-inline-wrapper{display:flex;align-items:center;justify-content:space-between;width:100%;gap:1rem}.radio-inline-label{flex:1;margin-bottom:0!important;white-space:normal!important}.radio-inline-group{flex-shrink:0}}\n"] }]
816
823
  }], ctorParameters: () => [{ type: MasterControlService }], propDecorators: { change: [{
817
824
  type: Output
818
825
  }] } });