dts-backoffice-util 4.0.0 → 6.0.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.
- package/README.md +1 -1
- package/dts-backoffice-util.d.ts +1 -0
- package/{esm2015/dts-backoffice-util.js → esm2020/dts-backoffice-util.mjs} +0 -0
- package/esm2020/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.mjs +269 -0
- package/{esm2015/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.js → esm2020/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.mjs} +0 -0
- package/esm2020/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.mjs +183 -0
- package/esm2020/lib/dts-backoffice-util.module.mjs +56 -0
- package/{esm2015/lib/interfaces/filter-range.interface.js → esm2020/lib/interfaces/filter-range.interface.mjs} +0 -0
- package/{esm2015/lib/interfaces/totvs-response.interface.js → esm2020/lib/interfaces/totvs-response.interface.mjs} +0 -0
- package/{esm2015/lib/model/session-info.model.js → esm2020/lib/model/session-info.model.mjs} +0 -0
- package/esm2020/lib/pipes/dts-date-format.pipe.mjs +20 -0
- package/esm2020/lib/services/breadcrumb-control.service.mjs +82 -0
- package/esm2020/lib/services/cache-params.service.mjs +25 -0
- package/esm2020/lib/services/menu-datasul.service.mjs +41 -0
- package/esm2020/lib/services/profile.service.mjs +55 -0
- package/esm2020/lib/services/report.service.mjs +57 -0
- package/esm2020/lib/services/session-info.service.mjs +36 -0
- package/esm2020/lib/services/translate.service.mjs +23 -0
- package/{esm2015/lib/utils/date.util.js → esm2020/lib/utils/date.util.mjs} +0 -0
- package/{esm2015/lib/utils/disclaimer.util.js → esm2020/lib/utils/disclaimer.util.mjs} +0 -0
- package/{esm2015/lib/utils/field-validation.util.js → esm2020/lib/utils/field-validation.util.mjs} +0 -0
- package/esm2020/lib/utils/file.util.mjs +129 -0
- package/{esm2015/lib/utils/filter-range.util.js → esm2020/lib/utils/filter-range.util.mjs} +0 -0
- package/{esm2015/lib/utils/generic-functions.utils.js → esm2020/lib/utils/generic-functions.utils.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/{dts-backoffice-util.js → dts-backoffice-util.mjs} +131 -111
- package/fesm2015/dts-backoffice-util.mjs.map +1 -0
- package/fesm2020/dts-backoffice-util.mjs +1851 -0
- package/fesm2020/dts-backoffice-util.mjs.map +1 -0
- package/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.d.ts +3 -0
- package/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.d.ts +3 -0
- package/lib/dts-backoffice-util.module.d.ts +10 -0
- package/lib/pipes/dts-date-format.pipe.d.ts +3 -0
- package/lib/services/breadcrumb-control.service.d.ts +3 -0
- package/lib/services/cache-params.service.d.ts +3 -0
- package/lib/services/menu-datasul.service.d.ts +3 -0
- package/lib/services/profile.service.d.ts +3 -0
- package/lib/services/report.service.d.ts +3 -0
- package/lib/services/session-info.service.d.ts +3 -0
- package/lib/services/translate.service.d.ts +3 -0
- package/package.json +22 -10
- package/bundles/dts-backoffice-util.umd.js +0 -1935
- package/bundles/dts-backoffice-util.umd.js.map +0 -1
- package/bundles/dts-backoffice-util.umd.min.js +0 -2
- package/bundles/dts-backoffice-util.umd.min.js.map +0 -1
- package/dts-backoffice-util.metadata.json +0 -1
- package/esm2015/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.js +0 -266
- package/esm2015/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.js +0 -183
- package/esm2015/lib/dts-backoffice-util.module.js +0 -39
- package/esm2015/lib/pipes/dts-date-format.pipe.js +0 -16
- package/esm2015/lib/services/breadcrumb-control.service.js +0 -81
- package/esm2015/lib/services/cache-params.service.js +0 -25
- package/esm2015/lib/services/menu-datasul.service.js +0 -40
- package/esm2015/lib/services/profile.service.js +0 -58
- package/esm2015/lib/services/report.service.js +0 -58
- package/esm2015/lib/services/session-info.service.js +0 -39
- package/esm2015/lib/services/translate.service.js +0 -20
- package/esm2015/lib/utils/file.util.js +0 -128
- package/fesm2015/dts-backoffice-util.js.map +0 -1
package/esm2015/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.js
DELETED
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
import { Component, Input, ViewChild, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import { PoI18nService, PoNotificationService } from '@po-ui/ng-components';
|
|
3
|
-
import { ScheduleParameters } from './totvs-schedule-execution.model';
|
|
4
|
-
import { NgForm } from '@angular/forms';
|
|
5
|
-
import { TotvsScheduleExecutionService } from './totvs-schedule-execution.service';
|
|
6
|
-
export class TotvsScheduleExecutionComponent {
|
|
7
|
-
constructor(poI18nService, rpwService, poNotification) {
|
|
8
|
-
this.poI18nService = poI18nService;
|
|
9
|
-
this.rpwService = rpwService;
|
|
10
|
-
this.poNotification = poNotification;
|
|
11
|
-
this.programEMS5 = false;
|
|
12
|
-
this.programVersion = '';
|
|
13
|
-
this.disabledParams = false;
|
|
14
|
-
this.loading = false;
|
|
15
|
-
this.endExecution = new EventEmitter();
|
|
16
|
-
this.jsonObject = {};
|
|
17
|
-
this.literals = {};
|
|
18
|
-
}
|
|
19
|
-
ngOnInit() {
|
|
20
|
-
/* VERIFICAR COMO FICARÁ A TRADUÇÃO
|
|
21
|
-
forkJoin(
|
|
22
|
-
this.poI18nService.getLiterals(),
|
|
23
|
-
this.poI18nService.getLiterals({ context: 'generalRpw' })
|
|
24
|
-
).subscribe(literals => {
|
|
25
|
-
literals.map(item => Object.assign(this.literals, item) );
|
|
26
|
-
this.setupComponents();
|
|
27
|
-
});*/
|
|
28
|
-
this.setupComponents();
|
|
29
|
-
}
|
|
30
|
-
setupComponents() {
|
|
31
|
-
this.executionTypeOptions = [
|
|
32
|
-
{ label: 'Executar Hoje', value: 1 },
|
|
33
|
-
{ label: 'Agendar Execução', value: 2 }
|
|
34
|
-
];
|
|
35
|
-
this.frequencyOptions = [
|
|
36
|
-
{ label: 'Uma vez no dia', value: 'no' },
|
|
37
|
-
{ label: 'Várias vezes no dia', value: 'yes' }
|
|
38
|
-
];
|
|
39
|
-
this.frequencyTypeOptions = [
|
|
40
|
-
{ label: 'Hora(s)', value: 'hour' },
|
|
41
|
-
{ label: 'Minuto(s)', value: 'minute' }
|
|
42
|
-
];
|
|
43
|
-
this.weeklyOptions = [
|
|
44
|
-
{ label: 'Domingo', value: 'Sunday' },
|
|
45
|
-
{ label: 'Segunda', value: 'Monday' },
|
|
46
|
-
{ label: 'Terça', value: 'Tuesday' },
|
|
47
|
-
{ label: 'Quarta', value: 'Wednesday' },
|
|
48
|
-
{ label: 'Quinta', value: 'Thursday' },
|
|
49
|
-
{ label: 'Sexta', value: 'Friday' },
|
|
50
|
-
{ label: 'Sábado', value: 'Saturday' }
|
|
51
|
-
];
|
|
52
|
-
this.zoomRpwServiceColumns = [
|
|
53
|
-
{ property: 'code', label: 'Servidor', type: 'string', width: '20%' },
|
|
54
|
-
{ property: 'name', label: 'Descrição', type: 'string', width: '80%' }
|
|
55
|
-
];
|
|
56
|
-
this.model = new ScheduleParameters();
|
|
57
|
-
this.model.executionType = 1;
|
|
58
|
-
this.model.repeatType = 1;
|
|
59
|
-
this.model.repeatExecution = false;
|
|
60
|
-
}
|
|
61
|
-
setScheduleParameters(schParam) {
|
|
62
|
-
if (!schParam) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
this.model = schParam;
|
|
66
|
-
}
|
|
67
|
-
fieldRpwServiceFormat(value) {
|
|
68
|
-
return `${value.code} - ${value.name}`;
|
|
69
|
-
}
|
|
70
|
-
isExecutionSchedule() {
|
|
71
|
-
return (this.model.executionType === 2);
|
|
72
|
-
}
|
|
73
|
-
isRepeatExecution() {
|
|
74
|
-
return this.model.repeatExecution;
|
|
75
|
-
}
|
|
76
|
-
isFrenquency() {
|
|
77
|
-
return (this.model.frequency === 'yes');
|
|
78
|
-
}
|
|
79
|
-
changeRepeatExecution() {
|
|
80
|
-
const date = new Date();
|
|
81
|
-
if (!this.model.execAppointHourInit) {
|
|
82
|
-
this.model.execAppointHourInit = `${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}`;
|
|
83
|
-
}
|
|
84
|
-
if (!this.model.execAppointHourFinal) {
|
|
85
|
-
this.model.execAppointHourFinal = `${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}`;
|
|
86
|
-
}
|
|
87
|
-
this.model.selectWeeklys = [];
|
|
88
|
-
this.model.dayOfMonth = 0;
|
|
89
|
-
this.model.frequency = 'no';
|
|
90
|
-
this.model.frequencyType = 'hour';
|
|
91
|
-
this.model.frequencyValue = 0;
|
|
92
|
-
}
|
|
93
|
-
changeExecutionType() {
|
|
94
|
-
const date = new Date();
|
|
95
|
-
this.model.execAppointDate = date;
|
|
96
|
-
this.model.execAppointHour = `${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}`;
|
|
97
|
-
}
|
|
98
|
-
changeTypeFrequency() {
|
|
99
|
-
}
|
|
100
|
-
getActiveTab(codTab) {
|
|
101
|
-
return (this.model.repeatType === codTab);
|
|
102
|
-
}
|
|
103
|
-
setActiveTab(codTab) {
|
|
104
|
-
this.model.repeatType = codTab;
|
|
105
|
-
}
|
|
106
|
-
addZero(num) {
|
|
107
|
-
let str = `${num}`;
|
|
108
|
-
if (num < 10) {
|
|
109
|
-
str = `0${num}`;
|
|
110
|
-
}
|
|
111
|
-
return str;
|
|
112
|
-
}
|
|
113
|
-
executeSchedule() {
|
|
114
|
-
if (this.disabledParams) {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
if (!this.validate()) {
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
this.jsonObject = {};
|
|
121
|
-
this.jsonObject.status = 'active';
|
|
122
|
-
this.jsonObject.processID = this.programName;
|
|
123
|
-
this.jsonObject.recurrent = this.model.repeatExecution;
|
|
124
|
-
this.jsonObject.executionParameter = {};
|
|
125
|
-
if (this.model.executionType === 1) {
|
|
126
|
-
const date = new Date();
|
|
127
|
-
this.jsonObject.firstExecution = `${date.getFullYear()}-${(date.getMonth() + 1)}-${date.getDate()}T${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}:00.000Z`;
|
|
128
|
-
}
|
|
129
|
-
if (this.model.executionType === 2) {
|
|
130
|
-
this.jsonObject.firstExecution = `${this.model.execAppointDate}T${this.model.execAppointHour}:00.000Z`;
|
|
131
|
-
}
|
|
132
|
-
this.jsonObject.executionParameter.parametros = [];
|
|
133
|
-
this.jsonObject.executionParameter.parametros[0] = { chave: 'rpwServer', valor: this.model.executionServer };
|
|
134
|
-
this.jsonObject.executionParameter.parametros[1] = { chave: 'RPW_PROGRAM', valor: this.externalName };
|
|
135
|
-
this.jsonObject.executionParameter.parametros[2] = { chave: 'RPW_PRG_EMS5', valor: this.programEMS5 ? 'yes' : 'no' };
|
|
136
|
-
this.jsonObject.executionParameter.parametros[3] = { chave: 'RPW_PRG_VERS', valor: this.programVersion };
|
|
137
|
-
this.jsonObject.executionParameter.parametros[4] = {};
|
|
138
|
-
this.jsonObject.executionParameter.parametros[4].parametros_negocio = this.parameters;
|
|
139
|
-
// Executa hoje ou agendada
|
|
140
|
-
this.rpwService.createExecution(this.jsonObject, this.loading).subscribe(() => {
|
|
141
|
-
this.poNotification.success('Agendamento realizado com sucesso !');
|
|
142
|
-
});
|
|
143
|
-
if (this.model.repeatExecution) {
|
|
144
|
-
if (this.model.repeatType === 1) {
|
|
145
|
-
this.jsonObject.daily = {
|
|
146
|
-
hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),
|
|
147
|
-
minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm')
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
if (this.model.repeatType === 2) {
|
|
151
|
-
this.jsonObject.weekly = {
|
|
152
|
-
hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),
|
|
153
|
-
minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm'),
|
|
154
|
-
daysOfWeek: this.model.selectWeeklys
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
if (this.model.repeatType === 3) {
|
|
158
|
-
this.jsonObject.monthly = {
|
|
159
|
-
hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),
|
|
160
|
-
minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm'),
|
|
161
|
-
day: this.model.dayOfMonth
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
if (this.isFrenquency()) {
|
|
165
|
-
this.jsonObject.rangeExecutions = {
|
|
166
|
-
frequency: {
|
|
167
|
-
type: this.model.frequencyType,
|
|
168
|
-
value: this.model.frequencyValue
|
|
169
|
-
},
|
|
170
|
-
rangeLimit: {
|
|
171
|
-
hour: this.getHourOrMinute(this.model.execAppointHourFinal, 'h'),
|
|
172
|
-
minute: this.getHourOrMinute(this.model.execAppointHourFinal, 'm')
|
|
173
|
-
}
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
// Executa a diária, semanal ou mensal
|
|
177
|
-
this.rpwService.createExecution(this.jsonObject, this.loading).subscribe(() => {
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
this.endExecution.emit(this.model);
|
|
181
|
-
}
|
|
182
|
-
getHourOrMinute(value, type) {
|
|
183
|
-
if (type === 'h') {
|
|
184
|
-
return +value.substring(0, 2);
|
|
185
|
-
}
|
|
186
|
-
if (type === 'm') {
|
|
187
|
-
return +value.substring(3, 6);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
compareHour(hourInit, hourFinal) {
|
|
191
|
-
if (hourInit === hourFinal) {
|
|
192
|
-
return false;
|
|
193
|
-
}
|
|
194
|
-
if (this.getHourOrMinute(hourInit, 'h') < this.getHourOrMinute(hourFinal, 'h')) {
|
|
195
|
-
return true;
|
|
196
|
-
}
|
|
197
|
-
if (this.getHourOrMinute(hourInit, 'm') > this.getHourOrMinute(hourFinal, 'm')) {
|
|
198
|
-
return false;
|
|
199
|
-
}
|
|
200
|
-
return true;
|
|
201
|
-
}
|
|
202
|
-
validate() {
|
|
203
|
-
if (!this.scheduleExecutionForm.valid) {
|
|
204
|
-
this.poNotification.error('Verifique as inconsistências em tela.');
|
|
205
|
-
return false;
|
|
206
|
-
}
|
|
207
|
-
if (!this.model.executionServer) {
|
|
208
|
-
this.poNotification.error('Servidor de Execução não foi informado.');
|
|
209
|
-
return false;
|
|
210
|
-
}
|
|
211
|
-
if (this.isExecutionSchedule() && (!this.model.execAppointDate || !this.model.execAppointHour)) {
|
|
212
|
-
this.poNotification.error('Informar a data e a hora para agendamento da execução.');
|
|
213
|
-
return false;
|
|
214
|
-
}
|
|
215
|
-
if (this.model.repeatExecution) {
|
|
216
|
-
if (!this.model.execAppointHourInit) {
|
|
217
|
-
this.poNotification.error('Informar a hora de início para a execução.');
|
|
218
|
-
return false;
|
|
219
|
-
}
|
|
220
|
-
if (this.model.repeatType === 2 && (this.model.selectWeeklys.length === 0)) {
|
|
221
|
-
this.poNotification.error('Informar os dias da semana para a execução.');
|
|
222
|
-
return false;
|
|
223
|
-
}
|
|
224
|
-
if (this.model.repeatType === 3 && (!this.model.dayOfMonth)) {
|
|
225
|
-
this.poNotification.error('Informar o dia para a execução.');
|
|
226
|
-
return false;
|
|
227
|
-
}
|
|
228
|
-
if (this.isFrenquency()) {
|
|
229
|
-
if (!this.compareHour(this.model.execAppointHourInit, this.model.execAppointHourFinal)) {
|
|
230
|
-
this.poNotification.error('Hora Fim deve ser maior que Hora Início.');
|
|
231
|
-
return false;
|
|
232
|
-
}
|
|
233
|
-
if (this.model.frequencyValue === 0) {
|
|
234
|
-
this.poNotification.error('Informar a frequência de execução (A cada hora/minuto).');
|
|
235
|
-
return false;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
return true;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
TotvsScheduleExecutionComponent.decorators = [
|
|
243
|
-
{ type: Component, args: [{
|
|
244
|
-
selector: 'app-totvs-schedule-execution',
|
|
245
|
-
template: "<form #scheduleExecutionForm=\"ngForm\">\r\n <div class=\"po-row po-sm-12 po-md-12 po-lg-12 po-xl-12\">\r\n <po-radio-group \r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"executionType\"\r\n p-label=\"Data de Execu\u00E7\u00E3o\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.executionType\"\r\n [p-options]=\"executionTypeOptions\"\r\n (p-change)=\"changeExecutionType()\">\r\n </po-radio-group>\r\n\r\n <po-datepicker *ngIf=isExecutionSchedule()\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"model.execAppointDate\"\r\n p-label=\"Agendar para\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointDate\">\r\n </po-datepicker>\r\n\r\n <po-input *ngIf=isExecutionSchedule()\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHour\"\r\n p-label=\"Hora\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHour\">\r\n </po-input>\r\n </div>\r\n\r\n <div class=\"po-row po-sm-12 po-md-12 po-lg-12 po-xl-12\">\r\n <po-lookup\r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"executionServer\"\r\n p-label=\"Servidor de Execu\u00E7\u00E3o\"\r\n p-placeholder=\"Servidor de Execu\u00E7\u00E3o\"\r\n [p-columns]=\"zoomRpwServiceColumns\"\r\n [p-field-format]=\"fieldRpwServiceFormat\"\r\n [p-filter-service]=\"rpwService\"\r\n p-field-label=\"name\"\r\n p-field-value=\"code\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.executionServer\">\r\n </po-lookup>\r\n </div>\r\n\r\n <div class=\"po-row po-sm-12 po-md-12 po-lg-12 po-xl-12\">\r\n <po-switch\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"repeatExecution\"\r\n p-label=\"Repetir ocorr\u00EAncia ?\"\r\n p-label-off=\"N\u00E3o\"\r\n p-label-on=\"Sim\"\r\n [(ngModel)]=\"model.repeatExecution\"\r\n [p-disabled]=\"disabledParams\"\r\n (click)=\"changeRepeatExecution()\">\r\n </po-switch>\r\n </div>\r\n\r\n <div class=\"po-row\" *ngIf=\"isRepeatExecution()\">\r\n \r\n <po-tabs>\r\n\r\n <po-tab \r\n p-label=\"Di\u00E1ria\" \r\n [p-active]=\"getActiveTab(1)\" \r\n (p-click)=\"setActiveTab(1)\">\r\n\r\n <div class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\">\r\n <po-radio-group \r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"frequencyDaily\"\r\n p-label=\"Frequ\u00EAncia\"\r\n p-columns=1\r\n [(ngModel)]=\"model.frequency\"\r\n [p-disabled]=\"disabledParams\"\r\n [p-options]=\"frequencyOptions\"\r\n (p-change)=\"changeTypeFrequency()\">\r\n </po-radio-group>\r\n </div>\r\n \r\n <div class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"> \r\n <po-input\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourInitDaily\"\r\n p-label=\"Hora In\u00EDcio\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourInit\">\r\n </po-input>\r\n \r\n <po-input *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourFinalDaily\"\r\n p-label=\"Hora Fim\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourFinal\">\r\n </po-input>\r\n \r\n <po-number *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-5 po-md-5 po-lg-5 po-xl-5\"\r\n name=\"frequencyValueDaily\"\r\n p-label=\"A cada\"\r\n p-minlength=\"1\"\r\n p-maxlength=\"3\"\r\n p-min=\"0\"\r\n p-max=\"999\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyValue\">\r\n </po-number>\r\n \r\n <po-select *ngIf=\"isFrenquency()\"\r\n class=\"po-mt-3 po-sm-7 po-md-7 po-lg-7 po-xl-7\"\r\n name=\"frequencyTypeDaily\"\r\n p-label=\"\"\r\n [p-options]=\"frequencyTypeOptions\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyType\">\r\n </po-select>\r\n </div>\r\n </po-tab>\r\n\r\n <po-tab \r\n p-label=\"Semanal\"\r\n [p-active]=\"getActiveTab(2)\"\r\n (p-click)=\"setActiveTab(2)\">\r\n\r\n <div class=\"po-row po-sm-12 po-md-12 po-lg-12 po-xl-12\">\r\n <po-multiselect\r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"selectWeeklys\"\r\n p-label=\"Dias da Semana\"\r\n p-placeholder=\"Escolha os dias da semana\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.selectWeeklys\"\r\n [p-options]=\"weeklyOptions\">\r\n </po-multiselect>\r\n </div>\r\n\r\n <div class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\">\r\n <po-radio-group \r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"frequencyWeekly\"\r\n p-label=\"Frequ\u00EAncia\"\r\n p-columns=1\r\n [(ngModel)]=\"model.frequency\"\r\n [p-disabled]=\"disabledParams\"\r\n [p-options]=\"frequencyOptions\"\r\n (p-change)=\"changeTypeFrequency()\">\r\n </po-radio-group>\r\n </div>\r\n\r\n <div class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\">\r\n <po-input\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourInitWeekly\"\r\n p-label=\"Hora In\u00EDcio\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourInit\">\r\n </po-input>\r\n\r\n <po-input *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourFinalWeekly\"\r\n p-label=\"Hora Fim\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourFinal\">\r\n </po-input>\r\n\r\n <po-number *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-5 po-md-5 po-lg-5 po-xl-5\"\r\n name=\"frequencyValueWeekly\"\r\n p-label=\"A cada\"\r\n p-minlength=\"1\"\r\n p-maxlength=\"3\"\r\n p-min=\"0\"\r\n p-max=\"999\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyValue\">\r\n </po-number>\r\n\r\n <po-select *ngIf=\"isFrenquency()\"\r\n class=\"po-mt-3 po-sm-7 po-md-7 po-lg-7 po-xl-7\"\r\n name=\"frequencyTypeWeekly\"\r\n p-label=\"\"\r\n [p-options]=\"frequencyTypeOptions\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyType\">\r\n </po-select>\r\n </div>\r\n </po-tab>\r\n\r\n <po-tab \r\n p-label=\"Mensal\" \r\n [p-active]=\"getActiveTab(3)\" \r\n (p-click)=\"setActiveTab(3)\">\r\n\r\n <div class=\"po-row po-sm-12 po-md-12 po-lg-12 po-xl-12\">\r\n <po-number\r\n class=\"po-sm-3 po-md-3 po-lg-3 po-xl-3\"\r\n name=\"dayOfMonth\"\r\n p-label=\"Dia do m\u00EAs\"\r\n p-minlength=\"1\"\r\n p-maxlength=\"2\"\r\n p-min=\"0\"\r\n p-max=\"31\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.dayOfMonth\">\r\n </po-number>\r\n </div>\r\n\r\n <div class=\"po-row po-sm-6 po-md-6 po-lg-6 po-xl-6\">\r\n <po-radio-group \r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"frequencyMonthly\"\r\n p-label=\"Frequ\u00EAncia\"\r\n p-columns=1\r\n [(ngModel)]=\"model.frequency\"\r\n [p-disabled]=\"disabledParams\"\r\n [p-options]=\"frequencyOptions\"\r\n (p-change)=\"changeTypeFrequency()\">\r\n </po-radio-group>\r\n </div>\r\n\r\n <div class=\"po-row po-sm-6 po-md-6 po-lg-6 po-xl-6\">\r\n <po-input\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourInitMonthly\"\r\n p-label=\"Hora In\u00EDcio\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourInit\">\r\n </po-input>\r\n\r\n <po-input *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourFinalWeekly\"\r\n p-label=\"Hora Fim\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourFinal\">\r\n </po-input>\r\n\r\n <po-number *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-5 po-md-5 po-lg-5 po-xl-5\"\r\n name=\"frequencyValueWeekly\"\r\n p-label=\"A cada\"\r\n p-minlength=\"1\"\r\n p-maxlength=\"3\"\r\n p-min=\"0\"\r\n p-max=\"999\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyValue\">\r\n </po-number>\r\n\r\n <po-select *ngIf=\"isFrenquency()\"\r\n class=\"po-mt-3 po-sm-7 po-md-7 po-lg-7 po-xl-7\"\r\n name=\"frequencyTypeWeekly\"\r\n p-label=\"\"\r\n [p-options]=\"frequencyTypeOptions\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyType\">\r\n </po-select>\r\n </div>\r\n </po-tab>\r\n </po-tabs>\r\n </div>\r\n\r\n <div class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\" style=\"padding-top: 15px;\">\r\n <po-button\r\n style=\"float: right;\"\r\n p-label=\"Gerar Agendamento RPW\"\r\n [p-disabled]=\"disabledParams\"\r\n (click)=\"executeSchedule()\">\r\n </po-button>\r\n </div>\r\n</form>\r\n",
|
|
246
|
-
styles: [""]
|
|
247
|
-
},] }
|
|
248
|
-
];
|
|
249
|
-
/** @nocollapse */
|
|
250
|
-
TotvsScheduleExecutionComponent.ctorParameters = () => [
|
|
251
|
-
{ type: PoI18nService },
|
|
252
|
-
{ type: TotvsScheduleExecutionService },
|
|
253
|
-
{ type: PoNotificationService }
|
|
254
|
-
];
|
|
255
|
-
TotvsScheduleExecutionComponent.propDecorators = {
|
|
256
|
-
scheduleExecutionForm: [{ type: ViewChild, args: ['scheduleExecutionForm', { static: true },] }],
|
|
257
|
-
programName: [{ type: Input }],
|
|
258
|
-
externalName: [{ type: Input }],
|
|
259
|
-
programEMS5: [{ type: Input }],
|
|
260
|
-
programVersion: [{ type: Input }],
|
|
261
|
-
parameters: [{ type: Input }],
|
|
262
|
-
disabledParams: [{ type: Input }],
|
|
263
|
-
loading: [{ type: Input }],
|
|
264
|
-
endExecution: [{ type: Output }]
|
|
265
|
-
};
|
|
266
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2R0cy1iYWNrb2ZmaWNlLXV0aWwvc3JjL2xpYi9jb21wb25lbnRzL3RvdHZzLXNjaGVkdWxlLWV4ZWN1dGlvbi90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBc0IsYUFBYSxFQUFFLHFCQUFxQixFQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBQ2hILE9BQU8sRUFBdUIsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFRbkYsTUFBTSxPQUFPLCtCQUErQjtJQVl4QyxZQUNXLGFBQTRCLEVBQzVCLFVBQXlDLEVBQ3pDLGNBQXFDO1FBRnJDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGVBQVUsR0FBVixVQUFVLENBQStCO1FBQ3pDLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQVZ2QyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUVwQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2YsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBY3BDLGVBQVUsR0FBUSxFQUFFLENBQUM7UUFFN0IsYUFBUSxHQUFRLEVBQUUsQ0FBQztJQVZuQixDQUFDO0lBWUQsUUFBUTtRQUNKOzs7Ozs7O2VBT087UUFFUCxJQUFJ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QUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO29CQUN0RSxPQUFPLEtBQUssQ0FBQztpQkFDaEI7Z0JBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsS0FBSyxDQUFDLEVBQUU7b0JBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7b0JBQ3JGLE9BQU8sS0FBSyxDQUFDO2lCQUNoQjthQUNKO1NBQ0o7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzs7WUFyUkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSw4QkFBOEI7Z0JBQ3hDLDJ3YkFBd0Q7O2FBRTNEOzs7O1lBVDRCLGFBQWE7WUFHakMsNkJBQTZCO1lBSE0scUJBQXFCOzs7b0NBWTVELFNBQVMsU0FBQyx1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7MEJBRW5ELEtBQUs7MkJBQ0wsS0FBSzswQkFDTCxLQUFLOzZCQUNMLEtBQUs7eUJBQ0wsS0FBSzs2QkFDTCxLQUFLO3NCQUNMLEtBQUs7MkJBQ0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQb1JhZGlvR3JvdXBPcHRpb24sIFBvSTE4blNlcnZpY2UsIFBvTm90aWZpY2F0aW9uU2VydmljZSwgUG9Mb29rdXBDb2x1bW4gfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IElTY2hlZHVsZVBhcmFtZXRlcnMsIFNjaGVkdWxlUGFyYW1ldGVycyB9IGZyb20gJy4vdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUb3R2c1NjaGVkdWxlRXhlY3V0aW9uU2VydmljZSB9IGZyb20gJy4vdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC10b3R2cy1zY2hlZHVsZS1leGVjdXRpb24nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RvdHZzLXNjaGVkdWxlLWV4ZWN1dGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24uY29tcG9uZW50LmNzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgVG90dnNTY2hlZHVsZUV4ZWN1dGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKCdzY2hlZHVsZUV4ZWN1dGlvbkZvcm0nLCB7IHN0YXRpYzogdHJ1ZSB9KSBzY2hlZHVsZUV4ZWN1dGlvbkZvcm06IE5nRm9ybTtcclxuXHJcbiAgICBASW5wdXQoKSBwcm9ncmFtTmFtZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZXh0ZXJuYWxOYW1lOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBwcm9ncmFtRU1TNSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgcHJvZ3JhbVZlcnNpb24gPSAnJztcclxuICAgIEBJbnB1dCgpIHBhcmFtZXRlcnM6IFtdO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWRQYXJhbXMgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcclxuICAgIEBPdXRwdXQoKSBlbmRFeGVjdXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIHBvSTE4blNlcnZpY2U6IFBvSTE4blNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIHJwd1NlcnZpY2U6IFRvdHZzU2NoZWR1bGVFeGVjdXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBwb05vdGlmaWNhdGlvbjogUG9Ob3RpZmljYXRpb25TZXJ2aWNlKSB7XHJcbiAgICB9XHJcblxyXG4gICAgZXhlY3V0aW9uVHlwZU9wdGlvbnM6IEFycmF5PFBvUmFkaW9Hcm91cE9wdGlvbj47XHJcbiAgICBmcmVxdWVuY3lPcHRpb25zOiBBcnJheTxQb1JhZGlvR3JvdXBPcHRpb24+O1xyXG4gICAgZnJlcXVlbmN5VHlwZU9wdGlvbnM6IEFycmF5PFBvUmFkaW9Hcm91cE9wdGlvbj47XHJcbiAgICB3ZWVrbHlPcHRpb25zOiBBcnJheTxQb1JhZGlvR3JvdXBPcHRpb24+O1xyXG4gICAgem9vbVJwd1NlcnZpY2VDb2x1bW5zOiBBcnJheTxQb0xvb2t1cENvbHVtbj47XHJcbiAgICBtb2RlbDogU2NoZWR1bGVQYXJhbWV0ZXJzO1xyXG4gICAgcHJpdmF0ZSBqc29uT2JqZWN0OiBhbnkgPSB7fTtcclxuXHJcbiAgICBsaXRlcmFsczogYW55ID0ge307XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgLyogVkVSSUZJQ0FSIENPTU8gRklDQVLDgSBBIFRSQURVw4fDg09cclxuICAgICAgICBmb3JrSm9pbihcclxuICAgICAgICAgICAgICB0aGlzLnBvSTE4blNlcnZpY2UuZ2V0TGl0ZXJhbHMoKSxcclxuICAgICAgICAgICAgICB0aGlzLnBvSTE4blNlcnZpY2UuZ2V0TGl0ZXJhbHMoeyBjb250ZXh0OiAnZ2VuZXJhbFJwdycgfSlcclxuICAgICAgICAgICkuc3Vic2NyaWJlKGxpdGVyYWxzID0+IHtcclxuICAgICAgICAgICAgICBsaXRlcmFscy5tYXAoaXRlbSA9PiBPYmplY3QuYXNzaWduKHRoaXMubGl0ZXJhbHMsIGl0ZW0pICk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXR1cENvbXBvbmVudHMoKTtcclxuICAgICAgICAgIH0pOyovXHJcblxyXG4gICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnRzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dXBDb21wb25lbnRzKCkge1xyXG4gICAgICAgIHRoaXMuZXhlY3V0aW9uVHlwZU9wdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdFeGVjdXRhciBIb2plJywgdmFsdWU6IDEgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogJ0FnZW5kYXIgRXhlY3XDp8OjbycsIHZhbHVlOiAyIH1cclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeU9wdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdVbWEgdmV6IG5vIGRpYScsIHZhbHVlOiAnbm8nIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdWw6FyaWFzIHZlemVzIG5vIGRpYScsIHZhbHVlOiAneWVzJyB9XHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUeXBlT3B0aW9ucyA9IFtcclxuICAgICAgICAgICAgeyBsYWJlbDogJ0hvcmEocyknLCB2YWx1ZTogJ2hvdXInIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdNaW51dG8ocyknLCB2YWx1ZTogJ21pbnV0ZScgfVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHRoaXMud2Vla2x5T3B0aW9ucyA9IFtcclxuICAgICAgICAgICAgeyBsYWJlbDogJ0RvbWluZ28nLCB2YWx1ZTogJ1N1bmRheScgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogJ1NlZ3VuZGEnLCB2YWx1ZTogJ01vbmRheScgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogJ1RlcsOnYScsIHZhbHVlOiAnVHVlc2RheScgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogJ1F1YXJ0YScsIHZhbHVlOiAnV2VkbmVzZGF5JyB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiAnUXVpbnRhJywgdmFsdWU6ICdUaHVyc2RheScgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogJ1NleHRhJywgdmFsdWU6ICdGcmlkYXknIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdTw6FiYWRvJywgdmFsdWU6ICdTYXR1cmRheScgfVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHRoaXMuem9vbVJwd1NlcnZpY2VDb2x1bW5zID0gW1xyXG4gICAgICAgICAgICB7IHByb3BlcnR5OiAnY29kZScsIGxhYmVsOiAnU2Vydmlkb3InLCB0eXBlOiAnc3RyaW5nJywgd2lkdGg6ICcyMCUnIH0sXHJcbiAgICAgICAgICAgIHsgcHJvcGVydHk6ICduYW1lJywgbGFiZWw6ICdEZXNjcmnDp8OjbycsIHR5cGU6ICdzdHJpbmcnLCB3aWR0aDogJzgwJScgfVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHRoaXMubW9kZWwgPSBuZXcgU2NoZWR1bGVQYXJhbWV0ZXJzKCk7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5leGVjdXRpb25UeXBlID0gMTtcclxuICAgICAgICB0aGlzLm1vZGVsLnJlcGVhdFR5cGUgPSAxO1xyXG4gICAgICAgIHRoaXMubW9kZWwucmVwZWF0RXhlY3V0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldFNjaGVkdWxlUGFyYW1ldGVycyhzY2hQYXJhbTogSVNjaGVkdWxlUGFyYW1ldGVycykge1xyXG4gICAgICAgIGlmICghc2NoUGFyYW0pIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IHNjaFBhcmFtO1xyXG4gICAgfVxyXG5cclxuICAgIGZpZWxkUnB3U2VydmljZUZvcm1hdCh2YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiBgJHt2YWx1ZS5jb2RlfSAtICR7dmFsdWUubmFtZX1gO1xyXG4gICAgfVxyXG5cclxuICAgIGlzRXhlY3V0aW9uU2NoZWR1bGUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLm1vZGVsLmV4ZWN1dGlvblR5cGUgPT09IDIpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzUmVwZWF0RXhlY3V0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsLnJlcGVhdEV4ZWN1dGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBpc0ZyZW5xdWVuY3koKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLm1vZGVsLmZyZXF1ZW5jeSA9PT0gJ3llcycpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZVJlcGVhdEV4ZWN1dGlvbigpIHtcclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQpIHsgdGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJJbml0ID0gYCR7dGhpcy5hZGRaZXJvKGRhdGUuZ2V0SG91cnMoKSl9OiR7dGhpcy5hZGRaZXJvKGRhdGUuZ2V0TWludXRlcygpKX1gOyB9XHJcbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckZpbmFsKSB7IHRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VyRmluYWwgPSBgJHt0aGlzLmFkZFplcm8oZGF0ZS5nZXRIb3VycygpKX06JHt0aGlzLmFkZFplcm8oZGF0ZS5nZXRNaW51dGVzKCkpfWA7IH1cclxuICAgICAgICB0aGlzLm1vZGVsLnNlbGVjdFdlZWtseXMgPSBbXTtcclxuICAgICAgICB0aGlzLm1vZGVsLmRheU9mTW9udGggPSAwO1xyXG4gICAgICAgIHRoaXMubW9kZWwuZnJlcXVlbmN5ID0gJ25vJztcclxuICAgICAgICB0aGlzLm1vZGVsLmZyZXF1ZW5jeVR5cGUgPSAnaG91cic7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5mcmVxdWVuY3lWYWx1ZSA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlRXhlY3V0aW9uVHlwZSgpIHtcclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5tb2RlbC5leGVjQXBwb2ludERhdGUgPSBkYXRlO1xyXG4gICAgICAgIHRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VyID0gYCR7dGhpcy5hZGRaZXJvKGRhdGUuZ2V0SG91cnMoKSl9OiR7dGhpcy5hZGRaZXJvKGRhdGUuZ2V0TWludXRlcygpKX1gO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZVR5cGVGcmVxdWVuY3koKSB7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWN0aXZlVGFiKGNvZFRhYjogbnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLm1vZGVsLnJlcGVhdFR5cGUgPT09IGNvZFRhYik7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QWN0aXZlVGFiKGNvZFRhYjogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5yZXBlYXRUeXBlID0gY29kVGFiO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFplcm8obnVtOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBzdHIgPSBgJHtudW19YDtcclxuICAgICAgICBpZiAobnVtIDwgMTApIHsgc3RyID0gYDAke251bX1gOyB9XHJcbiAgICAgICAgcmV0dXJuIHN0cjtcclxuICAgIH1cclxuXHJcbiAgICBleGVjdXRlU2NoZWR1bGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWRQYXJhbXMpIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlKCkpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgICAgIHRoaXMuanNvbk9iamVjdCA9IHt9O1xyXG4gICAgICAgIHRoaXMuanNvbk9iamVjdC5zdGF0dXMgPSAnYWN0aXZlJztcclxuICAgICAgICB0aGlzLmpzb25PYmplY3QucHJvY2Vzc0lEID0gdGhpcy5wcm9ncmFtTmFtZTtcclxuICAgICAgICB0aGlzLmpzb25PYmplY3QucmVjdXJyZW50ID0gdGhpcy5tb2RlbC5yZXBlYXRFeGVjdXRpb247XHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LmV4ZWN1dGlvblBhcmFtZXRlciA9IHt9O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5leGVjdXRpb25UeXBlID09PSAxKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmpzb25PYmplY3QuZmlyc3RFeGVjdXRpb24gPSBgJHtkYXRlLmdldEZ1bGxZZWFyKCl9LSR7KGRhdGUuZ2V0TW9udGgoKSArIDEpfS0ke2RhdGUuZ2V0RGF0ZSgpfVQke3RoaXMuYWRkWmVybyhkYXRlLmdldEhvdXJzKCkpfToke3RoaXMuYWRkWmVybyhkYXRlLmdldE1pbnV0ZXMoKSl9OjAwLjAwMFpgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5leGVjdXRpb25UeXBlID09PSAyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuanNvbk9iamVjdC5maXJzdEV4ZWN1dGlvbiA9IGAke3RoaXMubW9kZWwuZXhlY0FwcG9pbnREYXRlfVQke3RoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VyfTowMC4wMDBaYDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuanNvbk9iamVjdC5leGVjdXRpb25QYXJhbWV0ZXIucGFyYW1ldHJvcyA9IFtdO1xyXG4gICAgICAgIHRoaXMuanNvbk9iamVjdC5leGVjdXRpb25QYXJhbWV0ZXIucGFyYW1ldHJvc1swXSA9IHsgY2hhdmU6ICdycHdTZXJ2ZXInLCB2YWxvcjogdGhpcy5tb2RlbC5leGVjdXRpb25TZXJ2ZXIgfTtcclxuICAgICAgICB0aGlzLmpzb25PYmplY3QuZXhlY3V0aW9uUGFyYW1ldGVyLnBhcmFtZXRyb3NbMV0gPSB7IGNoYXZlOiAnUlBXX1BST0dSQU0nLCB2YWxvcjogdGhpcy5leHRlcm5hbE5hbWUgfTtcclxuICAgICAgICB0aGlzLmpzb25PYmplY3QuZXhlY3V0aW9uUGFyYW1ldGVyLnBhcmFtZXRyb3NbMl0gPSB7IGNoYXZlOiAnUlBXX1BSR19FTVM1JywgdmFsb3I6IHRoaXMucHJvZ3JhbUVNUzUgPyAneWVzJyA6ICdubycgfTtcclxuICAgICAgICB0aGlzLmpzb25PYmplY3QuZXhlY3V0aW9uUGFyYW1ldGVyLnBhcmFtZXRyb3NbM10gPSB7IGNoYXZlOiAnUlBXX1BSR19WRVJTJywgdmFsb3I6IHRoaXMucHJvZ3JhbVZlcnNpb24gfTtcclxuXHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LmV4ZWN1dGlvblBhcmFtZXRlci5wYXJhbWV0cm9zWzRdID0ge307XHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LmV4ZWN1dGlvblBhcmFtZXRlci5wYXJhbWV0cm9zWzRdLnBhcmFtZXRyb3NfbmVnb2NpbyA9IHRoaXMucGFyYW1ldGVycztcclxuXHJcbiAgICAgICAgLy8gRXhlY3V0YSBob2plIG91IGFnZW5kYWRhXHJcbiAgICAgICAgdGhpcy5ycHdTZXJ2aWNlLmNyZWF0ZUV4ZWN1dGlvbih0aGlzLmpzb25PYmplY3QsIHRoaXMubG9hZGluZykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5zdWNjZXNzKCdBZ2VuZGFtZW50byByZWFsaXphZG8gY29tIHN1Y2Vzc28gIScpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5yZXBlYXRFeGVjdXRpb24pIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWwucmVwZWF0VHlwZSA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5qc29uT2JqZWN0LmRhaWx5ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvdXI6IHRoaXMuZ2V0SG91ck9yTWludXRlKHRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VySW5pdCwgJ2gnKSxcclxuICAgICAgICAgICAgICAgICAgICBtaW51dGU6IHRoaXMuZ2V0SG91ck9yTWludXRlKHRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VySW5pdCwgJ20nKVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWwucmVwZWF0VHlwZSA9PT0gMikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5qc29uT2JqZWN0LndlZWtseSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBob3VyOiB0aGlzLmdldEhvdXJPck1pbnV0ZSh0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQsICdoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgbWludXRlOiB0aGlzLmdldEhvdXJPck1pbnV0ZSh0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQsICdtJyksXHJcbiAgICAgICAgICAgICAgICAgICAgZGF5c09mV2VlazogdGhpcy5tb2RlbC5zZWxlY3RXZWVrbHlzXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbC5yZXBlYXRUeXBlID09PSAzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmpzb25PYmplY3QubW9udGhseSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBob3VyOiB0aGlzLmdldEhvdXJPck1pbnV0ZSh0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQsICdoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgbWludXRlOiB0aGlzLmdldEhvdXJPck1pbnV0ZSh0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQsICdtJyksXHJcbiAgICAgICAgICAgICAgICAgICAgZGF5OiB0aGlzLm1vZGVsLmRheU9mTW9udGhcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRnJlbnF1ZW5jeSgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmpzb25PYmplY3QucmFuZ2VFeGVjdXRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB0aGlzLm1vZGVsLmZyZXF1ZW5jeVR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLm1vZGVsLmZyZXF1ZW5jeVZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByYW5nZUxpbWl0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdXI6IHRoaXMuZ2V0SG91ck9yTWludXRlKHRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VyRmluYWwsICdoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5nZXRIb3VyT3JNaW51dGUodGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJGaW5hbCwgJ20nKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIEV4ZWN1dGEgYSBkacOhcmlhLCBzZW1hbmFsIG91IG1lbnNhbFxyXG4gICAgICAgICAgICB0aGlzLnJwd1NlcnZpY2UuY3JlYXRlRXhlY3V0aW9uKHRoaXMuanNvbk9iamVjdCwgdGhpcy5sb2FkaW5nKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZW5kRXhlY3V0aW9uLmVtaXQodGhpcy5tb2RlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SG91ck9yTWludXRlKHZhbHVlOiBzdHJpbmcsIHR5cGU6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKHR5cGUgPT09ICdoJykgeyByZXR1cm4gK3ZhbHVlLnN1YnN0cmluZygwLCAyKTsgfVxyXG4gICAgICAgIGlmICh0eXBlID09PSAnbScpIHsgcmV0dXJuICt2YWx1ZS5zdWJzdHJpbmcoMywgNik7IH1cclxuICAgIH1cclxuXHJcbiAgICBjb21wYXJlSG91cihob3VySW5pdDogc3RyaW5nLCBob3VyRmluYWw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChob3VySW5pdCA9PT0gaG91ckZpbmFsKSB7IHJldHVybiBmYWxzZTsgfVxyXG4gICAgICAgIGlmICh0aGlzLmdldEhvdXJPck1pbnV0ZShob3VySW5pdCwgJ2gnKSA8IHRoaXMuZ2V0SG91ck9yTWludXRlKGhvdXJGaW5hbCwgJ2gnKSkgeyByZXR1cm4gdHJ1ZTsgfVxyXG4gICAgICAgIGlmICh0aGlzLmdldEhvdXJPck1pbnV0ZShob3VySW5pdCwgJ20nKSA+IHRoaXMuZ2V0SG91ck9yTWludXRlKGhvdXJGaW5hbCwgJ20nKSkgeyByZXR1cm4gZmFsc2U7IH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB2YWxpZGF0ZSgpOiBib29sZWFuIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnNjaGVkdWxlRXhlY3V0aW9uRm9ybS52YWxpZCkge1xyXG4gICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKCdWZXJpZmlxdWUgYXMgaW5jb25zaXN0w6puY2lhcyBlbSB0ZWxhLicpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMubW9kZWwuZXhlY3V0aW9uU2VydmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uZXJyb3IoJ1NlcnZpZG9yIGRlIEV4ZWN1w6fDo28gbsOjbyBmb2kgaW5mb3JtYWRvLicpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5pc0V4ZWN1dGlvblNjaGVkdWxlKCkgJiYgKCF0aGlzLm1vZGVsLmV4ZWNBcHBvaW50RGF0ZSB8fCAhdGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uZXJyb3IoJ0luZm9ybWFyIGEgZGF0YSBlIGEgaG9yYSBwYXJhIGFnZW5kYW1lbnRvIGRhIGV4ZWN1w6fDo28uJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm1vZGVsLnJlcGVhdEV4ZWN1dGlvbikge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VySW5pdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5lcnJvcignSW5mb3JtYXIgYSBob3JhIGRlIGluw61jaW8gcGFyYSBhIGV4ZWN1w6fDo28uJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsLnJlcGVhdFR5cGUgPT09IDIgJiYgKHRoaXMubW9kZWwuc2VsZWN0V2Vla2x5cy5sZW5ndGggPT09IDApKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKCdJbmZvcm1hciBvcyBkaWFzIGRhIHNlbWFuYSBwYXJhIGEgZXhlY3XDp8Ojby4nKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWwucmVwZWF0VHlwZSA9PT0gMyAmJiAoIXRoaXMubW9kZWwuZGF5T2ZNb250aCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uZXJyb3IoJ0luZm9ybWFyIG8gZGlhIHBhcmEgYSBleGVjdcOnw6NvLicpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5pc0ZyZW5xdWVuY3koKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbXBhcmVIb3VyKHRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VySW5pdCwgdGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJGaW5hbCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKCdIb3JhIEZpbSBkZXZlIHNlciBtYWlvciBxdWUgSG9yYSBJbsOtY2lvLicpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlbC5mcmVxdWVuY3lWYWx1ZSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uZXJyb3IoJ0luZm9ybWFyIGEgZnJlcXXDqm5jaWEgZGUgZXhlY3XDp8OjbyAoQSBjYWRhIGhvcmEvbWludXRvKS4nKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
|
|
3
|
-
import { map } from 'rxjs/operators';
|
|
4
|
-
import { ExecutionStatus } from './totvs-schedule-execution.model';
|
|
5
|
-
export class TotvsScheduleExecutionService {
|
|
6
|
-
constructor(http) {
|
|
7
|
-
this.http = http;
|
|
8
|
-
this.headers = { headers: { 'X-PO-Screen-Lock': 'true' } };
|
|
9
|
-
this.urlCadServidor = '/dts/datasul-rest/resources/prg/btb/v1/servidoresExecucao';
|
|
10
|
-
this.urlJobScheduler = '/dts/datasul-rest/resources/prg/framework/v1/jobScheduler';
|
|
11
|
-
this.urlJobExecution = '/dts/datasul-rest/resources/prg/framework/v1/jobExecution';
|
|
12
|
-
}
|
|
13
|
-
getFilteredItems(params) {
|
|
14
|
-
const urlParams = new Array();
|
|
15
|
-
urlParams.push(`pageSize=${params.pageSize.toString()}`);
|
|
16
|
-
urlParams.push(`page=${params.page.toString()}`);
|
|
17
|
-
if (params.filter && params.filter.length > 0) {
|
|
18
|
-
urlParams.push(`quickSearch=${params.filter}`);
|
|
19
|
-
}
|
|
20
|
-
return this.http.get(`${this.urlCadServidor}?${urlParams.join('&')}`);
|
|
21
|
-
}
|
|
22
|
-
getObjectByValue(id) {
|
|
23
|
-
return this.http.get(`${this.urlCadServidor}/${id}`, this.headers);
|
|
24
|
-
}
|
|
25
|
-
createExecution(parameters, loading) {
|
|
26
|
-
const params = JSON.parse(JSON.stringify(parameters).replace(/\\\\/g, '*|'));
|
|
27
|
-
if (loading) {
|
|
28
|
-
return this.http.post(`${this.urlJobScheduler}`, params, this.headers);
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
return this.http.post(`${this.urlJobScheduler}`, params);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
createExecutionForNow(executionParams, loading) {
|
|
35
|
-
let jobScheduleParams;
|
|
36
|
-
const date = new Date();
|
|
37
|
-
const params = JSON.parse(JSON.stringify(executionParams).replace(/\\\\/g, '*|'));
|
|
38
|
-
if (!params.businessParams || params.businessParams.length === 0) {
|
|
39
|
-
params.businessParams = [{ chave: '', valor: '' }];
|
|
40
|
-
}
|
|
41
|
-
jobScheduleParams = {};
|
|
42
|
-
jobScheduleParams.status = 'active';
|
|
43
|
-
jobScheduleParams.processID = params.programName;
|
|
44
|
-
jobScheduleParams.firstExecution = `${date.getFullYear()}-${(date.getMonth() + 1)}-${date.getDate()}T${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}:00.000Z`;
|
|
45
|
-
jobScheduleParams.recurrent = false;
|
|
46
|
-
jobScheduleParams.executionParameter = {
|
|
47
|
-
parametros: [
|
|
48
|
-
{ chave: 'rpwServer', valor: params.executionServer },
|
|
49
|
-
{ chave: 'RPW_PROGRAM', valor: params.externalName },
|
|
50
|
-
{ chave: 'RPW_PRG_EMS5', valor: params.programEMS5 ? 'yes' : 'no' },
|
|
51
|
-
{ chave: 'RPW_PRG_VERS', valor: params.programVersion },
|
|
52
|
-
{ parametros_negocio: params.businessParams }
|
|
53
|
-
]
|
|
54
|
-
};
|
|
55
|
-
if (loading) {
|
|
56
|
-
return this.http.post(`${this.urlJobScheduler}`, jobScheduleParams, this.headers);
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
return this.http.post(`${this.urlJobScheduler}`, jobScheduleParams);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
getExecutionByJobScheduleID(jobScheduleID, loading = false) {
|
|
63
|
-
const url = `${this.urlJobExecution}?jobScheduleID=${jobScheduleID}`;
|
|
64
|
-
return this.getExecution(url, loading).pipe(map((response) => this.transformExecution('jobScheduleID', response)));
|
|
65
|
-
}
|
|
66
|
-
getExecutionByExecutionID(executionID, loading = false) {
|
|
67
|
-
const url = `${this.urlJobExecution}/${executionID}`;
|
|
68
|
-
return this.getExecution(url, loading).pipe(map((response) => this.transformExecution('executionID', response)));
|
|
69
|
-
}
|
|
70
|
-
getExecution(url, loading) {
|
|
71
|
-
if (loading) {
|
|
72
|
-
return this.http.get(url, this.headers);
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
return this.http.get(url);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
transformExecution(type, response) {
|
|
79
|
-
if (!response || !response.items || response.items.length === 0) {
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
response = response.items[0];
|
|
83
|
-
const execStatus = new ExecutionStatus();
|
|
84
|
-
execStatus.jobScheduleID = response.jobScheduleID;
|
|
85
|
-
execStatus.executionID = response.executionID;
|
|
86
|
-
execStatus.startedDate = response.startedDate;
|
|
87
|
-
execStatus.error = response.error;
|
|
88
|
-
execStatus.status = response.status;
|
|
89
|
-
return execStatus;
|
|
90
|
-
}
|
|
91
|
-
followUpExcByJobScheduleID(jobScheduleID, intervalNum, fncCallBack, loading = false) {
|
|
92
|
-
this.followUpExecution('jobScheduleID', jobScheduleID, intervalNum, fncCallBack, loading);
|
|
93
|
-
}
|
|
94
|
-
followUpExcByExecutionID(executionID, intervalNum, fncCallBack, loading = false) {
|
|
95
|
-
this.followUpExecution('executionID', executionID, intervalNum, fncCallBack, loading);
|
|
96
|
-
}
|
|
97
|
-
followUpExecution(type, execID, intervalNum, fncCallBack, loading) {
|
|
98
|
-
this.jobExecutionSubscription$ = null;
|
|
99
|
-
const intervalID = setInterval(() => {
|
|
100
|
-
const execStatus = new ExecutionStatus();
|
|
101
|
-
execStatus.jobScheduleID = (type === 'jobScheduleID') ? execID : '';
|
|
102
|
-
execStatus.executionID = (type === 'executionID') ? execID : '';
|
|
103
|
-
execStatus.startedDate = null;
|
|
104
|
-
execStatus.error = '';
|
|
105
|
-
execStatus.status = 'PENDING'; // PENDING, RUNNING, SUCCESS, FAILURE
|
|
106
|
-
if (this.jobExecutionSubscription$) {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
if (type === 'jobScheduleID') {
|
|
110
|
-
this.jobExecutionSubscription$ = this.getExecutionByJobScheduleID(execID, loading)
|
|
111
|
-
.subscribe((response) => {
|
|
112
|
-
this.followUpExecReturnOk(execID, execStatus, response, intervalID, fncCallBack);
|
|
113
|
-
}, (error) => {
|
|
114
|
-
this.followUpExecReturnError(error, execStatus, intervalID, fncCallBack);
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
if (type === 'executionID') {
|
|
118
|
-
this.jobExecutionSubscription$ = this.getExecutionByExecutionID(execID, loading)
|
|
119
|
-
.subscribe((response) => {
|
|
120
|
-
this.followUpExecReturnOk(execID, execStatus, response, intervalID, fncCallBack);
|
|
121
|
-
}, (error) => {
|
|
122
|
-
this.followUpExecReturnError(error, execStatus, intervalID, fncCallBack);
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
}, intervalNum);
|
|
126
|
-
}
|
|
127
|
-
followUpExecReturnOk(execID, execStatus, response, intervalID, fncCallBack) {
|
|
128
|
-
if (response) {
|
|
129
|
-
execStatus = response;
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
execStatus.error = `Agendamento não encontrado com ID: ${execID}`;
|
|
133
|
-
execStatus.status = 'FAILURE';
|
|
134
|
-
}
|
|
135
|
-
if (!fncCallBack(execStatus) ||
|
|
136
|
-
execStatus.status === 'SUCCESS' ||
|
|
137
|
-
execStatus.status === 'FAILURE') {
|
|
138
|
-
clearInterval(intervalID);
|
|
139
|
-
}
|
|
140
|
-
this.jobExecutionSubscription$ = null;
|
|
141
|
-
}
|
|
142
|
-
followUpExecReturnError(error, execStatus, intervalID, fncCallBack) {
|
|
143
|
-
let erroDesc = '';
|
|
144
|
-
if (error instanceof HttpErrorResponse) {
|
|
145
|
-
erroDesc = error.message;
|
|
146
|
-
if (error.error) {
|
|
147
|
-
erroDesc = '';
|
|
148
|
-
if (error.error.code) {
|
|
149
|
-
erroDesc = error.error.code;
|
|
150
|
-
}
|
|
151
|
-
if (error.error.message) {
|
|
152
|
-
erroDesc = `${erroDesc} - ${error.error.message}`;
|
|
153
|
-
}
|
|
154
|
-
if (error.error.detailedMessage) {
|
|
155
|
-
erroDesc = `${erroDesc} - ${error.error.detailedMessage}`;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
erroDesc = error;
|
|
161
|
-
}
|
|
162
|
-
execStatus.error = erroDesc;
|
|
163
|
-
execStatus.status = 'FAILURE';
|
|
164
|
-
fncCallBack(execStatus);
|
|
165
|
-
clearInterval(intervalID);
|
|
166
|
-
this.jobExecutionSubscription$ = null;
|
|
167
|
-
}
|
|
168
|
-
addZero(num) {
|
|
169
|
-
let str = `${num}`;
|
|
170
|
-
if (num < 10) {
|
|
171
|
-
str = `0${num}`;
|
|
172
|
-
}
|
|
173
|
-
return str;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
TotvsScheduleExecutionService.decorators = [
|
|
177
|
-
{ type: Injectable }
|
|
178
|
-
];
|
|
179
|
-
/** @nocollapse */
|
|
180
|
-
TotvsScheduleExecutionService.ctorParameters = () => [
|
|
181
|
-
{ type: HttpClient }
|
|
182
|
-
];
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kdHMtYmFja29mZmljZS11dGlsL3NyYy9saWIvY29tcG9uZW50cy90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24vdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFckUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxlQUFlLEVBQTBDLE1BQU0sa0NBQWtDLENBQUM7QUFHM0csTUFBTSxPQUFPLDZCQUE2QjtJQWF0QyxZQUFtQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBWDNCLFlBQU8sR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFFdEQsbUJBQWMsR0FBRywyREFBMkQsQ0FBQztRQUM3RSxvQkFBZSxHQUFHLDJEQUEyRCxDQUFDO1FBQzlFLG9CQUFlLEdBQUcsMkRBQTJELENBQUM7SUFPL0MsQ0FBQztJQUV4QyxnQkFBZ0IsQ0FBQyxNQUFtQztRQUNoRCxNQUFNLFNBQVMsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBRXRDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakQsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJ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SUFBSSxHQUFHLEVBQUUsQ0FBQztTQUFFO1FBQ2xDLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQzs7O1lBMU1KLFVBQVU7Ozs7WUFORixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUG9Mb29rdXBGaWx0ZXJlZEl0ZW1zUGFyYW1zIH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBFeGVjdXRpb25TdGF0dXMsIElFeGVjdXRpb25QYXJhbWV0ZXJzLCBJRXhlY3V0aW9uU3RhdHVzIH0gZnJvbSAnLi90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24ubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVG90dnNTY2hlZHVsZUV4ZWN1dGlvblNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgaGVhZGVycyA9IHsgaGVhZGVyczogeyAnWC1QTy1TY3JlZW4tTG9jayc6ICd0cnVlJyB9IH07XHJcblxyXG4gICAgcHJpdmF0ZSB1cmxDYWRTZXJ2aWRvciA9ICcvZHRzL2RhdGFzdWwtcmVzdC9yZXNvdXJjZXMvcHJnL2J0Yi92MS9zZXJ2aWRvcmVzRXhlY3VjYW8nO1xyXG4gICAgcHJpdmF0ZSB1cmxKb2JTY2hlZHVsZXIgPSAnL2R0cy9kYXRhc3VsLXJlc3QvcmVzb3VyY2VzL3ByZy9mcmFtZXdvcmsvdjEvam9iU2NoZWR1bGVyJztcclxuICAgIHByaXZhdGUgdXJsSm9iRXhlY3V0aW9uID0gJy9kdHMvZGF0YXN1bC1yZXN0L3Jlc291cmNlcy9wcmcvZnJhbWV3b3JrL3YxL2pvYkV4ZWN1dGlvbic7XHJcblxyXG4gICAgLy8gcHJpdmF0ZSB1cmxDYWRTZXJ2aWRvciA9ICcvZ2VuZXJpY3Nab29tJztcclxuICAgIC8vIHByaXZhdGUgdXJsSm9iU2NoZWR1bGVyID0gJy9qb2JTY2hlZHVsZXInO1xyXG5cclxuICAgIHByaXZhdGUgam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50KSB7IH1cclxuXHJcbiAgICBnZXRGaWx0ZXJlZEl0ZW1zKHBhcmFtczogUG9Mb29rdXBGaWx0ZXJlZEl0ZW1zUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG5cclxuICAgICAgICB1cmxQYXJhbXMucHVzaChgcGFnZVNpemU9JHtwYXJhbXMucGFnZVNpemUudG9TdHJpbmcoKX1gKTtcclxuICAgICAgICB1cmxQYXJhbXMucHVzaChgcGFnZT0ke3BhcmFtcy5wYWdlLnRvU3RyaW5nKCl9YCk7XHJcblxyXG4gICAgICAgIGlmIChwYXJhbXMuZmlsdGVyICYmIHBhcmFtcy5maWx0ZXIubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB1cmxQYXJhbXMucHVzaChgcXVpY2tTZWFyY2g9JHtwYXJhbXMuZmlsdGVyfWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy51cmxDYWRTZXJ2aWRvcn0/JHt1cmxQYXJhbXMuam9pbignJicpfWApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE9iamVjdEJ5VmFsdWUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLnVybENhZFNlcnZpZG9yfS8ke2lkfWAsIHRoaXMuaGVhZGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlRXhlY3V0aW9uKHBhcmFtZXRlcnM6IE9iamVjdCwgbG9hZGluZzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnKnwnKSk7XHJcblxyXG4gICAgICAgIGlmIChsb2FkaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnVybEpvYlNjaGVkdWxlcn1gLCBwYXJhbXMsIHRoaXMuaGVhZGVycyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudXJsSm9iU2NoZWR1bGVyfWAsIHBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUV4ZWN1dGlvbkZvck5vdyhleGVjdXRpb25QYXJhbXM6IElFeGVjdXRpb25QYXJhbWV0ZXJzLCBsb2FkaW5nOiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBsZXQgam9iU2NoZWR1bGVQYXJhbXM6IGFueTtcclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShleGVjdXRpb25QYXJhbXMpLnJlcGxhY2UoL1xcXFxcXFxcL2csICcqfCcpKTtcclxuICAgICAgICBpZiAoIXBhcmFtcy5idXNpbmVzc1BhcmFtcyB8fCBwYXJhbXMuYnVzaW5lc3NQYXJhbXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcy5idXNpbmVzc1BhcmFtcyA9IFt7IGNoYXZlOiAnJywgdmFsb3I6ICcnIH1dO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgam9iU2NoZWR1bGVQYXJhbXMgPSB7fTtcclxuICAgICAgICBqb2JTY2hlZHVsZVBhcmFtcy5zdGF0dXMgPSAnYWN0aXZlJztcclxuICAgICAgICBqb2JTY2hlZHVsZVBhcmFtcy5wcm9jZXNzSUQgPSBwYXJhbXMucHJvZ3JhbU5hbWU7XHJcbiAgICAgICAgam9iU2NoZWR1bGVQYXJhbXMuZmlyc3RFeGVjdXRpb24gPSBgJHtkYXRlLmdldEZ1bGxZZWFyKCl9LSR7KGRhdGUuZ2V0TW9udGgoKSArIDEpfS0ke2RhdGUuZ2V0RGF0ZSgpfVQke3RoaXMuYWRkWmVybyhkYXRlLmdldEhvdXJzKCkpfToke3RoaXMuYWRkWmVybyhkYXRlLmdldE1pbnV0ZXMoKSl9OjAwLjAwMFpgO1xyXG4gICAgICAgIGpvYlNjaGVkdWxlUGFyYW1zLnJlY3VycmVudCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBqb2JTY2hlZHVsZVBhcmFtcy5leGVjdXRpb25QYXJhbWV0ZXIgPSB7XHJcbiAgICAgICAgICAgIHBhcmFtZXRyb3M6IFtcclxuICAgICAgICAgICAgICAgIHsgY2hhdmU6ICdycHdTZXJ2ZXInLCB2YWxvcjogcGFyYW1zLmV4ZWN1dGlvblNlcnZlciB9LFxyXG4gICAgICAgICAgICAgICAgeyBjaGF2ZTogJ1JQV19QUk9HUkFNJywgdmFsb3I6IHBhcmFtcy5leHRlcm5hbE5hbWUgfSxcclxuICAgICAgICAgICAgICAgIHsgY2hhdmU6ICdSUFdfUFJHX0VNUzUnLCB2YWxvcjogcGFyYW1zLnByb2dyYW1FTVM1ID8gJ3llcycgOiAnbm8nIH0sXHJcbiAgICAgICAgICAgICAgICB7IGNoYXZlOiAnUlBXX1BSR19WRVJTJywgdmFsb3I6IHBhcmFtcy5wcm9ncmFtVmVyc2lvbiB9LFxyXG4gICAgICAgICAgICAgICAgeyBwYXJhbWV0cm9zX25lZ29jaW86IHBhcmFtcy5idXNpbmVzc1BhcmFtcyB9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAobG9hZGluZykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy51cmxKb2JTY2hlZHVsZXJ9YCwgam9iU2NoZWR1bGVQYXJhbXMsIHRoaXMuaGVhZGVycyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudXJsSm9iU2NoZWR1bGVyfWAsIGpvYlNjaGVkdWxlUGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RXhlY3V0aW9uQnlKb2JTY2hlZHVsZUlEKGpvYlNjaGVkdWxlSUQ6IHN0cmluZywgbG9hZGluZyA9IGZhbHNlKTogT2JzZXJ2YWJsZTxJRXhlY3V0aW9uU3RhdHVzPiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy51cmxKb2JFeGVjdXRpb259P2pvYlNjaGVkdWxlSUQ9JHtqb2JTY2hlZHVsZUlEfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXhlY3V0aW9uKHVybCwgbG9hZGluZykucGlwZShcclxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gdGhpcy50cmFuc2Zvcm1FeGVjdXRpb24oJ2pvYlNjaGVkdWxlSUQnLCByZXNwb25zZSkpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRFeGVjdXRpb25CeUV4ZWN1dGlvbklEKGV4ZWN1dGlvbklEOiBzdHJpbmcsIGxvYWRpbmcgPSBmYWxzZSk6IE9ic2VydmFibGU8SUV4ZWN1dGlvblN0YXR1cz4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMudXJsSm9iRXhlY3V0aW9ufS8ke2V4ZWN1dGlvbklEfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXhlY3V0aW9uKHVybCwgbG9hZGluZykucGlwZShcclxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gdGhpcy50cmFuc2Zvcm1FeGVjdXRpb24oJ2V4ZWN1dGlvbklEJywgcmVzcG9uc2UpKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRFeGVjdXRpb24odXJsOiBzdHJpbmcsIGxvYWRpbmc6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGlmIChsb2FkaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgdGhpcy5oZWFkZXJzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHRyYW5zZm9ybUV4ZWN1dGlvbih0eXBlOiBzdHJpbmcsIHJlc3BvbnNlOiBhbnkpOiBJRXhlY3V0aW9uU3RhdHVzIHtcclxuICAgICAgICBpZiAoIXJlc3BvbnNlIHx8ICFyZXNwb25zZS5pdGVtcyB8fCByZXNwb25zZS5pdGVtcy5sZW5ndGggPT09IDApIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgcmVzcG9uc2UgPSByZXNwb25zZS5pdGVtc1swXTtcclxuXHJcbiAgICAgICAgY29uc3QgZXhlY1N0YXR1cyA9IG5ldyBFeGVjdXRpb25TdGF0dXMoKTtcclxuICAgICAgICBleGVjU3RhdHVzLmpvYlNjaGVkdWxlSUQgPSByZXNwb25zZS5qb2JTY2hlZHVsZUlEO1xyXG4gICAgICAgIGV4ZWNTdGF0dXMuZXhlY3V0aW9uSUQgPSByZXNwb25zZS5leGVjdXRpb25JRDtcclxuICAgICAgICBleGVjU3RhdHVzLnN0YXJ0ZWREYXRlID0gcmVzcG9uc2Uuc3RhcnRlZERhdGU7XHJcbiAgICAgICAgZXhlY1N0YXR1cy5lcnJvciA9IHJlc3BvbnNlLmVycm9yO1xyXG4gICAgICAgIGV4ZWNTdGF0dXMuc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzO1xyXG5cclxuICAgICAgICByZXR1cm4gZXhlY1N0YXR1cztcclxuICAgIH1cclxuXHJcbiAgICBmb2xsb3dVcEV4Y0J5Sm9iU2NoZWR1bGVJRChqb2JTY2hlZHVsZUlEOiBzdHJpbmcsIGludGVydmFsTnVtOiBudW1iZXIsIGZuY0NhbGxCYWNrOiBGdW5jdGlvbiwgbG9hZGluZyA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWN1dGlvbignam9iU2NoZWR1bGVJRCcsIGpvYlNjaGVkdWxlSUQsIGludGVydmFsTnVtLCBmbmNDYWxsQmFjaywgbG9hZGluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9sbG93VXBFeGNCeUV4ZWN1dGlvbklEKGV4ZWN1dGlvbklEOiBzdHJpbmcsIGludGVydmFsTnVtOiBudW1iZXIsIGZuY0NhbGxCYWNrOiBGdW5jdGlvbiwgbG9hZGluZyA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWN1dGlvbignZXhlY3V0aW9uSUQnLCBleGVjdXRpb25JRCwgaW50ZXJ2YWxOdW0sIGZuY0NhbGxCYWNrLCBsb2FkaW5nKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZvbGxvd1VwRXhlY3V0aW9uKHR5cGU6IHN0cmluZywgZXhlY0lEOiBzdHJpbmcsXHJcbiAgICAgICAgaW50ZXJ2YWxOdW06IG51bWJlciwgZm5jQ2FsbEJhY2s6IEZ1bmN0aW9uLCBsb2FkaW5nOiBib29sZWFuKTogdm9pZCB7XHJcblxyXG4gICAgICAgIHRoaXMuam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJCA9IG51bGw7XHJcblxyXG4gICAgICAgIGNvbnN0IGludGVydmFsSUQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4ZWNTdGF0dXMgPSBuZXcgRXhlY3V0aW9uU3RhdHVzKCk7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuam9iU2NoZWR1bGVJRCA9ICh0eXBlID09PSAnam9iU2NoZWR1bGVJRCcpID8gZXhlY0lEIDogJyc7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuZXhlY3V0aW9uSUQgPSAodHlwZSA9PT0gJ2V4ZWN1dGlvbklEJykgPyBleGVjSUQgOiAnJztcclxuICAgICAgICAgICAgZXhlY1N0YXR1cy5zdGFydGVkRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuZXJyb3IgPSAnJztcclxuICAgICAgICAgICAgZXhlY1N0YXR1cy5zdGF0dXMgPSAnUEVORElORyc7IC8vIFBFTkRJTkcsIFJVTk5JTkcsIFNVQ0NFU1MsIEZBSUxVUkVcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmpvYkV4ZWN1dGlvblN1YnNjcmlwdGlvbiQpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2pvYlNjaGVkdWxlSUQnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmpvYkV4ZWN1dGlvblN1YnNjcmlwdGlvbiQgPSB0aGlzLmdldEV4ZWN1dGlvbkJ5Sm9iU2NoZWR1bGVJRChleGVjSUQsIGxvYWRpbmcpXHJcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IElFeGVjdXRpb25TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWNSZXR1cm5PayhleGVjSUQsIGV4ZWNTdGF0dXMsIHJlc3BvbnNlLCBpbnRlcnZhbElELCBmbmNDYWxsQmFjayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9sbG93VXBFeGVjUmV0dXJuRXJyb3IoZXJyb3IsIGV4ZWNTdGF0dXMsIGludGVydmFsSUQsIGZuY0NhbGxCYWNrKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdleGVjdXRpb25JRCcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJCA9IHRoaXMuZ2V0RXhlY3V0aW9uQnlFeGVjdXRpb25JRChleGVjSUQsIGxvYWRpbmcpXHJcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IElFeGVjdXRpb25TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWNSZXR1cm5PayhleGVjSUQsIGV4ZWNTdGF0dXMsIHJlc3BvbnNlLCBpbnRlcnZhbElELCBmbmNDYWxsQmFjayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9sbG93VXBFeGVjUmV0dXJuRXJyb3IoZXJyb3IsIGV4ZWNTdGF0dXMsIGludGVydmFsSUQsIGZuY0NhbGxCYWNrKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9LCBpbnRlcnZhbE51bSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmb2xsb3dVcEV4ZWNSZXR1cm5PayhleGVjSUQ6IHN0cmluZywgZXhlY1N0YXR1czogSUV4ZWN1dGlvblN0YXR1cywgcmVzcG9uc2U6IElFeGVjdXRpb25TdGF0dXMsXHJcbiAgICAgICAgaW50ZXJ2YWxJRDogYW55LCBmbmNDYWxsQmFjazogRnVuY3Rpb24pOiB2b2lkIHtcclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMgPSByZXNwb25zZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBleGVjU3RhdHVzLmVycm9yID0gYEFnZW5kYW1lbnRvIG7Do28gZW5jb250cmFkbyBjb20gSUQ6ICR7ZXhlY0lEfWA7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuc3RhdHVzID0gJ0ZBSUxVUkUnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFmbmNDYWxsQmFjayhleGVjU3RhdHVzKSB8fFxyXG4gICAgICAgICAgICBleGVjU3RhdHVzLnN0YXR1cyA9PT0gJ1NVQ0NFU1MnIHx8XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuc3RhdHVzID09PSAnRkFJTFVSRScpIHtcclxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElEKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmb2xsb3dVcEV4ZWNSZXR1cm5FcnJvcihlcnJvcjogYW55LCBleGVjU3RhdHVzOiBJRXhlY3V0aW9uU3RhdHVzLFxyXG4gICAgICAgIGludGVydmFsSUQ6IGFueSwgZm5jQ2FsbEJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XHJcblxyXG4gICAgICAgIGxldCBlcnJvRGVzYyA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICAgICAgICBlcnJvRGVzYyA9IGVycm9yLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIGlmIChlcnJvci5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgZXJyb0Rlc2MgPSAnJztcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvci5lcnJvci5jb2RlKSB7IGVycm9EZXNjID0gZXJyb3IuZXJyb3IuY29kZTsgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLm1lc3NhZ2UpIHsgZXJyb0Rlc2MgPSBgJHtlcnJvRGVzY30gLSAke2Vycm9yLmVycm9yLm1lc3NhZ2V9YDsgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLmRldGFpbGVkTWVzc2FnZSkgeyBlcnJvRGVzYyA9IGAke2Vycm9EZXNjfSAtICR7ZXJyb3IuZXJyb3IuZGV0YWlsZWRNZXNzYWdlfWA7IH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGVycm9EZXNjID0gZXJyb3I7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBleGVjU3RhdHVzLmVycm9yID0gZXJyb0Rlc2M7XHJcbiAgICAgICAgZXhlY1N0YXR1cy5zdGF0dXMgPSAnRkFJTFVSRSc7XHJcbiAgICAgICAgZm5jQ2FsbEJhY2soZXhlY1N0YXR1cyk7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElEKTtcclxuICAgICAgICB0aGlzLmpvYkV4ZWN1dGlvblN1YnNjcmlwdGlvbiQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkWmVybyhudW06IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHN0ciA9IGAke251bX1gO1xyXG4gICAgICAgIGlmIChudW0gPCAxMCkgeyBzdHIgPSBgMCR7bnVtfWA7IH1cclxuICAgICAgICByZXR1cm4gc3RyO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { TotvsScheduleExecutionComponent } from './components/totvs-schedule-execution/totvs-schedule-execution.component';
|
|
3
|
-
import { FormsModule } from '@angular/forms';
|
|
4
|
-
import { PoModule } from '@po-ui/ng-components';
|
|
5
|
-
import { HttpClientModule } from '@angular/common/http';
|
|
6
|
-
// import { BrowserModule } from '@angular/platform-browser';
|
|
7
|
-
import { TotvsScheduleExecutionService } from './components/totvs-schedule-execution/totvs-schedule-execution.service';
|
|
8
|
-
import { CommonModule } from '@angular/common';
|
|
9
|
-
import { DtsDateFormatPipe } from './pipes/dts-date-format.pipe';
|
|
10
|
-
export class DtsBackofficeUtilsModule {
|
|
11
|
-
static forRoot() {
|
|
12
|
-
return {
|
|
13
|
-
ngModule: DtsBackofficeUtilsModule,
|
|
14
|
-
providers: [TotvsScheduleExecutionService]
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
DtsBackofficeUtilsModule.decorators = [
|
|
19
|
-
{ type: NgModule, args: [{
|
|
20
|
-
declarations: [
|
|
21
|
-
TotvsScheduleExecutionComponent,
|
|
22
|
-
DtsDateFormatPipe
|
|
23
|
-
],
|
|
24
|
-
imports: [
|
|
25
|
-
CommonModule,
|
|
26
|
-
PoModule,
|
|
27
|
-
FormsModule,
|
|
28
|
-
HttpClientModule
|
|
29
|
-
],
|
|
30
|
-
exports: [
|
|
31
|
-
TotvsScheduleExecutionComponent,
|
|
32
|
-
DtsDateFormatPipe
|
|
33
|
-
],
|
|
34
|
-
providers: [
|
|
35
|
-
TotvsScheduleExecutionService
|
|
36
|
-
]
|
|
37
|
-
},] }
|
|
38
|
-
];
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHRzLWJhY2tvZmZpY2UtdXRpbC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kdHMtYmFja29mZmljZS11dGlsL3NyYy9saWIvZHRzLWJhY2tvZmZpY2UtdXRpbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUNMLCtCQUErQixFQUNoQyxNQUFNLDBFQUEwRSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFpQixNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELDZEQUE2RDtBQUM3RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUN2SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFzQmpFLE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLHdCQUF3QjtZQUNsQyxTQUFTLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztTQUMzQyxDQUFDO0lBQ0osQ0FBQzs7O1lBMUJGLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUU7b0JBQ1osK0JBQStCO29CQUMvQixpQkFBaUI7aUJBQ2xCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLFFBQVE7b0JBQ1IsV0FBVztvQkFDWCxnQkFBZ0I7aUJBQ2pCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCwrQkFBK0I7b0JBQy9CLGlCQUFpQjtpQkFDbEI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULDZCQUE2QjtpQkFDOUI7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgVG90dnNTY2hlZHVsZUV4ZWN1dGlvbkNvbXBvbmVudFxyXG59IGZyb20gJy4vY29tcG9uZW50cy90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24vdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBQb01vZHVsZSwgUG9JMThuU2VydmljZSB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuLy8gaW1wb3J0IHsgQnJvd3Nlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBUb3R2c1NjaGVkdWxlRXhlY3V0aW9uU2VydmljZSB9IGZyb20gJy4vY29tcG9uZW50cy90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24vdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBEdHNEYXRlRm9ybWF0UGlwZSB9IGZyb20gJy4vcGlwZXMvZHRzLWRhdGUtZm9ybWF0LnBpcGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFRvdHZzU2NoZWR1bGVFeGVjdXRpb25Db21wb25lbnQsXHJcbiAgICBEdHNEYXRlRm9ybWF0UGlwZVxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUG9Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIEh0dHBDbGllbnRNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIFRvdHZzU2NoZWR1bGVFeGVjdXRpb25Db21wb25lbnQsXHJcbiAgICBEdHNEYXRlRm9ybWF0UGlwZVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBUb3R2c1NjaGVkdWxlRXhlY3V0aW9uU2VydmljZVxyXG4gIF1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBEdHNCYWNrb2ZmaWNlVXRpbHNNb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RHRzQmFja29mZmljZVV0aWxzTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogRHRzQmFja29mZmljZVV0aWxzTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtUb3R2c1NjaGVkdWxlRXhlY3V0aW9uU2VydmljZV1cclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
|