iptdevs-design-system 2.7.26 → 2.7.28
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 +24 -24
- package/esm2020/iptdevs-design-system.mjs +4 -4
- package/esm2020/lib/components/atoms/aside-button/aside-button.component.mjs +50 -50
- package/esm2020/lib/components/atoms/button/button.component.mjs +64 -64
- package/esm2020/lib/components/atoms/checkbox/checkbox.component.mjs +47 -47
- package/esm2020/lib/components/atoms/datalist/datalist.component.mjs +94 -94
- package/esm2020/lib/components/atoms/input/input.component.mjs +145 -145
- package/esm2020/lib/components/atoms/level-button/level-button.component.mjs +64 -64
- package/esm2020/lib/components/atoms/level-text/level-text.component.mjs +19 -19
- package/esm2020/lib/components/atoms/loader/loader.component.mjs +48 -48
- package/esm2020/lib/components/atoms/radio/radio.component.mjs +47 -47
- package/esm2020/lib/components/atoms/select/select.component.mjs +102 -102
- package/esm2020/lib/components/atoms/text-link/text-link.component.mjs +39 -39
- package/esm2020/lib/components/components.module.mjs +118 -118
- package/esm2020/lib/components/forms/create-user-form/create-user-form.component.mjs +228 -228
- package/esm2020/lib/components/forms/login-form/login-form.component.mjs +93 -93
- package/esm2020/lib/components/material.module.mjs +19 -19
- package/esm2020/lib/components/molecules/sidenav/sidenav.component.mjs +150 -150
- package/esm2020/lib/core/core.module.mjs +70 -70
- package/esm2020/lib/core/models/academic/academic.component.mjs +2 -2
- package/esm2020/lib/core/models/activities/activities.interface.mjs +2 -2
- package/esm2020/lib/core/models/attendance/attendance.interface.mjs +2 -2
- package/esm2020/lib/core/models/budget/budget.model.mjs +2 -2
- package/esm2020/lib/core/models/calendar/calendar-rq.models.mjs +2 -2
- package/esm2020/lib/core/models/classroom/classroom-rq.model.mjs +2 -2
- package/esm2020/lib/core/models/cod/cod-rq.model.mjs +2 -2
- package/esm2020/lib/core/models/commercial/commercial.model.mjs +2 -2
- package/esm2020/lib/core/models/course/course-rq.model.mjs +2 -2
- package/esm2020/lib/core/models/course/courses.model.mjs +2 -2
- package/esm2020/lib/core/models/cronogram/cronogram.models.mjs +2 -2
- package/esm2020/lib/core/models/marketing/marketing.model.mjs +2 -2
- package/esm2020/lib/core/models/notes/notes.interface.mjs +2 -2
- package/esm2020/lib/core/models/payment/payment-rq.model.mjs +2 -2
- package/esm2020/lib/core/models/response/response.interface.mjs +2 -2
- package/esm2020/lib/core/models/session/session.model.mjs +3 -3
- package/esm2020/lib/core/models/student/student.interface.mjs +2 -2
- package/esm2020/lib/core/models/table/table-rs.model.mjs +2 -2
- package/esm2020/lib/core/models/test/test.model.mjs +2 -2
- package/esm2020/lib/core/models/url/url.model.mjs +2 -2
- package/esm2020/lib/core/models/user/user-rq.model.mjs +2 -2
- package/esm2020/lib/core/models/user/user-rs.model.mjs +5 -5
- package/esm2020/lib/core/services/academic-service/academic.service.mjs +40 -35
- package/esm2020/lib/core/services/activity-service/activity.service.mjs +87 -87
- package/esm2020/lib/core/services/attendance-service/attendance.service.mjs +64 -64
- package/esm2020/lib/core/services/budget-service/budget-service.mjs +66 -66
- package/esm2020/lib/core/services/calendar-service/calendar.service.mjs +60 -60
- package/esm2020/lib/core/services/certificate-service/certificate.service.mjs +26 -26
- package/esm2020/lib/core/services/classroom-service/classroom-service.service.mjs +31 -31
- package/esm2020/lib/core/services/commercial-service/comercial.service.mjs +49 -44
- package/esm2020/lib/core/services/commercial-service/validators.mjs +4 -4
- package/esm2020/lib/core/services/course-service/course-service.model.mjs +70 -70
- package/esm2020/lib/core/services/ekt-service/userekt.service.mjs +29 -29
- package/esm2020/lib/core/services/marketing-service/marketing-service.mjs +52 -52
- package/esm2020/lib/core/services/notes-service/notes.service.mjs +46 -46
- package/esm2020/lib/core/services/parameters-service/parameters.service.mjs +173 -173
- package/esm2020/lib/core/services/service-enviroments.mjs +26 -26
- package/esm2020/lib/core/services/storage-service/storage-service.mjs +50 -50
- package/esm2020/lib/core/services/student-service/student.service.mjs +26 -26
- package/esm2020/lib/core/services/switch-service/switch.service.mjs +16 -16
- package/esm2020/lib/core/services/test-service/test.service.mjs +131 -131
- package/esm2020/lib/core/services/user-service/user-service.mjs +95 -95
- package/esm2020/lib/core/utils/base-service/base.service.mjs +186 -186
- package/esm2020/lib/core/utils/route-service/route.service.mjs +18 -18
- package/esm2020/lib/design-system.module.mjs +36 -36
- package/esm2020/public-api.mjs +70 -70
- package/fesm2015/iptdevs-design-system.mjs +2516 -2506
- package/fesm2015/iptdevs-design-system.mjs.map +1 -1
- package/fesm2020/iptdevs-design-system.mjs +2513 -2503
- package/fesm2020/iptdevs-design-system.mjs.map +1 -1
- package/iptdevs-design-system.d.ts +5 -5
- package/lib/components/atoms/aside-button/aside-button.component.d.ts +11 -11
- package/lib/components/atoms/button/button.component.d.ts +13 -13
- package/lib/components/atoms/checkbox/checkbox.component.d.ts +11 -11
- package/lib/components/atoms/datalist/datalist.component.d.ts +20 -20
- package/lib/components/atoms/input/input.component.d.ts +26 -26
- package/lib/components/atoms/level-button/level-button.component.d.ts +11 -11
- package/lib/components/atoms/level-text/level-text.component.d.ts +7 -7
- package/lib/components/atoms/loader/loader.component.d.ts +7 -7
- package/lib/components/atoms/radio/radio.component.d.ts +11 -11
- package/lib/components/atoms/select/select.component.d.ts +26 -26
- package/lib/components/atoms/text-link/text-link.component.d.ts +12 -12
- package/lib/components/components.module.d.ts +24 -24
- package/lib/components/forms/create-user-form/create-user-form.component.d.ts +36 -36
- package/lib/components/forms/login-form/login-form.component.d.ts +13 -13
- package/lib/components/material.module.d.ts +11 -11
- package/lib/components/molecules/sidenav/sidenav.component.d.ts +25 -25
- package/lib/core/core.module.d.ts +6 -6
- package/lib/core/models/academic/academic.component.d.ts +17 -13
- package/lib/core/models/activities/activities.interface.d.ts +12 -12
- package/lib/core/models/attendance/attendance.interface.d.ts +62 -62
- package/lib/core/models/budget/budget.model.d.ts +69 -69
- package/lib/core/models/calendar/calendar-rq.models.d.ts +27 -27
- package/lib/core/models/classroom/classroom-rq.model.d.ts +18 -18
- package/lib/core/models/cod/cod-rq.model.d.ts +106 -51
- package/lib/core/models/commercial/commercial.model.d.ts +10 -10
- package/lib/core/models/course/course-rq.model.d.ts +86 -86
- package/lib/core/models/course/courses.model.d.ts +18 -18
- package/lib/core/models/cronogram/cronogram.models.d.ts +183 -183
- package/lib/core/models/marketing/marketing.model.d.ts +104 -104
- package/lib/core/models/notes/notes.interface.d.ts +89 -89
- package/lib/core/models/payment/payment-rq.model.d.ts +212 -212
- package/lib/core/models/response/response.interface.d.ts +10 -10
- package/lib/core/models/session/session.model.d.ts +5 -5
- package/lib/core/models/student/student.interface.d.ts +4 -4
- package/lib/core/models/table/table-rs.model.d.ts +7 -7
- package/lib/core/models/test/test.model.d.ts +219 -219
- package/lib/core/models/url/url.model.d.ts +8 -8
- package/lib/core/models/user/user-rq.model.d.ts +86 -86
- package/lib/core/models/user/user-rs.model.d.ts +35 -35
- package/lib/core/services/academic-service/academic.service.d.ts +16 -15
- package/lib/core/services/activity-service/activity.service.d.ts +25 -25
- package/lib/core/services/attendance-service/attendance.service.d.ts +22 -22
- package/lib/core/services/budget-service/budget-service.d.ts +23 -23
- package/lib/core/services/calendar-service/calendar.service.d.ts +22 -22
- package/lib/core/services/certificate-service/certificate.service.d.ts +13 -13
- package/lib/core/services/classroom-service/classroom-service.service.d.ts +14 -14
- package/lib/core/services/commercial-service/comercial.service.d.ts +19 -17
- package/lib/core/services/commercial-service/validators.d.ts +2 -2
- package/lib/core/services/course-service/course-service.model.d.ts +23 -23
- package/lib/core/services/ekt-service/userekt.service.d.ts +13 -13
- package/lib/core/services/marketing-service/marketing-service.d.ts +19 -19
- package/lib/core/services/notes-service/notes.service.d.ts +18 -18
- package/lib/core/services/parameters-service/parameters.service.d.ts +49 -49
- package/lib/core/services/service-enviroments.d.ts +5 -5
- package/lib/core/services/storage-service/storage-service.d.ts +18 -18
- package/lib/core/services/student-service/student.service.d.ts +13 -13
- package/lib/core/services/switch-service/switch.service.d.ts +8 -8
- package/lib/core/services/test-service/test.service.d.ts +34 -34
- package/lib/core/services/user-service/user-service.d.ts +29 -29
- package/lib/core/utils/base-service/base.service.d.ts +22 -22
- package/lib/core/utils/route-service/route.service.d.ts +9 -9
- package/lib/design-system.module.d.ts +9 -9
- package/package.json +1 -1
- package/public-api.d.ts +61 -61
|
@@ -1,186 +1,186 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import Swal from 'sweetalert2';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../../services/user-service/user-service";
|
|
5
|
-
import * as i2 from "../../services/storage-service/storage-service";
|
|
6
|
-
import * as i3 from "../../services/calendar-service/calendar.service";
|
|
7
|
-
export class BaseService {
|
|
8
|
-
constructor(userService, storageService, calendarService) {
|
|
9
|
-
this.userService = userService;
|
|
10
|
-
this.storageService = storageService;
|
|
11
|
-
this.calendarService = calendarService;
|
|
12
|
-
}
|
|
13
|
-
webLogin(user, password) {
|
|
14
|
-
let request = {
|
|
15
|
-
user: user,
|
|
16
|
-
password: password
|
|
17
|
-
};
|
|
18
|
-
let service = this.userService;
|
|
19
|
-
let storage = this.storageService;
|
|
20
|
-
let appUser = this.isAnAppUser();
|
|
21
|
-
return new Promise(function (resolve, reject) {
|
|
22
|
-
service.login(request).subscribe(response => {
|
|
23
|
-
switch (response.message.code) {
|
|
24
|
-
case 1:
|
|
25
|
-
if (!appUser) {
|
|
26
|
-
Swal.fire({
|
|
27
|
-
'title': '<p style="font-family: Poppins"">Perfect!</p>',
|
|
28
|
-
'html': '<p style="font-family: Poppins"">Succesfull login</p>',
|
|
29
|
-
'icon': 'success',
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
const loginRegisterUser = {
|
|
33
|
-
token: response.data.token,
|
|
34
|
-
user: response.data,
|
|
35
|
-
};
|
|
36
|
-
storage.setCurrentSession(loginRegisterUser);
|
|
37
|
-
resolve(true);
|
|
38
|
-
break;
|
|
39
|
-
case 2:
|
|
40
|
-
Swal.fire({
|
|
41
|
-
'title': '<p style="font-family: Poppins"">Warning!</p>',
|
|
42
|
-
'html': '<p style="font-family: Poppins"">The data does not correspond to a user registered in our system, please review them.</p>',
|
|
43
|
-
'icon': 'warning',
|
|
44
|
-
});
|
|
45
|
-
resolve(false);
|
|
46
|
-
break;
|
|
47
|
-
case 3:
|
|
48
|
-
Swal.fire({
|
|
49
|
-
'title': '<p style="font-family: Poppins"">Error!</p>',
|
|
50
|
-
'html': '<p style="font-family: Poppins"">The input data does not meet the established parameters.</p>',
|
|
51
|
-
'icon': 'error',
|
|
52
|
-
});
|
|
53
|
-
resolve(false);
|
|
54
|
-
break;
|
|
55
|
-
default:
|
|
56
|
-
Swal.fire({
|
|
57
|
-
'title': '<p style="font-family: Poppins"">Error!</p>',
|
|
58
|
-
'html': '<p style="font-family: Poppins"">An unexpected error has occurred</p>',
|
|
59
|
-
'icon': 'error',
|
|
60
|
-
});
|
|
61
|
-
resolve(false);
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
reject('Unhandled exception');
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
getCronogramAvailability(isTeacher, code, startDate, numClass, weekDays, startTime, endTime) {
|
|
69
|
-
let request = {
|
|
70
|
-
isTeacher: isTeacher,
|
|
71
|
-
code: code,
|
|
72
|
-
startDate: startDate,
|
|
73
|
-
numClass: numClass,
|
|
74
|
-
weekDays: weekDays,
|
|
75
|
-
startTime: startTime,
|
|
76
|
-
endTime: endTime,
|
|
77
|
-
};
|
|
78
|
-
let service = this.calendarService;
|
|
79
|
-
return new Promise(function (resolve, reject) {
|
|
80
|
-
service.postCreateQueryEvent(request).subscribe((response) => {
|
|
81
|
-
switch (response.message.code) {
|
|
82
|
-
case 1:
|
|
83
|
-
resolve(response.data);
|
|
84
|
-
break;
|
|
85
|
-
default:
|
|
86
|
-
reject('Unhandled exception');
|
|
87
|
-
}
|
|
88
|
-
reject('Unhandled exception');
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
isAnAppUser() {
|
|
93
|
-
const userAgent = window.navigator.userAgent;
|
|
94
|
-
return userAgent.includes('Flutter IPT APP');
|
|
95
|
-
}
|
|
96
|
-
getUserRole() {
|
|
97
|
-
let user = this.storageService.getCurrentUser()?.role;
|
|
98
|
-
return user === undefined ? -1 : user;
|
|
99
|
-
}
|
|
100
|
-
getUserToken() {
|
|
101
|
-
let token = this.storageService.getCurrentUser()?.token;
|
|
102
|
-
return token === undefined ? '-1' : token;
|
|
103
|
-
}
|
|
104
|
-
getUserName() {
|
|
105
|
-
let user = this.storageService.getCurrentUser();
|
|
106
|
-
let response = user === null ? '' : user.name;
|
|
107
|
-
return response;
|
|
108
|
-
}
|
|
109
|
-
registerUserFromDashboard(registerDashboardRq) {
|
|
110
|
-
let request = registerDashboardRq;
|
|
111
|
-
let service = this.userService;
|
|
112
|
-
return new Promise(function (resolve, reject) {
|
|
113
|
-
service.registerDashboard(request).subscribe((response) => {
|
|
114
|
-
switch (response.message.code) {
|
|
115
|
-
case 1:
|
|
116
|
-
Swal.fire({
|
|
117
|
-
'title': '<p style="font-family: Poppins"">Perfect!</p>',
|
|
118
|
-
'html': '<p style="font-family: Poppins"">Sucesfull register!</p>',
|
|
119
|
-
'icon': 'success',
|
|
120
|
-
});
|
|
121
|
-
resolve(true);
|
|
122
|
-
break;
|
|
123
|
-
case 3:
|
|
124
|
-
Swal.fire({
|
|
125
|
-
'title': '<p style="font-family: Poppins"">Error!</p>',
|
|
126
|
-
'html': '<p style="font-family: Poppins"">The input data does not meet the established parameters.</p>',
|
|
127
|
-
'icon': 'error',
|
|
128
|
-
});
|
|
129
|
-
resolve(false);
|
|
130
|
-
break;
|
|
131
|
-
case 4:
|
|
132
|
-
Swal.fire({
|
|
133
|
-
'title': '<p style="font-family: Poppins">Ups!</p>',
|
|
134
|
-
'html': '<p style="font-family: Poppins">The input data has a high relation with a user that already exists!</p>',
|
|
135
|
-
'icon': 'warning',
|
|
136
|
-
});
|
|
137
|
-
resolve(false);
|
|
138
|
-
break;
|
|
139
|
-
default:
|
|
140
|
-
Swal.fire({
|
|
141
|
-
'title': '<p style="font-family: Poppins"">Error!</p>',
|
|
142
|
-
'html': '<p style="font-family: Poppins"">An unexpected error has occurred</p>',
|
|
143
|
-
'icon': 'error',
|
|
144
|
-
});
|
|
145
|
-
resolve(false);
|
|
146
|
-
break;
|
|
147
|
-
}
|
|
148
|
-
reject('Unhandled exception');
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
jsonToArray(data) {
|
|
153
|
-
var response = [];
|
|
154
|
-
data.forEach((element) => {
|
|
155
|
-
var object = [];
|
|
156
|
-
for (var clave in element) {
|
|
157
|
-
if (element.hasOwnProperty(clave)) {
|
|
158
|
-
if (typeof element[clave] == 'object') {
|
|
159
|
-
element[clave] = this.subJsonToArray(element[clave]);
|
|
160
|
-
}
|
|
161
|
-
object.push(element[clave]);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
response.push(object);
|
|
165
|
-
});
|
|
166
|
-
return response;
|
|
167
|
-
}
|
|
168
|
-
subJsonToArray(data) {
|
|
169
|
-
var object = '';
|
|
170
|
-
for (var clave in data) {
|
|
171
|
-
if (clave != 'code') {
|
|
172
|
-
object += '\n' + data[clave];
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
return object;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
BaseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: BaseService, deps: [{ token: i1.UserService }, { token: i2.StorageService }, { token: i3.CalendarService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
179
|
-
BaseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: BaseService, providedIn: 'root' });
|
|
180
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: BaseService, decorators: [{
|
|
181
|
-
type: Injectable,
|
|
182
|
-
args: [{
|
|
183
|
-
providedIn: 'root',
|
|
184
|
-
}]
|
|
185
|
-
}], ctorParameters: function () { return [{ type: i1.UserService }, { type: i2.StorageService }, { type: i3.CalendarService }]; } });
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvcmUvdXRpbHMvYmFzZS1zZXJ2aWNlL2Jhc2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFVL0IsTUFBTSxPQUFPLFdBQVc7SUFFdEIsWUFDVSxXQUF3QixFQUN4QixjQUE4QixFQUM5QixlQUFnQztRQUZoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQ3ZDLENBQUM7SUFFSixRQUFRLENBQUMsSUFBWSxFQUFFLFFBQWdCO1FBQ3JDLElBQUksT0FBTyxHQUFZO1lBQ3JCLElBQUksRUFBRSxJQUFJO1lBQ1YsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQTtRQUNELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDL0IsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNsQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFakMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFTLE9BQU8sRUFBRSxNQUFNO1lBQ3pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUMzQyxRQUFRLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO29CQUM3QixLQUFLLENBQUM7d0JBQ0osSUFBRyxDQUFDLE9BQU8sRUFBRTs0QkFDWCxJQUFJLENBQUMsSUFBSSxDQUFFO2dDQUNULE9BQU8sRUFBRSwrQ0FBK0M7Z0NBQ3hELE1BQU0sRUFBRSx1REFBdUQ7Z0NBQy9ELE1BQU0sRUFBQyxTQUFTOzZCQUNqQixDQUFDLENBQUM7eUJBQ0o7d0JBQ0QsTUFBTSxpQkFBaUIsR0FBWTs0QkFDakMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSzs0QkFDMUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO3lCQUNwQixDQUFDO3dCQUVGLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO3dCQUM3QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ2QsTUFBTTtvQkFDUixLQUFLLENBQUM7d0JBQ0osSUFBSSxDQUFDLElBQUksQ0FBQzs0QkFDUixPQUFPLEVBQUUsK0NBQStDOzRCQUN4RCxNQUFNLEVBQUUsMkhBQTJIOzRCQUNuSSxNQUFNLEVBQUMsU0FBUzt5QkFDakIsQ0FBQyxDQUFDO3dCQUVILE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDZixNQUFNO29CQUNSLEtBQUssQ0FBQzt3QkFDSixJQUFJLENBQUMsSUFBSSxDQUFDOzRCQUNSLE9BQU8sRUFBRSw2Q0FBNkM7NEJBQ3RELE1BQU0sRUFBRSwrRkFBK0Y7NEJBQ3ZHLE1BQU0sRUFBQyxPQUFPO3lCQUNmLENBQUMsQ0FBQzt3QkFFSCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ2YsTUFBTTtvQkFDUjt3QkFDRSxJQUFJLENBQUMsSUFBSSxDQUFDOzRCQUNSLE9BQU8sRUFBRSw2Q0FBNkM7NEJBQ3RELE1BQU0sRUFBRSx1RUFBdUU7NEJBQy9FLE1BQU0sRUFBQyxPQUFPO3lCQUNmLENBQUMsQ0FBQzt3QkFFSCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ2YsTUFBTTtpQkFDVDtnQkFDRCxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELHdCQUF3QixDQUFDLFNBQWtCLEVBQUUsSUFBWSxFQUFFLFNBQWlCLEVBQUUsUUFBZ0IsRUFBRSxRQUFlLEVBQUUsU0FBaUIsRUFBRSxPQUFlO1FBQ2pKLElBQUksT0FBTyxHQUF3QjtZQUNqQyxTQUFTLEVBQUUsU0FBUztZQUNwQixJQUFJLEVBQUUsSUFBSTtZQUNWLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUM7UUFFRixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBRW5DLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBUyxPQUFPLEVBQUUsTUFBTTtZQUN6QyxPQUFPLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFHLENBQUMsUUFBa0IsRUFBRSxFQUFFO2dCQUN2RSxRQUFRLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO29CQUM3QixLQUFLLENBQUM7d0JBQ0osT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDdkIsTUFBSztvQkFDUDt3QkFDRSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztpQkFDakM7Z0JBQ0QsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxTQUFTLEdBQVcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDckQsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQztRQUN0RCxPQUFPLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDeEMsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxFQUFFLEtBQUssQ0FBQztRQUN4RCxPQUFPLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzVDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNoRCxJQUFJLFFBQVEsR0FBRyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDOUMsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELHlCQUF5QixDQUFDLG1CQUF3QztRQUNoRSxJQUFJLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQztRQUNsQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRS9CLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBUyxPQUFPLEVBQUUsTUFBTTtZQUN6QyxPQUFPLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBRXhELFFBQVEsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQzdCLEtBQUssQ0FBQzt3QkFDSixJQUFJLENBQUMsSUFBSSxDQUFFOzRCQUNULE9BQU8sRUFBRSwrQ0FBK0M7NEJBQ3hELE1BQU0sRUFBRSwwREFBMEQ7NEJBQ2xFLE1BQU0sRUFBQyxTQUFTO3lCQUNqQixDQUFDLENBQUM7d0JBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNkLE1BQU07b0JBQ1IsS0FBSyxDQUFDO3dCQUNKLElBQUksQ0FBQyxJQUFJLENBQUU7NEJBQ1QsT0FBTyxFQUFFLDZDQUE2Qzs0QkFDdEQsTUFBTSxFQUFFLCtGQUErRjs0QkFDdkcsTUFBTSxFQUFDLE9BQU87eUJBQ2YsQ0FBQyxDQUFDO3dCQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDZixNQUFNO29CQUNSLEtBQUssQ0FBQzt3QkFDSixJQUFJLENBQUMsSUFBSSxDQUFFOzRCQUNULE9BQU8sRUFBRSwwQ0FBMEM7NEJBQ25ELE1BQU0sRUFBRSx5R0FBeUc7NEJBQ2pILE1BQU0sRUFBRSxTQUFTO3lCQUNsQixDQUFDLENBQUM7d0JBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNmLE1BQU07b0JBQ1I7d0JBQ0UsSUFBSSxDQUFDLElBQUksQ0FBRTs0QkFDVCxPQUFPLEVBQUUsNkNBQTZDOzRCQUN0RCxNQUFNLEVBQUUsdUVBQXVFOzRCQUMvRSxNQUFNLEVBQUMsT0FBTzt5QkFDZixDQUFDLENBQUM7d0JBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNmLE1BQU07aUJBQ1Q7Z0JBRUQsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBVztRQUNyQixJQUFJLFFBQVEsR0FBVSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3ZCLElBQUksTUFBTSxHQUFVLEVBQUUsQ0FBQztZQUN2QixLQUFLLElBQUksS0FBSyxJQUFJLE9BQU8sRUFBRTtnQkFDekIsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNqQyxJQUFJLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFFBQVEsRUFBRTt3QkFDckMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7cUJBQ3REO29CQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7aUJBQzdCO2FBQ0Y7WUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFXO1FBQ3hCLElBQUksTUFBTSxHQUFXLEVBQUUsQ0FBQztRQUN4QixLQUFLLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUN0QixJQUFJLEtBQUssSUFBSSxNQUFNLEVBQUU7Z0JBQ25CLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzlCO1NBQ0Y7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzt3R0E5TFUsV0FBVzs0R0FBWCxXQUFXLGNBRlYsTUFBTTsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvZ2luUnEsIFJlZ2lzdGVyRGFzaGJvYXJkUnEgfSBmcm9tICcuLi8uLi9tb2RlbHMvdXNlci91c2VyLXJxLm1vZGVsJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXNlci1zZXJ2aWNlL3VzZXItc2VydmljZSc7XG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG5pbXBvcnQgeyBTZXNzaW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Nlc3Npb24vc2Vzc2lvbi5tb2RlbCc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Utc2VydmljZS9zdG9yYWdlLXNlcnZpY2UnO1xuaW1wb3J0IHsgQXZhaWxhYmlsaXR5UXVlcnlScSB9IGZyb20gJy4uLy4uL21vZGVscy9jcm9ub2dyYW0vY3Jvbm9ncmFtLm1vZGVscyc7XG5pbXBvcnQgeyBDYWxlbmRhclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYWxlbmRhci1zZXJ2aWNlL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvcmVzcG9uc2UvcmVzcG9uc2UuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEJhc2VTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGNhbGVuZGFyU2VydmljZTogQ2FsZW5kYXJTZXJ2aWNlXG4gICkge31cblxuICB3ZWJMb2dpbih1c2VyOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+e1xuICAgIGxldCByZXF1ZXN0OiBMb2dpblJxID0ge1xuICAgICAgdXNlcjogdXNlcixcbiAgICAgIHBhc3N3b3JkOiBwYXNzd29yZFxuICAgIH1cbiAgICBsZXQgc2VydmljZSA9IHRoaXMudXNlclNlcnZpY2U7XG4gICAgbGV0IHN0b3JhZ2UgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlO1xuICAgIGxldCBhcHBVc2VyID0gdGhpcy5pc0FuQXBwVXNlcigpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgc2VydmljZS5sb2dpbihyZXF1ZXN0KS5zdWJzY3JpYmUoIHJlc3BvbnNlID0+IHtcbiAgICAgICAgc3dpdGNoIChyZXNwb25zZS5tZXNzYWdlLmNvZGUpIHtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBpZighYXBwVXNlcikge1xuICAgICAgICAgICAgICBTd2FsLmZpcmUgKHtcbiAgICAgICAgICAgICAgICAndGl0bGUnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+UGVyZmVjdCE8L3A+JyxcbiAgICAgICAgICAgICAgICAnaHRtbCc6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCJcIj5TdWNjZXNmdWxsIGxvZ2luPC9wPicsXG4gICAgICAgICAgICAgICAgJ2ljb24nOidzdWNjZXNzJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsb2dpblJlZ2lzdGVyVXNlcjogU2Vzc2lvbiA9IHtcbiAgICAgICAgICAgICAgdG9rZW46IHJlc3BvbnNlLmRhdGEudG9rZW4sXG4gICAgICAgICAgICAgIHVzZXI6IHJlc3BvbnNlLmRhdGEsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzdG9yYWdlLnNldEN1cnJlbnRTZXNzaW9uKGxvZ2luUmVnaXN0ZXJVc2VyKTtcbiAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgICAndGl0bGUnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+V2FybmluZyE8L3A+JyxcbiAgICAgICAgICAgICAgJ2h0bWwnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+VGhlIGRhdGEgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHVzZXIgcmVnaXN0ZXJlZCBpbiBvdXIgc3lzdGVtLCBwbGVhc2UgcmV2aWV3IHRoZW0uPC9wPicsXG4gICAgICAgICAgICAgICdpY29uJzond2FybmluZycsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgICAndGl0bGUnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+RXJyb3IhPC9wPicsXG4gICAgICAgICAgICAgICdodG1sJzogJzxwIHN0eWxlPVwiZm9udC1mYW1pbHk6IFBvcHBpbnNcIlwiPlRoZSBpbnB1dCBkYXRhIGRvZXMgbm90IG1lZXQgdGhlIGVzdGFibGlzaGVkIHBhcmFtZXRlcnMuPC9wPicsXG4gICAgICAgICAgICAgICdpY29uJzonZXJyb3InLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICd0aXRsZSc6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCJcIj5FcnJvciE8L3A+JyxcbiAgICAgICAgICAgICAgJ2h0bWwnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+QW4gdW5leHBlY3RlZCBlcnJvciBoYXMgb2NjdXJyZWQ8L3A+JyxcbiAgICAgICAgICAgICAgJ2ljb24nOidlcnJvcicsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZWplY3QoJ1VuaGFuZGxlZCBleGNlcHRpb24nKTtcbiAgICAgIH0pO1xuICAgIH0pXG4gIH1cblxuICBnZXRDcm9ub2dyYW1BdmFpbGFiaWxpdHkoaXNUZWFjaGVyOiBib29sZWFuLCBjb2RlOiBudW1iZXIsIHN0YXJ0RGF0ZTogc3RyaW5nLCBudW1DbGFzczogbnVtYmVyLCB3ZWVrRGF5czogYW55W10sIHN0YXJ0VGltZTogc3RyaW5nLCBlbmRUaW1lOiBzdHJpbmcpOiBQcm9taXNlPGFueT57XG4gICAgbGV0IHJlcXVlc3Q6IEF2YWlsYWJpbGl0eVF1ZXJ5UnEgPSB7XG4gICAgICBpc1RlYWNoZXI6IGlzVGVhY2hlcixcbiAgICAgIGNvZGU6IGNvZGUsXG4gICAgICBzdGFydERhdGU6IHN0YXJ0RGF0ZSxcbiAgICAgIG51bUNsYXNzOiBudW1DbGFzcyxcbiAgICAgIHdlZWtEYXlzOiB3ZWVrRGF5cyxcbiAgICAgIHN0YXJ0VGltZTogc3RhcnRUaW1lLFxuICAgICAgZW5kVGltZTogZW5kVGltZSxcbiAgICB9O1xuXG4gICAgbGV0IHNlcnZpY2UgPSB0aGlzLmNhbGVuZGFyU2VydmljZTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHNlcnZpY2UucG9zdENyZWF0ZVF1ZXJ5RXZlbnQocmVxdWVzdCkuc3Vic2NyaWJlKCAgKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHJlc3BvbnNlLm1lc3NhZ2UuY29kZSkge1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZWplY3QoJ1VuaGFuZGxlZCBleGNlcHRpb24nKTtcbiAgICAgICAgfVxuICAgICAgICByZWplY3QoJ1VuaGFuZGxlZCBleGNlcHRpb24nKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgaXNBbkFwcFVzZXIoKSB7XG4gICAgY29uc3QgdXNlckFnZW50OiBzdHJpbmcgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICByZXR1cm4gdXNlckFnZW50LmluY2x1ZGVzKCdGbHV0dGVyIElQVCBBUFAnKTtcbiAgfVxuXG4gIGdldFVzZXJSb2xlKCk6IG51bWJlciB7XG4gICAgbGV0IHVzZXIgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCk/LnJvbGU7XG4gICAgcmV0dXJuIHVzZXIgPT09IHVuZGVmaW5lZCA/IC0xIDogdXNlcjtcbiAgfVxuXG4gIGdldFVzZXJUb2tlbigpOiBzdHJpbmcge1xuICAgIGxldCB0b2tlbiA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKT8udG9rZW47XG4gICAgcmV0dXJuIHRva2VuID09PSB1bmRlZmluZWQgPyAnLTEnIDogdG9rZW47XG4gIH1cblxuICBnZXRVc2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIGxldCB1c2VyID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRDdXJyZW50VXNlcigpO1xuICAgIGxldCByZXNwb25zZSA9IHVzZXIgPT09IG51bGwgPyAnJyA6IHVzZXIubmFtZTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICByZWdpc3RlclVzZXJGcm9tRGFzaGJvYXJkKHJlZ2lzdGVyRGFzaGJvYXJkUnE6IFJlZ2lzdGVyRGFzaGJvYXJkUnEpOiBQcm9taXNlPGJvb2xlYW4+e1xuICAgIGxldCByZXF1ZXN0ID0gcmVnaXN0ZXJEYXNoYm9hcmRScTtcbiAgICBsZXQgc2VydmljZSA9IHRoaXMudXNlclNlcnZpY2U7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBzZXJ2aWNlLnJlZ2lzdGVyRGFzaGJvYXJkKHJlcXVlc3QpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcblxuICAgICAgICBzd2l0Y2ggKHJlc3BvbnNlLm1lc3NhZ2UuY29kZSkge1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIFN3YWwuZmlyZSAoe1xuICAgICAgICAgICAgICAndGl0bGUnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+UGVyZmVjdCE8L3A+JyxcbiAgICAgICAgICAgICAgJ2h0bWwnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+U3VjZXNmdWxsIHJlZ2lzdGVyITwvcD4nLFxuICAgICAgICAgICAgICAnaWNvbic6J3N1Y2Nlc3MnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgU3dhbC5maXJlICh7XG4gICAgICAgICAgICAgICd0aXRsZSc6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCJcIj5FcnJvciE8L3A+JyxcbiAgICAgICAgICAgICAgJ2h0bWwnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+VGhlIGlucHV0IGRhdGEgZG9lcyBub3QgbWVldCB0aGUgZXN0YWJsaXNoZWQgcGFyYW1ldGVycy48L3A+JyxcbiAgICAgICAgICAgICAgJ2ljb24nOidlcnJvcicsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgU3dhbC5maXJlICh7XG4gICAgICAgICAgICAgICd0aXRsZSc6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCI+VXBzITwvcD4nLFxuICAgICAgICAgICAgICAnaHRtbCc6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCI+VGhlIGlucHV0IGRhdGEgaGFzIGEgaGlnaCByZWxhdGlvbiB3aXRoIGEgdXNlciB0aGF0IGFscmVhZHkgZXhpc3RzITwvcD4nLFxuICAgICAgICAgICAgICAnaWNvbic6ICd3YXJuaW5nJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgU3dhbC5maXJlICh7XG4gICAgICAgICAgICAgICd0aXRsZSc6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCJcIj5FcnJvciE8L3A+JyxcbiAgICAgICAgICAgICAgJ2h0bWwnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+QW4gdW5leHBlY3RlZCBlcnJvciBoYXMgb2NjdXJyZWQ8L3A+JyxcbiAgICAgICAgICAgICAgJ2ljb24nOidlcnJvcicsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZWplY3QoJ1VuaGFuZGxlZCBleGNlcHRpb24nKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAganNvblRvQXJyYXkoZGF0YTogYW55W10pOiBhbnlbXVtdIHtcbiAgICB2YXIgcmVzcG9uc2U6IGFueVtdID0gW107XG4gICAgZGF0YS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICB2YXIgb2JqZWN0OiBhbnlbXSA9IFtdO1xuICAgICAgZm9yICh2YXIgY2xhdmUgaW4gZWxlbWVudCkge1xuICAgICAgICBpZiAoZWxlbWVudC5oYXNPd25Qcm9wZXJ0eShjbGF2ZSkpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnRbY2xhdmVdID09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBlbGVtZW50W2NsYXZlXSA9IHRoaXMuc3ViSnNvblRvQXJyYXkoZWxlbWVudFtjbGF2ZV0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG9iamVjdC5wdXNoKGVsZW1lbnRbY2xhdmVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzcG9uc2UucHVzaChvYmplY3QpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIHN1Ykpzb25Ub0FycmF5KGRhdGE6IGFueVtdKTogc3RyaW5nIHtcbiAgICB2YXIgb2JqZWN0OiBzdHJpbmcgPSAnJztcbiAgICBmb3IgKHZhciBjbGF2ZSBpbiBkYXRhKSB7XG4gICAgICBpZiAoY2xhdmUgIT0gJ2NvZGUnKSB7XG4gICAgICAgIG9iamVjdCArPSAnXFxuJyArIGRhdGFbY2xhdmVdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG5cbn1cbiJdfQ==
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import Swal from 'sweetalert2';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../services/user-service/user-service";
|
|
5
|
+
import * as i2 from "../../services/storage-service/storage-service";
|
|
6
|
+
import * as i3 from "../../services/calendar-service/calendar.service";
|
|
7
|
+
export class BaseService {
|
|
8
|
+
constructor(userService, storageService, calendarService) {
|
|
9
|
+
this.userService = userService;
|
|
10
|
+
this.storageService = storageService;
|
|
11
|
+
this.calendarService = calendarService;
|
|
12
|
+
}
|
|
13
|
+
webLogin(user, password) {
|
|
14
|
+
let request = {
|
|
15
|
+
user: user,
|
|
16
|
+
password: password
|
|
17
|
+
};
|
|
18
|
+
let service = this.userService;
|
|
19
|
+
let storage = this.storageService;
|
|
20
|
+
let appUser = this.isAnAppUser();
|
|
21
|
+
return new Promise(function (resolve, reject) {
|
|
22
|
+
service.login(request).subscribe(response => {
|
|
23
|
+
switch (response.message.code) {
|
|
24
|
+
case 1:
|
|
25
|
+
if (!appUser) {
|
|
26
|
+
Swal.fire({
|
|
27
|
+
'title': '<p style="font-family: Poppins"">Perfect!</p>',
|
|
28
|
+
'html': '<p style="font-family: Poppins"">Succesfull login</p>',
|
|
29
|
+
'icon': 'success',
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
const loginRegisterUser = {
|
|
33
|
+
token: response.data.token,
|
|
34
|
+
user: response.data,
|
|
35
|
+
};
|
|
36
|
+
storage.setCurrentSession(loginRegisterUser);
|
|
37
|
+
resolve(true);
|
|
38
|
+
break;
|
|
39
|
+
case 2:
|
|
40
|
+
Swal.fire({
|
|
41
|
+
'title': '<p style="font-family: Poppins"">Warning!</p>',
|
|
42
|
+
'html': '<p style="font-family: Poppins"">The data does not correspond to a user registered in our system, please review them.</p>',
|
|
43
|
+
'icon': 'warning',
|
|
44
|
+
});
|
|
45
|
+
resolve(false);
|
|
46
|
+
break;
|
|
47
|
+
case 3:
|
|
48
|
+
Swal.fire({
|
|
49
|
+
'title': '<p style="font-family: Poppins"">Error!</p>',
|
|
50
|
+
'html': '<p style="font-family: Poppins"">The input data does not meet the established parameters.</p>',
|
|
51
|
+
'icon': 'error',
|
|
52
|
+
});
|
|
53
|
+
resolve(false);
|
|
54
|
+
break;
|
|
55
|
+
default:
|
|
56
|
+
Swal.fire({
|
|
57
|
+
'title': '<p style="font-family: Poppins"">Error!</p>',
|
|
58
|
+
'html': '<p style="font-family: Poppins"">An unexpected error has occurred</p>',
|
|
59
|
+
'icon': 'error',
|
|
60
|
+
});
|
|
61
|
+
resolve(false);
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
reject('Unhandled exception');
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
getCronogramAvailability(isTeacher, code, startDate, numClass, weekDays, startTime, endTime) {
|
|
69
|
+
let request = {
|
|
70
|
+
isTeacher: isTeacher,
|
|
71
|
+
code: code,
|
|
72
|
+
startDate: startDate,
|
|
73
|
+
numClass: numClass,
|
|
74
|
+
weekDays: weekDays,
|
|
75
|
+
startTime: startTime,
|
|
76
|
+
endTime: endTime,
|
|
77
|
+
};
|
|
78
|
+
let service = this.calendarService;
|
|
79
|
+
return new Promise(function (resolve, reject) {
|
|
80
|
+
service.postCreateQueryEvent(request).subscribe((response) => {
|
|
81
|
+
switch (response.message.code) {
|
|
82
|
+
case 1:
|
|
83
|
+
resolve(response.data);
|
|
84
|
+
break;
|
|
85
|
+
default:
|
|
86
|
+
reject('Unhandled exception');
|
|
87
|
+
}
|
|
88
|
+
reject('Unhandled exception');
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
isAnAppUser() {
|
|
93
|
+
const userAgent = window.navigator.userAgent;
|
|
94
|
+
return userAgent.includes('Flutter IPT APP');
|
|
95
|
+
}
|
|
96
|
+
getUserRole() {
|
|
97
|
+
let user = this.storageService.getCurrentUser()?.role;
|
|
98
|
+
return user === undefined ? -1 : user;
|
|
99
|
+
}
|
|
100
|
+
getUserToken() {
|
|
101
|
+
let token = this.storageService.getCurrentUser()?.token;
|
|
102
|
+
return token === undefined ? '-1' : token;
|
|
103
|
+
}
|
|
104
|
+
getUserName() {
|
|
105
|
+
let user = this.storageService.getCurrentUser();
|
|
106
|
+
let response = user === null ? '' : user.name;
|
|
107
|
+
return response;
|
|
108
|
+
}
|
|
109
|
+
registerUserFromDashboard(registerDashboardRq) {
|
|
110
|
+
let request = registerDashboardRq;
|
|
111
|
+
let service = this.userService;
|
|
112
|
+
return new Promise(function (resolve, reject) {
|
|
113
|
+
service.registerDashboard(request).subscribe((response) => {
|
|
114
|
+
switch (response.message.code) {
|
|
115
|
+
case 1:
|
|
116
|
+
Swal.fire({
|
|
117
|
+
'title': '<p style="font-family: Poppins"">Perfect!</p>',
|
|
118
|
+
'html': '<p style="font-family: Poppins"">Sucesfull register!</p>',
|
|
119
|
+
'icon': 'success',
|
|
120
|
+
});
|
|
121
|
+
resolve(true);
|
|
122
|
+
break;
|
|
123
|
+
case 3:
|
|
124
|
+
Swal.fire({
|
|
125
|
+
'title': '<p style="font-family: Poppins"">Error!</p>',
|
|
126
|
+
'html': '<p style="font-family: Poppins"">The input data does not meet the established parameters.</p>',
|
|
127
|
+
'icon': 'error',
|
|
128
|
+
});
|
|
129
|
+
resolve(false);
|
|
130
|
+
break;
|
|
131
|
+
case 4:
|
|
132
|
+
Swal.fire({
|
|
133
|
+
'title': '<p style="font-family: Poppins">Ups!</p>',
|
|
134
|
+
'html': '<p style="font-family: Poppins">The input data has a high relation with a user that already exists!</p>',
|
|
135
|
+
'icon': 'warning',
|
|
136
|
+
});
|
|
137
|
+
resolve(false);
|
|
138
|
+
break;
|
|
139
|
+
default:
|
|
140
|
+
Swal.fire({
|
|
141
|
+
'title': '<p style="font-family: Poppins"">Error!</p>',
|
|
142
|
+
'html': '<p style="font-family: Poppins"">An unexpected error has occurred</p>',
|
|
143
|
+
'icon': 'error',
|
|
144
|
+
});
|
|
145
|
+
resolve(false);
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
reject('Unhandled exception');
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
jsonToArray(data) {
|
|
153
|
+
var response = [];
|
|
154
|
+
data.forEach((element) => {
|
|
155
|
+
var object = [];
|
|
156
|
+
for (var clave in element) {
|
|
157
|
+
if (element.hasOwnProperty(clave)) {
|
|
158
|
+
if (typeof element[clave] == 'object') {
|
|
159
|
+
element[clave] = this.subJsonToArray(element[clave]);
|
|
160
|
+
}
|
|
161
|
+
object.push(element[clave]);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
response.push(object);
|
|
165
|
+
});
|
|
166
|
+
return response;
|
|
167
|
+
}
|
|
168
|
+
subJsonToArray(data) {
|
|
169
|
+
var object = '';
|
|
170
|
+
for (var clave in data) {
|
|
171
|
+
if (clave != 'code') {
|
|
172
|
+
object += '\n' + data[clave];
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return object;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
BaseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: BaseService, deps: [{ token: i1.UserService }, { token: i2.StorageService }, { token: i3.CalendarService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
179
|
+
BaseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: BaseService, providedIn: 'root' });
|
|
180
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: BaseService, decorators: [{
|
|
181
|
+
type: Injectable,
|
|
182
|
+
args: [{
|
|
183
|
+
providedIn: 'root',
|
|
184
|
+
}]
|
|
185
|
+
}], ctorParameters: function () { return [{ type: i1.UserService }, { type: i2.StorageService }, { type: i3.CalendarService }]; } });
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvcmUvdXRpbHMvYmFzZS1zZXJ2aWNlL2Jhc2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFVL0IsTUFBTSxPQUFPLFdBQVc7SUFFdEIsWUFDVSxXQUF3QixFQUN4QixjQUE4QixFQUM5QixlQUFnQztRQUZoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQ3ZDLENBQUM7SUFFSixRQUFRLENBQUMsSUFBWSxFQUFFLFFBQWdCO1FBQ3JDLElBQUksT0FBTyxHQUFZO1lBQ3JCLElBQUksRUFBRSxJQUFJO1lBQ1YsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQTtRQUNELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDL0IsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNsQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFakMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFTLE9BQU8sRUFBRSxNQUFNO1lBQ3pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUMzQyxRQUFRLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO29CQUM3QixLQUFLLENBQUM7d0JBQ0osSUFBRyxDQUFDLE9BQU8sRUFBRTs0QkFDWCxJQUFJLENBQUMsSUFBSSxDQUFFO2dDQUNULE9BQU8sRUFBRSwrQ0FBK0M7Z0NBQ3hELE1BQU0sRUFBRSx1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QyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFXO1FBQ3hCLElBQUksTUFBTSxHQUFXLEVBQUUsQ0FBQztRQUN4QixLQUFLLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUN0QixJQUFJLEtBQUssSUFBSSxNQUFNLEVBQUU7Z0JBQ25CLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzlCO1NBQ0Y7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzt3R0E5TFUsV0FBVzs0R0FBWCxXQUFXLGNBRlYsTUFBTTsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTG9naW5ScSwgUmVnaXN0ZXJEYXNoYm9hcmRScSB9IGZyb20gJy4uLy4uL21vZGVscy91c2VyL3VzZXItcnEubW9kZWwnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VzZXItc2VydmljZS91c2VyLXNlcnZpY2UnO1xyXG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XHJcbmltcG9ydCB7IFNlc3Npb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvc2Vzc2lvbi9zZXNzaW9uLm1vZGVsJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLXNlcnZpY2Uvc3RvcmFnZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXZhaWxhYmlsaXR5UXVlcnlScSB9IGZyb20gJy4uLy4uL21vZGVscy9jcm9ub2dyYW0vY3Jvbm9ncmFtLm1vZGVscyc7XHJcbmltcG9ydCB7IENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NhbGVuZGFyLXNlcnZpY2UvY2FsZW5kYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Jlc3BvbnNlL3Jlc3BvbnNlLmludGVyZmFjZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZVNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNhbGVuZGFyU2VydmljZTogQ2FsZW5kYXJTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICB3ZWJMb2dpbih1c2VyOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+e1xyXG4gICAgbGV0IHJlcXVlc3Q6IExvZ2luUnEgPSB7XHJcbiAgICAgIHVzZXI6IHVzZXIsXHJcbiAgICAgIHBhc3N3b3JkOiBwYXNzd29yZFxyXG4gICAgfVxyXG4gICAgbGV0IHNlcnZpY2UgPSB0aGlzLnVzZXJTZXJ2aWNlO1xyXG4gICAgbGV0IHN0b3JhZ2UgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlO1xyXG4gICAgbGV0IGFwcFVzZXIgPSB0aGlzLmlzQW5BcHBVc2VyKCk7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICBzZXJ2aWNlLmxvZ2luKHJlcXVlc3QpLnN1YnNjcmliZSggcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAocmVzcG9uc2UubWVzc2FnZS5jb2RlKSB7XHJcbiAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgIGlmKCFhcHBVc2VyKSB7XHJcbiAgICAgICAgICAgICAgU3dhbC5maXJlICh7XHJcbiAgICAgICAgICAgICAgICAndGl0bGUnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+UGVyZmVjdCE8L3A+JyxcclxuICAgICAgICAgICAgICAgICdodG1sJzogJzxwIHN0eWxlPVwiZm9udC1mYW1pbHk6IFBvcHBpbnNcIlwiPlN1Y2Nlc2Z1bGwgbG9naW48L3A+JyxcclxuICAgICAgICAgICAgICAgICdpY29uJzonc3VjY2VzcycsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbG9naW5SZWdpc3RlclVzZXI6IFNlc3Npb24gPSB7XHJcbiAgICAgICAgICAgICAgdG9rZW46IHJlc3BvbnNlLmRhdGEudG9rZW4sXHJcbiAgICAgICAgICAgICAgdXNlcjogcmVzcG9uc2UuZGF0YSxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHN0b3JhZ2Uuc2V0Q3VycmVudFNlc3Npb24obG9naW5SZWdpc3RlclVzZXIpO1xyXG4gICAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgICAgICAndGl0bGUnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+V2FybmluZyE8L3A+JyxcclxuICAgICAgICAgICAgICAnaHRtbCc6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCJcIj5UaGUgZGF0YSBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgdXNlciByZWdpc3RlcmVkIGluIG91ciBzeXN0ZW0sIHBsZWFzZSByZXZpZXcgdGhlbS48L3A+JyxcclxuICAgICAgICAgICAgICAnaWNvbic6J3dhcm5pbmcnLFxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgICAgICAndGl0bGUnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+RXJyb3IhPC9wPicsXHJcbiAgICAgICAgICAgICAgJ2h0bWwnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+VGhlIGlucHV0IGRhdGEgZG9lcyBub3QgbWVldCB0aGUgZXN0YWJsaXNoZWQgcGFyYW1ldGVycy48L3A+JyxcclxuICAgICAgICAgICAgICAnaWNvbic6J2Vycm9yJyxcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBTd2FsLmZpcmUoe1xyXG4gICAgICAgICAgICAgICd0aXRsZSc6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCJcIj5FcnJvciE8L3A+JyxcclxuICAgICAgICAgICAgICAnaHRtbCc6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCJcIj5BbiB1bmV4cGVjdGVkIGVycm9yIGhhcyBvY2N1cnJlZDwvcD4nLFxyXG4gICAgICAgICAgICAgICdpY29uJzonZXJyb3InLFxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVqZWN0KCdVbmhhbmRsZWQgZXhjZXB0aW9uJyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldENyb25vZ3JhbUF2YWlsYWJpbGl0eShpc1RlYWNoZXI6IGJvb2xlYW4sIGNvZGU6IG51bWJlciwgc3RhcnREYXRlOiBzdHJpbmcsIG51bUNsYXNzOiBudW1iZXIsIHdlZWtEYXlzOiBhbnlbXSwgc3RhcnRUaW1lOiBzdHJpbmcsIGVuZFRpbWU6IHN0cmluZyk6IFByb21pc2U8YW55PntcclxuICAgIGxldCByZXF1ZXN0OiBBdmFpbGFiaWxpdHlRdWVyeVJxID0ge1xyXG4gICAgICBpc1RlYWNoZXI6IGlzVGVhY2hlcixcclxuICAgICAgY29kZTogY29kZSxcclxuICAgICAgc3RhcnREYXRlOiBzdGFydERhdGUsXHJcbiAgICAgIG51bUNsYXNzOiBudW1DbGFzcyxcclxuICAgICAgd2Vla0RheXM6IHdlZWtEYXlzLFxyXG4gICAgICBzdGFydFRpbWU6IHN0YXJ0VGltZSxcclxuICAgICAgZW5kVGltZTogZW5kVGltZSxcclxuICAgIH07XHJcblxyXG4gICAgbGV0IHNlcnZpY2UgPSB0aGlzLmNhbGVuZGFyU2VydmljZTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgIHNlcnZpY2UucG9zdENyZWF0ZVF1ZXJ5RXZlbnQocmVxdWVzdCkuc3Vic2NyaWJlKCAgKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAocmVzcG9uc2UubWVzc2FnZS5jb2RlKSB7XHJcbiAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZWplY3QoJ1VuaGFuZGxlZCBleGNlcHRpb24nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVqZWN0KCdVbmhhbmRsZWQgZXhjZXB0aW9uJyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpc0FuQXBwVXNlcigpIHtcclxuICAgIGNvbnN0IHVzZXJBZ2VudDogc3RyaW5nID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7XHJcbiAgICByZXR1cm4gdXNlckFnZW50LmluY2x1ZGVzKCdGbHV0dGVyIElQVCBBUFAnKTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJSb2xlKCk6IG51bWJlciB7XHJcbiAgICBsZXQgdXNlciA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKT8ucm9sZTtcclxuICAgIHJldHVybiB1c2VyID09PSB1bmRlZmluZWQgPyAtMSA6IHVzZXI7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyVG9rZW4oKTogc3RyaW5nIHtcclxuICAgIGxldCB0b2tlbiA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKT8udG9rZW47XHJcbiAgICByZXR1cm4gdG9rZW4gPT09IHVuZGVmaW5lZCA/ICctMScgOiB0b2tlbjtcclxuICB9XHJcblxyXG4gIGdldFVzZXJOYW1lKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgdXNlciA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKTtcclxuICAgIGxldCByZXNwb25zZSA9IHVzZXIgPT09IG51bGwgPyAnJyA6IHVzZXIubmFtZTtcclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyVXNlckZyb21EYXNoYm9hcmQocmVnaXN0ZXJEYXNoYm9hcmRScTogUmVnaXN0ZXJEYXNoYm9hcmRScSk6IFByb21pc2U8Ym9vbGVhbj57XHJcbiAgICBsZXQgcmVxdWVzdCA9IHJlZ2lzdGVyRGFzaGJvYXJkUnE7XHJcbiAgICBsZXQgc2VydmljZSA9IHRoaXMudXNlclNlcnZpY2U7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICBzZXJ2aWNlLnJlZ2lzdGVyRGFzaGJvYXJkKHJlcXVlc3QpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuXHJcbiAgICAgICAgc3dpdGNoIChyZXNwb25zZS5tZXNzYWdlLmNvZGUpIHtcclxuICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgU3dhbC5maXJlICh7XHJcbiAgICAgICAgICAgICAgJ3RpdGxlJzogJzxwIHN0eWxlPVwiZm9udC1mYW1pbHk6IFBvcHBpbnNcIlwiPlBlcmZlY3QhPC9wPicsXHJcbiAgICAgICAgICAgICAgJ2h0bWwnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+U3VjZXNmdWxsIHJlZ2lzdGVyITwvcD4nLFxyXG4gICAgICAgICAgICAgICdpY29uJzonc3VjY2VzcycsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgICAgU3dhbC5maXJlICh7XHJcbiAgICAgICAgICAgICAgJ3RpdGxlJzogJzxwIHN0eWxlPVwiZm9udC1mYW1pbHk6IFBvcHBpbnNcIlwiPkVycm9yITwvcD4nLFxyXG4gICAgICAgICAgICAgICdodG1sJzogJzxwIHN0eWxlPVwiZm9udC1mYW1pbHk6IFBvcHBpbnNcIlwiPlRoZSBpbnB1dCBkYXRhIGRvZXMgbm90IG1lZXQgdGhlIGVzdGFibGlzaGVkIHBhcmFtZXRlcnMuPC9wPicsXHJcbiAgICAgICAgICAgICAgJ2ljb24nOidlcnJvcicsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIDQ6XHJcbiAgICAgICAgICAgIFN3YWwuZmlyZSAoe1xyXG4gICAgICAgICAgICAgICd0aXRsZSc6ICc8cCBzdHlsZT1cImZvbnQtZmFtaWx5OiBQb3BwaW5zXCI+VXBzITwvcD4nLFxyXG4gICAgICAgICAgICAgICdodG1sJzogJzxwIHN0eWxlPVwiZm9udC1mYW1pbHk6IFBvcHBpbnNcIj5UaGUgaW5wdXQgZGF0YSBoYXMgYSBoaWdoIHJlbGF0aW9uIHdpdGggYSB1c2VyIHRoYXQgYWxyZWFkeSBleGlzdHMhPC9wPicsXHJcbiAgICAgICAgICAgICAgJ2ljb24nOiAnd2FybmluZycsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBTd2FsLmZpcmUgKHtcclxuICAgICAgICAgICAgICAndGl0bGUnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+RXJyb3IhPC9wPicsXHJcbiAgICAgICAgICAgICAgJ2h0bWwnOiAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+QW4gdW5leHBlY3RlZCBlcnJvciBoYXMgb2NjdXJyZWQ8L3A+JyxcclxuICAgICAgICAgICAgICAnaWNvbic6J2Vycm9yJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlamVjdCgnVW5oYW5kbGVkIGV4Y2VwdGlvbicpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAganNvblRvQXJyYXkoZGF0YTogYW55W10pOiBhbnlbXVtdIHtcclxuICAgIHZhciByZXNwb25zZTogYW55W10gPSBbXTtcclxuICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICB2YXIgb2JqZWN0OiBhbnlbXSA9IFtdO1xyXG4gICAgICBmb3IgKHZhciBjbGF2ZSBpbiBlbGVtZW50KSB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuaGFzT3duUHJvcGVydHkoY2xhdmUpKSB7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnRbY2xhdmVdID09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnRbY2xhdmVdID0gdGhpcy5zdWJKc29uVG9BcnJheShlbGVtZW50W2NsYXZlXSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgb2JqZWN0LnB1c2goZWxlbWVudFtjbGF2ZV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXNwb25zZS5wdXNoKG9iamVjdCk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHN1Ykpzb25Ub0FycmF5KGRhdGE6IGFueVtdKTogc3RyaW5nIHtcclxuICAgIHZhciBvYmplY3Q6IHN0cmluZyA9ICcnO1xyXG4gICAgZm9yICh2YXIgY2xhdmUgaW4gZGF0YSkge1xyXG4gICAgICBpZiAoY2xhdmUgIT0gJ2NvZGUnKSB7XHJcbiAgICAgICAgb2JqZWN0ICs9ICdcXG4nICsgZGF0YVtjbGF2ZV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBvYmplY3Q7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/router";
|
|
4
|
-
export class RedirectGuard {
|
|
5
|
-
constructor(router) {
|
|
6
|
-
this.router = router;
|
|
7
|
-
}
|
|
8
|
-
canActivate(route, state) {
|
|
9
|
-
window.location.href = route.data['externalUrl'];
|
|
10
|
-
return true;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
RedirectGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: RedirectGuard, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
14
|
-
RedirectGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: RedirectGuard });
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: RedirectGuard, decorators: [{
|
|
16
|
-
type: Injectable
|
|
17
|
-
}], ctorParameters: function () { return [{ type: i1.Router }]; } });
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/router";
|
|
4
|
+
export class RedirectGuard {
|
|
5
|
+
constructor(router) {
|
|
6
|
+
this.router = router;
|
|
7
|
+
}
|
|
8
|
+
canActivate(route, state) {
|
|
9
|
+
window.location.href = route.data['externalUrl'];
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
RedirectGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: RedirectGuard, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
14
|
+
RedirectGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: RedirectGuard });
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: RedirectGuard, decorators: [{
|
|
16
|
+
type: Injectable
|
|
17
|
+
}], ctorParameters: function () { return [{ type: i1.Router }]; } });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb3JlL3V0aWxzL3JvdXRlLXNlcnZpY2Uvcm91dGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFHM0MsTUFBTSxPQUFPLGFBQWE7SUFDeEIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7SUFBRyxDQUFDO0lBRXRDLFdBQVcsQ0FBRSxLQUE2QixFQUFFLEtBQTBCO1FBQ3BFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzswR0FOVSxhQUFhOzhHQUFiLGFBQWE7MkZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FuQWN0aXZhdGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlciwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFJlZGlyZWN0R3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cclxuXHJcbiAgY2FuQWN0aXZhdGUoIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCApOiBib29sZWFuIHtcclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gcm91dGUuZGF0YVsnZXh0ZXJuYWxVcmwnXTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CurrencyMaskModule } from 'ng2-currency-mask';
|
|
3
|
-
import { ComponentsModule } from './components/components.module';
|
|
4
|
-
import { CoreModule } from './core/core.module';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class DesignSystemModule {
|
|
7
|
-
}
|
|
8
|
-
DesignSystemModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: DesignSystemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
-
DesignSystemModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: DesignSystemModule, imports: [ComponentsModule,
|
|
10
|
-
CoreModule,
|
|
11
|
-
CurrencyMaskModule], exports: [ComponentsModule,
|
|
12
|
-
CoreModule,
|
|
13
|
-
CurrencyMaskModule] });
|
|
14
|
-
DesignSystemModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: DesignSystemModule, imports: [[
|
|
15
|
-
ComponentsModule,
|
|
16
|
-
CoreModule,
|
|
17
|
-
CurrencyMaskModule
|
|
18
|
-
], ComponentsModule,
|
|
19
|
-
CoreModule,
|
|
20
|
-
CurrencyMaskModule] });
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: DesignSystemModule, decorators: [{
|
|
22
|
-
type: NgModule,
|
|
23
|
-
args: [{
|
|
24
|
-
imports: [
|
|
25
|
-
ComponentsModule,
|
|
26
|
-
CoreModule,
|
|
27
|
-
CurrencyMaskModule
|
|
28
|
-
],
|
|
29
|
-
exports: [
|
|
30
|
-
ComponentsModule,
|
|
31
|
-
CoreModule,
|
|
32
|
-
CurrencyMaskModule
|
|
33
|
-
],
|
|
34
|
-
}]
|
|
35
|
-
}] });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CurrencyMaskModule } from 'ng2-currency-mask';
|
|
3
|
+
import { ComponentsModule } from './components/components.module';
|
|
4
|
+
import { CoreModule } from './core/core.module';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class DesignSystemModule {
|
|
7
|
+
}
|
|
8
|
+
DesignSystemModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: DesignSystemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
DesignSystemModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: DesignSystemModule, imports: [ComponentsModule,
|
|
10
|
+
CoreModule,
|
|
11
|
+
CurrencyMaskModule], exports: [ComponentsModule,
|
|
12
|
+
CoreModule,
|
|
13
|
+
CurrencyMaskModule] });
|
|
14
|
+
DesignSystemModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: DesignSystemModule, imports: [[
|
|
15
|
+
ComponentsModule,
|
|
16
|
+
CoreModule,
|
|
17
|
+
CurrencyMaskModule
|
|
18
|
+
], ComponentsModule,
|
|
19
|
+
CoreModule,
|
|
20
|
+
CurrencyMaskModule] });
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: DesignSystemModule, decorators: [{
|
|
22
|
+
type: NgModule,
|
|
23
|
+
args: [{
|
|
24
|
+
imports: [
|
|
25
|
+
ComponentsModule,
|
|
26
|
+
CoreModule,
|
|
27
|
+
CurrencyMaskModule
|
|
28
|
+
],
|
|
29
|
+
exports: [
|
|
30
|
+
ComponentsModule,
|
|
31
|
+
CoreModule,
|
|
32
|
+
CurrencyMaskModule
|
|
33
|
+
],
|
|
34
|
+
}]
|
|
35
|
+
}] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduLXN5c3RlbS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvZGVzaWduLXN5c3RlbS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBZWhELE1BQU0sT0FBTyxrQkFBa0I7OytHQUFsQixrQkFBa0I7Z0hBQWxCLGtCQUFrQixZQVgzQixnQkFBZ0I7UUFDaEIsVUFBVTtRQUNWLGtCQUFrQixhQUdsQixnQkFBZ0I7UUFDaEIsVUFBVTtRQUNWLGtCQUFrQjtnSEFJVCxrQkFBa0IsWUFacEI7WUFDUCxnQkFBZ0I7WUFDaEIsVUFBVTtZQUNWLGtCQUFrQjtTQUNuQixFQUVDLGdCQUFnQjtRQUNoQixVQUFVO1FBQ1Ysa0JBQWtCOzJGQUlULGtCQUFrQjtrQkFiOUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsZ0JBQWdCO3dCQUNoQixVQUFVO3dCQUNWLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGdCQUFnQjt3QkFDaEIsVUFBVTt3QkFDVixrQkFBa0I7cUJBQ25CO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ3VycmVuY3lNYXNrTW9kdWxlIH0gZnJvbSAnbmcyLWN1cnJlbmN5LW1hc2snO1xyXG5cclxuaW1wb3J0IHsgQ29tcG9uZW50c01vZHVsZSB9IGZyb20gJy4vY29tcG9uZW50cy9jb21wb25lbnRzLm1vZHVsZSc7XHJcbmltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICcuL2NvcmUvY29yZS5tb2R1bGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21wb25lbnRzTW9kdWxlLFxyXG4gICAgQ29yZU1vZHVsZSxcclxuICAgIEN1cnJlbmN5TWFza01vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQ29tcG9uZW50c01vZHVsZSxcclxuICAgIENvcmVNb2R1bGUsXHJcbiAgICBDdXJyZW5jeU1hc2tNb2R1bGVcclxuICBdLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIERlc2lnblN5c3RlbU1vZHVsZSB7IH1cclxuIl19
|