verben-authentication-ui 0.8.9 → 0.9.0
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/README.md +0 -0
- package/esm2022/lib/components/forgot-password/forgot-password.component.mjs +1 -1
- package/esm2022/lib/components/reset-password/reset-password.component.mjs +1 -1
- package/esm2022/lib/components/role-control/role-control.component.mjs +1 -1
- package/esm2022/lib/components/sign-in/sign-in.component.mjs +1 -1
- package/esm2022/lib/components/sign-up/sign-up.component.mjs +1 -1
- package/esm2022/lib/components/sso/sso-form/sso-form.component.mjs +1 -1
- package/esm2022/lib/components/sso/sso.component.mjs +1 -1
- package/esm2022/lib/components/user-management/user-management-form/use-management-form.component.mjs +16 -18
- package/esm2022/lib/components/user-management/user-management.component.mjs +38 -30
- package/esm2022/lib/components/user-request/user-request.component.mjs +1 -1
- package/esm2022/lib/components/user-request-approval/services/user-access-request.service.mjs +5 -1
- package/esm2022/lib/components/user-request-approval/states/user-access-request.state.mjs +3 -2
- package/esm2022/lib/components/user-request-approval/user-request-approval.component.mjs +3 -3
- package/esm2022/lib/components/user-request-approval/user-request-form/use-request-form.component.mjs +1 -1
- package/esm2022/lib/models/Tag.mjs +2 -0
- package/esm2022/lib/models/base.mjs +1 -1
- package/esm2022/lib/models/query-params.mjs +1 -1
- package/fesm2022/verben-authentication-ui.mjs +73 -64
- package/fesm2022/verben-authentication-ui.mjs.map +1 -1
- package/lib/components/user-management/services/user-management.service.d.ts +1 -1
- package/lib/components/user-management/user-management-form/use-management-form.component.d.ts +7 -13
- package/lib/components/user-management/user-management.component.d.ts +5 -2
- package/lib/components/user-request-approval/services/user-access-request.service.d.ts +2 -0
- package/lib/models/Tag.d.ts +6 -0
- package/lib/models/base.d.ts +1 -1
- package/lib/models/query-params.d.ts +2 -1
- package/package.json +1 -1
|
@@ -13,7 +13,8 @@ export class UserManagementFormComponent {
|
|
|
13
13
|
FirstName: value.data.FirstName || '',
|
|
14
14
|
PhoneNumber: value.data.PhoneNumber || '',
|
|
15
15
|
Address: value.data.Address || '',
|
|
16
|
-
|
|
16
|
+
RoleID: value.data.RoleID || '',
|
|
17
|
+
Tags: value.data.Tags || [],
|
|
17
18
|
Status: value.data.Status || '',
|
|
18
19
|
});
|
|
19
20
|
}
|
|
@@ -21,19 +22,11 @@ export class UserManagementFormComponent {
|
|
|
21
22
|
this.form.reset();
|
|
22
23
|
}
|
|
23
24
|
}
|
|
25
|
+
roles = [];
|
|
26
|
+
tags = [];
|
|
24
27
|
switchView = new EventEmitter();
|
|
25
|
-
|
|
28
|
+
onFormSave = new EventEmitter();
|
|
26
29
|
form;
|
|
27
|
-
roles = [
|
|
28
|
-
{ id: 'admin', name: 'Admin' },
|
|
29
|
-
{ id: 'manager', name: 'Manager' },
|
|
30
|
-
{ id: 'staff', name: 'Staff' },
|
|
31
|
-
];
|
|
32
|
-
status = [
|
|
33
|
-
{ id: '1', name: 'Active' },
|
|
34
|
-
{ id: '2', name: 'pending' },
|
|
35
|
-
{ id: '3', name: 'Approved' },
|
|
36
|
-
];
|
|
37
30
|
constructor(fb) {
|
|
38
31
|
this.fb = fb;
|
|
39
32
|
this.form = this.fb.group({
|
|
@@ -42,8 +35,8 @@ export class UserManagementFormComponent {
|
|
|
42
35
|
PhoneNumber: ['', { readonly: true }],
|
|
43
36
|
Address: ['', { readonly: true }],
|
|
44
37
|
Status: ['', { readonly: true }],
|
|
45
|
-
|
|
46
|
-
|
|
38
|
+
RoleID: [''],
|
|
39
|
+
Tags: [[]],
|
|
47
40
|
});
|
|
48
41
|
}
|
|
49
42
|
ngOnInit() { }
|
|
@@ -51,6 +44,7 @@ export class UserManagementFormComponent {
|
|
|
51
44
|
if (this.form.valid) {
|
|
52
45
|
// Emit save event with form value
|
|
53
46
|
console.log('Form saved:', this.form.value);
|
|
47
|
+
this.onFormSave.emit(this.form.value);
|
|
54
48
|
}
|
|
55
49
|
}
|
|
56
50
|
onDelete() {
|
|
@@ -58,16 +52,20 @@ export class UserManagementFormComponent {
|
|
|
58
52
|
console.log('Delete requested');
|
|
59
53
|
}
|
|
60
54
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserManagementFormComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
61
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserManagementFormComponent, selector: "lib-user-request-form", inputs: { currentData: "currentData" }, outputs: { switchView: "switchView",
|
|
55
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserManagementFormComponent, selector: "lib-user-request-form", inputs: { currentData: "currentData", roles: "roles", tags: "tags" }, outputs: { switchView: "switchView", onFormSave: "onFormSave" }, ngImport: i0, template: "<form\n [formGroup]=\"form\"\n class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4 \"\n>\n\n <verbena-input\n label=\"Name:\"\n name=\"FirstName\"\n type=\"text\"\n \n formControlName=\"FirstName\"\n\n\n />\n <verbena-input\n label=\"Phone Number:\"\n name=\"PhoneNumber\"\n type=\"tel\"\n formControlName=\"PhoneNumber\"\n \n />\n <verbena-input\n name=\"MailAddress\"\n label=\"E-Mail Address:\"\n [type]=\"'email'\"\n formControlName=\"MailAddress\"\n \n />\n\n\n <verbena-input\n label=\"Address\"\n name=\"Address\"\n type=\"text\"\n formControlName=\"Address\"\n \n />\n \n <div class=\"space-y-1\">\n <label for=\"role\">Role</label>\n\n <verben-drop-down\n label=\"Role\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"\"\n [(options)]=\"roles\"\n id=\"role\"\n optionLabel=\"Name\"\n optionValue=\"Code\"\n formControlName=\"RoleID\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <div class=\"space-y-1\">\n <label for=\"tags\">Tags</label>\n\n <verben-drop-down\n label=\"Tags\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"true\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"\"\n [(options)]=\"tags\"\n id=\"tags\"\n optionLabel=\"Name\"\n optionValue=\"Code\"\n formControlName=\"Tags\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n</form>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "fontSize", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i2.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }] });
|
|
62
56
|
}
|
|
63
57
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserManagementFormComponent, decorators: [{
|
|
64
58
|
type: Component,
|
|
65
|
-
args: [{ selector: 'lib-user-request-form', template: "<form\n [formGroup]=\"form\"\n class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4 \"\n>\n\n <verbena-input\n label=\"Name:\"\n name=\"FirstName\"\n type=\"text\"\n \n formControlName=\"FirstName\"\n\n\n />\n <verbena-input\n label=\"Phone Number:\"\n name=\"PhoneNumber\"\n type=\"tel\"\n formControlName=\"PhoneNumber\"\n \n />\n <verbena-input\n name=\"MailAddress\"\n label=\"E-Mail Address:\"\n [type]=\"'email'\"\n formControlName=\"MailAddress\"\n \n />\n\n\n <verbena-input\n label=\"Address\"\n name=\"Address\"\n type=\"text\"\n formControlName=\"Address\"\n \n />\n \n <div class=\"space-y-1\">\n <label for=\"role\">Role</label>\n\n <verben-drop-down\n label=\"Role\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"\"\n [(options)]=\"roles\"\n id=\"role\"\n optionLabel=\"Name\"\n optionValue=\"
|
|
59
|
+
args: [{ selector: 'lib-user-request-form', template: "<form\n [formGroup]=\"form\"\n class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4 \"\n>\n\n <verbena-input\n label=\"Name:\"\n name=\"FirstName\"\n type=\"text\"\n \n formControlName=\"FirstName\"\n\n\n />\n <verbena-input\n label=\"Phone Number:\"\n name=\"PhoneNumber\"\n type=\"tel\"\n formControlName=\"PhoneNumber\"\n \n />\n <verbena-input\n name=\"MailAddress\"\n label=\"E-Mail Address:\"\n [type]=\"'email'\"\n formControlName=\"MailAddress\"\n \n />\n\n\n <verbena-input\n label=\"Address\"\n name=\"Address\"\n type=\"text\"\n formControlName=\"Address\"\n \n />\n \n <div class=\"space-y-1\">\n <label for=\"role\">Role</label>\n\n <verben-drop-down\n label=\"Role\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"\"\n [(options)]=\"roles\"\n id=\"role\"\n optionLabel=\"Name\"\n optionValue=\"Code\"\n formControlName=\"RoleID\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <div class=\"space-y-1\">\n <label for=\"tags\">Tags</label>\n\n <verben-drop-down\n label=\"Tags\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"true\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"\"\n [(options)]=\"tags\"\n id=\"tags\"\n optionLabel=\"Name\"\n optionValue=\"Code\"\n formControlName=\"Tags\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n</form>\n" }]
|
|
66
60
|
}], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { currentData: [{
|
|
67
61
|
type: Input
|
|
62
|
+
}], roles: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], tags: [{
|
|
65
|
+
type: Input
|
|
68
66
|
}], switchView: [{
|
|
69
67
|
type: Output
|
|
70
|
-
}],
|
|
68
|
+
}], onFormSave: [{
|
|
71
69
|
type: Output
|
|
72
70
|
}] } });
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLW1hbmFnZW1lbnQtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3VzZXItbWFuYWdlbWVudC91c2VyLW1hbmFnZW1lbnQtZm9ybS91c2UtbWFuYWdlbWVudC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1tYW5hZ2VtZW50L3VzZXItbWFuYWdlbWVudC1mb3JtL3VzZXItbWFuYWdlbWVudC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFvQnZFLE1BQU0sT0FBTywyQkFBMkI7SUE2QmxCO0lBNUJsQiwrQkFBK0I7SUFDL0Isa0NBQWtDO0lBRXBDLElBQWEsV0FBVyxDQUFDLEtBQXNCO1FBQzdDLElBQUksS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUNuQixXQUFXLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRTtnQkFDekMsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUU7Z0JBQ3JDLFdBQVcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFO2dCQUN6QyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRTtnQkFDakMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUU7Z0JBQy9CLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO2dCQUMzQixNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRTthQUNoQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFDUSxLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLElBQUksR0FBVSxFQUFFLENBQUM7SUFFaEIsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7SUFDM0MsVUFBVSxHQUFHLElBQUksWUFBWSxFQUEyQixDQUFDO0lBR25FLElBQUksQ0FBWTtJQUdoQixZQUFvQixFQUFlO1FBQWYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3hCLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNyQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDbkMsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3JDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNqQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDaEMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ1osSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1NBQ1gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVEsS0FBVSxDQUFDO0lBRW5CLE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEIsa0NBQWtDO1lBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixvQkFBb0I7UUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7d0dBdERVLDJCQUEyQjs0RkFBM0IsMkJBQTJCLG9NQ3BCeEMseWxEQWdGQTs7NEZENURhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSx1QkFBdUI7Z0ZBUXBCLFdBQVc7c0JBQXZCLEtBQUs7Z0JBZUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENhcmREYXRhIH0gZnJvbSAndmVyYmVuLW5nLXVpJztcbmltcG9ydCB7IFJvbGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvUm9sZSc7XG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvVGFnJztcbmltcG9ydCB7IFN0YXR1cyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9zdGF0dXMnO1xuaW1wb3J0IHsgVXNlck1hbmFnZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdXNlci1tYW5hZ2VtZW50JztcblxuXG5pbnRlcmZhY2UgVXNlckZvcm1EYXRhIHtcbiAgTWFpbEFkZHJlc3M6IHN0cmluZztcbiAgRmlyc3ROYW1lOiBzdHJpbmc7XG4gIFBob25lTnVtYmVyOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi11c2VyLXJlcXVlc3QtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLW1hbmFnZW1lbnQtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi91c2VyLW1hbmFnZW1lbnQtZm9ybS5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgVXNlck1hbmFnZW1lbnRGb3JtQ29tcG9uZW50IHtcbiAgICAvLyBASW5wdXQoKSByb2xlczogUm9sZVtdID0gW107XG4gICAgLy8gQElucHV0KCkgc3RhdHVzOiBTdGF0dXNbXSA9IFtdO1xuICBcbiAgQElucHV0KCkgc2V0IGN1cnJlbnREYXRhKHZhbHVlOiBDYXJkRGF0YSB8IG51bGwpIHtcbiAgICBpZiAodmFsdWU/LmRhdGEpIHtcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgTWFpbEFkZHJlc3M6IHZhbHVlLmRhdGEuTWFpbEFkZHJlc3MgfHwgJycsXG4gICAgICAgIEZpcnN0TmFtZTogdmFsdWUuZGF0YS5GaXJzdE5hbWUgfHwgJycsXG4gICAgICAgIFBob25lTnVtYmVyOiB2YWx1ZS5kYXRhLlBob25lTnVtYmVyIHx8ICcnLFxuICAgICAgICBBZGRyZXNzOiB2YWx1ZS5kYXRhLkFkZHJlc3MgfHwgJycsXG4gICAgICAgIFJvbGVJRDogdmFsdWUuZGF0YS5Sb2xlSUQgfHwgJycsXG4gICAgICAgIFRhZ3M6IHZhbHVlLmRhdGEuVGFncyB8fCBbXSxcbiAgICAgICAgU3RhdHVzOiB2YWx1ZS5kYXRhLlN0YXR1cyB8fCAnJyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgcm9sZXM6IFJvbGVbXSA9IFtdO1xuICBASW5wdXQoKSB0YWdzOiBUYWdbXSA9IFtdO1xuICBcbiAgQE91dHB1dCgpIHN3aXRjaFZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyPHVuZGVmaW5lZD4oKTtcbiAgQE91dHB1dCgpIG9uRm9ybVNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFBhcnRpYWw8VXNlck1hbmFnZW1lbnQ+PigpO1xuXG5cbiAgZm9ybTogRm9ybUdyb3VwO1xuICBcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgTWFpbEFkZHJlc3M6IFsnJywgeyByZWFkb25seTogdHJ1ZSB9XSxcbiAgICAgIEZpcnN0TmFtZTogWycnLCB7IHJlYWRvbmx5OiB0cnVlIH1dLCBcbiAgICAgIFBob25lTnVtYmVyOiBbJycsIHsgcmVhZG9ubHk6IHRydWUgfV0sXG4gICAgICBBZGRyZXNzOiBbJycsIHsgcmVhZG9ubHk6IHRydWUgfV0sXG4gICAgICBTdGF0dXM6IFsnJywgeyByZWFkb25seTogdHJ1ZSB9XSxcbiAgICAgIFJvbGVJRDogWycnXSxcbiAgICAgIFRhZ3M6IFtbXV0sXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgb25TYXZlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgIC8vIEVtaXQgc2F2ZSBldmVudCB3aXRoIGZvcm0gdmFsdWVcbiAgICAgIGNvbnNvbGUubG9nKCdGb3JtIHNhdmVkOicsIHRoaXMuZm9ybS52YWx1ZSk7XG4gICAgICB0aGlzLm9uRm9ybVNhdmUuZW1pdCh0aGlzLmZvcm0udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGVsZXRlKCk6IHZvaWQge1xuICAgIC8vIEVtaXQgZGVsZXRlIGV2ZW50XG4gICAgY29uc29sZS5sb2coJ0RlbGV0ZSByZXF1ZXN0ZWQnKTtcbiAgfVxufVxuIiwiPGZvcm1cbiAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHB4LTMgcGItMyByb3VuZGVkLXhsIGgtZnVsbCB3LWZ1bGwgcmVsYXRpdmUgc3BhY2UteS00IFwiXG4+XG5cbiAgICA8dmVyYmVuYS1pbnB1dFxuICBsYWJlbD1cIk5hbWU6XCJcbiAgbmFtZT1cIkZpcnN0TmFtZVwiXG4gIHR5cGU9XCJ0ZXh0XCJcbiAgXG4gIGZvcm1Db250cm9sTmFtZT1cIkZpcnN0TmFtZVwiXG5cblxuICAvPlxuICA8dmVyYmVuYS1pbnB1dFxuICBsYWJlbD1cIlBob25lIE51bWJlcjpcIlxuICBuYW1lPVwiUGhvbmVOdW1iZXJcIlxuICB0eXBlPVwidGVsXCJcbiAgZm9ybUNvbnRyb2xOYW1lPVwiUGhvbmVOdW1iZXJcIlxuIFxuICAvPlxuICA8dmVyYmVuYS1pbnB1dFxuICAgIG5hbWU9XCJNYWlsQWRkcmVzc1wiXG4gICAgbGFiZWw9XCJFLU1haWwgQWRkcmVzczpcIlxuICAgIFt0eXBlXT1cIidlbWFpbCdcIlxuICAgIGZvcm1Db250cm9sTmFtZT1cIk1haWxBZGRyZXNzXCJcbiBcbiAgLz5cblxuXG4gIDx2ZXJiZW5hLWlucHV0XG4gICAgbGFiZWw9XCJBZGRyZXNzXCJcbiAgICBuYW1lPVwiQWRkcmVzc1wiXG4gICAgdHlwZT1cInRleHRcIlxuICAgIGZvcm1Db250cm9sTmFtZT1cIkFkZHJlc3NcIlxuICBcbiAgLz5cbiAgXG4gIDxkaXYgY2xhc3M9XCJzcGFjZS15LTFcIj5cbiAgICA8bGFiZWwgZm9yPVwicm9sZVwiPlJvbGU8L2xhYmVsPlxuXG4gICAgPHZlcmJlbi1kcm9wLWRvd25cbiAgICAgIGxhYmVsPVwiUm9sZVwiXG4gICAgICBzdHlsZUNsYXNzPVwidy1mdWxsXCJcbiAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICBbbXVsdGlzZWxlY3RdPVwiZmFsc2VcIlxuICAgICAgW2ZpbHRlcl09XCJ0cnVlXCJcbiAgICAgIFtzaG93Q2xlYXJdPVwidHJ1ZVwiXG4gICAgICBwbGFjZWhvbGRlcj1cIlwiXG4gICAgICBbKG9wdGlvbnMpXT1cInJvbGVzXCJcbiAgICAgIGlkPVwicm9sZVwiXG4gICAgICBvcHRpb25MYWJlbD1cIk5hbWVcIlxuICAgICAgb3B0aW9uVmFsdWU9XCJDb2RlXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cIlJvbGVJRFwiXG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgPlxuICAgIDwvdmVyYmVuLWRyb3AtZG93bj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNwYWNlLXktMVwiPlxuICAgIDxsYWJlbCBmb3I9XCJ0YWdzXCI+VGFnczwvbGFiZWw+XG5cbiAgICA8dmVyYmVuLWRyb3AtZG93blxuICAgICAgbGFiZWw9XCJUYWdzXCJcbiAgICAgIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgIFttdWx0aXNlbGVjdF09XCJ0cnVlXCJcbiAgICAgIFtmaWx0ZXJdPVwidHJ1ZVwiXG4gICAgICBbc2hvd0NsZWFyXT1cInRydWVcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJcIlxuICAgICAgWyhvcHRpb25zKV09XCJ0YWdzXCJcbiAgICAgIGlkPVwidGFnc1wiXG4gICAgICBvcHRpb25MYWJlbD1cIk5hbWVcIlxuICAgICAgb3B0aW9uVmFsdWU9XCJDb2RlXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cIlRhZ3NcIlxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgID5cbiAgICA8L3ZlcmJlbi1kcm9wLWRvd24+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
|