UNPKG

iptdevs-design-system

Version:

Library common elements into IPT Plattform.

202 lines 26 kB
import { Injectable } from '@angular/core'; import Swal from 'sweetalert2'; import * as i0 from "@angular/core"; import * as i1 from "../../services/user-service/user-service"; import * as i2 from "../../services/storage-service/storage-service"; import * as i3 from "../../services/calendar-service/calendar.service"; export class BaseService { constructor(userService, storageService, calendarService) { this.userService = userService; this.storageService = storageService; this.calendarService = calendarService; } webLogin(user, password) { let request = { user: user, password: password }; let service = this.userService; let storage = this.storageService; let appUser = this.isAnAppUser(); return new Promise(function (resolve, reject) { service.login(request).subscribe(response => { switch (response.message.code) { case 1: if (!appUser) { Swal.fire({ 'title': '<p style="font-family: Poppins"">Perfect!</p>', 'html': '<p style="font-family: Poppins"">Succesfull login</p>', 'icon': 'success', }); } const loginRegisterUser = { token: response.data.token, user: response.data, }; storage.setCurrentSession(loginRegisterUser); resolve(true); break; case 2: Swal.fire({ 'title': '<p style="font-family: Poppins"">Warning!</p>', 'html': '<p style="font-family: Poppins"">The data does not correspond to a user registered in our system, please review them.</p>', 'icon': 'warning', }); resolve(false); break; case 3: Swal.fire({ 'title': '<p style="font-family: Poppins"">Error!</p>', 'html': '<p style="font-family: Poppins"">The input data does not meet the established parameters.</p>', 'icon': 'error', }); resolve(false); break; case 4: Swal.fire({ title: '<p style="font-family: Poppins">Warning!</p>', html: '<div style="text-align: center; font-family: Poppins;">' + '<i class="fas fa-exclamation-triangle" style="color: red; font-size: 24px;"></i>' + '<p>Your account is in inactive status. Contact support.</p>' + '</div>', showConfirmButton: true, }); resolve(false); break; default: Swal.fire({ 'title': '<p style="font-family: Poppins"">Error!</p>', 'html': '<p style="font-family: Poppins"">An unexpected error has occurred</p>', 'icon': 'error', }); resolve(false); break; } reject('Unhandled exception'); }); }); } getCronogramAvailability(isTeacher, code, startDate, numClass, weekDays, startTime, endTime) { let request = { isTeacher: isTeacher, code: code, startDate: startDate, numClass: numClass, weekDays: weekDays, startTime: startTime, endTime: endTime, }; let service = this.calendarService; return new Promise(function (resolve, reject) { service.postCreateQueryEvent(request).subscribe((response) => { switch (response.message.code) { case 1: resolve(response.data); break; default: reject('Unhandled exception'); } reject('Unhandled exception'); }); }); } isAnAppUser() { const userAgent = window.navigator.userAgent; return userAgent.includes('Flutter IPT APP'); } getUserRole() { let user = this.storageService.getCurrentUser()?.role; return user === undefined ? -1 : user; } getUserToken() { let token = this.storageService.getCurrentUser()?.token; return token === undefined ? '-1' : token; } getUserName() { let user = this.storageService.getCurrentUser(); let response = user === null ? '' : user.name; return response; } getUserCode() { let user = this.storageService.getCurrentUser(); let response = user === null ? -1 : user.code; return response; } registerUserFromDashboard(registerDashboardRq) { let request = registerDashboardRq; let service = this.userService; return new Promise(function (resolve, reject) { service.registerDashboard(request).subscribe((response) => { switch (response.message.code) { case 1: Swal.fire({ 'title': '<p style="font-family: Poppins"">Perfect!</p>', 'html': '<p style="font-family: Poppins"">Sucesfull register!</p>', 'icon': 'success', }); resolve(true); break; case 3: Swal.fire({ 'title': '<p style="font-family: Poppins"">Error!</p>', 'html': '<p style="font-family: Poppins"">The input data does not meet the established parameters.</p>', 'icon': 'error', }); resolve(false); break; case 4: Swal.fire({ 'title': '<p style="font-family: Poppins">Ups!</p>', 'html': '<p style="font-family: Poppins">The input data has a high relation with a user that already exists!</p>', 'icon': 'warning', }); resolve(false); break; default: Swal.fire({ 'title': '<p style="font-family: Poppins"">Error!</p>', 'html': '<p style="font-family: Poppins"">An unexpected error has occurred</p>', 'icon': 'error', }); resolve(false); break; } reject('Unhandled exception'); }); }); } jsonToArray(data) { var response = []; data.forEach((element) => { var object = []; for (var clave in element) { if (element.hasOwnProperty(clave)) { if (typeof element[clave] == 'object') { element[clave] = this.subJsonToArray(element[clave]); } object.push(element[clave]); } } response.push(object); }); return response; } subJsonToArray(data) { var object = ''; for (var clave in data) { if (clave != 'code') { object += '\n' + data[clave]; } } return object; } } BaseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: BaseService, deps: [{ token: i1.UserService }, { token: i2.StorageService }, { token: i3.CalendarService }], target: i0.ɵɵFactoryTarget.Injectable }); BaseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: BaseService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: BaseService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.UserService }, { type: i2.StorageService }, { type: i3.CalendarService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvcmUvdXRpbHMvYmFzZS1zZXJ2aWNlL2Jhc2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFVL0IsTUFBTSxPQUFPLFdBQVc7SUFFdEIsWUFDVSxXQUF3QixFQUN4QixjQUE4QixFQUM5QixlQUFnQztRQUZoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQ3ZDLENBQUM7SUFFSixRQUFRLENBQUMsSUFBWSxFQUFFLFFBQWdCO1FBQ3JDLElBQUksT0FBTyxHQUFZO1lBQ3JCLElBQUksRUFBRSxJQUFJO1lBQ1YsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQTtRQUNELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDL0IsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNsQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFakMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFTLE9BQU8sRUFBRSxNQUFNO1lBQ3pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUMzQyxRQUFRLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO29CQUM3QixLQUFLLENBQUM7d0JBQ0osSUFBRyxDQUFDLE9BQU8sRUFBRTs0QkFDWCxJQUFJLENBQUMsSUFBSSxDQUFFO2dDQUNULE9BQU8sRUFBRSwrQ0FBK0M7Z0NBQ3hELE1BQU0sRUFBRSx1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QztRQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxNQUFNLEdBQVUsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssSUFBSSxLQUFLLElBQUksT0FBTyxFQUFFO2dCQUN6QixJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ2pDLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksUUFBUSxFQUFFO3dCQUNyQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztxQkFDdEQ7b0JBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDN0I7YUFDRjtZQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVc7UUFDeEIsSUFBSSxNQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLEtBQUssSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ3RCLElBQUksS0FBSyxJQUFJLE1BQU0sRUFBRTtnQkFDbkIsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDOUI7U0FDRjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O3dHQS9NVSxXQUFXOzRHQUFYLFdBQVcsY0FGVixNQUFNOzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9naW5ScSwgUmVnaXN0ZXJEYXNoYm9hcmRScSB9IGZyb20gJy4uLy4uL21vZGVscy91c2VyL3VzZXItcnEubW9kZWwnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91c2VyLXNlcnZpY2UvdXNlci1zZXJ2aWNlJztcbmltcG9ydCBTd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcbmltcG9ydCB7IFNlc3Npb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvc2Vzc2lvbi9zZXNzaW9uLm1vZGVsJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmFnZS1zZXJ2aWNlL3N0b3JhZ2Utc2VydmljZSc7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlRdWVyeVJxIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Nyb25vZ3JhbS9jcm9ub2dyYW0ubW9kZWxzJztcbmltcG9ydCB7IENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NhbGVuZGFyLXNlcnZpY2UvY2FsZW5kYXIuc2VydmljZSc7XG5pbXBvcnQgeyBSZXNwb25zZSB9IGZyb20gJy4uLy4uL21vZGVscy9yZXNwb25zZS9yZXNwb25zZS5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQmFzZVNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FsZW5kYXJTZXJ2aWNlOiBDYWxlbmRhclNlcnZpY2VcbiAgKSB7fVxuXG4gIHdlYkxvZ2luKHVzZXI6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj57XG4gICAgbGV0IHJlcXVlc3Q6IExvZ2luUnEgPSB7XG4gICAgICB1c2VyOiB1c2VyLFxuICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkXG4gICAgfVxuICAgIGxldCBzZXJ2aWNlID0gdGhpcy51c2VyU2VydmljZTtcbiAgICBsZXQgc3RvcmFnZSA9IHRoaXMuc3RvcmFnZVNlcnZpY2U7XG4gICAgbGV0IGFwcFVzZXIgPSB0aGlzLmlzQW5BcHBVc2VyKCk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBzZXJ2aWNlLmxvZ2luKHJlcXVlc3QpLnN1YnNjcmliZSggcmVzcG9uc2UgPT4ge1xuICAgICAgICBzd2l0Y2ggKHJlc3BvbnNlLm1lc3NhZ2UuY29kZSkge1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIGlmKCFhcHBVc2VyKSB7XG4gICAgICAgICAgICAgIFN3YWwuZmlyZSAoe1xuICAgICAgICAgICAgICAgICd0aXRsZSc6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCJcIj5QZXJmZWN0ITwvcD4nLFxuICAgICAgICAgICAgICAgICdodG1sJzogJzxwIHN0eWxlPVwiZm9udC1mYW1pbHk6IFBvcHBpbnNcIlwiPlN1Y2Nlc2Z1bGwgbG9naW48L3A+JyxcbiAgICAgICAgICAgICAgICAnaWNvbic6J3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxvZ2luUmVnaXN0ZXJVc2VyOiBTZXNzaW9uID0ge1xuICAgICAgICAgICAgICB0b2tlbjogcmVzcG9uc2UuZGF0YS50b2tlbixcbiAgICAgICAgICAgICAgdXNlcjogcmVzcG9uc2UuZGF0YSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHN0b3JhZ2Uuc2V0Q3VycmVudFNlc3Npb24obG9naW5SZWdpc3RlclVzZXIpO1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICd0aXRsZSc6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCJcIj5XYXJuaW5nITwvcD4nLFxuICAgICAgICAgICAgICAnaHRtbCc6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCJcIj5UaGUgZGF0YSBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgdXNlciByZWdpc3RlcmVkIGluIG91ciBzeXN0ZW0sIHBsZWFzZSByZXZpZXcgdGhlbS48L3A+JyxcbiAgICAgICAgICAgICAgJ2ljb24nOid3YXJuaW5nJyxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICd0aXRsZSc6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCJcIj5FcnJvciE8L3A+JyxcbiAgICAgICAgICAgICAgJ2h0bWwnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+VGhlIGlucHV0IGRhdGEgZG9lcyBub3QgbWVldCB0aGUgZXN0YWJsaXNoZWQgcGFyYW1ldGVycy48L3A+JyxcbiAgICAgICAgICAgICAgJ2ljb24nOidlcnJvcicsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCI+V2FybmluZyE8L3A+JyxcbiAgICAgICAgICAgICAgICBodG1sOiAnPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1mYW1pbHk6IFBvcHBpbnM7XCI+JyArXG4gICAgICAgICAgICAgICAgICAgICAgJzxpIGNsYXNzPVwiZmFzIGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCIgc3R5bGU9XCJjb2xvcjogcmVkOyBmb250LXNpemU6IDI0cHg7XCI+PC9pPicgK1xuICAgICAgICAgICAgICAgICAgICAgICc8cD5Zb3VyIGFjY291bnQgaXMgaW4gaW5hY3RpdmUgc3RhdHVzLiBDb250YWN0IHN1cHBvcnQuPC9wPicgK1xuICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nLFxuICAgICAgICAgICAgICAgIHNob3dDb25maXJtQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgICAndGl0bGUnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+RXJyb3IhPC9wPicsXG4gICAgICAgICAgICAgICdodG1sJzogJzxwIHN0eWxlPVwiZm9udC1mYW1pbHk6IFBvcHBpbnNcIlwiPkFuIHVuZXhwZWN0ZWQgZXJyb3IgaGFzIG9jY3VycmVkPC9wPicsXG4gICAgICAgICAgICAgICdpY29uJzonZXJyb3InLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmVqZWN0KCdVbmhhbmRsZWQgZXhjZXB0aW9uJyk7XG4gICAgICB9KTtcbiAgICB9KVxuICB9XG5cbiAgZ2V0Q3Jvbm9ncmFtQXZhaWxhYmlsaXR5KGlzVGVhY2hlcjogYm9vbGVhbiwgY29kZTogbnVtYmVyLCBzdGFydERhdGU6IHN0cmluZywgbnVtQ2xhc3M6IG51bWJlciwgd2Vla0RheXM6IGFueVtdLCBzdGFydFRpbWU6IHN0cmluZywgZW5kVGltZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+e1xuICAgIGxldCByZXF1ZXN0OiBBdmFpbGFiaWxpdHlRdWVyeVJxID0ge1xuICAgICAgaXNUZWFjaGVyOiBpc1RlYWNoZXIsXG4gICAgICBjb2RlOiBjb2RlLFxuICAgICAgc3RhcnREYXRlOiBzdGFydERhdGUsXG4gICAgICBudW1DbGFzczogbnVtQ2xhc3MsXG4gICAgICB3ZWVrRGF5czogd2Vla0RheXMsXG4gICAgICBzdGFydFRpbWU6IHN0YXJ0VGltZSxcbiAgICAgIGVuZFRpbWU6IGVuZFRpbWUsXG4gICAgfTtcblxuICAgIGxldCBzZXJ2aWNlID0gdGhpcy5jYWxlbmRhclNlcnZpY2U7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBzZXJ2aWNlLnBvc3RDcmVhdGVRdWVyeUV2ZW50KHJlcXVlc3QpLnN1YnNjcmliZSggIChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICAgICAgc3dpdGNoIChyZXNwb25zZS5tZXNzYWdlLmNvZGUpIHtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmVqZWN0KCdVbmhhbmRsZWQgZXhjZXB0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmVqZWN0KCdVbmhhbmRsZWQgZXhjZXB0aW9uJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGlzQW5BcHBVc2VyKCkge1xuICAgIGNvbnN0IHVzZXJBZ2VudDogc3RyaW5nID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgcmV0dXJuIHVzZXJBZ2VudC5pbmNsdWRlcygnRmx1dHRlciBJUFQgQVBQJyk7XG4gIH1cblxuICBnZXRVc2VyUm9sZSgpOiBudW1iZXIge1xuICAgIGxldCB1c2VyID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRDdXJyZW50VXNlcigpPy5yb2xlO1xuICAgIHJldHVybiB1c2VyID09PSB1bmRlZmluZWQgPyAtMSA6IHVzZXI7XG4gIH1cblxuICBnZXRVc2VyVG9rZW4oKTogc3RyaW5nIHtcbiAgICBsZXQgdG9rZW4gPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCk/LnRva2VuO1xuICAgIHJldHVybiB0b2tlbiA9PT0gdW5kZWZpbmVkID8gJy0xJyA6IHRva2VuO1xuICB9XG5cbiAgZ2V0VXNlck5hbWUoKTogc3RyaW5nIHtcbiAgICBsZXQgdXNlciA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICBsZXQgcmVzcG9uc2UgPSB1c2VyID09PSBudWxsID8gJycgOiB1c2VyLm5hbWU7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgZ2V0VXNlckNvZGUoKTogbnVtYmVyIHtcbiAgICBsZXQgdXNlciA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICBsZXQgcmVzcG9uc2UgPSB1c2VyID09PSBudWxsID8gLTEgOiB1c2VyLmNvZGU7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgcmVnaXN0ZXJVc2VyRnJvbURhc2hib2FyZChyZWdpc3RlckRhc2hib2FyZFJxOiBSZWdpc3RlckRhc2hib2FyZFJxKTogUHJvbWlzZTxib29sZWFuPntcbiAgICBsZXQgcmVxdWVzdCA9IHJlZ2lzdGVyRGFzaGJvYXJkUnE7XG4gICAgbGV0IHNlcnZpY2UgPSB0aGlzLnVzZXJTZXJ2aWNlO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgc2VydmljZS5yZWdpc3RlckRhc2hib2FyZChyZXF1ZXN0KS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG5cbiAgICAgICAgc3dpdGNoIChyZXNwb25zZS5tZXNzYWdlLmNvZGUpIHtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBTd2FsLmZpcmUgKHtcbiAgICAgICAgICAgICAgJ3RpdGxlJzogJzxwIHN0eWxlPVwiZm9udC1mYW1pbHk6IFBvcHBpbnNcIlwiPlBlcmZlY3QhPC9wPicsXG4gICAgICAgICAgICAgICdodG1sJzogJzxwIHN0eWxlPVwiZm9udC1mYW1pbHk6IFBvcHBpbnNcIlwiPlN1Y2VzZnVsbCByZWdpc3RlciE8L3A+JyxcbiAgICAgICAgICAgICAgJ2ljb24nOidzdWNjZXNzJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIFN3YWwuZmlyZSAoe1xuICAgICAgICAgICAgICAndGl0bGUnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+RXJyb3IhPC9wPicsXG4gICAgICAgICAgICAgICdodG1sJzogJzxwIHN0eWxlPVwiZm9udC1mYW1pbHk6IFBvcHBpbnNcIlwiPlRoZSBpbnB1dCBkYXRhIGRvZXMgbm90IG1lZXQgdGhlIGVzdGFibGlzaGVkIHBhcmFtZXRlcnMuPC9wPicsXG4gICAgICAgICAgICAgICdpY29uJzonZXJyb3InLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIFN3YWwuZmlyZSAoe1xuICAgICAgICAgICAgICAndGl0bGUnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiPlVwcyE8L3A+JyxcbiAgICAgICAgICAgICAgJ2h0bWwnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiPlRoZSBpbnB1dCBkYXRhIGhhcyBhIGhpZ2ggcmVsYXRpb24gd2l0aCBhIHVzZXIgdGhhdCBhbHJlYWR5IGV4aXN0cyE8L3A+JyxcbiAgICAgICAgICAgICAgJ2ljb24nOiAnd2FybmluZycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIFN3YWwuZmlyZSAoe1xuICAgICAgICAgICAgICAndGl0bGUnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+RXJyb3IhPC9wPicsXG4gICAgICAgICAgICAgICdodG1sJzogJzxwIHN0eWxlPVwiZm9udC1mYW1pbHk6IFBvcHBpbnNcIlwiPkFuIHVuZXhwZWN0ZWQgZXJyb3IgaGFzIG9jY3VycmVkPC9wPicsXG4gICAgICAgICAgICAgICdpY29uJzonZXJyb3InLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVqZWN0KCdVbmhhbmRsZWQgZXhjZXB0aW9uJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGpzb25Ub0FycmF5KGRhdGE6IGFueVtdKTogYW55W11bXSB7XG4gICAgdmFyIHJlc3BvbnNlOiBhbnlbXSA9IFtdO1xuICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgdmFyIG9iamVjdDogYW55W10gPSBbXTtcbiAgICAgIGZvciAodmFyIGNsYXZlIGluIGVsZW1lbnQpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQuaGFzT3duUHJvcGVydHkoY2xhdmUpKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBlbGVtZW50W2NsYXZlXSA9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgZWxlbWVudFtjbGF2ZV0gPSB0aGlzLnN1Ykpzb25Ub0FycmF5KGVsZW1lbnRbY2xhdmVdKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBvYmplY3QucHVzaChlbGVtZW50W2NsYXZlXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlc3BvbnNlLnB1c2gob2JqZWN0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBzdWJKc29uVG9BcnJheShkYXRhOiBhbnlbXSk6IHN0cmluZyB7XG4gICAgdmFyIG9iamVjdDogc3RyaW5nID0gJyc7XG4gICAgZm9yICh2YXIgY2xhdmUgaW4gZGF0YSkge1xuICAgICAgaWYgKGNsYXZlICE9ICdjb2RlJykge1xuICAgICAgICBvYmplY3QgKz0gJ1xcbicgKyBkYXRhW2NsYXZlXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuXG59XG4iXX0=