tin-spa 2.2.3 → 2.3.1

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.
Files changed (108) hide show
  1. package/esm2020/lib/components/accounts/accountDialog.component.mjs +2 -2
  2. package/esm2020/lib/components/accounts/accounts.component.mjs +2 -2
  3. package/esm2020/lib/components/attach/attach.component.mjs +1 -20
  4. package/esm2020/lib/components/change-password/change-password.component.mjs +2 -2
  5. package/esm2020/lib/components/create-account/create-account.component.mjs +2 -2
  6. package/esm2020/lib/components/customers/customers.component.mjs +2 -2
  7. package/esm2020/lib/components/date/date.component.mjs +23 -16
  8. package/esm2020/lib/components/departments/departments.component.mjs +6 -26
  9. package/esm2020/lib/components/employees/employees.component.mjs +10 -53
  10. package/esm2020/lib/components/form/form.component.mjs +2 -2
  11. package/esm2020/lib/components/inventory/inventory.component.mjs +2 -2
  12. package/esm2020/lib/components/inventory/quantityDialog.component.mjs +2 -2
  13. package/esm2020/lib/components/invitations-table/invitations-table.component.mjs +2 -2
  14. package/esm2020/lib/components/list-dialog/list-dialog.component.mjs +2 -2
  15. package/esm2020/lib/components/login/login.component.mjs +2 -2
  16. package/esm2020/lib/components/logs/logs.component.mjs +2 -2
  17. package/esm2020/lib/components/membership/membership.component.mjs +2 -2
  18. package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +2 -2
  19. package/esm2020/lib/components/plans/plans.component.mjs +2 -2
  20. package/esm2020/lib/components/positions/positions.component.mjs +13 -6
  21. package/esm2020/lib/components/profile/profile.component.mjs +2 -2
  22. package/esm2020/lib/components/recover-account/recover-account.component.mjs +2 -2
  23. package/esm2020/lib/components/roles/addRoleDialog.component.mjs +2 -2
  24. package/esm2020/lib/components/roles/roles.component.mjs +2 -2
  25. package/esm2020/lib/components/settings/settings.component.mjs +2 -2
  26. package/esm2020/lib/components/signup/signup.component.mjs +2 -2
  27. package/esm2020/lib/components/suppliers/suppliers.component.mjs +2 -2
  28. package/esm2020/lib/components/table/detailsDialog.component.mjs +72 -142
  29. package/esm2020/lib/components/table/table.component.mjs +151 -333
  30. package/esm2020/lib/components/table-action/table-action.component.mjs +46 -0
  31. package/esm2020/lib/components/table-header/table-header.component.mjs +52 -0
  32. package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +78 -139
  33. package/esm2020/lib/components/table-internal/table-internal.component.mjs +153 -334
  34. package/esm2020/lib/components/table-row/table-row.component.mjs +58 -0
  35. package/esm2020/lib/components/tasks/tasks.component.mjs +2 -2
  36. package/esm2020/lib/components/tenant-settings/inviteDialog.component.mjs +2 -2
  37. package/esm2020/lib/components/tenant-settings/tenant-settings.component.mjs +2 -2
  38. package/esm2020/lib/components/tenants/tenants.component.mjs +2 -2
  39. package/esm2020/lib/components/tiles/tiles.component.mjs +2 -2
  40. package/esm2020/lib/components/transactions/transactDialog.component.mjs +2 -2
  41. package/esm2020/lib/components/transactions/transactions.component.mjs +2 -2
  42. package/esm2020/lib/components/users/users.component.mjs +2 -2
  43. package/esm2020/lib/components/viewer/viewer.component.mjs +2 -2
  44. package/esm2020/lib/components/welcome/welcome.component.mjs +2 -2
  45. package/esm2020/lib/services/button.service.mjs +100 -0
  46. package/esm2020/lib/services/condition.service.mjs +32 -0
  47. package/esm2020/lib/services/datalib.service.mjs +387 -0
  48. package/esm2020/lib/services/dialog.service.mjs +38 -0
  49. package/esm2020/lib/services/table-config.service.mjs +26 -0
  50. package/esm2020/lib/tin-spa.module.mjs +6 -3
  51. package/esm2020/public-api.mjs +3 -2
  52. package/fesm2015/tin-spa.mjs +963 -1075
  53. package/fesm2015/tin-spa.mjs.map +1 -1
  54. package/fesm2020/tin-spa.mjs +970 -1070
  55. package/fesm2020/tin-spa.mjs.map +1 -1
  56. package/lib/components/accounts/accountDialog.component.d.ts +1 -1
  57. package/lib/components/accounts/accounts.component.d.ts +1 -1
  58. package/lib/components/attach/attach.component.d.ts +0 -19
  59. package/lib/components/change-password/change-password.component.d.ts +1 -1
  60. package/lib/components/create-account/create-account.component.d.ts +1 -1
  61. package/lib/components/customers/customers.component.d.ts +1 -1
  62. package/lib/components/date/date.component.d.ts +10 -9
  63. package/lib/components/departments/departments.component.d.ts +2 -5
  64. package/lib/components/employees/employees.component.d.ts +3 -14
  65. package/lib/components/form/form.component.d.ts +1 -1
  66. package/lib/components/inventory/inventory.component.d.ts +1 -1
  67. package/lib/components/inventory/quantityDialog.component.d.ts +1 -1
  68. package/lib/components/invitations-table/invitations-table.component.d.ts +1 -1
  69. package/lib/components/list-dialog/list-dialog.component.d.ts +1 -1
  70. package/lib/components/login/login.component.d.ts +1 -1
  71. package/lib/components/logs/logs.component.d.ts +1 -1
  72. package/lib/components/membership/membership.component.d.ts +1 -1
  73. package/lib/components/nav-menu/nav-menu.component.d.ts +1 -1
  74. package/lib/components/plans/plans.component.d.ts +1 -1
  75. package/lib/components/positions/positions.component.d.ts +5 -1
  76. package/lib/components/profile/profile.component.d.ts +1 -1
  77. package/lib/components/recover-account/recover-account.component.d.ts +1 -1
  78. package/lib/components/roles/addRoleDialog.component.d.ts +1 -1
  79. package/lib/components/roles/roles.component.d.ts +1 -1
  80. package/lib/components/settings/settings.component.d.ts +1 -1
  81. package/lib/components/signup/signup.component.d.ts +1 -1
  82. package/lib/components/suppliers/suppliers.component.d.ts +1 -1
  83. package/lib/components/table/detailsDialog.component.d.ts +11 -4
  84. package/lib/components/table/table.component.d.ts +28 -15
  85. package/lib/components/table-action/table-action.component.d.ts +22 -0
  86. package/lib/components/table-header/table-header.component.d.ts +22 -0
  87. package/lib/components/table-internal/detailsDialog-internal.component.d.ts +16 -6
  88. package/lib/components/table-internal/table-internal.component.d.ts +28 -15
  89. package/lib/components/table-row/table-row.component.d.ts +28 -0
  90. package/lib/components/tasks/tasks.component.d.ts +1 -1
  91. package/lib/components/tenant-settings/inviteDialog.component.d.ts +1 -1
  92. package/lib/components/tenant-settings/tenant-settings.component.d.ts +1 -1
  93. package/lib/components/tenants/tenants.component.d.ts +1 -1
  94. package/lib/components/tiles/tiles.component.d.ts +1 -1
  95. package/lib/components/transactions/transactDialog.component.d.ts +1 -1
  96. package/lib/components/transactions/transactions.component.d.ts +1 -1
  97. package/lib/components/users/users.component.d.ts +1 -1
  98. package/lib/components/viewer/viewer.component.d.ts +1 -1
  99. package/lib/components/welcome/welcome.component.d.ts +1 -1
  100. package/lib/services/button.service.d.ts +27 -0
  101. package/lib/services/condition.service.d.ts +10 -0
  102. package/lib/services/{data.service.d.ts → datalib.service.d.ts} +15 -1
  103. package/lib/services/dialog.service.d.ts +18 -0
  104. package/lib/services/table-config.service.d.ts +8 -0
  105. package/lib/tin-spa.module.d.ts +8 -5
  106. package/package.json +1 -1
  107. package/public-api.d.ts +2 -1
  108. package/esm2020/lib/services/data.service.mjs +0 -236
@@ -0,0 +1,387 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { AppConfig, CapItem } from '../classes/Classes';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./http.service";
6
+ import * as i2 from "@angular/router";
7
+ export class DataServiceLib {
8
+ constructor(httpService, router, route) {
9
+ this.httpService = httpService;
10
+ this.router = router;
11
+ this.route = route;
12
+ this.appConfig = new AppConfig();
13
+ this.appConfigSource = new BehaviorSubject(this.appConfig);
14
+ this.appConfigObserv = this.appConfigSource.asObservable();
15
+ this.capHome = new CapItem;
16
+ this.capAdmin = new CapItem;
17
+ this.capUsers = new CapItem;
18
+ this.capRoles = new CapItem;
19
+ this.capLogs = new CapItem;
20
+ this.capSettings = new CapItem;
21
+ this.capMultitenant = new CapItem;
22
+ this.capTenants = new CapItem;
23
+ this.capMembership = new CapItem;
24
+ this.capPlans = new CapItem;
25
+ this.capGeneral = new CapItem;
26
+ this.capCustomers = new CapItem;
27
+ this.capInventory = new CapItem;
28
+ this.capAccounts = new CapItem;
29
+ this.capSuppliers = new CapItem;
30
+ this.capTasks = new CapItem;
31
+ this.capHR = new CapItem;
32
+ this.capEmployees = new CapItem;
33
+ this.capDepartments = new CapItem;
34
+ this.capPositions = new CapItem;
35
+ this.capGrades = new CapItem;
36
+ this.tmpProfileuserName = "";
37
+ this.isProcessing = false;
38
+ this.genders = [
39
+ { name: 'Male', value: 1 },
40
+ { name: 'Female', value: 2 }
41
+ ];
42
+ this.employeeFormConfig = {
43
+ fields: [
44
+ { name: 'nationalID', type: 'text', alias: 'National ID', required: true },
45
+ { name: 'gender', alias: 'Gender', type: 'select', options: this.genders, required: true },
46
+ { name: 'firstName', type: 'text', required: true },
47
+ { name: 'lastName', type: 'text', required: true },
48
+ { name: 'dateOfBirth', type: 'date', alias: 'Date of Birth', required: true },
49
+ { name: 'employmentDate', type: 'date', alias: 'Employment Date', required: true },
50
+ { name: 'departmentID', alias: 'Department', type: 'select', options: [], optionDisplay: 'name', optionValue: 'departmentID' },
51
+ { name: 'positionID', alias: 'Position', type: 'select', options: [], optionDisplay: 'name', optionValue: 'positionID', masterField: 'departmentID', },
52
+ { name: 'employmentStatus', alias: 'Employment Status', type: 'select', options: [], optionDisplay: 'name', optionValue: 'value' },
53
+ { name: 'activeStatus', alias: 'Active Status', type: 'select', options: [], optionDisplay: 'name', optionValue: 'value' },
54
+ { name: 'address', type: 'text', rows: 2, span: true },
55
+ { name: 'phone', type: 'text' },
56
+ { name: 'email', type: 'text' },
57
+ { name: 'note', type: 'text', rows: 2, span: true },
58
+ ],
59
+ };
60
+ this.employeeTableConfig = {
61
+ showFilter: true,
62
+ minColumns: ['name', 'departmentName', 'positionName'],
63
+ flatButtons: true,
64
+ columns: [
65
+ { name: 'name', type: 'text' },
66
+ { name: 'genderName', type: 'text', alias: 'Gender' },
67
+ { name: 'departmentName', type: 'text', alias: 'Department' },
68
+ { name: 'positionName', type: 'text', alias: 'Position' },
69
+ { name: 'employmentStatusName', type: 'text', alias: 'Employment Status' },
70
+ { name: 'activeStatusName', type: 'text', alias: 'Active Status' },
71
+ ],
72
+ buttons: [
73
+ { name: 'create', display: 'Create', dialog: true, action: { url: 'general/employees?action=create', method: 'post' } },
74
+ { name: 'view', dialog: true },
75
+ { name: 'edit', dialog: true, action: { url: 'general/employees?action=edit', method: 'post' } },
76
+ { name: 'delete', dialog: true, action: { url: 'general/employees?action=delete', method: 'post' } },
77
+ ],
78
+ loadAction: { url: 'general/employees/x' },
79
+ formConfig: this.employeeFormConfig
80
+ };
81
+ this.positionFormConfig = {
82
+ fields: [
83
+ { name: 'name', type: 'text', required: true },
84
+ // { name: 'departmentID', alias: 'Department', type: 'select', options: [], optionDisplay: 'name', optionValue: 'departmentID' },
85
+ { name: 'description', type: 'text', span: true },
86
+ ],
87
+ loadAction: { url: 'positions/id' },
88
+ };
89
+ this.editPositionButton = { name: 'edit', dialog: true, action: { url: 'positions?action=edit', method: 'post', successMessage: 'Edited Successfully' } };
90
+ this.positionTableConfig = {
91
+ showFilter: true,
92
+ minColumns: ['name', 'departmentName', 'salary'],
93
+ flatButtons: true,
94
+ columns: [
95
+ { name: 'positionID', type: 'number', alias: 'ID' },
96
+ { name: 'name', type: 'text' },
97
+ // { name: 'departmentName', type: 'text', alias: 'Department' },
98
+ ],
99
+ buttons: [
100
+ { name: 'create', display: 'Create', dialog: true, action: { url: 'positions?action=create', method: 'post' } },
101
+ {
102
+ name: 'view',
103
+ dialog: true,
104
+ detailsConfig: {
105
+ formConfig: { ...this.positionFormConfig, fields: this.positionFormConfig.fields.filter(x => x.name != 'departmentID') },
106
+ heroField: 'positionID',
107
+ buttons: [this.editPositionButton],
108
+ tableConfigs: [
109
+ {
110
+ ...this.employeeTableConfig,
111
+ loadAction: { url: 'positions/employees/x' },
112
+ loadCriteria: 'employees',
113
+ loadIDField: 'positionID',
114
+ title: 'Employees',
115
+ elevation: 'none',
116
+ }
117
+ ],
118
+ }
119
+ },
120
+ this.editPositionButton,
121
+ { name: 'delete', dialog: true, action: { url: 'positions?action=delete', method: 'post' } },
122
+ ],
123
+ loadAction: { url: 'positions/all/x' },
124
+ formConfig: this.positionFormConfig
125
+ };
126
+ //--------------------------Departments-------------------------
127
+ this.departmentFormConfig = {
128
+ fields: [
129
+ { name: 'name', type: 'text', required: true },
130
+ ],
131
+ loadAction: { url: 'departments/id' },
132
+ };
133
+ this.editDepartmentButton = { name: 'edit', dialog: true, action: { url: 'departments?action=edit', method: 'post', successMessage: 'Edited Successfully' } };
134
+ this.departmentTableConfig = {
135
+ showFilter: true,
136
+ minColumns: ['name'],
137
+ flatButtons: true,
138
+ columns: [
139
+ { name: 'departmentID', type: 'number', alias: 'ID' },
140
+ { name: 'name', type: 'text' },
141
+ ],
142
+ buttons: [
143
+ { name: 'create', display: 'Create', dialog: true, action: { url: 'departments?action=create', method: 'post' } },
144
+ {
145
+ name: 'view',
146
+ dialog: true,
147
+ detailsConfig: {
148
+ formConfig: this.departmentFormConfig,
149
+ heroField: 'departmentID',
150
+ buttons: [this.editDepartmentButton],
151
+ tableConfigs: [
152
+ {
153
+ ...this.employeeTableConfig,
154
+ loadAction: { url: 'departments/employees/x' },
155
+ loadCriteria: 'employees',
156
+ loadIDField: 'departmentID',
157
+ title: 'Employees',
158
+ elevation: 'none',
159
+ },
160
+ {
161
+ ...this.positionTableConfig,
162
+ loadAction: { url: 'departments/positions/x' },
163
+ loadCriteria: 'positions',
164
+ loadIDField: 'departmentID',
165
+ title: 'Positions',
166
+ elevation: 'none',
167
+ }
168
+ ],
169
+ }
170
+ },
171
+ this.editDepartmentButton,
172
+ { name: 'delete', dialog: true, action: { url: 'departments?action=delete', method: 'post' } },
173
+ ],
174
+ loadAction: { url: 'departments/all/x' },
175
+ formConfig: this.departmentFormConfig
176
+ };
177
+ this.appConfig.appName = "App-Name";
178
+ this.appConfig.logo = "./assets/logo.png";
179
+ this.appConfig.ADAuth = true;
180
+ this.appConfig.capItems = [this.capMultitenant, this.capAdmin, this.capHome];
181
+ this.capHome.name = "cap1";
182
+ this.capHome.display = "Home";
183
+ this.capHome.link = "home";
184
+ this.capHome.icon = "home";
185
+ this.capAdmin.name = "cap2";
186
+ this.capAdmin.display = "Admin";
187
+ this.capAdmin.icon = "security";
188
+ this.capAdmin.capSubItems = [this.capUsers, this.capRoles, this.capLogs, this.capSettings];
189
+ this.capUsers.name = "cap3";
190
+ this.capUsers.display = "Users";
191
+ this.capUsers.link = "home/admin/users";
192
+ this.capUsers.icon = "group";
193
+ this.capRoles.name = "cap4";
194
+ this.capRoles.display = "Roles";
195
+ this.capRoles.link = "home/admin/roles";
196
+ this.capRoles.icon = "work";
197
+ this.capLogs.name = "cap5";
198
+ this.capLogs.display = "Logs";
199
+ this.capLogs.link = "home/admin/logs";
200
+ this.capLogs.icon = "text_snippet";
201
+ this.capSettings.name = "cap6";
202
+ this.capSettings.display = "Settings";
203
+ this.capSettings.link = "home/admin/settings";
204
+ this.capSettings.icon = "settings";
205
+ this.capMultitenant.name = "cap7";
206
+ this.capMultitenant.display = "Multitenant";
207
+ this.capMultitenant.icon = "apartment";
208
+ this.capMultitenant.capSubItems = [this.capTenants, this.capMembership, this.capPlans];
209
+ this.capTenants.name = "cap8";
210
+ this.capTenants.display = "Tenants";
211
+ this.capTenants.link = "home/admin/tenants";
212
+ this.capMembership.name = "cap9";
213
+ this.capMembership.display = "Membership";
214
+ this.capMembership.link = "home/admin/membership";
215
+ this.capPlans.name = "cap10";
216
+ this.capPlans.display = "Plans";
217
+ this.capPlans.link = "home/admin/plans";
218
+ this.capGeneral.name = "cap11";
219
+ this.capGeneral.display = "General";
220
+ this.capGeneral.capSubItems = [this.capCustomers, this.capInventory, this.capAccounts, this.capSuppliers, this.capTasks];
221
+ this.capCustomers.name = "cap12";
222
+ this.capCustomers.display = "Customers";
223
+ this.capCustomers.link = "home/admin/customers";
224
+ this.capCustomers.icon = "group";
225
+ this.capInventory.name = "cap13";
226
+ this.capInventory.display = "Inventory";
227
+ this.capInventory.link = "home/admin/inventory";
228
+ this.capInventory.icon = "storefront";
229
+ this.capAccounts.name = "cap14";
230
+ this.capAccounts.display = "Accounts";
231
+ this.capAccounts.link = "home/admin/accounts";
232
+ this.capAccounts.icon = "account_balance_wallet";
233
+ this.capSuppliers.name = "cap15";
234
+ this.capSuppliers.display = "Suppliers";
235
+ this.capSuppliers.link = "home/admin/suppliers";
236
+ this.capSuppliers.icon = "groups";
237
+ this.capTasks.name = "cap16";
238
+ this.capTasks.display = "Tasks";
239
+ this.capTasks.link = "home/admin/tasks";
240
+ this.capTasks.icon = "task_alt";
241
+ this.capHR.name = "cap17";
242
+ this.capHR.display = "HR";
243
+ this.capHR.link = "home/admin/hr";
244
+ this.capHR.icon = "diversity_3";
245
+ this.capHR.capSubItems = [this.capEmployees, this.capDepartments, this.capPositions];
246
+ this.capEmployees.name = "cap17";
247
+ this.capEmployees.display = "Employees";
248
+ this.capEmployees.link = "home/admin/employees";
249
+ this.capEmployees.icon = "group";
250
+ this.capDepartments.name = "cap17";
251
+ this.capDepartments.display = "Departments";
252
+ this.capDepartments.link = "home/admin/departments";
253
+ this.capDepartments.icon = "business_center";
254
+ this.capPositions.name = "cap17";
255
+ this.capPositions.display = "Positions";
256
+ this.capPositions.link = "home/admin/positions";
257
+ this.capPositions.icon = "picture_in_picture_medium";
258
+ }
259
+ UpdateAppConfig(config) {
260
+ this.appConfigSource.next(config);
261
+ this.appConfig = config;
262
+ }
263
+ //--------------------------Employees-------------------------
264
+ loadEmployeesMeta() {
265
+ this.CallApi({ url: 'general/employeesmeta/x' }, "").subscribe((apiResponse) => {
266
+ this.employeeFormConfig.fields.find(x => x.name == 'departmentID').options = apiResponse.data.departments;
267
+ this.employeeFormConfig.fields.find(x => x.name == 'positionID').masterOptions = apiResponse.data.positions;
268
+ this.employeeFormConfig.fields.find(x => x.name == 'employmentStatus').options = apiResponse.data.employmentStatuses;
269
+ this.employeeFormConfig.fields.find(x => x.name == 'activeStatus').options = apiResponse.data.activeStatuses;
270
+ });
271
+ }
272
+ //--------------------------Positions-------------------------
273
+ loadPositionMeta() {
274
+ // this.CallApi({ url: 'positions/meta/x' }, "").subscribe((apiResponse: ApiResponse) => {
275
+ // this.positionFormConfig.fields.find(x => x.name == 'departmentID').options = apiResponse.data.departments;
276
+ // });
277
+ }
278
+ //---------------------------Other code
279
+ CallApi(action, data = '') {
280
+ if (!action.method) {
281
+ return this.httpService.Get(action.url);
282
+ }
283
+ if (action.method == 'get') {
284
+ return this.httpService.Get(action.url);
285
+ }
286
+ else if (action.method == 'post') {
287
+ if (action.isFormData) {
288
+ return this.httpService.Post_FormData(action.url, data);
289
+ }
290
+ else {
291
+ return this.httpService.Post(action.url, data);
292
+ }
293
+ }
294
+ else {
295
+ return this.httpService.Post(action.url, data);
296
+ }
297
+ }
298
+ CheckWelcomed(path = 'home/admin/welcome') {
299
+ this.CallApi({ url: 'tenant/welcome/x' }).subscribe((x) => {
300
+ if (!x.data) {
301
+ this.Navigate(path);
302
+ }
303
+ });
304
+ }
305
+ Navigate(path) {
306
+ this.router.navigate([path]);
307
+ }
308
+ NavigateWithValue(path, value) {
309
+ this.router.navigate([path], {
310
+ queryParams: { v: value },
311
+ queryParamsHandling: 'merge',
312
+ skipLocationChange: false
313
+ });
314
+ }
315
+ GetNavigationValue() {
316
+ if (this.route.snapshot.queryParams["v"] != undefined) {
317
+ return this.route.snapshot.queryParams["v"];
318
+ }
319
+ else {
320
+ return "";
321
+ }
322
+ }
323
+ //Users
324
+ GetUser() {
325
+ return this.httpService.Get("User/all/x");
326
+ }
327
+ RegisterAccount(u) {
328
+ return this.httpService.Post("User/register", u);
329
+ }
330
+ GetUserByID(val) {
331
+ return this.httpService.Get(`User/id/${val}`);
332
+ }
333
+ UpdateUser(profile) {
334
+ return this.httpService.Post("User/edit", profile);
335
+ }
336
+ UnlockUser(user) {
337
+ return this.httpService.Post("User/unlock", user);
338
+ }
339
+ LockUser(user) {
340
+ return this.httpService.Post("User/lock", user);
341
+ }
342
+ DeleteUser(user) {
343
+ return this.httpService.Post("User/delete", user);
344
+ }
345
+ Login(u) {
346
+ return this.httpService.Post("User/login", u);
347
+ }
348
+ ChangePassword(u) {
349
+ return this.httpService.Post("User/changepassword-self", u);
350
+ }
351
+ ChangePasswordAdmin(u) {
352
+ return this.httpService.Post("User/changepassword-admin", u);
353
+ }
354
+ SelfReset(u) {
355
+ return this.httpService.Post("Basic/SelfReset", u);
356
+ }
357
+ //Roles
358
+ PostRole(role, action) {
359
+ return this.httpService.Post(`Role?action=${action}`, role);
360
+ }
361
+ PutRole(role) {
362
+ return this.httpService.Put("Role", role);
363
+ }
364
+ GetRole(by, val) {
365
+ return this.httpService.Get("Role/all/x");
366
+ }
367
+ //Logs
368
+ GetLog(by, val) {
369
+ return this.httpService.Get("Log/all/x");
370
+ }
371
+ //Settings
372
+ GetSetting(by, val) {
373
+ return this.httpService.Get("Setting/all/x");
374
+ }
375
+ UpdateSetting(setting, action) {
376
+ return this.httpService.Post(`Setting?action=${action}`, setting);
377
+ }
378
+ }
379
+ DataServiceLib.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DataServiceLib, deps: [{ token: i1.HttpService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
380
+ DataServiceLib.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DataServiceLib, providedIn: 'root' });
381
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DataServiceLib, decorators: [{
382
+ type: Injectable,
383
+ args: [{
384
+ providedIn: 'root'
385
+ }]
386
+ }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.Router }, { type: i2.ActivatedRoute }]; } });
387
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWxpYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBdUIsU0FBUyxFQUFVLE9BQU8sRUFBaUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNwSCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7O0FBT25ELE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQW9CLFdBQXdCLEVBQVMsTUFBYyxFQUFVLEtBQXFCO1FBQTlFLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBa0hsRyxjQUFTLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNwQixvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2RCxvQkFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFNN0QsWUFBTyxHQUFHLElBQUksT0FBTyxDQUFDO1FBQ3RCLGFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQztRQUN2QixhQUFRLEdBQUcsSUFBSSxPQUFPLENBQUM7UUFDdkIsYUFBUSxHQUFHLElBQUksT0FBTyxDQUFDO1FBQ3ZCLFlBQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQztRQUN0QixnQkFBVyxHQUFHLElBQUksT0FBTyxDQUFDO1FBRTFCLG1CQUFjLEdBQUcsSUFBSSxPQUFPLENBQUM7UUFDN0IsZUFBVSxHQUFHLElBQUksT0FBTyxDQUFDO1FBQ3pCLGtCQUFhLEdBQUcsSUFBSSxPQUFPLENBQUM7UUFDNUIsYUFBUSxHQUFHLElBQUksT0FBTyxDQUFDO1FB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QUUsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUdELE9BQU87SUFFQSxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQWM7UUFDbEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTSxPQUFPLENBQUMsSUFBSTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sT0FBTyxDQUFDLEVBQVUsRUFBRSxHQUFXO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUlELE1BQU07SUFDQyxNQUFNLENBQUMsRUFBVSxFQUFFLEdBQVc7UUFDbkMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBR0QsVUFBVTtJQUNILFVBQVUsQ0FBQyxFQUFVLEVBQUUsR0FBVztRQUN2QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTSxhQUFhLENBQUMsT0FBTyxFQUFFLE1BQWM7UUFDMUMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsTUFBTSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEUsQ0FBQzs7MkdBaGRVLGNBQWM7K0dBQWQsY0FBYyxjQUZiLE1BQU07MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3Rpb24sIEFwaVJlc3BvbnNlLCBBcHBDb25maWcsIEJ1dHRvbiwgQ2FwSXRlbSwgRm9ybUNvbmZpZywgVGFibGVDb25maWcsIFVzZXIgfSBmcm9tICcuLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YVNlcnZpY2VMaWIge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZSwgcHVibGljIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge1xyXG5cclxuICAgIHRoaXMuYXBwQ29uZmlnLmFwcE5hbWUgPSBcIkFwcC1OYW1lXCI7XHJcbiAgICB0aGlzLmFwcENvbmZpZy5sb2dvID0gXCIuL2Fzc2V0cy9sb2dvLnBuZ1wiXHJcbiAgICB0aGlzLmFwcENvbmZpZy5BREF1dGggPSB0cnVlO1xyXG4gICAgdGhpcy5hcHBDb25maWcuY2FwSXRlbXMgPSBbdGhpcy5jYXBNdWx0aXRlbmFudCwgdGhpcy5jYXBBZG1pbiwgdGhpcy5jYXBIb21lXTtcclxuXHJcblxyXG4gICAgdGhpcy5jYXBIb21lLm5hbWUgPSBcImNhcDFcIjtcclxuICAgIHRoaXMuY2FwSG9tZS5kaXNwbGF5ID0gXCJIb21lXCI7XHJcbiAgICB0aGlzLmNhcEhvbWUubGluayA9IFwiaG9tZVwiO1xyXG4gICAgdGhpcy5jYXBIb21lLmljb24gPVwiaG9tZVwiO1xyXG5cclxuXHJcbiAgICB0aGlzLmNhcEFkbWluLm5hbWUgPSBcImNhcDJcIjtcclxuICAgIHRoaXMuY2FwQWRtaW4uZGlzcGxheSA9IFwiQWRtaW5cIjtcclxuICAgIHRoaXMuY2FwQWRtaW4uaWNvbiA9IFwic2VjdXJpdHlcIlxyXG4gICAgdGhpcy5jYXBBZG1pbi5jYXBTdWJJdGVtcyA9IFt0aGlzLmNhcFVzZXJzLCB0aGlzLmNhcFJvbGVzLCB0aGlzLmNhcExvZ3MsIHRoaXMuY2FwU2V0dGluZ3NdO1xyXG5cclxuICAgIHRoaXMuY2FwVXNlcnMubmFtZSA9IFwiY2FwM1wiO1xyXG4gICAgdGhpcy5jYXBVc2Vycy5kaXNwbGF5ID0gXCJVc2Vyc1wiO1xyXG4gICAgdGhpcy5jYXBVc2Vycy5saW5rID0gXCJob21lL2FkbWluL3VzZXJzXCI7XHJcbiAgICB0aGlzLmNhcFVzZXJzLmljb24gPSBcImdyb3VwXCI7XHJcblxyXG4gICAgdGhpcy5jYXBSb2xlcy5uYW1lID0gXCJjYXA0XCJcclxuICAgIHRoaXMuY2FwUm9sZXMuZGlzcGxheSA9IFwiUm9sZXNcIjtcclxuICAgIHRoaXMuY2FwUm9sZXMubGluayA9IFwiaG9tZS9hZG1pbi9yb2xlc1wiO1xyXG4gICAgdGhpcy5jYXBSb2xlcy5pY29uID0gXCJ3b3JrXCI7XHJcblxyXG4gICAgdGhpcy5jYXBMb2dzLm5hbWUgPSBcImNhcDVcIlxyXG4gICAgdGhpcy5jYXBMb2dzLmRpc3BsYXkgPSBcIkxvZ3NcIjtcclxuICAgIHRoaXMuY2FwTG9ncy5saW5rID0gXCJob21lL2FkbWluL2xvZ3NcIjtcclxuICAgIHRoaXMuY2FwTG9ncy5pY29uID0gXCJ0ZXh0X3NuaXBwZXRcIjtcclxuXHJcbiAgICB0aGlzLmNhcFNldHRpbmdzLm5hbWUgPSBcImNhcDZcIlxyXG4gICAgdGhpcy5jYXBTZXR0aW5ncy5kaXNwbGF5ID0gXCJTZXR0aW5nc1wiO1xyXG4gICAgdGhpcy5jYXBTZXR0aW5ncy5saW5rID0gXCJob21lL2FkbWluL3NldHRpbmdzXCI7XHJcbiAgICB0aGlzLmNhcFNldHRpbmdzLmljb24gPVwic2V0dGluZ3NcIjtcclxuXHJcblxyXG4gICAgdGhpcy5jYXBNdWx0aXRlbmFudC5uYW1lID0gXCJjYXA3XCJcclxuICAgIHRoaXMuY2FwTXVsdGl0ZW5hbnQuZGlzcGxheSA9IFwiTXVsdGl0ZW5hbnRcIjtcclxuICAgIHRoaXMuY2FwTXVsdGl0ZW5hbnQuaWNvbiA9IFwiYXBhcnRtZW50XCJcclxuICAgIHRoaXMuY2FwTXVsdGl0ZW5hbnQuY2FwU3ViSXRlbXMgPSBbdGhpcy5jYXBUZW5hbnRzLCB0aGlzLmNhcE1lbWJlcnNoaXAsIHRoaXMuY2FwUGxhbnMgXTtcclxuXHJcbiAgICB0aGlzLmNhcFRlbmFudHMubmFtZSA9IFwiY2FwOFwiXHJcbiAgICB0aGlzLmNhcFRlbmFudHMuZGlzcGxheSA9IFwiVGVuYW50c1wiO1xyXG4gICAgdGhpcy5jYXBUZW5hbnRzLmxpbmsgPSBcImhvbWUvYWRtaW4vdGVuYW50c1wiO1xyXG5cclxuICAgIHRoaXMuY2FwTWVtYmVyc2hpcC5uYW1lID0gXCJjYXA5XCJcclxuICAgIHRoaXMuY2FwTWVtYmVyc2hpcC5kaXNwbGF5ID0gXCJNZW1iZXJzaGlwXCI7XHJcbiAgICB0aGlzLmNhcE1lbWJlcnNoaXAubGluayA9IFwiaG9tZS9hZG1pbi9tZW1iZXJzaGlwXCI7XHJcblxyXG4gICAgdGhpcy5jYXBQbGFucy5uYW1lID0gXCJjYXAxMFwiXHJcbiAgICB0aGlzLmNhcFBsYW5zLmRpc3BsYXkgPSBcIlBsYW5zXCI7XHJcbiAgICB0aGlzLmNhcFBsYW5zLmxpbmsgPSBcImhvbWUvYWRtaW4vcGxhbnNcIjtcclxuXHJcblxyXG4gICAgdGhpcy5jYXBHZW5lcmFsLm5hbWUgPSBcImNhcDExXCJcclxuICAgIHRoaXMuY2FwR2VuZXJhbC5kaXNwbGF5ID0gXCJHZW5lcmFsXCI7XHJcbiAgICB0aGlzLmNhcEdlbmVyYWwuY2FwU3ViSXRlbXMgPSBbdGhpcy5jYXBDdXN0b21lcnMsIHRoaXMuY2FwSW52ZW50b3J5LCB0aGlzLmNhcEFjY291bnRzLCB0aGlzLmNhcFN1cHBsaWVycywgdGhpcy5jYXBUYXNrc107XHJcblxyXG4gICAgdGhpcy5jYXBDdXN0b21lcnMubmFtZSA9IFwiY2FwMTJcIlxyXG4gICAgdGhpcy5jYXBDdXN0b21lcnMuZGlzcGxheSA9IFwiQ3VzdG9tZXJzXCI7XHJcbiAgICB0aGlzLmNhcEN1c3RvbWVycy5saW5rID0gXCJob21lL2FkbWluL2N1c3RvbWVyc1wiO1xyXG4gICAgdGhpcy5jYXBDdXN0b21lcnMuaWNvbiA9IFwiZ3JvdXBcIlxyXG5cclxuICAgIHRoaXMuY2FwSW52ZW50b3J5Lm5hbWUgPSBcImNhcDEzXCJcclxuICAgIHRoaXMuY2FwSW52ZW50b3J5LmRpc3BsYXkgPSBcIkludmVudG9yeVwiO1xyXG4gICAgdGhpcy5jYXBJbnZlbnRvcnkubGluayA9IFwiaG9tZS9hZG1pbi9pbnZlbnRvcnlcIjtcclxuICAgIHRoaXMuY2FwSW52ZW50b3J5Lmljb24gPSBcInN0b3JlZnJvbnRcIlxyXG5cclxuICAgIHRoaXMuY2FwQWNjb3VudHMubmFtZSA9IFwiY2FwMTRcIlxyXG4gICAgdGhpcy5jYXBBY2NvdW50cy5kaXNwbGF5ID0gXCJBY2NvdW50c1wiO1xyXG4gICAgdGhpcy5jYXBBY2NvdW50cy5saW5rID0gXCJob21lL2FkbWluL2FjY291bnRzXCI7XHJcbiAgICB0aGlzLmNhcEFjY291bnRzLmljb24gPSBcImFjY291bnRfYmFsYW5jZV93YWxsZXRcIlxyXG5cclxuICAgIHRoaXMuY2FwU3VwcGxpZXJzLm5hbWUgPSBcImNhcDE1XCJcclxuICAgIHRoaXMuY2FwU3VwcGxpZXJzLmRpc3BsYXkgPSBcIlN1cHBsaWVyc1wiO1xyXG4gICAgdGhpcy5jYXBTdXBwbGllcnMubGluayA9IFwiaG9tZS9hZG1pbi9zdXBwbGllcnNcIjtcclxuICAgIHRoaXMuY2FwU3VwcGxpZXJzLmljb24gPSBcImdyb3Vwc1wiXHJcblxyXG4gICAgdGhpcy5jYXBUYXNrcy5uYW1lID0gXCJjYXAxNlwiXHJcbiAgICB0aGlzLmNhcFRhc2tzLmRpc3BsYXkgPSBcIlRhc2tzXCI7XHJcbiAgICB0aGlzLmNhcFRhc2tzLmxpbmsgPSBcImhvbWUvYWRtaW4vdGFza3NcIjtcclxuICAgIHRoaXMuY2FwVGFza3MuaWNvbiA9IFwidGFza19hbHRcIlxyXG5cclxuXHJcbiAgICB0aGlzLmNhcEhSLm5hbWUgPSBcImNhcDE3XCJcclxuICAgIHRoaXMuY2FwSFIuZGlzcGxheSA9IFwiSFJcIjtcclxuICAgIHRoaXMuY2FwSFIubGluayA9IFwiaG9tZS9hZG1pbi9oclwiO1xyXG4gICAgdGhpcy5jYXBIUi5pY29uID0gXCJkaXZlcnNpdHlfM1wiXHJcbiAgICB0aGlzLmNhcEhSLmNhcFN1Ykl0ZW1zID0gW3RoaXMuY2FwRW1wbG95ZWVzLHRoaXMuY2FwRGVwYXJ0bWVudHMsdGhpcy5jYXBQb3NpdGlvbnNdXHJcblxyXG4gICAgdGhpcy5jYXBFbXBsb3llZXMubmFtZSA9IFwiY2FwMTdcIlxyXG4gICAgdGhpcy5jYXBFbXBsb3llZXMuZGlzcGxheSA9IFwiRW1wbG95ZWVzXCI7XHJcbiAgICB0aGlzLmNhcEVtcGxveWVlcy5saW5rID0gXCJob21lL2FkbWluL2VtcGxveWVlc1wiO1xyXG4gICAgdGhpcy5jYXBFbXBsb3llZXMuaWNvbiA9IFwiZ3JvdXBcIlxyXG5cclxuICAgIHRoaXMuY2FwRGVwYXJ0bWVudHMubmFtZSA9IFwiY2FwMTdcIlxyXG4gICAgdGhpcy5jYXBEZXBhcnRtZW50cy5kaXNwbGF5ID0gXCJEZXBhcnRtZW50c1wiO1xyXG4gICAgdGhpcy5jYXBEZXBhcnRtZW50cy5saW5rID0gXCJob21lL2FkbWluL2RlcGFydG1lbnRzXCI7XHJcbiAgICB0aGlzLmNhcERlcGFydG1lbnRzLmljb24gPSBcImJ1c2luZXNzX2NlbnRlclwiXHJcblxyXG4gICAgdGhpcy5jYXBQb3NpdGlvbnMubmFtZSA9IFwiY2FwMTdcIlxyXG4gICAgdGhpcy5jYXBQb3NpdGlvbnMuZGlzcGxheSA9IFwiUG9zaXRpb25zXCI7XHJcbiAgICB0aGlzLmNhcFBvc2l0aW9ucy5saW5rID0gXCJob21lL2FkbWluL3Bvc2l0aW9uc1wiO1xyXG4gICAgdGhpcy5jYXBQb3NpdGlvbnMuaWNvbiA9IFwicGljdHVyZV9pbl9waWN0dXJlX21lZGl1bVwiXHJcblxyXG5cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgYXBwQ29uZmlnID0gbmV3IEFwcENvbmZpZygpO1xyXG4gIHByaXZhdGUgYXBwQ29uZmlnU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLmFwcENvbmZpZyk7XHJcbiAgcHVibGljIGFwcENvbmZpZ09ic2VydiA9IHRoaXMuYXBwQ29uZmlnU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIFVwZGF0ZUFwcENvbmZpZyhjb25maWc6IEFwcENvbmZpZykge1xyXG4gICAgdGhpcy5hcHBDb25maWdTb3VyY2UubmV4dChjb25maWcpO1xyXG4gICAgdGhpcy5hcHBDb25maWcgPSBjb25maWc7XHJcbiAgfVxyXG5cclxuICBjYXBIb21lID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwQWRtaW4gPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBVc2VycyA9IG5ldyBDYXBJdGVtO1xyXG4gIGNhcFJvbGVzID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwTG9ncyA9IG5ldyBDYXBJdGVtO1xyXG4gIGNhcFNldHRpbmdzID0gbmV3IENhcEl0ZW07XHJcblxyXG4gIGNhcE11bHRpdGVuYW50ID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwVGVuYW50cyA9IG5ldyBDYXBJdGVtO1xyXG4gIGNhcE1lbWJlcnNoaXAgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBQbGFucyA9IG5ldyBDYXBJdGVtO1xyXG5cclxuICBjYXBHZW5lcmFsID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwQ3VzdG9tZXJzID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwSW52ZW50b3J5ID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwQWNjb3VudHMgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBTdXBwbGllcnMgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBUYXNrcyA9IG5ldyBDYXBJdGVtO1xyXG5cclxuICBjYXBIUiA9IG5ldyBDYXBJdGVtO1xyXG4gIGNhcEVtcGxveWVlcyA9IG5ldyBDYXBJdGVtO1xyXG4gIGNhcERlcGFydG1lbnRzID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwUG9zaXRpb25zID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwR3JhZGVzID0gbmV3IENhcEl0ZW07XHJcblxyXG4gIHB1YmxpYyB0bXBQcm9maWxldXNlck5hbWUgPSBcIlwiO1xyXG5cclxuXHJcbiAgaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG5cclxuXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUVtcGxveWVlcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBsb2FkRW1wbG95ZWVzTWV0YSgpIHtcclxuICAgIHRoaXMuQ2FsbEFwaSh7IHVybDogJ2dlbmVyYWwvZW1wbG95ZWVzbWV0YS94JyB9LCBcIlwiKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlOiBBcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLmVtcGxveWVlRm9ybUNvbmZpZy5maWVsZHMuZmluZCh4ID0+IHgubmFtZSA9PSAnZGVwYXJ0bWVudElEJykub3B0aW9ucyA9IGFwaVJlc3BvbnNlLmRhdGEuZGVwYXJ0bWVudHM7XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVGb3JtQ29uZmlnLmZpZWxkcy5maW5kKHggPT4geC5uYW1lID09ICdwb3NpdGlvbklEJykubWFzdGVyT3B0aW9ucyA9IGFwaVJlc3BvbnNlLmRhdGEucG9zaXRpb25zO1xyXG4gICAgICB0aGlzLmVtcGxveWVlRm9ybUNvbmZpZy5maWVsZHMuZmluZCh4ID0+IHgubmFtZSA9PSAnZW1wbG95bWVudFN0YXR1cycpLm9wdGlvbnMgPSBhcGlSZXNwb25zZS5kYXRhLmVtcGxveW1lbnRTdGF0dXNlcztcclxuICAgICAgdGhpcy5lbXBsb3llZUZvcm1Db25maWcuZmllbGRzLmZpbmQoeCA9PiB4Lm5hbWUgPT0gJ2FjdGl2ZVN0YXR1cycpLm9wdGlvbnMgPSBhcGlSZXNwb25zZS5kYXRhLmFjdGl2ZVN0YXR1c2VzO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZW5kZXJzID0gW1xyXG4gICAgeyBuYW1lOiAnTWFsZScsIHZhbHVlOiAxIH0sXHJcbiAgICB7IG5hbWU6ICdGZW1hbGUnLCB2YWx1ZTogMiB9XHJcbiAgXVxyXG5cclxuICBlbXBsb3llZUZvcm1Db25maWc6IEZvcm1Db25maWcgPSB7XHJcbiAgICBmaWVsZHM6IFtcclxuICAgICAgeyBuYW1lOiAnbmF0aW9uYWxJRCcsIHR5cGU6ICd0ZXh0JywgYWxpYXM6ICdOYXRpb25hbCBJRCcsIHJlcXVpcmVkOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ2dlbmRlcicsIGFsaWFzOiAnR2VuZGVyJywgdHlwZTogJ3NlbGVjdCcsIG9wdGlvbnM6IHRoaXMuZ2VuZGVycywgcmVxdWlyZWQ6IHRydWUgfSxcclxuICAgICAgeyBuYW1lOiAnZmlyc3ROYW1lJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSB9LFxyXG4gICAgICB7IG5hbWU6ICdsYXN0TmFtZScsIHR5cGU6ICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUgfSxcclxuICAgICAgeyBuYW1lOiAnZGF0ZU9mQmlydGgnLCB0eXBlOiAnZGF0ZScsIGFsaWFzOiAnRGF0ZSBvZiBCaXJ0aCcsIHJlcXVpcmVkOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VtcGxveW1lbnREYXRlJywgdHlwZTogJ2RhdGUnLCBhbGlhczogJ0VtcGxveW1lbnQgRGF0ZScsIHJlcXVpcmVkOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ2RlcGFydG1lbnRJRCcsIGFsaWFzOiAnRGVwYXJ0bWVudCcsIHR5cGU6ICdzZWxlY3QnLCBvcHRpb25zOiBbXSwgb3B0aW9uRGlzcGxheTogJ25hbWUnLCBvcHRpb25WYWx1ZTogJ2RlcGFydG1lbnRJRCcgfSxcclxuICAgICAgeyBuYW1lOiAncG9zaXRpb25JRCcsIGFsaWFzOiAnUG9zaXRpb24nLCB0eXBlOiAnc2VsZWN0Jywgb3B0aW9uczogW10sIG9wdGlvbkRpc3BsYXk6ICduYW1lJywgb3B0aW9uVmFsdWU6ICdwb3NpdGlvbklEJywgbWFzdGVyRmllbGQ6ICdkZXBhcnRtZW50SUQnLCB9LFxyXG4gICAgICB7IG5hbWU6ICdlbXBsb3ltZW50U3RhdHVzJywgYWxpYXM6ICdFbXBsb3ltZW50IFN0YXR1cycsIHR5cGU6ICdzZWxlY3QnLCBvcHRpb25zOiBbXSwgb3B0aW9uRGlzcGxheTogJ25hbWUnLCBvcHRpb25WYWx1ZTogJ3ZhbHVlJyB9LFxyXG4gICAgICB7IG5hbWU6ICdhY3RpdmVTdGF0dXMnLCBhbGlhczogJ0FjdGl2ZSBTdGF0dXMnLCB0eXBlOiAnc2VsZWN0Jywgb3B0aW9uczogW10sIG9wdGlvbkRpc3BsYXk6ICduYW1lJywgb3B0aW9uVmFsdWU6ICd2YWx1ZScgfSxcclxuICAgICAgeyBuYW1lOiAnYWRkcmVzcycsIHR5cGU6ICd0ZXh0Jywgcm93czogMiwgc3BhbjogdHJ1ZSB9LFxyXG4gICAgICB7IG5hbWU6ICdwaG9uZScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdlbWFpbCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IG5hbWU6ICdub3RlJywgdHlwZTogJ3RleHQnLCByb3dzOiAyLCBzcGFuOiB0cnVlIH0sXHJcbiAgICBdLFxyXG4gIH1cclxuXHJcbiAgZW1wbG95ZWVUYWJsZUNvbmZpZzogVGFibGVDb25maWcgPSB7XHJcbiAgICBzaG93RmlsdGVyOiB0cnVlLFxyXG4gICAgbWluQ29sdW1uczogWyduYW1lJywgJ2RlcGFydG1lbnROYW1lJywgJ3Bvc2l0aW9uTmFtZSddLFxyXG4gICAgZmxhdEJ1dHRvbnM6IHRydWUsXHJcbiAgICBjb2x1bW5zOiBbXHJcbiAgICAgIHsgbmFtZTogJ25hbWUnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnZ2VuZGVyTmFtZScsIHR5cGU6ICd0ZXh0JywgYWxpYXM6ICdHZW5kZXInIH0sXHJcbiAgICAgIHsgbmFtZTogJ2RlcGFydG1lbnROYW1lJywgdHlwZTogJ3RleHQnLCBhbGlhczogJ0RlcGFydG1lbnQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ3Bvc2l0aW9uTmFtZScsIHR5cGU6ICd0ZXh0JywgYWxpYXM6ICdQb3NpdGlvbicgfSxcclxuICAgICAgeyBuYW1lOiAnZW1wbG95bWVudFN0YXR1c05hbWUnLCB0eXBlOiAndGV4dCcsIGFsaWFzOiAnRW1wbG95bWVudCBTdGF0dXMnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2FjdGl2ZVN0YXR1c05hbWUnLCB0eXBlOiAndGV4dCcsIGFsaWFzOiAnQWN0aXZlIFN0YXR1cycgfSxcclxuICAgIF0sXHJcbiAgICBidXR0b25zOiBbXHJcbiAgICAgIHsgbmFtZTogJ2NyZWF0ZScsIGRpc3BsYXk6ICdDcmVhdGUnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdnZW5lcmFsL2VtcGxveWVlcz9hY3Rpb249Y3JlYXRlJywgbWV0aG9kOiAncG9zdCcgfSB9LFxyXG4gICAgICB7IG5hbWU6ICd2aWV3JywgZGlhbG9nOiB0cnVlIH0sXHJcbiAgICAgIHsgbmFtZTogJ2VkaXQnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdnZW5lcmFsL2VtcGxveWVlcz9hY3Rpb249ZWRpdCcsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgICAgeyBuYW1lOiAnZGVsZXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnZ2VuZXJhbC9lbXBsb3llZXM/YWN0aW9uPWRlbGV0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgIF0sXHJcbiAgICBsb2FkQWN0aW9uOiB7IHVybDogJ2dlbmVyYWwvZW1wbG95ZWVzL3gnIH0sXHJcbiAgICBmb3JtQ29uZmlnOiB0aGlzLmVtcGxveWVlRm9ybUNvbmZpZ1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1Qb3NpdGlvbnMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4gIGxvYWRQb3NpdGlvbk1ldGEoKSB7XHJcbiAgICAvLyB0aGlzLkNhbGxBcGkoeyB1cmw6ICdwb3NpdGlvbnMvbWV0YS94JyB9LCBcIlwiKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlOiBBcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgLy8gICB0aGlzLnBvc2l0aW9uRm9ybUNvbmZpZy5maWVsZHMuZmluZCh4ID0+IHgubmFtZSA9PSAnZGVwYXJ0bWVudElEJykub3B0aW9ucyA9IGFwaVJlc3BvbnNlLmRhdGEuZGVwYXJ0bWVudHM7XHJcbiAgICAvLyB9KTtcclxuICB9XHJcblxyXG4gIHBvc2l0aW9uRm9ybUNvbmZpZzogRm9ybUNvbmZpZyA9IHtcclxuICAgIGZpZWxkczogW1xyXG4gICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSB9LFxyXG4gICAgICAvLyB7IG5hbWU6ICdkZXBhcnRtZW50SUQnLCBhbGlhczogJ0RlcGFydG1lbnQnLCB0eXBlOiAnc2VsZWN0Jywgb3B0aW9uczogW10sIG9wdGlvbkRpc3BsYXk6ICduYW1lJywgb3B0aW9uVmFsdWU6ICdkZXBhcnRtZW50SUQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2Rlc2NyaXB0aW9uJywgdHlwZTogJ3RleHQnLCBzcGFuOiB0cnVlIH0sXHJcblxyXG4gICAgXSxcclxuICAgIGxvYWRBY3Rpb246IHsgdXJsOiAncG9zaXRpb25zL2lkJyB9LFxyXG4gIH1cclxuXHJcbiAgZWRpdFBvc2l0aW9uQnV0dG9uOiBCdXR0b24gPSB7IG5hbWU6ICdlZGl0JywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAncG9zaXRpb25zP2FjdGlvbj1lZGl0JywgbWV0aG9kOiAncG9zdCcsIHN1Y2Nlc3NNZXNzYWdlOiAnRWRpdGVkIFN1Y2Nlc3NmdWxseScgfSB9XHJcblxyXG4gIHBvc2l0aW9uVGFibGVDb25maWc6IFRhYmxlQ29uZmlnID0ge1xyXG4gICAgc2hvd0ZpbHRlcjogdHJ1ZSxcclxuICAgIG1pbkNvbHVtbnM6IFsnbmFtZScsICdkZXBhcnRtZW50TmFtZScsICdzYWxhcnknXSxcclxuICAgIGZsYXRCdXR0b25zOiB0cnVlLFxyXG4gICAgY29sdW1uczogW1xyXG4gICAgICB7IG5hbWU6ICdwb3NpdGlvbklEJywgdHlwZTogJ251bWJlcicsIGFsaWFzOiAnSUQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ25hbWUnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgLy8geyBuYW1lOiAnZGVwYXJ0bWVudE5hbWUnLCB0eXBlOiAndGV4dCcsIGFsaWFzOiAnRGVwYXJ0bWVudCcgfSxcclxuICAgIF0sXHJcbiAgICBidXR0b25zOiBbXHJcbiAgICAgIHsgbmFtZTogJ2NyZWF0ZScsIGRpc3BsYXk6ICdDcmVhdGUnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdwb3NpdGlvbnM/YWN0aW9uPWNyZWF0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICd2aWV3JyxcclxuICAgICAgICBkaWFsb2c6IHRydWUsXHJcbiAgICAgICAgZGV0YWlsc0NvbmZpZzoge1xyXG4gICAgICAgICAgZm9ybUNvbmZpZzogeyAuLi50aGlzLnBvc2l0aW9uRm9ybUNvbmZpZywgZmllbGRzOiB0aGlzLnBvc2l0aW9uRm9ybUNvbmZpZy5maWVsZHMuZmlsdGVyKHggPT4geC5uYW1lICE9ICdkZXBhcnRtZW50SUQnKSB9LFxyXG4gICAgICAgICAgaGVyb0ZpZWxkOiAncG9zaXRpb25JRCcsXHJcbiAgICAgICAgICBidXR0b25zOiBbdGhpcy5lZGl0UG9zaXRpb25CdXR0b25dLFxyXG4gICAgICAgICAgdGFibGVDb25maWdzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmVtcGxveWVlVGFibGVDb25maWcsXHJcbiAgICAgICAgICAgICAgbG9hZEFjdGlvbjogeyB1cmw6ICdwb3NpdGlvbnMvZW1wbG95ZWVzL3gnIH0sXHJcbiAgICAgICAgICAgICAgbG9hZENyaXRlcmlhOiAnZW1wbG95ZWVzJyxcclxuICAgICAgICAgICAgICBsb2FkSURGaWVsZDogJ3Bvc2l0aW9uSUQnLFxyXG4gICAgICAgICAgICAgIHRpdGxlOiAnRW1wbG95ZWVzJyxcclxuICAgICAgICAgICAgICBlbGV2YXRpb246ICdub25lJyxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHRoaXMuZWRpdFBvc2l0aW9uQnV0dG9uLFxyXG4gICAgICB7IG5hbWU6ICdkZWxldGUnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICdwb3NpdGlvbnM/YWN0aW9uPWRlbGV0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgIF0sXHJcbiAgICBsb2FkQWN0aW9uOiB7IHVybDogJ3Bvc2l0aW9ucy9hbGwveCcgfSxcclxuICAgIGZvcm1Db25maWc6IHRoaXMucG9zaXRpb25Gb3JtQ29uZmlnXHJcbiAgfVxyXG5cclxuXHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLURlcGFydG1lbnRzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gIGRlcGFydG1lbnRGb3JtQ29uZmlnOiBGb3JtQ29uZmlnID0ge1xyXG4gICAgZmllbGRzOiBbXHJcbiAgICAgIHsgbmFtZTogJ25hbWUnLCB0eXBlOiAndGV4dCcsIHJlcXVpcmVkOiB0cnVlIH0sXHJcbiAgICBdLFxyXG4gICAgbG9hZEFjdGlvbjogeyB1cmw6ICdkZXBhcnRtZW50cy9pZCcgfSxcclxuICB9XHJcblxyXG4gIGVkaXREZXBhcnRtZW50QnV0dG9uOiBCdXR0b24gPSB7IG5hbWU6ICdlZGl0JywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnZGVwYXJ0bWVudHM/YWN0aW9uPWVkaXQnLCBtZXRob2Q6ICdwb3N0Jywgc3VjY2Vzc01lc3NhZ2U6ICdFZGl0ZWQgU3VjY2Vzc2Z1bGx5JyB9IH1cclxuXHJcbiAgZGVwYXJ0bWVudFRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyA9IHtcclxuICAgIHNob3dGaWx0ZXI6IHRydWUsXHJcbiAgICBtaW5Db2x1bW5zOiBbJ25hbWUnXSxcclxuICAgIGZsYXRCdXR0b25zOiB0cnVlLFxyXG4gICAgY29sdW1uczogW1xyXG4gICAgICB7IG5hbWU6ICdkZXBhcnRtZW50SUQnLCB0eXBlOiAnbnVtYmVyJywgYWxpYXM6ICdJRCcgfSxcclxuICAgICAgeyBuYW1lOiAnbmFtZScsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgXSxcclxuICAgIGJ1dHRvbnM6IFtcclxuICAgICAgeyBuYW1lOiAnY3JlYXRlJywgZGlzcGxheTogJ0NyZWF0ZScsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ2RlcGFydG1lbnRzP2FjdGlvbj1jcmVhdGUnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAndmlldycsXHJcbiAgICAgICAgZGlhbG9nOiB0cnVlLFxyXG4gICAgICAgIGRldGFpbHNDb25maWc6IHtcclxuICAgICAgICAgIGZvcm1Db25maWc6IHRoaXMuZGVwYXJ0bWVudEZvcm1Db25maWcsXHJcbiAgICAgICAgICBoZXJvRmllbGQ6ICdkZXBhcnRtZW50SUQnLFxyXG4gICAgICAgICAgYnV0dG9uczogW3RoaXMuZWRpdERlcGFydG1lbnRCdXR0b25dLFxyXG4gICAgICAgICAgdGFibGVDb25maWdzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmVtcGxveWVlVGFibGVDb25maWcsXHJcbiAgICAgICAgICAgICAgbG9hZEFjdGlvbjogeyB1cmw6ICdkZXBhcnRtZW50cy9lbXBsb3llZXMveCcgfSxcclxuICAgICAgICAgICAgICBsb2FkQ3JpdGVyaWE6ICdlbXBsb3llZXMnLFxyXG4gICAgICAgICAgICAgIGxvYWRJREZpZWxkOiAnZGVwYXJ0bWVudElEJyxcclxuICAgICAgICAgICAgICB0aXRsZTogJ0VtcGxveWVlcycsXHJcbiAgICAgICAgICAgICAgZWxldmF0aW9uOiAnbm9uZScsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLnBvc2l0aW9uVGFibGVDb25maWcsXHJcbiAgICAgICAgICAgICAgbG9hZEFjdGlvbjogeyB1cmw6ICdkZXBhcnRtZW50cy9wb3NpdGlvbnMveCcgfSxcclxuICAgICAgICAgICAgICBsb2FkQ3JpdGVyaWE6ICdwb3NpdGlvbnMnLFxyXG4gICAgICAgICAgICAgIGxvYWRJREZpZWxkOiAnZGVwYXJ0bWVudElEJyxcclxuICAgICAgICAgICAgICB0aXRsZTogJ1Bvc2l0aW9ucycsXHJcbiAgICAgICAgICAgICAgZWxldmF0aW9uOiAnbm9uZScsXHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgdGhpcy5lZGl0RGVwYXJ0bWVudEJ1dHRvbixcclxuICAgICAgeyBuYW1lOiAnZGVsZXRlJywgZGlhbG9nOiB0cnVlLCBhY3Rpb246IHsgdXJsOiAnZGVwYXJ0bWVudHM/YWN0aW9uPWRlbGV0ZScsIG1ldGhvZDogJ3Bvc3QnIH0gfSxcclxuICAgIF0sXHJcbiAgICBsb2FkQWN0aW9uOiB7IHVybDogJ2RlcGFydG1lbnRzL2FsbC94JyB9LFxyXG4gICAgZm9ybUNvbmZpZzogdGhpcy5kZXBhcnRtZW50Rm9ybUNvbmZpZ1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tT3RoZXIgY29kZVxyXG5cclxuICBwdWJsaWMgQ2FsbEFwaShhY3Rpb246IEFjdGlvbiwgZGF0YTogYW55ID0gJycgKSB7XHJcblxyXG4gICAgaWYgKCFhY3Rpb24ubWV0aG9kKXtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuR2V0KGFjdGlvbi51cmwpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKGFjdGlvbi5tZXRob2QgPT0nZ2V0Jyl7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLkdldChhY3Rpb24udXJsKTtcclxuICAgIH0gZWxzZSBpZiAoYWN0aW9uLm1ldGhvZCA9PSAncG9zdCcpe1xyXG5cclxuICAgICAgaWYgKGFjdGlvbi5pc0Zvcm1EYXRhKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0X0Zvcm1EYXRhKGFjdGlvbi51cmwsIGRhdGEpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0KGFjdGlvbi51cmwsIGRhdGEpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChhY3Rpb24udXJsLCBkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ2hlY2tXZWxjb21lZChwYXRoOiBzdHJpbmcgPSAnaG9tZS9hZG1pbi93ZWxjb21lJykge1xyXG4gICAgdGhpcy5DYWxsQXBpKHsgdXJsOiAndGVuYW50L3dlbGNvbWUveCcgfSkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgIGlmICgheC5kYXRhKSB7XHJcbiAgICAgICAgdGhpcy5OYXZpZ2F0ZShwYXRoKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBwdWJsaWMgTmF2aWdhdGUocGF0aDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcGF0aF0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIE5hdmlnYXRlV2l0aFZhbHVlKHBhdGg6IHN0cmluZywgdmFsdWUgOiBzdHJpbmcpe1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3BhdGhdLCB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IHY6IHZhbHVlIH0sXHJcbiAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXHJcbiAgICAgIHNraXBMb2NhdGlvbkNoYW5nZTogZmFsc2VcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldE5hdmlnYXRpb25WYWx1ZSgpe1xyXG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbXCJ2XCJdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tcInZcIl1cclxuICAgIH1lbHNle1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0bXBBY2NvdW50SUQ7XHJcblxyXG5cclxuXHJcbiAgLy9Vc2Vyc1xyXG4gIHB1YmxpYyBHZXRVc2VyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuR2V0KFwiVXNlci9hbGwveFwiKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZWdpc3RlckFjY291bnQodSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChcIlVzZXIvcmVnaXN0ZXJcIiwgdSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0VXNlckJ5SUQodmFsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLkdldChgVXNlci9pZC8ke3ZhbH1gKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBVcGRhdGVVc2VyKHByb2ZpbGUpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlBvc3QoXCJVc2VyL2VkaXRcIiwgcHJvZmlsZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgVW5sb2NrVXNlcih1c2VyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0KFwiVXNlci91bmxvY2tcIiwgdXNlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9ja1VzZXIodXNlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChcIlVzZXIvbG9ja1wiLCB1c2VyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBEZWxldGVVc2VyKHVzZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlBvc3QoXCJVc2VyL2RlbGV0ZVwiLCB1c2VyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBMb2dpbih1OiBVc2VyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0KFwiVXNlci9sb2dpblwiLCB1KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBDaGFuZ2VQYXNzd29yZCh1KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0KFwiVXNlci9jaGFuZ2VwYXNzd29yZC1zZWxmXCIsIHUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIENoYW5nZVBhc3N3b3JkQWRtaW4odSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChcIlVzZXIvY2hhbmdlcGFzc3dvcmQtYWRtaW5cIiwgdSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2VsZlJlc2V0KHU6IFVzZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChcIkJhc2ljL1NlbGZSZXNldFwiLCB1KTtcclxuICB9XHJcblxyXG5cclxuICAvL1JvbGVzXHJcblxyXG4gIHB1YmxpYyBQb3N0Um9sZShyb2xlLCBhY3Rpb246IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChgUm9sZT9hY3Rpb249JHthY3Rpb259YCwgcm9sZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUHV0Um9sZShyb2xlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5QdXQoXCJSb2xlXCIsIHJvbGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFJvbGUoYnk6IHN0cmluZywgdmFsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLkdldChcIlJvbGUvYWxsL3hcIik7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8vTG9nc1xyXG4gIHB1YmxpYyBHZXRMb2coYnk6IHN0cmluZywgdmFsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLkdldChcIkxvZy9hbGwveFwiKTtcclxuICB9XHJcblxyXG5cclxuICAvL1NldHRpbmdzXHJcbiAgcHVibGljIEdldFNldHRpbmcoYnk6IHN0cmluZywgdmFsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLkdldChcIlNldHRpbmcvYWxsL3hcIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgVXBkYXRlU2V0dGluZyhzZXR0aW5nLCBhY3Rpb246IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChgU2V0dGluZz9hY3Rpb249JHthY3Rpb259YCwgc2V0dGluZyk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/material/dialog";
4
+ import * as i2 from "@angular/cdk/layout";
5
+ export class DialogService {
6
+ constructor(dialog, breakpointObserver) {
7
+ this.dialog = dialog;
8
+ this.breakpointObserver = breakpointObserver;
9
+ this.smallScreen = false;
10
+ // Detect screen size changes
11
+ this.breakpointObserver.observe(["(max-width: 600px)"]).subscribe((result) => {
12
+ this.smallScreen = result.matches;
13
+ });
14
+ }
15
+ openDetailsDialog(config, dialogComponent) {
16
+ const hasTables = config.tableConfigs?.length > 0;
17
+ const dialogOptions = {
18
+ width: this.smallScreen ? '900px' : (hasTables ? '90%' : '900px'),
19
+ height: hasTables ? '90%' : 'auto',
20
+ data: config
21
+ };
22
+ const dialogRef = this.dialog.open(dialogComponent, dialogOptions);
23
+ return {
24
+ afterClosed: dialogRef.afterClosed(),
25
+ inputChange: dialogRef.componentInstance.inputChange,
26
+ dialogRef: dialogRef
27
+ };
28
+ }
29
+ }
30
+ DialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DialogService, deps: [{ token: i1.MatDialog }, { token: i2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Injectable });
31
+ DialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DialogService, providedIn: 'root' });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DialogService, decorators: [{
33
+ type: Injectable,
34
+ args: [{
35
+ providedIn: 'root'
36
+ }]
37
+ }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.BreakpointObserver }]; } });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvc2VydmljZXMvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVUzQyxNQUFNLE9BQU8sYUFBYTtJQUd4QixZQUNVLE1BQWlCLEVBQ2pCLGtCQUFzQztRQUR0QyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFKeEMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFNMUIsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBdUIsRUFBRSxFQUFFO1lBQzVGLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUIsQ0FDZixNQUEyQixFQUMzQixlQUEwQztRQU0xQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFbEQsTUFBTSxhQUFhLEdBQUc7WUFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ2pFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTTtZQUNsQyxJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFbkUsT0FBTztZQUNMLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFO1lBQ3BDLFdBQVcsRUFBRyxTQUFTLENBQUMsaUJBQXlCLENBQUMsV0FBVztZQUM3RCxTQUFTLEVBQUUsU0FBUztTQUNyQixDQUFDO0lBQ0osQ0FBQzs7MEdBcENVLGFBQWE7OEdBQWIsYUFBYSxjQUZaLE1BQU07MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEZXRhaWxzRGlhbG9nQ29uZmlnIH0gZnJvbSAnLi4vY2xhc3Nlcy9DbGFzc2VzJztcclxuLy8gaW1wb3J0IHsgRGV0YWlsc0RpYWxvZyB9IGZyb20gJy4uL2NvbXBvbmVudHMvdGFibGUvZGV0YWlsc0RpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRTdGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBzbWFsbFNjcmVlbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyXHJcbiAgKSB7XHJcbiAgICAvLyBEZXRlY3Qgc2NyZWVuIHNpemUgY2hhbmdlc1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShbXCIobWF4LXdpZHRoOiA2MDBweClcIl0pLnN1YnNjcmliZSgocmVzdWx0OiBCcmVha3BvaW50U3RhdGUpID0+IHtcclxuICAgICAgdGhpcy5zbWFsbFNjcmVlbiA9IHJlc3VsdC5tYXRjaGVzO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuRGV0YWlsc0RpYWxvZzxUPihcclxuICAgIGNvbmZpZzogRGV0YWlsc0RpYWxvZ0NvbmZpZyxcclxuICAgIGRpYWxvZ0NvbXBvbmVudDogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVFxyXG4gICk6IHtcclxuICAgIGFmdGVyQ2xvc2VkOiBPYnNlcnZhYmxlPGFueT4sXHJcbiAgICBpbnB1dENoYW5nZTogT2JzZXJ2YWJsZTxhbnk+LFxyXG4gICAgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VD5cclxuICB9IHtcclxuICAgIGNvbnN0IGhhc1RhYmxlcyA9IGNvbmZpZy50YWJsZUNvbmZpZ3M/Lmxlbmd0aCA+IDA7XHJcblxyXG4gICAgY29uc3QgZGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgd2lkdGg6IHRoaXMuc21hbGxTY3JlZW4gPyAnOTAwcHgnIDogKGhhc1RhYmxlcyA/ICc5MCUnIDogJzkwMHB4JyksXHJcbiAgICAgIGhlaWdodDogaGFzVGFibGVzID8gJzkwJScgOiAnYXV0bycsXHJcbiAgICAgIGRhdGE6IGNvbmZpZ1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKGRpYWxvZ0NvbXBvbmVudCwgZGlhbG9nT3B0aW9ucyk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYWZ0ZXJDbG9zZWQ6IGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLFxyXG4gICAgICBpbnB1dENoYW5nZTogKGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZSBhcyBhbnkpLmlucHV0Q2hhbmdlLFxyXG4gICAgICBkaWFsb2dSZWY6IGRpYWxvZ1JlZlxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,26 @@
1
+ // table-config.service.ts
2
+ import { Injectable } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class TableConfigService {
5
+ setColumns(config, smallScreen) {
6
+ if (!config?.columns) {
7
+ return [];
8
+ }
9
+ if (smallScreen && config.minColumns) {
10
+ return config.minColumns.filter(col => config.columns.some(x => x.name === col));
11
+ }
12
+ return config.columns.map(({ name }) => name);
13
+ }
14
+ getActionsWidth(buttons) {
15
+ return `${buttons?.length * 40 + 20}px`;
16
+ }
17
+ }
18
+ TableConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TableConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
19
+ TableConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TableConfigService, providedIn: 'root' });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TableConfigService, decorators: [{
21
+ type: Injectable,
22
+ args: [{
23
+ providedIn: 'root'
24
+ }]
25
+ }] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvc2VydmljZXMvdGFibGUtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEJBQTBCO0FBQzFCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTNDLE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsVUFBVSxDQUFDLE1BQW1CLEVBQUUsV0FBb0I7UUFFbEQsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUU7WUFDcEIsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELElBQUksV0FBVyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7WUFDcEMsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUNwQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQ3pDLENBQUM7U0FDSDtRQUVELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQWlCO1FBQy9CLE9BQU8sR0FBRyxPQUFPLEVBQUUsTUFBTSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQztJQUMxQyxDQUFDOzsrR0FuQlUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdGFibGUtY29uZmlnLnNlcnZpY2UudHNcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCdXR0b24sIFRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vY2xhc3Nlcy9DbGFzc2VzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlQ29uZmlnU2VydmljZSB7XHJcblxyXG4gIHNldENvbHVtbnMoY29uZmlnOiBUYWJsZUNvbmZpZywgc21hbGxTY3JlZW46IGJvb2xlYW4pOiBzdHJpbmdbXSB7XHJcblxyXG4gICAgaWYgKCFjb25maWc/LmNvbHVtbnMpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzbWFsbFNjcmVlbiAmJiBjb25maWcubWluQ29sdW1ucykge1xyXG4gICAgICByZXR1cm4gY29uZmlnLm1pbkNvbHVtbnMuZmlsdGVyKGNvbCA9PlxyXG4gICAgICAgIGNvbmZpZy5jb2x1bW5zLnNvbWUoeCA9PiB4Lm5hbWUgPT09IGNvbClcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29uZmlnLmNvbHVtbnMubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSk7XHJcbiAgfVxyXG5cclxuICBnZXRBY3Rpb25zV2lkdGgoYnV0dG9uczogQnV0dG9uW10pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke2J1dHRvbnM/Lmxlbmd0aCAqIDQwICsgMjB9cHhgO1xyXG4gIH1cclxufVxyXG4iXX0=