dts-backoffice-util 18.3.0 → 19.0.0

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 (29) hide show
  1. package/README.md +1 -0
  2. package/fesm2022/dts-backoffice-util.mjs +44 -43
  3. package/fesm2022/dts-backoffice-util.mjs.map +1 -1
  4. package/package.json +4 -6
  5. package/esm2022/dts-backoffice-util.mjs +0 -5
  6. package/esm2022/lib/components/totvs-map/totvs-map.component.mjs +0 -97
  7. package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.mjs +0 -305
  8. package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.mjs +0 -7
  9. package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.mjs +0 -208
  10. package/esm2022/lib/dts-backoffice-util.module.mjs +0 -57
  11. package/esm2022/lib/interfaces/filter-range.interface.mjs +0 -2
  12. package/esm2022/lib/interfaces/totvs-response.interface.mjs +0 -2
  13. package/esm2022/lib/model/session-info.model.mjs +0 -67
  14. package/esm2022/lib/pipes/dts-date-format.pipe.mjs +0 -20
  15. package/esm2022/lib/services/breadcrumb-control.service.mjs +0 -99
  16. package/esm2022/lib/services/cache-params.service.mjs +0 -25
  17. package/esm2022/lib/services/menu-datasul.service.mjs +0 -118
  18. package/esm2022/lib/services/profile.service.mjs +0 -55
  19. package/esm2022/lib/services/report.service.mjs +0 -57
  20. package/esm2022/lib/services/session-info.service.mjs +0 -36
  21. package/esm2022/lib/services/translate.service.mjs +0 -23
  22. package/esm2022/lib/services/validate.service.mjs +0 -42
  23. package/esm2022/lib/utils/date.util.mjs +0 -56
  24. package/esm2022/lib/utils/disclaimer.util.mjs +0 -490
  25. package/esm2022/lib/utils/field-validation.util.mjs +0 -179
  26. package/esm2022/lib/utils/file.util.mjs +0 -151
  27. package/esm2022/lib/utils/filter-range.util.mjs +0 -33
  28. package/esm2022/lib/utils/generic-functions.utils.mjs +0 -170
  29. package/esm2022/public-api.mjs +0 -40
@@ -1,305 +0,0 @@
1
- import { Component, Input, ViewChild, Output, EventEmitter } from '@angular/core';
2
- import { ScheduleParameters } from './totvs-schedule-execution.model';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@po-ui/ng-components";
5
- import * as i2 from "./totvs-schedule-execution.service";
6
- import * as i3 from "@angular/common";
7
- import * as i4 from "@angular/forms";
8
- export class TotvsScheduleExecutionComponent {
9
- constructor(poI18nService, rpwService, poNotification) {
10
- this.poI18nService = poI18nService;
11
- this.rpwService = rpwService;
12
- this.poNotification = poNotification;
13
- this.programEMS5 = false;
14
- this.programStyle = 0;
15
- this.programVersion = '';
16
- this.paramDigitDef = [];
17
- this.paramDigitData = [];
18
- this.paramSelections = [];
19
- this.disabledParams = false;
20
- this.loading = false;
21
- this.endExecution = new EventEmitter();
22
- this.jsonObject = {};
23
- this.literals = {};
24
- }
25
- ngOnInit() {
26
- /* VERIFICAR COMO FICARÁ A TRADUÇÃO
27
- forkJoin(
28
- this.poI18nService.getLiterals(),
29
- this.poI18nService.getLiterals({ context: 'generalRpw' })
30
- ).subscribe(literals => {
31
- literals.map(item => Object.assign(this.literals, item) );
32
- this.setupComponents();
33
- });*/
34
- this.setupComponents();
35
- }
36
- setupComponents() {
37
- this.executionTypeOptions = [
38
- { label: 'Executar Hoje', value: 1 },
39
- { label: 'Agendar Execução', value: 2 }
40
- ];
41
- this.frequencyOptions = [
42
- { label: 'Uma vez no dia', value: 'no' },
43
- { label: 'Várias vezes no dia', value: 'yes' }
44
- ];
45
- this.frequencyTypeOptions = [
46
- { label: 'Hora(s)', value: 'hour' },
47
- { label: 'Minuto(s)', value: 'minute' }
48
- ];
49
- this.weeklyOptions = [
50
- { label: 'Domingo', value: 'Sunday' },
51
- { label: 'Segunda', value: 'Monday' },
52
- { label: 'Terça', value: 'Tuesday' },
53
- { label: 'Quarta', value: 'Wednesday' },
54
- { label: 'Quinta', value: 'Thursday' },
55
- { label: 'Sexta', value: 'Friday' },
56
- { label: 'Sábado', value: 'Saturday' }
57
- ];
58
- this.zoomRpwServiceColumns = [
59
- { property: 'code', label: 'Servidor', type: 'string', width: '20%' },
60
- { property: 'name', label: 'Descrição', type: 'string', width: '80%' }
61
- ];
62
- this.model = new ScheduleParameters();
63
- this.model.executionType = 1;
64
- this.model.repeatType = 1;
65
- this.model.repeatExecution = false;
66
- }
67
- setScheduleParameters(schParam) {
68
- if (!schParam) {
69
- return;
70
- }
71
- this.model = schParam;
72
- }
73
- getScheduleParameters() {
74
- return this.model;
75
- }
76
- fieldRpwServiceFormat(value) {
77
- return `${value.code} - ${value.name}`;
78
- }
79
- isExecutionSchedule() {
80
- return (this.model.executionType === 2);
81
- }
82
- isRepeatExecution() {
83
- return this.model.repeatExecution;
84
- }
85
- isFrenquency() {
86
- return (this.model.frequency === 'yes');
87
- }
88
- changeRepeatExecution() {
89
- const date = new Date();
90
- if (!this.model.execAppointHourInit) {
91
- this.model.execAppointHourInit = `${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}`;
92
- }
93
- if (!this.model.execAppointHourFinal) {
94
- this.model.execAppointHourFinal = `${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}`;
95
- }
96
- this.model.selectWeeklys = [];
97
- this.model.dayOfMonth = 0;
98
- this.model.frequency = 'no';
99
- this.model.frequencyType = 'hour';
100
- this.model.frequencyValue = 0;
101
- }
102
- changeExecutionType() {
103
- const date = new Date();
104
- this.model.execAppointDate = date;
105
- this.model.execAppointHour = `${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}`;
106
- }
107
- changeTypeFrequency() {
108
- }
109
- getActiveTab(codTab) {
110
- return (this.model.repeatType === codTab);
111
- }
112
- setActiveTab(codTab) {
113
- this.model.repeatType = codTab;
114
- }
115
- addZero(num) {
116
- let str = `${num}`;
117
- if (num < 10) {
118
- str = `0${num}`;
119
- }
120
- return str;
121
- }
122
- executeSchedule() {
123
- if (this.disabledParams) {
124
- return;
125
- }
126
- if (!this.validate()) {
127
- return;
128
- }
129
- let idxParam;
130
- this.jsonObject = {};
131
- this.jsonObject.status = 'active';
132
- this.jsonObject.processID = this.programName;
133
- this.jsonObject.recurrent = this.model.repeatExecution;
134
- this.jsonObject.executionParameter = {};
135
- if (this.model.executionType === 1) {
136
- const date = new Date();
137
- this.jsonObject.firstExecution = `${date.getFullYear()}-${(date.getMonth() + 1)}-${date.getDate()}T${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}:00.000Z`;
138
- }
139
- if (this.model.executionType === 2) {
140
- this.jsonObject.firstExecution = `${this.model.execAppointDate}T${this.model.execAppointHour}:00.000Z`;
141
- }
142
- this.jsonObject.executionParameter.parametros = [];
143
- this.jsonObject.executionParameter.parametros[0] = { chave: 'rpwServer', valor: this.model.executionServer };
144
- this.jsonObject.executionParameter.parametros[1] = { chave: 'RPW_PROGRAM', valor: this.externalName };
145
- this.jsonObject.executionParameter.parametros[2] = { chave: 'RPW_PRG_EMS5', valor: this.programEMS5 ? 'yes' : 'no' };
146
- this.jsonObject.executionParameter.parametros[3] = { chave: 'RPW_PRG_ESTILO', valor: this.programStyle };
147
- this.jsonObject.executionParameter.parametros[4] = { chave: 'RPW_PRG_VERS', valor: this.programVersion };
148
- idxParam = 4;
149
- if (this.parameters && this.parameters.length > 0) {
150
- idxParam++;
151
- this.jsonObject.executionParameter.parametros[idxParam] = {};
152
- this.jsonObject.executionParameter.parametros[idxParam].parametros_negocio = this.parameters;
153
- }
154
- if (this.paramDigitDef && this.paramDigitDef.length > 0) {
155
- idxParam++;
156
- this.jsonObject.executionParameter.parametros[idxParam] = {};
157
- this.jsonObject.executionParameter.parametros[idxParam].param_digita_def = this.paramDigitDef;
158
- }
159
- if (this.paramDigitData && this.paramDigitData.length > 0) {
160
- idxParam++;
161
- this.jsonObject.executionParameter.parametros[idxParam] = {};
162
- this.jsonObject.executionParameter.parametros[idxParam].param_digita_dados = this.paramDigitData;
163
- }
164
- if (this.paramSelections && this.paramSelections.length > 0) {
165
- idxParam++;
166
- this.jsonObject.executionParameter.parametros[idxParam] = {};
167
- this.jsonObject.executionParameter.parametros[idxParam].selecoes = this.paramSelections;
168
- }
169
- // Executa hoje ou agendada
170
- this.rpwService.createExecution(this.jsonObject, this.loading).subscribe(() => {
171
- this.poNotification.success('Agendamento realizado com sucesso !');
172
- });
173
- if (this.model.repeatExecution) {
174
- if (this.model.repeatType === 1) {
175
- this.jsonObject.daily = {
176
- hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),
177
- minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm')
178
- };
179
- }
180
- if (this.model.repeatType === 2) {
181
- this.jsonObject.weekly = {
182
- hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),
183
- minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm'),
184
- daysOfWeek: this.model.selectWeeklys
185
- };
186
- }
187
- if (this.model.repeatType === 3) {
188
- this.jsonObject.monthly = {
189
- hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),
190
- minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm'),
191
- day: this.model.dayOfMonth
192
- };
193
- }
194
- if (this.isFrenquency()) {
195
- this.jsonObject.rangeExecutions = {
196
- frequency: {
197
- type: this.model.frequencyType,
198
- value: this.model.frequencyValue
199
- },
200
- rangeLimit: {
201
- hour: this.getHourOrMinute(this.model.execAppointHourFinal, 'h'),
202
- minute: this.getHourOrMinute(this.model.execAppointHourFinal, 'm')
203
- }
204
- };
205
- }
206
- // Executa a diária, semanal ou mensal
207
- this.rpwService.createExecution(this.jsonObject, this.loading).subscribe(() => {
208
- });
209
- }
210
- this.endExecution.emit(this.model);
211
- }
212
- getHourOrMinute(value, type) {
213
- if (type === 'h') {
214
- return +value.substring(0, 2);
215
- }
216
- if (type === 'm') {
217
- return +value.substring(3, 6);
218
- }
219
- }
220
- compareHour(hourInit, hourFinal) {
221
- if (hourInit === hourFinal) {
222
- return false;
223
- }
224
- if (this.getHourOrMinute(hourInit, 'h') < this.getHourOrMinute(hourFinal, 'h')) {
225
- return true;
226
- }
227
- if (this.getHourOrMinute(hourInit, 'm') > this.getHourOrMinute(hourFinal, 'm')) {
228
- return false;
229
- }
230
- return true;
231
- }
232
- validate() {
233
- if (!this.scheduleExecutionForm.valid) {
234
- this.poNotification.error('Verifique as inconsistências em tela.');
235
- return false;
236
- }
237
- if (!this.model.executionServer) {
238
- this.poNotification.error('Servidor de Execução não foi informado.');
239
- return false;
240
- }
241
- if (this.isExecutionSchedule() && (!this.model.execAppointDate || !this.model.execAppointHour)) {
242
- this.poNotification.error('Informar a data e a hora para agendamento da execução.');
243
- return false;
244
- }
245
- if (this.model.repeatExecution) {
246
- if (!this.model.execAppointHourInit) {
247
- this.poNotification.error('Informar a hora de início para a execução.');
248
- return false;
249
- }
250
- if (this.model.repeatType === 2 && (this.model.selectWeeklys.length === 0)) {
251
- this.poNotification.error('Informar os dias da semana para a execução.');
252
- return false;
253
- }
254
- if (this.model.repeatType === 3 && (!this.model.dayOfMonth)) {
255
- this.poNotification.error('Informar o dia para a execução.');
256
- return false;
257
- }
258
- if (this.isFrenquency()) {
259
- if (!this.compareHour(this.model.execAppointHourInit, this.model.execAppointHourFinal)) {
260
- this.poNotification.error('Hora Fim deve ser maior que Hora Início.');
261
- return false;
262
- }
263
- if (this.model.frequencyValue === 0) {
264
- this.poNotification.error('Informar a frequência de execução (A cada hora/minuto).');
265
- return false;
266
- }
267
- }
268
- }
269
- return true;
270
- }
271
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TotvsScheduleExecutionComponent, deps: [{ token: i1.PoI18nService }, { token: i2.TotvsScheduleExecutionService }, { token: i1.PoNotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
272
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: TotvsScheduleExecutionComponent, selector: "app-totvs-schedule-execution", inputs: { programName: "programName", externalName: "externalName", programEMS5: "programEMS5", programStyle: "programStyle", programVersion: "programVersion", parameters: "parameters", paramDigitDef: "paramDigitDef", paramDigitData: "paramDigitData", paramSelections: "paramSelections", disabledParams: "disabledParams", loading: "loading" }, outputs: { endExecution: "endExecution" }, viewQueries: [{ propertyName: "scheduleExecutionForm", first: true, predicate: ["scheduleExecutionForm"], descendants: true, static: true }], ngImport: i0, 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", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.PoButtonComponent, selector: "po-button" }, { kind: "component", type: i1.PoRadioGroupComponent, selector: "po-radio-group", inputs: ["p-label", "p-help"] }, { kind: "component", type: i1.PoDatepickerComponent, selector: "po-datepicker", inputs: ["p-label", "p-help"] }, { kind: "component", type: i1.PoInputComponent, selector: "po-input" }, { kind: "component", type: i1.PoLookupComponent, selector: "po-lookup" }, { kind: "component", type: i1.PoMultiselectComponent, selector: "po-multiselect" }, { kind: "component", type: i1.PoNumberComponent, selector: "po-number", inputs: ["p-step", "p-min", "p-max"] }, { kind: "component", type: i1.PoSelectComponent, selector: "po-select", inputs: ["p-readonly", "p-placeholder", "p-options", "p-field-label", "p-field-value"], outputs: ["ngModelChange"] }, { kind: "component", type: i1.PoSwitchComponent, selector: "po-switch", inputs: ["p-value", "p-format-model", "p-label-position", "p-label-off", "p-label-on"] }, { kind: "component", type: i1.PoTabComponent, selector: "po-tab" }, { kind: "component", type: i1.PoTabsComponent, selector: "po-tabs" }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
273
- }
274
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TotvsScheduleExecutionComponent, decorators: [{
275
- type: Component,
276
- args: [{ selector: 'app-totvs-schedule-execution', 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" }]
277
- }], ctorParameters: () => [{ type: i1.PoI18nService }, { type: i2.TotvsScheduleExecutionService }, { type: i1.PoNotificationService }], propDecorators: { scheduleExecutionForm: [{
278
- type: ViewChild,
279
- args: ['scheduleExecutionForm', { static: true }]
280
- }], programName: [{
281
- type: Input
282
- }], externalName: [{
283
- type: Input
284
- }], programEMS5: [{
285
- type: Input
286
- }], programStyle: [{
287
- type: Input
288
- }], programVersion: [{
289
- type: Input
290
- }], parameters: [{
291
- type: Input
292
- }], paramDigitDef: [{
293
- type: Input
294
- }], paramDigitData: [{
295
- type: Input
296
- }], paramSelections: [{
297
- type: Input
298
- }], disabledParams: [{
299
- type: Input
300
- }], loading: [{
301
- type: Input
302
- }], endExecution: [{
303
- type: Output
304
- }] } });
305
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2R0cy1iYWNrb2ZmaWNlLXV0aWwvc3JjL2xpYi9jb21wb25lbnRzL3RvdHZzLXNjaGVkdWxlLWV4ZWN1dGlvbi90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHRzLWJhY2tvZmZpY2UtdXRpbC9zcmMvbGliL2NvbXBvbmVudHMvdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uL3RvdHZzLXNjaGVkdWxlLWV4ZWN1dGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQXVCLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQVUzRixNQUFNLE9BQU8sK0JBQStCO0lBZ0J4QyxZQUNXLGFBQTRCLEVBQzVCLFVBQXlDLEVBQ3pDLGNBQXFDO1FBRnJDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGVBQVUsR0FBVixVQUFVLENBQStCO1FBQ3pDLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQWR2QyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUVwQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2YsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxD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d2JBNlNBOzsyRkRqU2EsK0JBQStCO2tCQU4zQyxTQUFTOytCQUNJLDhCQUE4QjtrS0FNYyxxQkFBcUI7c0JBQTFFLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUUzQyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBvUmFkaW9Hcm91cE9wdGlvbiwgUG9JMThuU2VydmljZSwgUG9Ob3RpZmljYXRpb25TZXJ2aWNlLCBQb0xvb2t1cENvbHVtbiB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcclxuaW1wb3J0IHsgSVNjaGVkdWxlUGFyYW1ldGVycywgU2NoZWR1bGVQYXJhbWV0ZXJzIH0gZnJvbSAnLi90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRvdHZzU2NoZWR1bGVFeGVjdXRpb25TZXJ2aWNlIH0gZnJvbSAnLi90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXBwLXRvdHZzLXNjaGVkdWxlLWV4ZWN1dGlvbicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3RvdHZzLXNjaGVkdWxlLWV4ZWN1dGlvbi5jb21wb25lbnQuY3NzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBUb3R2c1NjaGVkdWxlRXhlY3V0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBWaWV3Q2hpbGQoJ3NjaGVkdWxlRXhlY3V0aW9uRm9ybScsIHsgc3RhdGljOiB0cnVlIH0pIHNjaGVkdWxlRXhlY3V0aW9uRm9ybTogTmdGb3JtO1xyXG5cclxuICAgIEBJbnB1dCgpIHByb2dyYW1OYW1lOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBleHRlcm5hbE5hbWU6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHByb2dyYW1FTVM1ID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBwcm9ncmFtU3R5bGUgPSAwO1xyXG4gICAgQElucHV0KCkgcHJvZ3JhbVZlcnNpb24gPSAnJztcclxuICAgIEBJbnB1dCgpIHBhcmFtZXRlcnM6IFtdO1xyXG4gICAgQElucHV0KCkgcGFyYW1EaWdpdERlZiA9IFtdO1xyXG4gICAgQElucHV0KCkgcGFyYW1EaWdpdERhdGEgPSBbXTtcclxuICAgIEBJbnB1dCgpIHBhcmFtU2VsZWN0aW9ucyA9IFtdO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWRQYXJhbXMgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcclxuICAgIEBPdXRwdXQoKSBlbmRFeGVjdXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIHBvSTE4blNlcnZpY2U6IFBvSTE4blNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIHJwd1NlcnZpY2U6IFRvdHZzU2NoZWR1bGVFeGVjdXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBwb05vdGlmaWNhdGlvbjogUG9Ob3RpZmljYXRpb25TZXJ2aWNlKSB7XHJcbiAgICB9XHJcblxyXG4gICAgZXhlY3V0aW9uVHlwZU9wdGlvbnM6IEFycmF5PFBvUmFkaW9Hcm91cE9wdGlvbj47XHJcbiAgICBmcmVxdWVuY3lPcHRpb25zOiBBcnJheTxQb1JhZGlvR3JvdXBPcHRpb24+O1xyXG4gICAgZnJlcXVlbmN5VHlwZU9wdGlvbnM6IEFycmF5PFBvUmFkaW9Hcm91cE9wdGlvbj47XHJcbiAgICB3ZWVrbHlPcHRpb25zOiBBcnJheTxQb1JhZGlvR3JvdXBPcHRpb24+O1xyXG4gICAgem9vbVJwd1NlcnZpY2VDb2x1bW5zOiBBcnJheTxQb0xvb2t1cENvbHVtbj47XHJcbiAgICBtb2RlbDogU2NoZWR1bGVQYXJhbWV0ZXJzO1xyXG4gICAgcHJpdmF0ZSBqc29uT2JqZWN0OiBhbnkgPSB7fTtcclxuXHJcbiAgICBsaXRlcmFsczogYW55ID0ge307XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgLyogVkVSSUZJQ0FSIENPTU8gRklDQVLDgSBBIFRSQURVw4fDg09cclxuICAgICAgICBmb3JrSm9pbihcclxuICAgICAgICAgICAgICB0aGlzLnBvSTE4blNlcnZpY2UuZ2V0TGl0ZXJhbHMoKSxcclxuICAgICAgICAgICAgICB0aGlzLnBvSTE4blNlcnZpY2UuZ2V0TGl0ZXJhbHMoeyBjb250ZXh0OiAnZ2VuZXJhbFJwdycgfSlcclxuICAgICAgICAgICkuc3Vic2NyaWJlKGxpdGVyYWxzID0+IHtcclxuICAgICAgICAgICAgICBsaXRlcmFscy5tYXAoaXRlbSA9PiBPYmplY3QuYXNzaWduKHRoaXMubGl0ZXJhbHMsIGl0ZW0pICk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXR1cENvbXBvbmVudHMoKTtcclxuICAgICAgICAgIH0pOyovXHJcblxyXG4gICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnRzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dXBDb21wb25lbnRzKCkge1xyXG4gICAgICAgIHRoaXMuZXhlY3V0aW9uVHlwZU9wdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdFeGVjdXRhciBIb2plJywgdmFsdWU6IDEgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogJ0FnZW5kYXIgRXhlY3XDp8OjbycsIHZhbHVlOiAyIH1cclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeU9wdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdVbWEgdmV6IG5vIGRpYScsIHZhbHVlOiAnbm8nIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdWw6FyaWFzIHZlemVzIG5vIGRpYScsIHZhbHVlOiAneWVzJyB9XHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUeXBlT3B0aW9ucyA9IFtcclxuICAgICAgICAgICAgeyBsYWJlbDogJ0hvcmEocyknLCB2YWx1ZTogJ2hvdXInIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdNaW51dG8ocyknLCB2YWx1ZTogJ21pbnV0ZScgfVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHRoaXMud2Vla2x5T3B0aW9ucyA9IFtcclxuICAgICAgICAgICAgeyBsYWJlbDogJ0RvbWluZ28nLCB2YWx1ZTogJ1N1bmRheScgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogJ1NlZ3VuZGEnLCB2YWx1ZTogJ01vbmRheScgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogJ1RlcsOnYScsIHZhbHVlOiAnVHVlc2RheScgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogJ1F1YXJ0YScsIHZhbHVlOiAnV2VkbmVzZGF5JyB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiAnUXVpbnRhJywgdmFsdWU6ICdUaHVyc2RheScgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogJ1NleHRhJywgdmFsdWU6ICdGcmlkYXknIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdTw6FiYWRvJywgdmFsdWU6ICdTYXR1cmRheScgfVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHRoaXMuem9vbVJwd1NlcnZpY2VDb2x1bW5zID0gW1xyXG4gICAgICAgICAgICB7IHByb3BlcnR5OiAnY29kZScsIGxhYmVsOiAnU2Vydmlkb3InLCB0eXBlOiAnc3RyaW5nJywgd2lkdGg6ICcyMCUnIH0sXHJcbiAgICAgICAgICAgIHsgcHJvcGVydHk6ICduYW1lJywgbGFiZWw6ICdEZXNjcmnDp8OjbycsIHR5cGU6ICdzdHJpbmcnLCB3aWR0aDogJzgwJScgfVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHRoaXMubW9kZWwgPSBuZXcgU2NoZWR1bGVQYXJhbWV0ZXJzKCk7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5leGVjdXRpb25UeXBlID0gMTtcclxuICAgICAgICB0aGlzLm1vZGVsLnJlcGVhdFR5cGUgPSAxO1xyXG4gICAgICAgIHRoaXMubW9kZWwucmVwZWF0RXhlY3V0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldFNjaGVkdWxlUGFyYW1ldGVycyhzY2hQYXJhbTogSVNjaGVkdWxlUGFyYW1ldGVycykge1xyXG4gICAgICAgIGlmICghc2NoUGFyYW0pIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IHNjaFBhcmFtO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTY2hlZHVsZVBhcmFtZXRlcnMoKTogSVNjaGVkdWxlUGFyYW1ldGVycyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWw7XHJcbiAgICB9XHJcblxyXG4gICAgZmllbGRScHdTZXJ2aWNlRm9ybWF0KHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlLmNvZGV9IC0gJHt2YWx1ZS5uYW1lfWA7XHJcbiAgICB9XHJcblxyXG4gICAgaXNFeGVjdXRpb25TY2hlZHVsZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMubW9kZWwuZXhlY3V0aW9uVHlwZSA9PT0gMik7XHJcbiAgICB9XHJcblxyXG4gICAgaXNSZXBlYXRFeGVjdXRpb24oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwucmVwZWF0RXhlY3V0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGlzRnJlbnF1ZW5jeSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMubW9kZWwuZnJlcXVlbmN5ID09PSAneWVzJyk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlUmVwZWF0RXhlY3V0aW9uKCkge1xyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VySW5pdCkgeyB0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQgPSBgJHt0aGlzLmFkZFplcm8oZGF0ZS5nZXRIb3VycygpKX06JHt0aGlzLmFkZFplcm8oZGF0ZS5nZXRNaW51dGVzKCkpfWA7IH1cclxuICAgICAgICBpZiAoIXRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VyRmluYWwpIHsgdGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJGaW5hbCA9IGAke3RoaXMuYWRkWmVybyhkYXRlLmdldEhvdXJzKCkpfToke3RoaXMuYWRkWmVybyhkYXRlLmdldE1pbnV0ZXMoKSl9YDsgfVxyXG4gICAgICAgIHRoaXMubW9kZWwuc2VsZWN0V2Vla2x5cyA9IFtdO1xyXG4gICAgICAgIHRoaXMubW9kZWwuZGF5T2ZNb250aCA9IDA7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5mcmVxdWVuY3kgPSAnbm8nO1xyXG4gICAgICAgIHRoaXMubW9kZWwuZnJlcXVlbmN5VHlwZSA9ICdob3VyJztcclxuICAgICAgICB0aGlzLm1vZGVsLmZyZXF1ZW5jeVZhbHVlID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VFeGVjdXRpb25UeXBlKCkge1xyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgICAgICB0aGlzLm1vZGVsLmV4ZWNBcHBvaW50RGF0ZSA9IGRhdGU7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXIgPSBgJHt0aGlzLmFkZFplcm8oZGF0ZS5nZXRIb3VycygpKX06JHt0aGlzLmFkZFplcm8oZGF0ZS5nZXRNaW51dGVzKCkpfWA7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlVHlwZUZyZXF1ZW5jeSgpIHtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBY3RpdmVUYWIoY29kVGFiOiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMubW9kZWwucmVwZWF0VHlwZSA9PT0gY29kVGFiKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRBY3RpdmVUYWIoY29kVGFiOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLm1vZGVsLnJlcGVhdFR5cGUgPSBjb2RUYWI7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkWmVybyhudW06IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHN0ciA9IGAke251bX1gO1xyXG4gICAgICAgIGlmIChudW0gPCAxMCkgeyBzdHIgPSBgMCR7bnVtfWA7IH1cclxuICAgICAgICByZXR1cm4gc3RyO1xyXG4gICAgfVxyXG5cclxuICAgIGV4ZWN1dGVTY2hlZHVsZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZFBhcmFtcykgeyByZXR1cm47IH1cclxuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGUoKSkgeyByZXR1cm47IH1cclxuXHJcbiAgICAgICAgbGV0IGlkeFBhcmFtOiBudW1iZXI7XHJcblxyXG4gICAgICAgIHRoaXMuanNvbk9iamVjdCA9IHt9O1xyXG4gICAgICAgIHRoaXMuanNvbk9iamVjdC5zdGF0dXMgPSAnYWN0aXZlJztcclxuICAgICAgICB0aGlzLmpzb25PYmplY3QucHJvY2Vzc0lEID0gdGhpcy5wcm9ncmFtTmFtZTtcclxuICAgICAgICB0aGlzLmpzb25PYmplY3QucmVjdXJyZW50ID0gdGhpcy5tb2RlbC5yZXBlYXRFeGVjdXRpb247XHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LmV4ZWN1dGlvblBhcmFtZXRlciA9IHt9O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5leGVjdXRpb25UeXBlID09PSAxKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmpzb25PYmplY3QuZmlyc3RFeGVjdXRpb24gPSBgJHtkYXRlLmdldEZ1bGxZZWFyKCl9LSR7KGRhdGUuZ2V0TW9udGgoKSArIDEpfS0ke2RhdGUuZ2V0RGF0ZSgpfVQke3RoaXMuYWRkWmVybyhkYXRlLmdldEhvdXJzKCkpfToke3RoaXMuYWRkWmVybyhkYXRlLmdldE1pbnV0ZXMoKSl9OjAwLjAwMFpgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5leGVjdXRpb25UeXBlID09PSAyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuanNvbk9iamVjdC5maXJzdEV4ZWN1dGlvbiA9IGAke3RoaXMubW9kZWwuZXhlY0FwcG9pbnREYXRlfVQke3RoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VyfTowMC4wMDBaYDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuanNvbk9iamVjdC5leGVjdXRpb25QYXJhbWV0ZXIucGFyYW1ldHJvcyA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLmpzb25PYmplY3QuZXhlY3V0aW9uUGFyYW1ldGVyLnBhcmFtZXRyb3NbMF0gPSB7IGNoYXZlOiAncnB3U2VydmVyJywgdmFsb3I6IHRoaXMubW9kZWwuZXhlY3V0aW9uU2VydmVyIH07XHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LmV4ZWN1dGlvblBhcmFtZXRlci5wYXJhbWV0cm9zWzFdID0geyBjaGF2ZTogJ1JQV19QUk9HUkFNJywgdmFsb3I6IHRoaXMuZXh0ZXJuYWxOYW1lIH07XHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LmV4ZWN1dGlvblBhcmFtZXRlci5wYXJhbWV0cm9zWzJdID0geyBjaGF2ZTogJ1JQV19QUkdfRU1TNScsIHZhbG9yOiB0aGlzLnByb2dyYW1FTVM1ID8gJ3llcycgOiAnbm8nIH07XHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LmV4ZWN1dGlvblBhcmFtZXRlci5wYXJhbWV0cm9zWzNdID0geyBjaGF2ZTogJ1JQV19QUkdfRVNUSUxPJywgdmFsb3I6IHRoaXMucHJvZ3JhbVN0eWxlIH07XHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LmV4ZWN1dGlvblBhcmFtZXRlci5wYXJhbWV0cm9zWzRdID0geyBjaGF2ZTogJ1JQV19QUkdfVkVSUycsIHZhbG9yOiB0aGlzLnByb2dyYW1WZXJzaW9uIH07XHJcblxyXG4gICAgICAgIGlkeFBhcmFtID0gNDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucGFyYW1ldGVycyAmJiB0aGlzLnBhcmFtZXRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpZHhQYXJhbSsrO1xyXG4gICAgICAgICAgICB0aGlzLmpzb25PYmplY3QuZXhlY3V0aW9uUGFyYW1ldGVyLnBhcmFtZXRyb3NbaWR4UGFyYW1dID0ge307XHJcbiAgICAgICAgICAgIHRoaXMuanNvbk9iamVjdC5leGVjdXRpb25QYXJhbWV0ZXIucGFyYW1ldHJvc1tpZHhQYXJhbV0ucGFyYW1ldHJvc19uZWdvY2lvID0gdGhpcy5wYXJhbWV0ZXJzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMucGFyYW1EaWdpdERlZiAmJiB0aGlzLnBhcmFtRGlnaXREZWYubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpZHhQYXJhbSsrO1xyXG4gICAgICAgICAgICB0aGlzLmpzb25PYmplY3QuZXhlY3V0aW9uUGFyYW1ldGVyLnBhcmFtZXRyb3NbaWR4UGFyYW1dID0ge307XHJcbiAgICAgICAgICAgIHRoaXMuanNvbk9iamVjdC5leGVjdXRpb25QYXJhbWV0ZXIucGFyYW1ldHJvc1tpZHhQYXJhbV0ucGFyYW1fZGlnaXRhX2RlZiA9IHRoaXMucGFyYW1EaWdpdERlZjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnBhcmFtRGlnaXREYXRhICYmIHRoaXMucGFyYW1EaWdpdERhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpZHhQYXJhbSsrO1xyXG4gICAgICAgICAgICB0aGlzLmpzb25PYmplY3QuZXhlY3V0aW9uUGFyYW1ldGVyLnBhcmFtZXRyb3NbaWR4UGFyYW1dID0ge307XHJcbiAgICAgICAgICAgIHRoaXMuanNvbk9iamVjdC5leGVjdXRpb25QYXJhbWV0ZXIucGFyYW1ldHJvc1tpZHhQYXJhbV0ucGFyYW1fZGlnaXRhX2RhZG9zID0gdGhpcy5wYXJhbURpZ2l0RGF0YTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnBhcmFtU2VsZWN0aW9ucyAmJiB0aGlzLnBhcmFtU2VsZWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGlkeFBhcmFtKys7XHJcbiAgICAgICAgICAgIHRoaXMuanNvbk9iamVjdC5leGVjdXRpb25QYXJhbWV0ZXIucGFyYW1ldHJvc1tpZHhQYXJhbV0gPSB7fTtcclxuICAgICAgICAgICAgdGhpcy5qc29uT2JqZWN0LmV4ZWN1dGlvblBhcmFtZXRlci5wYXJhbWV0cm9zW2lkeFBhcmFtXS5zZWxlY29lcyA9IHRoaXMucGFyYW1TZWxlY3Rpb25zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRXhlY3V0YSBob2plIG91IGFnZW5kYWRhXHJcbiAgICAgICAgdGhpcy5ycHdTZXJ2aWNlLmNyZWF0ZUV4ZWN1dGlvbih0aGlzLmpzb25PYmplY3QsIHRoaXMubG9hZGluZykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5zdWNjZXNzKCdBZ2VuZGFtZW50byByZWFsaXphZG8gY29tIHN1Y2Vzc28gIScpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5yZXBlYXRFeGVjdXRpb24pIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWwucmVwZWF0VHlwZSA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5qc29uT2JqZWN0LmRhaWx5ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvdXI6IHRoaXMuZ2V0SG91ck9yTWludXRlKHRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VySW5pdCwgJ2gnKSxcclxuICAgICAgICAgICAgICAgICAgICBtaW51dGU6IHRoaXMuZ2V0SG91ck9yTWludXRlKHRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VySW5pdCwgJ20nKVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWwucmVwZWF0VHlwZSA9PT0gMikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5qc29uT2JqZWN0LndlZWtseSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBob3VyOiB0aGlzLmdldEhvdXJPck1pbnV0ZSh0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQsICdoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgbWludXRlOiB0aGlzLmdldEhvdXJPck1pbnV0ZSh0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQsICdtJyksXHJcbiAgICAgICAgICAgICAgICAgICAgZGF5c09mV2VlazogdGhpcy5tb2RlbC5zZWxlY3RXZWVrbHlzXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbC5yZXBlYXRUeXBlID09PSAzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmpzb25PYmplY3QubW9udGhseSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBob3VyOiB0aGlzLmdldEhvdXJPck1pbnV0ZSh0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQsICdoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgbWludXRlOiB0aGlzLmdldEhvdXJPck1pbnV0ZSh0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQsICdtJyksXHJcbiAgICAgICAgICAgICAgICAgICAgZGF5OiB0aGlzLm1vZGVsLmRheU9mTW9udGhcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRnJlbnF1ZW5jeSgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmpzb25PYmplY3QucmFuZ2VFeGVjdXRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB0aGlzLm1vZGVsLmZyZXF1ZW5jeVR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLm1vZGVsLmZyZXF1ZW5jeVZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByYW5nZUxpbWl0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdXI6IHRoaXMuZ2V0SG91ck9yTWludXRlKHRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VyRmluYWwsICdoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5nZXRIb3VyT3JNaW51dGUodGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJGaW5hbCwgJ20nKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIEV4ZWN1dGEgYSBkacOhcmlhLCBzZW1hbmFsIG91IG1lbnNhbFxyXG4gICAgICAgICAgICB0aGlzLnJwd1NlcnZpY2UuY3JlYXRlRXhlY3V0aW9uKHRoaXMuanNvbk9iamVjdCwgdGhpcy5sb2FkaW5nKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZW5kRXhlY3V0aW9uLmVtaXQodGhpcy5tb2RlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SG91ck9yTWludXRlKHZhbHVlOiBzdHJpbmcsIHR5cGU6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKHR5cGUgPT09ICdoJykgeyByZXR1cm4gK3ZhbHVlLnN1YnN0cmluZygwLCAyKTsgfVxyXG4gICAgICAgIGlmICh0eXBlID09PSAnbScpIHsgcmV0dXJuICt2YWx1ZS5zdWJzdHJpbmcoMywgNik7IH1cclxuICAgIH1cclxuXHJcbiAgICBjb21wYXJlSG91cihob3VySW5pdDogc3RyaW5nLCBob3VyRmluYWw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChob3VySW5pdCA9PT0gaG91ckZpbmFsKSB7IHJldHVybiBmYWxzZTsgfVxyXG4gICAgICAgIGlmICh0aGlzLmdldEhvdXJPck1pbnV0ZShob3VySW5pdCwgJ2gnKSA8IHRoaXMuZ2V0SG91ck9yTWludXRlKGhvdXJGaW5hbCwgJ2gnKSkgeyByZXR1cm4gdHJ1ZTsgfVxyXG4gICAgICAgIGlmICh0aGlzLmdldEhvdXJPck1pbnV0ZShob3VySW5pdCwgJ20nKSA+IHRoaXMuZ2V0SG91ck9yTWludXRlKGhvdXJGaW5hbCwgJ20nKSkgeyByZXR1cm4gZmFsc2U7IH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB2YWxpZGF0ZSgpOiBib29sZWFuIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnNjaGVkdWxlRXhlY3V0aW9uRm9ybS52YWxpZCkge1xyXG4gICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKCdWZXJpZmlxdWUgYXMgaW5jb25zaXN0w6puY2lhcyBlbSB0ZWxhLicpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMubW9kZWwuZXhlY3V0aW9uU2VydmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uZXJyb3IoJ1NlcnZpZG9yIGRlIEV4ZWN1w6fDo28gbsOjbyBmb2kgaW5mb3JtYWRvLicpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5pc0V4ZWN1dGlvblNjaGVkdWxlKCkgJiYgKCF0aGlzLm1vZGVsLmV4ZWNBcHBvaW50RGF0ZSB8fCAhdGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uZXJyb3IoJ0luZm9ybWFyIGEgZGF0YSBlIGEgaG9yYSBwYXJhIGFnZW5kYW1lbnRvIGRhIGV4ZWN1w6fDo28uJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm1vZGVsLnJlcGVhdEV4ZWN1dGlvbikge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VySW5pdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5lcnJvcignSW5mb3JtYXIgYSBob3JhIGRlIGluw61jaW8gcGFyYSBhIGV4ZWN1w6fDo28uJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsLnJlcGVhdFR5cGUgPT09IDIgJiYgKHRoaXMubW9kZWwuc2VsZWN0V2Vla2x5cy5sZW5ndGggPT09IDApKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKCdJbmZvcm1hciBvcyBkaWFzIGRhIHNlbWFuYSBwYXJhIGEgZXhlY3XDp8Ojby4nKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWwucmVwZWF0VHlwZSA9PT0gMyAmJiAoIXRoaXMubW9kZWwuZGF5T2ZNb250aCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uZXJyb3IoJ0luZm9ybWFyIG8gZGlhIHBhcmEgYSBleGVjdcOnw6NvLicpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5pc0ZyZW5xdWVuY3koKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbXBhcmVIb3VyKHRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VySW5pdCwgdGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJGaW5hbCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKCdIb3JhIEZpbSBkZXZlIHNlciBtYWlvciBxdWUgSG9yYSBJbsOtY2lvLicpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlbC5mcmVxdWVuY3lWYWx1ZSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uZXJyb3IoJ0luZm9ybWFyIGEgZnJlcXXDqm5jaWEgZGUgZXhlY3XDp8OjbyAoQSBjYWRhIGhvcmEvbWludXRvKS4nKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG59XHJcbiIsIjxmb3JtICNzY2hlZHVsZUV4ZWN1dGlvbkZvcm09XCJuZ0Zvcm1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwby1yb3cgcG8tc20tMTIgcG8tbWQtMTIgcG8tbGctMTIgcG8teGwtMTJcIj5cclxuICAgICAgICA8cG8tcmFkaW8tZ3JvdXAgXHJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tc20tMTIgcG8tbWQtMTIgcG8tbGctMTIgcG8teGwtMTJcIlxyXG4gICAgICAgICAgICBuYW1lPVwiZXhlY3V0aW9uVHlwZVwiXHJcbiAgICAgICAgICAgIHAtbGFiZWw9XCJEYXRhIGRlIEV4ZWN1w6fDo29cIlxyXG4gICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFBhcmFtc1wiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibW9kZWwuZXhlY3V0aW9uVHlwZVwiXHJcbiAgICAgICAgICAgIFtwLW9wdGlvbnNdPVwiZXhlY3V0aW9uVHlwZU9wdGlvbnNcIlxyXG4gICAgICAgICAgICAocC1jaGFuZ2UpPVwiY2hhbmdlRXhlY3V0aW9uVHlwZSgpXCI+XHJcbiAgICAgICAgPC9wby1yYWRpby1ncm91cD5cclxuXHJcbiAgICAgICAgPHBvLWRhdGVwaWNrZXIgKm5nSWY9aXNFeGVjdXRpb25TY2hlZHVsZSgpXHJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tc20tNiBwby1tZC02IHBvLWxnLTYgcG8teGwtNlwiXHJcbiAgICAgICAgICAgIG5hbWU9XCJtb2RlbC5leGVjQXBwb2ludERhdGVcIlxyXG4gICAgICAgICAgICBwLWxhYmVsPVwiQWdlbmRhciBwYXJhXCJcclxuICAgICAgICAgICAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRQYXJhbXNcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLmV4ZWNBcHBvaW50RGF0ZVwiPlxyXG4gICAgICAgIDwvcG8tZGF0ZXBpY2tlcj5cclxuXHJcbiAgICAgICAgPHBvLWlucHV0ICpuZ0lmPWlzRXhlY3V0aW9uU2NoZWR1bGUoKVxyXG4gICAgICAgICAgICBjbGFzcz1cInBvLXNtLTYgcG8tbWQtNiBwby1sZy02IHBvLXhsLTZcIlxyXG4gICAgICAgICAgICBuYW1lPVwiZXhlY0FwcG9pbnRIb3VyXCJcclxuICAgICAgICAgICAgcC1sYWJlbD1cIkhvcmFcIlxyXG4gICAgICAgICAgICBwLW1hc2s9XCI5OTo5OVwiXHJcbiAgICAgICAgICAgIHAtbWFzay1mb3JtYXQtbW9kZWw9XCJ0cnVlXCJcclxuICAgICAgICAgICAgcC1wYXR0ZXJuPVwiXihbMC05XXwwWzAtOV18MVswLTldfDJbMC0zXSk6WzAtNV1bMC05XSRcIlxyXG4gICAgICAgICAgICBwLWVycm9yLXBhdHRlcm49XCJIb3JhIGludsOhbGlkYVwiXHJcbiAgICAgICAgICAgIFtwLWRpc2FibGVkXT1cImRpc2FibGVkUGFyYW1zXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC5leGVjQXBwb2ludEhvdXJcIj5cclxuICAgICAgICA8L3BvLWlucHV0PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInBvLXJvdyBwby1zbS0xMiBwby1tZC0xMiBwby1sZy0xMiBwby14bC0xMlwiPlxyXG4gICAgICAgIDxwby1sb29rdXBcclxuICAgICAgICAgICAgY2xhc3M9XCJwby1zbS0xMiBwby1tZC0xMiBwby1sZy0xMiBwby14bC0xMlwiXHJcbiAgICAgICAgICAgIG5hbWU9XCJleGVjdXRpb25TZXJ2ZXJcIlxyXG4gICAgICAgICAgICBwLWxhYmVsPVwiU2Vydmlkb3IgZGUgRXhlY3XDp8Ojb1wiXHJcbiAgICAgICAgICAgIHAtcGxhY2Vob2xkZXI9XCJTZXJ2aWRvciBkZSBFeGVjdcOnw6NvXCJcclxuICAgICAgICAgICAgW3AtY29sdW1uc109XCJ6b29tUnB3U2VydmljZUNvbHVtbnNcIlxyXG4gICAgICAgICAgICBbcC1maWVsZC1mb3JtYXRdPVwiZmllbGRScHdTZXJ2aWNlRm9ybWF0XCJcclxuICAgICAgICAgICAgW3AtZmlsdGVyLXNlcnZpY2VdPVwicnB3U2VydmljZVwiXHJcbiAgICAgICAgICAgIHAtZmllbGQtbGFiZWw9XCJuYW1lXCJcclxuICAgICAgICAgICAgcC1maWVsZC12YWx1ZT1cImNvZGVcIlxyXG4gICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFBhcmFtc1wiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibW9kZWwuZXhlY3V0aW9uU2VydmVyXCI+XHJcbiAgICAgICAgPC9wby1sb29rdXA+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicG8tcm93IHBvLXNtLTEyIHBvLW1kLTEyIHBvLWxnLTEyIHBvLXhsLTEyXCI+XHJcbiAgICAgICAgPHBvLXN3aXRjaFxyXG4gICAgICAgICAgICBjbGFzcz1cInBvLXNtLTYgcG8tbWQtNiBwby1sZy02IHBvLXhsLTZcIlxyXG4gICAgICAgICAgICBuYW1lPVwicmVwZWF0RXhlY3V0aW9uXCJcclxuICAgICAgICAgICAgcC1sYWJlbD1cIlJlcGV0aXIgb2NvcnLDqm5jaWEgP1wiXHJcbiAgICAgICAgICAgIHAtbGFiZWwtb2ZmPVwiTsOjb1wiXHJcbiAgICAgICAgICAgIHAtbGFiZWwtb249XCJTaW1cIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLnJlcGVhdEV4ZWN1dGlvblwiXHJcbiAgICAgICAgICAgIFtwLWRpc2FibGVkXT1cImRpc2FibGVkUGFyYW1zXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVJlcGVhdEV4ZWN1dGlvbigpXCI+XHJcbiAgICAgICAgPC9wby1zd2l0Y2g+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicG8tcm93XCIgKm5nSWY9XCJpc1JlcGVhdEV4ZWN1dGlvbigpXCI+XHJcbiAgICAgXHJcbiAgICAgICAgPHBvLXRhYnM+XHJcblxyXG4gICAgICAgICAgICA8cG8tdGFiIFxyXG4gICAgICAgICAgICAgICAgcC1sYWJlbD1cIkRpw6FyaWFcIiBcclxuICAgICAgICAgICAgICAgIFtwLWFjdGl2ZV09XCJnZXRBY3RpdmVUYWIoMSlcIiBcclxuICAgICAgICAgICAgICAgIChwLWNsaWNrKT1cInNldEFjdGl2ZVRhYigxKVwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwby1zbS02IHBvLW1kLTYgcG8tbGctNiBwby14bC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBvLXJhZGlvLWdyb3VwIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvLXNtLTEyIHBvLW1kLTEyIHBvLWxnLTEyIHBvLXhsLTEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImZyZXF1ZW5jeURhaWx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1sYWJlbD1cIkZyZXF1w6puY2lhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1jb2x1bW5zPTFcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC5mcmVxdWVuY3lcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFBhcmFtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwLW9wdGlvbnNdPVwiZnJlcXVlbmN5T3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChwLWNoYW5nZSk9XCJjaGFuZ2VUeXBlRnJlcXVlbmN5KClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3BvLXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG8tc20tNiBwby1tZC02IHBvLWxnLTYgcG8teGwtNlwiPiAgICBcclxuICAgICAgICAgICAgICAgICAgICA8cG8taW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwby1zbS02IHBvLW1kLTYgcG8tbGctNiBwby14bC02XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImV4ZWNBcHBvaW50SG91ckluaXREYWlseVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtbGFiZWw9XCJIb3JhIEluw61jaW9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLW1hc2s9XCI5OTo5OVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtbWFzay1mb3JtYXQtbW9kZWw9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1wYXR0ZXJuPVwiXihbMC05XXwwWzAtOV18MVswLTldfDJbMC0zXSk6WzAtNV1bMC05XSRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLWVycm9yLXBhdHRlcm49XCJIb3JhIGludsOhbGlkYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwLWRpc2FibGVkXT1cImRpc2FibGVkUGFyYW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC5leGVjQXBwb2ludEhvdXJJbml0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wby1pbnB1dD5cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8cG8taW5wdXQgKm5nSWY9XCJpc0ZyZW5xdWVuY3koKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tc20tNiBwby1tZC02IHBvLWxnLTYgcG8teGwtNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJleGVjQXBwb2ludEhvdXJGaW5hbERhaWx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1sYWJlbD1cIkhvcmEgRmltXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1tYXNrPVwiOTk6OTlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLW1hc2stZm9ybWF0LW1vZGVsPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtcGF0dGVybj1cIl4oWzAtOV18MFswLTldfDFbMC05XXwyWzAtM10pOlswLTVdWzAtOV0kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1lcnJvci1wYXR0ZXJuPVwiSG9yYSBpbnbDoWxpZGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFBhcmFtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibW9kZWwuZXhlY0FwcG9pbnRIb3VyRmluYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3BvLWlucHV0PlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxwby1udW1iZXIgKm5nSWY9XCJpc0ZyZW5xdWVuY3koKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tc20tNSBwby1tZC01IHBvLWxnLTUgcG8teGwtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJmcmVxdWVuY3lWYWx1ZURhaWx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1sYWJlbD1cIkEgY2FkYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtbWlubGVuZ3RoPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtbWF4bGVuZ3RoPVwiM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtbWluPVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtbWF4PVwiOTk5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRQYXJhbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLmZyZXF1ZW5jeVZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wby1udW1iZXI+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPHBvLXNlbGVjdCAqbmdJZj1cImlzRnJlbnF1ZW5jeSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwby1tdC0zIHBvLXNtLTcgcG8tbWQtNyBwby1sZy03IHBvLXhsLTdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZnJlcXVlbmN5VHlwZURhaWx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1sYWJlbD1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwLW9wdGlvbnNdPVwiZnJlcXVlbmN5VHlwZU9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFBhcmFtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibW9kZWwuZnJlcXVlbmN5VHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcG8tc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvcG8tdGFiPlxyXG5cclxuICAgICAgICAgICAgPHBvLXRhYiBcclxuICAgICAgICAgICAgICAgIHAtbGFiZWw9XCJTZW1hbmFsXCJcclxuICAgICAgICAgICAgICAgIFtwLWFjdGl2ZV09XCJnZXRBY3RpdmVUYWIoMilcIlxyXG4gICAgICAgICAgICAgICAgKHAtY2xpY2spPVwic2V0QWN0aXZlVGFiKDIpXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvLXJvdyBwby1zbS0xMiBwby1tZC0xMiBwby1sZy0xMiBwby14bC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwby1tdWx0aXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvLXNtLTEyIHBvLW1kLTEyIHBvLWxnLTEyIHBvLXhsLTEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNlbGVjdFdlZWtseXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLWxhYmVsPVwiRGlhcyBkYSBTZW1hbmFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLXBsYWNlaG9sZGVyPVwiRXNjb2xoYSBvcyBkaWFzIGRhIHNlbWFuYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwLWRpc2FibGVkXT1cImRpc2FibGVkUGFyYW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC5zZWxlY3RXZWVrbHlzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3Atb3B0aW9uc109XCJ3ZWVrbHlPcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wby1tdWx0aXNlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwby1zbS02IHBvLW1kLTYgcG8tbGctNiBwby14bC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBvLXJhZGlvLWdyb3VwIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvLXNtLTEyIHBvLW1kLTEyIHBvLWxnLTEyIHBvLXhsLTEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImZyZXF1ZW5jeVdlZWtseVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtbGFiZWw9XCJGcmVxdcOqbmNpYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtY29sdW1ucz0xXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibW9kZWwuZnJlcXVlbmN5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRQYXJhbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcC1vcHRpb25zXT1cImZyZXF1ZW5jeU9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocC1jaGFuZ2UpPVwiY2hhbmdlVHlwZUZyZXF1ZW5jeSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wby1yYWRpby1ncm91cD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwby1zbS02IHBvLW1kLTYgcG8tbGctNiBwby14bC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBvLWlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tc20tNiBwby1tZC02IHBvLWxnLTYgcG8teGwtNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJleGVjQXBwb2ludEhvdXJJbml0V2Vla2x5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1sYWJlbD1cIkhvcmEgSW7DrWNpb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtbWFzaz1cIjk5Ojk5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1tYXNrLWZvcm1hdC1tb2RlbD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLXBhdHRlcm49XCJeKFswLTldfDBbMC05XXwxWzAtOV18MlswLTNdKTpbMC01XVswLTldJFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtZXJyb3ItcGF0dGVybj1cIkhvcmEgaW52w6FsaWRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRQYXJhbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3BvLWlucHV0PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8cG8taW5wdXQgKm5nSWY9XCJpc0ZyZW5xdWVuY3koKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tc20tNiBwby1tZC02IHBvLWxnLTYgcG8teGwtNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJleGVjQXBwb2ludEhvdXJGaW5hbFdlZWtseVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtbGFiZWw9XCJIb3JhIEZpbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtbWFzaz1cIjk5Ojk5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1tYXNrLWZvcm1hdC1tb2RlbD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLXBhdHRlcm49XCJeKFswLTldfDBbMC05XXwxWzAtOV18MlswLTNdKTpbMC01XVswLTldJFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtZXJyb3ItcGF0dGVybj1cIkhvcmEgaW52w6FsaWRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRQYXJhbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLmV4ZWNBcHBvaW50SG91ckZpbmFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wby1pbnB1dD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHBvLW51bWJlciAqbmdJZj1cImlzRnJlbnF1ZW5jeSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwby1zbS01IHBvLW1kLTUgcG8tbGctNSBwby14bC01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImZyZXF1ZW5jeVZhbHVlV2Vla2x5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1sYWJlbD1cIkEgY2FkYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtbWlubGVuZ3RoPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtbWF4bGVuZ3RoPVwiM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtbWluPVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtbWF4PVwiOTk5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRQYXJhbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLmZyZXF1ZW5jeVZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wby1udW1iZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxwby1zZWxlY3QgKm5nSWY9XCJpc0ZyZW5xdWVuY3koKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tbXQtMyBwby1zbS03IHBvLW1kLTcgcG8tbGctNyBwby14bC03XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImZyZXF1ZW5jeVR5cGVXZWVrbHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLWxhYmVsPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3Atb3B0aW9uc109XCJmcmVxdWVuY3lUeXBlT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwLWRpc2FibGVkXT1cImRpc2FibGVkUGFyYW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC5mcmVxdWVuY3lUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wby1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9wby10YWI+XHJcblxyXG4gICAgICAgICAgICA8cG8tdGFiIFxyXG4gICAgICAgICAgICAgICAgcC1sYWJlbD1cIk1lbnNhbFwiIFxyXG4gICAgICAgICAgICAgICAgW3AtYWN0aXZlXT1cImdldEFjdGl2ZVRhYigzKVwiIFxyXG4gICAgICAgICAgICAgICAgKHAtY2xpY2spPVwic2V0QWN0aXZlVGFiKDMpXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvLXJvdyBwby1zbS0xMiBwby1tZC0xMiBwby1sZy0xMiBwby14bC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwby1udW1iZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwby1zbS0zIHBvLW1kLTMgcG8tbGctMyBwby14bC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRheU9mTW9udGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLWxhYmVsPVwiRGlhIGRvIG3DqnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLW1pbmxlbmd0aD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLW1heGxlbmd0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLW1pbj1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLW1heD1cIjMxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRQYXJhbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLmRheU9mTW9udGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3BvLW51bWJlcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwby1yb3cgcG8tc20tNiBwby1tZC02IHBvLWxnLTYgcG8teGwtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwby1yYWRpby1ncm91cCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwby1zbS0xMiBwby1tZC0xMiBwby1sZy0xMiBwby14bC0xMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJmcmVxdWVuY3lNb250aGx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1sYWJlbD1cIkZyZXF1w6puY2lhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1jb2x1bW5zPTFcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC5mcmVxdWVuY3lcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFBhcmFtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwLW9wdGlvbnNdPVwiZnJlcXVlbmN5T3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChwLWNoYW5nZSk9XCJjaGFuZ2VUeXBlRnJlcXVlbmN5KClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3BvLXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwby1yb3cgcG8tc20tNiBwby1tZC02IHBvLWxnLTYgcG8teGwtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwby1pbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvLXNtLTYgcG8tbWQtNiBwby1sZy02IHBvLXhsLTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZXhlY0FwcG9pbnRIb3VySW5pdE1vbnRobHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLWxhYmVsPVwiSG9yYSBJbsOtY2lvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1tYXNrPVwiOTk6OTlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLW1hc2stZm9ybWF0LW1vZGVsPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtcGF0dGVybj1cIl4oWzAtOV18MFswLTldfDFbMC05XXwyWzAtM10pOlswLTVdWzAtOV0kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1lcnJvci1wYXR0ZXJuPVwiSG9yYSBpbnbDoWxpZGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFBhcmFtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibW9kZWwuZXhlY0FwcG9pbnRIb3VySW5pdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcG8taW5wdXQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxwby1pbnB1dCAqbmdJZj1cImlzRnJlbnF1ZW5jeSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwby1zbS02IHBvLW1kLTYgcG8tbGctNiBwby14bC02XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImV4ZWNBcHBvaW50SG91ckZpbmFsV2Vla2x5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1sYWJlbD1cIkhvcmEgRmltXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1tYXNrPVwiOTk6OTlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLW1hc2stZm9ybWF0LW1vZGVsPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtcGF0dGVybj1cIl4oWzAtOV18MFswLTldfDFbMC05XXwyWzAtM10pOlswLTVdWzAtOV0kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1lcnJvci1wYXR0ZXJuPVwiSG9yYSBpbnbDoWxpZGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFBhcmFtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibW9kZWwuZXhlY0FwcG9pbnRIb3VyRmluYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3BvLWlucHV0PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8cG8tbnVtYmVyICpuZ0lmPVwiaXNGcmVucXVlbmN5KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvLXNtLTUgcG8tbWQtNSBwby1sZy01IHBvLXhsLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZnJlcXVlbmN5VmFsdWVXZWVrbHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwLWxhYmVsPVwiQSBjYWRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1taW5sZW5ndGg9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1tYXhsZW5ndGg9XCIzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1taW49XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcC1tYXg9XCI5OTlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFBhcmFtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibW9kZWwuZnJlcXVlbmN5VmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3BvLW51bWJlcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHBvLXNlbGVjdCAqbmdJZj1cImlzRnJlbnF1ZW5jeSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwby1tdC0zIHBvLXNtLTcgcG8tbWQtNyBwby1sZy03IHBvLXhsLTdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZnJlcXVlbmN5VHlwZVdlZWtseVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHAtbGFiZWw9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcC1vcHRpb25zXT1cImZyZXF1ZW5jeVR5cGVPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRQYXJhbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLmZyZXF1ZW5jeVR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3BvLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3BvLXRhYj5cclxuICAgICAgICA8L3BvLXRhYnM+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicG8tc20tMTIgcG8tbWQtMTIgcG8tbGctMTIgcG8teGwtMTJcIiBzdHlsZT1cInBhZGRpbmctdG9wOiAxNXB4O1wiPlxyXG4gICAgICAgIDxwby1idXR0b25cclxuICAgICAgICAgICAgc3R5bGU9XCJmbG9hdDogcmlnaHQ7XCJcclxuICAgICAgICAgICAgcC1sYWJlbD1cIkdlcmFyIEFnZW5kYW1lbnRvIFJQV1wiXHJcbiAgICAgICAgICAgIFtwLWRpc2FibGVkXT1cImRpc2FibGVkUGFyYW1zXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImV4ZWN1dGVTY2hlZHVsZSgpXCI+XHJcbiAgICAgICAgPC9wby1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuPC9mb3JtPlxyXG4iXX0=
@@ -1,7 +0,0 @@
1
- export class ScheduleParameters {
2
- }
3
- export class ExecutionStatus {
4
- }
5
- export class ExecutionParameters {
6
- }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHRzLWJhY2tvZmZpY2UtdXRpbC9zcmMvbGliL2NvbXBvbmVudHMvdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uL3RvdHZzLXNjaGVkdWxlLWV4ZWN1dGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsTUFBTSxPQUFPLGtCQUFrQjtDQWM5QjtBQVVELE1BQU0sT0FBTyxlQUFlO0NBTTNCO0FBZUQsTUFBTSxPQUFPLG1CQUFtQjtDQVcvQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSVNjaGVkdWxlUGFyYW1ldGVycyB7XHJcbiAgICBleGVjdXRpb25UeXBlOiBudW1iZXI7XHJcbiAgICBleGVjQXBwb2ludERhdGU6IERhdGU7XHJcbiAgICBleGVjQXBwb2ludEhvdXI6IHN0cmluZztcclxuICAgIGV4ZWN1dGlvblNlcnZlcjogc3RyaW5nO1xyXG4gICAgcmVwZWF0RXhlY3V0aW9uOiBib29sZWFuO1xyXG4gICAgcmVwZWF0VHlwZTogbnVtYmVyO1xyXG4gICAgZnJlcXVlbmN5OiBzdHJpbmc7XHJcbiAgICBmcmVxdWVuY3lWYWx1ZTogbnVtYmVyO1xyXG4gICAgZnJlcXVlbmN5VHlwZTogc3RyaW5nO1xyXG4gICAgZXhlY0FwcG9pbnRIb3VySW5pdDogc3RyaW5nO1xyXG4gICAgZXhlY0FwcG9pbnRIb3VyRmluYWw6IHN0cmluZztcclxuICAgIHNlbGVjdFdlZWtseXM6IFtdO1xyXG4gICAgZGF5T2ZNb250aDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2NoZWR1bGVQYXJhbWV0ZXJzIGltcGxlbWVudHMgSVNjaGVkdWxlUGFyYW1ldGVycyB7XHJcbiAgICBleGVjdXRpb25UeXBlOiBudW1iZXI7XHJcbiAgICBleGVjQXBwb2ludERhdGU6IERhdGU7XHJcbiAgICBleGVjQXBwb2ludEhvdXI6IHN0cmluZztcclxuICAgIGV4ZWN1dGlvblNlcnZlcjogc3RyaW5nO1xyXG4gICAgcmVwZWF0RXhlY3V0aW9uOiBib29sZWFuO1xyXG4gICAgcmVwZWF0VHlwZTogbnVtYmVyO1xyXG4gICAgZnJlcXVlbmN5OiBzdHJpbmc7XHJcbiAgICBmcmVxdWVuY3lWYWx1ZTogbnVtYmVyO1xyXG4gICAgZnJlcXVlbmN5VHlwZTogc3RyaW5nO1xyXG4gICAgZXhlY0FwcG9pbnRIb3VySW5pdDogc3RyaW5nO1xyXG4gICAgZXhlY0FwcG9pbnRIb3VyRmluYWw6IHN0cmluZztcclxuICAgIHNlbGVjdFdlZWtseXM6IFtdO1xyXG4gICAgZGF5T2ZNb250aDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElFeGVjdXRpb25TdGF0dXMge1xyXG4gICAgam9iU2NoZWR1bGVJRDogc3RyaW5nO1xyXG4gICAgZXhlY3V0aW9uSUQ6IHN0cmluZztcclxuICAgIHN0YXJ0ZWREYXRlOiBEYXRlO1xyXG4gICAgZXJyb3I6IHN0cmluZztcclxuICAgIHN0YXR1czogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRXhlY3V0aW9uU3RhdHVzIGltcGxlbWVudHMgSUV4ZWN1dGlvblN0YXR1cyB7XHJcbiAgICBqb2JTY2hlZHVsZUlEOiBzdHJpbmc7XHJcbiAgICBleGVjdXRpb25JRDogc3RyaW5nO1xyXG4gICAgc3RhcnRlZERhdGU6IERhdGU7XHJcbiAgICBlcnJvcjogc3RyaW5nO1xyXG4gICAgc3RhdHVzOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUV4ZWN1dGlvblBhcmFtZXRlcnMge1xyXG4gICAgZXhlY3V0aW9uU2VydmVyOiBzdHJpbmc7XHJcbiAgICBwcm9ncmFtTmFtZTogc3RyaW5nO1xyXG4gICAgZXh0ZXJuYWxOYW1lOiBzdHJpbmc7XHJcbiAgICBwcm9ncmFtRU1TNT86IGJvb2xlYW47XHJcbiAgICBwcm9ncmFtU3R5bGU/OiBudW1iZXI7XHJcbiAgICBwcm9ncmFtVmVyc2lvbj86IHN0cmluZztcclxuICAgIGJ1c2luZXNzUGFyYW1zOiBBcnJheTxhbnk+O1xyXG4gICAgcGFyYW1EaWdpdERlZj86IEFycmF5PGFueT47XHJcbiAgICBwYXJhbURpZ2l0RGF0YT86IEFycmF5PGFueT47XHJcbiAgICBwYXJhbVNlbGVjdGlvbnM/OiBBcnJheTxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRXhlY3V0aW9uUGFyYW1ldGVycyBpbXBsZW1lbnRzIElFeGVjdXRpb25QYXJhbWV0ZXJzIHtcclxuICAgIGV4ZWN1dGlvblNlcnZlcjogc3RyaW5nO1xyXG4gICAgcHJvZ3JhbU5hbWU6IHN0cmluZztcclxuICAgIGV4dGVybmFsTmFtZTogc3RyaW5nO1xyXG4gICAgcHJvZ3JhbUVNUzU/OiBib29sZWFuO1xyXG4gICAgcHJvZ3JhbVN0eWxlPzogbnVtYmVyO1xyXG4gICAgcHJvZ3JhbVZlcnNpb24/OiBzdHJpbmc7XHJcbiAgICBidXNpbmVzc1BhcmFtczogQXJyYXk8YW55PjtcclxuICAgIHBhcmFtRGlnaXREZWY/OiBBcnJheTxhbnk+O1xyXG4gICAgcGFyYW1EaWdpdERhdGE/OiBBcnJheTxhbnk+O1xyXG4gICAgcGFyYW1TZWxlY3Rpb25zPzogQXJyYXk8YW55PjtcclxufVxyXG4iXX0=