UNPKG

@materia/users

Version:

Signin/signup your users in your Materia application

260 lines 28.5 kB
import { __decorate, __metadata } from "tslib"; import { Component, Input, Output, EventEmitter } from '@angular/core'; import { FormGroup, Validators, FormBuilder } from '@angular/forms'; import { HttpClient } from '@angular/common/http'; import { AddonSetup } from '@materia/addons'; import * as i0 from "@angular/core"; import * as i1 from "@angular/forms"; import * as i2 from "@angular/common/http"; import * as i3 from "@angular/common"; import * as i4 from "@angular/material/dialog"; import * as i5 from "@angular/flex-layout/flex"; import * as i6 from "@angular/material/button"; import * as i7 from "@angular/material/icon"; import * as i8 from "@angular/material/radio"; import * as i9 from "@angular/material/checkbox"; import * as i10 from "@angular/material/form-field"; import * as i11 from "@angular/material/select"; import * as i12 from "@angular/material/core"; function UserManagementSetupComponent_form_0_mat_form_field_19_mat_option_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "mat-option", 18); i0.ɵɵtext(1); i0.ɵɵelementEnd(); } if (rf & 2) { var entity_r8 = ctx.$implicit; i0.ɵɵproperty("value", entity_r8.name); i0.ɵɵadvance(1); i0.ɵɵtextInterpolate(entity_r8.name); } } function UserManagementSetupComponent_form_0_mat_form_field_19_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "mat-form-field"); i0.ɵɵelementStart(1, "mat-select", 16); i0.ɵɵtemplate(2, UserManagementSetupComponent_form_0_mat_form_field_19_mat_option_2_Template, 2, 2, "mat-option", 17); i0.ɵɵelementEnd(); i0.ɵɵelementEnd(); } if (rf & 2) { var ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵadvance(2); i0.ɵɵproperty("ngForOf", ctx_r1.entities); } } function UserManagementSetupComponent_form_0_ng_template_20_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 19); i0.ɵɵtext(1, " No entity found. You need an entity to add custom fields to your users. "); i0.ɵɵelementEnd(); } } function UserManagementSetupComponent_form_0_mat_form_field_25_mat_option_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "mat-option", 18); i0.ɵɵtext(1); i0.ɵɵelementEnd(); } if (rf & 2) { var addon_r10 = ctx.$implicit; i0.ɵɵproperty("value", addon_r10.package); i0.ɵɵadvance(1); i0.ɵɵtextInterpolate(addon_r10.name); } } function UserManagementSetupComponent_form_0_mat_form_field_25_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "mat-form-field"); i0.ɵɵelementStart(1, "mat-select", 20); i0.ɵɵtemplate(2, UserManagementSetupComponent_form_0_mat_form_field_25_mat_option_2_Template, 2, 2, "mat-option", 17); i0.ɵɵelementEnd(); i0.ɵɵelementEnd(); } if (rf & 2) { var ctx_r4 = i0.ɵɵnextContext(2); i0.ɵɵadvance(2); i0.ɵɵproperty("ngForOf", ctx_r4.emailAddons); } } function UserManagementSetupComponent_form_0_ng_template_26_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 19); i0.ɵɵtext(1, "You need "); i0.ɵɵelementStart(2, "strong"); i0.ɵɵtext(3, "Mailjet"); i0.ɵɵelementEnd(); i0.ɵɵtext(4, " addon installed "); i0.ɵɵelement(5, "br"); i0.ɵɵtext(6, "to send email from your Materia Application such as a signup email"); i0.ɵɵelementEnd(); } } function UserManagementSetupComponent_form_0_Template(rf, ctx) { if (rf & 1) { var _r12 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "form", 1); i0.ɵɵelementStart(1, "h2", 2); i0.ɵɵelementStart(2, "span", 3); i0.ɵɵtext(3, "User Management - Setup"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(4, "button", 4); i0.ɵɵlistener("click", function UserManagementSetupComponent_form_0_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r12); var ctx_r11 = i0.ɵɵnextContext(); return ctx_r11.close(); }); i0.ɵɵelementStart(5, "mat-icon"); i0.ɵɵtext(6, "close"); i0.ɵɵelementEnd(); i0.ɵɵelementEnd(); i0.ɵɵelementEnd(); i0.ɵɵelementStart(7, "mat-dialog-content"); i0.ɵɵelementStart(8, "div", 5); i0.ɵɵelementStart(9, "h3"); i0.ɵɵtext(10, " Authentication method "); i0.ɵɵelementEnd(); i0.ɵɵelementStart(11, "mat-radio-group", 6); i0.ɵɵelementStart(12, "mat-radio-button", 7); i0.ɵɵtext(13, "Token based authentication (mobile ready)"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(14, "mat-radio-button", 8); i0.ɵɵtext(15, "Session based authentication"); i0.ɵɵelementEnd(); i0.ɵɵelementEnd(); i0.ɵɵelementStart(16, "h3"); i0.ɵɵelementStart(17, "mat-checkbox", 9); i0.ɵɵtext(18, "User profile"); i0.ɵɵelementEnd(); i0.ɵɵelementEnd(); i0.ɵɵtemplate(19, UserManagementSetupComponent_form_0_mat_form_field_19_Template, 3, 1, "mat-form-field", 10); i0.ɵɵtemplate(20, UserManagementSetupComponent_form_0_ng_template_20_Template, 2, 0, "ng-template", null, 11, i0.ɵɵtemplateRefExtractor); i0.ɵɵelementStart(22, "h3"); i0.ɵɵelementStart(23, "mat-checkbox", 12); i0.ɵɵtext(24, "Emails enabled"); i0.ɵɵelementEnd(); i0.ɵɵelementEnd(); i0.ɵɵtemplate(25, UserManagementSetupComponent_form_0_mat_form_field_25_Template, 3, 1, "mat-form-field", 10); i0.ɵɵtemplate(26, UserManagementSetupComponent_form_0_ng_template_26_Template, 7, 0, "ng-template", null, 13, i0.ɵɵtemplateRefExtractor); i0.ɵɵelementEnd(); i0.ɵɵelementEnd(); i0.ɵɵelementStart(28, "mat-dialog-actions"); i0.ɵɵelementStart(29, "button", 14); i0.ɵɵlistener("click", function UserManagementSetupComponent_form_0_Template_button_click_29_listener() { i0.ɵɵrestoreView(_r12); var ctx_r13 = i0.ɵɵnextContext(); return ctx_r13.finish(); }); i0.ɵɵtext(30, "Save"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(31, "button", 15); i0.ɵɵlistener("click", function UserManagementSetupComponent_form_0_Template_button_click_31_listener() { i0.ɵɵrestoreView(_r12); var ctx_r14 = i0.ɵɵnextContext(); return ctx_r14.close(); }); i0.ɵɵtext(32, "Cancel"); i0.ɵɵelementEnd(); i0.ɵɵelementEnd(); i0.ɵɵelementEnd(); } if (rf & 2) { var _r2 = i0.ɵɵreference(21); var _r5 = i0.ɵɵreference(27); var ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵproperty("formGroup", ctx_r0.loginForm); i0.ɵɵadvance(19); i0.ɵɵproperty("ngIf", (ctx_r0.entities == null ? null : ctx_r0.entities.length) > 0)("ngIfElse", _r2); i0.ɵɵadvance(6); i0.ɵɵproperty("ngIf", ctx_r0.emailAddons && ctx_r0.emailAddons.length > 0)("ngIfElse", _r5); } } var UserManagementSetupComponent = /** @class */ (function () { function UserManagementSetupComponent(fb, http) { this.fb = fb; this.http = http; this.saveAndRestart = new EventEmitter(); this.cancel = new EventEmitter(); this.emailAddons = []; } UserManagementSetupComponent.prototype.getSettingsProperty = function (property, defaultValue) { return (this.settings && this.settings[property]) || defaultValue; }; UserManagementSetupComponent.prototype.ngOnInit = function () { var _this = this; this.http .get(this.baseUrl + '/infos') .toPromise() .then(function (res) { _this.loginForm = _this.fb.group({ method: [ _this.getSettingsProperty('method', 'session'), Validators.required ], user_profile_enabled: [ _this.getSettingsProperty('user_profile_enabled', false) ], user_profile_entity: [ _this.getSettingsProperty('user_profile_entity', null) ], email_verification: [ _this.getSettingsProperty('email_verification', false) ], email_addon: [_this.getSettingsProperty('email_addon', false)], }); _this.entities = res.entities.filter(function (entity) { return !entity.fromAddon; }); _this.emailAddons = res.addons.filter(function (addon) { return addon.package === '@materia/sendgrid' || addon.package === '@materia/mailjet'; }); if (_this.emailAddons.length === 0) { _this.loginForm.get('email_verification').disable(); _this.loginForm.get('email_addon').disable(); } if (!_this.settings || !_this.settings.email_verification) { _this.loginForm.get('email_addon').disable(); } if (!_this.settings || !_this.settings.user_profile_enabled) { _this.loginForm.get('user_profile_entity').disable(); } if (_this.entities.length === 0) { _this.loginForm.get('user_profile_enabled').setValue(false); _this.loginForm.get('user_profile_entity').setValue(null); _this.loginForm.get('user_profile_enabled').disable(); _this.loginForm.get('user_profile_entity').disable(); } _this.loginForm .get('user_profile_enabled') .valueChanges.subscribe(function (val) { if (val) { _this.loginForm.get('user_profile_entity').enable(); } else { _this.loginForm.get('user_profile_entity').disable(); } }); _this.loginForm.get('email_verification').valueChanges.subscribe(function (val) { if (val) { _this.loginForm.get('email_addon').enable(); } else { _this.loginForm.get('email_addon').disable(); } }); }); }; UserManagementSetupComponent.prototype.finish = function () { if (this.loginForm.valid) { this.saveAndRestart.emit(this.loginForm.value); } }; UserManagementSetupComponent.prototype.close = function () { this.cancel.emit(); }; UserManagementSetupComponent.ctorParameters = function () { return [ { type: FormBuilder }, { type: HttpClient } ]; }; UserManagementSetupComponent.ɵfac = function UserManagementSetupComponent_Factory(t) { return new (t || UserManagementSetupComponent)(i0.ɵɵdirectiveInject(i1.FormBuilder), i0.ɵɵdirectiveInject(i2.HttpClient)); }; UserManagementSetupComponent.ɵcmp = i0.ɵɵdefineComponent({ type: UserManagementSetupComponent, selectors: [["materia-user-management-setup"]], inputs: { app: "app", settings: "settings", baseUrl: "baseUrl", token: "token" }, outputs: { saveAndRestart: "saveAndRestart", cancel: "cancel" }, decls: 1, vars: 1, consts: [["style", "max-width: 400px", 3, "formGroup", 4, "ngIf"], [2, "max-width", "400px", 3, "formGroup"], ["mat-dialog-title", "", "fxLayout", "row"], ["fxFlex", "", 2, "position", "relative", "top", "3px", "left", "5px"], ["tabindex", "-1", "mat-icon-button", "", 3, "click"], ["fxLayout", "column"], ["formControlName", "method", "fxLayout", "column"], ["value", "token"], ["value", "session"], ["formControlName", "user_profile_enabled"], [4, "ngIf", "ngIfElse"], ["noEntities", ""], ["formControlName", "email_verification"], ["noEmailAddon", ""], ["mat-raised-button", "", "color", "primary", 3, "click"], ["mat-raised-button", "", 3, "click"], ["placeholder", "Select the user profile entity", "formControlName", "user_profile_entity"], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"], [1, "warning"], ["placeholder", "Select your emailing addon", "formControlName", "email_addon"]], template: function UserManagementSetupComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, UserManagementSetupComponent_form_0_Template, 33, 5, "form", 0); } if (rf & 2) { i0.ɵɵproperty("ngIf", ctx.loginForm); } }, directives: [i3.NgIf, i1.ɵangular_packages_forms_forms_y, i1.NgControlStatusGroup, i1.FormGroupDirective, i4.MatDialogTitle, i5.DefaultLayoutDirective, i5.DefaultFlexDirective, i6.MatButton, i7.MatIcon, i4.MatDialogContent, i8.MatRadioGroup, i1.NgControlStatus, i1.FormControlName, i8.MatRadioButton, i9.MatCheckbox, i4.MatDialogActions, i10.MatFormField, i11.MatSelect, i3.NgForOf, i12.MatOption], styles: ["mat-form-field[_ngcontent-%COMP%]{width:100%;margin:0 5px}.mat-dialog-content[_ngcontent-%COMP%]{margin:0;padding:0 24px}.mat-dialog-actions[_ngcontent-%COMP%]{padding:12px 24px}h3[_ngcontent-%COMP%]{margin-top:16px;margin-bottom:8px}.warning[_ngcontent-%COMP%]{margin:16px 0;padding:8px;border:1px solid #f44336;color:#f44336}"] }); UserManagementSetupComponent = __decorate([ AddonSetup('@materia/users'), __metadata("design:paramtypes", [FormBuilder, HttpClient]) ], UserManagementSetupComponent); return UserManagementSetupComponent; }()); export { UserManagementSetupComponent }; /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(UserManagementSetupComponent, [{ type: Component, args: [{ selector: 'materia-user-management-setup', templateUrl: './user-management-setup.component.html', styleUrls: ['./user-management-setup.component.scss'] }] }], function () { return [{ type: i1.FormBuilder }, { type: i2.HttpClient }]; }, { app: [{ type: Input }], settings: [{ type: Input }], baseUrl: [{ type: Input }], token: [{ type: Input }], saveAndRestart: [{ type: Output }], cancel: [{ type: Output }] }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1tYW5hZ2VtZW50LXNldHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtYXRlcmlhL3VzZXJzLyIsInNvdXJjZXMiOlsidXNlci1tYW5hZ2VtZW50LXNldHVwL3VzZXItbWFuYWdlbWVudC1zZXR1cC5jb21wb25lbnQudHMiLCJ1c2VyLW1hbmFnZW1lbnQtc2V0dXAvdXNlci1tYW5hZ2VtZW50LXNldHVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztJQ21CeEMsc0NBQWtFO0lBQUEsWUFBaUI7SUFBQSxpQkFBYTs7O0lBQXBELHNDQUFxQjtJQUFDLGVBQWlCO0lBQWpCLG9DQUFpQjs7O0lBRnJGLHNDQUNDO0lBQUEsc0NBQ0M7SUFBQSxxSEFBa0U7SUFDbkUsaUJBQWE7SUFDZCxpQkFBaUI7OztJQUZILGVBQStCO0lBQS9CLHlDQUErQjs7O0lBSTVDLCtCQUNDO0lBQUEseUZBQ0Q7SUFBQSxpQkFBTTs7O0lBU0wsc0NBQXNFO0lBQUEsWUFBZ0I7SUFBQSxpQkFBYTs7O0lBQXJELHlDQUF1QjtJQUFDLGVBQWdCO0lBQWhCLG9DQUFnQjs7O0lBRnhGLHNDQUNDO0lBQUEsc0NBQ0M7SUFBQSxxSEFBc0U7SUFDdkUsaUJBQWE7SUFDZCxpQkFBaUI7OztJQUZILGVBQWlDO0lBQWpDLDRDQUFpQzs7O0lBSzlDLCtCQUFxQjtJQUFBLHlCQUNwQjtJQUFBLDhCQUFRO0lBQUEsdUJBQU87SUFBQSxpQkFB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LFVBQVU7OzRHQWJsRCw0QkFBNEI7cUVBQTVCLDRCQUE0QjtZQ2R6QyxnRkFDQzs7WUFESyxvQ0FBaUI7O0lEY1YsNEJBQTRCO1FBTnhDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQzt5Q0FtQkgsV0FBVyxFQUFnQixVQUFVO09BYmxELDRCQUE0QixDQStGeEM7dUNBN0dEO0NBNkdDLElBQUE7U0EvRlksNEJBQTRCO2tEQUE1Qiw0QkFBNEI7Y0FMeEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSwrQkFBK0I7Z0JBQ3pDLFdBQVcsRUFBRSx3Q0FBd0M7Z0JBQ3JELFNBQVMsRUFBRSxDQUFDLHdDQUF3QyxDQUFDO2FBQ3REOztrQkFFRSxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFFTCxNQUFNOztrQkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBZGRvblNldHVwIH0gZnJvbSAnQG1hdGVyaWEvYWRkb25zJztcbmltcG9ydCB7IElBcHAsIElFbnRpdHkgfSBmcm9tICdAbWF0ZXJpYS9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHsgVXNlck1hbmFnZW1lbnRTZXR0aW5ncyB9IGZyb20gJy4uL21vZGVscy91c2VyLXNldHRpbmcubW9kZWwnO1xuXG5AQWRkb25TZXR1cCgnQG1hdGVyaWEvdXNlcnMnKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0ZXJpYS11c2VyLW1hbmFnZW1lbnQtc2V0dXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1tYW5hZ2VtZW50LXNldHVwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1tYW5hZ2VtZW50LXNldHVwLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVXNlck1hbmFnZW1lbnRTZXR1cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGFwcDogSUFwcDtcbiAgQElucHV0KCkgc2V0dGluZ3M6IFVzZXJNYW5hZ2VtZW50U2V0dGluZ3M7XG4gIEBJbnB1dCgpIGJhc2VVcmw6IHN0cmluZztcbiAgQElucHV0KCkgdG9rZW46IHN0cmluZztcblxuICBAT3V0cHV0KCkgc2F2ZUFuZFJlc3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXJNYW5hZ2VtZW50U2V0dGluZ3M+KCk7XG4gIEBPdXRwdXQoKSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgbG9naW5Gb3JtOiBGb3JtR3JvdXA7XG4gIGVudGl0aWVzOiBJRW50aXR5W107XG4gIGVtYWlsQWRkb25zID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cblxuICBwcml2YXRlIGdldFNldHRpbmdzUHJvcGVydHkocHJvcGVydHksIGRlZmF1bHRWYWx1ZSkge1xuICAgIHJldHVybiAodGhpcy5zZXR0aW5ncyAmJiB0aGlzLnNldHRpbmdzW3Byb3BlcnR5XSkgfHwgZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueT4odGhpcy5iYXNlVXJsICsgJy9pbmZvcycpXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC50aGVuKHJlcyA9PiB7XG4gICAgICAgIHRoaXMubG9naW5Gb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgbWV0aG9kOiBbXG4gICAgICAgICAgICB0aGlzLmdldFNldHRpbmdzUHJvcGVydHkoJ21ldGhvZCcsICdzZXNzaW9uJyksXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgICAgICAgXSxcbiAgICAgICAgICB1c2VyX3Byb2ZpbGVfZW5hYmxlZDogW1xuICAgICAgICAgICAgdGhpcy5nZXRTZXR0aW5nc1Byb3BlcnR5KCd1c2VyX3Byb2ZpbGVfZW5hYmxlZCcsIGZhbHNlKVxuICAgICAgICAgIF0sXG4gICAgICAgICAgdXNlcl9wcm9maWxlX2VudGl0eTogW1xuICAgICAgICAgICAgdGhpcy5nZXRTZXR0aW5nc1Byb3BlcnR5KCd1c2VyX3Byb2ZpbGVfZW50aXR5JywgbnVsbClcbiAgICAgICAgICBdLFxuICAgICAgICAgIGVtYWlsX3ZlcmlmaWNhdGlvbjogW1xuICAgICAgICAgICAgdGhpcy5nZXRTZXR0aW5nc1Byb3BlcnR5KCdlbWFpbF92ZXJpZmljYXRpb24nLCBmYWxzZSlcbiAgICAgICAgICBdLFxuICAgICAgICAgIGVtYWlsX2FkZG9uOiBbdGhpcy5nZXRTZXR0aW5nc1Byb3BlcnR5KCdlbWFpbF9hZGRvbicsIGZhbHNlKV0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVudGl0aWVzID0gcmVzLmVudGl0aWVzLmZpbHRlcigoZW50aXR5OiBJRW50aXR5KSA9PiAhIGVudGl0eS5mcm9tQWRkb24pO1xuICAgICAgICB0aGlzLmVtYWlsQWRkb25zID0gcmVzLmFkZG9ucy5maWx0ZXIoXG4gICAgICAgICAgYWRkb24gPT5cbiAgICAgICAgICAgIGFkZG9uLnBhY2thZ2UgPT09ICdAbWF0ZXJpYS9zZW5kZ3JpZCcgfHxcbiAgICAgICAgICAgIGFkZG9uLnBhY2thZ2UgPT09ICdAbWF0ZXJpYS9tYWlsamV0J1xuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0aGlzLmVtYWlsQWRkb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMubG9naW5Gb3JtLmdldCgnZW1haWxfdmVyaWZpY2F0aW9uJykuZGlzYWJsZSgpO1xuICAgICAgICAgIHRoaXMubG9naW5Gb3JtLmdldCgnZW1haWxfYWRkb24nKS5kaXNhYmxlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoICEgdGhpcy5zZXR0aW5ncyB8fCAhIHRoaXMuc2V0dGluZ3MuZW1haWxfdmVyaWZpY2F0aW9uKSB7XG4gICAgICAgICAgdGhpcy5sb2dpbkZvcm0uZ2V0KCdlbWFpbF9hZGRvbicpLmRpc2FibGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggISB0aGlzLnNldHRpbmdzIHx8ICEgdGhpcy5zZXR0aW5ncy51c2VyX3Byb2ZpbGVfZW5hYmxlZCkge1xuICAgICAgICAgIHRoaXMubG9naW5Gb3JtLmdldCgndXNlcl9wcm9maWxlX2VudGl0eScpLmRpc2FibGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmVudGl0aWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMubG9naW5Gb3JtLmdldCgndXNlcl9wcm9maWxlX2VuYWJsZWQnKS5zZXRWYWx1ZShmYWxzZSk7XG4gICAgICAgICAgdGhpcy5sb2dpbkZvcm0uZ2V0KCd1c2VyX3Byb2ZpbGVfZW50aXR5Jykuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgdGhpcy5sb2dpbkZvcm0uZ2V0KCd1c2VyX3Byb2ZpbGVfZW5hYmxlZCcpLmRpc2FibGUoKTtcbiAgICAgICAgICB0aGlzLmxvZ2luRm9ybS5nZXQoJ3VzZXJfcHJvZmlsZV9lbnRpdHknKS5kaXNhYmxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2dpbkZvcm1cbiAgICAgICAgICAuZ2V0KCd1c2VyX3Byb2ZpbGVfZW5hYmxlZCcpXG4gICAgICAgICAgLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICAgICAgdGhpcy5sb2dpbkZvcm0uZ2V0KCd1c2VyX3Byb2ZpbGVfZW50aXR5JykuZW5hYmxlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmxvZ2luRm9ybS5nZXQoJ3VzZXJfcHJvZmlsZV9lbnRpdHknKS5kaXNhYmxlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5sb2dpbkZvcm0uZ2V0KCdlbWFpbF92ZXJpZmljYXRpb24nKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7XG4gICAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgdGhpcy5sb2dpbkZvcm0uZ2V0KCdlbWFpbF9hZGRvbicpLmVuYWJsZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2luRm9ybS5nZXQoJ2VtYWlsX2FkZG9uJykuZGlzYWJsZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGZpbmlzaCgpIHtcbiAgICBpZiAodGhpcy5sb2dpbkZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMuc2F2ZUFuZFJlc3RhcnQuZW1pdCh0aGlzLmxvZ2luRm9ybS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICB9XG59XG4iLCI8Zm9ybSAqbmdJZj1cImxvZ2luRm9ybVwiIFtmb3JtR3JvdXBdPVwibG9naW5Gb3JtXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDQwMHB4XCI+XG5cdDxoMiBtYXQtZGlhbG9nLXRpdGxlIGZ4TGF5b3V0PVwicm93XCI+XG5cdFx0PHNwYW4gZnhGbGV4IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyB0b3A6IDNweDsgbGVmdDogNXB4O1wiPlVzZXIgTWFuYWdlbWVudCAtIFNldHVwPC9zcGFuPlxuXHRcdDxidXR0b24gKGNsaWNrKT1cImNsb3NlKClcIiB0YWJpbmRleD1cIi0xXCIgbWF0LWljb24tYnV0dG9uPlxuXHRcdFx0PG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cblx0XHQ8L2J1dHRvbj5cblx0PC9oMj5cblx0PG1hdC1kaWFsb2ctY29udGVudD5cblx0XHQ8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCI+XG5cdFx0XHQ8aDM+XG5cdFx0XHRcdEF1dGhlbnRpY2F0aW9uIG1ldGhvZFxuXHRcdFx0PC9oMz5cblx0XHRcdDxtYXQtcmFkaW8tZ3JvdXAgZm9ybUNvbnRyb2xOYW1lPVwibWV0aG9kXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cblx0XHRcdFx0PG1hdC1yYWRpby1idXR0b24gdmFsdWU9XCJ0b2tlblwiPlRva2VuIGJhc2VkIGF1dGhlbnRpY2F0aW9uIChtb2JpbGUgcmVhZHkpPC9tYXQtcmFkaW8tYnV0dG9uPlxuXHRcdFx0XHQ8bWF0LXJhZGlvLWJ1dHRvbiB2YWx1ZT1cInNlc3Npb25cIj5TZXNzaW9uIGJhc2VkIGF1dGhlbnRpY2F0aW9uPC9tYXQtcmFkaW8tYnV0dG9uPlxuXHRcdFx0PC9tYXQtcmFkaW8tZ3JvdXA+XG5cdFx0XHRcblx0XHRcdDxoMz5cblx0XHRcdFx0PG1hdC1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJ1c2VyX3Byb2ZpbGVfZW5hYmxlZFwiPlVzZXIgcHJvZmlsZTwvbWF0LWNoZWNrYm94PlxuXHRcdFx0PC9oMz5cblx0XHRcdDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImVudGl0aWVzPy5sZW5ndGggPiAwOyBlbHNlIG5vRW50aXRpZXNcIj5cblx0XHRcdFx0PG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdGhlIHVzZXIgcHJvZmlsZSBlbnRpdHlcIiBmb3JtQ29udHJvbE5hbWU9XCJ1c2VyX3Byb2ZpbGVfZW50aXR5XCI+XG5cdFx0XHRcdFx0PG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGVudGl0eSBvZiBlbnRpdGllc1wiIFt2YWx1ZV09XCJlbnRpdHkubmFtZVwiPnt7IGVudGl0eS5uYW1lIH19PC9tYXQtb3B0aW9uPlxuXHRcdFx0XHQ8L21hdC1zZWxlY3Q+XG5cdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxuXHRcdFx0PG5nLXRlbXBsYXRlICNub0VudGl0aWVzPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwid2FybmluZ1wiPlxuXHRcdFx0XHRcdE5vIGVudGl0eSBmb3VuZC4gWW91IG5lZWQgYW4gZW50aXR5IHRvIGFkZCBjdXN0b20gZmllbGRzIHRvIHlvdXIgdXNlcnMuXG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcblx0XHRcdDxoMz5cblx0XHRcdFx0PG1hdC1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbF92ZXJpZmljYXRpb25cIj5FbWFpbHMgZW5hYmxlZDwvbWF0LWNoZWNrYm94PlxuXHRcdFx0PC9oMz5cblxuXHRcdFx0PG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiZW1haWxBZGRvbnMgJiYgZW1haWxBZGRvbnMubGVuZ3RoID4gMDsgZWxzZSBub0VtYWlsQWRkb25cIj5cblx0XHRcdFx0PG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJTZWxlY3QgeW91ciBlbWFpbGluZyBhZGRvblwiIGZvcm1Db250cm9sTmFtZT1cImVtYWlsX2FkZG9uXCI+XG5cdFx0XHRcdFx0PG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGFkZG9uIG9mIGVtYWlsQWRkb25zXCIgW3ZhbHVlXT1cImFkZG9uLnBhY2thZ2VcIj57eyBhZGRvbi5uYW1lIH19PC9tYXQtb3B0aW9uPlxuXHRcdFx0XHQ8L21hdC1zZWxlY3Q+XG5cdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxuXG5cdFx0XHQ8bmctdGVtcGxhdGUgI25vRW1haWxBZGRvbj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cIndhcm5pbmdcIj5Zb3UgbmVlZFxuXHRcdFx0XHRcdDxzdHJvbmc+TWFpbGpldDwvc3Ryb25nPiBhZGRvbiBpbnN0YWxsZWRcblx0XHRcdFx0XHQ8YnI+dG8gc2VuZCBlbWFpbCBmcm9tIHlvdXIgTWF0ZXJpYSBBcHBsaWNhdGlvbiBzdWNoIGFzIGEgc2lnbnVwIGVtYWlsPC9kaXY+XG5cdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdDwvZGl2PlxuXHQ8L21hdC1kaWFsb2ctY29udGVudD5cblx0PG1hdC1kaWFsb2ctYWN0aW9ucz5cblx0XHQ8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJmaW5pc2goKVwiPlNhdmU8L2J1dHRvbj5cblx0XHQ8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJjbG9zZSgpXCI+Q2FuY2VsPC9idXR0b24+XG5cdDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuPC9mb3JtPiJdfQ==