dts-backoffice-util 16.0.0 → 17.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 (50) hide show
  1. package/README.md +143 -52
  2. package/esm2022/dts-backoffice-util.mjs +4 -4
  3. package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.mjs +305 -272
  4. package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.mjs +7 -7
  5. package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.mjs +208 -183
  6. package/esm2022/lib/dts-backoffice-util.module.mjs +54 -54
  7. package/esm2022/lib/interfaces/filter-range.interface.mjs +1 -1
  8. package/esm2022/lib/interfaces/totvs-response.interface.mjs +1 -1
  9. package/esm2022/lib/model/session-info.model.mjs +67 -67
  10. package/esm2022/lib/pipes/dts-date-format.pipe.mjs +20 -20
  11. package/esm2022/lib/services/breadcrumb-control.service.mjs +99 -99
  12. package/esm2022/lib/services/cache-params.service.mjs +25 -25
  13. package/esm2022/lib/services/menu-datasul.service.mjs +118 -118
  14. package/esm2022/lib/services/profile.service.mjs +55 -55
  15. package/esm2022/lib/services/report.service.mjs +57 -57
  16. package/esm2022/lib/services/session-info.service.mjs +36 -36
  17. package/esm2022/lib/services/translate.service.mjs +23 -23
  18. package/esm2022/lib/utils/date.util.mjs +56 -56
  19. package/esm2022/lib/utils/disclaimer.util.mjs +490 -490
  20. package/esm2022/lib/utils/field-validation.util.mjs +179 -179
  21. package/esm2022/lib/utils/file.util.mjs +151 -151
  22. package/esm2022/lib/utils/filter-range.util.mjs +32 -32
  23. package/esm2022/lib/utils/generic-functions.utils.mjs +170 -170
  24. package/esm2022/public-api.mjs +33 -33
  25. package/fesm2022/dts-backoffice-util.mjs +2013 -1955
  26. package/fesm2022/dts-backoffice-util.mjs.map +1 -1
  27. package/index.d.ts +5 -5
  28. package/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.d.ts +53 -49
  29. package/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.d.ts +68 -60
  30. package/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.d.ts +30 -30
  31. package/lib/dts-backoffice-util.module.d.ts +14 -14
  32. package/lib/interfaces/filter-range.interface.d.ts +18 -18
  33. package/lib/interfaces/totvs-response.interface.d.ts +4 -4
  34. package/lib/model/session-info.model.d.ts +40 -40
  35. package/lib/pipes/dts-date-format.pipe.d.ts +7 -7
  36. package/lib/services/breadcrumb-control.service.d.ts +18 -18
  37. package/lib/services/cache-params.service.d.ts +10 -10
  38. package/lib/services/menu-datasul.service.d.ts +27 -27
  39. package/lib/services/profile.service.d.ts +25 -25
  40. package/lib/services/report.service.d.ts +31 -31
  41. package/lib/services/session-info.service.d.ts +12 -12
  42. package/lib/services/translate.service.d.ts +8 -8
  43. package/lib/utils/date.util.d.ts +9 -9
  44. package/lib/utils/disclaimer.util.d.ts +40 -40
  45. package/lib/utils/field-validation.util.d.ts +21 -21
  46. package/lib/utils/file.util.d.ts +23 -23
  47. package/lib/utils/filter-range.util.d.ts +7 -7
  48. package/lib/utils/generic-functions.utils.d.ts +24 -24
  49. package/package.json +5 -5
  50. package/public-api.d.ts +20 -20
@@ -1,7 +1,7 @@
1
- export class ScheduleParameters {
2
- }
3
- export class ExecutionStatus {
4
- }
5
- export class ExecutionParameters {
6
- }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHRzLWJhY2tvZmZpY2UtdXRpbC9zcmMvbGliL2NvbXBvbmVudHMvdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uL3RvdHZzLXNjaGVkdWxlLWV4ZWN1dGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsTUFBTSxPQUFPLGtCQUFrQjtDQWM5QjtBQVVELE1BQU0sT0FBTyxlQUFlO0NBTTNCO0FBV0QsTUFBTSxPQUFPLG1CQUFtQjtDQU8vQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSVNjaGVkdWxlUGFyYW1ldGVycyB7XHJcbiAgICBleGVjdXRpb25UeXBlOiBudW1iZXI7XHJcbiAgICBleGVjQXBwb2ludERhdGU6IERhdGU7XHJcbiAgICBleGVjQXBwb2ludEhvdXI6IHN0cmluZztcclxuICAgIGV4ZWN1dGlvblNlcnZlcjogc3RyaW5nO1xyXG4gICAgcmVwZWF0RXhlY3V0aW9uOiBib29sZWFuO1xyXG4gICAgcmVwZWF0VHlwZTogbnVtYmVyO1xyXG4gICAgZnJlcXVlbmN5OiBzdHJpbmc7XHJcbiAgICBmcmVxdWVuY3lWYWx1ZTogbnVtYmVyO1xyXG4gICAgZnJlcXVlbmN5VHlwZTogc3RyaW5nO1xyXG4gICAgZXhlY0FwcG9pbnRIb3VySW5pdDogc3RyaW5nO1xyXG4gICAgZXhlY0FwcG9pbnRIb3VyRmluYWw6IHN0cmluZztcclxuICAgIHNlbGVjdFdlZWtseXM6IFtdO1xyXG4gICAgZGF5T2ZNb250aDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2NoZWR1bGVQYXJhbWV0ZXJzIGltcGxlbWVudHMgSVNjaGVkdWxlUGFyYW1ldGVycyB7XHJcbiAgICBleGVjdXRpb25UeXBlOiBudW1iZXI7XHJcbiAgICBleGVjQXBwb2ludERhdGU6IERhdGU7XHJcbiAgICBleGVjQXBwb2ludEhvdXI6IHN0cmluZztcclxuICAgIGV4ZWN1dGlvblNlcnZlcjogc3RyaW5nO1xyXG4gICAgcmVwZWF0RXhlY3V0aW9uOiBib29sZWFuO1xyXG4gICAgcmVwZWF0VHlwZTogbnVtYmVyO1xyXG4gICAgZnJlcXVlbmN5OiBzdHJpbmc7XHJcbiAgICBmcmVxdWVuY3lWYWx1ZTogbnVtYmVyO1xyXG4gICAgZnJlcXVlbmN5VHlwZTogc3RyaW5nO1xyXG4gICAgZXhlY0FwcG9pbnRIb3VySW5pdDogc3RyaW5nO1xyXG4gICAgZXhlY0FwcG9pbnRIb3VyRmluYWw6IHN0cmluZztcclxuICAgIHNlbGVjdFdlZWtseXM6IFtdO1xyXG4gICAgZGF5T2ZNb250aDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElFeGVjdXRpb25TdGF0dXMge1xyXG4gICAgam9iU2NoZWR1bGVJRDogc3RyaW5nO1xyXG4gICAgZXhlY3V0aW9uSUQ6IHN0cmluZztcclxuICAgIHN0YXJ0ZWREYXRlOiBEYXRlO1xyXG4gICAgZXJyb3I6IHN0cmluZztcclxuICAgIHN0YXR1czogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRXhlY3V0aW9uU3RhdHVzIGltcGxlbWVudHMgSUV4ZWN1dGlvblN0YXR1cyB7XHJcbiAgICBqb2JTY2hlZHVsZUlEOiBzdHJpbmc7XHJcbiAgICBleGVjdXRpb25JRDogc3RyaW5nO1xyXG4gICAgc3RhcnRlZERhdGU6IERhdGU7XHJcbiAgICBlcnJvcjogc3RyaW5nO1xyXG4gICAgc3RhdHVzOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUV4ZWN1dGlvblBhcmFtZXRlcnMge1xyXG4gICAgZXhlY3V0aW9uU2VydmVyOiBzdHJpbmc7XHJcbiAgICBwcm9ncmFtTmFtZTogc3RyaW5nO1xyXG4gICAgZXh0ZXJuYWxOYW1lOiBzdHJpbmc7XHJcbiAgICBwcm9ncmFtRU1TNTogYm9vbGVhbjtcclxuICAgIHByb2dyYW1WZXJzaW9uOiBzdHJpbmc7XHJcbiAgICBidXNpbmVzc1BhcmFtczogQXJyYXk8YW55PjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEV4ZWN1dGlvblBhcmFtZXRlcnMgaW1wbGVtZW50cyBJRXhlY3V0aW9uUGFyYW1ldGVycyB7XHJcbiAgICBleGVjdXRpb25TZXJ2ZXI6IHN0cmluZztcclxuICAgIHByb2dyYW1OYW1lOiBzdHJpbmc7XHJcbiAgICBleHRlcm5hbE5hbWU6IHN0cmluZztcclxuICAgIHByb2dyYW1FTVM1OiBib29sZWFuO1xyXG4gICAgcHJvZ3JhbVZlcnNpb246IHN0cmluZztcclxuICAgIGJ1c2luZXNzUGFyYW1zOiBBcnJheTxhbnk+O1xyXG59XHJcbiJdfQ==
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=
@@ -1,183 +1,208 @@
1
- import { Injectable } from '@angular/core';
2
- import { HttpErrorResponse } from '@angular/common/http';
3
- import { map } from 'rxjs/operators';
4
- import { ExecutionStatus } from './totvs-schedule-execution.model';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common/http";
7
- export class TotvsScheduleExecutionService {
8
- constructor(http) {
9
- this.http = http;
10
- this.headers = { headers: { 'X-PO-Screen-Lock': 'true' } };
11
- this.urlCadServidor = '/dts/datasul-rest/resources/prg/btb/v1/servidoresExecucao';
12
- this.urlJobScheduler = '/dts/datasul-rest/resources/prg/framework/v1/jobScheduler';
13
- this.urlJobExecution = '/dts/datasul-rest/resources/prg/framework/v1/jobExecution';
14
- }
15
- getFilteredItems(params) {
16
- const urlParams = new Array();
17
- urlParams.push(`pageSize=${params.pageSize.toString()}`);
18
- urlParams.push(`page=${params.page.toString()}`);
19
- if (params.filter && params.filter.length > 0) {
20
- urlParams.push(`quickSearch=${params.filter}`);
21
- }
22
- return this.http.get(`${this.urlCadServidor}?${urlParams.join('&')}`);
23
- }
24
- getObjectByValue(id) {
25
- return this.http.get(`${this.urlCadServidor}/${id}`, this.headers);
26
- }
27
- createExecution(parameters, loading) {
28
- const params = JSON.parse(JSON.stringify(parameters).replace(/\\\\/g, '*|'));
29
- if (loading) {
30
- return this.http.post(`${this.urlJobScheduler}`, params, this.headers);
31
- }
32
- else {
33
- return this.http.post(`${this.urlJobScheduler}`, params);
34
- }
35
- }
36
- createExecutionForNow(executionParams, loading) {
37
- let jobScheduleParams;
38
- const date = new Date();
39
- const params = JSON.parse(JSON.stringify(executionParams).replace(/\\\\/g, '*|'));
40
- if (!params.businessParams || params.businessParams.length === 0) {
41
- params.businessParams = [{ chave: '', valor: '' }];
42
- }
43
- jobScheduleParams = {};
44
- jobScheduleParams.status = 'active';
45
- jobScheduleParams.processID = params.programName;
46
- jobScheduleParams.firstExecution = `${date.getFullYear()}-${(date.getMonth() + 1)}-${date.getDate()}T${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}:00.000Z`;
47
- jobScheduleParams.recurrent = false;
48
- jobScheduleParams.executionParameter = {
49
- parametros: [
50
- { chave: 'rpwServer', valor: params.executionServer },
51
- { chave: 'RPW_PROGRAM', valor: params.externalName },
52
- { chave: 'RPW_PRG_EMS5', valor: params.programEMS5 ? 'yes' : 'no' },
53
- { chave: 'RPW_PRG_VERS', valor: params.programVersion },
54
- { parametros_negocio: params.businessParams }
55
- ]
56
- };
57
- if (loading) {
58
- return this.http.post(`${this.urlJobScheduler}`, jobScheduleParams, this.headers);
59
- }
60
- else {
61
- return this.http.post(`${this.urlJobScheduler}`, jobScheduleParams);
62
- }
63
- }
64
- getExecutionByJobScheduleID(jobScheduleID, loading = false) {
65
- const url = `${this.urlJobExecution}?jobScheduleID=${jobScheduleID}`;
66
- return this.getExecution(url, loading).pipe(map((response) => this.transformExecution('jobScheduleID', response)));
67
- }
68
- getExecutionByExecutionID(executionID, loading = false) {
69
- const url = `${this.urlJobExecution}/${executionID}`;
70
- return this.getExecution(url, loading).pipe(map((response) => this.transformExecution('executionID', response)));
71
- }
72
- getExecution(url, loading) {
73
- if (loading) {
74
- return this.http.get(url, this.headers);
75
- }
76
- else {
77
- return this.http.get(url);
78
- }
79
- }
80
- transformExecution(type, response) {
81
- if (!response || !response.items || response.items.length === 0) {
82
- return;
83
- }
84
- response = response.items[0];
85
- const execStatus = new ExecutionStatus();
86
- execStatus.jobScheduleID = response.jobScheduleID;
87
- execStatus.executionID = response.executionID;
88
- execStatus.startedDate = response.startedDate;
89
- execStatus.error = response.error;
90
- execStatus.status = response.status;
91
- return execStatus;
92
- }
93
- followUpExcByJobScheduleID(jobScheduleID, intervalNum, fncCallBack, loading = false) {
94
- this.followUpExecution('jobScheduleID', jobScheduleID, intervalNum, fncCallBack, loading);
95
- }
96
- followUpExcByExecutionID(executionID, intervalNum, fncCallBack, loading = false) {
97
- this.followUpExecution('executionID', executionID, intervalNum, fncCallBack, loading);
98
- }
99
- followUpExecution(type, execID, intervalNum, fncCallBack, loading) {
100
- this.jobExecutionSubscription$ = null;
101
- const intervalID = setInterval(() => {
102
- const execStatus = new ExecutionStatus();
103
- execStatus.jobScheduleID = (type === 'jobScheduleID') ? execID : '';
104
- execStatus.executionID = (type === 'executionID') ? execID : '';
105
- execStatus.startedDate = null;
106
- execStatus.error = '';
107
- execStatus.status = 'PENDING'; // PENDING, RUNNING, SUCCESS, FAILURE
108
- if (this.jobExecutionSubscription$) {
109
- return;
110
- }
111
- if (type === 'jobScheduleID') {
112
- this.jobExecutionSubscription$ = this.getExecutionByJobScheduleID(execID, loading)
113
- .subscribe((response) => {
114
- this.followUpExecReturnOk(execID, execStatus, response, intervalID, fncCallBack);
115
- }, (error) => {
116
- this.followUpExecReturnError(error, execStatus, intervalID, fncCallBack);
117
- });
118
- }
119
- if (type === 'executionID') {
120
- this.jobExecutionSubscription$ = this.getExecutionByExecutionID(execID, loading)
121
- .subscribe((response) => {
122
- this.followUpExecReturnOk(execID, execStatus, response, intervalID, fncCallBack);
123
- }, (error) => {
124
- this.followUpExecReturnError(error, execStatus, intervalID, fncCallBack);
125
- });
126
- }
127
- }, intervalNum);
128
- }
129
- followUpExecReturnOk(execID, execStatus, response, intervalID, fncCallBack) {
130
- if (response) {
131
- execStatus = response;
132
- }
133
- else {
134
- execStatus.error = `Agendamento não encontrado com ID: ${execID}`;
135
- execStatus.status = 'FAILURE';
136
- }
137
- if (!fncCallBack(execStatus) ||
138
- execStatus.status === 'SUCCESS' ||
139
- execStatus.status === 'FAILURE') {
140
- clearInterval(intervalID);
141
- }
142
- this.jobExecutionSubscription$ = null;
143
- }
144
- followUpExecReturnError(error, execStatus, intervalID, fncCallBack) {
145
- let erroDesc = '';
146
- if (error instanceof HttpErrorResponse) {
147
- erroDesc = error.message;
148
- if (error.error) {
149
- erroDesc = '';
150
- if (error.error.code) {
151
- erroDesc = error.error.code;
152
- }
153
- if (error.error.message) {
154
- erroDesc = `${erroDesc} - ${error.error.message}`;
155
- }
156
- if (error.error.detailedMessage) {
157
- erroDesc = `${erroDesc} - ${error.error.detailedMessage}`;
158
- }
159
- }
160
- }
161
- else {
162
- erroDesc = error;
163
- }
164
- execStatus.error = erroDesc;
165
- execStatus.status = 'FAILURE';
166
- fncCallBack(execStatus);
167
- clearInterval(intervalID);
168
- this.jobExecutionSubscription$ = null;
169
- }
170
- addZero(num) {
171
- let str = `${num}`;
172
- if (num < 10) {
173
- str = `0${num}`;
174
- }
175
- return str;
176
- }
177
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TotvsScheduleExecutionService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
178
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TotvsScheduleExecutionService }); }
179
- }
180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TotvsScheduleExecutionService, decorators: [{
181
- type: Injectable
182
- }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kdHMtYmFja29mZmljZS11dGlsL3NyYy9saWIvY29tcG9uZW50cy90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24vdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLGVBQWUsRUFBMEMsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBRzNHLE1BQU0sT0FBTyw2QkFBNkI7SUFhdEMsWUFBbUIsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQVgzQixZQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBRXRELG1CQUFjLEdBQUcsMkRBQTJELENBQUM7UUFDN0Usb0JBQWUsR0FBRywyREFBMkQsQ0FBQztRQUM5RSxvQkFBZSxHQUFHLDJEQUEyRCxDQUFDO0lBTy9DLENBQUM7SUFFeEMsZ0JBQWdCLENBQUMsTUFBbUM7UUFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUV0QyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDekQsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpELElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENB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RyxFQUFFLENBQUM7U0FBRTtRQUNsQyxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7a0lBek1RLDZCQUE2QjtzSUFBN0IsNkJBQTZCOzs0RkFBN0IsNkJBQTZCO2tCQUR6QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUG9Mb29rdXBGaWx0ZXJlZEl0ZW1zUGFyYW1zIH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBFeGVjdXRpb25TdGF0dXMsIElFeGVjdXRpb25QYXJhbWV0ZXJzLCBJRXhlY3V0aW9uU3RhdHVzIH0gZnJvbSAnLi90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24ubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVG90dnNTY2hlZHVsZUV4ZWN1dGlvblNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgaGVhZGVycyA9IHsgaGVhZGVyczogeyAnWC1QTy1TY3JlZW4tTG9jayc6ICd0cnVlJyB9IH07XHJcblxyXG4gICAgcHJpdmF0ZSB1cmxDYWRTZXJ2aWRvciA9ICcvZHRzL2RhdGFzdWwtcmVzdC9yZXNvdXJjZXMvcHJnL2J0Yi92MS9zZXJ2aWRvcmVzRXhlY3VjYW8nO1xyXG4gICAgcHJpdmF0ZSB1cmxKb2JTY2hlZHVsZXIgPSAnL2R0cy9kYXRhc3VsLXJlc3QvcmVzb3VyY2VzL3ByZy9mcmFtZXdvcmsvdjEvam9iU2NoZWR1bGVyJztcclxuICAgIHByaXZhdGUgdXJsSm9iRXhlY3V0aW9uID0gJy9kdHMvZGF0YXN1bC1yZXN0L3Jlc291cmNlcy9wcmcvZnJhbWV3b3JrL3YxL2pvYkV4ZWN1dGlvbic7XHJcblxyXG4gICAgLy8gcHJpdmF0ZSB1cmxDYWRTZXJ2aWRvciA9ICcvZ2VuZXJpY3Nab29tJztcclxuICAgIC8vIHByaXZhdGUgdXJsSm9iU2NoZWR1bGVyID0gJy9qb2JTY2hlZHVsZXInO1xyXG5cclxuICAgIHByaXZhdGUgam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50KSB7IH1cclxuXHJcbiAgICBnZXRGaWx0ZXJlZEl0ZW1zKHBhcmFtczogUG9Mb29rdXBGaWx0ZXJlZEl0ZW1zUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG5cclxuICAgICAgICB1cmxQYXJhbXMucHVzaChgcGFnZVNpemU9JHtwYXJhbXMucGFnZVNpemUudG9TdHJpbmcoKX1gKTtcclxuICAgICAgICB1cmxQYXJhbXMucHVzaChgcGFnZT0ke3BhcmFtcy5wYWdlLnRvU3RyaW5nKCl9YCk7XHJcblxyXG4gICAgICAgIGlmIChwYXJhbXMuZmlsdGVyICYmIHBhcmFtcy5maWx0ZXIubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB1cmxQYXJhbXMucHVzaChgcXVpY2tTZWFyY2g9JHtwYXJhbXMuZmlsdGVyfWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy51cmxDYWRTZXJ2aWRvcn0/JHt1cmxQYXJhbXMuam9pbignJicpfWApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE9iamVjdEJ5VmFsdWUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLnVybENhZFNlcnZpZG9yfS8ke2lkfWAsIHRoaXMuaGVhZGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlRXhlY3V0aW9uKHBhcmFtZXRlcnM6IE9iamVjdCwgbG9hZGluZzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnKnwnKSk7XHJcblxyXG4gICAgICAgIGlmIChsb2FkaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnVybEpvYlNjaGVkdWxlcn1gLCBwYXJhbXMsIHRoaXMuaGVhZGVycyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudXJsSm9iU2NoZWR1bGVyfWAsIHBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUV4ZWN1dGlvbkZvck5vdyhleGVjdXRpb25QYXJhbXM6IElFeGVjdXRpb25QYXJhbWV0ZXJzLCBsb2FkaW5nOiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBsZXQgam9iU2NoZWR1bGVQYXJhbXM6IGFueTtcclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShleGVjdXRpb25QYXJhbXMpLnJlcGxhY2UoL1xcXFxcXFxcL2csICcqfCcpKTtcclxuICAgICAgICBpZiAoIXBhcmFtcy5idXNpbmVzc1BhcmFtcyB8fCBwYXJhbXMuYnVzaW5lc3NQYXJhbXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcy5idXNpbmVzc1BhcmFtcyA9IFt7IGNoYXZlOiAnJywgdmFsb3I6ICcnIH1dO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgam9iU2NoZWR1bGVQYXJhbXMgPSB7fTtcclxuICAgICAgICBqb2JTY2hlZHVsZVBhcmFtcy5zdGF0dXMgPSAnYWN0aXZlJztcclxuICAgICAgICBqb2JTY2hlZHVsZVBhcmFtcy5wcm9jZXNzSUQgPSBwYXJhbXMucHJvZ3JhbU5hbWU7XHJcbiAgICAgICAgam9iU2NoZWR1bGVQYXJhbXMuZmlyc3RFeGVjdXRpb24gPSBgJHtkYXRlLmdldEZ1bGxZZWFyKCl9LSR7KGRhdGUuZ2V0TW9udGgoKSArIDEpfS0ke2RhdGUuZ2V0RGF0ZSgpfVQke3RoaXMuYWRkWmVybyhkYXRlLmdldEhvdXJzKCkpfToke3RoaXMuYWRkWmVybyhkYXRlLmdldE1pbnV0ZXMoKSl9OjAwLjAwMFpgO1xyXG4gICAgICAgIGpvYlNjaGVkdWxlUGFyYW1zLnJlY3VycmVudCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBqb2JTY2hlZHVsZVBhcmFtcy5leGVjdXRpb25QYXJhbWV0ZXIgPSB7XHJcbiAgICAgICAgICAgIHBhcmFtZXRyb3M6IFtcclxuICAgICAgICAgICAgICAgIHsgY2hhdmU6ICdycHdTZXJ2ZXInLCB2YWxvcjogcGFyYW1zLmV4ZWN1dGlvblNlcnZlciB9LFxyXG4gICAgICAgICAgICAgICAgeyBjaGF2ZTogJ1JQV19QUk9HUkFNJywgdmFsb3I6IHBhcmFtcy5leHRlcm5hbE5hbWUgfSxcclxuICAgICAgICAgICAgICAgIHsgY2hhdmU6ICdSUFdfUFJHX0VNUzUnLCB2YWxvcjogcGFyYW1zLnByb2dyYW1FTVM1ID8gJ3llcycgOiAnbm8nIH0sXHJcbiAgICAgICAgICAgICAgICB7IGNoYXZlOiAnUlBXX1BSR19WRVJTJywgdmFsb3I6IHBhcmFtcy5wcm9ncmFtVmVyc2lvbiB9LFxyXG4gICAgICAgICAgICAgICAgeyBwYXJhbWV0cm9zX25lZ29jaW86IHBhcmFtcy5idXNpbmVzc1BhcmFtcyB9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAobG9hZGluZykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy51cmxKb2JTY2hlZHVsZXJ9YCwgam9iU2NoZWR1bGVQYXJhbXMsIHRoaXMuaGVhZGVycyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudXJsSm9iU2NoZWR1bGVyfWAsIGpvYlNjaGVkdWxlUGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RXhlY3V0aW9uQnlKb2JTY2hlZHVsZUlEKGpvYlNjaGVkdWxlSUQ6IHN0cmluZywgbG9hZGluZyA9IGZhbHNlKTogT2JzZXJ2YWJsZTxJRXhlY3V0aW9uU3RhdHVzPiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy51cmxKb2JFeGVjdXRpb259P2pvYlNjaGVkdWxlSUQ9JHtqb2JTY2hlZHVsZUlEfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXhlY3V0aW9uKHVybCwgbG9hZGluZykucGlwZShcclxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gdGhpcy50cmFuc2Zvcm1FeGVjdXRpb24oJ2pvYlNjaGVkdWxlSUQnLCByZXNwb25zZSkpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRFeGVjdXRpb25CeUV4ZWN1dGlvbklEKGV4ZWN1dGlvbklEOiBzdHJpbmcsIGxvYWRpbmcgPSBmYWxzZSk6IE9ic2VydmFibGU8SUV4ZWN1dGlvblN0YXR1cz4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMudXJsSm9iRXhlY3V0aW9ufS8ke2V4ZWN1dGlvbklEfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXhlY3V0aW9uKHVybCwgbG9hZGluZykucGlwZShcclxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gdGhpcy50cmFuc2Zvcm1FeGVjdXRpb24oJ2V4ZWN1dGlvbklEJywgcmVzcG9uc2UpKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRFeGVjdXRpb24odXJsOiBzdHJpbmcsIGxvYWRpbmc6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGlmIChsb2FkaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgdGhpcy5oZWFkZXJzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHRyYW5zZm9ybUV4ZWN1dGlvbih0eXBlOiBzdHJpbmcsIHJlc3BvbnNlOiBhbnkpOiBJRXhlY3V0aW9uU3RhdHVzIHtcclxuICAgICAgICBpZiAoIXJlc3BvbnNlIHx8ICFyZXNwb25zZS5pdGVtcyB8fCByZXNwb25zZS5pdGVtcy5sZW5ndGggPT09IDApIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgcmVzcG9uc2UgPSByZXNwb25zZS5pdGVtc1swXTtcclxuXHJcbiAgICAgICAgY29uc3QgZXhlY1N0YXR1cyA9IG5ldyBFeGVjdXRpb25TdGF0dXMoKTtcclxuICAgICAgICBleGVjU3RhdHVzLmpvYlNjaGVkdWxlSUQgPSByZXNwb25zZS5qb2JTY2hlZHVsZUlEO1xyXG4gICAgICAgIGV4ZWNTdGF0dXMuZXhlY3V0aW9uSUQgPSByZXNwb25zZS5leGVjdXRpb25JRDtcclxuICAgICAgICBleGVjU3RhdHVzLnN0YXJ0ZWREYXRlID0gcmVzcG9uc2Uuc3RhcnRlZERhdGU7XHJcbiAgICAgICAgZXhlY1N0YXR1cy5lcnJvciA9IHJlc3BvbnNlLmVycm9yO1xyXG4gICAgICAgIGV4ZWNTdGF0dXMuc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzO1xyXG5cclxuICAgICAgICByZXR1cm4gZXhlY1N0YXR1cztcclxuICAgIH1cclxuXHJcbiAgICBmb2xsb3dVcEV4Y0J5Sm9iU2NoZWR1bGVJRChqb2JTY2hlZHVsZUlEOiBzdHJpbmcsIGludGVydmFsTnVtOiBudW1iZXIsIGZuY0NhbGxCYWNrOiBGdW5jdGlvbiwgbG9hZGluZyA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWN1dGlvbignam9iU2NoZWR1bGVJRCcsIGpvYlNjaGVkdWxlSUQsIGludGVydmFsTnVtLCBmbmNDYWxsQmFjaywgbG9hZGluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9sbG93VXBFeGNCeUV4ZWN1dGlvbklEKGV4ZWN1dGlvbklEOiBzdHJpbmcsIGludGVydmFsTnVtOiBudW1iZXIsIGZuY0NhbGxCYWNrOiBGdW5jdGlvbiwgbG9hZGluZyA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWN1dGlvbignZXhlY3V0aW9uSUQnLCBleGVjdXRpb25JRCwgaW50ZXJ2YWxOdW0sIGZuY0NhbGxCYWNrLCBsb2FkaW5nKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZvbGxvd1VwRXhlY3V0aW9uKHR5cGU6IHN0cmluZywgZXhlY0lEOiBzdHJpbmcsXHJcbiAgICAgICAgaW50ZXJ2YWxOdW06IG51bWJlciwgZm5jQ2FsbEJhY2s6IEZ1bmN0aW9uLCBsb2FkaW5nOiBib29sZWFuKTogdm9pZCB7XHJcblxyXG4gICAgICAgIHRoaXMuam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJCA9IG51bGw7XHJcblxyXG4gICAgICAgIGNvbnN0IGludGVydmFsSUQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4ZWNTdGF0dXMgPSBuZXcgRXhlY3V0aW9uU3RhdHVzKCk7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuam9iU2NoZWR1bGVJRCA9ICh0eXBlID09PSAnam9iU2NoZWR1bGVJRCcpID8gZXhlY0lEIDogJyc7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuZXhlY3V0aW9uSUQgPSAodHlwZSA9PT0gJ2V4ZWN1dGlvbklEJykgPyBleGVjSUQgOiAnJztcclxuICAgICAgICAgICAgZXhlY1N0YXR1cy5zdGFydGVkRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuZXJyb3IgPSAnJztcclxuICAgICAgICAgICAgZXhlY1N0YXR1cy5zdGF0dXMgPSAnUEVORElORyc7IC8vIFBFTkRJTkcsIFJVTk5JTkcsIFNVQ0NFU1MsIEZBSUxVUkVcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmpvYkV4ZWN1dGlvblN1YnNjcmlwdGlvbiQpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2pvYlNjaGVkdWxlSUQnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmpvYkV4ZWN1dGlvblN1YnNjcmlwdGlvbiQgPSB0aGlzLmdldEV4ZWN1dGlvbkJ5Sm9iU2NoZWR1bGVJRChleGVjSUQsIGxvYWRpbmcpXHJcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IElFeGVjdXRpb25TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWNSZXR1cm5PayhleGVjSUQsIGV4ZWNTdGF0dXMsIHJlc3BvbnNlLCBpbnRlcnZhbElELCBmbmNDYWxsQmFjayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9sbG93VXBFeGVjUmV0dXJuRXJyb3IoZXJyb3IsIGV4ZWNTdGF0dXMsIGludGVydmFsSUQsIGZuY0NhbGxCYWNrKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdleGVjdXRpb25JRCcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJCA9IHRoaXMuZ2V0RXhlY3V0aW9uQnlFeGVjdXRpb25JRChleGVjSUQsIGxvYWRpbmcpXHJcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IElFeGVjdXRpb25TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWNSZXR1cm5PayhleGVjSUQsIGV4ZWNTdGF0dXMsIHJlc3BvbnNlLCBpbnRlcnZhbElELCBmbmNDYWxsQmFjayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9sbG93VXBFeGVjUmV0dXJuRXJyb3IoZXJyb3IsIGV4ZWNTdGF0dXMsIGludGVydmFsSUQsIGZuY0NhbGxCYWNrKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9LCBpbnRlcnZhbE51bSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmb2xsb3dVcEV4ZWNSZXR1cm5PayhleGVjSUQ6IHN0cmluZywgZXhlY1N0YXR1czogSUV4ZWN1dGlvblN0YXR1cywgcmVzcG9uc2U6IElFeGVjdXRpb25TdGF0dXMsXHJcbiAgICAgICAgaW50ZXJ2YWxJRDogYW55LCBmbmNDYWxsQmFjazogRnVuY3Rpb24pOiB2b2lkIHtcclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMgPSByZXNwb25zZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBleGVjU3RhdHVzLmVycm9yID0gYEFnZW5kYW1lbnRvIG7Do28gZW5jb250cmFkbyBjb20gSUQ6ICR7ZXhlY0lEfWA7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuc3RhdHVzID0gJ0ZBSUxVUkUnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFmbmNDYWxsQmFjayhleGVjU3RhdHVzKSB8fFxyXG4gICAgICAgICAgICBleGVjU3RhdHVzLnN0YXR1cyA9PT0gJ1NVQ0NFU1MnIHx8XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuc3RhdHVzID09PSAnRkFJTFVSRScpIHtcclxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElEKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmb2xsb3dVcEV4ZWNSZXR1cm5FcnJvcihlcnJvcjogYW55LCBleGVjU3RhdHVzOiBJRXhlY3V0aW9uU3RhdHVzLFxyXG4gICAgICAgIGludGVydmFsSUQ6IGFueSwgZm5jQ2FsbEJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XHJcblxyXG4gICAgICAgIGxldCBlcnJvRGVzYyA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICAgICAgICBlcnJvRGVzYyA9IGVycm9yLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIGlmIChlcnJvci5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgZXJyb0Rlc2MgPSAnJztcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvci5lcnJvci5jb2RlKSB7IGVycm9EZXNjID0gZXJyb3IuZXJyb3IuY29kZTsgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLm1lc3NhZ2UpIHsgZXJyb0Rlc2MgPSBgJHtlcnJvRGVzY30gLSAke2Vycm9yLmVycm9yLm1lc3NhZ2V9YDsgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLmRldGFpbGVkTWVzc2FnZSkgeyBlcnJvRGVzYyA9IGAke2Vycm9EZXNjfSAtICR7ZXJyb3IuZXJyb3IuZGV0YWlsZWRNZXNzYWdlfWA7IH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGVycm9EZXNjID0gZXJyb3I7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBleGVjU3RhdHVzLmVycm9yID0gZXJyb0Rlc2M7XHJcbiAgICAgICAgZXhlY1N0YXR1cy5zdGF0dXMgPSAnRkFJTFVSRSc7XHJcbiAgICAgICAgZm5jQ2FsbEJhY2soZXhlY1N0YXR1cyk7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElEKTtcclxuICAgICAgICB0aGlzLmpvYkV4ZWN1dGlvblN1YnNjcmlwdGlvbiQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkWmVybyhudW06IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHN0ciA9IGAke251bX1gO1xyXG4gICAgICAgIGlmIChudW0gPCAxMCkgeyBzdHIgPSBgMCR7bnVtfWA7IH1cclxuICAgICAgICByZXR1cm4gc3RyO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
1
+ import { Injectable } from '@angular/core';
2
+ import { HttpErrorResponse } from '@angular/common/http';
3
+ import { map } from 'rxjs/operators';
4
+ import { ExecutionStatus } from './totvs-schedule-execution.model';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common/http";
7
+ export class TotvsScheduleExecutionService {
8
+ constructor(http) {
9
+ this.http = http;
10
+ this.headers = { headers: { 'X-PO-Screen-Lock': 'true' } };
11
+ this.urlCadServidor = '/dts/datasul-rest/resources/prg/btb/v1/servidoresExecucao';
12
+ this.urlJobScheduler = '/dts/datasul-rest/resources/prg/framework/v1/jobScheduler';
13
+ this.urlJobExecution = '/dts/datasul-rest/resources/prg/framework/v1/jobExecution';
14
+ }
15
+ getFilteredItems(params) {
16
+ const urlParams = new Array();
17
+ urlParams.push(`pageSize=${params.pageSize.toString()}`);
18
+ urlParams.push(`page=${params.page.toString()}`);
19
+ if (params.filter && params.filter.length > 0) {
20
+ urlParams.push(`quickSearch=${params.filter}`);
21
+ }
22
+ return this.http.get(`${this.urlCadServidor}?${urlParams.join('&')}`);
23
+ }
24
+ getObjectByValue(id) {
25
+ return this.http.get(`${this.urlCadServidor}/${id}`, this.headers);
26
+ }
27
+ createExecution(parameters, loading) {
28
+ const params = JSON.parse(JSON.stringify(parameters).replace(/\\\\/g, '*|'));
29
+ if (loading) {
30
+ return this.http.post(`${this.urlJobScheduler}`, params, this.headers);
31
+ }
32
+ else {
33
+ return this.http.post(`${this.urlJobScheduler}`, params);
34
+ }
35
+ }
36
+ createExecutionForNow(executionParams, loading) {
37
+ let jobScheduleParams;
38
+ const date = new Date();
39
+ const params = JSON.parse(JSON.stringify(executionParams).replace(/\\\\/g, '*|'));
40
+ if (!params.programEMS5) {
41
+ params.programEMS5 = false;
42
+ }
43
+ if (!params.programStyle) {
44
+ params.programStyle = 0;
45
+ }
46
+ if (!params.programVersion) {
47
+ params.programVersion = '';
48
+ }
49
+ if (!params.businessParams || params.businessParams.length === 0) {
50
+ params.businessParams = [{ chave: '', valor: '' }];
51
+ }
52
+ jobScheduleParams = {};
53
+ jobScheduleParams.status = 'active';
54
+ jobScheduleParams.processID = params.programName;
55
+ jobScheduleParams.firstExecution = `${date.getFullYear()}-${(date.getMonth() + 1)}-${date.getDate()}T${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}:00.000Z`;
56
+ jobScheduleParams.recurrent = false;
57
+ jobScheduleParams.executionParameter = {
58
+ parametros: [
59
+ { chave: 'rpwServer', valor: params.executionServer },
60
+ { chave: 'RPW_PROGRAM', valor: params.externalName },
61
+ { chave: 'RPW_PRG_EMS5', valor: params.programEMS5 ? 'yes' : 'no' },
62
+ { chave: 'RPW_PRG_ESTILO', valor: params.programStyle },
63
+ { chave: 'RPW_PRG_VERS', valor: params.programVersion },
64
+ { parametros_negocio: params.businessParams }
65
+ ]
66
+ };
67
+ if (params.paramDigitDef && params.paramDigitDef.length > 0) {
68
+ jobScheduleParams.executionParameter.parametros.push({
69
+ param_digita_def: params.paramDigitDef
70
+ });
71
+ }
72
+ if (params.paramDigitData && params.paramDigitData.length > 0) {
73
+ jobScheduleParams.executionParameter.parametros.push({
74
+ param_digita_dados: params.paramDigitData
75
+ });
76
+ }
77
+ if (params.paramSelections && params.paramSelections.length > 0) {
78
+ jobScheduleParams.executionParameter.parametros.push({
79
+ selecoes: params.paramSelections
80
+ });
81
+ }
82
+ if (loading) {
83
+ return this.http.post(`${this.urlJobScheduler}`, jobScheduleParams, this.headers);
84
+ }
85
+ else {
86
+ return this.http.post(`${this.urlJobScheduler}`, jobScheduleParams);
87
+ }
88
+ }
89
+ getExecutionByJobScheduleID(jobScheduleID, loading = false) {
90
+ const url = `${this.urlJobExecution}?jobScheduleID=${jobScheduleID}`;
91
+ return this.getExecution(url, loading).pipe(map((response) => this.transformExecution('jobScheduleID', response)));
92
+ }
93
+ getExecutionByExecutionID(executionID, loading = false) {
94
+ const url = `${this.urlJobExecution}/${executionID}`;
95
+ return this.getExecution(url, loading).pipe(map((response) => this.transformExecution('executionID', response)));
96
+ }
97
+ getExecution(url, loading) {
98
+ if (loading) {
99
+ return this.http.get(url, this.headers);
100
+ }
101
+ else {
102
+ return this.http.get(url);
103
+ }
104
+ }
105
+ transformExecution(type, response) {
106
+ if (!response || !response.items || response.items.length === 0) {
107
+ return;
108
+ }
109
+ response = response.items[0];
110
+ const execStatus = new ExecutionStatus();
111
+ execStatus.jobScheduleID = response.jobScheduleID;
112
+ execStatus.executionID = response.executionID;
113
+ execStatus.startedDate = response.startedDate;
114
+ execStatus.error = response.error;
115
+ execStatus.status = response.status;
116
+ return execStatus;
117
+ }
118
+ followUpExcByJobScheduleID(jobScheduleID, intervalNum, fncCallBack, loading = false) {
119
+ this.followUpExecution('jobScheduleID', jobScheduleID, intervalNum, fncCallBack, loading);
120
+ }
121
+ followUpExcByExecutionID(executionID, intervalNum, fncCallBack, loading = false) {
122
+ this.followUpExecution('executionID', executionID, intervalNum, fncCallBack, loading);
123
+ }
124
+ followUpExecution(type, execID, intervalNum, fncCallBack, loading) {
125
+ this.jobExecutionSubscription$ = null;
126
+ const intervalID = setInterval(() => {
127
+ const execStatus = new ExecutionStatus();
128
+ execStatus.jobScheduleID = (type === 'jobScheduleID') ? execID : '';
129
+ execStatus.executionID = (type === 'executionID') ? execID : '';
130
+ execStatus.startedDate = null;
131
+ execStatus.error = '';
132
+ execStatus.status = 'PENDING'; // PENDING, RUNNING, SUCCESS, FAILURE
133
+ if (this.jobExecutionSubscription$) {
134
+ return;
135
+ }
136
+ if (type === 'jobScheduleID') {
137
+ this.jobExecutionSubscription$ = this.getExecutionByJobScheduleID(execID, loading)
138
+ .subscribe((response) => {
139
+ this.followUpExecReturnOk(execID, execStatus, response, intervalID, fncCallBack);
140
+ }, (error) => {
141
+ this.followUpExecReturnError(error, execStatus, intervalID, fncCallBack);
142
+ });
143
+ }
144
+ if (type === 'executionID') {
145
+ this.jobExecutionSubscription$ = this.getExecutionByExecutionID(execID, loading)
146
+ .subscribe((response) => {
147
+ this.followUpExecReturnOk(execID, execStatus, response, intervalID, fncCallBack);
148
+ }, (error) => {
149
+ this.followUpExecReturnError(error, execStatus, intervalID, fncCallBack);
150
+ });
151
+ }
152
+ }, intervalNum);
153
+ }
154
+ followUpExecReturnOk(execID, execStatus, response, intervalID, fncCallBack) {
155
+ if (response) {
156
+ execStatus = response;
157
+ }
158
+ else {
159
+ execStatus.error = `Agendamento não encontrado com ID: ${execID}`;
160
+ execStatus.status = 'FAILURE';
161
+ }
162
+ if (!fncCallBack(execStatus) ||
163
+ execStatus.status === 'SUCCESS' ||
164
+ execStatus.status === 'FAILURE') {
165
+ clearInterval(intervalID);
166
+ }
167
+ this.jobExecutionSubscription$ = null;
168
+ }
169
+ followUpExecReturnError(error, execStatus, intervalID, fncCallBack) {
170
+ let erroDesc = '';
171
+ if (error instanceof HttpErrorResponse) {
172
+ erroDesc = error.message;
173
+ if (error.error) {
174
+ erroDesc = '';
175
+ if (error.error.code) {
176
+ erroDesc = error.error.code;
177
+ }
178
+ if (error.error.message) {
179
+ erroDesc = `${erroDesc} - ${error.error.message}`;
180
+ }
181
+ if (error.error.detailedMessage) {
182
+ erroDesc = `${erroDesc} - ${error.error.detailedMessage}`;
183
+ }
184
+ }
185
+ }
186
+ else {
187
+ erroDesc = error;
188
+ }
189
+ execStatus.error = erroDesc;
190
+ execStatus.status = 'FAILURE';
191
+ fncCallBack(execStatus);
192
+ clearInterval(intervalID);
193
+ this.jobExecutionSubscription$ = null;
194
+ }
195
+ addZero(num) {
196
+ let str = `${num}`;
197
+ if (num < 10) {
198
+ str = `0${num}`;
199
+ }
200
+ return str;
201
+ }
202
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: TotvsScheduleExecutionService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
203
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: TotvsScheduleExecutionService }); }
204
+ }
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: TotvsScheduleExecutionService, decorators: [{
206
+ type: Injectable
207
+ }], ctorParameters: () => [{ type: i1.HttpClient }] });
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kdHMtYmFja29mZmljZS11dGlsL3NyYy9saWIvY29tcG9uZW50cy90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24vdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLGVBQWUsRUFBMEMsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBRzNHLE1BQU0sT0FBTyw2QkFBNkI7SUFhdEMsWUFBbUIsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQVgzQixZQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBRXRELG1CQUFjLEdBQUcsMkRBQTJELENBQUM7UUFDN0Usb0JBQWUsR0FBRywyREFBMkQsQ0FBQztRQUM5RSxvQkFBZSxHQUFHLDJEQUEyRCxDQUFDO0lBTy9DLENBQUM7SUFFeEMsZ0JBQWdCLENBQUMsTUFBbUM7UUFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUV0QyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDekQsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpELElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENB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LENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztJQUMxQyxDQUFDO0lBRU8sT0FBTyxDQUFDLEdBQVc7UUFDdkIsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQUMsQ0FBQztRQUNsQyxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7aUlBaE9RLDZCQUE2QjtxSUFBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUR6QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUG9Mb29rdXBGaWx0ZXJlZEl0ZW1zUGFyYW1zIH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBFeGVjdXRpb25TdGF0dXMsIElFeGVjdXRpb25QYXJhbWV0ZXJzLCBJRXhlY3V0aW9uU3RhdHVzIH0gZnJvbSAnLi90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24ubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVG90dnNTY2hlZHVsZUV4ZWN1dGlvblNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgaGVhZGVycyA9IHsgaGVhZGVyczogeyAnWC1QTy1TY3JlZW4tTG9jayc6ICd0cnVlJyB9IH07XHJcblxyXG4gICAgcHJpdmF0ZSB1cmxDYWRTZXJ2aWRvciA9ICcvZHRzL2RhdGFzdWwtcmVzdC9yZXNvdXJjZXMvcHJnL2J0Yi92MS9zZXJ2aWRvcmVzRXhlY3VjYW8nO1xyXG4gICAgcHJpdmF0ZSB1cmxKb2JTY2hlZHVsZXIgPSAnL2R0cy9kYXRhc3VsLXJlc3QvcmVzb3VyY2VzL3ByZy9mcmFtZXdvcmsvdjEvam9iU2NoZWR1bGVyJztcclxuICAgIHByaXZhdGUgdXJsSm9iRXhlY3V0aW9uID0gJy9kdHMvZGF0YXN1bC1yZXN0L3Jlc291cmNlcy9wcmcvZnJhbWV3b3JrL3YxL2pvYkV4ZWN1dGlvbic7XHJcblxyXG4gICAgLy8gcHJpdmF0ZSB1cmxDYWRTZXJ2aWRvciA9ICcvZ2VuZXJpY3Nab29tJztcclxuICAgIC8vIHByaXZhdGUgdXJsSm9iU2NoZWR1bGVyID0gJy9qb2JTY2hlZHVsZXInO1xyXG5cclxuICAgIHByaXZhdGUgam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50KSB7IH1cclxuXHJcbiAgICBnZXRGaWx0ZXJlZEl0ZW1zKHBhcmFtczogUG9Mb29rdXBGaWx0ZXJlZEl0ZW1zUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG5cclxuICAgICAgICB1cmxQYXJhbXMucHVzaChgcGFnZVNpemU9JHtwYXJhbXMucGFnZVNpemUudG9TdHJpbmcoKX1gKTtcclxuICAgICAgICB1cmxQYXJhbXMucHVzaChgcGFnZT0ke3BhcmFtcy5wYWdlLnRvU3RyaW5nKCl9YCk7XHJcblxyXG4gICAgICAgIGlmIChwYXJhbXMuZmlsdGVyICYmIHBhcmFtcy5maWx0ZXIubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB1cmxQYXJhbXMucHVzaChgcXVpY2tTZWFyY2g9JHtwYXJhbXMuZmlsdGVyfWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy51cmxDYWRTZXJ2aWRvcn0/JHt1cmxQYXJhbXMuam9pbignJicpfWApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE9iamVjdEJ5VmFsdWUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLnVybENhZFNlcnZpZG9yfS8ke2lkfWAsIHRoaXMuaGVhZGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlRXhlY3V0aW9uKHBhcmFtZXRlcnM6IE9iamVjdCwgbG9hZGluZzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnKnwnKSk7XHJcblxyXG4gICAgICAgIGlmIChsb2FkaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnVybEpvYlNjaGVkdWxlcn1gLCBwYXJhbXMsIHRoaXMuaGVhZGVycyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudXJsSm9iU2NoZWR1bGVyfWAsIHBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUV4ZWN1dGlvbkZvck5vdyhleGVjdXRpb25QYXJhbXM6IElFeGVjdXRpb25QYXJhbWV0ZXJzLCBsb2FkaW5nOiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBsZXQgam9iU2NoZWR1bGVQYXJhbXM6IGFueTtcclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShleGVjdXRpb25QYXJhbXMpLnJlcGxhY2UoL1xcXFxcXFxcL2csICcqfCcpKTtcclxuXHJcbiAgICAgICAgaWYgKCFwYXJhbXMucHJvZ3JhbUVNUzUpIHsgcGFyYW1zLnByb2dyYW1FTVM1ID0gZmFsc2U7IH1cclxuICAgICAgICBpZiAoIXBhcmFtcy5wcm9ncmFtU3R5bGUpIHsgcGFyYW1zLnByb2dyYW1TdHlsZSA9IDA7IH1cclxuICAgICAgICBpZiAoIXBhcmFtcy5wcm9ncmFtVmVyc2lvbikgeyBwYXJhbXMucHJvZ3JhbVZlcnNpb24gPSAnJzsgfVxyXG4gICAgICAgIGlmICghcGFyYW1zLmJ1c2luZXNzUGFyYW1zIHx8IHBhcmFtcy5idXNpbmVzc1BhcmFtcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcGFyYW1zLmJ1c2luZXNzUGFyYW1zID0gW3sgY2hhdmU6ICcnLCB2YWxvcjogJycgfV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBqb2JTY2hlZHVsZVBhcmFtcyA9IHt9O1xyXG4gICAgICAgIGpvYlNjaGVkdWxlUGFyYW1zLnN0YXR1cyA9ICdhY3RpdmUnO1xyXG4gICAgICAgIGpvYlNjaGVkdWxlUGFyYW1zLnByb2Nlc3NJRCA9IHBhcmFtcy5wcm9ncmFtTmFtZTtcclxuICAgICAgICBqb2JTY2hlZHVsZVBhcmFtcy5maXJzdEV4ZWN1dGlvbiA9IGAke2RhdGUuZ2V0RnVsbFllYXIoKX0tJHsoZGF0ZS5nZXRNb250aCgpICsgMSl9LSR7ZGF0ZS5nZXREYXRlKCl9VCR7dGhpcy5hZGRaZXJvKGRhdGUuZ2V0SG91cnMoKSl9OiR7dGhpcy5hZGRaZXJvKGRhdGUuZ2V0TWludXRlcygpKX06MDAuMDAwWmA7XHJcbiAgICAgICAgam9iU2NoZWR1bGVQYXJhbXMucmVjdXJyZW50ID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGpvYlNjaGVkdWxlUGFyYW1zLmV4ZWN1dGlvblBhcmFtZXRlciA9IHtcclxuICAgICAgICAgICAgcGFyYW1ldHJvczogW1xyXG4gICAgICAgICAgICAgICAgeyBjaGF2ZTogJ3Jwd1NlcnZlcicsIHZhbG9yOiBwYXJhbXMuZXhlY3V0aW9uU2VydmVyIH0sXHJcbiAgICAgICAgICAgICAgICB7IGNoYXZlOiAnUlBXX1BST0dSQU0nLCB2YWxvcjogcGFyYW1zLmV4dGVybmFsTmFtZSB9LFxyXG4gICAgICAgICAgICAgICAgeyBjaGF2ZTogJ1JQV19QUkdfRU1TNScsIHZhbG9yOiBwYXJhbXMucHJvZ3JhbUVNUzUgPyAneWVzJyA6ICdubycgfSxcclxuICAgICAgICAgICAgICAgIHsgY2hhdmU6ICdSUFdfUFJHX0VTVElMTycsIHZhbG9yOiBwYXJhbXMucHJvZ3JhbVN0eWxlIH0sXHJcbiAgICAgICAgICAgICAgICB7IGNoYXZlOiAnUlBXX1BSR19WRVJTJywgdmFsb3I6IHBhcmFtcy5wcm9ncmFtVmVyc2lvbiB9LFxyXG4gICAgICAgICAgICAgICAgeyBwYXJhbWV0cm9zX25lZ29jaW86IHBhcmFtcy5idXNpbmVzc1BhcmFtcyB9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAocGFyYW1zLnBhcmFtRGlnaXREZWYgJiYgcGFyYW1zLnBhcmFtRGlnaXREZWYubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBqb2JTY2hlZHVsZVBhcmFtcy5leGVjdXRpb25QYXJhbWV0ZXIucGFyYW1ldHJvcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhcmFtX2RpZ2l0YV9kZWY6IHBhcmFtcy5wYXJhbURpZ2l0RGVmXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHBhcmFtcy5wYXJhbURpZ2l0RGF0YSAmJiBwYXJhbXMucGFyYW1EaWdpdERhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBqb2JTY2hlZHVsZVBhcmFtcy5leGVjdXRpb25QYXJhbWV0ZXIucGFyYW1ldHJvcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhcmFtX2RpZ2l0YV9kYWRvczogcGFyYW1zLnBhcmFtRGlnaXREYXRhXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHBhcmFtcy5wYXJhbVNlbGVjdGlvbnMgJiYgcGFyYW1zLnBhcmFtU2VsZWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGpvYlNjaGVkdWxlUGFyYW1zLmV4ZWN1dGlvblBhcmFtZXRlci5wYXJhbWV0cm9zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgc2VsZWNvZXM6IHBhcmFtcy5wYXJhbVNlbGVjdGlvbnNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobG9hZGluZykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy51cmxKb2JTY2hlZHVsZXJ9YCwgam9iU2NoZWR1bGVQYXJhbXMsIHRoaXMuaGVhZGVycyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudXJsSm9iU2NoZWR1bGVyfWAsIGpvYlNjaGVkdWxlUGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RXhlY3V0aW9uQnlKb2JTY2hlZHVsZUlEKGpvYlNjaGVkdWxlSUQ6IHN0cmluZywgbG9hZGluZyA9IGZhbHNlKTogT2JzZXJ2YWJsZTxJRXhlY3V0aW9uU3RhdHVzPiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy51cmxKb2JFeGVjdXRpb259P2pvYlNjaGVkdWxlSUQ9JHtqb2JTY2hlZHVsZUlEfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXhlY3V0aW9uKHVybCwgbG9hZGluZykucGlwZShcclxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gdGhpcy50cmFuc2Zvcm1FeGVjdXRpb24oJ2pvYlNjaGVkdWxlSUQnLCByZXNwb25zZSkpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRFeGVjdXRpb25CeUV4ZWN1dGlvbklEKGV4ZWN1dGlvbklEOiBzdHJpbmcsIGxvYWRpbmcgPSBmYWxzZSk6IE9ic2VydmFibGU8SUV4ZWN1dGlvblN0YXR1cz4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMudXJsSm9iRXhlY3V0aW9ufS8ke2V4ZWN1dGlvbklEfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXhlY3V0aW9uKHVybCwgbG9hZGluZykucGlwZShcclxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gdGhpcy50cmFuc2Zvcm1FeGVjdXRpb24oJ2V4ZWN1dGlvbklEJywgcmVzcG9uc2UpKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRFeGVjdXRpb24odXJsOiBzdHJpbmcsIGxvYWRpbmc6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGlmIChsb2FkaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgdGhpcy5oZWFkZXJzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHRyYW5zZm9ybUV4ZWN1dGlvbih0eXBlOiBzdHJpbmcsIHJlc3BvbnNlOiBhbnkpOiBJRXhlY3V0aW9uU3RhdHVzIHtcclxuICAgICAgICBpZiAoIXJlc3BvbnNlIHx8ICFyZXNwb25zZS5pdGVtcyB8fCByZXNwb25zZS5pdGVtcy5sZW5ndGggPT09IDApIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgcmVzcG9uc2UgPSByZXNwb25zZS5pdGVtc1swXTtcclxuXHJcbiAgICAgICAgY29uc3QgZXhlY1N0YXR1cyA9IG5ldyBFeGVjdXRpb25TdGF0dXMoKTtcclxuICAgICAgICBleGVjU3RhdHVzLmpvYlNjaGVkdWxlSUQgPSByZXNwb25zZS5qb2JTY2hlZHVsZUlEO1xyXG4gICAgICAgIGV4ZWNTdGF0dXMuZXhlY3V0aW9uSUQgPSByZXNwb25zZS5leGVjdXRpb25JRDtcclxuICAgICAgICBleGVjU3RhdHVzLnN0YXJ0ZWREYXRlID0gcmVzcG9uc2Uuc3RhcnRlZERhdGU7XHJcbiAgICAgICAgZXhlY1N0YXR1cy5lcnJvciA9IHJlc3BvbnNlLmVycm9yO1xyXG4gICAgICAgIGV4ZWNTdGF0dXMuc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzO1xyXG5cclxuICAgICAgICByZXR1cm4gZXhlY1N0YXR1cztcclxuICAgIH1cclxuXHJcbiAgICBmb2xsb3dVcEV4Y0J5Sm9iU2NoZWR1bGVJRChqb2JTY2hlZHVsZUlEOiBzdHJpbmcsIGludGVydmFsTnVtOiBudW1iZXIsIGZuY0NhbGxCYWNrOiBGdW5jdGlvbiwgbG9hZGluZyA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWN1dGlvbignam9iU2NoZWR1bGVJRCcsIGpvYlNjaGVkdWxlSUQsIGludGVydmFsTnVtLCBmbmNDYWxsQmFjaywgbG9hZGluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9sbG93VXBFeGNCeUV4ZWN1dGlvbklEKGV4ZWN1dGlvbklEOiBzdHJpbmcsIGludGVydmFsTnVtOiBudW1iZXIsIGZuY0NhbGxCYWNrOiBGdW5jdGlvbiwgbG9hZGluZyA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWN1dGlvbignZXhlY3V0aW9uSUQnLCBleGVjdXRpb25JRCwgaW50ZXJ2YWxOdW0sIGZuY0NhbGxCYWNrLCBsb2FkaW5nKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZvbGxvd1VwRXhlY3V0aW9uKHR5cGU6IHN0cmluZywgZXhlY0lEOiBzdHJpbmcsXHJcbiAgICAgICAgaW50ZXJ2YWxOdW06IG51bWJlciwgZm5jQ2FsbEJhY2s6IEZ1bmN0aW9uLCBsb2FkaW5nOiBib29sZWFuKTogdm9pZCB7XHJcblxyXG4gICAgICAgIHRoaXMuam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJCA9IG51bGw7XHJcblxyXG4gICAgICAgIGNvbnN0IGludGVydmFsSUQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4ZWNTdGF0dXMgPSBuZXcgRXhlY3V0aW9uU3RhdHVzKCk7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuam9iU2NoZWR1bGVJRCA9ICh0eXBlID09PSAnam9iU2NoZWR1bGVJRCcpID8gZXhlY0lEIDogJyc7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuZXhlY3V0aW9uSUQgPSAodHlwZSA9PT0gJ2V4ZWN1dGlvbklEJykgPyBleGVjSUQgOiAnJztcclxuICAgICAgICAgICAgZXhlY1N0YXR1cy5zdGFydGVkRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuZXJyb3IgPSAnJztcclxuICAgICAgICAgICAgZXhlY1N0YXR1cy5zdGF0dXMgPSAnUEVORElORyc7IC8vIFBFTkRJTkcsIFJVTk5JTkcsIFNVQ0NFU1MsIEZBSUxVUkVcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmpvYkV4ZWN1dGlvblN1YnNjcmlwdGlvbiQpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2pvYlNjaGVkdWxlSUQnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmpvYkV4ZWN1dGlvblN1YnNjcmlwdGlvbiQgPSB0aGlzLmdldEV4ZWN1dGlvbkJ5Sm9iU2NoZWR1bGVJRChleGVjSUQsIGxvYWRpbmcpXHJcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IElFeGVjdXRpb25TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWNSZXR1cm5PayhleGVjSUQsIGV4ZWNTdGF0dXMsIHJlc3BvbnNlLCBpbnRlcnZhbElELCBmbmNDYWxsQmFjayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9sbG93VXBFeGVjUmV0dXJuRXJyb3IoZXJyb3IsIGV4ZWNTdGF0dXMsIGludGVydmFsSUQsIGZuY0NhbGxCYWNrKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdleGVjdXRpb25JRCcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJCA9IHRoaXMuZ2V0RXhlY3V0aW9uQnlFeGVjdXRpb25JRChleGVjSUQsIGxvYWRpbmcpXHJcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IElFeGVjdXRpb25TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWNSZXR1cm5PayhleGVjSUQsIGV4ZWNTdGF0dXMsIHJlc3BvbnNlLCBpbnRlcnZhbElELCBmbmNDYWxsQmFjayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9sbG93VXBFeGVjUmV0dXJuRXJyb3IoZXJyb3IsIGV4ZWNTdGF0dXMsIGludGVydmFsSUQsIGZuY0NhbGxCYWNrKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9LCBpbnRlcnZhbE51bSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmb2xsb3dVcEV4ZWNSZXR1cm5PayhleGVjSUQ6IHN0cmluZywgZXhlY1N0YXR1czogSUV4ZWN1dGlvblN0YXR1cywgcmVzcG9uc2U6IElFeGVjdXRpb25TdGF0dXMsXHJcbiAgICAgICAgaW50ZXJ2YWxJRDogYW55LCBmbmNDYWxsQmFjazogRnVuY3Rpb24pOiB2b2lkIHtcclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMgPSByZXNwb25zZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBleGVjU3RhdHVzLmVycm9yID0gYEFnZW5kYW1lbnRvIG7Do28gZW5jb250cmFkbyBjb20gSUQ6ICR7ZXhlY0lEfWA7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuc3RhdHVzID0gJ0ZBSUxVUkUnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFmbmNDYWxsQmFjayhleGVjU3RhdHVzKSB8fFxyXG4gICAgICAgICAgICBleGVjU3RhdHVzLnN0YXR1cyA9PT0gJ1NVQ0NFU1MnIHx8XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuc3RhdHVzID09PSAnRkFJTFVSRScpIHtcclxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElEKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmb2xsb3dVcEV4ZWNSZXR1cm5FcnJvcihlcnJvcjogYW55LCBleGVjU3RhdHVzOiBJRXhlY3V0aW9uU3RhdHVzLFxyXG4gICAgICAgIGludGVydmFsSUQ6IGFueSwgZm5jQ2FsbEJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XHJcblxyXG4gICAgICAgIGxldCBlcnJvRGVzYyA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICAgICAgICBlcnJvRGVzYyA9IGVycm9yLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIGlmIChlcnJvci5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgZXJyb0Rlc2MgPSAnJztcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvci5lcnJvci5jb2RlKSB7IGVycm9EZXNjID0gZXJyb3IuZXJyb3IuY29kZTsgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLm1lc3NhZ2UpIHsgZXJyb0Rlc2MgPSBgJHtlcnJvRGVzY30gLSAke2Vycm9yLmVycm9yLm1lc3NhZ2V9YDsgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLmRldGFpbGVkTWVzc2FnZSkgeyBlcnJvRGVzYyA9IGAke2Vycm9EZXNjfSAtICR7ZXJyb3IuZXJyb3IuZGV0YWlsZWRNZXNzYWdlfWA7IH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGVycm9EZXNjID0gZXJyb3I7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBleGVjU3RhdHVzLmVycm9yID0gZXJyb0Rlc2M7XHJcbiAgICAgICAgZXhlY1N0YXR1cy5zdGF0dXMgPSAnRkFJTFVSRSc7XHJcbiAgICAgICAgZm5jQ2FsbEJhY2soZXhlY1N0YXR1cyk7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElEKTtcclxuICAgICAgICB0aGlzLmpvYkV4ZWN1dGlvblN1YnNjcmlwdGlvbiQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkWmVybyhudW06IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHN0ciA9IGAke251bX1gO1xyXG4gICAgICAgIGlmIChudW0gPCAxMCkgeyBzdHIgPSBgMCR7bnVtfWA7IH1cclxuICAgICAgICByZXR1cm4gc3RyO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==