@messaia/cdk-cms 18.1.0-rc11 → 18.1.0-rc14

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.
@@ -270,11 +270,11 @@ export class ContentFormComponent extends GenericReactiveFormComponent {
270
270
  }
271
271
  }
272
272
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ContentFormComponent, deps: [{ token: i1.ContentService }, { token: i2.FileService }, { token: i3.HttpClient }, { token: i4.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
273
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: ContentFormComponent, selector: "app-content-form", viewQueries: [{ propertyName: "formElement", first: true, predicate: ["form"], descendants: true }, { propertyName: "editorComponent", first: true, predicate: ["editor"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n\t\t\t\t\t\t\t<ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n\t\t\t\t\t\t\t\t<mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\" flex>\r\n\t\t\t\t\t\t\t\t\t<mat-label>{{field.label}}</mat-label>\r\n\t\t\t\t\t\t\t\t\t<editor [formControlName]=\"field.name\" [init]=\"editorConfig\" tinyMatFormControl flex></editor>\r\n\t\t\t\t\t\t\t\t\t<mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n\t\t\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of formGroup.controls[field.name]['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button *ngIf=\"isEditMode || true\" (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [item]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { kind: "directive", type: i2.RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: ["formGroup", "rxwebForm"] }, { kind: "directive", type: i2.RxFormControlDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["rxalpha", "rxalphaNumeric", "rxascii", "rxcompare", "rxcompose", "rxcontains", "rxcreditCard", "rxdataUri", "rxdifferent", "rxdigit", "rxemail", "rxendsWith", "rxeven", "rxextension", "rxfactor", "rxfileSize", "rxgreaterThanEqualTo", "rxgreaterThan", "rxhexColor", "rxjson", "rxlatitude", "rxlatLong", "rxleapYear", "rxlessThan", "rxlessThanEqualTo", "rxlongitude", "rxlowerCase", "rxmac", "rxmaxDate", "rxmaxLength", "rxmaxNumber", "rxminDate", "rxminLength", "rxminNumber", "rxnumeric", "rxodd", "rxpassword", "rxport", "rxprimeNumber", "rxrequired", "rxrange", "rxrule", "rxstartsWith", "rxtime", "rxupperCase", "rxurl", "rxunique", "rxnotEmpty", "rxcusip", "rxgrid", "rxdate"] }, { kind: "directive", type: i7.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i7.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i7.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i7.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i9.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i10.EditorComponent, selector: "editor", inputs: ["cloudChannel", "apiKey", "licenseKey", "init", "id", "initialValue", "outputFormat", "inline", "tagName", "plugins", "toolbar", "modelEvents", "allowedEvents", "ignoreEvents", "disabled"] }, { kind: "component", type: i2.VdLayoutNavComponent, selector: "vd-layout-nav", inputs: ["toolbarTitle", "editMode", "actions", "data", "context", "icon", "logo", "color", "hideToggle", "backNavigationRoute", "navigationRoute"], outputs: ["reload"] }, { kind: "component", type: i2.VdLayoutCardOverComponent, selector: "vd-layout-card-over", inputs: ["cardTitle", "cardSubtitle", "cardWidth", "color"] }, { kind: "directive", type: i2.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: i2.MatFormFieldEditorDirective, selector: "[tinyMatFormControl]", inputs: ["disabled", "id", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["editorChange"] }, { kind: "directive", type: i2.VdEditorDirective, selector: "[vd-editor]ng-template" }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "component", type: i2.VdGenericFormComponent, selector: "vd-generic-form", inputs: ["formGroup", "classType", "formDefinition", "fieldGroups", "groupName", "fieldSets", "context", "debugValue", "readonly", "separatorKeysCodes"] }, { kind: "component", type: i11.VdAuditComponent, selector: "vd-audit", inputs: ["item"] }] });
273
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: ContentFormComponent, selector: "app-content-form", viewQueries: [{ propertyName: "formElement", first: true, predicate: ["form"], descendants: true }, { propertyName: "editorComponent", first: true, predicate: ["editor"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n\t\t\t\t\t\t\t<ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n\t\t\t\t\t\t\t\t<mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\" flex>\r\n\t\t\t\t\t\t\t\t\t<mat-label>{{field.label}}</mat-label>\r\n\t\t\t\t\t\t\t\t\t<editor [formControlName]=\"field.name\" [init]=\"editorConfig\" tinyMatFormControl flex></editor>\r\n\t\t\t\t\t\t\t\t\t<mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n\t\t\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of formGroup.controls[field.name]['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button *ngIf=\"isEditMode || true\" (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [entity]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { kind: "directive", type: i2.RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: ["formGroup", "rxwebForm"] }, { kind: "directive", type: i2.RxFormControlDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["rxalpha", "rxalphaNumeric", "rxascii", "rxcompare", "rxcompose", "rxcontains", "rxcreditCard", "rxdataUri", "rxdifferent", "rxdigit", "rxemail", "rxendsWith", "rxeven", "rxextension", "rxfactor", "rxfileSize", "rxgreaterThanEqualTo", "rxgreaterThan", "rxhexColor", "rxjson", "rxlatitude", "rxlatLong", "rxleapYear", "rxlessThan", "rxlessThanEqualTo", "rxlongitude", "rxlowerCase", "rxmac", "rxmaxDate", "rxmaxLength", "rxmaxNumber", "rxminDate", "rxminLength", "rxminNumber", "rxnumeric", "rxodd", "rxpassword", "rxport", "rxprimeNumber", "rxrequired", "rxrange", "rxrule", "rxstartsWith", "rxtime", "rxupperCase", "rxurl", "rxunique", "rxnotEmpty", "rxcusip", "rxgrid", "rxdate"] }, { kind: "directive", type: i7.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i7.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i7.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i7.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i9.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i10.EditorComponent, selector: "editor", inputs: ["cloudChannel", "apiKey", "licenseKey", "init", "id", "initialValue", "outputFormat", "inline", "tagName", "plugins", "toolbar", "modelEvents", "allowedEvents", "ignoreEvents", "disabled"] }, { kind: "component", type: i2.VdLayoutNavComponent, selector: "vd-layout-nav", inputs: ["toolbarTitle", "editMode", "actions", "data", "context", "icon", "logo", "color", "hideToggle", "backNavigationRoute", "navigationRoute"], outputs: ["reload"] }, { kind: "component", type: i2.VdLayoutCardOverComponent, selector: "vd-layout-card-over", inputs: ["cardTitle", "cardSubtitle", "cardWidth", "color"] }, { kind: "directive", type: i2.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: i2.MatFormFieldEditorDirective, selector: "[tinyMatFormControl]", inputs: ["disabled", "id", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["editorChange"] }, { kind: "directive", type: i2.VdEditorDirective, selector: "[vd-editor]ng-template" }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "component", type: i2.VdGenericFormComponent, selector: "vd-generic-form", inputs: ["formGroup", "classType", "formDefinition", "fieldGroups", "groupName", "fieldSets", "context", "debugValue", "readonly", "separatorKeysCodes"] }, { kind: "component", type: i11.VdAuditComponent, selector: "vd-audit", inputs: ["entity"] }] });
274
274
  }
275
275
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ContentFormComponent, decorators: [{
276
276
  type: Component,
277
- args: [{ selector: 'app-content-form', template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n\t\t\t\t\t\t\t<ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n\t\t\t\t\t\t\t\t<mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\" flex>\r\n\t\t\t\t\t\t\t\t\t<mat-label>{{field.label}}</mat-label>\r\n\t\t\t\t\t\t\t\t\t<editor [formControlName]=\"field.name\" [init]=\"editorConfig\" tinyMatFormControl flex></editor>\r\n\t\t\t\t\t\t\t\t\t<mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n\t\t\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of formGroup.controls[field.name]['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button *ngIf=\"isEditMode || true\" (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [item]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>" }]
277
+ args: [{ selector: 'app-content-form', template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n\t\t\t\t\t\t\t<ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n\t\t\t\t\t\t\t\t<mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\" flex>\r\n\t\t\t\t\t\t\t\t\t<mat-label>{{field.label}}</mat-label>\r\n\t\t\t\t\t\t\t\t\t<editor [formControlName]=\"field.name\" [init]=\"editorConfig\" tinyMatFormControl flex></editor>\r\n\t\t\t\t\t\t\t\t\t<mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n\t\t\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of formGroup.controls[field.name]['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button *ngIf=\"isEditMode || true\" (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [entity]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>" }]
278
278
  }], ctorParameters: () => [{ type: i1.ContentService }, { type: i2.FileService }, { type: i3.HttpClient }, { type: i4.ActivatedRoute }, { type: i0.ChangeDetectorRef }], propDecorators: { formElement: [{
279
279
  type: ViewChild,
280
280
  args: ['form', { static: false }]
@@ -282,4 +282,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
282
282
  type: ViewChild,
283
283
  args: ['editor', { static: false }]
284
284
  }] } });
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9jb250ZW50LWZvcm0vY29udGVudC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9jb250ZW50LWZvcm0vY29udGVudC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQWdCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BFLE9BQU8s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Q2IsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUM7NkJBQzVEOzRCQUNEO2dDQUNDLElBQUksRUFBRSxVQUFVO2dDQUNoQixJQUFJLEVBQUUsZ0JBQWdCO2dDQUN0QixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQzs2QkFDekQ7eUJBQ0QsQ0FBQyxDQUFDO29CQUNKLENBQUM7aUJBQ0QsQ0FBQyxDQUFDO1lBQ0osQ0FBQztTQUNELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1YsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEMsQ0FBQztJQUNGLENBQUM7dUdBaFJXLG9CQUFvQjsyRkFBcEIsb0JBQW9CLGdSQ25CakMsKzNGQWlEZ0I7OzJGRDlCSCxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Msa0JBQWtCO21NQTRDckIsV0FBVztzQkFEakIsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU83QixlQUFlO3NCQURyQixTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT01NQSwgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXZlbnRUeXBlLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRDaGlwSW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBFbnVtU2VydmljZSwgRmlsZVNlcnZpY2UsIEdlbmVyaWNSZWFjdGl2ZUZvcm1Db21wb25lbnQgfSBmcm9tICdAbWVzc2FpYS9jZGsnO1xyXG5pbXBvcnQgeyBFZGl0b3JDb21wb25lbnQgfSBmcm9tICdAdGlueW1jZS90aW55bWNlLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvY29udGVudC10eXBlJztcclxuaW1wb3J0IHsgV3JhcFRhZyB9IGZyb20gJy4uLy4uL2VudW1zL3dyYXAtdGFnJztcclxuaW1wb3J0IHsgQ21zU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvY21zLXNldHRpbmdzJztcclxuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gJy4uLy4uL21vZGVscy9jb250ZW50JztcclxuaW1wb3J0IHsgQ29udGVudENsaWVudCwgQ29udGVudERlcGFydG1lbnQgfSBmcm9tICcuLi8uLi9wdWJsaWMtYXBpJztcclxuaW1wb3J0IHsgQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb250ZW50LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtY29udGVudC1mb3JtJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vY29udGVudC1mb3JtLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udGVudEZvcm1Db21wb25lbnQgZXh0ZW5kcyBHZW5lcmljUmVhY3RpdmVGb3JtQ29tcG9uZW50PENvbnRlbnQsIENvbnRlbnRTZXJ2aWNlPiB7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJvdXRlciBTdWJzY3JpcHRpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgcm91dGVTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBzdGF0dXMgb2YgdGhlIGlzc3VlXHJcblx0ICovXHJcblx0cHVibGljIHR5cGU/OiBDb250ZW50VHlwZTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29udGVudCBzdGF0dXNcclxuXHQgKi9cclxuXHRwdWJsaWMgQ29udGVudFR5cGU6IHR5cGVvZiBDb250ZW50VHlwZSA9IENvbnRlbnRUeXBlO1xyXG5cclxuXHQvKipcclxuXHQgKiBXcmFwIHRhZyBlbnVtXHJcblx0ICovXHJcblx0cHVibGljIHdyYXBUYWdzOiBhbnlbXSA9IEVudW1TZXJ2aWNlLnRvQXJyYXkoV3JhcFRhZyk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNlcGFyYXRvciBrZXlzIGNvZGVzXHJcblx0ICovXHJcblx0cHVibGljIHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW10gPSBbRU5URVIsIENPTU1BXTtcclxuXHJcblx0LyoqXHJcblx0ICogc2V0dGluZ3M6IENtc1NldHRpbmdzXHJcblx0ICovXHJcblx0cHVibGljIHNldHRpbmdzOiBDbXNTZXR0aW5ncyA9IG5ldyBDbXNTZXR0aW5ncygpO1xyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIHRoZSBhbGlhc2VzIGNvbnRyb2xcclxuXHQgKi9cclxuXHRnZXQgYWxpYXNlc0NvbnRyb2woKSB7IHJldHVybiB0aGlzLmZvcm0uY29udHJvbHMuYWxpYXNlczsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZiB0byBmb3JtIGh0bWwgZWxlbWVudFxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoJ2Zvcm0nLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuXHRwdWJsaWMgZm9ybUVsZW1lbnQ/OiBIVE1MRm9ybUVsZW1lbnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmIHRvIHRpbnltY2UgZWRpdG9yXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZCgnZWRpdG9yJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGVkaXRvckNvbXBvbmVudD86IEVkaXRvckNvbXBvbmVudDtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByb3RlY3RlZCBzZXJ2aWNlOiBDb250ZW50U2VydmljZSxcclxuXHRcdHByb3RlY3RlZCBmaWxlU2VydmljZTogRmlsZVNlcnZpY2UsXHJcblx0XHRwcm90ZWN0ZWQgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcblx0KSB7XHJcblx0XHRzdXBlcihDb250ZW50LCBzZXJ2aWNlLCByb3V0ZSwgY2hhbmdlRGV0ZWN0b3JSZWYpXHJcblx0XHR0aGlzLnNldHRpbmdzID0gdGhpcy5nZXRTZXJ2aWNlKENtc1NldHRpbmdzKTtcclxuXHJcblx0XHRpZiAodGhpcy5zZXR0aW5ncz8ubXVsdGl0ZW5hbnRhYmxlIHx8IHRoaXMuc2V0dGluZ3M/Lm11bHRpQ2xpZW50cykge1xyXG5cdFx0XHR0aGlzLmluY2x1ZGUoJ0NsaWVudEpvaW5zJywgdHJ1ZSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuc2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSB8fCB0aGlzLnNldHRpbmdzPy5tdWx0aURlcGFydG1lbnRzKSB7XHJcblx0XHRcdHRoaXMuaW5jbHVkZSgnRGVwYXJ0bWVudEpvaW5zJywgdHJ1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBkYXRhLWJvdW5kIHByb3BlcnRpZXMgXHJcblx0ICogb2YgYSBkaXJlY3RpdmUgYXJlIGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0LyogRmlsdGVyIGJ5IHN0YXR1cywgaWYgYW55ICovXHJcblx0XHR0aGlzLnJvdXRlU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXM6IGFueSkgPT4ge1xyXG5cdFx0XHR0aGlzLnR5cGUgPSBFbnVtU2VydmljZS5wYXJzZShDb250ZW50VHlwZSwgcGFyYW1zLnR5cGUpO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0LyogR2V0IHNvbWUgcHJvcHMgZnJvbSByb3V0ZSBzbmFwc2hvdCAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdHRoaXMuZm9ybVZhbGlkYXRpb24gPSBkYXRhLmZvcm1WYWxpZGF0aW9uO1xyXG5cdFx0fSk7XHJcblx0XHRjb25zb2xlLmxvZygnbmdPbkluaXQnKTtcclxuXHRcdHN1cGVyLm5nT25Jbml0KCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyBjbGllbnQgam9pbnMgaW4gdGhlIGZvcm1cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgc2hvd0NsaWVudEpvaW5zKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuICghdGhpcy5jYW5DcmVhdGUgfHwgKCF0aGlzLnNldHRpbmdzPy5tdWx0aXRlbmFudGFibGUgJiYgIXRoaXMuc2V0dGluZ3M/Lm11bHRpQ2xpZW50cykpIHx8IHRoaXMuaXNDbGllbnRBZG1pbjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIGFsaWFzIGlzIGF2YWlsYWJsZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgaXNBbGlhc0F2YWlsYWJsZSgpIHtcclxuXHRcdHRoaXMuc2VydmljZS5pc0FsaWFzQXZhaWxhYmxlKHRoaXMuaXRlbSEpLnN1YnNjcmliZSgoeDogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHR0aGlzLmZvcm1FbGVtZW50Py5mb3JtLmNvbnRyb2xzWydhbGlhcyddLnNldEVycm9ycyh4ID8gbnVsbCA6IHsgJ2luVXNlJzogdHJ1ZSB9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0IGNsaWVudFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXRDbGllbnQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmlzRWRpdG9ySW5pdGlhbHplZCA9IGZhbHNlO1xyXG5cdFx0dGhpcy5jb25maWdFZGl0b3IoKTtcclxuXHRcdHRoaXMuZWRpdG9yQ29tcG9uZW50Py5lZGl0b3I/LnNldENvbnRlbnQodGhpcy5pdGVtPy5ib2R5ISk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBZGQgYSBhbGlhc2VzIHRvIHRoZSBjdXJyZW50IGZpZWxkXHJcblx0ICogQHBhcmFtIGV2ZW50IFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhZGRBbGlhc2VzKGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCk6IHZvaWQge1xyXG5cdFx0LyogQWRkIG91ciBhbGlhc3MgKi9cclxuXHRcdGlmICgoZXZlbnQudmFsdWUgfHwgJycpLnRyaW0oKSkge1xyXG5cdFx0XHR0aGlzLmFsaWFzZXNDb250cm9sLnNldFZhbHVlKFsuLi50aGlzLmFsaWFzZXNDb250cm9sLnZhbHVlLCBldmVudC52YWx1ZS50cmltKCldKTtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdHRoaXMuYWxpYXNlc0NvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBSZXNldCB0aGUgaW5wdXQgdmFsdWUgKi9cclxuXHRcdGlmIChldmVudC5pbnB1dCkge1xyXG5cdFx0XHRldmVudC5pbnB1dC52YWx1ZSA9ICcnO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVtb3ZlcyBhIGFsaWFzZXNcclxuXHQgKiBAcGFyYW0gYWxpYXNzIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZW1vdmVBbGlhc2VzKGFsaWFzczogc3RyaW5nKTogdm9pZCB7XHJcblx0XHRjb25zdCBpbmRleCA9IHRoaXMuYWxpYXNlc0NvbnRyb2wudmFsdWUuaW5kZXhPZihhbGlhc3MpO1xyXG5cdFx0aWYgKGluZGV4ID49IDApIHtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cdFx0XHR0aGlzLmFsaWFzZXNDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgVGVtcGxhdGVcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgbmV3SW5zdGFuY2UoKTogQ29udGVudCB7XHJcblx0XHRsZXQgaXRlbSA9IE9iamVjdC5hc3NpZ24obmV3IENvbnRlbnQoKSwgPENvbnRlbnQ+e1xyXG5cdFx0XHR0eXBlOiB0aGlzLnR5cGUsXHJcblx0XHRcdHdyYXBUYWc6IHRoaXMudHlwZSA9PSBDb250ZW50VHlwZS5CbG9jayA/ICcnIDogV3JhcFRhZy5TZWN0aW9uLFxyXG5cdFx0XHRzaG93VGl0bGU6IHRoaXMudHlwZSA9PSBDb250ZW50VHlwZS5CbG9jayA/IGZhbHNlIDogdHJ1ZVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0LyogR2V0IGNsaWVudElkICovXHJcblx0XHRpZiAoIXRoaXMuaXNFZGl0TW9kZSkge1xyXG5cdFx0XHRpZiAodGhpcy5pc0NsaWVudEFkbWluIHx8IHRoaXMuaXNEZXBhcnRtZW50QWRtaW4pIHtcclxuXHRcdFx0XHRpdGVtLmNsaWVudEpvaW5zID0gW25ldyBDb250ZW50Q2xpZW50KHsgY2xpZW50SWQ6IHRoaXMuY3VycmVudFVzZXIuY2xpZW50SWQgfSldO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAodGhpcy5pc0RlcGFydG1lbnRBZG1pbikge1xyXG5cdFx0XHRcdGl0ZW0uZGVwYXJ0bWVudEpvaW5zID0gW25ldyBDb250ZW50RGVwYXJ0bWVudCh7IGRlcGFydG1lbnRJZDogdGhpcy5jdXJyZW50VXNlci5kZXBhcnRtZW50SWQgfSldO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0LyogSW5pdCB0aGUgdGlueW1jZSBlZGl0b3IgKi9cclxuXHRcdHRoaXMuaXNFZGl0b3JJbml0aWFsemVkID0gZmFsc2U7XHJcblx0XHRyZXR1cm4gaXRlbTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZm9ybSBoYXMgYnVpbHQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uQWZ0ZXJGb3JtQnVpbGQoKTogdm9pZCB7XHJcblx0XHRzdXBlci5vbkFmdGVyRm9ybUJ1aWxkKCk7XHJcblx0XHR0aGlzLmNvbmZpZ0VkaXRvcigpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29uZmlndXJlcyB0aGUgdGlueW1jZSBlZGl0b3JcclxuXHQgKi9cclxuXHRwcml2YXRlIGNvbmZpZ0VkaXRvcigpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnNldHRpbmdzPy5tdWx0aXRlbmFudGFibGUgJiYgdGhpcy5mb3JtVmFsdWU/LmNsaWVudElkICYmIHRoaXMuc2V0dGluZ3M/LnN0eWxlVXJsRW5kcG9pbnQpIHtcclxuXHRcdFx0dGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLnNldHRpbmdzLnN0eWxlVXJsRW5kcG9pbnQodGhpcy5mb3JtVmFsdWUuY2xpZW50SWQpKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdG5leHQ6ICh4OiBhbnkpID0+IHN1cGVyLmluaXRFZGl0b3IoT2JqZWN0LmFzc2lnbih0aGlzLmdldEVkaXRvckNvbmZpZygpLCB7IGNvbnRlbnRfY3NzOiB4LnZhbHVlIH0pKSxcclxuXHRcdFx0XHRlcnJvcjogKCkgPT4gc3VwZXIuaW5pdEVkaXRvcihPYmplY3QuYXNzaWduKHRoaXMuZ2V0RWRpdG9yQ29uZmlnKCkpKVxyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHN1cGVyLmluaXRFZGl0b3IodGhpcy5nZXRFZGl0b3JDb25maWcoKSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGVzIGNvbmZpZyBmb3IgdGhlIGVkaXRvclxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgZ2V0RWRpdG9yQ29uZmlnKCk6IGFueSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRwcm9tb3Rpb246IGZhbHNlLFxyXG5cdFx0XHR0b29sYmFyOiBgJHt0aGlzLmVkaXRvclRvb2xiYXJ9IHNuaXBwZXRzQnV0dG9uYCxcclxuXHRcdFx0Zm9yY2VkX3Jvb3RfYmxvY2tzOiBmYWxzZSxcclxuXHRcdFx0aGVpZ2h0OiB0aGlzLnNldHRpbmdzPy5lZGl0b3JIZWlnaHQgfHwgJzcwMHB4JyxcclxuXHRcdFx0ZmlsZV9waWNrZXJfdHlwZXM6ICdmaWxlIGltYWdlIG1lZGlhJyxcclxuXHRcdFx0aW1hZ2VfYWR2dGFiOiB0cnVlLFxyXG5cdFx0XHRhbGxvd19odG1sX2luX25hbWVkX2FuY2hvcjogdHJ1ZSxcclxuXHRcdFx0dmFsaWRfY2hpbGRyZW46ICcrYVtkaXZ8c3BhbnxpbWd8aDF8aDJ8aDN8aDR8aDV8aDZ8YnJ8aHJ8dmlkZW9dLCtzcGFuW2ldJyxcclxuXHRcdFx0dmFsaWRfZWxlbWVudHM6ICcqWypdJyxcclxuXHRcdFx0aW1hZ2VzX3VwbG9hZF9oYW5kbGVyOiAoYmxvYkluZm86IGFueSwgcHJvZ3Jlc3M6IEZ1bmN0aW9uKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0dmFyIGNsaWVudElkczogbnVtYmVyW10gPSB0aGlzLmZvcm1WYWx1ZT8uY2xpZW50Sm9pbnM/Lm1hcCgoeDogQ29udGVudENsaWVudCkgPT4geC5jbGllbnRJZCkgPz8gW107XHJcblx0XHRcdFx0dGhpcy5maWxlU2VydmljZS51cGxvYWQoYmxvYkluZm8uYmxvYigpLCBgdXBsb2FkYCwge1xyXG5cdFx0XHRcdFx0Y2xpZW50SWQ6IGNsaWVudElkcy5sZW5ndGggPT0gMSA/IGNsaWVudElkc1swXSA6IG51bGwsXHJcblx0XHRcdFx0XHRwYXRoOiBjbGllbnRJZHMubGVuZ3RoID09IDEgPyAnaW1hZ2VzJyA6ICdjb21tb24vaW1hZ2VzJyxcclxuXHRcdFx0XHRcdGlzUHVibGljOiB0cnVlXHJcblx0XHRcdFx0fSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRcdG5leHQ6IChldmVudDogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XHJcblxyXG5cdFx0XHRcdFx0XHRcdC8qIENhbGN1bGF0ZSB0aGUgcHJvZ3Jlc3MgcGVyY2VudGFnZSAqL1xyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHBlcmNlbnREb25lID0gTWF0aC5yb3VuZCgxMDAgKiBldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCk7XHJcblxyXG5cdFx0XHRcdFx0XHRcdC8qIFBhc3MgdGhlIHBlcmNlbnRhZ2UgaW50byB0aGUgcHJvZ3Jlc3Mtc3RyZWFtICovXHJcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5pbmZvKHBlcmNlbnREb25lKTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xyXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdVcGxvYWQgZmluaXNoZWQhJyk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShldmVudC5ib2R5LnB1YmxpY0xpbmspO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRcdHJlamVjdCgnSW1hZ2UgdXBsb2FkIGZhaWxlZCBkdWUgdG8gYSBYSFIgVHJhbnNwb3J0IGVycm9yOicgKyBlcnJvcik7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdJbWFnZSB1cGxvYWQgZmFpbGVkIGR1ZSB0byBhIFhIUiBUcmFuc3BvcnQgZXJyb3I6JyArIGVycm9yKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdFx0cmV0dXJuIG9mKHt9KTtcclxuXHRcdFx0fSksXHJcblx0XHRcdHNldHVwOiBmdW5jdGlvbiAoZWRpdG9yOiBhbnkpIHtcclxuXHRcdFx0XHQvKiBBZGQgc25pcHBldHMgYnV0dG9uIHRvIHRoZSB0b29sYmFyICovXHJcblx0XHRcdFx0ZWRpdG9yLnVpLnJlZ2lzdHJ5LmFkZE1lbnVCdXR0b24oJ3NuaXBwZXRzQnV0dG9uJywge1xyXG5cdFx0XHRcdFx0dGV4dDogJ1NuaXBwZXRzJyxcclxuXHRcdFx0XHRcdGZldGNoOiBmdW5jdGlvbiAoY2FsbGJhY2s6IGFueSkge1xyXG5cdFx0XHRcdFx0XHRjYWxsYmFjayhbXHJcblx0XHRcdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ21lbnVpdGVtJyxcclxuXHRcdFx0XHRcdFx0XHRcdHRleHQ6ICdWYXJpYWJsZScsXHJcblx0XHRcdFx0XHRcdFx0XHRvbkFjdGlvbjogKCkgPT4gZWRpdG9yLmluc2VydENvbnRlbnQoJ3t7dmFyIG5hbWV9fScpXHJcblx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnbWVudWl0ZW0nLFxyXG5cdFx0XHRcdFx0XHRcdFx0dGV4dDogJ0Jsb2NrJyxcclxuXHRcdFx0XHRcdFx0XHRcdG9uQWN0aW9uOiAoKSA9PiBlZGl0b3IuaW5zZXJ0Q29udGVudCgne3tibG9jayBuYW1lPVwiLi4uXCJ9fScpXHJcblx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnbWVudWl0ZW0nLFxyXG5cdFx0XHRcdFx0XHRcdFx0dGV4dDogJ1ZpZXcgQ29tcG9uZW50JyxcclxuXHRcdFx0XHRcdFx0XHRcdG9uQWN0aW9uOiAoKSA9PiBlZGl0b3IuaW5zZXJ0Q29udGVudCgne3t2YyBuYW1lPVwiLi4uXCJ9fScpXHJcblx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDbGVhbnVwIHN1YnNjcmlwdGlvbnMgd2hlbiB0aGlzIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXHJcblx0ICovXHJcblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5yb3V0ZVN1YnNjcmlwdGlvbikge1xyXG5cdFx0XHR0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG59IiwiPHZkLWxheW91dC1uYXYgY29sb3I9XCJwcmltYXJ5XCIgW2JhY2tOYXZpZ2F0aW9uUm91dGVdPVwibGlzdFJvdXRlXCIgdG9vbGJhclRpdGxlPVwiQ29udGVudFwiIGkxOG4tdG9vbGJhclRpdGxlPVwiQEBjb250ZW50XCIgW2VkaXRNb2RlXT1cImlzRWRpdE1vZGVcIiBbYWN0aW9uc109XCJ0b29sYmFyQWN0aW9uc1wiIFtkYXRhXT1cIml0ZW1cIiBbY29udGV4dF09XCJ0aGlzXCI+XHJcblx0PGZvcm0gKm5nSWY9XCJmb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgbm92YWxpZGF0ZSAobmdTdWJtaXQpPVwic2F2ZSgpXCI+XHJcblx0XHQ8dmQtbGF5b3V0LWNhcmQtb3ZlciBjbGFzcz1cImFjY29yZGlvblwiIGNhcmRXaWR0aD1cIjcwXCIgY29sb3I9XCJwcmltYXJ5XCIgZmxleD5cclxuXHRcdFx0PG1hdC1hY2NvcmRpb24gW211bHRpXT1cIiFpc0VkaXRNb2RlXCI+XHJcblx0XHRcdFx0PCEtLSAjcmVnaW9uIERldGFpbHMgLS0+XHJcblx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwgZXhwYW5kZWQ9XCJ0cnVlXCIgaWQ9XCJkZXRhaWxzXCI+XHJcblx0XHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblx0XHRcdFx0XHRcdDxtYXQtcGFuZWwtdGl0bGUgaTE4bj1cIkBAZGV0YWlsc1wiPkRldGFpbHM8L21hdC1wYW5lbC10aXRsZT5cclxuXHRcdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgbWF0RXhwYW5zaW9uUGFuZWxDb250ZW50PlxyXG5cdFx0XHRcdFx0XHQ8dmQtZ2VuZXJpYy1mb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIFtmaWVsZEdyb3Vwc109XCJmaWVsZEdyb3Vwc1wiIFtjb250ZXh0XT1cInRoaXNcIj5cclxuXHRcdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgdmQtZWRpdG9yIGxldC1maWVsZD1cImZpZWxkXCIgbGV0LWZvcm1Hcm91cD1cImZvcm1Hcm91cFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PG1hdC1mb3JtLWZpZWxkIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIGxheW91dC1tYXJnaW4gYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBmbGV4PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZWRpdG9yIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIFtpbml0XT1cImVkaXRvckNvbmZpZ1wiIHRpbnlNYXRGb3JtQ29udHJvbCBmbGV4PjwvZWRpdG9yPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cdFx0XHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHRcdDwvdmQtZ2VuZXJpYy1mb3JtPlxyXG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDxtYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIGkxOG49XCJAQHNhdmVcIj5TYXZlPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKm5nSWY9XCJpc0VkaXRNb2RlIHx8IHRydWVcIiAoY2xpY2spPVwiYXBwbHkoKVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIGkxOG49XCJAQGFwcGx5XCI+QXBwbHk8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiYmFjaygpXCIgaTE4bj1cIkBAY2FuY2VsXCI+Q2FuY2VsPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGZsZXg+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9tYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gQXVkaXQgLS0+XHJcblx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwgaWQ9XCJhdWRpdFwiICpuZ0lmPVwiaXNFZGl0TW9kZVwiPlxyXG5cdFx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGkxOG49XCJAQGF1ZGl0XCI+QXVkaXQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBtYXRFeHBhbnNpb25QYW5lbENvbnRlbnQ+XHJcblx0XHRcdFx0XHRcdDx2ZC1hdWRpdCBbaXRlbV09XCJpdGVtXCI+IDwvdmQtYXVkaXQ+XHJcblx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PG1hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJhY2NlbnRcIiAoY2xpY2spPVwiYmFjaygpXCIgaTE4bj1cIkBAY2xvc2VcIj5DbG9zZTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBmbGV4Pjwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvbWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHRcdFx0PC9tYXQtYWNjb3JkaW9uPlxyXG5cdFx0PC92ZC1sYXlvdXQtY2FyZC1vdmVyPlxyXG5cdDwvZm9ybT5cclxuPC92ZC1sYXlvdXQtbmF2PiJdfQ==
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9jb250ZW50LWZvcm0vY29udGVudC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9jb250ZW50LWZvcm0vY29udGVudC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQWdCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BFLE9BQU8s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Q2IsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUM7NkJBQzVEOzRCQUNEO2dDQUNDLElBQUksRUFBRSxVQUFVO2dDQUNoQixJQUFJLEVBQUUsZ0JBQWdCO2dDQUN0QixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQzs2QkFDekQ7eUJBQ0QsQ0FBQyxDQUFDO29CQUNKLENBQUM7aUJBQ0QsQ0FBQyxDQUFDO1lBQ0osQ0FBQztTQUNELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1YsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEMsQ0FBQztJQUNGLENBQUM7dUdBaFJXLG9CQUFvQjsyRkFBcEIsb0JBQW9CLGdSQ25CakMsaTRGQWlEZ0I7OzJGRDlCSCxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Msa0JBQWtCO21NQTRDckIsV0FBVztzQkFEakIsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU83QixlQUFlO3NCQURyQixTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT01NQSwgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXZlbnRUeXBlLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRDaGlwSW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBFbnVtU2VydmljZSwgRmlsZVNlcnZpY2UsIEdlbmVyaWNSZWFjdGl2ZUZvcm1Db21wb25lbnQgfSBmcm9tICdAbWVzc2FpYS9jZGsnO1xyXG5pbXBvcnQgeyBFZGl0b3JDb21wb25lbnQgfSBmcm9tICdAdGlueW1jZS90aW55bWNlLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvY29udGVudC10eXBlJztcclxuaW1wb3J0IHsgV3JhcFRhZyB9IGZyb20gJy4uLy4uL2VudW1zL3dyYXAtdGFnJztcclxuaW1wb3J0IHsgQ21zU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvY21zLXNldHRpbmdzJztcclxuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gJy4uLy4uL21vZGVscy9jb250ZW50JztcclxuaW1wb3J0IHsgQ29udGVudENsaWVudCwgQ29udGVudERlcGFydG1lbnQgfSBmcm9tICcuLi8uLi9wdWJsaWMtYXBpJztcclxuaW1wb3J0IHsgQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb250ZW50LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtY29udGVudC1mb3JtJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vY29udGVudC1mb3JtLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udGVudEZvcm1Db21wb25lbnQgZXh0ZW5kcyBHZW5lcmljUmVhY3RpdmVGb3JtQ29tcG9uZW50PENvbnRlbnQsIENvbnRlbnRTZXJ2aWNlPiB7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJvdXRlciBTdWJzY3JpcHRpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgcm91dGVTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBzdGF0dXMgb2YgdGhlIGlzc3VlXHJcblx0ICovXHJcblx0cHVibGljIHR5cGU/OiBDb250ZW50VHlwZTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29udGVudCBzdGF0dXNcclxuXHQgKi9cclxuXHRwdWJsaWMgQ29udGVudFR5cGU6IHR5cGVvZiBDb250ZW50VHlwZSA9IENvbnRlbnRUeXBlO1xyXG5cclxuXHQvKipcclxuXHQgKiBXcmFwIHRhZyBlbnVtXHJcblx0ICovXHJcblx0cHVibGljIHdyYXBUYWdzOiBhbnlbXSA9IEVudW1TZXJ2aWNlLnRvQXJyYXkoV3JhcFRhZyk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNlcGFyYXRvciBrZXlzIGNvZGVzXHJcblx0ICovXHJcblx0cHVibGljIHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW10gPSBbRU5URVIsIENPTU1BXTtcclxuXHJcblx0LyoqXHJcblx0ICogc2V0dGluZ3M6IENtc1NldHRpbmdzXHJcblx0ICovXHJcblx0cHVibGljIHNldHRpbmdzOiBDbXNTZXR0aW5ncyA9IG5ldyBDbXNTZXR0aW5ncygpO1xyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIHRoZSBhbGlhc2VzIGNvbnRyb2xcclxuXHQgKi9cclxuXHRnZXQgYWxpYXNlc0NvbnRyb2woKSB7IHJldHVybiB0aGlzLmZvcm0uY29udHJvbHMuYWxpYXNlczsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZiB0byBmb3JtIGh0bWwgZWxlbWVudFxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoJ2Zvcm0nLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuXHRwdWJsaWMgZm9ybUVsZW1lbnQ/OiBIVE1MRm9ybUVsZW1lbnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmIHRvIHRpbnltY2UgZWRpdG9yXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZCgnZWRpdG9yJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGVkaXRvckNvbXBvbmVudD86IEVkaXRvckNvbXBvbmVudDtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByb3RlY3RlZCBzZXJ2aWNlOiBDb250ZW50U2VydmljZSxcclxuXHRcdHByb3RlY3RlZCBmaWxlU2VydmljZTogRmlsZVNlcnZpY2UsXHJcblx0XHRwcm90ZWN0ZWQgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcblx0KSB7XHJcblx0XHRzdXBlcihDb250ZW50LCBzZXJ2aWNlLCByb3V0ZSwgY2hhbmdlRGV0ZWN0b3JSZWYpXHJcblx0XHR0aGlzLnNldHRpbmdzID0gdGhpcy5nZXRTZXJ2aWNlKENtc1NldHRpbmdzKTtcclxuXHJcblx0XHRpZiAodGhpcy5zZXR0aW5ncz8ubXVsdGl0ZW5hbnRhYmxlIHx8IHRoaXMuc2V0dGluZ3M/Lm11bHRpQ2xpZW50cykge1xyXG5cdFx0XHR0aGlzLmluY2x1ZGUoJ0NsaWVudEpvaW5zJywgdHJ1ZSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuc2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSB8fCB0aGlzLnNldHRpbmdzPy5tdWx0aURlcGFydG1lbnRzKSB7XHJcblx0XHRcdHRoaXMuaW5jbHVkZSgnRGVwYXJ0bWVudEpvaW5zJywgdHJ1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBkYXRhLWJvdW5kIHByb3BlcnRpZXMgXHJcblx0ICogb2YgYSBkaXJlY3RpdmUgYXJlIGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0LyogRmlsdGVyIGJ5IHN0YXR1cywgaWYgYW55ICovXHJcblx0XHR0aGlzLnJvdXRlU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXM6IGFueSkgPT4ge1xyXG5cdFx0XHR0aGlzLnR5cGUgPSBFbnVtU2VydmljZS5wYXJzZShDb250ZW50VHlwZSwgcGFyYW1zLnR5cGUpO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0LyogR2V0IHNvbWUgcHJvcHMgZnJvbSByb3V0ZSBzbmFwc2hvdCAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdHRoaXMuZm9ybVZhbGlkYXRpb24gPSBkYXRhLmZvcm1WYWxpZGF0aW9uO1xyXG5cdFx0fSk7XHJcblx0XHRjb25zb2xlLmxvZygnbmdPbkluaXQnKTtcclxuXHRcdHN1cGVyLm5nT25Jbml0KCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyBjbGllbnQgam9pbnMgaW4gdGhlIGZvcm1cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgc2hvd0NsaWVudEpvaW5zKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuICghdGhpcy5jYW5DcmVhdGUgfHwgKCF0aGlzLnNldHRpbmdzPy5tdWx0aXRlbmFudGFibGUgJiYgIXRoaXMuc2V0dGluZ3M/Lm11bHRpQ2xpZW50cykpIHx8IHRoaXMuaXNDbGllbnRBZG1pbjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIGFsaWFzIGlzIGF2YWlsYWJsZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgaXNBbGlhc0F2YWlsYWJsZSgpIHtcclxuXHRcdHRoaXMuc2VydmljZS5pc0FsaWFzQXZhaWxhYmxlKHRoaXMuaXRlbSEpLnN1YnNjcmliZSgoeDogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHR0aGlzLmZvcm1FbGVtZW50Py5mb3JtLmNvbnRyb2xzWydhbGlhcyddLnNldEVycm9ycyh4ID8gbnVsbCA6IHsgJ2luVXNlJzogdHJ1ZSB9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0IGNsaWVudFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXRDbGllbnQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmlzRWRpdG9ySW5pdGlhbHplZCA9IGZhbHNlO1xyXG5cdFx0dGhpcy5jb25maWdFZGl0b3IoKTtcclxuXHRcdHRoaXMuZWRpdG9yQ29tcG9uZW50Py5lZGl0b3I/LnNldENvbnRlbnQodGhpcy5pdGVtPy5ib2R5ISk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBZGQgYSBhbGlhc2VzIHRvIHRoZSBjdXJyZW50IGZpZWxkXHJcblx0ICogQHBhcmFtIGV2ZW50IFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhZGRBbGlhc2VzKGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCk6IHZvaWQge1xyXG5cdFx0LyogQWRkIG91ciBhbGlhc3MgKi9cclxuXHRcdGlmICgoZXZlbnQudmFsdWUgfHwgJycpLnRyaW0oKSkge1xyXG5cdFx0XHR0aGlzLmFsaWFzZXNDb250cm9sLnNldFZhbHVlKFsuLi50aGlzLmFsaWFzZXNDb250cm9sLnZhbHVlLCBldmVudC52YWx1ZS50cmltKCldKTtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdHRoaXMuYWxpYXNlc0NvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBSZXNldCB0aGUgaW5wdXQgdmFsdWUgKi9cclxuXHRcdGlmIChldmVudC5pbnB1dCkge1xyXG5cdFx0XHRldmVudC5pbnB1dC52YWx1ZSA9ICcnO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVtb3ZlcyBhIGFsaWFzZXNcclxuXHQgKiBAcGFyYW0gYWxpYXNzIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZW1vdmVBbGlhc2VzKGFsaWFzczogc3RyaW5nKTogdm9pZCB7XHJcblx0XHRjb25zdCBpbmRleCA9IHRoaXMuYWxpYXNlc0NvbnRyb2wudmFsdWUuaW5kZXhPZihhbGlhc3MpO1xyXG5cdFx0aWYgKGluZGV4ID49IDApIHtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cdFx0XHR0aGlzLmFsaWFzZXNDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgVGVtcGxhdGVcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgbmV3SW5zdGFuY2UoKTogQ29udGVudCB7XHJcblx0XHRsZXQgaXRlbSA9IE9iamVjdC5hc3NpZ24obmV3IENvbnRlbnQoKSwgPENvbnRlbnQ+e1xyXG5cdFx0XHR0eXBlOiB0aGlzLnR5cGUsXHJcblx0XHRcdHdyYXBUYWc6IHRoaXMudHlwZSA9PSBDb250ZW50VHlwZS5CbG9jayA/ICcnIDogV3JhcFRhZy5TZWN0aW9uLFxyXG5cdFx0XHRzaG93VGl0bGU6IHRoaXMudHlwZSA9PSBDb250ZW50VHlwZS5CbG9jayA/IGZhbHNlIDogdHJ1ZVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0LyogR2V0IGNsaWVudElkICovXHJcblx0XHRpZiAoIXRoaXMuaXNFZGl0TW9kZSkge1xyXG5cdFx0XHRpZiAodGhpcy5pc0NsaWVudEFkbWluIHx8IHRoaXMuaXNEZXBhcnRtZW50QWRtaW4pIHtcclxuXHRcdFx0XHRpdGVtLmNsaWVudEpvaW5zID0gW25ldyBDb250ZW50Q2xpZW50KHsgY2xpZW50SWQ6IHRoaXMuY3VycmVudFVzZXIuY2xpZW50SWQgfSldO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAodGhpcy5pc0RlcGFydG1lbnRBZG1pbikge1xyXG5cdFx0XHRcdGl0ZW0uZGVwYXJ0bWVudEpvaW5zID0gW25ldyBDb250ZW50RGVwYXJ0bWVudCh7IGRlcGFydG1lbnRJZDogdGhpcy5jdXJyZW50VXNlci5kZXBhcnRtZW50SWQgfSldO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0LyogSW5pdCB0aGUgdGlueW1jZSBlZGl0b3IgKi9cclxuXHRcdHRoaXMuaXNFZGl0b3JJbml0aWFsemVkID0gZmFsc2U7XHJcblx0XHRyZXR1cm4gaXRlbTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZm9ybSBoYXMgYnVpbHQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uQWZ0ZXJGb3JtQnVpbGQoKTogdm9pZCB7XHJcblx0XHRzdXBlci5vbkFmdGVyRm9ybUJ1aWxkKCk7XHJcblx0XHR0aGlzLmNvbmZpZ0VkaXRvcigpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29uZmlndXJlcyB0aGUgdGlueW1jZSBlZGl0b3JcclxuXHQgKi9cclxuXHRwcml2YXRlIGNvbmZpZ0VkaXRvcigpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnNldHRpbmdzPy5tdWx0aXRlbmFudGFibGUgJiYgdGhpcy5mb3JtVmFsdWU/LmNsaWVudElkICYmIHRoaXMuc2V0dGluZ3M/LnN0eWxlVXJsRW5kcG9pbnQpIHtcclxuXHRcdFx0dGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLnNldHRpbmdzLnN0eWxlVXJsRW5kcG9pbnQodGhpcy5mb3JtVmFsdWUuY2xpZW50SWQpKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdG5leHQ6ICh4OiBhbnkpID0+IHN1cGVyLmluaXRFZGl0b3IoT2JqZWN0LmFzc2lnbih0aGlzLmdldEVkaXRvckNvbmZpZygpLCB7IGNvbnRlbnRfY3NzOiB4LnZhbHVlIH0pKSxcclxuXHRcdFx0XHRlcnJvcjogKCkgPT4gc3VwZXIuaW5pdEVkaXRvcihPYmplY3QuYXNzaWduKHRoaXMuZ2V0RWRpdG9yQ29uZmlnKCkpKVxyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHN1cGVyLmluaXRFZGl0b3IodGhpcy5nZXRFZGl0b3JDb25maWcoKSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGVzIGNvbmZpZyBmb3IgdGhlIGVkaXRvclxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgZ2V0RWRpdG9yQ29uZmlnKCk6IGFueSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRwcm9tb3Rpb246IGZhbHNlLFxyXG5cdFx0XHR0b29sYmFyOiBgJHt0aGlzLmVkaXRvclRvb2xiYXJ9IHNuaXBwZXRzQnV0dG9uYCxcclxuXHRcdFx0Zm9yY2VkX3Jvb3RfYmxvY2tzOiBmYWxzZSxcclxuXHRcdFx0aGVpZ2h0OiB0aGlzLnNldHRpbmdzPy5lZGl0b3JIZWlnaHQgfHwgJzcwMHB4JyxcclxuXHRcdFx0ZmlsZV9waWNrZXJfdHlwZXM6ICdmaWxlIGltYWdlIG1lZGlhJyxcclxuXHRcdFx0aW1hZ2VfYWR2dGFiOiB0cnVlLFxyXG5cdFx0XHRhbGxvd19odG1sX2luX25hbWVkX2FuY2hvcjogdHJ1ZSxcclxuXHRcdFx0dmFsaWRfY2hpbGRyZW46ICcrYVtkaXZ8c3BhbnxpbWd8aDF8aDJ8aDN8aDR8aDV8aDZ8YnJ8aHJ8dmlkZW9dLCtzcGFuW2ldJyxcclxuXHRcdFx0dmFsaWRfZWxlbWVudHM6ICcqWypdJyxcclxuXHRcdFx0aW1hZ2VzX3VwbG9hZF9oYW5kbGVyOiAoYmxvYkluZm86IGFueSwgcHJvZ3Jlc3M6IEZ1bmN0aW9uKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0dmFyIGNsaWVudElkczogbnVtYmVyW10gPSB0aGlzLmZvcm1WYWx1ZT8uY2xpZW50Sm9pbnM/Lm1hcCgoeDogQ29udGVudENsaWVudCkgPT4geC5jbGllbnRJZCkgPz8gW107XHJcblx0XHRcdFx0dGhpcy5maWxlU2VydmljZS51cGxvYWQoYmxvYkluZm8uYmxvYigpLCBgdXBsb2FkYCwge1xyXG5cdFx0XHRcdFx0Y2xpZW50SWQ6IGNsaWVudElkcy5sZW5ndGggPT0gMSA/IGNsaWVudElkc1swXSA6IG51bGwsXHJcblx0XHRcdFx0XHRwYXRoOiBjbGllbnRJZHMubGVuZ3RoID09IDEgPyAnaW1hZ2VzJyA6ICdjb21tb24vaW1hZ2VzJyxcclxuXHRcdFx0XHRcdGlzUHVibGljOiB0cnVlXHJcblx0XHRcdFx0fSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRcdG5leHQ6IChldmVudDogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XHJcblxyXG5cdFx0XHRcdFx0XHRcdC8qIENhbGN1bGF0ZSB0aGUgcHJvZ3Jlc3MgcGVyY2VudGFnZSAqL1xyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHBlcmNlbnREb25lID0gTWF0aC5yb3VuZCgxMDAgKiBldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCk7XHJcblxyXG5cdFx0XHRcdFx0XHRcdC8qIFBhc3MgdGhlIHBlcmNlbnRhZ2UgaW50byB0aGUgcHJvZ3Jlc3Mtc3RyZWFtICovXHJcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5pbmZvKHBlcmNlbnREb25lKTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xyXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdVcGxvYWQgZmluaXNoZWQhJyk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShldmVudC5ib2R5LnB1YmxpY0xpbmspO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRcdHJlamVjdCgnSW1hZ2UgdXBsb2FkIGZhaWxlZCBkdWUgdG8gYSBYSFIgVHJhbnNwb3J0IGVycm9yOicgKyBlcnJvcik7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdJbWFnZSB1cGxvYWQgZmFpbGVkIGR1ZSB0byBhIFhIUiBUcmFuc3BvcnQgZXJyb3I6JyArIGVycm9yKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdFx0cmV0dXJuIG9mKHt9KTtcclxuXHRcdFx0fSksXHJcblx0XHRcdHNldHVwOiBmdW5jdGlvbiAoZWRpdG9yOiBhbnkpIHtcclxuXHRcdFx0XHQvKiBBZGQgc25pcHBldHMgYnV0dG9uIHRvIHRoZSB0b29sYmFyICovXHJcblx0XHRcdFx0ZWRpdG9yLnVpLnJlZ2lzdHJ5LmFkZE1lbnVCdXR0b24oJ3NuaXBwZXRzQnV0dG9uJywge1xyXG5cdFx0XHRcdFx0dGV4dDogJ1NuaXBwZXRzJyxcclxuXHRcdFx0XHRcdGZldGNoOiBmdW5jdGlvbiAoY2FsbGJhY2s6IGFueSkge1xyXG5cdFx0XHRcdFx0XHRjYWxsYmFjayhbXHJcblx0XHRcdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ21lbnVpdGVtJyxcclxuXHRcdFx0XHRcdFx0XHRcdHRleHQ6ICdWYXJpYWJsZScsXHJcblx0XHRcdFx0XHRcdFx0XHRvbkFjdGlvbjogKCkgPT4gZWRpdG9yLmluc2VydENvbnRlbnQoJ3t7dmFyIG5hbWV9fScpXHJcblx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnbWVudWl0ZW0nLFxyXG5cdFx0XHRcdFx0XHRcdFx0dGV4dDogJ0Jsb2NrJyxcclxuXHRcdFx0XHRcdFx0XHRcdG9uQWN0aW9uOiAoKSA9PiBlZGl0b3IuaW5zZXJ0Q29udGVudCgne3tibG9jayBuYW1lPVwiLi4uXCJ9fScpXHJcblx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnbWVudWl0ZW0nLFxyXG5cdFx0XHRcdFx0XHRcdFx0dGV4dDogJ1ZpZXcgQ29tcG9uZW50JyxcclxuXHRcdFx0XHRcdFx0XHRcdG9uQWN0aW9uOiAoKSA9PiBlZGl0b3IuaW5zZXJ0Q29udGVudCgne3t2YyBuYW1lPVwiLi4uXCJ9fScpXHJcblx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDbGVhbnVwIHN1YnNjcmlwdGlvbnMgd2hlbiB0aGlzIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXHJcblx0ICovXHJcblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5yb3V0ZVN1YnNjcmlwdGlvbikge1xyXG5cdFx0XHR0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG59IiwiPHZkLWxheW91dC1uYXYgY29sb3I9XCJwcmltYXJ5XCIgW2JhY2tOYXZpZ2F0aW9uUm91dGVdPVwibGlzdFJvdXRlXCIgdG9vbGJhclRpdGxlPVwiQ29udGVudFwiIGkxOG4tdG9vbGJhclRpdGxlPVwiQEBjb250ZW50XCIgW2VkaXRNb2RlXT1cImlzRWRpdE1vZGVcIiBbYWN0aW9uc109XCJ0b29sYmFyQWN0aW9uc1wiIFtkYXRhXT1cIml0ZW1cIiBbY29udGV4dF09XCJ0aGlzXCI+XHJcblx0PGZvcm0gKm5nSWY9XCJmb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgbm92YWxpZGF0ZSAobmdTdWJtaXQpPVwic2F2ZSgpXCI+XHJcblx0XHQ8dmQtbGF5b3V0LWNhcmQtb3ZlciBjbGFzcz1cImFjY29yZGlvblwiIGNhcmRXaWR0aD1cIjcwXCIgY29sb3I9XCJwcmltYXJ5XCIgZmxleD5cclxuXHRcdFx0PG1hdC1hY2NvcmRpb24gW211bHRpXT1cIiFpc0VkaXRNb2RlXCI+XHJcblx0XHRcdFx0PCEtLSAjcmVnaW9uIERldGFpbHMgLS0+XHJcblx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwgZXhwYW5kZWQ9XCJ0cnVlXCIgaWQ9XCJkZXRhaWxzXCI+XHJcblx0XHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblx0XHRcdFx0XHRcdDxtYXQtcGFuZWwtdGl0bGUgaTE4bj1cIkBAZGV0YWlsc1wiPkRldGFpbHM8L21hdC1wYW5lbC10aXRsZT5cclxuXHRcdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgbWF0RXhwYW5zaW9uUGFuZWxDb250ZW50PlxyXG5cdFx0XHRcdFx0XHQ8dmQtZ2VuZXJpYy1mb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIFtmaWVsZEdyb3Vwc109XCJmaWVsZEdyb3Vwc1wiIFtjb250ZXh0XT1cInRoaXNcIj5cclxuXHRcdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgdmQtZWRpdG9yIGxldC1maWVsZD1cImZpZWxkXCIgbGV0LWZvcm1Hcm91cD1cImZvcm1Hcm91cFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PG1hdC1mb3JtLWZpZWxkIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIGxheW91dC1tYXJnaW4gYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBmbGV4PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZWRpdG9yIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIFtpbml0XT1cImVkaXRvckNvbmZpZ1wiIHRpbnlNYXRGb3JtQ29udHJvbCBmbGV4PjwvZWRpdG9yPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cdFx0XHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHRcdDwvdmQtZ2VuZXJpYy1mb3JtPlxyXG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDxtYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIGkxOG49XCJAQHNhdmVcIj5TYXZlPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKm5nSWY9XCJpc0VkaXRNb2RlIHx8IHRydWVcIiAoY2xpY2spPVwiYXBwbHkoKVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIGkxOG49XCJAQGFwcGx5XCI+QXBwbHk8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiYmFjaygpXCIgaTE4bj1cIkBAY2FuY2VsXCI+Q2FuY2VsPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGZsZXg+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9tYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gQXVkaXQgLS0+XHJcblx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwgaWQ9XCJhdWRpdFwiICpuZ0lmPVwiaXNFZGl0TW9kZVwiPlxyXG5cdFx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGkxOG49XCJAQGF1ZGl0XCI+QXVkaXQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBtYXRFeHBhbnNpb25QYW5lbENvbnRlbnQ+XHJcblx0XHRcdFx0XHRcdDx2ZC1hdWRpdCBbZW50aXR5XT1cIml0ZW1cIj4gPC92ZC1hdWRpdD5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8bWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIChjbGljayk9XCJiYWNrKClcIiBpMThuPVwiQEBjbG9zZVwiPkNsb3NlPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGZsZXg+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9tYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cdFx0XHQ8L21hdC1hY2NvcmRpb24+XHJcblx0XHQ8L3ZkLWxheW91dC1jYXJkLW92ZXI+XHJcblx0PC9mb3JtPlxyXG48L3ZkLWxheW91dC1uYXY+Il19
@@ -160,10 +160,10 @@ export class TemplateFormComponent extends GenericReactiveFormComponent {
160
160
  }).afterClosed().subscribe();
161
161
  }
162
162
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TemplateFormComponent, deps: [{ token: i1.TemplateService }, { token: i2.FileService }, { token: i3.MatDialog }, { token: i4.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
163
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: TemplateFormComponent, selector: "app-template-form", usesInheritance: true, ngImport: i0, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Template\" i18n-toolbarTitle=\"@@template\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [fieldSets]=\"['details']\" [context]=\"this\"></vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"content\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@content\">Content</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"content\" rows=\"160\" [options]=\"editorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"testData\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@testData\">Test Data</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"dummyData\" rows=\"120\" [options]=\"jsonEditorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [item]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>", styles: ["codemirror{width:100%}.CodeMirror{height:500px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.CodemirrorComponent, selector: "ngx-codemirror", inputs: ["className", "name", "autoFocus", "options", "preserveScrollPosition"], outputs: ["cursorActivity", "focusChange", "scroll", "drop", "codeMirrorLoaded"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { kind: "directive", type: i2.RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: ["formGroup", "rxwebForm"] }, { kind: "directive", type: i2.RxFormControlDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["rxalpha", "rxalphaNumeric", "rxascii", "rxcompare", "rxcompose", "rxcontains", "rxcreditCard", "rxdataUri", "rxdifferent", "rxdigit", "rxemail", "rxendsWith", "rxeven", "rxextension", "rxfactor", "rxfileSize", "rxgreaterThanEqualTo", "rxgreaterThan", "rxhexColor", "rxjson", "rxlatitude", "rxlatLong", "rxleapYear", "rxlessThan", "rxlessThanEqualTo", "rxlongitude", "rxlowerCase", "rxmac", "rxmaxDate", "rxmaxLength", "rxmaxNumber", "rxminDate", "rxminLength", "rxminNumber", "rxnumeric", "rxodd", "rxpassword", "rxport", "rxprimeNumber", "rxrequired", "rxrange", "rxrule", "rxstartsWith", "rxtime", "rxupperCase", "rxurl", "rxunique", "rxnotEmpty", "rxcusip", "rxgrid", "rxdate"] }, { kind: "directive", type: i8.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i8.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i8.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i8.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i8.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i8.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.VdLayoutNavComponent, selector: "vd-layout-nav", inputs: ["toolbarTitle", "editMode", "actions", "data", "context", "icon", "logo", "color", "hideToggle", "backNavigationRoute", "navigationRoute"], outputs: ["reload"] }, { kind: "component", type: i2.VdLayoutCardOverComponent, selector: "vd-layout-card-over", inputs: ["cardTitle", "cardSubtitle", "cardWidth", "color"] }, { kind: "directive", type: i2.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "component", type: i2.VdGenericFormComponent, selector: "vd-generic-form", inputs: ["formGroup", "classType", "formDefinition", "fieldGroups", "groupName", "fieldSets", "context", "debugValue", "readonly", "separatorKeysCodes"] }, { kind: "component", type: i10.VdAuditComponent, selector: "vd-audit", inputs: ["item"] }], encapsulation: i0.ViewEncapsulation.None });
163
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: TemplateFormComponent, selector: "app-template-form", usesInheritance: true, ngImport: i0, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Template\" i18n-toolbarTitle=\"@@template\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [fieldSets]=\"['details']\" [context]=\"this\"></vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"content\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@content\">Content</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"content\" rows=\"160\" [options]=\"editorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"testData\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@testData\">Test Data</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"dummyData\" rows=\"120\" [options]=\"jsonEditorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [entity]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>", styles: ["codemirror{width:100%}.CodeMirror{height:500px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.CodemirrorComponent, selector: "ngx-codemirror", inputs: ["className", "name", "autoFocus", "options", "preserveScrollPosition"], outputs: ["cursorActivity", "focusChange", "scroll", "drop", "codeMirrorLoaded"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { kind: "directive", type: i2.RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: ["formGroup", "rxwebForm"] }, { kind: "directive", type: i2.RxFormControlDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["rxalpha", "rxalphaNumeric", "rxascii", "rxcompare", "rxcompose", "rxcontains", "rxcreditCard", "rxdataUri", "rxdifferent", "rxdigit", "rxemail", "rxendsWith", "rxeven", "rxextension", "rxfactor", "rxfileSize", "rxgreaterThanEqualTo", "rxgreaterThan", "rxhexColor", "rxjson", "rxlatitude", "rxlatLong", "rxleapYear", "rxlessThan", "rxlessThanEqualTo", "rxlongitude", "rxlowerCase", "rxmac", "rxmaxDate", "rxmaxLength", "rxmaxNumber", "rxminDate", "rxminLength", "rxminNumber", "rxnumeric", "rxodd", "rxpassword", "rxport", "rxprimeNumber", "rxrequired", "rxrange", "rxrule", "rxstartsWith", "rxtime", "rxupperCase", "rxurl", "rxunique", "rxnotEmpty", "rxcusip", "rxgrid", "rxdate"] }, { kind: "directive", type: i8.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i8.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i8.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i8.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i8.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i8.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.VdLayoutNavComponent, selector: "vd-layout-nav", inputs: ["toolbarTitle", "editMode", "actions", "data", "context", "icon", "logo", "color", "hideToggle", "backNavigationRoute", "navigationRoute"], outputs: ["reload"] }, { kind: "component", type: i2.VdLayoutCardOverComponent, selector: "vd-layout-card-over", inputs: ["cardTitle", "cardSubtitle", "cardWidth", "color"] }, { kind: "directive", type: i2.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "component", type: i2.VdGenericFormComponent, selector: "vd-generic-form", inputs: ["formGroup", "classType", "formDefinition", "fieldGroups", "groupName", "fieldSets", "context", "debugValue", "readonly", "separatorKeysCodes"] }, { kind: "component", type: i10.VdAuditComponent, selector: "vd-audit", inputs: ["entity"] }], encapsulation: i0.ViewEncapsulation.None });
164
164
  }
165
165
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TemplateFormComponent, decorators: [{
166
166
  type: Component,
167
- args: [{ selector: 'app-template-form', encapsulation: ViewEncapsulation.None, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Template\" i18n-toolbarTitle=\"@@template\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [fieldSets]=\"['details']\" [context]=\"this\"></vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"content\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@content\">Content</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"content\" rows=\"160\" [options]=\"editorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"testData\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@testData\">Test Data</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"dummyData\" rows=\"120\" [options]=\"jsonEditorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [item]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>", styles: ["codemirror{width:100%}.CodeMirror{height:500px}\n"] }]
167
+ args: [{ selector: 'app-template-form', encapsulation: ViewEncapsulation.None, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Template\" i18n-toolbarTitle=\"@@template\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [fieldSets]=\"['details']\" [context]=\"this\"></vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"content\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@content\">Content</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"content\" rows=\"160\" [options]=\"editorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"testData\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@testData\">Test Data</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"dummyData\" rows=\"120\" [options]=\"jsonEditorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [entity]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>", styles: ["codemirror{width:100%}.CodeMirror{height:500px}\n"] }]
168
168
  }], ctorParameters: () => [{ type: i1.TemplateService }, { type: i2.FileService }, { type: i3.MatDialog }, { type: i4.ActivatedRoute }, { type: i0.ChangeDetectorRef }] });
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGstY21zL3NyYy9saWIvY29tbnBvbmVudHMvdGVtcGxhdGUtZm9ybS90ZW1wbGF0ZS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy90ZW1wbGF0ZS1mb3JtL3RlbXBsYXRlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekUsT0FBTyxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUs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QUFDLENBQUM7UUFDSixDQUFDO0lBQ0YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRTtZQUNoRCxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPO1lBQy9ELElBQUksRUFBRSxJQUFJLGVBQWUsQ0FBQztnQkFDekIsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSTthQUNyQixDQUFDO1lBQ0YsVUFBVSxFQUFFLENBQUMsb0JBQW9CLENBQUM7U0FDbEMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzlCLENBQUM7dUdBL0lXLHFCQUFxQjsyRkFBckIscUJBQXFCLGdGQ3hCbEMsMnRKQW9GZ0I7OzJGRDVESCxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0MsbUJBQW1CLGlCQUdkLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEZpbGVTZXJ2aWNlLCBHZW5lcmljUmVhY3RpdmVGb3JtQ29tcG9uZW50IH0gZnJvbSAnQG1lc3NhaWEvY2RrJztcclxuaW1wb3J0IHsgQXR0YWNobWVudCB9IGZyb20gJ0BtZXNzYWlhL2Nkay1iYXNlJztcclxuaW1wb3J0ICdjb2RlbWlycm9yL2FkZG9uL2VkaXQvY2xvc2V0YWcnO1xyXG5pbXBvcnQgJ2NvZGVtaXJyb3IvYWRkb24vZWRpdC9tYXRjaGJyYWNrZXRzJztcclxuaW1wb3J0ICdjb2RlbWlycm9yL2FkZG9uL3NlbGVjdGlvbi9hY3RpdmUtbGluZSc7XHJcbmltcG9ydCAnY29kZW1pcnJvci9tb2RlL2h0bWxtaXhlZC9odG1sbWl4ZWQnO1xyXG5pbXBvcnQgJ2NvZGVtaXJyb3IvbW9kZS9qYXZhc2NyaXB0L2phdmFzY3JpcHQnO1xyXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgVGVtcGxhdGVUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvdGVtcGxhdGUtdHlwZSc7XHJcbmltcG9ydCB7IENtc1NldHRpbmdzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Ntcy1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RlbXBsYXRlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVQcmV2aWV3IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RlbXBsYXRlLXByZXZpZXcnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90ZW1wbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVQcmV2aWV3RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vdGVtcGxhdGUtcHJldmlldy1kaWFsb2cvdGVtcGxhdGUtcHJldmlldy1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLXRlbXBsYXRlLWZvcm0nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi90ZW1wbGF0ZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi90ZW1wbGF0ZS1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0ZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVGb3JtQ29tcG9uZW50IGV4dGVuZHMgR2VuZXJpY1JlYWN0aXZlRm9ybUNvbXBvbmVudDxUZW1wbGF0ZSwgVGVtcGxhdGVTZXJ2aWNlPiB7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRlbXBsYXRlIHR5cGVcclxuXHQgKi9cclxuXHRwdWJsaWMgVGVtcGxhdGVUeXBlOiB0eXBlb2YgVGVtcGxhdGVUeXBlID0gVGVtcGxhdGVUeXBlO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZXR0aW5nczogQ21zU2V0dGluZ3NcclxuXHQgKi9cclxuXHRwdWJsaWMgc2V0dGluZ3M6IENtc1NldHRpbmdzID0gbmV3IENtc1NldHRpbmdzKCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgdGhlIGF0dGFjaG1lbnRzIGNvbnRyb2xcclxuXHQgKi9cclxuXHRnZXQgYXR0YWNobWVudHNDb250cm9sKCkgeyByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzLmF0dGFjaG1lbnRzOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEVkaXRvciBvcHRpb25zXHJcblx0ICovXHJcblx0cHVibGljIGVkaXRvck9wdGlvbnM6IGFueSA9IHtcclxuXHRcdGxpbmVOdW1iZXJzOiB0cnVlLFxyXG5cdFx0dGhlbWU6ICdtYXRlcmlhbCcsXHJcblx0XHRhdXRvQ2xvc2VUYWdzOiB0cnVlLFxyXG5cdFx0c3R5bGVBY3RpdmVMaW5lOiB0cnVlLFxyXG5cdFx0bW9kZTogJ3RleHQvaHRtbCcsXHJcblx0XHRwcm9maWxlOiAneGh0bWwnXHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogRWRpdG9yIG9wdGlvbnNcclxuXHQgKi9cclxuXHRwdWJsaWMganNvbkVkaXRvck9wdGlvbnM6IGFueSA9IHtcclxuXHRcdGxpbmVOdW1iZXJzOiB0cnVlLFxyXG5cdFx0dGhlbWU6ICdtYXRlcmlhbCcsXHJcblx0XHRhdXRvQ2xvc2VUYWdzOiB0cnVlLFxyXG5cdFx0c3R5bGVBY3RpdmVMaW5lOiB0cnVlLFxyXG5cdFx0bW9kZToge1xyXG5cdFx0XHRuYW1lOiBcImphdmFzY3JpcHRcIixcclxuXHRcdFx0anNvbjogdHJ1ZSxcclxuXHRcdFx0c3RhdGVtZW50SW5kZW50OiAyXHJcblx0XHR9LFxyXG5cdFx0cHJvZmlsZTogJ3hodG1sJyxcclxuXHRcdGxpbmVXcmFwcGluZzogdHJ1ZSxcclxuXHRcdGluZGVudFdpdGhUYWJzOiBmYWxzZSxcclxuXHRcdHRhYlNpemU6IDJcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnN0cnVjdG9yXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcm90ZWN0ZWQgc2VydmljZTogVGVtcGxhdGVTZXJ2aWNlLFxyXG5cdFx0cHJvdGVjdGVkIGZpbGVTZXJ2aWNlOiBGaWxlU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCBkaWFsb2c6IE1hdERpYWxvZyxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcblx0KSB7XHJcblx0XHRzdXBlcihUZW1wbGF0ZSwgc2VydmljZSwgcm91dGUsIGNoYW5nZURldGVjdG9yUmVmKVxyXG5cdFx0dGhpcy5zZXR0aW5ncyA9IHRoaXMuZ2V0U2VydmljZShDbXNTZXR0aW5ncyk7XHJcblxyXG5cdFx0aWYgKHRoaXMuc2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSB8fCB0aGlzLnNldHRpbmdzPy5tdWx0aUNsaWVudHMpIHtcclxuXHRcdFx0dGhpcy5pbmNsdWRlKCdDbGllbnRKb2lucycsIHRydWUpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGlzLnNldHRpbmdzPy5tdWx0aXRlbmFudGFibGUgfHwgdGhpcy5zZXR0aW5ncz8ubXVsdGlEZXBhcnRtZW50cykge1xyXG5cdFx0XHR0aGlzLmluY2x1ZGUoJ0RlcGFydG1lbnRKb2lucycsIHRydWUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVtb3ZlcyBhIGF0dGFjaG1lbnRcclxuXHQgKiBAcGFyYW0gYXR0YWNobWVudCBcclxuXHQgKi9cclxuXHRwdWJsaWMgcmVtb3ZlQXR0YWNobWVudChhdHRhY2htZW50OiBBdHRhY2htZW50KTogdm9pZCB7XHJcblx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzLml0ZW0/LmF0dGFjaG1lbnRzKSkge1xyXG5cdFx0XHR2YXIgaW5kZXggPSB0aGlzLmF0dGFjaG1lbnRzQ29udHJvbC52YWx1ZS5pbmRleE9mKGF0dGFjaG1lbnQsIDApO1xyXG5cdFx0XHRpZiAoaW5kZXggPiAtMSkge1xyXG5cdFx0XHRcdHRoaXMuZGlhbG9nU2VydmljZS5vcGVuQ29uZmlybSh7XHJcblx0XHRcdFx0XHRtZXNzYWdlOiAnTcO2Y2h0ZW4gU2llIGRpZXNlbiBBbmhhbmcgd2lya2xpY2ggbMO2c2NoZW4/JyxcclxuXHRcdFx0XHRcdHRpdGxlOiAnTMO2c2NoZW4gYmVzdMOkdGlnZW4nLFxyXG5cdFx0XHRcdFx0Y2FuY2VsQnV0dG9uOiAkbG9jYWxpemVgOkBAY2FuY2VsOkNhbmNlbGAsXHJcblx0XHRcdFx0XHRhY2NlcHRCdXR0b246ICRsb2NhbGl6ZWA6QEB5ZXM6WWVzYCxcclxuXHRcdFx0XHR9KS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoYWNjZXB0OiBib29sZWFuKSA9PiB7XHJcblx0XHRcdFx0XHRpZiAoYWNjZXB0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuYXR0YWNobWVudHNDb250cm9sLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuYXR0YWNobWVudHNDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5hdHRhY2htZW50c0NvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBsb2FkcyBhIGF0dGFjaG1lbnQgZmlsZVxyXG5cdCAqIEBwYXJhbSBmaWxlIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyB1cGxvYWRBdHRhY2htZW50KCRldmVudDogRXZlbnQpOiB2b2lkIHtcclxuXHRcdGxldCBmaWxlID0gKCgkZXZlbnQ/LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcyA/PyBbXSlbMF07XHJcblx0XHRpZiAoZmlsZSAhPSBudWxsKSB7XHJcblx0XHRcdC8vIHRoaXMuZmlsZVNlcnZpY2UudXBsb2FkKGZpbGUsIGB1cGxvYWRgLCB7IGNsaWVudElkOiB0aGlzLml0ZW0uY2xpZW50SWQsIHBhdGg6IGAke3RoaXMuaXRlbS5jbGllbnRJZCA/ICcnIDogJ2NvbW1vbi8nfWRvY3NgIH0pLnN1YnNjcmliZShldmVudCA9PiB7XHJcblx0XHRcdC8vIFx0aWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpIHtcclxuXHJcblx0XHRcdC8vIFx0XHQvKiBDYWxjdWxhdGUgdGhlIHByb2dyZXNzIHBlcmNlbnRhZ2UgKi9cclxuXHRcdFx0Ly8gXHRcdGNvbnN0IHBlcmNlbnREb25lID0gTWF0aC5yb3VuZCgxMDAgKiBldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCk7XHJcblxyXG5cdFx0XHQvLyBcdFx0LyogUGFzcyB0aGUgcGVyY2VudGFnZSBpbnRvIHRoZSBwcm9ncmVzcy1zdHJlYW0gKi9cclxuXHRcdFx0Ly8gXHRcdGNvbnNvbGUuaW5mbyhwZXJjZW50RG9uZSk7XHJcblx0XHRcdC8vIFx0fSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xyXG5cdFx0XHQvLyBcdFx0LyogQWRkIG91ciBhdHRhY2htZW50cyAqL1xyXG5cdFx0XHQvLyBcdFx0dGhpcy5hdHRhY2htZW50c0NvbnRyb2wuc2V0VmFsdWUoWy4uLnRoaXMuYXR0YWNobWVudHNDb250cm9sLnZhbHVlLCA8QXR0YWNobWVudD5ldmVudC5ib2R5XSk7XHJcblx0XHRcdC8vIFx0XHR0aGlzLmF0dGFjaG1lbnRzQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdC8vIFx0XHR0aGlzLmF0dGFjaG1lbnRzQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG5cdFx0XHQvLyBcdH1cclxuXHRcdFx0Ly8gfSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEb3dubG9hZHMgYSBhdHRhY2htZW50XHJcblx0ICogQHBhcmFtIGF0dGFjaG1lbnQgXHJcblx0ICovXHJcblx0cHVibGljIGRvd25sb2FkQXR0YWNobWVudChhdHRhY2htZW50OiBBdHRhY2htZW50KTogdm9pZCB7XHJcblx0XHRpZiAoYXR0YWNobWVudC5pZCkge1xyXG5cdFx0XHR0aGlzLnNlcnZpY2UuZG93bmxvYWQoYGRvd25sb2FkQXR0YWNobWVudC8ke2F0dGFjaG1lbnQuaWR9YCkuc3Vic2NyaWJlKHggPT4ge1xyXG5cdFx0XHRcdHNhdmVBcyhuZXcgQmxvYihbeC5kYXRhXSwgeyB0eXBlOiAnJyB9KSwgeC5maWxlbmFtZSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2hvd3MgdGVtcGxhdGUgcHJldmlld1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBzaG93UHJldmlldygpOiB2b2lkIHtcclxuXHRcdHRoaXMuZGlhbG9nLm9wZW4oVGVtcGxhdGVQcmV2aWV3RGlhbG9nQ29tcG9uZW50LCB7XHJcblx0XHRcdHdpZHRoOiB0aGlzLml0ZW0/LnR5cGUgPT0gVGVtcGxhdGVUeXBlLlBkZiA/ICcxMDIwcHgnIDogJzkyMHB4JyxcclxuXHRcdFx0ZGF0YTogbmV3IFRlbXBsYXRlUHJldmlldyh7XHJcblx0XHRcdFx0dGVtcGxhdGVJZDogdGhpcy5pdGVtPy5pZCxcclxuXHRcdFx0XHR0eXBlOiB0aGlzLml0ZW0/LnR5cGVcclxuXHRcdFx0fSksXHJcblx0XHRcdHBhbmVsQ2xhc3M6IFsnZGlhbG9nLWZ1bGwtc2NyZWVuJ11cclxuXHRcdH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCk7XHJcblx0fVxyXG59IiwiPHZkLWxheW91dC1uYXYgY29sb3I9XCJwcmltYXJ5XCIgW2JhY2tOYXZpZ2F0aW9uUm91dGVdPVwibGlzdFJvdXRlXCIgdG9vbGJhclRpdGxlPVwiVGVtcGxhdGVcIiBpMThuLXRvb2xiYXJUaXRsZT1cIkBAdGVtcGxhdGVcIiBbZWRpdE1vZGVdPVwiaXNFZGl0TW9kZVwiIFthY3Rpb25zXT1cInRvb2xiYXJBY3Rpb25zXCIgW2RhdGFdPVwiaXRlbVwiIFtjb250ZXh0XT1cInRoaXNcIj5cclxuXHQ8Zm9ybSAqbmdJZj1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBub3ZhbGlkYXRlIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cclxuXHRcdDx2ZC1sYXlvdXQtY2FyZC1vdmVyIGNsYXNzPVwiYWNjb3JkaW9uXCIgY2FyZFdpZHRoPVwiNzBcIiBjb2xvcj1cInByaW1hcnlcIiBmbGV4PlxyXG5cdFx0XHQ8bWF0LWFjY29yZGlvbiBbbXVsdGldPVwiIWlzRWRpdE1vZGVcIj5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gRGV0YWlscyAtLT5cclxuXHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbCBleHBhbmRlZD1cInRydWVcIiBpZD1cImRldGFpbHNcIj5cclxuXHRcdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdFx0PG1hdC1wYW5lbC10aXRsZSBpMThuPVwiQEBkZXRhaWxzXCI+RGV0YWlsczwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBtYXRFeHBhbnNpb25QYW5lbENvbnRlbnQ+XHJcblx0XHRcdFx0XHRcdDx2ZC1nZW5lcmljLWZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgW2ZpZWxkR3JvdXBzXT1cImZpZWxkR3JvdXBzXCIgW2ZpZWxkU2V0c109XCJbJ2RldGFpbHMnXVwiIFtjb250ZXh0XT1cInRoaXNcIj48L3ZkLWdlbmVyaWMtZm9ybT5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8bWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBpMThuPVwiQEBzYXZlXCI+U2F2ZTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJhcHBseSgpXCIgKm5nSWY9XCJpc0VkaXRNb2RlXCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCIgaTE4bj1cIkBAYXBwbHlcIj5BcHBseTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJiYWNrKClcIiBpMThuPVwiQEBjYW5jZWxcIj5DYW5jZWw8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gZmxleD48L3NwYW4+XHJcblx0XHRcdFx0XHQ8L21hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuXHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdDwhLS0gI3JlZ2lvbiBDb250ZW50IC0tPlxyXG5cdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsIGlkPVwiY29udGVudFwiPlxyXG5cdFx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGkxOG49XCJAQGNvbnRlbnRcIj5Db250ZW50PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L21hdC1wYW5lbC10aXRsZT5cclxuXHRcdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgbWF0RXhwYW5zaW9uUGFuZWxDb250ZW50PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGxheW91dC1tYXJnaW4+XHJcblx0XHRcdFx0XHRcdFx0PG5neC1jb2RlbWlycm9yIGZvcm1Db250cm9sTmFtZT1cImNvbnRlbnRcIiByb3dzPVwiMTYwXCIgW29wdGlvbnNdPVwiZWRpdG9yT3B0aW9uc1wiPjwvbmd4LWNvZGVtaXJyb3I+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDxtYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIGkxOG49XCJAQHNhdmVcIj5TYXZlPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cImFwcGx5KClcIiAqbmdJZj1cImlzRWRpdE1vZGVcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBpMThuPVwiQEBhcHBseVwiPkFwcGx5PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cInNob3dQcmV2aWV3KClcIiAqbmdJZj1cImlzRWRpdE1vZGVcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmcgfHwgIWZvcm0ucHJpc3RpbmVcIiBpMThuPVwiQEBwcmV2aWV3XCI+UHJldmlldzwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJiYWNrKClcIiBpMThuPVwiQEBjYW5jZWxcIj5DYW5jZWw8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gZmxleD48L3NwYW4+XHJcblx0XHRcdFx0XHQ8L21hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuXHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdDwhLS0gI3JlZ2lvbiBDb250ZW50IC0tPlxyXG5cdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsIGlkPVwidGVzdERhdGFcIj5cclxuXHRcdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdFx0PG1hdC1wYW5lbC10aXRsZT5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBpMThuPVwiQEB0ZXN0RGF0YVwiPlRlc3QgRGF0YTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PC9tYXQtcGFuZWwtdGl0bGU+XHJcblx0XHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIG1hdEV4cGFuc2lvblBhbmVsQ29udGVudD5cclxuXHRcdFx0XHRcdFx0PGRpdiBsYXlvdXQtbWFyZ2luPlxyXG5cdFx0XHRcdFx0XHRcdDxuZ3gtY29kZW1pcnJvciBmb3JtQ29udHJvbE5hbWU9XCJkdW1teURhdGFcIiByb3dzPVwiMTIwXCIgW29wdGlvbnNdPVwianNvbkVkaXRvck9wdGlvbnNcIj48L25neC1jb2RlbWlycm9yPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8bWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBpMThuPVwiQEBzYXZlXCI+U2F2ZTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJhcHBseSgpXCIgKm5nSWY9XCJpc0VkaXRNb2RlXCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCIgaTE4bj1cIkBAYXBwbHlcIj5BcHBseTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJzaG93UHJldmlldygpXCIgKm5nSWY9XCJpc0VkaXRNb2RlXCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nIHx8ICFmb3JtLnByaXN0aW5lXCIgaTE4bj1cIkBAcHJldmlld1wiPlByZXZpZXc8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiYmFjaygpXCIgaTE4bj1cIkBAY2FuY2VsXCI+Q2FuY2VsPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGZsZXg+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9tYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gQXVkaXQgLS0+XHJcblx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwgaWQ9XCJhdWRpdFwiICpuZ0lmPVwiaXNFZGl0TW9kZVwiPlxyXG5cdFx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGkxOG49XCJAQGF1ZGl0XCI+QXVkaXQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBtYXRFeHBhbnNpb25QYW5lbENvbnRlbnQ+XHJcblx0XHRcdFx0XHRcdDx2ZC1hdWRpdCBbaXRlbV09XCJpdGVtXCI+IDwvdmQtYXVkaXQ+XHJcblx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PG1hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJhY2NlbnRcIiAoY2xpY2spPVwiYmFjaygpXCIgaTE4bj1cIkBAY2xvc2VcIj5DbG9zZTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBmbGV4Pjwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvbWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHRcdFx0PC9tYXQtYWNjb3JkaW9uPlxyXG5cdFx0PC92ZC1sYXlvdXQtY2FyZC1vdmVyPlxyXG5cdDwvZm9ybT5cclxuPC92ZC1sYXlvdXQtbmF2PiJdfQ==
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGstY21zL3NyYy9saWIvY29tbnBvbmVudHMvdGVtcGxhdGUtZm9ybS90ZW1wbGF0ZS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy90ZW1wbGF0ZS1mb3JtL3RlbXBsYXRlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekUsT0FBTyxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUs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QUFDLENBQUM7UUFDSixDQUFDO0lBQ0YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRTtZQUNoRCxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPO1lBQy9ELElBQUksRUFBRSxJQUFJLGVBQWUsQ0FBQztnQkFDekIsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSTthQUNyQixDQUFDO1lBQ0YsVUFBVSxFQUFFLENBQUMsb0JBQW9CLENBQUM7U0FDbEMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzlCLENBQUM7dUdBL0lXLHFCQUFxQjsyRkFBckIscUJBQXFCLGdGQ3hCbEMsNnRKQW9GZ0I7OzJGRDVESCxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0MsbUJBQW1CLGlCQUdkLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEZpbGVTZXJ2aWNlLCBHZW5lcmljUmVhY3RpdmVGb3JtQ29tcG9uZW50IH0gZnJvbSAnQG1lc3NhaWEvY2RrJztcclxuaW1wb3J0IHsgQXR0YWNobWVudCB9IGZyb20gJ0BtZXNzYWlhL2Nkay1iYXNlJztcclxuaW1wb3J0ICdjb2RlbWlycm9yL2FkZG9uL2VkaXQvY2xvc2V0YWcnO1xyXG5pbXBvcnQgJ2NvZGVtaXJyb3IvYWRkb24vZWRpdC9tYXRjaGJyYWNrZXRzJztcclxuaW1wb3J0ICdjb2RlbWlycm9yL2FkZG9uL3NlbGVjdGlvbi9hY3RpdmUtbGluZSc7XHJcbmltcG9ydCAnY29kZW1pcnJvci9tb2RlL2h0bWxtaXhlZC9odG1sbWl4ZWQnO1xyXG5pbXBvcnQgJ2NvZGVtaXJyb3IvbW9kZS9qYXZhc2NyaXB0L2phdmFzY3JpcHQnO1xyXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgVGVtcGxhdGVUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvdGVtcGxhdGUtdHlwZSc7XHJcbmltcG9ydCB7IENtc1NldHRpbmdzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Ntcy1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RlbXBsYXRlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVQcmV2aWV3IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RlbXBsYXRlLXByZXZpZXcnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90ZW1wbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVQcmV2aWV3RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vdGVtcGxhdGUtcHJldmlldy1kaWFsb2cvdGVtcGxhdGUtcHJldmlldy1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLXRlbXBsYXRlLWZvcm0nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi90ZW1wbGF0ZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi90ZW1wbGF0ZS1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0ZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVGb3JtQ29tcG9uZW50IGV4dGVuZHMgR2VuZXJpY1JlYWN0aXZlRm9ybUNvbXBvbmVudDxUZW1wbGF0ZSwgVGVtcGxhdGVTZXJ2aWNlPiB7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRlbXBsYXRlIHR5cGVcclxuXHQgKi9cclxuXHRwdWJsaWMgVGVtcGxhdGVUeXBlOiB0eXBlb2YgVGVtcGxhdGVUeXBlID0gVGVtcGxhdGVUeXBlO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZXR0aW5nczogQ21zU2V0dGluZ3NcclxuXHQgKi9cclxuXHRwdWJsaWMgc2V0dGluZ3M6IENtc1NldHRpbmdzID0gbmV3IENtc1NldHRpbmdzKCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgdGhlIGF0dGFjaG1lbnRzIGNvbnRyb2xcclxuXHQgKi9cclxuXHRnZXQgYXR0YWNobWVudHNDb250cm9sKCkgeyByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzLmF0dGFjaG1lbnRzOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEVkaXRvciBvcHRpb25zXHJcblx0ICovXHJcblx0cHVibGljIGVkaXRvck9wdGlvbnM6IGFueSA9IHtcclxuXHRcdGxpbmVOdW1iZXJzOiB0cnVlLFxyXG5cdFx0dGhlbWU6ICdtYXRlcmlhbCcsXHJcblx0XHRhdXRvQ2xvc2VUYWdzOiB0cnVlLFxyXG5cdFx0c3R5bGVBY3RpdmVMaW5lOiB0cnVlLFxyXG5cdFx0bW9kZTogJ3RleHQvaHRtbCcsXHJcblx0XHRwcm9maWxlOiAneGh0bWwnXHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogRWRpdG9yIG9wdGlvbnNcclxuXHQgKi9cclxuXHRwdWJsaWMganNvbkVkaXRvck9wdGlvbnM6IGFueSA9IHtcclxuXHRcdGxpbmVOdW1iZXJzOiB0cnVlLFxyXG5cdFx0dGhlbWU6ICdtYXRlcmlhbCcsXHJcblx0XHRhdXRvQ2xvc2VUYWdzOiB0cnVlLFxyXG5cdFx0c3R5bGVBY3RpdmVMaW5lOiB0cnVlLFxyXG5cdFx0bW9kZToge1xyXG5cdFx0XHRuYW1lOiBcImphdmFzY3JpcHRcIixcclxuXHRcdFx0anNvbjogdHJ1ZSxcclxuXHRcdFx0c3RhdGVtZW50SW5kZW50OiAyXHJcblx0XHR9LFxyXG5cdFx0cHJvZmlsZTogJ3hodG1sJyxcclxuXHRcdGxpbmVXcmFwcGluZzogdHJ1ZSxcclxuXHRcdGluZGVudFdpdGhUYWJzOiBmYWxzZSxcclxuXHRcdHRhYlNpemU6IDJcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnN0cnVjdG9yXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcm90ZWN0ZWQgc2VydmljZTogVGVtcGxhdGVTZXJ2aWNlLFxyXG5cdFx0cHJvdGVjdGVkIGZpbGVTZXJ2aWNlOiBGaWxlU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCBkaWFsb2c6IE1hdERpYWxvZyxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcblx0KSB7XHJcblx0XHRzdXBlcihUZW1wbGF0ZSwgc2VydmljZSwgcm91dGUsIGNoYW5nZURldGVjdG9yUmVmKVxyXG5cdFx0dGhpcy5zZXR0aW5ncyA9IHRoaXMuZ2V0U2VydmljZShDbXNTZXR0aW5ncyk7XHJcblxyXG5cdFx0aWYgKHRoaXMuc2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSB8fCB0aGlzLnNldHRpbmdzPy5tdWx0aUNsaWVudHMpIHtcclxuXHRcdFx0dGhpcy5pbmNsdWRlKCdDbGllbnRKb2lucycsIHRydWUpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGlzLnNldHRpbmdzPy5tdWx0aXRlbmFudGFibGUgfHwgdGhpcy5zZXR0aW5ncz8ubXVsdGlEZXBhcnRtZW50cykge1xyXG5cdFx0XHR0aGlzLmluY2x1ZGUoJ0RlcGFydG1lbnRKb2lucycsIHRydWUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVtb3ZlcyBhIGF0dGFjaG1lbnRcclxuXHQgKiBAcGFyYW0gYXR0YWNobWVudCBcclxuXHQgKi9cclxuXHRwdWJsaWMgcmVtb3ZlQXR0YWNobWVudChhdHRhY2htZW50OiBBdHRhY2htZW50KTogdm9pZCB7XHJcblx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzLml0ZW0/LmF0dGFjaG1lbnRzKSkge1xyXG5cdFx0XHR2YXIgaW5kZXggPSB0aGlzLmF0dGFjaG1lbnRzQ29udHJvbC52YWx1ZS5pbmRleE9mKGF0dGFjaG1lbnQsIDApO1xyXG5cdFx0XHRpZiAoaW5kZXggPiAtMSkge1xyXG5cdFx0XHRcdHRoaXMuZGlhbG9nU2VydmljZS5vcGVuQ29uZmlybSh7XHJcblx0XHRcdFx0XHRtZXNzYWdlOiAnTcO2Y2h0ZW4gU2llIGRpZXNlbiBBbmhhbmcgd2lya2xpY2ggbMO2c2NoZW4/JyxcclxuXHRcdFx0XHRcdHRpdGxlOiAnTMO2c2NoZW4gYmVzdMOkdGlnZW4nLFxyXG5cdFx0XHRcdFx0Y2FuY2VsQnV0dG9uOiAkbG9jYWxpemVgOkBAY2FuY2VsOkNhbmNlbGAsXHJcblx0XHRcdFx0XHRhY2NlcHRCdXR0b246ICRsb2NhbGl6ZWA6QEB5ZXM6WWVzYCxcclxuXHRcdFx0XHR9KS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoYWNjZXB0OiBib29sZWFuKSA9PiB7XHJcblx0XHRcdFx0XHRpZiAoYWNjZXB0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuYXR0YWNobWVudHNDb250cm9sLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuYXR0YWNobWVudHNDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5hdHRhY2htZW50c0NvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBsb2FkcyBhIGF0dGFjaG1lbnQgZmlsZVxyXG5cdCAqIEBwYXJhbSBmaWxlIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyB1cGxvYWRBdHRhY2htZW50KCRldmVudDogRXZlbnQpOiB2b2lkIHtcclxuXHRcdGxldCBmaWxlID0gKCgkZXZlbnQ/LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcyA/PyBbXSlbMF07XHJcblx0XHRpZiAoZmlsZSAhPSBudWxsKSB7XHJcblx0XHRcdC8vIHRoaXMuZmlsZVNlcnZpY2UudXBsb2FkKGZpbGUsIGB1cGxvYWRgLCB7IGNsaWVudElkOiB0aGlzLml0ZW0uY2xpZW50SWQsIHBhdGg6IGAke3RoaXMuaXRlbS5jbGllbnRJZCA/ICcnIDogJ2NvbW1vbi8nfWRvY3NgIH0pLnN1YnNjcmliZShldmVudCA9PiB7XHJcblx0XHRcdC8vIFx0aWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpIHtcclxuXHJcblx0XHRcdC8vIFx0XHQvKiBDYWxjdWxhdGUgdGhlIHByb2dyZXNzIHBlcmNlbnRhZ2UgKi9cclxuXHRcdFx0Ly8gXHRcdGNvbnN0IHBlcmNlbnREb25lID0gTWF0aC5yb3VuZCgxMDAgKiBldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCk7XHJcblxyXG5cdFx0XHQvLyBcdFx0LyogUGFzcyB0aGUgcGVyY2VudGFnZSBpbnRvIHRoZSBwcm9ncmVzcy1zdHJlYW0gKi9cclxuXHRcdFx0Ly8gXHRcdGNvbnNvbGUuaW5mbyhwZXJjZW50RG9uZSk7XHJcblx0XHRcdC8vIFx0fSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xyXG5cdFx0XHQvLyBcdFx0LyogQWRkIG91ciBhdHRhY2htZW50cyAqL1xyXG5cdFx0XHQvLyBcdFx0dGhpcy5hdHRhY2htZW50c0NvbnRyb2wuc2V0VmFsdWUoWy4uLnRoaXMuYXR0YWNobWVudHNDb250cm9sLnZhbHVlLCA8QXR0YWNobWVudD5ldmVudC5ib2R5XSk7XHJcblx0XHRcdC8vIFx0XHR0aGlzLmF0dGFjaG1lbnRzQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdC8vIFx0XHR0aGlzLmF0dGFjaG1lbnRzQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG5cdFx0XHQvLyBcdH1cclxuXHRcdFx0Ly8gfSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEb3dubG9hZHMgYSBhdHRhY2htZW50XHJcblx0ICogQHBhcmFtIGF0dGFjaG1lbnQgXHJcblx0ICovXHJcblx0cHVibGljIGRvd25sb2FkQXR0YWNobWVudChhdHRhY2htZW50OiBBdHRhY2htZW50KTogdm9pZCB7XHJcblx0XHRpZiAoYXR0YWNobWVudC5pZCkge1xyXG5cdFx0XHR0aGlzLnNlcnZpY2UuZG93bmxvYWQoYGRvd25sb2FkQXR0YWNobWVudC8ke2F0dGFjaG1lbnQuaWR9YCkuc3Vic2NyaWJlKHggPT4ge1xyXG5cdFx0XHRcdHNhdmVBcyhuZXcgQmxvYihbeC5kYXRhXSwgeyB0eXBlOiAnJyB9KSwgeC5maWxlbmFtZSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2hvd3MgdGVtcGxhdGUgcHJldmlld1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBzaG93UHJldmlldygpOiB2b2lkIHtcclxuXHRcdHRoaXMuZGlhbG9nLm9wZW4oVGVtcGxhdGVQcmV2aWV3RGlhbG9nQ29tcG9uZW50LCB7XHJcblx0XHRcdHdpZHRoOiB0aGlzLml0ZW0/LnR5cGUgPT0gVGVtcGxhdGVUeXBlLlBkZiA/ICcxMDIwcHgnIDogJzkyMHB4JyxcclxuXHRcdFx0ZGF0YTogbmV3IFRlbXBsYXRlUHJldmlldyh7XHJcblx0XHRcdFx0dGVtcGxhdGVJZDogdGhpcy5pdGVtPy5pZCxcclxuXHRcdFx0XHR0eXBlOiB0aGlzLml0ZW0/LnR5cGVcclxuXHRcdFx0fSksXHJcblx0XHRcdHBhbmVsQ2xhc3M6IFsnZGlhbG9nLWZ1bGwtc2NyZWVuJ11cclxuXHRcdH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCk7XHJcblx0fVxyXG59IiwiPHZkLWxheW91dC1uYXYgY29sb3I9XCJwcmltYXJ5XCIgW2JhY2tOYXZpZ2F0aW9uUm91dGVdPVwibGlzdFJvdXRlXCIgdG9vbGJhclRpdGxlPVwiVGVtcGxhdGVcIiBpMThuLXRvb2xiYXJUaXRsZT1cIkBAdGVtcGxhdGVcIiBbZWRpdE1vZGVdPVwiaXNFZGl0TW9kZVwiIFthY3Rpb25zXT1cInRvb2xiYXJBY3Rpb25zXCIgW2RhdGFdPVwiaXRlbVwiIFtjb250ZXh0XT1cInRoaXNcIj5cclxuXHQ8Zm9ybSAqbmdJZj1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBub3ZhbGlkYXRlIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cclxuXHRcdDx2ZC1sYXlvdXQtY2FyZC1vdmVyIGNsYXNzPVwiYWNjb3JkaW9uXCIgY2FyZFdpZHRoPVwiNzBcIiBjb2xvcj1cInByaW1hcnlcIiBmbGV4PlxyXG5cdFx0XHQ8bWF0LWFjY29yZGlvbiBbbXVsdGldPVwiIWlzRWRpdE1vZGVcIj5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gRGV0YWlscyAtLT5cclxuXHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbCBleHBhbmRlZD1cInRydWVcIiBpZD1cImRldGFpbHNcIj5cclxuXHRcdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdFx0PG1hdC1wYW5lbC10aXRsZSBpMThuPVwiQEBkZXRhaWxzXCI+RGV0YWlsczwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBtYXRFeHBhbnNpb25QYW5lbENvbnRlbnQ+XHJcblx0XHRcdFx0XHRcdDx2ZC1nZW5lcmljLWZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgW2ZpZWxkR3JvdXBzXT1cImZpZWxkR3JvdXBzXCIgW2ZpZWxkU2V0c109XCJbJ2RldGFpbHMnXVwiIFtjb250ZXh0XT1cInRoaXNcIj48L3ZkLWdlbmVyaWMtZm9ybT5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8bWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBpMThuPVwiQEBzYXZlXCI+U2F2ZTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJhcHBseSgpXCIgKm5nSWY9XCJpc0VkaXRNb2RlXCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCIgaTE4bj1cIkBAYXBwbHlcIj5BcHBseTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJiYWNrKClcIiBpMThuPVwiQEBjYW5jZWxcIj5DYW5jZWw8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gZmxleD48L3NwYW4+XHJcblx0XHRcdFx0XHQ8L21hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuXHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdDwhLS0gI3JlZ2lvbiBDb250ZW50IC0tPlxyXG5cdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsIGlkPVwiY29udGVudFwiPlxyXG5cdFx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGkxOG49XCJAQGNvbnRlbnRcIj5Db250ZW50PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L21hdC1wYW5lbC10aXRsZT5cclxuXHRcdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgbWF0RXhwYW5zaW9uUGFuZWxDb250ZW50PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGxheW91dC1tYXJnaW4+XHJcblx0XHRcdFx0XHRcdFx0PG5neC1jb2RlbWlycm9yIGZvcm1Db250cm9sTmFtZT1cImNvbnRlbnRcIiByb3dzPVwiMTYwXCIgW29wdGlvbnNdPVwiZWRpdG9yT3B0aW9uc1wiPjwvbmd4LWNvZGVtaXJyb3I+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDxtYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIGkxOG49XCJAQHNhdmVcIj5TYXZlPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cImFwcGx5KClcIiAqbmdJZj1cImlzRWRpdE1vZGVcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBpMThuPVwiQEBhcHBseVwiPkFwcGx5PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cInNob3dQcmV2aWV3KClcIiAqbmdJZj1cImlzRWRpdE1vZGVcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmcgfHwgIWZvcm0ucHJpc3RpbmVcIiBpMThuPVwiQEBwcmV2aWV3XCI+UHJldmlldzwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJiYWNrKClcIiBpMThuPVwiQEBjYW5jZWxcIj5DYW5jZWw8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gZmxleD48L3NwYW4+XHJcblx0XHRcdFx0XHQ8L21hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuXHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdDwhLS0gI3JlZ2lvbiBDb250ZW50IC0tPlxyXG5cdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsIGlkPVwidGVzdERhdGFcIj5cclxuXHRcdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdFx0PG1hdC1wYW5lbC10aXRsZT5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBpMThuPVwiQEB0ZXN0RGF0YVwiPlRlc3QgRGF0YTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PC9tYXQtcGFuZWwtdGl0bGU+XHJcblx0XHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIG1hdEV4cGFuc2lvblBhbmVsQ29udGVudD5cclxuXHRcdFx0XHRcdFx0PGRpdiBsYXlvdXQtbWFyZ2luPlxyXG5cdFx0XHRcdFx0XHRcdDxuZ3gtY29kZW1pcnJvciBmb3JtQ29udHJvbE5hbWU9XCJkdW1teURhdGFcIiByb3dzPVwiMTIwXCIgW29wdGlvbnNdPVwianNvbkVkaXRvck9wdGlvbnNcIj48L25neC1jb2RlbWlycm9yPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8bWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBpMThuPVwiQEBzYXZlXCI+U2F2ZTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJhcHBseSgpXCIgKm5nSWY9XCJpc0VkaXRNb2RlXCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCIgaTE4bj1cIkBAYXBwbHlcIj5BcHBseTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJzaG93UHJldmlldygpXCIgKm5nSWY9XCJpc0VkaXRNb2RlXCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nIHx8ICFmb3JtLnByaXN0aW5lXCIgaTE4bj1cIkBAcHJldmlld1wiPlByZXZpZXc8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiYmFjaygpXCIgaTE4bj1cIkBAY2FuY2VsXCI+Q2FuY2VsPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGZsZXg+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9tYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gQXVkaXQgLS0+XHJcblx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwgaWQ9XCJhdWRpdFwiICpuZ0lmPVwiaXNFZGl0TW9kZVwiPlxyXG5cdFx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGkxOG49XCJAQGF1ZGl0XCI+QXVkaXQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBtYXRFeHBhbnNpb25QYW5lbENvbnRlbnQ+XHJcblx0XHRcdFx0XHRcdDx2ZC1hdWRpdCBbZW50aXR5XT1cIml0ZW1cIj4gPC92ZC1hdWRpdD5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8bWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIChjbGljayk9XCJiYWNrKClcIiBpMThuPVwiQEBjbG9zZVwiPkNsb3NlPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGZsZXg+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9tYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cdFx0XHQ8L21hdC1hY2NvcmRpb24+XHJcblx0XHQ8L3ZkLWxheW91dC1jYXJkLW92ZXI+XHJcblx0PC9mb3JtPlxyXG48L3ZkLWxheW91dC1uYXY+Il19
@@ -657,11 +657,11 @@ class ContentFormComponent extends GenericReactiveFormComponent {
657
657
  }
658
658
  }
659
659
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ContentFormComponent, deps: [{ token: ContentService }, { token: i2.FileService }, { token: i3.HttpClient }, { token: i3$1.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
660
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: ContentFormComponent, selector: "app-content-form", viewQueries: [{ propertyName: "formElement", first: true, predicate: ["form"], descendants: true }, { propertyName: "editorComponent", first: true, predicate: ["editor"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n\t\t\t\t\t\t\t<ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n\t\t\t\t\t\t\t\t<mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\" flex>\r\n\t\t\t\t\t\t\t\t\t<mat-label>{{field.label}}</mat-label>\r\n\t\t\t\t\t\t\t\t\t<editor [formControlName]=\"field.name\" [init]=\"editorConfig\" tinyMatFormControl flex></editor>\r\n\t\t\t\t\t\t\t\t\t<mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n\t\t\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of formGroup.controls[field.name]['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button *ngIf=\"isEditMode || true\" (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [item]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { kind: "directive", type: i2.RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: ["formGroup", "rxwebForm"] }, { kind: "directive", type: i2.RxFormControlDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["rxalpha", "rxalphaNumeric", "rxascii", "rxcompare", "rxcompose", "rxcontains", "rxcreditCard", "rxdataUri", "rxdifferent", "rxdigit", "rxemail", "rxendsWith", "rxeven", "rxextension", "rxfactor", "rxfileSize", "rxgreaterThanEqualTo", "rxgreaterThan", "rxhexColor", "rxjson", "rxlatitude", "rxlatLong", "rxleapYear", "rxlessThan", "rxlessThanEqualTo", "rxlongitude", "rxlowerCase", "rxmac", "rxmaxDate", "rxmaxLength", "rxmaxNumber", "rxminDate", "rxminLength", "rxminNumber", "rxnumeric", "rxodd", "rxpassword", "rxport", "rxprimeNumber", "rxrequired", "rxrange", "rxrule", "rxstartsWith", "rxtime", "rxupperCase", "rxurl", "rxunique", "rxnotEmpty", "rxcusip", "rxgrid", "rxdate"] }, { kind: "directive", type: i7.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i7.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i7.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i7.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i9.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i10.EditorComponent, selector: "editor", inputs: ["cloudChannel", "apiKey", "licenseKey", "init", "id", "initialValue", "outputFormat", "inline", "tagName", "plugins", "toolbar", "modelEvents", "allowedEvents", "ignoreEvents", "disabled"] }, { kind: "component", type: i2.VdLayoutNavComponent, selector: "vd-layout-nav", inputs: ["toolbarTitle", "editMode", "actions", "data", "context", "icon", "logo", "color", "hideToggle", "backNavigationRoute", "navigationRoute"], outputs: ["reload"] }, { kind: "component", type: i2.VdLayoutCardOverComponent, selector: "vd-layout-card-over", inputs: ["cardTitle", "cardSubtitle", "cardWidth", "color"] }, { kind: "directive", type: i2.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: i2.MatFormFieldEditorDirective, selector: "[tinyMatFormControl]", inputs: ["disabled", "id", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["editorChange"] }, { kind: "directive", type: i2.VdEditorDirective, selector: "[vd-editor]ng-template" }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "component", type: i2.VdGenericFormComponent, selector: "vd-generic-form", inputs: ["formGroup", "classType", "formDefinition", "fieldGroups", "groupName", "fieldSets", "context", "debugValue", "readonly", "separatorKeysCodes"] }, { kind: "component", type: i11.VdAuditComponent, selector: "vd-audit", inputs: ["item"] }] });
660
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: ContentFormComponent, selector: "app-content-form", viewQueries: [{ propertyName: "formElement", first: true, predicate: ["form"], descendants: true }, { propertyName: "editorComponent", first: true, predicate: ["editor"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n\t\t\t\t\t\t\t<ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n\t\t\t\t\t\t\t\t<mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\" flex>\r\n\t\t\t\t\t\t\t\t\t<mat-label>{{field.label}}</mat-label>\r\n\t\t\t\t\t\t\t\t\t<editor [formControlName]=\"field.name\" [init]=\"editorConfig\" tinyMatFormControl flex></editor>\r\n\t\t\t\t\t\t\t\t\t<mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n\t\t\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of formGroup.controls[field.name]['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button *ngIf=\"isEditMode || true\" (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [entity]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { kind: "directive", type: i2.RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: ["formGroup", "rxwebForm"] }, { kind: "directive", type: i2.RxFormControlDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["rxalpha", "rxalphaNumeric", "rxascii", "rxcompare", "rxcompose", "rxcontains", "rxcreditCard", "rxdataUri", "rxdifferent", "rxdigit", "rxemail", "rxendsWith", "rxeven", "rxextension", "rxfactor", "rxfileSize", "rxgreaterThanEqualTo", "rxgreaterThan", "rxhexColor", "rxjson", "rxlatitude", "rxlatLong", "rxleapYear", "rxlessThan", "rxlessThanEqualTo", "rxlongitude", "rxlowerCase", "rxmac", "rxmaxDate", "rxmaxLength", "rxmaxNumber", "rxminDate", "rxminLength", "rxminNumber", "rxnumeric", "rxodd", "rxpassword", "rxport", "rxprimeNumber", "rxrequired", "rxrange", "rxrule", "rxstartsWith", "rxtime", "rxupperCase", "rxurl", "rxunique", "rxnotEmpty", "rxcusip", "rxgrid", "rxdate"] }, { kind: "directive", type: i7.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i7.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i7.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i7.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i9.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i10.EditorComponent, selector: "editor", inputs: ["cloudChannel", "apiKey", "licenseKey", "init", "id", "initialValue", "outputFormat", "inline", "tagName", "plugins", "toolbar", "modelEvents", "allowedEvents", "ignoreEvents", "disabled"] }, { kind: "component", type: i2.VdLayoutNavComponent, selector: "vd-layout-nav", inputs: ["toolbarTitle", "editMode", "actions", "data", "context", "icon", "logo", "color", "hideToggle", "backNavigationRoute", "navigationRoute"], outputs: ["reload"] }, { kind: "component", type: i2.VdLayoutCardOverComponent, selector: "vd-layout-card-over", inputs: ["cardTitle", "cardSubtitle", "cardWidth", "color"] }, { kind: "directive", type: i2.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: i2.MatFormFieldEditorDirective, selector: "[tinyMatFormControl]", inputs: ["disabled", "id", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["editorChange"] }, { kind: "directive", type: i2.VdEditorDirective, selector: "[vd-editor]ng-template" }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "component", type: i2.VdGenericFormComponent, selector: "vd-generic-form", inputs: ["formGroup", "classType", "formDefinition", "fieldGroups", "groupName", "fieldSets", "context", "debugValue", "readonly", "separatorKeysCodes"] }, { kind: "component", type: i11.VdAuditComponent, selector: "vd-audit", inputs: ["entity"] }] });
661
661
  }
662
662
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ContentFormComponent, decorators: [{
663
663
  type: Component,
664
- args: [{ selector: 'app-content-form', template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n\t\t\t\t\t\t\t<ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n\t\t\t\t\t\t\t\t<mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\" flex>\r\n\t\t\t\t\t\t\t\t\t<mat-label>{{field.label}}</mat-label>\r\n\t\t\t\t\t\t\t\t\t<editor [formControlName]=\"field.name\" [init]=\"editorConfig\" tinyMatFormControl flex></editor>\r\n\t\t\t\t\t\t\t\t\t<mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n\t\t\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of formGroup.controls[field.name]['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button *ngIf=\"isEditMode || true\" (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [item]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>" }]
664
+ args: [{ selector: 'app-content-form', template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n\t\t\t\t\t\t\t<ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n\t\t\t\t\t\t\t\t<mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\" flex>\r\n\t\t\t\t\t\t\t\t\t<mat-label>{{field.label}}</mat-label>\r\n\t\t\t\t\t\t\t\t\t<editor [formControlName]=\"field.name\" [init]=\"editorConfig\" tinyMatFormControl flex></editor>\r\n\t\t\t\t\t\t\t\t\t<mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n\t\t\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of formGroup.controls[field.name]['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button *ngIf=\"isEditMode || true\" (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [entity]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>" }]
665
665
  }], ctorParameters: () => [{ type: ContentService }, { type: i2.FileService }, { type: i3.HttpClient }, { type: i3$1.ActivatedRoute }, { type: i0.ChangeDetectorRef }], propDecorators: { formElement: [{
666
666
  type: ViewChild,
667
667
  args: ['form', { static: false }]
@@ -1592,11 +1592,11 @@ class TemplateFormComponent extends GenericReactiveFormComponent {
1592
1592
  }).afterClosed().subscribe();
1593
1593
  }
1594
1594
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TemplateFormComponent, deps: [{ token: TemplateService }, { token: i2.FileService }, { token: i2$1.MatDialog }, { token: i3$1.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1595
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: TemplateFormComponent, selector: "app-template-form", usesInheritance: true, ngImport: i0, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Template\" i18n-toolbarTitle=\"@@template\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [fieldSets]=\"['details']\" [context]=\"this\"></vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"content\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@content\">Content</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"content\" rows=\"160\" [options]=\"editorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"testData\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@testData\">Test Data</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"dummyData\" rows=\"120\" [options]=\"jsonEditorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [item]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>", styles: ["codemirror{width:100%}.CodeMirror{height:500px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6$1.CodemirrorComponent, selector: "ngx-codemirror", inputs: ["className", "name", "autoFocus", "options", "preserveScrollPosition"], outputs: ["cursorActivity", "focusChange", "scroll", "drop", "codeMirrorLoaded"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { kind: "directive", type: i2.RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: ["formGroup", "rxwebForm"] }, { kind: "directive", type: i2.RxFormControlDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["rxalpha", "rxalphaNumeric", "rxascii", "rxcompare", "rxcompose", "rxcontains", "rxcreditCard", "rxdataUri", "rxdifferent", "rxdigit", "rxemail", "rxendsWith", "rxeven", "rxextension", "rxfactor", "rxfileSize", "rxgreaterThanEqualTo", "rxgreaterThan", "rxhexColor", "rxjson", "rxlatitude", "rxlatLong", "rxleapYear", "rxlessThan", "rxlessThanEqualTo", "rxlongitude", "rxlowerCase", "rxmac", "rxmaxDate", "rxmaxLength", "rxmaxNumber", "rxminDate", "rxminLength", "rxminNumber", "rxnumeric", "rxodd", "rxpassword", "rxport", "rxprimeNumber", "rxrequired", "rxrange", "rxrule", "rxstartsWith", "rxtime", "rxupperCase", "rxurl", "rxunique", "rxnotEmpty", "rxcusip", "rxgrid", "rxdate"] }, { kind: "directive", type: i7.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i7.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i7.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i7.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.VdLayoutNavComponent, selector: "vd-layout-nav", inputs: ["toolbarTitle", "editMode", "actions", "data", "context", "icon", "logo", "color", "hideToggle", "backNavigationRoute", "navigationRoute"], outputs: ["reload"] }, { kind: "component", type: i2.VdLayoutCardOverComponent, selector: "vd-layout-card-over", inputs: ["cardTitle", "cardSubtitle", "cardWidth", "color"] }, { kind: "directive", type: i2.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "component", type: i2.VdGenericFormComponent, selector: "vd-generic-form", inputs: ["formGroup", "classType", "formDefinition", "fieldGroups", "groupName", "fieldSets", "context", "debugValue", "readonly", "separatorKeysCodes"] }, { kind: "component", type: i11.VdAuditComponent, selector: "vd-audit", inputs: ["item"] }], encapsulation: i0.ViewEncapsulation.None });
1595
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: TemplateFormComponent, selector: "app-template-form", usesInheritance: true, ngImport: i0, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Template\" i18n-toolbarTitle=\"@@template\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [fieldSets]=\"['details']\" [context]=\"this\"></vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"content\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@content\">Content</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"content\" rows=\"160\" [options]=\"editorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"testData\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@testData\">Test Data</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"dummyData\" rows=\"120\" [options]=\"jsonEditorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [entity]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>", styles: ["codemirror{width:100%}.CodeMirror{height:500px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6$1.CodemirrorComponent, selector: "ngx-codemirror", inputs: ["className", "name", "autoFocus", "options", "preserveScrollPosition"], outputs: ["cursorActivity", "focusChange", "scroll", "drop", "codeMirrorLoaded"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { kind: "directive", type: i2.RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: ["formGroup", "rxwebForm"] }, { kind: "directive", type: i2.RxFormControlDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["rxalpha", "rxalphaNumeric", "rxascii", "rxcompare", "rxcompose", "rxcontains", "rxcreditCard", "rxdataUri", "rxdifferent", "rxdigit", "rxemail", "rxendsWith", "rxeven", "rxextension", "rxfactor", "rxfileSize", "rxgreaterThanEqualTo", "rxgreaterThan", "rxhexColor", "rxjson", "rxlatitude", "rxlatLong", "rxleapYear", "rxlessThan", "rxlessThanEqualTo", "rxlongitude", "rxlowerCase", "rxmac", "rxmaxDate", "rxmaxLength", "rxmaxNumber", "rxminDate", "rxminLength", "rxminNumber", "rxnumeric", "rxodd", "rxpassword", "rxport", "rxprimeNumber", "rxrequired", "rxrange", "rxrule", "rxstartsWith", "rxtime", "rxupperCase", "rxurl", "rxunique", "rxnotEmpty", "rxcusip", "rxgrid", "rxdate"] }, { kind: "directive", type: i7.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i7.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i7.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i7.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.VdLayoutNavComponent, selector: "vd-layout-nav", inputs: ["toolbarTitle", "editMode", "actions", "data", "context", "icon", "logo", "color", "hideToggle", "backNavigationRoute", "navigationRoute"], outputs: ["reload"] }, { kind: "component", type: i2.VdLayoutCardOverComponent, selector: "vd-layout-card-over", inputs: ["cardTitle", "cardSubtitle", "cardWidth", "color"] }, { kind: "directive", type: i2.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "component", type: i2.VdGenericFormComponent, selector: "vd-generic-form", inputs: ["formGroup", "classType", "formDefinition", "fieldGroups", "groupName", "fieldSets", "context", "debugValue", "readonly", "separatorKeysCodes"] }, { kind: "component", type: i11.VdAuditComponent, selector: "vd-audit", inputs: ["entity"] }], encapsulation: i0.ViewEncapsulation.None });
1596
1596
  }
1597
1597
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TemplateFormComponent, decorators: [{
1598
1598
  type: Component,
1599
- args: [{ selector: 'app-template-form', encapsulation: ViewEncapsulation.None, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Template\" i18n-toolbarTitle=\"@@template\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [fieldSets]=\"['details']\" [context]=\"this\"></vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"content\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@content\">Content</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"content\" rows=\"160\" [options]=\"editorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"testData\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@testData\">Test Data</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"dummyData\" rows=\"120\" [options]=\"jsonEditorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [item]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>", styles: ["codemirror{width:100%}.CodeMirror{height:500px}\n"] }]
1599
+ args: [{ selector: 'app-template-form', encapsulation: ViewEncapsulation.None, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Template\" i18n-toolbarTitle=\"@@template\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [fieldSets]=\"['details']\" [context]=\"this\"></vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"content\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@content\">Content</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"content\" rows=\"160\" [options]=\"editorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"testData\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@testData\">Test Data</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"dummyData\" rows=\"120\" [options]=\"jsonEditorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [entity]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>", styles: ["codemirror{width:100%}.CodeMirror{height:500px}\n"] }]
1600
1600
  }], ctorParameters: () => [{ type: TemplateService }, { type: i2.FileService }, { type: i2$1.MatDialog }, { type: i3$1.ActivatedRoute }, { type: i0.ChangeDetectorRef }] });
1601
1601
 
1602
1602
  /**