@materia/users
Version:
Signin/signup your users in your Materia application
256 lines • 28 kB
JavaScript
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) {
const 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) {
const 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) {
const 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) {
const 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) {
const _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); const 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); const 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); const ctx_r14 = i0.ɵɵnextContext(); return ctx_r14.close(); });
i0.ɵɵtext(32, "Cancel");
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
} if (rf & 2) {
const _r2 = i0.ɵɵreference(21);
const _r5 = i0.ɵɵreference(27);
const 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);
} }
let UserManagementSetupComponent = class UserManagementSetupComponent {
constructor(fb, http) {
this.fb = fb;
this.http = http;
this.saveAndRestart = new EventEmitter();
this.cancel = new EventEmitter();
this.emailAddons = [];
}
getSettingsProperty(property, defaultValue) {
return (this.settings && this.settings[property]) || defaultValue;
}
ngOnInit() {
this.http
.get(this.baseUrl + '/infos')
.toPromise()
.then(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((entity) => !entity.fromAddon);
this.emailAddons = res.addons.filter(addon => 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(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(val => {
if (val) {
this.loginForm.get('email_addon').enable();
}
else {
this.loginForm.get('email_addon').disable();
}
});
});
}
finish() {
if (this.loginForm.valid) {
this.saveAndRestart.emit(this.loginForm.value);
}
}
close() {
this.cancel.emit();
}
};
UserManagementSetupComponent.ctorParameters = () => [
{ 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);
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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YmxELDRCQUE0QjtpRUFBNUIsNEJBQTRCO1FDZHpDLGdGQUNDOztRQURLLG9DQUFpQjs7QURjViw0QkFBNEI7SUFOeEMsVUFBVSxDQUFDLGdCQUFnQixDQUFDO3FDQW1CSCxXQUFXLEVBQWdCLFVBQVU7R0FibEQsNEJBQTRCLENBK0Z4QztTQS9GWSw0QkFBNEI7a0RBQTVCLDRCQUE0QjtjQUx4QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLCtCQUErQjtnQkFDekMsV0FBVyxFQUFFLHdDQUF3QztnQkFDckQsU0FBUyxFQUFFLENBQUMsd0NBQXdDLENBQUM7YUFDdEQ7O2tCQUVFLEtBQUs7O2tCQUNMLEtBQUs7O2tCQUNMLEtBQUs7O2tCQUNMLEtBQUs7O2tCQUVMLE1BQU07O2tCQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvcnMsIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEFkZG9uU2V0dXAgfSBmcm9tICdAbWF0ZXJpYS9hZGRvbnMnO1xuaW1wb3J0IHsgSUFwcCwgSUVudGl0eSB9IGZyb20gJ0BtYXRlcmlhL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgeyBVc2VyTWFuYWdlbWVudFNldHRpbmdzIH0gZnJvbSAnLi4vbW9kZWxzL3VzZXItc2V0dGluZy5tb2RlbCc7XG5cbkBBZGRvblNldHVwKCdAbWF0ZXJpYS91c2VycycpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXRlcmlhLXVzZXItbWFuYWdlbWVudC1zZXR1cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLW1hbmFnZW1lbnQtc2V0dXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi91c2VyLW1hbmFnZW1lbnQtc2V0dXAuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBVc2VyTWFuYWdlbWVudFNldHVwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgYXBwOiBJQXBwO1xuICBASW5wdXQoKSBzZXR0aW5nczogVXNlck1hbmFnZW1lbnRTZXR0aW5ncztcbiAgQElucHV0KCkgYmFzZVVybDogc3RyaW5nO1xuICBASW5wdXQoKSB0b2tlbjogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKSBzYXZlQW5kUmVzdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8VXNlck1hbmFnZW1lbnRTZXR0aW5ncz4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBsb2dpbkZvcm06IEZvcm1Hcm91cDtcbiAgZW50aXRpZXM6IElFbnRpdHlbXTtcbiAgZW1haWxBZGRvbnMgPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxuXG4gIHByaXZhdGUgZ2V0U2V0dGluZ3NQcm9wZXJ0eShwcm9wZXJ0eSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgcmV0dXJuICh0aGlzLnNldHRpbmdzICYmIHRoaXMuc2V0dGluZ3NbcHJvcGVydHldKSB8fCBkZWZhdWx0VmFsdWU7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55Pih0aGlzLmJhc2VVcmwgKyAnL2luZm9zJylcbiAgICAgIC50b1Byb21pc2UoKVxuICAgICAgLnRoZW4ocmVzID0+IHtcbiAgICAgICAgdGhpcy5sb2dpbkZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICBtZXRob2Q6IFtcbiAgICAgICAgICAgIHRoaXMuZ2V0U2V0dGluZ3NQcm9wZXJ0eSgnbWV0aG9kJywgJ3Nlc3Npb24nKSxcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgICAgICBdLFxuICAgICAgICAgIHVzZXJfcHJvZmlsZV9lbmFibGVkOiBbXG4gICAgICAgICAgICB0aGlzLmdldFNldHRpbmdzUHJvcGVydHkoJ3VzZXJfcHJvZmlsZV9lbmFibGVkJywgZmFsc2UpXG4gICAgICAgICAgXSxcbiAgICAgICAgICB1c2VyX3Byb2ZpbGVfZW50aXR5OiBbXG4gICAgICAgICAgICB0aGlzLmdldFNldHRpbmdzUHJvcGVydHkoJ3VzZXJfcHJvZmlsZV9lbnRpdHknLCBudWxsKVxuICAgICAgICAgIF0sXG4gICAgICAgICAgZW1haWxfdmVyaWZpY2F0aW9uOiBbXG4gICAgICAgICAgICB0aGlzLmdldFNldHRpbmdzUHJvcGVydHkoJ2VtYWlsX3ZlcmlmaWNhdGlvbicsIGZhbHNlKVxuICAgICAgICAgIF0sXG4gICAgICAgICAgZW1haWxfYWRkb246IFt0aGlzLmdldFNldHRpbmdzUHJvcGVydHkoJ2VtYWlsX2FkZG9uJywgZmFsc2UpXSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZW50aXRpZXMgPSByZXMuZW50aXRpZXMuZmlsdGVyKChlbnRpdHk6IElFbnRpdHkpID0+ICEgZW50aXR5LmZyb21BZGRvbik7XG4gICAgICAgIHRoaXMuZW1haWxBZGRvbnMgPSByZXMuYWRkb25zLmZpbHRlcihcbiAgICAgICAgICBhZGRvbiA9PlxuICAgICAgICAgICAgYWRkb24ucGFja2FnZSA9PT0gJ0BtYXRlcmlhL3NlbmRncmlkJyB8fFxuICAgICAgICAgICAgYWRkb24ucGFja2FnZSA9PT0gJ0BtYXRlcmlhL21haWxqZXQnXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuZW1haWxBZGRvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5sb2dpbkZvcm0uZ2V0KCdlbWFpbF92ZXJpZmljYXRpb24nKS5kaXNhYmxlKCk7XG4gICAgICAgICAgdGhpcy5sb2dpbkZvcm0uZ2V0KCdlbWFpbF9hZGRvbicpLmRpc2FibGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggISB0aGlzLnNldHRpbmdzIHx8ICEgdGhpcy5zZXR0aW5ncy5lbWFpbF92ZXJpZmljYXRpb24pIHtcbiAgICAgICAgICB0aGlzLmxvZ2luRm9ybS5nZXQoJ2VtYWlsX2FkZG9uJykuZGlzYWJsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCAhIHRoaXMuc2V0dGluZ3MgfHwgISB0aGlzLnNldHRpbmdzLnVzZXJfcHJvZmlsZV9lbmFibGVkKSB7XG4gICAgICAgICAgdGhpcy5sb2dpbkZvcm0uZ2V0KCd1c2VyX3Byb2ZpbGVfZW50aXR5JykuZGlzYWJsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZW50aXRpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5sb2dpbkZvcm0uZ2V0KCd1c2VyX3Byb2ZpbGVfZW5hYmxlZCcpLnNldFZhbHVlKGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmxvZ2luRm9ybS5nZXQoJ3VzZXJfcHJvZmlsZV9lbnRpdHknKS5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICB0aGlzLmxvZ2luRm9ybS5nZXQoJ3VzZXJfcHJvZmlsZV9lbmFibGVkJykuZGlzYWJsZSgpO1xuICAgICAgICAgIHRoaXMubG9naW5Gb3JtLmdldCgndXNlcl9wcm9maWxlX2VudGl0eScpLmRpc2FibGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvZ2luRm9ybVxuICAgICAgICAgIC5nZXQoJ3VzZXJfcHJvZmlsZV9lbmFibGVkJylcbiAgICAgICAgICAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWwgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgICB0aGlzLmxvZ2luRm9ybS5nZXQoJ3VzZXJfcHJvZmlsZV9lbnRpdHknKS5lbmFibGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMubG9naW5Gb3JtLmdldCgndXNlcl9wcm9maWxlX2VudGl0eScpLmRpc2FibGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmxvZ2luRm9ybS5nZXQoJ2VtYWlsX3ZlcmlmaWNhdGlvbicpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2luRm9ybS5nZXQoJ2VtYWlsX2FkZG9uJykuZW5hYmxlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubG9naW5Gb3JtLmdldCgnZW1haWxfYWRkb24nKS5kaXNhYmxlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZmluaXNoKCkge1xuICAgIGlmICh0aGlzLmxvZ2luRm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5zYXZlQW5kUmVzdGFydC5lbWl0KHRoaXMubG9naW5Gb3JtLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gIH1cbn1cbiIsIjxmb3JtICpuZ0lmPVwibG9naW5Gb3JtXCIgW2Zvcm1Hcm91cF09XCJsb2dpbkZvcm1cIiBzdHlsZT1cIm1heC13aWR0aDogNDAwcHhcIj5cblx0PGgyIG1hdC1kaWFsb2ctdGl0bGUgZnhMYXlvdXQ9XCJyb3dcIj5cblx0XHQ8c3BhbiBmeEZsZXggc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IHRvcDogM3B4OyBsZWZ0OiA1cHg7XCI+VXNlciBNYW5hZ2VtZW50IC0gU2V0dXA8L3NwYW4+XG5cdFx0PGJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiIHRhYmluZGV4PVwiLTFcIiBtYXQtaWNvbi1idXR0b24+XG5cdFx0XHQ8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuXHRcdDwvYnV0dG9uPlxuXHQ8L2gyPlxuXHQ8bWF0LWRpYWxvZy1jb250ZW50PlxuXHRcdDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cblx0XHRcdDxoMz5cblx0XHRcdFx0QXV0aGVudGljYXRpb24gbWV0aG9kXG5cdFx0XHQ8L2gzPlxuXHRcdFx0PG1hdC1yYWRpby1ncm91cCBmb3JtQ29udHJvbE5hbWU9XCJtZXRob2RcIiBmeExheW91dD1cImNvbHVtblwiPlxuXHRcdFx0XHQ8bWF0LXJhZGlvLWJ1dHRvbiB2YWx1ZT1cInRva2VuXCI+VG9rZW4gYmFzZWQgYXV0aGVudGljYXRpb24gKG1vYmlsZSByZWFkeSk8L21hdC1yYWRpby1idXR0b24+XG5cdFx0XHRcdDxtYXQtcmFkaW8tYnV0dG9uIHZhbHVlPVwic2Vzc2lvblwiPlNlc3Npb24gYmFzZWQgYXV0aGVudGljYXRpb248L21hdC1yYWRpby1idXR0b24+XG5cdFx0XHQ8L21hdC1yYWRpby1ncm91cD5cblx0XHRcdFxuXHRcdFx0PGgzPlxuXHRcdFx0XHQ8bWF0LWNoZWNrYm94IGZvcm1Db250cm9sTmFtZT1cInVzZXJfcHJvZmlsZV9lbmFibGVkXCI+VXNlciBwcm9maWxlPC9tYXQtY2hlY2tib3g+XG5cdFx0XHQ8L2gzPlxuXHRcdFx0PG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiZW50aXRpZXM/Lmxlbmd0aCA+IDA7IGVsc2Ugbm9FbnRpdGllc1wiPlxuXHRcdFx0XHQ8bWF0LXNlbGVjdCBwbGFjZWhvbGRlcj1cIlNlbGVjdCB0aGUgdXNlciBwcm9maWxlIGVudGl0eVwiIGZvcm1Db250cm9sTmFtZT1cInVzZXJfcHJvZmlsZV9lbnRpdHlcIj5cblx0XHRcdFx0XHQ8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZW50aXR5IG9mIGVudGl0aWVzXCIgW3ZhbHVlXT1cImVudGl0eS5uYW1lXCI+e3sgZW50aXR5Lm5hbWUgfX08L21hdC1vcHRpb24+XG5cdFx0XHRcdDwvbWF0LXNlbGVjdD5cblx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XG5cdFx0XHQ8bmctdGVtcGxhdGUgI25vRW50aXRpZXM+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ3YXJuaW5nXCI+XG5cdFx0XHRcdFx0Tm8gZW50aXR5IGZvdW5kLiBZb3UgbmVlZCBhbiBlbnRpdHkgdG8gYWRkIGN1c3RvbSBmaWVsZHMgdG8geW91ciB1c2Vycy5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFxuXHRcdFx0PGgzPlxuXHRcdFx0XHQ8bWF0LWNoZWNrYm94IGZvcm1Db250cm9sTmFtZT1cImVtYWlsX3ZlcmlmaWNhdGlvblwiPkVtYWlscyBlbmFibGVkPC9tYXQtY2hlY2tib3g+XG5cdFx0XHQ8L2gzPlxuXG5cdFx0XHQ8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJlbWFpbEFkZG9ucyAmJiBlbWFpbEFkZG9ucy5sZW5ndGggPiAwOyBlbHNlIG5vRW1haWxBZGRvblwiPlxuXHRcdFx0XHQ8bWF0LXNlbGVjdCBwbGFjZWhvbGRlcj1cIlNlbGVjdCB5b3VyIGVtYWlsaW5nIGFkZG9uXCIgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxfYWRkb25cIj5cblx0XHRcdFx0XHQ8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgYWRkb24gb2YgZW1haWxBZGRvbnNcIiBbdmFsdWVdPVwiYWRkb24ucGFja2FnZVwiPnt7IGFkZG9uLm5hbWUgfX08L21hdC1vcHRpb24+XG5cdFx0XHRcdDwvbWF0LXNlbGVjdD5cblx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XG5cblx0XHRcdDxuZy10ZW1wbGF0ZSAjbm9FbWFpbEFkZG9uPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwid2FybmluZ1wiPllvdSBuZWVkXG5cdFx0XHRcdFx0PHN0cm9uZz5NYWlsamV0PC9zdHJvbmc+IGFkZG9uIGluc3RhbGxlZFxuXHRcdFx0XHRcdDxicj50byBzZW5kIGVtYWlsIGZyb20geW91ciBNYXRlcmlhIEFwcGxpY2F0aW9uIHN1Y2ggYXMgYSBzaWdudXAgZW1haWw8L2Rpdj5cblx0XHRcdDwvbmctdGVtcGxhdGU+XG5cdFx0PC9kaXY+XG5cdDwvbWF0LWRpYWxvZy1jb250ZW50PlxuXHQ8bWF0LWRpYWxvZy1hY3Rpb25zPlxuXHRcdDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImZpbmlzaCgpXCI+U2F2ZTwvYnV0dG9uPlxuXHRcdDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cImNsb3NlKClcIj5DYW5jZWw8L2J1dHRvbj5cblx0PC9tYXQtZGlhbG9nLWFjdGlvbnM+XG48L2Zvcm0+Il19