@messaia/cdk-cms 15.0.0-rc40 → 15.0.0-rc41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/comnponents/content-form/content-form.component.mjs +3 -3
- package/esm2020/lib/comnponents/template-form/template-form.component.mjs +24 -29
- package/esm2020/lib/models/content-variable.mjs +5 -9
- package/esm2020/lib/models/content.mjs +13 -12
- package/esm2020/lib/models/template-client.mjs +23 -0
- package/esm2020/lib/models/template-department.mjs +23 -0
- package/esm2020/lib/models/template.mjs +85 -18
- package/esm2020/lib/public-api.mjs +3 -1
- package/fesm2015/messaia-cdk-cms.mjs +173 -67
- package/fesm2015/messaia-cdk-cms.mjs.map +1 -1
- package/fesm2020/messaia-cdk-cms.mjs +171 -67
- package/fesm2020/messaia-cdk-cms.mjs.map +1 -1
- package/lib/comnponents/template-form/template-form.component.d.ts +0 -4
- package/lib/models/content-variable.d.ts +0 -4
- package/lib/models/content.d.ts +0 -4
- package/lib/models/template-client.d.ts +22 -0
- package/lib/models/template-department.d.ts +22 -0
- package/lib/models/template.d.ts +7 -1
- package/lib/public-api.d.ts +2 -0
- package/package.json +2 -2
|
@@ -234,10 +234,10 @@ export class ContentFormComponent extends GenericReactiveFormComponent {
|
|
|
234
234
|
}
|
|
235
235
|
}
|
|
236
236
|
ContentFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: ContentFormComponent, deps: [{ token: i1.ContentService }, { token: i2.FileService }, { token: i3.HttpClient }, { token: i4.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
237
|
-
ContentFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", 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<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n\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<mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\" flex>\r\n\t\t\t\t\t\t\t\t<mat-label>{{field.header}}</mat-label>\r\n\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<mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n\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</mat-form-field>\r\n\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t</vd-generic-form>\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\" (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<vd-audit [item]=\"item\"> </vd-audit>\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: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i7.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i7.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], 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", "id", "modelEvents", "disabled", "initialValue", "init", "inline", "outputFormat", "tagName", "plugins", "toolbar", "allowedEvents", "ignoreEvents"] }, { 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"] }] });
|
|
237
|
+
ContentFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", 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.header}}</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\" (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: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i7.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { 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] ", inputs: ["disabled", "disableRipple", "color"], 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", "id", "modelEvents", "disabled", "initialValue", "init", "inline", "outputFormat", "tagName", "plugins", "toolbar", "allowedEvents", "ignoreEvents"] }, { 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"] }] });
|
|
238
238
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: ContentFormComponent, decorators: [{
|
|
239
239
|
type: Component,
|
|
240
|
-
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<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n\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<mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\" flex>\r\n\t\t\t\t\t\t\t\t<mat-label>{{field.header}}</mat-label>\r\n\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<mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n\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</mat-form-field>\r\n\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t</vd-generic-form>\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\" (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<vd-audit [item]=\"item\"> </vd-audit>\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>" }]
|
|
240
|
+
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.header}}</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\" (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>" }]
|
|
241
241
|
}], ctorParameters: function () { return [{ type: i1.ContentService }, { type: i2.FileService }, { type: i3.HttpClient }, { type: i4.ActivatedRoute }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { formElement: [{
|
|
242
242
|
type: ViewChild,
|
|
243
243
|
args: ['form', { static: false }]
|
|
@@ -245,4 +245,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
|
|
|
245
245
|
type: ViewChild,
|
|
246
246
|
args: ['editor', { static: false }]
|
|
247
247
|
}] } });
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9jb250ZW50LWZvcm0vY29udGVudC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9jb250ZW50LWZvcm0vY29udGVudC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7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Z0NBQ0MsSUFBSSxFQUFFLFVBQVU7Z0NBQ2hCLElBQUksRUFBRSxnQkFBZ0I7Z0NBQ3RCLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDOzZCQUN6RDt5QkFDRCxDQUFDLENBQUM7b0JBQ0osQ0FBQztpQkFDRCxDQUFDLENBQUM7WUFDSixDQUFDO1NBQ0QsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDckM7SUFDRixDQUFDOztpSEE5UFcsb0JBQW9CO3FHQUFwQixvQkFBb0IsZ1JDbkJqQyxrc0ZBNkNnQjsyRkQxQkgsb0JBQW9CO2tCQUpoQyxTQUFTOytCQUNDLGtCQUFrQjtxTkEyQ1UsV0FBVztzQkFBaEQsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUtJLGVBQWU7c0JBQXRELFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPTU1BLCBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudFR5cGUsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEVudW1TZXJ2aWNlLCBGaWxlU2VydmljZSwgR2VuZXJpY1JlYWN0aXZlRm9ybUNvbXBvbmVudCB9IGZyb20gJ0BtZXNzYWlhL2Nkayc7XHJcbmltcG9ydCB7IEVkaXRvckNvbXBvbmVudCB9IGZyb20gJ0B0aW55bWNlL3RpbnltY2UtYW5ndWxhcic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb250ZW50VHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2NvbnRlbnQtdHlwZSc7XHJcbmltcG9ydCB7IFdyYXBUYWcgfSBmcm9tICcuLi8uLi9lbnVtcy93cmFwLXRhZyc7XHJcbmltcG9ydCB7IENtc1NldHRpbmdzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Ntcy1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IENvbnRlbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29udGVudCc7XHJcbmltcG9ydCB7IENvbnRlbnRDbGllbnQsIENvbnRlbnREZXBhcnRtZW50IH0gZnJvbSAnLi4vLi4vcHVibGljLWFwaSc7XHJcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGVudC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLWNvbnRlbnQtZm9ybScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2NvbnRlbnQtZm9ybS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRlbnRGb3JtQ29tcG9uZW50IGV4dGVuZHMgR2VuZXJpY1JlYWN0aXZlRm9ybUNvbXBvbmVudDxDb250ZW50LCBDb250ZW50U2VydmljZT4ge1xyXG5cclxuXHQvKipcclxuXHQgKiBSb3V0ZXIgU3Vic2NyaXB0aW9uXHJcblx0ICovXHJcblx0cHVibGljIHJvdXRlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBzdGF0dXMgb2YgdGhlIGlzc3VlXHJcblx0ICovXHJcblx0cHVibGljIHR5cGU6IENvbnRlbnRUeXBlO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb250ZW50IHN0YXR1c1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBDb250ZW50VHlwZTogdHlwZW9mIENvbnRlbnRUeXBlID0gQ29udGVudFR5cGU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdyYXAgdGFnIGVudW1cclxuXHQgKi9cclxuXHRwdWJsaWMgd3JhcFRhZ3M6IGFueVtdID0gRW51bVNlcnZpY2UudG9BcnJheShXcmFwVGFnKTtcclxuXHJcblx0LyoqXHJcblx0ICogU2VwYXJhdG9yIGtleXMgY29kZXNcclxuXHQgKi9cclxuXHRwdWJsaWMgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZXR0aW5nczogQ21zU2V0dGluZ3NcclxuXHQgKi9cclxuXHRwdWJsaWMgc2V0dGluZ3M6IENtc1NldHRpbmdzID0gbmV3IENtc1NldHRpbmdzKCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgdGhlIGFsaWFzZXMgY29udHJvbFxyXG5cdCAqL1xyXG5cdGdldCBhbGlhc2VzQ29udHJvbCgpIHsgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scy5hbGlhc2VzOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmIHRvIGZvcm0gaHRtbCBlbGVtZW50XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZCgnZm9ybScsIHsgc3RhdGljOiBmYWxzZSB9KSBmb3JtRWxlbWVudDogSFRNTEZvcm1FbGVtZW50O1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZiB0byB0aW55bWNlIGVkaXRvclxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoJ2VkaXRvcicsIHsgc3RhdGljOiBmYWxzZSB9KSBlZGl0b3JDb21wb25lbnQ6IEVkaXRvckNvbXBvbmVudDtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByb3RlY3RlZCBzZXJ2aWNlOiBDb250ZW50U2VydmljZSxcclxuXHRcdHByb3RlY3RlZCBmaWxlU2VydmljZTogRmlsZVNlcnZpY2UsXHJcblx0XHRwcm90ZWN0ZWQgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcblx0KSB7XHJcblx0XHRzdXBlcihDb250ZW50LCBzZXJ2aWNlLCByb3V0ZSwgY2hhbmdlRGV0ZWN0b3JSZWYpXHJcblx0XHR0aGlzLnNldHRpbmdzID0gdGhpcy5nZXRTZXJ2aWNlKENtc1NldHRpbmdzKTtcclxuXHJcblx0XHRpZiAodGhpcy5zZXR0aW5ncz8ubXVsdGl0ZW5hbnRhYmxlIHx8IHRoaXMuc2V0dGluZ3M/Lm11bHRpQ2xpZW50cykge1xyXG5cdFx0XHR0aGlzLmluY2x1ZGUoJ0NsaWVudEpvaW5zJywgdHJ1ZSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuc2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSB8fCB0aGlzLnNldHRpbmdzPy5tdWx0aURlcGFydG1lbnRzKSB7XHJcblx0XHRcdHRoaXMuaW5jbHVkZSgnRGVwYXJ0bWVudEpvaW5zJywgdHJ1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBkYXRhLWJvdW5kIHByb3BlcnRpZXMgXHJcblx0ICogb2YgYSBkaXJlY3RpdmUgYXJlIGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0LyogRmlsdGVyIGJ5IHN0YXR1cywgaWYgYW55ICovXHJcblx0XHR0aGlzLnJvdXRlU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXM6IHsgdHlwZTogc3RyaW5nIH0pID0+IHtcclxuXHRcdFx0dGhpcy50eXBlID0gRW51bVNlcnZpY2UucGFyc2UoQ29udGVudFR5cGUsIHBhcmFtcy50eXBlKTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8qIEdldCBzb21lIHByb3BzIGZyb20gcm91dGUgc25hcHNob3QgKi9cclxuXHRcdHRoaXMucm91dGUuZGF0YS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG5cdFx0XHR0aGlzLmZvcm1WYWxpZGF0aW9uID0gZGF0YS5mb3JtVmFsaWRhdGlvbjtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHN1cGVyLm5nT25Jbml0KCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhbGlhcyBpcyBhdmFpbGFibGUuXHJcblx0ICovXHJcblx0cHVibGljIGlzQWxpYXNBdmFpbGFibGUoKSB7XHJcblx0XHR0aGlzLnNlcnZpY2UuaXNBbGlhc0F2YWlsYWJsZSh0aGlzLml0ZW0pLnN1YnNjcmliZSgoeDogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHR0aGlzLmZvcm1FbGVtZW50LmZvcm0uY29udHJvbHNbJ2FsaWFzJ10uc2V0RXJyb3JzKHggPyBudWxsIDogeyAnaW5Vc2UnOiB0cnVlIH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXQgY2xpZW50XHJcblx0ICovXHJcblx0cHVibGljIHNldENsaWVudCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuaXNFZGl0b3JJbml0aWFsemVkID0gZmFsc2U7XHJcblx0XHR0aGlzLmNvbmZpZ0VkaXRvcigpO1xyXG5cdFx0dGhpcy5lZGl0b3JDb21wb25lbnQ/LmVkaXRvcj8uc2V0Q29udGVudCh0aGlzLml0ZW0uYm9keSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBZGQgYSBhbGlhc2VzIHRvIHRoZSBjdXJyZW50IGZpZWxkXHJcblx0ICogQHBhcmFtIGV2ZW50IFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhZGRBbGlhc2VzKGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCk6IHZvaWQge1xyXG5cdFx0LyogQWRkIG91ciBhbGlhc3MgKi9cclxuXHRcdGlmICgoZXZlbnQudmFsdWUgfHwgJycpLnRyaW0oKSkge1xyXG5cdFx0XHR0aGlzLmFsaWFzZXNDb250cm9sLnNldFZhbHVlKFsuLi50aGlzLmFsaWFzZXNDb250cm9sLnZhbHVlLCBldmVudC52YWx1ZS50cmltKCldKTtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdHRoaXMuYWxpYXNlc0NvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBSZXNldCB0aGUgaW5wdXQgdmFsdWUgKi9cclxuXHRcdGlmIChldmVudC5pbnB1dCkge1xyXG5cdFx0XHRldmVudC5pbnB1dC52YWx1ZSA9ICcnO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVtb3ZlcyBhIGFsaWFzZXNcclxuXHQgKiBAcGFyYW0gYWxpYXNzIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZW1vdmVBbGlhc2VzKGFsaWFzczogc3RyaW5nKTogdm9pZCB7XHJcblx0XHRjb25zdCBpbmRleCA9IHRoaXMuYWxpYXNlc0NvbnRyb2wudmFsdWUuaW5kZXhPZihhbGlhc3MpO1xyXG5cdFx0aWYgKGluZGV4ID49IDApIHtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cdFx0XHR0aGlzLmFsaWFzZXNDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgVGVtcGxhdGVcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgbmV3SW5zdGFuY2UoKTogQ29udGVudCB7XHJcblx0XHRsZXQgaXRlbSA9IE9iamVjdC5hc3NpZ24obmV3IENvbnRlbnQoKSwgPENvbnRlbnQ+e1xyXG5cdFx0XHR0eXBlOiB0aGlzLnR5cGUsXHJcblx0XHRcdHdyYXBUYWc6IHRoaXMudHlwZSA9PSBDb250ZW50VHlwZS5CbG9jayA/ICcnIDogV3JhcFRhZy5TZWN0aW9uLFxyXG5cdFx0XHRzaG93VGl0bGU6IHRoaXMudHlwZSA9PSBDb250ZW50VHlwZS5CbG9jayA/IGZhbHNlIDogdHJ1ZVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0LyogR2V0IGNsaWVudElkICovXHJcblx0XHRpZiAoIXRoaXMuaXNFZGl0TW9kZSkge1xyXG5cdFx0XHRpZiAodGhpcy5pc0NsaWVudEFkbWluIHx8IHRoaXMuaXNEZXBhcnRtZW50QWRtaW4pIHtcclxuXHRcdFx0XHRpdGVtLmNsaWVudEpvaW5zID0gW25ldyBDb250ZW50Q2xpZW50KHsgY2xpZW50SWQ6IHRoaXMuY3VycmVudFVzZXIuY2xpZW50SWQgfSldO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAodGhpcy5pc0RlcGFydG1lbnRBZG1pbikge1xyXG5cdFx0XHRcdGl0ZW0uZGVwYXJ0bWVudEpvaW5zID0gW25ldyBDb250ZW50RGVwYXJ0bWVudCh7IGRlcGFydG1lbnRJZDogdGhpcy5jdXJyZW50VXNlci5kZXBhcnRtZW50SWQgfSldO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0LyogSW5pdCB0aGUgdGlueW1jZSBlZGl0b3IgKi9cclxuXHRcdHRoaXMuaXNFZGl0b3JJbml0aWFsemVkID0gZmFsc2U7XHJcblx0XHRyZXR1cm4gaXRlbTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZm9ybSBoYXMgYnVpbHQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uQWZ0ZXJGb3JtQnVpbGQoKTogdm9pZCB7XHJcblx0XHRzdXBlci5vbkFmdGVyRm9ybUJ1aWxkKCk7XHJcblx0XHR0aGlzLmNvbmZpZ0VkaXRvcigpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29uZmlndXJlcyB0aGUgdGlueW1jZSBlZGl0b3JcclxuXHQgKi9cclxuXHRwcml2YXRlIGNvbmZpZ0VkaXRvcigpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnNldHRpbmdzPy5tdWx0aXRlbmFudGFibGUgJiYgdGhpcy5mb3JtVmFsdWU/LmNsaWVudElkICYmIHRoaXMuc2V0dGluZ3M/LnN0eWxlVXJsRW5kcG9pbnQpIHtcclxuXHRcdFx0dGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLnNldHRpbmdzLnN0eWxlVXJsRW5kcG9pbnQodGhpcy5mb3JtVmFsdWUuY2xpZW50SWQpKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdG5leHQ6ICh4OiB7IHZhbHVlOiBzdHJpbmcgfSkgPT4gc3VwZXIuaW5pdEVkaXRvcihPYmplY3QuYXNzaWduKHRoaXMuZ2V0RWRpdG9yQ29uZmlnKCksIHsgY29udGVudF9jc3M6IHgudmFsdWUgfSkpLFxyXG5cdFx0XHRcdGVycm9yOiAoKSA9PiBzdXBlci5pbml0RWRpdG9yKE9iamVjdC5hc3NpZ24odGhpcy5nZXRFZGl0b3JDb25maWcoKSkpXHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0c3VwZXIuaW5pdEVkaXRvcih0aGlzLmdldEVkaXRvckNvbmZpZygpKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgY29uZmlnIGZvciB0aGUgZWRpdG9yXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBnZXRFZGl0b3JDb25maWcoKTogYW55IHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdHRvb2xiYXI6IGAke3RoaXMuZWRpdG9yVG9vbGJhcn0gc25pcHBldHNCdXR0b25gLFxyXG5cdFx0XHRmb3JjZV9wX25ld2xpbmVzOiBmYWxzZSxcclxuXHRcdFx0Zm9yY2VkX3Jvb3RfYmxvY2s6ICcnLFxyXG5cdFx0XHRoZWlnaHQ6IHRoaXMuc2V0dGluZ3M/LmVkaXRvckhlaWdodCB8fCAnNzAwcHgnLFxyXG5cdFx0XHRmaWxlX3BpY2tlcl90eXBlczogJ2ZpbGUgaW1hZ2UgbWVkaWEnLFxyXG5cdFx0XHRpbWFnZV9hZHZ0YWI6IHRydWUsXHJcblx0XHRcdGltYWdlc191cGxvYWRfYmFzZV9wYXRoOiBgJHt0aGlzLmFwcFNldHRpbmcuYXBpVXJsfWZpbGUvYCxcclxuXHRcdFx0aW1hZ2VzX3VwbG9hZF91cmw6ICdiYWNrZW5kL2FwaS9maWxlcycsXHJcblx0XHRcdGFsbG93X2h0bWxfaW5fbmFtZWRfYW5jaG9yOiB0cnVlLFxyXG5cdFx0XHR2YWxpZF9jaGlsZHJlbjogJythW2RpdnxzcGFufGltZ3xoMXxoMnxoM3xoNHxoNXxoNnxicnxocnx2aWRlb10sK3NwYW5baV0nLFxyXG5cdFx0XHR2YWxpZF9lbGVtZW50czogJypbKl0nLFxyXG5cdFx0XHRpbWFnZXNfdXBsb2FkX2hhbmRsZXI6IChibG9iSW5mbzogYW55LCBzdWNjZXNzOiBhbnksIGZhaWx1cmU6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuZmlsZVNlcnZpY2UudXBsb2FkKGJsb2JJbmZvLmJsb2IoKSwgYHVwbG9hZGAsIHtcclxuXHRcdFx0XHRcdGNsaWVudElkOiB0aGlzLmZvcm1WYWx1ZT8uY2xpZW50SWQsXHJcblx0XHRcdFx0XHRwYXRoOiAnaW1hZ2VzJyxcclxuXHRcdFx0XHRcdGlzUHVibGljOiB0cnVlXHJcblx0XHRcdFx0fSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuXHRcdFx0XHRcdGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XHJcblxyXG5cdFx0XHRcdFx0XHQvKiBDYWxjdWxhdGUgdGhlIHByb2dyZXNzIHBlcmNlbnRhZ2UgKi9cclxuXHRcdFx0XHRcdFx0Y29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKTtcclxuXHJcblx0XHRcdFx0XHRcdC8qIFBhc3MgdGhlIHBlcmNlbnRhZ2UgaW50byB0aGUgcHJvZ3Jlc3Mtc3RyZWFtICovXHJcblx0XHRcdFx0XHRcdGNvbnNvbGUuaW5mbyhwZXJjZW50RG9uZSk7XHJcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcblx0XHRcdFx0XHRcdHN1Y2Nlc3MoZXZlbnQuYm9keS5wdWJsaWNMaW5rKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0c2V0dXA6IGZ1bmN0aW9uIChlZGl0b3I6IGFueSkge1xyXG5cdFx0XHRcdC8qIEFkZCBzbmlwcGV0cyBidXR0b24gdG8gdGhlIHRvb2xiYXIgKi9cclxuXHRcdFx0XHRlZGl0b3IudWkucmVnaXN0cnkuYWRkTWVudUJ1dHRvbignc25pcHBldHNCdXR0b24nLCB7XHJcblx0XHRcdFx0XHR0ZXh0OiAnU25pcHBldHMnLFxyXG5cdFx0XHRcdFx0ZmV0Y2g6IGZ1bmN0aW9uIChjYWxsYmFjazogYW55KSB7XHJcblx0XHRcdFx0XHRcdGNhbGxiYWNrKFtcclxuXHRcdFx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnbWVudWl0ZW0nLFxyXG5cdFx0XHRcdFx0XHRcdFx0dGV4dDogJ1ZhcmlhYmxlJyxcclxuXHRcdFx0XHRcdFx0XHRcdG9uQWN0aW9uOiAoKSA9PiBlZGl0b3IuaW5zZXJ0Q29udGVudCgne3t2YXIgbmFtZX19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdtZW51aXRlbScsXHJcblx0XHRcdFx0XHRcdFx0XHR0ZXh0OiAnQmxvY2snLFxyXG5cdFx0XHRcdFx0XHRcdFx0b25BY3Rpb246ICgpID0+IGVkaXRvci5pbnNlcnRDb250ZW50KCd7e2Jsb2NrIG5hbWU9XCIuLi5cIn19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdtZW51aXRlbScsXHJcblx0XHRcdFx0XHRcdFx0XHR0ZXh0OiAnVmlldyBDb21wb25lbnQnLFxyXG5cdFx0XHRcdFx0XHRcdFx0b25BY3Rpb246ICgpID0+IGVkaXRvci5pbnNlcnRDb250ZW50KCd7e3ZjIG5hbWU9XCIuLi5cIn19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRdKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsZWFudXAgc3Vic2NyaXB0aW9ucyB3aGVuIHRoaXMgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cclxuXHQgKi9cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnJvdXRlU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcbn0iLCI8dmQtbGF5b3V0LW5hdiBjb2xvcj1cInByaW1hcnlcIiBbYmFja05hdmlnYXRpb25Sb3V0ZV09XCJsaXN0Um91dGVcIiB0b29sYmFyVGl0bGU9XCJDb250ZW50XCIgaTE4bi10b29sYmFyVGl0bGU9XCJAQGNvbnRlbnRcIiBbZWRpdE1vZGVdPVwiaXNFZGl0TW9kZVwiIFthY3Rpb25zXT1cInRvb2xiYXJBY3Rpb25zXCIgW2RhdGFdPVwiaXRlbVwiIFtjb250ZXh0XT1cInRoaXNcIj5cclxuXHQ8Zm9ybSAqbmdJZj1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBub3ZhbGlkYXRlIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cclxuXHRcdDx2ZC1sYXlvdXQtY2FyZC1vdmVyIGNsYXNzPVwiYWNjb3JkaW9uXCIgY2FyZFdpZHRoPVwiNzBcIiBjb2xvcj1cInByaW1hcnlcIiBmbGV4PlxyXG5cdFx0XHQ8bWF0LWFjY29yZGlvbiBbbXVsdGldPVwiIWlzRWRpdE1vZGVcIj5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gRGV0YWlscyAtLT5cclxuXHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbCBleHBhbmRlZD1cInRydWVcIiBpZD1cImRldGFpbHNcIj5cclxuXHRcdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdFx0PG1hdC1wYW5lbC10aXRsZSBpMThuPVwiQEBkZXRhaWxzXCI+RGV0YWlsczwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdDx2ZC1nZW5lcmljLWZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgW2ZpZWxkR3JvdXBzXT1cImZpZWxkR3JvdXBzXCIgW2NvbnRleHRdPVwidGhpc1wiPlxyXG5cdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgdmQtZWRpdG9yIGxldC1maWVsZD1cImZpZWxkXCIgbGV0LWZvcm1Hcm91cD1cImZvcm1Hcm91cFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtZm9ybS1maWVsZCBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgZmxleD5cclxuXHRcdFx0XHRcdFx0XHRcdDxtYXQtbGFiZWw+e3tmaWVsZC5oZWFkZXJ9fTwvbWF0LWxhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGVkaXRvciBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbaW5pdF09XCJlZGl0b3JDb25maWdcIiB0aW55TWF0Rm9ybUNvbnRyb2wgZmxleD48L2VkaXRvcj5cclxuXHRcdFx0XHRcdFx0XHRcdDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcblx0XHRcdFx0XHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDwvdmQtZ2VuZXJpYy1mb3JtPlxyXG5cdFx0XHRcdFx0PG1hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCIgaTE4bj1cIkBAc2F2ZVwiPlNhdmU8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAqbmdJZj1cImlzRWRpdE1vZGVcIiAoY2xpY2spPVwiYXBwbHkoKVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIGkxOG49XCJAQGFwcGx5XCI+QXBwbHk8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiYmFjaygpXCIgaTE4bj1cIkBAY2FuY2VsXCI+Q2FuY2VsPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGZsZXg+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9tYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gQXVkaXQgLS0+XHJcblx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwgaWQ9XCJhdWRpdFwiICpuZ0lmPVwiaXNFZGl0TW9kZVwiPlxyXG5cdFx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGkxOG49XCJAQGF1ZGl0XCI+QXVkaXQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdDx2ZC1hdWRpdCBbaXRlbV09XCJpdGVtXCI+IDwvdmQtYXVkaXQ+XHJcblx0XHRcdFx0XHQ8bWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIChjbGljayk9XCJiYWNrKClcIiBpMThuPVwiQEBjbG9zZVwiPkNsb3NlPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGZsZXg+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9tYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cdFx0XHQ8L21hdC1hY2NvcmRpb24+XHJcblx0XHQ8L3ZkLWxheW91dC1jYXJkLW92ZXI+XHJcblx0PC9mb3JtPlxyXG48L3ZkLWxheW91dC1uYXY+Il19
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9jb250ZW50LWZvcm0vY29udGVudC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9jb250ZW50LWZvcm0vY29udGVudC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7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Z0NBQ0MsSUFBSSxFQUFFLFVBQVU7Z0NBQ2hCLElBQUksRUFBRSxnQkFBZ0I7Z0NBQ3RCLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDOzZCQUN6RDt5QkFDRCxDQUFDLENBQUM7b0JBQ0osQ0FBQztpQkFDRCxDQUFDLENBQUM7WUFDSixDQUFDO1NBQ0QsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDckM7SUFDRixDQUFDOztpSEE5UFcsb0JBQW9CO3FHQUFwQixvQkFBb0IsZ1JDbkJqQyx3M0ZBaURnQjsyRkQ5Qkgsb0JBQW9CO2tCQUpoQyxTQUFTOytCQUNDLGtCQUFrQjtxTkEyQ1UsV0FBVztzQkFBaEQsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUtJLGVBQWU7c0JBQXRELFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPTU1BLCBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudFR5cGUsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEVudW1TZXJ2aWNlLCBGaWxlU2VydmljZSwgR2VuZXJpY1JlYWN0aXZlRm9ybUNvbXBvbmVudCB9IGZyb20gJ0BtZXNzYWlhL2Nkayc7XHJcbmltcG9ydCB7IEVkaXRvckNvbXBvbmVudCB9IGZyb20gJ0B0aW55bWNlL3RpbnltY2UtYW5ndWxhcic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb250ZW50VHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2NvbnRlbnQtdHlwZSc7XHJcbmltcG9ydCB7IFdyYXBUYWcgfSBmcm9tICcuLi8uLi9lbnVtcy93cmFwLXRhZyc7XHJcbmltcG9ydCB7IENtc1NldHRpbmdzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Ntcy1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IENvbnRlbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29udGVudCc7XHJcbmltcG9ydCB7IENvbnRlbnRDbGllbnQsIENvbnRlbnREZXBhcnRtZW50IH0gZnJvbSAnLi4vLi4vcHVibGljLWFwaSc7XHJcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGVudC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLWNvbnRlbnQtZm9ybScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2NvbnRlbnQtZm9ybS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRlbnRGb3JtQ29tcG9uZW50IGV4dGVuZHMgR2VuZXJpY1JlYWN0aXZlRm9ybUNvbXBvbmVudDxDb250ZW50LCBDb250ZW50U2VydmljZT4ge1xyXG5cclxuXHQvKipcclxuXHQgKiBSb3V0ZXIgU3Vic2NyaXB0aW9uXHJcblx0ICovXHJcblx0cHVibGljIHJvdXRlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBzdGF0dXMgb2YgdGhlIGlzc3VlXHJcblx0ICovXHJcblx0cHVibGljIHR5cGU6IENvbnRlbnRUeXBlO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb250ZW50IHN0YXR1c1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBDb250ZW50VHlwZTogdHlwZW9mIENvbnRlbnRUeXBlID0gQ29udGVudFR5cGU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdyYXAgdGFnIGVudW1cclxuXHQgKi9cclxuXHRwdWJsaWMgd3JhcFRhZ3M6IGFueVtdID0gRW51bVNlcnZpY2UudG9BcnJheShXcmFwVGFnKTtcclxuXHJcblx0LyoqXHJcblx0ICogU2VwYXJhdG9yIGtleXMgY29kZXNcclxuXHQgKi9cclxuXHRwdWJsaWMgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZXR0aW5nczogQ21zU2V0dGluZ3NcclxuXHQgKi9cclxuXHRwdWJsaWMgc2V0dGluZ3M6IENtc1NldHRpbmdzID0gbmV3IENtc1NldHRpbmdzKCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgdGhlIGFsaWFzZXMgY29udHJvbFxyXG5cdCAqL1xyXG5cdGdldCBhbGlhc2VzQ29udHJvbCgpIHsgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scy5hbGlhc2VzOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmIHRvIGZvcm0gaHRtbCBlbGVtZW50XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZCgnZm9ybScsIHsgc3RhdGljOiBmYWxzZSB9KSBmb3JtRWxlbWVudDogSFRNTEZvcm1FbGVtZW50O1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZiB0byB0aW55bWNlIGVkaXRvclxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoJ2VkaXRvcicsIHsgc3RhdGljOiBmYWxzZSB9KSBlZGl0b3JDb21wb25lbnQ6IEVkaXRvckNvbXBvbmVudDtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByb3RlY3RlZCBzZXJ2aWNlOiBDb250ZW50U2VydmljZSxcclxuXHRcdHByb3RlY3RlZCBmaWxlU2VydmljZTogRmlsZVNlcnZpY2UsXHJcblx0XHRwcm90ZWN0ZWQgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcblx0KSB7XHJcblx0XHRzdXBlcihDb250ZW50LCBzZXJ2aWNlLCByb3V0ZSwgY2hhbmdlRGV0ZWN0b3JSZWYpXHJcblx0XHR0aGlzLnNldHRpbmdzID0gdGhpcy5nZXRTZXJ2aWNlKENtc1NldHRpbmdzKTtcclxuXHJcblx0XHRpZiAodGhpcy5zZXR0aW5ncz8ubXVsdGl0ZW5hbnRhYmxlIHx8IHRoaXMuc2V0dGluZ3M/Lm11bHRpQ2xpZW50cykge1xyXG5cdFx0XHR0aGlzLmluY2x1ZGUoJ0NsaWVudEpvaW5zJywgdHJ1ZSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuc2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSB8fCB0aGlzLnNldHRpbmdzPy5tdWx0aURlcGFydG1lbnRzKSB7XHJcblx0XHRcdHRoaXMuaW5jbHVkZSgnRGVwYXJ0bWVudEpvaW5zJywgdHJ1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBkYXRhLWJvdW5kIHByb3BlcnRpZXMgXHJcblx0ICogb2YgYSBkaXJlY3RpdmUgYXJlIGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0LyogRmlsdGVyIGJ5IHN0YXR1cywgaWYgYW55ICovXHJcblx0XHR0aGlzLnJvdXRlU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXM6IHsgdHlwZTogc3RyaW5nIH0pID0+IHtcclxuXHRcdFx0dGhpcy50eXBlID0gRW51bVNlcnZpY2UucGFyc2UoQ29udGVudFR5cGUsIHBhcmFtcy50eXBlKTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8qIEdldCBzb21lIHByb3BzIGZyb20gcm91dGUgc25hcHNob3QgKi9cclxuXHRcdHRoaXMucm91dGUuZGF0YS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG5cdFx0XHR0aGlzLmZvcm1WYWxpZGF0aW9uID0gZGF0YS5mb3JtVmFsaWRhdGlvbjtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHN1cGVyLm5nT25Jbml0KCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhbGlhcyBpcyBhdmFpbGFibGUuXHJcblx0ICovXHJcblx0cHVibGljIGlzQWxpYXNBdmFpbGFibGUoKSB7XHJcblx0XHR0aGlzLnNlcnZpY2UuaXNBbGlhc0F2YWlsYWJsZSh0aGlzLml0ZW0pLnN1YnNjcmliZSgoeDogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHR0aGlzLmZvcm1FbGVtZW50LmZvcm0uY29udHJvbHNbJ2FsaWFzJ10uc2V0RXJyb3JzKHggPyBudWxsIDogeyAnaW5Vc2UnOiB0cnVlIH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXQgY2xpZW50XHJcblx0ICovXHJcblx0cHVibGljIHNldENsaWVudCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuaXNFZGl0b3JJbml0aWFsemVkID0gZmFsc2U7XHJcblx0XHR0aGlzLmNvbmZpZ0VkaXRvcigpO1xyXG5cdFx0dGhpcy5lZGl0b3JDb21wb25lbnQ/LmVkaXRvcj8uc2V0Q29udGVudCh0aGlzLml0ZW0uYm9keSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBZGQgYSBhbGlhc2VzIHRvIHRoZSBjdXJyZW50IGZpZWxkXHJcblx0ICogQHBhcmFtIGV2ZW50IFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhZGRBbGlhc2VzKGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCk6IHZvaWQge1xyXG5cdFx0LyogQWRkIG91ciBhbGlhc3MgKi9cclxuXHRcdGlmICgoZXZlbnQudmFsdWUgfHwgJycpLnRyaW0oKSkge1xyXG5cdFx0XHR0aGlzLmFsaWFzZXNDb250cm9sLnNldFZhbHVlKFsuLi50aGlzLmFsaWFzZXNDb250cm9sLnZhbHVlLCBldmVudC52YWx1ZS50cmltKCldKTtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdHRoaXMuYWxpYXNlc0NvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBSZXNldCB0aGUgaW5wdXQgdmFsdWUgKi9cclxuXHRcdGlmIChldmVudC5pbnB1dCkge1xyXG5cdFx0XHRldmVudC5pbnB1dC52YWx1ZSA9ICcnO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVtb3ZlcyBhIGFsaWFzZXNcclxuXHQgKiBAcGFyYW0gYWxpYXNzIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZW1vdmVBbGlhc2VzKGFsaWFzczogc3RyaW5nKTogdm9pZCB7XHJcblx0XHRjb25zdCBpbmRleCA9IHRoaXMuYWxpYXNlc0NvbnRyb2wudmFsdWUuaW5kZXhPZihhbGlhc3MpO1xyXG5cdFx0aWYgKGluZGV4ID49IDApIHtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cdFx0XHR0aGlzLmFsaWFzZXNDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgVGVtcGxhdGVcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgbmV3SW5zdGFuY2UoKTogQ29udGVudCB7XHJcblx0XHRsZXQgaXRlbSA9IE9iamVjdC5hc3NpZ24obmV3IENvbnRlbnQoKSwgPENvbnRlbnQ+e1xyXG5cdFx0XHR0eXBlOiB0aGlzLnR5cGUsXHJcblx0XHRcdHdyYXBUYWc6IHRoaXMudHlwZSA9PSBDb250ZW50VHlwZS5CbG9jayA/ICcnIDogV3JhcFRhZy5TZWN0aW9uLFxyXG5cdFx0XHRzaG93VGl0bGU6IHRoaXMudHlwZSA9PSBDb250ZW50VHlwZS5CbG9jayA/IGZhbHNlIDogdHJ1ZVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0LyogR2V0IGNsaWVudElkICovXHJcblx0XHRpZiAoIXRoaXMuaXNFZGl0TW9kZSkge1xyXG5cdFx0XHRpZiAodGhpcy5pc0NsaWVudEFkbWluIHx8IHRoaXMuaXNEZXBhcnRtZW50QWRtaW4pIHtcclxuXHRcdFx0XHRpdGVtLmNsaWVudEpvaW5zID0gW25ldyBDb250ZW50Q2xpZW50KHsgY2xpZW50SWQ6IHRoaXMuY3VycmVudFVzZXIuY2xpZW50SWQgfSldO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAodGhpcy5pc0RlcGFydG1lbnRBZG1pbikge1xyXG5cdFx0XHRcdGl0ZW0uZGVwYXJ0bWVudEpvaW5zID0gW25ldyBDb250ZW50RGVwYXJ0bWVudCh7IGRlcGFydG1lbnRJZDogdGhpcy5jdXJyZW50VXNlci5kZXBhcnRtZW50SWQgfSldO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0LyogSW5pdCB0aGUgdGlueW1jZSBlZGl0b3IgKi9cclxuXHRcdHRoaXMuaXNFZGl0b3JJbml0aWFsemVkID0gZmFsc2U7XHJcblx0XHRyZXR1cm4gaXRlbTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZm9ybSBoYXMgYnVpbHQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uQWZ0ZXJGb3JtQnVpbGQoKTogdm9pZCB7XHJcblx0XHRzdXBlci5vbkFmdGVyRm9ybUJ1aWxkKCk7XHJcblx0XHR0aGlzLmNvbmZpZ0VkaXRvcigpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29uZmlndXJlcyB0aGUgdGlueW1jZSBlZGl0b3JcclxuXHQgKi9cclxuXHRwcml2YXRlIGNvbmZpZ0VkaXRvcigpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnNldHRpbmdzPy5tdWx0aXRlbmFudGFibGUgJiYgdGhpcy5mb3JtVmFsdWU/LmNsaWVudElkICYmIHRoaXMuc2V0dGluZ3M/LnN0eWxlVXJsRW5kcG9pbnQpIHtcclxuXHRcdFx0dGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLnNldHRpbmdzLnN0eWxlVXJsRW5kcG9pbnQodGhpcy5mb3JtVmFsdWUuY2xpZW50SWQpKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdG5leHQ6ICh4OiB7IHZhbHVlOiBzdHJpbmcgfSkgPT4gc3VwZXIuaW5pdEVkaXRvcihPYmplY3QuYXNzaWduKHRoaXMuZ2V0RWRpdG9yQ29uZmlnKCksIHsgY29udGVudF9jc3M6IHgudmFsdWUgfSkpLFxyXG5cdFx0XHRcdGVycm9yOiAoKSA9PiBzdXBlci5pbml0RWRpdG9yKE9iamVjdC5hc3NpZ24odGhpcy5nZXRFZGl0b3JDb25maWcoKSkpXHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0c3VwZXIuaW5pdEVkaXRvcih0aGlzLmdldEVkaXRvckNvbmZpZygpKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgY29uZmlnIGZvciB0aGUgZWRpdG9yXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBnZXRFZGl0b3JDb25maWcoKTogYW55IHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdHRvb2xiYXI6IGAke3RoaXMuZWRpdG9yVG9vbGJhcn0gc25pcHBldHNCdXR0b25gLFxyXG5cdFx0XHRmb3JjZV9wX25ld2xpbmVzOiBmYWxzZSxcclxuXHRcdFx0Zm9yY2VkX3Jvb3RfYmxvY2s6ICcnLFxyXG5cdFx0XHRoZWlnaHQ6IHRoaXMuc2V0dGluZ3M/LmVkaXRvckhlaWdodCB8fCAnNzAwcHgnLFxyXG5cdFx0XHRmaWxlX3BpY2tlcl90eXBlczogJ2ZpbGUgaW1hZ2UgbWVkaWEnLFxyXG5cdFx0XHRpbWFnZV9hZHZ0YWI6IHRydWUsXHJcblx0XHRcdGltYWdlc191cGxvYWRfYmFzZV9wYXRoOiBgJHt0aGlzLmFwcFNldHRpbmcuYXBpVXJsfWZpbGUvYCxcclxuXHRcdFx0aW1hZ2VzX3VwbG9hZF91cmw6ICdiYWNrZW5kL2FwaS9maWxlcycsXHJcblx0XHRcdGFsbG93X2h0bWxfaW5fbmFtZWRfYW5jaG9yOiB0cnVlLFxyXG5cdFx0XHR2YWxpZF9jaGlsZHJlbjogJythW2RpdnxzcGFufGltZ3xoMXxoMnxoM3xoNHxoNXxoNnxicnxocnx2aWRlb10sK3NwYW5baV0nLFxyXG5cdFx0XHR2YWxpZF9lbGVtZW50czogJypbKl0nLFxyXG5cdFx0XHRpbWFnZXNfdXBsb2FkX2hhbmRsZXI6IChibG9iSW5mbzogYW55LCBzdWNjZXNzOiBhbnksIGZhaWx1cmU6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuZmlsZVNlcnZpY2UudXBsb2FkKGJsb2JJbmZvLmJsb2IoKSwgYHVwbG9hZGAsIHtcclxuXHRcdFx0XHRcdGNsaWVudElkOiB0aGlzLmZvcm1WYWx1ZT8uY2xpZW50SWQsXHJcblx0XHRcdFx0XHRwYXRoOiAnaW1hZ2VzJyxcclxuXHRcdFx0XHRcdGlzUHVibGljOiB0cnVlXHJcblx0XHRcdFx0fSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuXHRcdFx0XHRcdGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XHJcblxyXG5cdFx0XHRcdFx0XHQvKiBDYWxjdWxhdGUgdGhlIHByb2dyZXNzIHBlcmNlbnRhZ2UgKi9cclxuXHRcdFx0XHRcdFx0Y29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKTtcclxuXHJcblx0XHRcdFx0XHRcdC8qIFBhc3MgdGhlIHBlcmNlbnRhZ2UgaW50byB0aGUgcHJvZ3Jlc3Mtc3RyZWFtICovXHJcblx0XHRcdFx0XHRcdGNvbnNvbGUuaW5mbyhwZXJjZW50RG9uZSk7XHJcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcblx0XHRcdFx0XHRcdHN1Y2Nlc3MoZXZlbnQuYm9keS5wdWJsaWNMaW5rKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0c2V0dXA6IGZ1bmN0aW9uIChlZGl0b3I6IGFueSkge1xyXG5cdFx0XHRcdC8qIEFkZCBzbmlwcGV0cyBidXR0b24gdG8gdGhlIHRvb2xiYXIgKi9cclxuXHRcdFx0XHRlZGl0b3IudWkucmVnaXN0cnkuYWRkTWVudUJ1dHRvbignc25pcHBldHNCdXR0b24nLCB7XHJcblx0XHRcdFx0XHR0ZXh0OiAnU25pcHBldHMnLFxyXG5cdFx0XHRcdFx0ZmV0Y2g6IGZ1bmN0aW9uIChjYWxsYmFjazogYW55KSB7XHJcblx0XHRcdFx0XHRcdGNhbGxiYWNrKFtcclxuXHRcdFx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnbWVudWl0ZW0nLFxyXG5cdFx0XHRcdFx0XHRcdFx0dGV4dDogJ1ZhcmlhYmxlJyxcclxuXHRcdFx0XHRcdFx0XHRcdG9uQWN0aW9uOiAoKSA9PiBlZGl0b3IuaW5zZXJ0Q29udGVudCgne3t2YXIgbmFtZX19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdtZW51aXRlbScsXHJcblx0XHRcdFx0XHRcdFx0XHR0ZXh0OiAnQmxvY2snLFxyXG5cdFx0XHRcdFx0XHRcdFx0b25BY3Rpb246ICgpID0+IGVkaXRvci5pbnNlcnRDb250ZW50KCd7e2Jsb2NrIG5hbWU9XCIuLi5cIn19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdtZW51aXRlbScsXHJcblx0XHRcdFx0XHRcdFx0XHR0ZXh0OiAnVmlldyBDb21wb25lbnQnLFxyXG5cdFx0XHRcdFx0XHRcdFx0b25BY3Rpb246ICgpID0+IGVkaXRvci5pbnNlcnRDb250ZW50KCd7e3ZjIG5hbWU9XCIuLi5cIn19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRdKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsZWFudXAgc3Vic2NyaXB0aW9ucyB3aGVuIHRoaXMgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cclxuXHQgKi9cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnJvdXRlU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcbn0iLCI8dmQtbGF5b3V0LW5hdiBjb2xvcj1cInByaW1hcnlcIiBbYmFja05hdmlnYXRpb25Sb3V0ZV09XCJsaXN0Um91dGVcIiB0b29sYmFyVGl0bGU9XCJDb250ZW50XCIgaTE4bi10b29sYmFyVGl0bGU9XCJAQGNvbnRlbnRcIiBbZWRpdE1vZGVdPVwiaXNFZGl0TW9kZVwiIFthY3Rpb25zXT1cInRvb2xiYXJBY3Rpb25zXCIgW2RhdGFdPVwiaXRlbVwiIFtjb250ZXh0XT1cInRoaXNcIj5cclxuXHQ8Zm9ybSAqbmdJZj1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBub3ZhbGlkYXRlIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cclxuXHRcdDx2ZC1sYXlvdXQtY2FyZC1vdmVyIGNsYXNzPVwiYWNjb3JkaW9uXCIgY2FyZFdpZHRoPVwiNzBcIiBjb2xvcj1cInByaW1hcnlcIiBmbGV4PlxyXG5cdFx0XHQ8bWF0LWFjY29yZGlvbiBbbXVsdGldPVwiIWlzRWRpdE1vZGVcIj5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gRGV0YWlscyAtLT5cclxuXHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbCBleHBhbmRlZD1cInRydWVcIiBpZD1cImRldGFpbHNcIj5cclxuXHRcdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdFx0PG1hdC1wYW5lbC10aXRsZSBpMThuPVwiQEBkZXRhaWxzXCI+RGV0YWlsczwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBtYXRFeHBhbnNpb25QYW5lbENvbnRlbnQ+XHJcblx0XHRcdFx0XHRcdDx2ZC1nZW5lcmljLWZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgW2ZpZWxkR3JvdXBzXT1cImZpZWxkR3JvdXBzXCIgW2NvbnRleHRdPVwidGhpc1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSB2ZC1lZGl0b3IgbGV0LWZpZWxkPVwiZmllbGRcIiBsZXQtZm9ybUdyb3VwPVwiZm9ybUdyb3VwXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgbGF5b3V0LW1hcmdpbiBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGZsZXg+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxtYXQtbGFiZWw+e3tmaWVsZC5oZWFkZXJ9fTwvbWF0LWxhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZWRpdG9yIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIFtpbml0XT1cImVkaXRvckNvbmZpZ1wiIHRpbnlNYXRGb3JtQ29udHJvbCBmbGV4PjwvZWRpdG9yPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cdFx0XHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHRcdDwvdmQtZ2VuZXJpYy1mb3JtPlxyXG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDxtYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIGkxOG49XCJAQHNhdmVcIj5TYXZlPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKm5nSWY9XCJpc0VkaXRNb2RlXCIgKGNsaWNrKT1cImFwcGx5KClcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBpMThuPVwiQEBhcHBseVwiPkFwcGx5PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cImJhY2soKVwiIGkxOG49XCJAQGNhbmNlbFwiPkNhbmNlbDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBmbGV4Pjwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvbWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdFx0PCEtLSAjcmVnaW9uIEF1ZGl0IC0tPlxyXG5cdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsIGlkPVwiYXVkaXRcIiAqbmdJZj1cImlzRWRpdE1vZGVcIj5cclxuXHRcdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdFx0PG1hdC1wYW5lbC10aXRsZT5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBpMThuPVwiQEBhdWRpdFwiPkF1ZGl0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L21hdC1wYW5lbC10aXRsZT5cclxuXHRcdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgbWF0RXhwYW5zaW9uUGFuZWxDb250ZW50PlxyXG5cdFx0XHRcdFx0XHQ8dmQtYXVkaXQgW2l0ZW1dPVwiaXRlbVwiPiA8L3ZkLWF1ZGl0PlxyXG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDxtYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgKGNsaWNrKT1cImJhY2soKVwiIGkxOG49XCJAQGNsb3NlXCI+Q2xvc2U8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gZmxleD48L3NwYW4+XHJcblx0XHRcdFx0XHQ8L21hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuXHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblx0XHRcdDwvbWF0LWFjY29yZGlvbj5cclxuXHRcdDwvdmQtbGF5b3V0LWNhcmQtb3Zlcj5cclxuXHQ8L2Zvcm0+XHJcbjwvdmQtbGF5b3V0LW5hdj4iXX0=
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { HttpEventType, HttpResponse } from '@angular/common/http';
|
|
2
1
|
import { ChangeDetectorRef, Component, ViewEncapsulation } from '@angular/core';
|
|
3
2
|
import { MatDialog } from '@angular/material/dialog';
|
|
4
3
|
import { ActivatedRoute } from '@angular/router';
|
|
5
|
-
import {
|
|
4
|
+
import { FileService, GenericReactiveFormComponent } from '@messaia/cdk';
|
|
6
5
|
import 'codemirror/addon/edit/closetag';
|
|
7
6
|
import 'codemirror/addon/edit/matchbrackets';
|
|
8
7
|
import 'codemirror/addon/selection/active-line';
|
|
@@ -25,12 +24,7 @@ import * as i6 from "@ctrl/ngx-codemirror";
|
|
|
25
24
|
import * as i7 from "@angular/forms";
|
|
26
25
|
import * as i8 from "@angular/material/expansion";
|
|
27
26
|
import * as i9 from "@angular/material/button";
|
|
28
|
-
import * as i10 from "@
|
|
29
|
-
import * as i11 from "@angular/material/form-field";
|
|
30
|
-
import * as i12 from "@messaia/cdk-base";
|
|
31
|
-
import * as i13 from "@angular/material/chips";
|
|
32
|
-
import * as i14 from "@angular/material/checkbox";
|
|
33
|
-
import * as i15 from "@angular/material/input";
|
|
27
|
+
import * as i10 from "@messaia/cdk-base";
|
|
34
28
|
export class TemplateFormComponent extends GenericReactiveFormComponent {
|
|
35
29
|
/**
|
|
36
30
|
* Constructor
|
|
@@ -46,10 +40,6 @@ export class TemplateFormComponent extends GenericReactiveFormComponent {
|
|
|
46
40
|
* Template type
|
|
47
41
|
*/
|
|
48
42
|
this.TemplateType = TemplateType;
|
|
49
|
-
/**
|
|
50
|
-
* Used to disable some properties for client manager
|
|
51
|
-
*/
|
|
52
|
-
this.isClientAdmin = AuthHelper.hasRole('ClientAdministrator') || AuthHelper.hasRole('ClientManager');
|
|
53
43
|
/**
|
|
54
44
|
* settings: CmsSettings
|
|
55
45
|
*/
|
|
@@ -84,6 +74,12 @@ export class TemplateFormComponent extends GenericReactiveFormComponent {
|
|
|
84
74
|
tabSize: 2
|
|
85
75
|
};
|
|
86
76
|
this.settings = this.getService(CmsSettings);
|
|
77
|
+
if (this.settings?.multitenantable || this.settings?.multiClients) {
|
|
78
|
+
this.include('ClientJoins', true);
|
|
79
|
+
}
|
|
80
|
+
if (this.settings?.multitenantable || this.settings?.multiDepartments) {
|
|
81
|
+
this.include('DepartmentJoins', true);
|
|
82
|
+
}
|
|
87
83
|
}
|
|
88
84
|
/**
|
|
89
85
|
* Gets the attachments control
|
|
@@ -119,20 +115,19 @@ export class TemplateFormComponent extends GenericReactiveFormComponent {
|
|
|
119
115
|
uploadAttachment($event) {
|
|
120
116
|
let file = ($event?.target).files[0];
|
|
121
117
|
if (file != null) {
|
|
122
|
-
this.fileService.upload(file, `upload`, { clientId: this.item.clientId, path: `${this.item.clientId ? '' : 'common/'}docs` }).subscribe(event => {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
});
|
|
118
|
+
// this.fileService.upload(file, `upload`, { clientId: this.item.clientId, path: `${this.item.clientId ? '' : 'common/'}docs` }).subscribe(event => {
|
|
119
|
+
// if (event.type === HttpEventType.UploadProgress) {
|
|
120
|
+
// /* Calculate the progress percentage */
|
|
121
|
+
// const percentDone = Math.round(100 * event.loaded / event.total);
|
|
122
|
+
// /* Pass the percentage into the progress-stream */
|
|
123
|
+
// console.info(percentDone);
|
|
124
|
+
// } else if (event instanceof HttpResponse) {
|
|
125
|
+
// /* Add our attachments */
|
|
126
|
+
// this.attachmentsControl.setValue([...this.attachmentsControl.value, <Attachment>event.body]);
|
|
127
|
+
// this.attachmentsControl.updateValueAndValidity();
|
|
128
|
+
// this.attachmentsControl.markAsDirty();
|
|
129
|
+
// }
|
|
130
|
+
// });
|
|
136
131
|
}
|
|
137
132
|
}
|
|
138
133
|
/**
|
|
@@ -161,9 +156,9 @@ export class TemplateFormComponent extends GenericReactiveFormComponent {
|
|
|
161
156
|
}
|
|
162
157
|
}
|
|
163
158
|
TemplateFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: TemplateFormComponent, deps: [{ token: i1.TemplateService }, { token: i2.FileService }, { token: i3.MatDialog }, { token: i4.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
164
|
-
TemplateFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", 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\r\n\t\t\t\t\t<!-- #region Client-->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"settings?.multitenantable && !isClientAdmin\">\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@client\">Client</mat-label>\r\n\t\t\t\t\t\t\t<vd-select formControlName=\"clientId\" endpoint=\"client?enabled=true\" layout=\"column\" flex></vd-select>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.clientId['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t\t<mat-hint i18n=\"@@templateEmptyClientHint\">If empty this template will be used for all projects</mat-hint>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Type-->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@type\">Type</mat-label>\r\n\t\t\t\t\t\t\t<vd-select formControlName=\"type\" [enum]=\"TemplateType\" layout=\"column\" flex></vd-select>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.type['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Name & Subject -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<!-- #region Name -->\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@name\">Name</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"name\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.name['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t\t<!-- #region Key -->\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@key\">Key</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"key\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.key['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t<!-- #endregion -->\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Subject -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@subject\">Subject</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"subject\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.subject['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Attachments -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@attachments\">Attachments</mat-label>\r\n\t\t\t\t\t\t\t<mat-chip-grid #chipList formControlName=\"attachments\" flex>\r\n\t\t\t\t\t\t\t\t<mat-chip-row *ngFor=\"let attachment of form.controls.attachments.value\" color=\"primary\" removable=\"true\" (removed)=\"removeAttachment(attachment)\" (click)=\"downloadAttachment(attachment)\" selected>\r\n\t\t\t\t\t\t\t\t\t{{attachment.originalName}}\r\n\t\t\t\t\t\t\t\t\t<mat-icon matChipRemove>cancel</mat-icon>\r\n\t\t\t\t\t\t\t\t</mat-chip-row>\r\n\t\t\t\t\t\t\t\t<input placeholder=\"Attachments\" i18n-placeholder=\"@@attachments\" [matChipInputFor]=\"chipList\" [matChipInputAddOnBlur]=\"false\" (click)=\"fileInput.click()\" readonly>\r\n\t\t\t\t\t\t\t\t<mat-icon matSuffix (click)=\"fileInput.click()\">publish</mat-icon>\r\n\t\t\t\t\t\t\t\t<input hidden type=\"file\" accept=\"{{allowedExtensions}}\" #fileInput (change)=\"uploadAttachment($event)\" />\r\n\t\t\t\t\t\t\t</mat-chip-grid>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Notice -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@notice\">Notice</mat-label>\r\n\t\t\t\t\t\t\t<textarea matInput autocomplete=\"off\" formControlName=\"notice\"></textarea>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.notice['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Enabled-->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t\t\t\t<div layout-margin class=\"push-top push-bottom\">\r\n\t\t\t\t\t\t\t<mat-checkbox formControlName=\"enabled\" i18n=\"@@active\">Active</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\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<div layout-margin>\r\n\t\t\t\t\t\t<ngx-codemirror formControlName=\"content\" rows=\"160\" [options]=\"editorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t</div>\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<div layout-margin>\r\n\t\t\t\t\t\t<ngx-codemirror formControlName=\"dummyData\" rows=\"120\" [options]=\"jsonEditorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t</div>\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<vd-audit [item]=\"item\"> </vd-audit>\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.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: 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: i2.FileControlDirective, selector: "input[type=file]", inputs: ["writeFile", "extension", "fileSize", "file"] }, { kind: "directive", type: i2.ImageFileControlDirective, selector: "input[type=file]", inputs: ["image"] }, { kind: "directive", type: i8.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i8.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i8.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i8.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i8.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i11.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i11.MatLabel, selector: "mat-label" }, { kind: "directive", type: i11.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i11.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i11.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { 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.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "component", type: i12.VdAuditComponent, selector: "vd-audit", inputs: ["item"] }, { kind: "component", type: i2.VdSelectComponent, selector: "vd-select", inputs: ["triggerCssClass", "triggerMode"] }, { kind: "component", type: i13.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i13.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i13.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i13.MatChipRow, selector: "mat-chip-row, mat-basic-chip-row", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "component", type: i14.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i15.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
159
|
+
TemplateFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", 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"] }, { 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: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i8.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i8.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i8.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { 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] ", inputs: ["disabled", "disableRipple", "color"], 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 });
|
|
165
160
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: TemplateFormComponent, decorators: [{
|
|
166
161
|
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\
|
|
162
|
+
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"] }]
|
|
168
163
|
}], ctorParameters: function () { return [{ type: i1.TemplateService }, { type: i2.FileService }, { type: i3.MatDialog }, { type: i4.ActivatedRoute }, { type: i0.ChangeDetectorRef }]; } });
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGstY21zL3NyYy9saWIvY29tbnBvbmVudHMvdGVtcGxhdGUtZm9ybS90ZW1wbGF0ZS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy90ZW1wbGF0ZS1mb3JtL3RlbXBsYXRlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFckYsT0FBTyxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9B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IjpbImltcG9ydCB7IEh0dHBFdmVudFR5cGUsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBdXRoSGVscGVyLCBGaWxlU2VydmljZSwgR2VuZXJpY1JlYWN0aXZlRm9ybUNvbXBvbmVudCB9IGZyb20gJ0BtZXNzYWlhL2Nkayc7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnQgfSBmcm9tICdAbWVzc2FpYS9jZGstYmFzZSc7XHJcbmltcG9ydCAnY29kZW1pcnJvci9hZGRvbi9lZGl0L2Nsb3NldGFnJztcclxuaW1wb3J0ICdjb2RlbWlycm9yL2FkZG9uL2VkaXQvbWF0Y2hicmFja2V0cyc7XHJcbmltcG9ydCAnY29kZW1pcnJvci9hZGRvbi9zZWxlY3Rpb24vYWN0aXZlLWxpbmUnO1xyXG5pbXBvcnQgJ2NvZGVtaXJyb3IvbW9kZS9odG1sbWl4ZWQvaHRtbG1peGVkJztcclxuaW1wb3J0ICdjb2RlbWlycm9yL21vZGUvamF2YXNjcmlwdC9qYXZhc2NyaXB0JztcclxuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCB7IFRlbXBsYXRlVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL3RlbXBsYXRlLXR5cGUnO1xyXG5pbXBvcnQgeyBDbXNTZXR0aW5ncyB9IGZyb20gJy4uLy4uL21vZGVscy9jbXMtc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJy4uLy4uL21vZGVscy90ZW1wbGF0ZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlUHJldmlldyB9IGZyb20gJy4uLy4uL21vZGVscy90ZW1wbGF0ZS1wcmV2aWV3JztcclxuaW1wb3J0IHsgVGVtcGxhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGVtcGxhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlUHJldmlld0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL3RlbXBsYXRlLXByZXZpZXctZGlhbG9nL3RlbXBsYXRlLXByZXZpZXctZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC10ZW1wbGF0ZS1mb3JtJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vdGVtcGxhdGUtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vdGVtcGxhdGUtZm9ybS5jb21wb25lbnQuc2NzcyddLFxyXG5cdGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlRm9ybUNvbXBvbmVudCBleHRlbmRzIEdlbmVyaWNSZWFjdGl2ZUZvcm1Db21wb25lbnQ8VGVtcGxhdGUsIFRlbXBsYXRlU2VydmljZT4ge1xyXG5cclxuXHQvKipcclxuXHQgKiBUZW1wbGF0ZSB0eXBlXHJcblx0ICovXHJcblx0cHVibGljIFRlbXBsYXRlVHlwZTogdHlwZW9mIFRlbXBsYXRlVHlwZSA9IFRlbXBsYXRlVHlwZTtcclxuXHJcblx0LyoqXHJcblx0ICogVXNlZCB0byBkaXNhYmxlIHNvbWUgcHJvcGVydGllcyBmb3IgY2xpZW50IG1hbmFnZXJcclxuXHQgKi9cclxuXHRwdWJsaWMgaXNDbGllbnRBZG1pbiA9IEF1dGhIZWxwZXIuaGFzUm9sZSgnQ2xpZW50QWRtaW5pc3RyYXRvcicpIHx8IEF1dGhIZWxwZXIuaGFzUm9sZSgnQ2xpZW50TWFuYWdlcicpO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZXR0aW5nczogQ21zU2V0dGluZ3NcclxuXHQgKi9cclxuXHRwdWJsaWMgc2V0dGluZ3M6IENtc1NldHRpbmdzID0gbmV3IENtc1NldHRpbmdzKCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgdGhlIGF0dGFjaG1lbnRzIGNvbnRyb2xcclxuXHQgKi9cclxuXHRnZXQgYXR0YWNobWVudHNDb250cm9sKCkgeyByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzLmF0dGFjaG1lbnRzOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEVkaXRvciBvcHRpb25zXHJcblx0ICovXHJcblx0cHVibGljIGVkaXRvck9wdGlvbnM6IGFueSA9IHtcclxuXHRcdGxpbmVOdW1iZXJzOiB0cnVlLFxyXG5cdFx0dGhlbWU6ICdtYXRlcmlhbCcsXHJcblx0XHRhdXRvQ2xvc2VUYWdzOiB0cnVlLFxyXG5cdFx0c3R5bGVBY3RpdmVMaW5lOiB0cnVlLFxyXG5cdFx0bW9kZTogJ3RleHQvaHRtbCcsXHJcblx0XHRwcm9maWxlOiAneGh0bWwnXHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogRWRpdG9yIG9wdGlvbnNcclxuXHQgKi9cclxuXHRwdWJsaWMganNvbkVkaXRvck9wdGlvbnM6IGFueSA9IHtcclxuXHRcdGxpbmVOdW1iZXJzOiB0cnVlLFxyXG5cdFx0dGhlbWU6ICdtYXRlcmlhbCcsXHJcblx0XHRhdXRvQ2xvc2VUYWdzOiB0cnVlLFxyXG5cdFx0c3R5bGVBY3RpdmVMaW5lOiB0cnVlLFxyXG5cdFx0bW9kZToge1xyXG5cdFx0XHRuYW1lOiBcImphdmFzY3JpcHRcIixcclxuXHRcdFx0anNvbjogdHJ1ZSxcclxuXHRcdFx0c3RhdGVtZW50SW5kZW50OiAyXHJcblx0XHR9LFxyXG5cdFx0cHJvZmlsZTogJ3hodG1sJyxcclxuXHRcdGxpbmVXcmFwcGluZzogdHJ1ZSxcclxuXHRcdGluZGVudFdpdGhUYWJzOiBmYWxzZSxcclxuXHRcdHRhYlNpemU6IDJcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnN0cnVjdG9yXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcm90ZWN0ZWQgc2VydmljZTogVGVtcGxhdGVTZXJ2aWNlLFxyXG5cdFx0cHJvdGVjdGVkIGZpbGVTZXJ2aWNlOiBGaWxlU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCBkaWFsb2c6IE1hdERpYWxvZyxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcblx0KSB7XHJcblx0XHRzdXBlcihUZW1wbGF0ZSwgc2VydmljZSwgcm91dGUsIGNoYW5nZURldGVjdG9yUmVmKVxyXG5cdFx0dGhpcy5zZXR0aW5ncyA9IHRoaXMuZ2V0U2VydmljZShDbXNTZXR0aW5ncyk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZW1vdmVzIGEgYXR0YWNobWVudFxyXG5cdCAqIEBwYXJhbSBhdHRhY2htZW50IFxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZW1vdmVBdHRhY2htZW50KGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQpOiB2b2lkIHtcclxuXHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXMuaXRlbS5hdHRhY2htZW50cykpIHtcclxuXHRcdFx0dmFyIGluZGV4ID0gdGhpcy5hdHRhY2htZW50c0NvbnRyb2wudmFsdWUuaW5kZXhPZihhdHRhY2htZW50LCAwKTtcclxuXHRcdFx0aWYgKGluZGV4ID4gLTEpIHtcclxuXHRcdFx0XHR0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbkNvbmZpcm0oe1xyXG5cdFx0XHRcdFx0bWVzc2FnZTogJ03DtmNodGVuIFNpZSBkaWVzZW4gQW5oYW5nIHdpcmtsaWNoIGzDtnNjaGVuPycsXHJcblx0XHRcdFx0XHR0aXRsZTogJ0zDtnNjaGVuIGJlc3TDpHRpZ2VuJyxcclxuXHRcdFx0XHRcdGNhbmNlbEJ1dHRvbjogJGxvY2FsaXplYDpAQGNhbmNlbDpDYW5jZWxgLFxyXG5cdFx0XHRcdFx0YWNjZXB0QnV0dG9uOiAkbG9jYWxpemVgOkBAeWVzOlllc2AsXHJcblx0XHRcdFx0fSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKGFjY2VwdDogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGFjY2VwdCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmF0dGFjaG1lbnRzQ29udHJvbC52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmF0dGFjaG1lbnRzQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuYXR0YWNobWVudHNDb250cm9sLm1hcmtBc0RpcnR5KCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwbG9hZHMgYSBhdHRhY2htZW50IGZpbGVcclxuXHQgKiBAcGFyYW0gZmlsZSBcclxuXHQgKi9cclxuXHRwdWJsaWMgdXBsb2FkQXR0YWNobWVudCgkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblx0XHRsZXQgZmlsZSA9ICgkZXZlbnQ/LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlc1swXTtcclxuXHRcdGlmIChmaWxlICE9IG51bGwpIHtcclxuXHRcdFx0dGhpcy5maWxlU2VydmljZS51cGxvYWQoZmlsZSwgYHVwbG9hZGAsIHsgY2xpZW50SWQ6IHRoaXMuaXRlbS5jbGllbnRJZCwgcGF0aDogYCR7dGhpcy5pdGVtLmNsaWVudElkID8gJycgOiAnY29tbW9uLyd9ZG9jc2AgfSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuXHRcdFx0XHRpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcykge1xyXG5cclxuXHRcdFx0XHRcdC8qIENhbGN1bGF0ZSB0aGUgcHJvZ3Jlc3MgcGVyY2VudGFnZSAqL1xyXG5cdFx0XHRcdFx0Y29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKTtcclxuXHJcblx0XHRcdFx0XHQvKiBQYXNzIHRoZSBwZXJjZW50YWdlIGludG8gdGhlIHByb2dyZXNzLXN0cmVhbSAqL1xyXG5cdFx0XHRcdFx0Y29uc29sZS5pbmZvKHBlcmNlbnREb25lKTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcblx0XHRcdFx0XHQvKiBBZGQgb3VyIGF0dGFjaG1lbnRzICovXHJcblx0XHRcdFx0XHR0aGlzLmF0dGFjaG1lbnRzQ29udHJvbC5zZXRWYWx1ZShbLi4udGhpcy5hdHRhY2htZW50c0NvbnRyb2wudmFsdWUsIDxBdHRhY2htZW50PmV2ZW50LmJvZHldKTtcclxuXHRcdFx0XHRcdHRoaXMuYXR0YWNobWVudHNDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0XHRcdHRoaXMuYXR0YWNobWVudHNDb250cm9sLm1hcmtBc0RpcnR5KCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERvd25sb2FkcyBhIGF0dGFjaG1lbnRcclxuXHQgKiBAcGFyYW0gYXR0YWNobWVudCBcclxuXHQgKi9cclxuXHRwdWJsaWMgZG93bmxvYWRBdHRhY2htZW50KGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQpOiB2b2lkIHtcclxuXHRcdGlmIChhdHRhY2htZW50LmlkKSB7XHJcblx0XHRcdHRoaXMuc2VydmljZS5kb3dubG9hZChgZG93bmxvYWRBdHRhY2htZW50LyR7YXR0YWNobWVudC5pZH1gKS5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdFx0c2F2ZUFzKG5ldyBCbG9iKFt4LmRhdGFdLCB7IHR5cGU6ICcnIH0pLCB4LmZpbGVuYW1lKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyB0ZW1wbGF0ZSBwcmV2aWV3XHJcblx0ICovXHJcblx0cHVibGljIHNob3dQcmV2aWV3KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5kaWFsb2cub3BlbihUZW1wbGF0ZVByZXZpZXdEaWFsb2dDb21wb25lbnQsIHtcclxuXHRcdFx0d2lkdGg6IHRoaXMuaXRlbS50eXBlID09IFRlbXBsYXRlVHlwZS5QZGYgPyAnMTAyMHB4JyA6ICc5MjBweCcsXHJcblx0XHRcdGRhdGE6IG5ldyBUZW1wbGF0ZVByZXZpZXcoe1xyXG5cdFx0XHRcdHRlbXBsYXRlSWQ6IHRoaXMuaXRlbS5pZCxcclxuXHRcdFx0XHR0eXBlOiB0aGlzLml0ZW0udHlwZVxyXG5cdFx0XHR9KSxcclxuXHRcdFx0cGFuZWxDbGFzczogWydkaWFsb2ctZnVsbC1zY3JlZW4nXVxyXG5cdFx0fSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKTtcclxuXHR9XHJcbn0iLCI8dmQtbGF5b3V0LW5hdiBjb2xvcj1cInByaW1hcnlcIiBbYmFja05hdmlnYXRpb25Sb3V0ZV09XCJsaXN0Um91dGVcIiB0b29sYmFyVGl0bGU9XCJUZW1wbGF0ZVwiIGkxOG4tdG9vbGJhclRpdGxlPVwiQEB0ZW1wbGF0ZVwiIFtlZGl0TW9kZV09XCJpc0VkaXRNb2RlXCIgW2FjdGlvbnNdPVwidG9vbGJhckFjdGlvbnNcIiBbZGF0YV09XCJpdGVtXCIgW2NvbnRleHRdPVwidGhpc1wiPlxyXG5cdDxmb3JtICpuZ0lmPVwiZm9ybVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIG5vdmFsaWRhdGUgKG5nU3VibWl0KT1cInNhdmUoKVwiPlxyXG5cdFx0PHZkLWxheW91dC1jYXJkLW92ZXIgY2xhc3M9XCJhY2NvcmRpb25cIiBjYXJkV2lkdGg9XCI3MFwiIGNvbG9yPVwicHJpbWFyeVwiIGZsZXg+XHJcblx0XHRcdDxtYXQtYWNjb3JkaW9uIFttdWx0aV09XCIhaXNFZGl0TW9kZVwiPlxyXG5cdFx0XHRcdDwhLS0gI3JlZ2lvbiBEZXRhaWxzIC0tPlxyXG5cdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsIGV4cGFuZGVkPVwidHJ1ZVwiIGlkPVwiZGV0YWlsc1wiPlxyXG5cdFx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LXBhbmVsLXRpdGxlIGkxOG49XCJAQGRldGFpbHNcIj5EZXRhaWxzPC9tYXQtcGFuZWwtdGl0bGU+XHJcblx0XHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBDbGllbnQtLT5cclxuXHRcdFx0XHRcdDxkaXYgbGF5b3V0LWd0LXNtPVwicm93XCIgbGF5b3V0PVwiY29sdW1uXCIgKm5nSWY9XCJzZXR0aW5ncz8ubXVsdGl0ZW5hbnRhYmxlICYmICFpc0NsaWVudEFkbWluXCI+XHJcblx0XHRcdFx0XHRcdDxtYXQtZm9ybS1maWVsZCBmbGV4IGxheW91dC1tYXJnaW4+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1sYWJlbCBpMThuPVwiQEBjbGllbnRcIj5DbGllbnQ8L21hdC1sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8dmQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImNsaWVudElkXCIgZW5kcG9pbnQ9XCJjbGllbnQ/ZW5hYmxlZD10cnVlXCIgbGF5b3V0PVwiY29sdW1uXCIgZmxleD48L3ZkLXNlbGVjdD5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybS5jb250cm9scy5jbGllbnRJZFsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtaGludCBpMThuPVwiQEB0ZW1wbGF0ZUVtcHR5Q2xpZW50SGludFwiPklmIGVtcHR5IHRoaXMgdGVtcGxhdGUgd2lsbCBiZSB1c2VkIGZvciBhbGwgcHJvamVjdHM8L21hdC1oaW50PlxyXG5cdFx0XHRcdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIFR5cGUtLT5cclxuXHRcdFx0XHRcdDxkaXYgbGF5b3V0LWd0LXNtPVwicm93XCIgbGF5b3V0PVwiY29sdW1uXCI+XHJcblx0XHRcdFx0XHRcdDxtYXQtZm9ybS1maWVsZCBmbGV4IGxheW91dC1tYXJnaW4+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1sYWJlbCBpMThuPVwiQEB0eXBlXCI+VHlwZTwvbWF0LWxhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdDx2ZC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidHlwZVwiIFtlbnVtXT1cIlRlbXBsYXRlVHlwZVwiIGxheW91dD1cImNvbHVtblwiIGZsZXg+PC92ZC1zZWxlY3Q+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGZvcm0uY29udHJvbHMudHlwZVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG5cdFx0XHRcdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIE5hbWUgJiBTdWJqZWN0IC0tPlxyXG5cdFx0XHRcdFx0PGRpdiBsYXlvdXQ9XCJyb3dcIiBmbGV4PlxyXG5cdFx0XHRcdFx0XHQ8IS0tICNyZWdpb24gTmFtZSAtLT5cclxuXHRcdFx0XHRcdFx0PG1hdC1mb3JtLWZpZWxkIGZsZXggbGF5b3V0LW1hcmdpbj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWxhYmVsIGkxOG49XCJAQG5hbWVcIj5OYW1lPC9tYXQtbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybS5jb250cm9scy5uYW1lWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcblx0XHRcdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0XHRcdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBLZXkgLS0+XHJcblx0XHRcdFx0XHRcdDxtYXQtZm9ybS1maWVsZCBmbGV4IGxheW91dC1tYXJnaW4+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1sYWJlbCBpMThuPVwiQEBrZXlcIj5LZXk8L21hdC1sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwia2V5XCI+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGZvcm0uY29udHJvbHMua2V5WydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcblx0XHRcdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0XHRcdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBTdWJqZWN0IC0tPlxyXG5cdFx0XHRcdFx0PGRpdiBsYXlvdXQ9XCJyb3dcIiBmbGV4PlxyXG5cdFx0XHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQgZmxleCBsYXlvdXQtbWFyZ2luPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtbGFiZWwgaTE4bj1cIkBAc3ViamVjdFwiPlN1YmplY3Q8L21hdC1sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwic3ViamVjdFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBmb3JtLmNvbnRyb2xzLnN1YmplY3RbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuXHRcdFx0XHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBBdHRhY2htZW50cyAtLT5cclxuXHRcdFx0XHRcdDxkaXYgbGF5b3V0PVwicm93XCIgZmxleD5cclxuXHRcdFx0XHRcdFx0PG1hdC1mb3JtLWZpZWxkIGZsZXggbGF5b3V0LW1hcmdpbj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWxhYmVsIGkxOG49XCJAQGF0dGFjaG1lbnRzXCI+QXR0YWNobWVudHM8L21hdC1sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWNoaXAtZ3JpZCAjY2hpcExpc3QgZm9ybUNvbnRyb2xOYW1lPVwiYXR0YWNobWVudHNcIiBmbGV4PlxyXG5cdFx0XHRcdFx0XHRcdFx0PG1hdC1jaGlwLXJvdyAqbmdGb3I9XCJsZXQgYXR0YWNobWVudCBvZiBmb3JtLmNvbnRyb2xzLmF0dGFjaG1lbnRzLnZhbHVlXCIgY29sb3I9XCJwcmltYXJ5XCIgcmVtb3ZhYmxlPVwidHJ1ZVwiIChyZW1vdmVkKT1cInJlbW92ZUF0dGFjaG1lbnQoYXR0YWNobWVudClcIiAoY2xpY2spPVwiZG93bmxvYWRBdHRhY2htZW50KGF0dGFjaG1lbnQpXCIgc2VsZWN0ZWQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdHt7YXR0YWNobWVudC5vcmlnaW5hbE5hbWV9fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bWF0LWljb24gbWF0Q2hpcFJlbW92ZT5jYW5jZWw8L21hdC1pY29uPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9tYXQtY2hpcC1yb3c+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgcGxhY2Vob2xkZXI9XCJBdHRhY2htZW50c1wiIGkxOG4tcGxhY2Vob2xkZXI9XCJAQGF0dGFjaG1lbnRzXCIgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwTGlzdFwiIFttYXRDaGlwSW5wdXRBZGRPbkJsdXJdPVwiZmFsc2VcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiByZWFkb25seT5cclxuXHRcdFx0XHRcdFx0XHRcdDxtYXQtaWNvbiBtYXRTdWZmaXggKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+cHVibGlzaDwvbWF0LWljb24+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgaGlkZGVuIHR5cGU9XCJmaWxlXCIgYWNjZXB0PVwie3thbGxvd2VkRXh0ZW5zaW9uc319XCIgI2ZpbGVJbnB1dCAoY2hhbmdlKT1cInVwbG9hZEF0dGFjaG1lbnQoJGV2ZW50KVwiIC8+XHJcblx0XHRcdFx0XHRcdFx0PC9tYXQtY2hpcC1ncmlkPlxyXG5cdFx0XHRcdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIE5vdGljZSAtLT5cclxuXHRcdFx0XHRcdDxkaXYgbGF5b3V0PVwicm93XCIgZmxleD5cclxuXHRcdFx0XHRcdFx0PG1hdC1mb3JtLWZpZWxkIGZsZXggbGF5b3V0LW1hcmdpbj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWxhYmVsIGkxOG49XCJAQG5vdGljZVwiPk5vdGljZTwvbWF0LWxhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0YXJlYSBtYXRJbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBmb3JtQ29udHJvbE5hbWU9XCJub3RpY2VcIj48L3RleHRhcmVhPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBmb3JtLmNvbnRyb2xzLm5vdGljZVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG5cdFx0XHRcdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIEVuYWJsZWQtLT5cclxuXHRcdFx0XHRcdDxkaXYgbGF5b3V0LWd0LXNtPVwicm93XCIgbGF5b3V0PVwiY29sdW1uXCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgbGF5b3V0LW1hcmdpbiBjbGFzcz1cInB1c2gtdG9wIHB1c2gtYm90dG9tXCI+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJlbmFibGVkXCIgaTE4bj1cIkBAYWN0aXZlXCI+QWN0aXZlPC9tYXQtY2hlY2tib3g+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PG1hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCIgaTE4bj1cIkBAc2F2ZVwiPlNhdmU8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiYXBwbHkoKVwiICpuZ0lmPVwiaXNFZGl0TW9kZVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIGkxOG49XCJAQGFwcGx5XCI+QXBwbHk8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiYmFjaygpXCIgaTE4bj1cIkBAY2FuY2VsXCI+Q2FuY2VsPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGZsZXg+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9tYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gQ29udGVudCAtLT5cclxuXHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbCBpZD1cImNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdFx0PG1hdC1wYW5lbC10aXRsZT5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBpMThuPVwiQEBjb250ZW50XCI+Q29udGVudDwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PC9tYXQtcGFuZWwtdGl0bGU+XHJcblx0XHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0PGRpdiBsYXlvdXQtbWFyZ2luPlxyXG5cdFx0XHRcdFx0XHQ8bmd4LWNvZGVtaXJyb3IgZm9ybUNvbnRyb2xOYW1lPVwiY29udGVudFwiIHJvd3M9XCIxNjBcIiBbb3B0aW9uc109XCJlZGl0b3JPcHRpb25zXCI+PC9uZ3gtY29kZW1pcnJvcj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PG1hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCIgaTE4bj1cIkBAc2F2ZVwiPlNhdmU8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiYXBwbHkoKVwiICpuZ0lmPVwiaXNFZGl0TW9kZVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIGkxOG49XCJAQGFwcGx5XCI+QXBwbHk8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwic2hvd1ByZXZpZXcoKVwiICpuZ0lmPVwiaXNFZGl0TW9kZVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZyB8fCAhZm9ybS5wcmlzdGluZVwiIGkxOG49XCJAQHByZXZpZXdcIj5QcmV2aWV3PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cImJhY2soKVwiIGkxOG49XCJAQGNhbmNlbFwiPkNhbmNlbDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBmbGV4Pjwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvbWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdFx0PCEtLSAjcmVnaW9uIENvbnRlbnQgLS0+XHJcblx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwgaWQ9XCJ0ZXN0RGF0YVwiPlxyXG5cdFx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGkxOG49XCJAQHRlc3REYXRhXCI+VGVzdCBEYXRhPC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L21hdC1wYW5lbC10aXRsZT5cclxuXHRcdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblx0XHRcdFx0XHQ8ZGl2IGxheW91dC1tYXJnaW4+XHJcblx0XHRcdFx0XHRcdDxuZ3gtY29kZW1pcnJvciBmb3JtQ29udHJvbE5hbWU9XCJkdW1teURhdGFcIiByb3dzPVwiMTIwXCIgW29wdGlvbnNdPVwianNvbkVkaXRvck9wdGlvbnNcIj48L25neC1jb2RlbWlycm9yPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8bWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBpMThuPVwiQEBzYXZlXCI+U2F2ZTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJhcHBseSgpXCIgKm5nSWY9XCJpc0VkaXRNb2RlXCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCIgaTE4bj1cIkBAYXBwbHlcIj5BcHBseTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJzaG93UHJldmlldygpXCIgKm5nSWY9XCJpc0VkaXRNb2RlXCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nIHx8ICFmb3JtLnByaXN0aW5lXCIgaTE4bj1cIkBAcHJldmlld1wiPlByZXZpZXc8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiYmFjaygpXCIgaTE4bj1cIkBAY2FuY2VsXCI+Q2FuY2VsPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGZsZXg+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9tYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gQXVkaXQgLS0+XHJcblx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwgaWQ9XCJhdWRpdFwiICpuZ0lmPVwiaXNFZGl0TW9kZVwiPlxyXG5cdFx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGkxOG49XCJAQGF1ZGl0XCI+QXVkaXQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdDx2ZC1hdWRpdCBbaXRlbV09XCJpdGVtXCI+IDwvdmQtYXVkaXQ+XHJcblx0XHRcdFx0XHQ8bWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIChjbGljayk9XCJiYWNrKClcIiBpMThuPVwiQEBjbG9zZVwiPkNsb3NlPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGZsZXg+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9tYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cdFx0XHQ8L21hdC1hY2NvcmRpb24+XHJcblx0XHQ8L3ZkLWxheW91dC1jYXJkLW92ZXI+XHJcblx0PC9mb3JtPlxyXG48L3ZkLWxheW91dC1uYXY+Il19
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGstY21zL3NyYy9saWIvY29tbnBvbmVudHMvdGVtcGxhdGUtZm9ybS90ZW1wbGF0ZS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy90ZW1wbGF0ZS1mb3JtL3RlbXBsYXRlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekUsT0FBTyxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUs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RUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU87WUFDOUQsSUFBSSxFQUFFLElBQUksZUFBZSxDQUFDO2dCQUN6QixVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO2FBQ3BCLENBQUM7WUFDRixVQUFVLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztTQUNsQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDOUIsQ0FBQzs7a0hBL0lXLHFCQUFxQjtzR0FBckIscUJBQXFCLGdGQ3hCbEMsMnRKQW9GZ0I7MkZENURILHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDQyxtQkFBbUIsaUJBR2QsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgRmlsZVNlcnZpY2UsIEdlbmVyaWNSZWFjdGl2ZUZvcm1Db21wb25lbnQgfSBmcm9tICdAbWVzc2FpYS9jZGsnO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50IH0gZnJvbSAnQG1lc3NhaWEvY2RrLWJhc2UnO1xyXG5pbXBvcnQgJ2NvZGVtaXJyb3IvYWRkb24vZWRpdC9jbG9zZXRhZyc7XHJcbmltcG9ydCAnY29kZW1pcnJvci9hZGRvbi9lZGl0L21hdGNoYnJhY2tldHMnO1xyXG5pbXBvcnQgJ2NvZGVtaXJyb3IvYWRkb24vc2VsZWN0aW9uL2FjdGl2ZS1saW5lJztcclxuaW1wb3J0ICdjb2RlbWlycm9yL21vZGUvaHRtbG1peGVkL2h0bWxtaXhlZCc7XHJcbmltcG9ydCAnY29kZW1pcnJvci9tb2RlL2phdmFzY3JpcHQvamF2YXNjcmlwdCc7XHJcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy90ZW1wbGF0ZS10eXBlJztcclxuaW1wb3J0IHsgQ21zU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvY21zLXNldHRpbmdzJztcclxuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGVtcGxhdGUnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVByZXZpZXcgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGVtcGxhdGUtcHJldmlldyc7XHJcbmltcG9ydCB7IFRlbXBsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RlbXBsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVByZXZpZXdEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi90ZW1wbGF0ZS1wcmV2aWV3LWRpYWxvZy90ZW1wbGF0ZS1wcmV2aWV3LWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtdGVtcGxhdGUtZm9ybScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL3RlbXBsYXRlLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcclxuXHRlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUZvcm1Db21wb25lbnQgZXh0ZW5kcyBHZW5lcmljUmVhY3RpdmVGb3JtQ29tcG9uZW50PFRlbXBsYXRlLCBUZW1wbGF0ZVNlcnZpY2U+IHtcclxuXHJcblx0LyoqXHJcblx0ICogVGVtcGxhdGUgdHlwZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBUZW1wbGF0ZVR5cGU6IHR5cGVvZiBUZW1wbGF0ZVR5cGUgPSBUZW1wbGF0ZVR5cGU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNldHRpbmdzOiBDbXNTZXR0aW5nc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXR0aW5nczogQ21zU2V0dGluZ3MgPSBuZXcgQ21zU2V0dGluZ3MoKTtcclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyB0aGUgYXR0YWNobWVudHMgY29udHJvbFxyXG5cdCAqL1xyXG5cdGdldCBhdHRhY2htZW50c0NvbnRyb2woKSB7IHJldHVybiB0aGlzLmZvcm0uY29udHJvbHMuYXR0YWNobWVudHM7IH1cclxuXHJcblx0LyoqXHJcblx0ICogRWRpdG9yIG9wdGlvbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgZWRpdG9yT3B0aW9uczogYW55ID0ge1xyXG5cdFx0bGluZU51bWJlcnM6IHRydWUsXHJcblx0XHR0aGVtZTogJ21hdGVyaWFsJyxcclxuXHRcdGF1dG9DbG9zZVRhZ3M6IHRydWUsXHJcblx0XHRzdHlsZUFjdGl2ZUxpbmU6IHRydWUsXHJcblx0XHRtb2RlOiAndGV4dC9odG1sJyxcclxuXHRcdHByb2ZpbGU6ICd4aHRtbCdcclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBFZGl0b3Igb3B0aW9uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBqc29uRWRpdG9yT3B0aW9uczogYW55ID0ge1xyXG5cdFx0bGluZU51bWJlcnM6IHRydWUsXHJcblx0XHR0aGVtZTogJ21hdGVyaWFsJyxcclxuXHRcdGF1dG9DbG9zZVRhZ3M6IHRydWUsXHJcblx0XHRzdHlsZUFjdGl2ZUxpbmU6IHRydWUsXHJcblx0XHRtb2RlOiB7XHJcblx0XHRcdG5hbWU6IFwiamF2YXNjcmlwdFwiLFxyXG5cdFx0XHRqc29uOiB0cnVlLFxyXG5cdFx0XHRzdGF0ZW1lbnRJbmRlbnQ6IDJcclxuXHRcdH0sXHJcblx0XHRwcm9maWxlOiAneGh0bWwnLFxyXG5cdFx0bGluZVdyYXBwaW5nOiB0cnVlLFxyXG5cdFx0aW5kZW50V2l0aFRhYnM6IGZhbHNlLFxyXG5cdFx0dGFiU2l6ZTogMlxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByb3RlY3RlZCBzZXJ2aWNlOiBUZW1wbGF0ZVNlcnZpY2UsXHJcblx0XHRwcm90ZWN0ZWQgZmlsZVNlcnZpY2U6IEZpbGVTZXJ2aWNlLFxyXG5cdFx0cHJvdGVjdGVkIGRpYWxvZzogTWF0RGlhbG9nLFxyXG5cdFx0cHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuXHRcdHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuXHQpIHtcclxuXHRcdHN1cGVyKFRlbXBsYXRlLCBzZXJ2aWNlLCByb3V0ZSwgY2hhbmdlRGV0ZWN0b3JSZWYpXHJcblx0XHR0aGlzLnNldHRpbmdzID0gdGhpcy5nZXRTZXJ2aWNlKENtc1NldHRpbmdzKTtcclxuXHJcblx0XHRpZiAodGhpcy5zZXR0aW5ncz8ubXVsdGl0ZW5hbnRhYmxlIHx8IHRoaXMuc2V0dGluZ3M/Lm11bHRpQ2xpZW50cykge1xyXG5cdFx0XHR0aGlzLmluY2x1ZGUoJ0NsaWVudEpvaW5zJywgdHJ1ZSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuc2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSB8fCB0aGlzLnNldHRpbmdzPy5tdWx0aURlcGFydG1lbnRzKSB7XHJcblx0XHRcdHRoaXMuaW5jbHVkZSgnRGVwYXJ0bWVudEpvaW5zJywgdHJ1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZW1vdmVzIGEgYXR0YWNobWVudFxyXG5cdCAqIEBwYXJhbSBhdHRhY2htZW50IFxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZW1vdmVBdHRhY2htZW50KGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQpOiB2b2lkIHtcclxuXHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXMuaXRlbS5hdHRhY2htZW50cykpIHtcclxuXHRcdFx0dmFyIGluZGV4ID0gdGhpcy5hdHRhY2htZW50c0NvbnRyb2wudmFsdWUuaW5kZXhPZihhdHRhY2htZW50LCAwKTtcclxuXHRcdFx0aWYgKGluZGV4ID4gLTEpIHtcclxuXHRcdFx0XHR0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbkNvbmZpcm0oe1xyXG5cdFx0XHRcdFx0bWVzc2FnZTogJ03DtmNodGVuIFNpZSBkaWVzZW4gQW5oYW5nIHdpcmtsaWNoIGzDtnNjaGVuPycsXHJcblx0XHRcdFx0XHR0aXRsZTogJ0zDtnNjaGVuIGJlc3TDpHRpZ2VuJyxcclxuXHRcdFx0XHRcdGNhbmNlbEJ1dHRvbjogJGxvY2FsaXplYDpAQGNhbmNlbDpDYW5jZWxgLFxyXG5cdFx0XHRcdFx0YWNjZXB0QnV0dG9uOiAkbG9jYWxpemVgOkBAeWVzOlllc2AsXHJcblx0XHRcdFx0fSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKGFjY2VwdDogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGFjY2VwdCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmF0dGFjaG1lbnRzQ29udHJvbC52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmF0dGFjaG1lbnRzQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuYXR0YWNobWVudHNDb250cm9sLm1hcmtBc0RpcnR5KCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwbG9hZHMgYSBhdHRhY2htZW50IGZpbGVcclxuXHQgKiBAcGFyYW0gZmlsZSBcclxuXHQgKi9cclxuXHRwdWJsaWMgdXBsb2FkQXR0YWNobWVudCgkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblx0XHRsZXQgZmlsZSA9ICgkZXZlbnQ/LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlc1swXTtcclxuXHRcdGlmIChmaWxlICE9IG51bGwpIHtcclxuXHRcdFx0Ly8gdGhpcy5maWxlU2VydmljZS51cGxvYWQoZmlsZSwgYHVwbG9hZGAsIHsgY2xpZW50SWQ6IHRoaXMuaXRlbS5jbGllbnRJZCwgcGF0aDogYCR7dGhpcy5pdGVtLmNsaWVudElkID8gJycgOiAnY29tbW9uLyd9ZG9jc2AgfSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuXHRcdFx0Ly8gXHRpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcykge1xyXG5cclxuXHRcdFx0Ly8gXHRcdC8qIENhbGN1bGF0ZSB0aGUgcHJvZ3Jlc3MgcGVyY2VudGFnZSAqL1xyXG5cdFx0XHQvLyBcdFx0Y29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKTtcclxuXHJcblx0XHRcdC8vIFx0XHQvKiBQYXNzIHRoZSBwZXJjZW50YWdlIGludG8gdGhlIHByb2dyZXNzLXN0cmVhbSAqL1xyXG5cdFx0XHQvLyBcdFx0Y29uc29sZS5pbmZvKHBlcmNlbnREb25lKTtcclxuXHRcdFx0Ly8gXHR9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcblx0XHRcdC8vIFx0XHQvKiBBZGQgb3VyIGF0dGFjaG1lbnRzICovXHJcblx0XHRcdC8vIFx0XHR0aGlzLmF0dGFjaG1lbnRzQ29udHJvbC5zZXRWYWx1ZShbLi4udGhpcy5hdHRhY2htZW50c0NvbnRyb2wudmFsdWUsIDxBdHRhY2htZW50PmV2ZW50LmJvZHldKTtcclxuXHRcdFx0Ly8gXHRcdHRoaXMuYXR0YWNobWVudHNDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0Ly8gXHRcdHRoaXMuYXR0YWNobWVudHNDb250cm9sLm1hcmtBc0RpcnR5KCk7XHJcblx0XHRcdC8vIFx0fVxyXG5cdFx0XHQvLyB9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERvd25sb2FkcyBhIGF0dGFjaG1lbnRcclxuXHQgKiBAcGFyYW0gYXR0YWNobWVudCBcclxuXHQgKi9cclxuXHRwdWJsaWMgZG93bmxvYWRBdHRhY2htZW50KGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQpOiB2b2lkIHtcclxuXHRcdGlmIChhdHRhY2htZW50LmlkKSB7XHJcblx0XHRcdHRoaXMuc2VydmljZS5kb3dubG9hZChgZG93bmxvYWRBdHRhY2htZW50LyR7YXR0YWNobWVudC5pZH1gKS5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdFx0c2F2ZUFzKG5ldyBCbG9iKFt4LmRhdGFdLCB7IHR5cGU6ICcnIH0pLCB4LmZpbGVuYW1lKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyB0ZW1wbGF0ZSBwcmV2aWV3XHJcblx0ICovXHJcblx0cHVibGljIHNob3dQcmV2aWV3KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5kaWFsb2cub3BlbihUZW1wbGF0ZVByZXZpZXdEaWFsb2dDb21wb25lbnQsIHtcclxuXHRcdFx0d2lkdGg6IHRoaXMuaXRlbS50eXBlID09IFRlbXBsYXRlVHlwZS5QZGYgPyAnMTAyMHB4JyA6ICc5MjBweCcsXHJcblx0XHRcdGRhdGE6IG5ldyBUZW1wbGF0ZVByZXZpZXcoe1xyXG5cdFx0XHRcdHRlbXBsYXRlSWQ6IHRoaXMuaXRlbS5pZCxcclxuXHRcdFx0XHR0eXBlOiB0aGlzLml0ZW0udHlwZVxyXG5cdFx0XHR9KSxcclxuXHRcdFx0cGFuZWxDbGFzczogWydkaWFsb2ctZnVsbC1zY3JlZW4nXVxyXG5cdFx0fSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKTtcclxuXHR9XHJcbn0iLCI8dmQtbGF5b3V0LW5hdiBjb2xvcj1cInByaW1hcnlcIiBbYmFja05hdmlnYXRpb25Sb3V0ZV09XCJsaXN0Um91dGVcIiB0b29sYmFyVGl0bGU9XCJUZW1wbGF0ZVwiIGkxOG4tdG9vbGJhclRpdGxlPVwiQEB0ZW1wbGF0ZVwiIFtlZGl0TW9kZV09XCJpc0VkaXRNb2RlXCIgW2FjdGlvbnNdPVwidG9vbGJhckFjdGlvbnNcIiBbZGF0YV09XCJpdGVtXCIgW2NvbnRleHRdPVwidGhpc1wiPlxyXG5cdDxmb3JtICpuZ0lmPVwiZm9ybVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIG5vdmFsaWRhdGUgKG5nU3VibWl0KT1cInNhdmUoKVwiPlxyXG5cdFx0PHZkLWxheW91dC1jYXJkLW92ZXIgY2xhc3M9XCJhY2NvcmRpb25cIiBjYXJkV2lkdGg9XCI3MFwiIGNvbG9yPVwicHJpbWFyeVwiIGZsZXg+XHJcblx0XHRcdDxtYXQtYWNjb3JkaW9uIFttdWx0aV09XCIhaXNFZGl0TW9kZVwiPlxyXG5cdFx0XHRcdDwhLS0gI3JlZ2lvbiBEZXRhaWxzIC0tPlxyXG5cdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsIGV4cGFuZGVkPVwidHJ1ZVwiIGlkPVwiZGV0YWlsc1wiPlxyXG5cdFx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LXBhbmVsLXRpdGxlIGkxOG49XCJAQGRldGFpbHNcIj5EZXRhaWxzPC9tYXQtcGFuZWwtdGl0bGU+XHJcblx0XHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIG1hdEV4cGFuc2lvblBhbmVsQ29udGVudD5cclxuXHRcdFx0XHRcdFx0PHZkLWdlbmVyaWMtZm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBbZmllbGRHcm91cHNdPVwiZmllbGRHcm91cHNcIiBbZmllbGRTZXRzXT1cIlsnZGV0YWlscyddXCIgW2NvbnRleHRdPVwidGhpc1wiPjwvdmQtZ2VuZXJpYy1mb3JtPlxyXG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDxtYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIGkxOG49XCJAQHNhdmVcIj5TYXZlPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cImFwcGx5KClcIiAqbmdJZj1cImlzRWRpdE1vZGVcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBpMThuPVwiQEBhcHBseVwiPkFwcGx5PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cImJhY2soKVwiIGkxOG49XCJAQGNhbmNlbFwiPkNhbmNlbDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBmbGV4Pjwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvbWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdFx0PCEtLSAjcmVnaW9uIENvbnRlbnQgLS0+XHJcblx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwgaWQ9XCJjb250ZW50XCI+XHJcblx0XHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblx0XHRcdFx0XHRcdDxtYXQtcGFuZWwtdGl0bGU+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gaTE4bj1cIkBAY29udGVudFwiPkNvbnRlbnQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBtYXRFeHBhbnNpb25QYW5lbENvbnRlbnQ+XHJcblx0XHRcdFx0XHRcdDxkaXYgbGF5b3V0LW1hcmdpbj5cclxuXHRcdFx0XHRcdFx0XHQ8bmd4LWNvZGVtaXJyb3IgZm9ybUNvbnRyb2xOYW1lPVwiY29udGVudFwiIHJvd3M9XCIxNjBcIiBbb3B0aW9uc109XCJlZGl0b3JPcHRpb25zXCI+PC9uZ3gtY29kZW1pcnJvcj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PG1hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCIgaTE4bj1cIkBAc2F2ZVwiPlNhdmU8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiYXBwbHkoKVwiICpuZ0lmPVwiaXNFZGl0TW9kZVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIGkxOG49XCJAQGFwcGx5XCI+QXBwbHk8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwic2hvd1ByZXZpZXcoKVwiICpuZ0lmPVwiaXNFZGl0TW9kZVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZyB8fCAhZm9ybS5wcmlzdGluZVwiIGkxOG49XCJAQHByZXZpZXdcIj5QcmV2aWV3PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cImJhY2soKVwiIGkxOG49XCJAQGNhbmNlbFwiPkNhbmNlbDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBmbGV4Pjwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvbWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdFx0PCEtLSAjcmVnaW9uIENvbnRlbnQgLS0+XHJcblx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwgaWQ9XCJ0ZXN0RGF0YVwiPlxyXG5cdFx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGkxOG49XCJAQHRlc3REYXRhXCI+VGVzdCBEYXRhPC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L21hdC1wYW5lbC10aXRsZT5cclxuXHRcdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgbWF0RXhwYW5zaW9uUGFuZWxDb250ZW50PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGxheW91dC1tYXJnaW4+XHJcblx0XHRcdFx0XHRcdFx0PG5neC1jb2RlbWlycm9yIGZvcm1Db250cm9sTmFtZT1cImR1bW15RGF0YVwiIHJvd3M9XCIxMjBcIiBbb3B0aW9uc109XCJqc29uRWRpdG9yT3B0aW9uc1wiPjwvbmd4LWNvZGVtaXJyb3I+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDxtYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIGkxOG49XCJAQHNhdmVcIj5TYXZlPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cImFwcGx5KClcIiAqbmdJZj1cImlzRWRpdE1vZGVcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBpMThuPVwiQEBhcHBseVwiPkFwcGx5PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cInNob3dQcmV2aWV3KClcIiAqbmdJZj1cImlzRWRpdE1vZGVcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmcgfHwgIWZvcm0ucHJpc3RpbmVcIiBpMThuPVwiQEBwcmV2aWV3XCI+UHJldmlldzwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJiYWNrKClcIiBpMThuPVwiQEBjYW5jZWxcIj5DYW5jZWw8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gZmxleD48L3NwYW4+XHJcblx0XHRcdFx0XHQ8L21hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuXHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdDwhLS0gI3JlZ2lvbiBBdWRpdCAtLT5cclxuXHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbCBpZD1cImF1ZGl0XCIgKm5nSWY9XCJpc0VkaXRNb2RlXCI+XHJcblx0XHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblx0XHRcdFx0XHRcdDxtYXQtcGFuZWwtdGl0bGU+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gaTE4bj1cIkBAYXVkaXRcIj5BdWRpdDwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PC9tYXQtcGFuZWwtdGl0bGU+XHJcblx0XHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIG1hdEV4cGFuc2lvblBhbmVsQ29udGVudD5cclxuXHRcdFx0XHRcdFx0PHZkLWF1ZGl0IFtpdGVtXT1cIml0ZW1cIj4gPC92ZC1hdWRpdD5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8bWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIChjbGljayk9XCJiYWNrKClcIiBpMThuPVwiQEBjbG9zZVwiPkNsb3NlPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGZsZXg+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9tYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cdFx0XHQ8L21hdC1hY2NvcmRpb24+XHJcblx0XHQ8L3ZkLWxheW91dC1jYXJkLW92ZXI+XHJcblx0PC9mb3JtPlxyXG48L3ZkLWxheW91dC1uYXY+Il19
|
|
@@ -69,13 +69,6 @@ __decorate([
|
|
|
69
69
|
Display($localize `:@@departments:Departments`),
|
|
70
70
|
__metadata("design:type", Array)
|
|
71
71
|
], ContentVariable.prototype, "departmentJoins", void 0);
|
|
72
|
-
__decorate([
|
|
73
|
-
prop(),
|
|
74
|
-
FormField({ row: 20 }),
|
|
75
|
-
Column({}),
|
|
76
|
-
Display($localize `:@@default:Default`),
|
|
77
|
-
__metadata("design:type", Boolean)
|
|
78
|
-
], ContentVariable.prototype, "default", void 0);
|
|
79
72
|
__decorate([
|
|
80
73
|
prop(),
|
|
81
74
|
FormField({ row: 21 }),
|
|
@@ -85,7 +78,10 @@ __decorate([
|
|
|
85
78
|
], ContentVariable.prototype, "enabled", void 0);
|
|
86
79
|
ContentVariable = __decorate([
|
|
87
80
|
Api('contentvariable'),
|
|
88
|
-
Table({
|
|
81
|
+
Table({
|
|
82
|
+
endpoint: 'contentvariable',
|
|
83
|
+
projection: ['id', 'createdDate', 'name', 'value', 'enabled']
|
|
84
|
+
})
|
|
89
85
|
], ContentVariable);
|
|
90
86
|
export { ContentVariable };
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC12YXJpYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9tb2RlbHMvY29udGVudC12YXJpYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBT25FLElBQU0sZUFBZSxHQUFyQixNQUFNLGVBQWdCLFNBQVEsV0FBVztDQTZGL0MsQ0FBQTtBQXpGRztJQUFDLElBQUksRUFBRTs7OENBQ087QUFLZDtJQUFDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN0QixNQUFNLENBQUMsRUFBRSxDQUFDO0lBQ1YsT0FBTyxDQUFDLFNBQVMsQ0FBQSxjQUFjLENBQUM7OzZDQUNwQjtBQUtiO0lBQUMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3RCLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDNUIsT0FBTyxDQUFDLFNBQVMsQ0FBQSxnQkFBZ0IsQ0FBQzs7OENBQ3JCO0FBS2Q7SUFBQyxRQUFRLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQWtCLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pFLFNBQVMsQ0FBeUM7UUFDL0MsR0FBRyxFQUFFLENBQUM7UUFDTixRQUFRLEVBQUUsUUFBUTtRQUNsQixN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RUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdEIsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQzNCLE9BQU8sQ0FBQyxTQUFTLENBQUEsb0JBQW9CLENBQUM7O2dEQUN0QjtBQTVGUixlQUFlO0lBTDNCLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQztJQUN0QixLQUFLLENBQUM7UUFDSCxRQUFRLEVBQUUsaUJBQWlCO1FBQzNCLFVBQVUsRUFBRSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUM7S0FDaEUsQ0FBQztHQUNXLGVBQWUsQ0E2RjNCO1NBN0ZZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGksIEF1ZGl0RW50aXR5LCBDb2x1bW4sIERpc3BsYXksIEZvcm1GaWVsZCwgR3JpZCwgcHJvcCwgcmVxdWlyZWQsIFRhYmxlIH0gZnJvbSBcIkBtZXNzYWlhL2Nka1wiO1xyXG5pbXBvcnQgeyBDb250ZW50VmFyaWFibGVDbGllbnQgfSBmcm9tIFwiLi9jb250ZW50LXZhcmlhYmxlLWNsaWVudFwiO1xyXG5pbXBvcnQgeyBDb250ZW50VmFyaWFibGVEZXBhcnRtZW50IH0gZnJvbSBcIi4vY29udGVudC12YXJpYWJsZS1kZXBhcnRtZW50XCI7XHJcblxyXG5AQXBpKCdjb250ZW50dmFyaWFibGUnKVxyXG5AVGFibGUoe1xyXG4gICAgZW5kcG9pbnQ6ICdjb250ZW50dmFyaWFibGUnLFxyXG4gICAgcHJvamVjdGlvbjogWydpZCcsICdjcmVhdGVkRGF0ZScsICduYW1lJywgJ3ZhbHVlJywgJ2VuYWJsZWQnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udGVudFZhcmlhYmxlIGV4dGVuZHMgQXVkaXRFbnRpdHkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgQHByb3AoKVxyXG4gICAgdGl0bGU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBAcmVxdWlyZWQoKVxyXG4gICAgQEZvcm1GaWVsZCh7IHJvdzogMTAgfSlcclxuICAgIEBDb2x1bW4oe30pXHJcbiAgICBARGlzcGxheSgkbG9jYWxpemVgOkBAbmFtZTpOYW1lYClcclxuICAgIG5hbWU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBAcmVxdWlyZWQoKVxyXG4gICAgQEZvcm1GaWVsZCh7IHJvdzogMTEgfSlcclxuICAgIEBDb2x1bW4oeyBkaXNwbGF5OiBHcmlkLlNtIH0pXHJcbiAgICBARGlzcGxheSgkbG9jYWxpemVgOkBAdmFsdWU6VmFsdWVgKVxyXG4gICAgdmFsdWU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBAcmVxdWlyZWQoeyBjb25kaXRpb25hbEV4cHJlc3Npb246ICh4OiBDb250ZW50VmFyaWFibGUpID0+IHRydWUgfSlcclxuICAgIEBGb3JtRmllbGQ8Q29udGVudFZhcmlhYmxlLCBDb250ZW50VmFyaWFibGVDbGllbnQ+KHtcclxuICAgICAgICByb3c6IDEsXHJcbiAgICAgICAgZW5kcG9pbnQ6ICdjbGllbnQnLFxyXG4gICAgICAgIHBhcmFtczogKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHByb2plY3Rpb246ICdpZCxkaXNwbGF5TmFtZScsXHJcbiAgICAgICAgICAgICAgICBzb3J0Qnk6ICdpZCdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgICAgdHJpZ2dlck1vZGU6ICdjaGlwJyxcclxuICAgICAgICBoaWRlOiAoXywgX18sIGN0eDogYW55KSA9PiAhY3R4LmlzQWRtaW4gfHwgKCFjdHguc2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSAmJiAhY3R4LnNldHRpbmdzPy5tdWx0aUNsaWVudHMpLFxyXG4gICAgICAgIGNvbXBhcmVXaXRoOiAobywgdikgPT4gby5jbGllbnRJZCA9PT0gdi5jbGllbnRJZCxcclxuICAgICAgICBtYXBwZXI6ICh4OiB7IGlkOiBudW1iZXIsIGRpc3BsYXlOYW1lOiBzdHJpbmcgfVtdKSA9PiB4Lm1hcCh5ID0+IG5ldyBDb250ZW50VmFyaWFibGVDbGllbnQoeyBjbGllbnRJZDogeS5pZCwgY2xpZW50TmFtZTogeS5kaXNwbGF5TmFtZSB9KSksXHJcbiAgICAgICAgb3B0aW9uVGVtcGxhdGU6ICh4KSA9PiB4Py5jbGllbnROYW1lLFxyXG4gICAgICAgIHRyaWdnZXJNYXBwZXI6ICh4KSA9PiB4Py5jbGllbnROYW1lXHJcbiAgICB9KVxyXG4gICAgQERpc3BsYXkoJGxvY2FsaXplYDpAQHByb2plY3RzOlByb2plY3RzYClcclxuICAgIGNsaWVudEpvaW5zOiBDb250ZW50VmFyaWFibGVDbGllbnRbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBAcmVxdWlyZWQoeyBjb25kaXRpb25hbEV4cHJlc3Npb246ICh4OiBDb250ZW50VmFyaWFibGUpID0+IHRydWUgfSlcclxuICAgIEBGb3JtRmllbGQ8Q29udGVudFZhcmlhYmxlLCBDb250ZW50VmFyaWFibGVEZXBhcnRtZW50Pih7XHJcbiAgICAgICAgcm93OiAyLFxyXG4gICAgICAgIGVuZHBvaW50OiAnZGVwYXJ0bWVudCcsXHJcbiAgICAgICAgcGFyYW1zOiAoeCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHByb2plY3Rpb246ICdpZCxkaXNwbGF5TmFtZScsXHJcbiAgICAgICAgICAgICAgICBzb3J0Qnk6ICdpZCcsXHJcbiAgICAgICAgICAgICAgICBjbGllbnRJZDogeC5jbGllbnRKb2lucz8ubWFwKHkgPT4geS5jbGllbnRJZClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgICAgdHJpZ2dlck1vZGU6ICdjaGlwJyxcclxuICAgICAgICBoaWRlOiAoXywgX18sIGN0eDogYW55KSA9PiAoIWN0eC5pc0FkbWluICYmICFjdHguaXNDbGllbnRBZG1pbikgfHwgKCFjdHguc2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSAmJiAhY3R4LnNldHRpbmdzPy5tdWx0aURlcGFydG1lbnRzKSxcclxuICAgICAgICBjb21wYXJlV2l0aDogKG8sIHYpID0+IG8uZGVwYXJ0bWVudElkID09PSB2LmRlcGFydG1lbnRJZCxcclxuICAgICAgICBtYXBwZXI6ICh4OiB7IGlkOiBudW1iZXIsIGRpc3BsYXlOYW1lOiBzdHJpbmcgfVtdKSA9PiB4Lm1hcCh5ID0+IG5ldyBDb250ZW50VmFyaWFibGVEZXBhcnRtZW50KHsgZGVwYXJ0bWVudElkOiB5LmlkLCBkZXBhcnRtZW50TmFtZTogeS5kaXNwbGF5TmFtZSB9KSksXHJcbiAgICAgICAgb3B0aW9uVGVtcGxhdGU6ICh4KSA9PiB4Py5kZXBhcnRtZW50TmFtZSxcclxuICAgICAgICB0cmlnZ2VyTWFwcGVyOiAoeCkgPT4geD8uZGVwYXJ0bWVudE5hbWVcclxuICAgIH0pXHJcbiAgICBARGlzcGxheSgkbG9jYWxpemVgOkBAZGVwYXJ0bWVudHM6RGVwYXJ0bWVudHNgKVxyXG4gICAgZGVwYXJ0bWVudEpvaW5zOiBDb250ZW50VmFyaWFibGVEZXBhcnRtZW50W107XHJcblxyXG4gICAgLy8gLyoqXHJcbiAgICAvLyAgKiBAcHJvcGVydHlcclxuICAgIC8vICAqL1xyXG4gICAgLy8gQHByb3AoKVxyXG4gICAgLy8gQEZvcm1GaWVsZCh7IHJvdzogMjAgfSlcclxuICAgIC8vIEBDb2x1bW4oe30pXHJcbiAgICAvLyBARGlzcGxheSgkbG9jYWxpemVgOkBAZGVmYXVsdDpEZWZhdWx0YClcclxuICAgIC8vIGRlZmF1bHQ6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgQHByb3AoKVxyXG4gICAgQEZvcm1GaWVsZCh7IHJvdzogMjEgfSlcclxuICAgIEBDb2x1bW4oeyBldmVudDogJ3RvZ2dsZScgfSlcclxuICAgIEBEaXNwbGF5KCRsb2NhbGl6ZWA6QEBlbmFibGVkOkVuYWJsZWRgKVxyXG4gICAgZW5hYmxlZDogYm9vbGVhbjtcclxufSJdfQ==
|