@seniorsistemas/yms-integration 1.42.1 → 1.44.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.
- package/bundles/seniorsistemas-yms-integration.umd.js +876 -388
- package/bundles/seniorsistemas-yms-integration.umd.js.map +1 -1
- package/bundles/seniorsistemas-yms-integration.umd.min.js +1 -1
- package/bundles/seniorsistemas-yms-integration.umd.min.js.map +1 -1
- package/esm2015/seniorsistemas-yms-integration.js +53 -51
- package/esm2015/src/sam-senior/core/entity-service.js +27 -12
- package/esm2015/src/wms/components/document-grid/document-grid.component.js +42 -358
- package/esm2015/src/wms/components/document-grid/document-grid.facade.js +380 -0
- package/esm2015/src/wms/components/document-grid/document-grid.module.js +19 -10
- package/esm2015/src/wms/components/document-grid/insert-key/insert-key.component.js +45 -44
- package/esm2015/src/wms/components/document-grid/register-document/register-document.component.js +28 -24
- package/esm2015/src/wms/components/document-grid/strategies/partner.strategy.js +48 -0
- package/esm2015/src/wms/components/document-grid/strategies/senior-connect.strategy.js +72 -0
- package/esm2015/src/wms/components/document-grid/strategies/senior-erp.strategy.js +56 -0
- package/esm2015/src/wms/components/document-grid/strategies/silt.strategy.js +80 -0
- package/esm2015/src/wms/components/document-grid/strategies/wis.strategy.js +68 -0
- package/esm2015/src/wms/components/document-grid/strategies/wms-integration-strategy.factory.js +31 -0
- package/esm2015/src/wms/components/document-grid/strategies/wms-integration-strategy.interface.js +7 -0
- package/esm2015/src/wms/components/utils/invoice-conditions.js +30 -9
- package/esm2015/src/wms/entities/document/document.service.js +11 -10
- package/esm2015/src/wms/entities/invoice-condition/invoice-condition.js +1 -1
- package/esm2015/src/wms/entities/wms-system/wms-system.js +2 -1
- package/esm5/seniorsistemas-yms-integration.js +53 -51
- package/esm5/src/sam-senior/core/entity-service.js +23 -8
- package/esm5/src/wms/components/document-grid/document-grid.component.js +47 -363
- package/esm5/src/wms/components/document-grid/document-grid.facade.js +397 -0
- package/esm5/src/wms/components/document-grid/document-grid.module.js +19 -10
- package/esm5/src/wms/components/document-grid/insert-key/insert-key.component.js +44 -43
- package/esm5/src/wms/components/document-grid/register-document/register-document.component.js +28 -24
- package/esm5/src/wms/components/document-grid/strategies/partner.strategy.js +52 -0
- package/esm5/src/wms/components/document-grid/strategies/senior-connect.strategy.js +76 -0
- package/esm5/src/wms/components/document-grid/strategies/senior-erp.strategy.js +60 -0
- package/esm5/src/wms/components/document-grid/strategies/silt.strategy.js +84 -0
- package/esm5/src/wms/components/document-grid/strategies/wis.strategy.js +72 -0
- package/esm5/src/wms/components/document-grid/strategies/wms-integration-strategy.factory.js +32 -0
- package/esm5/src/wms/components/document-grid/strategies/wms-integration-strategy.interface.js +7 -0
- package/esm5/src/wms/components/utils/invoice-conditions.js +30 -9
- package/esm5/src/wms/entities/document/document.service.js +11 -10
- package/esm5/src/wms/entities/invoice-condition/invoice-condition.js +1 -1
- package/esm5/src/wms/entities/wms-system/wms-system.js +2 -1
- package/fesm2015/seniorsistemas-yms-integration.js +783 -330
- package/fesm2015/seniorsistemas-yms-integration.js.map +1 -1
- package/fesm5/seniorsistemas-yms-integration.js +824 -338
- package/fesm5/seniorsistemas-yms-integration.js.map +1 -1
- package/package.json +4 -3
- package/seniorsistemas-yms-integration.d.ts +52 -50
- package/seniorsistemas-yms-integration.metadata.json +1 -1
- package/src/sam-senior/core/entity-service.d.ts +5 -0
- package/src/wms/components/document-grid/document-grid.component.d.ts +28 -77
- package/src/wms/components/document-grid/document-grid.facade.d.ts +96 -0
- package/src/wms/components/document-grid/insert-key/insert-key.component.d.ts +6 -8
- package/src/wms/components/document-grid/register-document/register-document.component.d.ts +5 -5
- package/src/wms/components/document-grid/strategies/partner.strategy.d.ts +17 -0
- package/src/wms/components/document-grid/strategies/senior-connect.strategy.d.ts +17 -0
- package/src/wms/components/document-grid/strategies/senior-erp.strategy.d.ts +17 -0
- package/src/wms/components/document-grid/strategies/silt.strategy.d.ts +17 -0
- package/src/wms/components/document-grid/strategies/wis.strategy.d.ts +17 -0
- package/src/wms/components/document-grid/strategies/wms-integration-strategy.factory.d.ts +8 -0
- package/src/wms/components/document-grid/strategies/wms-integration-strategy.interface.d.ts +53 -0
- package/src/wms/components/utils/invoice-conditions.d.ts +2 -2
- package/src/wms/entities/document/document.service.d.ts +9 -6
- package/src/wms/entities/wms-system/wms-system.d.ts +1 -0
|
@@ -1,211 +1,31 @@
|
|
|
1
1
|
import * as tslib_1 from "tslib";
|
|
2
|
-
import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild } from "@angular/core";
|
|
3
|
-
import { TranslateService } from "@ngx-translate/core";
|
|
4
|
-
import { ConfirmationService } from "primeng/api";
|
|
2
|
+
import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild, } from "@angular/core";
|
|
5
3
|
import { Table } from "primeng/table";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { WmsSystem } from '../../entities/wms-system/wms-system';
|
|
11
|
-
import { IntegrationService } from './../../entities/integration/integration.service';
|
|
12
|
-
import { InvoiceCondition } from "../../../../src/wms/entities/invoice-condition/invoice-condition";
|
|
13
|
-
import { getInvoiceConditions } from "../utils/invoice-conditions";
|
|
14
|
-
import { catchError, takeUntil } from 'rxjs/operators';
|
|
15
|
-
import { FormWmsService } from '../../form/form-wms.service';
|
|
4
|
+
import { WmsSystem } from "../../entities/wms-system/wms-system";
|
|
5
|
+
import { DocumentGridFacade } from "./document-grid.facade";
|
|
6
|
+
import { ConfirmationService } from "primeng/api";
|
|
7
|
+
import { TranslateService } from "@ngx-translate/core";
|
|
16
8
|
var DocumentGridComponent = /** @class */ (function () {
|
|
17
|
-
function DocumentGridComponent(
|
|
18
|
-
this.
|
|
19
|
-
this.documentService = documentService;
|
|
9
|
+
function DocumentGridComponent(facade, confirmationService, translate) {
|
|
10
|
+
this.facade = facade;
|
|
20
11
|
this.confirmationService = confirmationService;
|
|
21
|
-
this.
|
|
22
|
-
this.agendaService = agendaService;
|
|
23
|
-
this.utils = utils;
|
|
24
|
-
this.wmsService = wmsService;
|
|
12
|
+
this.translate = translate;
|
|
25
13
|
this.viewDocument = new EventEmitter();
|
|
26
|
-
this.gridData = [];
|
|
27
|
-
this.enableButtonIsClienteExterno = true;
|
|
28
|
-
this.invoiceConditions = getInvoiceConditions(this.translate);
|
|
29
|
-
this.summary = "yms.int.wms_saved_document_message_title";
|
|
30
|
-
this.ngUnsubscribe = new Subject();
|
|
31
|
-
this.selection = [];
|
|
32
14
|
}
|
|
33
|
-
DocumentGridComponent.prototype.getFilteredInvoiceConditions = function (invoiceConditions) {
|
|
34
|
-
if (invoiceConditions === InvoiceCondition.AUTHORIZED) {
|
|
35
|
-
return this.invoiceConditions.filter(function (cond) { return cond.value === InvoiceCondition.AUTHORIZED; });
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
return this.invoiceConditions.filter(function (cond) { return cond.value !== InvoiceCondition.AUTHORIZED; });
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
15
|
DocumentGridComponent.prototype.ngOnInit = function () {
|
|
42
|
-
|
|
43
|
-
this.
|
|
44
|
-
this.getProcessTypeByScheduling();
|
|
45
|
-
this.listDocuments(false);
|
|
46
|
-
this.wmsService.getSystemIntegration()
|
|
47
|
-
.subscribe(function (_a) {
|
|
48
|
-
var system = _a.system;
|
|
49
|
-
_this.wmsSystem = system;
|
|
50
|
-
if (_this.isWmsSeniorConnect()) {
|
|
51
|
-
_this.getYard();
|
|
52
|
-
_this.getSchedule();
|
|
53
|
-
}
|
|
54
|
-
});
|
|
16
|
+
this.state$ = this.facade.state$;
|
|
17
|
+
this.facade.init(this.agenda, this.wmsSystem);
|
|
55
18
|
};
|
|
56
|
-
DocumentGridComponent.prototype.
|
|
57
|
-
|
|
58
|
-
this.documentService.getYard(this.agenda.planta.id)
|
|
59
|
-
.pipe(catchError(function (err) {
|
|
60
|
-
return throwError(err);
|
|
61
|
-
}))
|
|
62
|
-
.subscribe(function (content) {
|
|
63
|
-
_this.yard = content;
|
|
64
|
-
});
|
|
65
|
-
};
|
|
66
|
-
DocumentGridComponent.prototype.getSchedule = function () {
|
|
67
|
-
var _this = this;
|
|
68
|
-
if (this.agenda.externalTenant && this.agenda.externalTenant.cnpj) {
|
|
69
|
-
this.schedule = this.agenda;
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
this.agendaService.get(this.agenda.id)
|
|
73
|
-
.pipe(catchError(function (err) {
|
|
74
|
-
return throwError(err);
|
|
75
|
-
}))
|
|
76
|
-
.subscribe(function (content) {
|
|
77
|
-
_this.schedule = content;
|
|
78
|
-
});
|
|
79
|
-
};
|
|
80
|
-
DocumentGridComponent.prototype.verifyClienteExterno = function () {
|
|
81
|
-
var _this = this;
|
|
82
|
-
this.agendaService.isClienteExterno()
|
|
83
|
-
.subscribe(function (result) {
|
|
84
|
-
_this.isClienteExterno = result.isClienteExterno;
|
|
85
|
-
_this.gridColumns = _this.getGridColumns();
|
|
86
|
-
_this.cantEditStatus();
|
|
87
|
-
});
|
|
88
|
-
};
|
|
89
|
-
DocumentGridComponent.prototype.getProcessTypeByScheduling = function () {
|
|
90
|
-
var _this = this;
|
|
91
|
-
this.integrationService.getProcessTypeByScheduling(this.agenda.tipoAgendamento.id)
|
|
92
|
-
.subscribe(function (result) { return _this.processType = result.processType; });
|
|
93
|
-
};
|
|
94
|
-
DocumentGridComponent.prototype.onChangeDocument = function (document) {
|
|
95
|
-
if (!this.hasFilledValues(document)) {
|
|
96
|
-
this.utils.message("error", "yms.int.wms_save_error_register_document_message_title", "yms.int.wms_save_error_register_document_message_description");
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
this.assignKeys(document);
|
|
100
|
-
var duplicateDocument = this.gridData.find(function (gridData) { return gridData.key === document.key; });
|
|
101
|
-
if (duplicateDocument) {
|
|
102
|
-
this.utils.message("error", "yms.int.wms_error_register_document_message_title", "yms.int.wms_error_register_document_message_description");
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
this.gridData.push(document);
|
|
106
|
-
this.disabled = false;
|
|
107
|
-
this.utils.message("success", this.summary, "yms.int.wms_success_message_description");
|
|
108
|
-
this.visibleDocumentRegister = false;
|
|
109
|
-
this.visibleInvoiceKey = false;
|
|
110
|
-
};
|
|
111
|
-
DocumentGridComponent.prototype.assignKeys = function (document) {
|
|
112
|
-
if (document.id === undefined) {
|
|
113
|
-
if (this.agenda.id !== undefined) {
|
|
114
|
-
document.schedulingId = this.agenda.id;
|
|
115
|
-
}
|
|
116
|
-
if (document.key === undefined || document.key === null) {
|
|
117
|
-
document.key = document.invoiceKey;
|
|
118
|
-
if (this.isWmsWIS()) {
|
|
119
|
-
document.key = document.invoiceNumber + ":" + document.invoiceSerialNumber + ":" + document.partnerDocument;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
};
|
|
124
|
-
DocumentGridComponent.prototype.hasFilledValues = function (document) {
|
|
125
|
-
var formValues = Object.values(document);
|
|
126
|
-
return formValues.some(function (value) { return value !== null && value !== ''; });
|
|
127
|
-
};
|
|
128
|
-
DocumentGridComponent.prototype.cantEditStatus = function () {
|
|
129
|
-
var cantEditStatus = [
|
|
130
|
-
'CANCELADO',
|
|
131
|
-
'EM_EXECUCAO',
|
|
132
|
-
'CONCLUIDO',
|
|
133
|
-
'AGUARDANDO_POR_VALIDACAO'
|
|
134
|
-
].includes(this.agenda.status.toString());
|
|
135
|
-
if (cantEditStatus) {
|
|
136
|
-
this.enableButtonIsClienteExterno = false;
|
|
137
|
-
}
|
|
138
|
-
};
|
|
139
|
-
DocumentGridComponent.prototype.getActions = function () {
|
|
140
|
-
var _this = this;
|
|
141
|
-
return [
|
|
142
|
-
{
|
|
143
|
-
disabled: this.checkWmsSystemInvalid(),
|
|
144
|
-
label: this.translate.instant("yms.int.wms_search"),
|
|
145
|
-
command: function () {
|
|
146
|
-
_this.selection = [];
|
|
147
|
-
_this.visibleInvoiceKey = true;
|
|
148
|
-
},
|
|
149
|
-
icon: "fa fa-search"
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
disabled: this.checkWmsSystemInvalid(),
|
|
153
|
-
label: this.translate.instant("yms.int.wms_add_document_register"),
|
|
154
|
-
command: function () {
|
|
155
|
-
_this.selection = [];
|
|
156
|
-
_this.edit = true;
|
|
157
|
-
_this.visibleDocumentRegister = true;
|
|
158
|
-
},
|
|
159
|
-
icon: "fas fa-pen-square"
|
|
160
|
-
}
|
|
161
|
-
];
|
|
19
|
+
DocumentGridComponent.prototype.ngOnDestroy = function () {
|
|
20
|
+
this.facade.destroy();
|
|
162
21
|
};
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
return false;
|
|
22
|
+
// UI Event handlers - delegam para o facade
|
|
23
|
+
DocumentGridComponent.prototype.onView = function () {
|
|
24
|
+
var document = this.facade.viewDocument();
|
|
25
|
+
this.viewDocument.emit(document);
|
|
168
26
|
};
|
|
169
|
-
DocumentGridComponent.prototype.
|
|
170
|
-
|
|
171
|
-
};
|
|
172
|
-
DocumentGridComponent.prototype.view = function () {
|
|
173
|
-
this.viewDocument.emit(this.selection[0]);
|
|
174
|
-
this.visibleDocumentRegister = true;
|
|
175
|
-
this.edit = false;
|
|
176
|
-
};
|
|
177
|
-
DocumentGridComponent.prototype.save = function () {
|
|
178
|
-
var _this = this;
|
|
179
|
-
if (this.gridData.length > 0) {
|
|
180
|
-
this.gridData.forEach(function (data) {
|
|
181
|
-
if (!data.id) {
|
|
182
|
-
if (!data.schedulingId) {
|
|
183
|
-
data.schedulingId = _this.agenda.id;
|
|
184
|
-
}
|
|
185
|
-
data.key = _this.updateKeyByWms(data);
|
|
186
|
-
_this.documentService.insert(data).subscribe(function () {
|
|
187
|
-
_this.sucessMessage();
|
|
188
|
-
});
|
|
189
|
-
_this.disabled = true;
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
_this.documentService.update(data.id, data).subscribe(function () {
|
|
193
|
-
_this.sucessMessage();
|
|
194
|
-
_this.disabled = true;
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
});
|
|
198
|
-
this.listDocuments(false);
|
|
199
|
-
}
|
|
200
|
-
};
|
|
201
|
-
DocumentGridComponent.prototype.updateKeyByWms = function (data) {
|
|
202
|
-
if (!data.key) {
|
|
203
|
-
data.key = data.invoiceKey;
|
|
204
|
-
}
|
|
205
|
-
if (this.wmsSystem === WmsSystem.WIS) {
|
|
206
|
-
data.key = data.invoiceNumber + ":" + data.invoiceSerialNumber + ":" + data.partnerDocument;
|
|
207
|
-
}
|
|
208
|
-
return data.key;
|
|
27
|
+
DocumentGridComponent.prototype.onSave = function () {
|
|
28
|
+
this.facade.save();
|
|
209
29
|
};
|
|
210
30
|
DocumentGridComponent.prototype.onDelete = function () {
|
|
211
31
|
var _this = this;
|
|
@@ -213,167 +33,35 @@ var DocumentGridComponent = /** @class */ (function () {
|
|
|
213
33
|
message: this.translate.instant("delete_confirmation_message"),
|
|
214
34
|
header: this.translate.instant("delete_confirmation_title"),
|
|
215
35
|
accept: function () {
|
|
216
|
-
_this.
|
|
217
|
-
|
|
218
|
-
return null;
|
|
219
|
-
}
|
|
220
|
-
return forkJoin(_this.selection.map(function (document) { return _this.documentService.delete(document.id); }))
|
|
221
|
-
.pipe(takeUntil(_this.ngUnsubscribe))
|
|
222
|
-
.subscribe(function () {
|
|
223
|
-
_this.utils.message("success", "deleted_message_title", "deleted_message_content");
|
|
224
|
-
_this.listDocuments(true);
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
});
|
|
228
|
-
};
|
|
229
|
-
DocumentGridComponent.prototype.removeDocumentIfIdUndfined = function () {
|
|
230
|
-
var _this = this;
|
|
231
|
-
this.selection.forEach(function (value, index) {
|
|
232
|
-
if (!value.id) {
|
|
233
|
-
var indexGridData = _this.gridData.findIndex(function (document) { return document.key === value.key; });
|
|
234
|
-
_this.gridData.splice(indexGridData, 1);
|
|
235
|
-
_this.selection.splice(index, 1);
|
|
236
|
-
}
|
|
237
|
-
});
|
|
238
|
-
};
|
|
239
|
-
DocumentGridComponent.prototype.notSavedDocuments = function () {
|
|
240
|
-
return this.gridData.some(function (document) { return !document.id; });
|
|
241
|
-
};
|
|
242
|
-
DocumentGridComponent.prototype.listDocuments = function (isDelete) {
|
|
243
|
-
var _this = this;
|
|
244
|
-
this.documentService.list({
|
|
245
|
-
filterQuery: "schedulingId eq '" + this.agenda.id + "'",
|
|
246
|
-
size: 100
|
|
247
|
-
})
|
|
248
|
-
.subscribe(function (contents) {
|
|
249
|
-
var _a;
|
|
250
|
-
_this.gridData = isDelete ? _this.gridData.filter(function (item) { return !item.id; }) : [];
|
|
251
|
-
if (contents.totalElements > 0) {
|
|
252
|
-
(_a = _this.gridData).push.apply(_a, tslib_1.__spread(contents.contents));
|
|
253
|
-
_this.documentTotalRecords = contents.totalElements;
|
|
254
|
-
}
|
|
255
|
-
else {
|
|
256
|
-
_this.documentTotalRecords = _this.gridData.length;
|
|
257
|
-
}
|
|
258
|
-
var hasElementWithoutId = _this.gridData.some(function (item) { return !item.id; });
|
|
259
|
-
_this.disabled = !hasElementWithoutId;
|
|
260
|
-
_this.loading = false;
|
|
261
|
-
_this.selection = [];
|
|
36
|
+
_this.facade.deleteSelectedDocuments();
|
|
37
|
+
},
|
|
262
38
|
});
|
|
263
39
|
};
|
|
264
|
-
DocumentGridComponent.prototype.
|
|
265
|
-
|
|
266
|
-
switch (this.wmsSystem) {
|
|
267
|
-
case WmsSystem.SENIOR_CONNECT:
|
|
268
|
-
result = this.wmsSeniorConnectIntegration();
|
|
269
|
-
break;
|
|
270
|
-
case WmsSystem.WIS:
|
|
271
|
-
result = this.wmsWisIntegration();
|
|
272
|
-
break;
|
|
273
|
-
case WmsSystem.SENIOR:
|
|
274
|
-
result = this.wmsSiltIntegration();
|
|
275
|
-
break;
|
|
276
|
-
case WmsSystem.PARTNER:
|
|
277
|
-
result = this.wmsPartnerIntegration();
|
|
278
|
-
break;
|
|
279
|
-
default:
|
|
280
|
-
result = [];
|
|
281
|
-
}
|
|
282
|
-
return result;
|
|
40
|
+
DocumentGridComponent.prototype.onRefresh = function () {
|
|
41
|
+
this.facade.listDocuments(false);
|
|
283
42
|
};
|
|
284
|
-
DocumentGridComponent.prototype.
|
|
285
|
-
|
|
286
|
-
{ field: "invoiceKey", header: this.translate.instant("yms.int.wms_register_document_invoice_key") },
|
|
287
|
-
{ field: "invoiceNumber", header: this.translate.instant("yms.int.wms_register_document_invoice_number") },
|
|
288
|
-
{ field: "invoiceSerialNumber", header: this.translate.instant("yms.int.wms_register_document_invoice_serial_number") }
|
|
289
|
-
], this.getColumnPartner());
|
|
290
|
-
return columns;
|
|
43
|
+
DocumentGridComponent.prototype.onRowSelect = function (rowData) {
|
|
44
|
+
this.facade.addToSelection(rowData);
|
|
291
45
|
};
|
|
292
|
-
DocumentGridComponent.prototype.
|
|
293
|
-
|
|
294
|
-
{ field: "key", header: this.translate.instant("yms.int.wms_purchaseOrder") }
|
|
295
|
-
], this.getColumnPartner(), this.getColumnlogistcUnit());
|
|
296
|
-
return columns;
|
|
46
|
+
DocumentGridComponent.prototype.onInvoiceConditionChange = function () {
|
|
47
|
+
this.facade.setDisabled(false);
|
|
297
48
|
};
|
|
298
|
-
DocumentGridComponent.prototype
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
{ field: "ownerDocument", header: this.translate.instant("yms.int.wms_register_document_owner_document") },
|
|
309
|
-
]);
|
|
310
|
-
this.addInvoiceSituationIfNotClienteExterno(columns);
|
|
311
|
-
return columns;
|
|
312
|
-
};
|
|
313
|
-
DocumentGridComponent.prototype.getColumninvoiceCondition = function () {
|
|
314
|
-
return { field: "invoiceCondition", header: this.translate.instant("yms.int.wms_grid_document_invoice_condition") };
|
|
315
|
-
};
|
|
316
|
-
DocumentGridComponent.prototype.getColumnInvoiceAndlogistcUnit = function () {
|
|
317
|
-
return tslib_1.__spread([
|
|
318
|
-
{ field: "invoiceNumber", header: this.translate.instant("yms.int.wms_register_document_invoice_number") },
|
|
319
|
-
{ field: "invoiceSerialNumber", header: this.translate.instant("yms.int.wms_register_document_invoice_serial_number") }
|
|
320
|
-
], this.getColumnPartner(), this.getColumnlogistcUnit());
|
|
321
|
-
};
|
|
322
|
-
DocumentGridComponent.prototype.getColumnPartner = function () {
|
|
323
|
-
return [
|
|
324
|
-
{ field: "partnerName", header: this.translate.instant("yms.int.wms_register_document_partner_name") },
|
|
325
|
-
{ field: "partnerDocument", header: this.translate.instant("yms.int.wms_register_document_partner_document") },
|
|
326
|
-
];
|
|
327
|
-
};
|
|
328
|
-
DocumentGridComponent.prototype.getColumnlogistcUnit = function () {
|
|
329
|
-
return [
|
|
330
|
-
{ field: "logistcUnitName", header: this.translate.instant("yms.int.wms_register_document_logistc_unit_name") },
|
|
331
|
-
{ field: "logistcUnitDocument", header: this.translate.instant("yms.int.wms_register_document_logistc_unit_document") },
|
|
332
|
-
];
|
|
333
|
-
};
|
|
334
|
-
DocumentGridComponent.prototype.addInvoiceSituationIfNotClienteExterno = function (columns) {
|
|
335
|
-
if (!this.isClienteExterno) {
|
|
336
|
-
columns.push(this.getColumninvoiceCondition());
|
|
337
|
-
}
|
|
338
|
-
};
|
|
339
|
-
DocumentGridComponent.prototype.isWmsSeniorConnect = function () {
|
|
340
|
-
return this.wmsSystem === WmsSystem.SENIOR_CONNECT;
|
|
341
|
-
};
|
|
342
|
-
DocumentGridComponent.prototype.isWmsWIS = function () {
|
|
343
|
-
return this.wmsSystem === WmsSystem.WIS;
|
|
344
|
-
};
|
|
345
|
-
DocumentGridComponent.prototype.isWmsSilt = function () {
|
|
346
|
-
return this.wmsSystem === WmsSystem.SENIOR;
|
|
347
|
-
};
|
|
348
|
-
DocumentGridComponent.prototype.isWmsPartner = function () {
|
|
349
|
-
return this.wmsSystem === WmsSystem.PARTNER;
|
|
350
|
-
};
|
|
351
|
-
DocumentGridComponent.prototype.sucessMessage = function () {
|
|
352
|
-
return this.utils.message("success", this.summary, "saved_message_content");
|
|
49
|
+
Object.defineProperty(DocumentGridComponent.prototype, "invoiceConditions", {
|
|
50
|
+
// Getters para o template (delegam para o facade)
|
|
51
|
+
get: function () {
|
|
52
|
+
return this.facade.invoiceConditions;
|
|
53
|
+
},
|
|
54
|
+
enumerable: true,
|
|
55
|
+
configurable: true
|
|
56
|
+
});
|
|
57
|
+
DocumentGridComponent.prototype.getActions = function () {
|
|
58
|
+
return this.facade.getActions();
|
|
353
59
|
};
|
|
354
|
-
DocumentGridComponent.prototype.
|
|
355
|
-
|
|
356
|
-
if (!this.yard.codigo) {
|
|
357
|
-
this.buildMessage("yms.int.yard_code_not_found_warning_description");
|
|
358
|
-
return false;
|
|
359
|
-
}
|
|
360
|
-
if (document.logistcUnitDocument !== this.yard.codigo) {
|
|
361
|
-
this.buildMessage("yms.int.document_yard_mismatch_agenda_warning_description");
|
|
362
|
-
return false;
|
|
363
|
-
}
|
|
364
|
-
if (!this.schedule.externalTenant) {
|
|
365
|
-
this.buildMessage("yms.int.partner_not_informed_agenda_warning_description");
|
|
366
|
-
return false;
|
|
367
|
-
}
|
|
368
|
-
if (document.partnerDocument !== this.schedule.externalTenant.cnpj) {
|
|
369
|
-
this.buildMessage("yms.int.partner_differs_from_agenda_warning_description");
|
|
370
|
-
return false;
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
return true;
|
|
60
|
+
DocumentGridComponent.prototype.getFilteredInvoiceConditions = function (invoiceCondition) {
|
|
61
|
+
return this.facade.getFilteredInvoiceConditions(invoiceCondition);
|
|
374
62
|
};
|
|
375
|
-
DocumentGridComponent.prototype.
|
|
376
|
-
this.
|
|
63
|
+
DocumentGridComponent.prototype.notSavedDocuments = function () {
|
|
64
|
+
return this.facade.notSavedDocuments();
|
|
377
65
|
};
|
|
378
66
|
tslib_1.__decorate([
|
|
379
67
|
Input(),
|
|
@@ -386,11 +74,11 @@ var DocumentGridComponent = /** @class */ (function () {
|
|
|
386
74
|
tslib_1.__decorate([
|
|
387
75
|
Output(),
|
|
388
76
|
tslib_1.__metadata("design:type", Boolean)
|
|
389
|
-
], DocumentGridComponent.prototype, "
|
|
77
|
+
], DocumentGridComponent.prototype, "showInvoiceSearchModal", void 0);
|
|
390
78
|
tslib_1.__decorate([
|
|
391
79
|
Output(),
|
|
392
80
|
tslib_1.__metadata("design:type", Boolean)
|
|
393
|
-
], DocumentGridComponent.prototype, "
|
|
81
|
+
], DocumentGridComponent.prototype, "showAddInvoiceModal", void 0);
|
|
394
82
|
tslib_1.__decorate([
|
|
395
83
|
Output(),
|
|
396
84
|
tslib_1.__metadata("design:type", EventEmitter)
|
|
@@ -421,19 +109,15 @@ var DocumentGridComponent = /** @class */ (function () {
|
|
|
421
109
|
], DocumentGridComponent.prototype, "customGridBody", void 0);
|
|
422
110
|
DocumentGridComponent = tslib_1.__decorate([
|
|
423
111
|
Component({
|
|
424
|
-
selector:
|
|
425
|
-
template: "<
|
|
112
|
+
selector: "document-grid",
|
|
113
|
+
template: "<ng-container *ngIf=\"state$ | async as state\">\n <div\n *ngIf=\"state.processType === 'RECEBIMENTO_WMS'; else processNotConfigured\"\n >\n <p-panel>\n <p-header>\n <div class=\"buttons\">\n <div>\n <s-button\n label=\"{{ 'yms.int.wms_add_document' | translate }}\"\n priority=\"primary\"\n [model]=\"getActions()\"\n [auxiliary]=\"false\"\n [disabled]=\"!state.enableButtonIsClienteExterno\"\n >\n </s-button>\n <s-button\n label=\"{{ 'yms.wms_view_button' | translate }}\"\n priority=\"secondary\"\n [auxiliary]=\"false\"\n [disabled]=\"!state.selection || state.selection.length !== 1\"\n (onClick)=\"onView()\"\n >\n </s-button>\n <s-button\n label=\"{{ 'yms.wms_delete_button' | translate }}\"\n priority=\"secondary\"\n [disabled]=\"\n !state.selection ||\n !state.selection.length ||\n !state.enableButtonIsClienteExterno\n \"\n (onClick)=\"onDelete()\"\n >\n </s-button>\n </div>\n <s-button\n id=\"refresh-button\"\n priority=\"default\"\n iconClass=\"fa fa-refresh\"\n (onClick)=\"onRefresh()\"\n [disabled]=\"notSavedDocuments()\"\n >\n </s-button>\n </div>\n </p-header>\n <div class=\"ui-g\">\n <div\n class=\"ui-g-12\"\n *ngIf=\"state.gridData && state.gridData.length; else emptyList\"\n >\n <p-table\n #documentTable\n [value]=\"state.gridData\"\n [columns]=\"state.gridColumns\"\n dataKey=\"key\"\n [scrollable]=\"true\"\n [resizableColumns]=\"true\"\n [paginator]=\"true\"\n [totalRecords]=\"state.documentTotalRecords\"\n rows=\"10\"\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\n [(selection)]=\"state.selection\"\n [loading]=\"state.loading\"\n >\n <ng-template pTemplate=\"colgroup\" let-columns>\n <colgroup>\n <col *ngFor=\"let col of columns\" [style.width]=\"col.width\" />\n </colgroup>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th id=\"checkbox\" class=\"table-checkbox\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <th id=\"col\" *ngFor=\"let col of columns\" pResizableColumn>\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n </div>\n </th>\n </tr>\n </ng-template>\n <ng-template\n pTemplate=\"body\"\n let-rowData\n let-columns\n let-expanded=\"expanded\"\n >\n <tr [pSelectableRow]=\"rowData\">\n <td class=\"table-checkbox\">\n <p-tableCheckbox [value]=\"rowData\"></p-tableCheckbox>\n </td>\n <td\n *ngFor=\"let col of state.gridColumns\"\n (click)=\"onRowSelect(rowData)\"\n (keypress)=\"onRowSelect(rowData)\"\n >\n <!-- Texto simples -->\n <span *ngIf=\"!col.type || col.type === 'text'\">\n {{ rowData[col.field] }}\n </span>\n\n <!-- Texto com pipe de formata\u00E7\u00E3o -->\n <span\n *ngIf=\"\n col.type === 'formatted' && col.pipe === 'cpfCnpjFormat'\n \"\n >\n {{ rowData[col.field] | cpfCnpjFormat }}\n </span>\n\n <!-- Dropdown edit\u00E1vel -->\n <p-dropdown\n *ngIf=\"\n col.type === 'dropdown' &&\n col.field === 'invoiceCondition'\n \"\n inputId=\"invoiceCondition\"\n name=\"invoiceCondition\"\n [autoWidth]=\"false\"\n [options]=\"\n getFilteredInvoiceConditions(rowData?.invoiceCondition)\n \"\n appendTo=\"body\"\n [(ngModel)]=\"rowData.invoiceCondition\"\n (onChange)=\"onInvoiceConditionChange()\"\n >\n </p-dropdown>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorright\">\n <span\n [translate]=\"'yms.main.total_records'\"\n [translateParams]=\"{ value: state.documentTotalRecords }\"\n >\n </span>\n </ng-template>\n </p-table>\n </div>\n </div>\n <register-document\n [wmsSystem]=\"state.wmsSystem\"\n [edit]=\"state.edit\"\n [viewDocument]=\"state.selection\"\n [(visible)]=\"state.showAddInvoiceModal\"\n [agenda]=\"agenda\"\n [isClienteExterno]=\"state.isClienteExterno\"\n >\n </register-document>\n <insert-key\n [wmsSystem]=\"state.wmsSystem\"\n [agenda]=\"agenda\"\n [(visible)]=\"state.showInvoiceSearchModal\"\n >\n </insert-key>\n </p-panel>\n </div>\n <div class=\"button-save\">\n <s-button\n priority=\"primary\"\n [label]=\"'save' | translate\"\n [disabled]=\"\n state.disabled || !state.gridData || !state.enableButtonIsClienteExterno\n \"\n (onClick)=\"onSave()\"\n >\n </s-button>\n </div>\n</ng-container>\n\n<ng-template #emptyList>\n <div class=\"center\">\n <s-empty-state\n iconClass=\"fa fa-exclamation-triangle\"\n [title]=\"'detail_empty_state_title' | translate\"\n [description]=\"'detail_empty_state_description' | translate\"\n >\n </s-empty-state>\n </div>\n</ng-template>\n\n<ng-template #processNotConfigured>\n <div class=\"center\">\n <s-empty-state\n iconClass=\"fa fa-exclamation-triangle\"\n [title]=\"\n 'yms.int.wms_there_no_process_type_configured_for_this_type_scheduling'\n | translate\n \"\n >\n </s-empty-state>\n </div>\n</ng-template>\n",
|
|
426
114
|
styles: [".buttons{display:flex;justify-content:space-between}.center{flex-direction:column;text-align:center}.ui-g{display:block}.button-save{margin:5px 0}#refresh-button{color:#fff}.table-checkbox{width:50px}.invoice-condition .p-dropdown{position:relative;z-index:1000}"]
|
|
427
115
|
}),
|
|
428
|
-
tslib_1.__metadata("design:paramtypes", [
|
|
429
|
-
DocumentService,
|
|
116
|
+
tslib_1.__metadata("design:paramtypes", [DocumentGridFacade,
|
|
430
117
|
ConfirmationService,
|
|
431
|
-
|
|
432
|
-
AgendaService,
|
|
433
|
-
UtilsMessageService,
|
|
434
|
-
FormWmsService])
|
|
118
|
+
TranslateService])
|
|
435
119
|
], DocumentGridComponent);
|
|
436
120
|
return DocumentGridComponent;
|
|
437
121
|
}());
|
|
438
122
|
export { DocumentGridComponent };
|
|
439
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMveW1zLWludGVncmF0aW9uLyIsInNvdXJjZXMiOlsic3JjL3dtcy9jb21wb25lbnRzL2RvY3VtZW50LWdyaWQvZG9jdW1lbnQtZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQVksTUFBTSxhQUFhLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBb0IsTUFBTSxzQ0FBc0MsQ0FBQztBQUV2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pFLE9BQU8sRUFBb0Msa0JBQWtCLEVBQWUsTUFBTSxrREFBa0QsQ0FBQztBQUNySSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUNwRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQU03RDtJQXFESSwr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QjtZQUNWLGVBQWU7WUFDWCxtQkFBbUI7WUFDcEIsa0JBQWtCO1lBQ3ZCLGFBQWE7WUFDckIsbUJBQW1CO1lBQ2QsY0FBYztPQTVEdEMscUJBQXFCLENBcWNqQztJQUFELDRCQUFDO0NBQUEsQUFyY0QsSUFxY0M7U0FyY1kscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lbnVJdGVtIH0gZnJvbSBcInByaW1lbmcvYXBpXCI7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJwcmltZW5nL3RhYmxlXCI7XG5pbXBvcnQgeyBTdWJqZWN0LCBmb3JrSm9pbiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXRpbHNNZXNzYWdlU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi91dGlscy91dGlscy1tZXNzYWdlXCI7XG5pbXBvcnQgeyBBZ2VuZGFTZXJ2aWNlLCBJc0NsaWVudGVFeHRlcm5vIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvYWdlbmRhL2FnZW5kYS5zZXJ2aWNlJztcbmltcG9ydCB7IERvY3VtZW50IH0gZnJvbSBcIi4uLy4uL2VudGl0aWVzL2RvY3VtZW50L2RvY3VtZW50XCI7XG5pbXBvcnQgeyBEb2N1bWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9lbnRpdGllcy9kb2N1bWVudC9kb2N1bWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFdtc1N5c3RlbSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3dtcy1zeXN0ZW0vd21zLXN5c3RlbSc7XG5pbXBvcnQgeyBHZXRQcm9jZXNzVHlwZUJ5U2NoZWR1bGluZ091dHB1dCwgSW50ZWdyYXRpb25TZXJ2aWNlLCBQcm9jZXNzVHlwZSB9IGZyb20gJy4vLi4vLi4vZW50aXRpZXMvaW50ZWdyYXRpb24vaW50ZWdyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJbnZvaWNlQ29uZGl0aW9uIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3NyYy93bXMvZW50aXRpZXMvaW52b2ljZS1jb25kaXRpb24vaW52b2ljZS1jb25kaXRpb25cIjtcbmltcG9ydCB7IGdldEludm9pY2VDb25kaXRpb25zIH0gZnJvbSBcIi4uL3V0aWxzL2ludm9pY2UtY29uZGl0aW9uc1wiO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9ybVdtc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9mb3JtL2Zvcm0td21zLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkb2N1bWVudC1ncmlkJyxcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2RvY3VtZW50LWdyaWQuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vZG9jdW1lbnQtZ3JpZC5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBEb2N1bWVudEdyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGFnZW5kYTtcbiAgICBASW5wdXQoKSB3bXNTeXN0ZW06IFdtc1N5c3RlbTtcbiAgICBAT3V0cHV0KCkgdmlzaWJsZUludm9pY2VLZXk6IGJvb2xlYW47XG4gICAgQE91dHB1dCgpIHZpc2libGVEb2N1bWVudFJlZ2lzdGVyOiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIHZpZXdEb2N1bWVudDogRXZlbnRFbWl0dGVyPERvY3VtZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHB1YmxpYyBkb2N1bWVudFRvdGFsUmVjb3JkczogbnVtYmVyO1xuICAgIHB1YmxpYyBncmlkQ29sdW1uczogYW55O1xuICAgIHB1YmxpYyBncmlkRGF0YTogRG9jdW1lbnRbXSA9IFtdO1xuICAgIHB1YmxpYyBzZWxlY3Rpb246IERvY3VtZW50W107XG4gICAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyBsb2FkaW5nOiBib29sZWFuO1xuICAgIHB1YmxpYyBkb2N1bWVudDogRG9jdW1lbnQ7XG4gICAgcHVibGljIGVkaXQ6IGJvb2xlYW47XG4gICAgcHVibGljIHByb2Nlc3NUeXBlOiBQcm9jZXNzVHlwZTtcbiAgICBwdWJsaWMgaXNDbGllbnRlRXh0ZXJubzogYm9vbGVhbjtcbiAgICBwdWJsaWMgZW5hYmxlQnV0dG9uSXNDbGllbnRlRXh0ZXJubyA9IHRydWU7XG4gICAgcHVibGljIGludm9pY2VDb25kaXRpb25zID0gZ2V0SW52b2ljZUNvbmRpdGlvbnModGhpcy50cmFuc2xhdGUpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdW1tYXJ5ID0gXCJ5bXMuaW50Lndtc19zYXZlZF9kb2N1bWVudF9tZXNzYWdlX3RpdGxlXCI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHByaXZhdGUgeWFyZDogYW55O1xuICAgIHByaXZhdGUgc2NoZWR1bGU6IGFueTtcblxuICAgIEBWaWV3Q2hpbGQoXCJkb2N1bWVudFRhYmxlXCIpXG4gICAgcHVibGljIHRhYmxlOiBUYWJsZTtcblxuICAgIEBWaWV3Q2hpbGQoXCJjdXN0b21UZW1wbGF0ZVwiKVxuICAgIHB1YmxpYyBjdXN0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoXCJjdXN0b21GaWx0ZXJGaWVsZHNcIilcbiAgICBwdWJsaWMgY3VzdG9tRmlsdGVyRmllbGRzOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZChcImN1c3RvbUdyaWRDb2xncm91cFwiKVxuICAgIHB1YmxpYyBjdXN0b21HcmlkQ29sZ3JvdXA6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKFwiY3VzdG9tR3JpZEhlYWRlclwiKVxuICAgIHB1YmxpYyBjdXN0b21HcmlkSGVhZGVyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZChcImN1c3RvbUdyaWRCb2R5XCIpXG4gICAgcHVibGljIGN1c3RvbUdyaWRCb2R5OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZ2V0RmlsdGVyZWRJbnZvaWNlQ29uZGl0aW9ucyhpbnZvaWNlQ29uZGl0aW9uczogYW55KTogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogSW52b2ljZUNvbmRpdGlvbiB8IG51bGwgfVtdIHtcbiAgICAgICAgaWYgKGludm9pY2VDb25kaXRpb25zID09PSBJbnZvaWNlQ29uZGl0aW9uLkFVVEhPUklaRUQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmludm9pY2VDb25kaXRpb25zLmZpbHRlcihjb25kID0+IGNvbmQudmFsdWUgPT09IEludm9pY2VDb25kaXRpb24uQVVUSE9SSVpFRCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnZvaWNlQ29uZGl0aW9ucy5maWx0ZXIoY29uZCA9PiBjb25kLnZhbHVlICE9PSBJbnZvaWNlQ29uZGl0aW9uLkFVVEhPUklaRUQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW50ZWdyYXRpb25TZXJ2aWNlOiBJbnRlZ3JhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYWdlbmRhU2VydmljZTogQWdlbmRhU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1dGlsczogVXRpbHNNZXNzYWdlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB3bXNTZXJ2aWNlOiBGb3JtV21zU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IFtdO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZlcmlmeUNsaWVudGVFeHRlcm5vKCk7XG4gICAgICAgIHRoaXMuZ2V0UHJvY2Vzc1R5cGVCeVNjaGVkdWxpbmcoKTtcbiAgICAgICAgdGhpcy5saXN0RG9jdW1lbnRzKGZhbHNlKTtcblxuICAgICAgICB0aGlzLndtc1NlcnZpY2UuZ2V0U3lzdGVtSW50ZWdyYXRpb24oKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoeyBzeXN0ZW0gfTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy53bXNTeXN0ZW0gPSBzeXN0ZW07XG4gICAgICAgICAgICAgICAgaWYoIHRoaXMuaXNXbXNTZW5pb3JDb25uZWN0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRZYXJkKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2NoZWR1bGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFlhcmQoKXtcbiAgICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0WWFyZCh0aGlzLmFnZW5kYS5wbGFudGEuaWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy55YXJkID0gY29udGVudDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTY2hlZHVsZSgpe1xuICAgICAgICBpZih0aGlzLmFnZW5kYS5leHRlcm5hbFRlbmFudCAmJiB0aGlzLmFnZW5kYS5leHRlcm5hbFRlbmFudC5jbnBqKXtcbiAgICAgICAgICAgIHRoaXMuc2NoZWR1bGUgPSB0aGlzLmFnZW5kYTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWdlbmRhU2VydmljZS5nZXQodGhpcy5hZ2VuZGEuaWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zY2hlZHVsZSA9IGNvbnRlbnQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmVyaWZ5Q2xpZW50ZUV4dGVybm8oKSB7XG4gICAgICAgIHRoaXMuYWdlbmRhU2VydmljZS5pc0NsaWVudGVFeHRlcm5vKClcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBJc0NsaWVudGVFeHRlcm5vKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzQ2xpZW50ZUV4dGVybm8gPSByZXN1bHQuaXNDbGllbnRlRXh0ZXJubztcbiAgICAgICAgICAgIHRoaXMuZ3JpZENvbHVtbnMgPSB0aGlzLmdldEdyaWRDb2x1bW5zKCk7XG4gICAgICAgICAgICB0aGlzLmNhbnRFZGl0U3RhdHVzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UHJvY2Vzc1R5cGVCeVNjaGVkdWxpbmcoKSB7XG4gICAgICAgIHRoaXMuaW50ZWdyYXRpb25TZXJ2aWNlLmdldFByb2Nlc3NUeXBlQnlTY2hlZHVsaW5nKHRoaXMuYWdlbmRhLnRpcG9BZ2VuZGFtZW50by5pZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogR2V0UHJvY2Vzc1R5cGVCeVNjaGVkdWxpbmdPdXRwdXQpID0+IHRoaXMucHJvY2Vzc1R5cGUgPSByZXN1bHQucHJvY2Vzc1R5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNoYW5nZURvY3VtZW50KGRvY3VtZW50OiBEb2N1bWVudCkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzRmlsbGVkVmFsdWVzKGRvY3VtZW50KSl7XG4gICAgICAgICAgICB0aGlzLnV0aWxzLm1lc3NhZ2UoXCJlcnJvclwiLFwieW1zLmludC53bXNfc2F2ZV9lcnJvcl9yZWdpc3Rlcl9kb2N1bWVudF9tZXNzYWdlX3RpdGxlXCIsXCJ5bXMuaW50Lndtc19zYXZlX2Vycm9yX3JlZ2lzdGVyX2RvY3VtZW50X21lc3NhZ2VfZGVzY3JpcHRpb25cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFzc2lnbktleXMoZG9jdW1lbnQpO1xuICAgICAgICBjb25zdCBkdXBsaWNhdGVEb2N1bWVudCA9IHRoaXMuZ3JpZERhdGEuZmluZChncmlkRGF0YSA9PiBncmlkRGF0YS5rZXkgPT09IGRvY3VtZW50LmtleSk7XG4gICAgICAgIGlmIChkdXBsaWNhdGVEb2N1bWVudCkge1xuICAgICAgICAgICAgdGhpcy51dGlscy5tZXNzYWdlKFwiZXJyb3JcIixcInltcy5pbnQud21zX2Vycm9yX3JlZ2lzdGVyX2RvY3VtZW50X21lc3NhZ2VfdGl0bGVcIixcInltcy5pbnQud21zX2Vycm9yX3JlZ2lzdGVyX2RvY3VtZW50X21lc3NhZ2VfZGVzY3JpcHRpb25cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdyaWREYXRhLnB1c2goZG9jdW1lbnQpO1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudXRpbHMubWVzc2FnZShcInN1Y2Nlc3NcIiwgdGhpcy5zdW1tYXJ5LCBcInltcy5pbnQud21zX3N1Y2Nlc3NfbWVzc2FnZV9kZXNjcmlwdGlvblwiKTtcbiAgICAgICAgdGhpcy52aXNpYmxlRG9jdW1lbnRSZWdpc3RlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnZpc2libGVJbnZvaWNlS2V5ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3NpZ25LZXlzKGRvY3VtZW50OiBEb2N1bWVudCkge1xuICAgICAgICBpZiAoZG9jdW1lbnQuaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWdlbmRhLmlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5zY2hlZHVsaW5nSWQgPSB0aGlzLmFnZW5kYS5pZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5rZXkgPT09IHVuZGVmaW5lZCB8fCBkb2N1bWVudC5rZXkgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5rZXkgPSBkb2N1bWVudC5pbnZvaWNlS2V5O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzV21zV0lTKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQua2V5ID0gYCR7ZG9jdW1lbnQuaW52b2ljZU51bWJlcn06JHtkb2N1bWVudC5pbnZvaWNlU2VyaWFsTnVtYmVyfToke2RvY3VtZW50LnBhcnRuZXJEb2N1bWVudH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFzRmlsbGVkVmFsdWVzKGRvY3VtZW50OiBEb2N1bWVudCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmb3JtVmFsdWVzID0gT2JqZWN0LnZhbHVlcyhkb2N1bWVudCk7XG4gICAgICAgIHJldHVybiBmb3JtVmFsdWVzLnNvbWUodmFsdWUgPT4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09ICcnKTtcbiAgICB9XG5cblxuICAgIHByaXZhdGUgY2FudEVkaXRTdGF0dXMoKSB7XG4gICAgICAgIGNvbnN0IGNhbnRFZGl0U3RhdHVzID0gW1xuICAgICAgICAgICAgJ0NBTkNFTEFETycsXG4gICAgICAgICAgICAnRU1fRVhFQ1VDQU8nLFxuICAgICAgICAgICAgJ0NPTkNMVUlETycsXG4gICAgICAgICAgICAnQUdVQVJEQU5ET19QT1JfVkFMSURBQ0FPJ1xuICAgICAgICBdLmluY2x1ZGVzKHRoaXMuYWdlbmRhLnN0YXR1cy50b1N0cmluZygpKTtcblxuICAgICAgICBpZihjYW50RWRpdFN0YXR1cykge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVCdXR0b25Jc0NsaWVudGVFeHRlcm5vID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWN0aW9ucygpOiBNZW51SXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5jaGVja1dtc1N5c3RlbUludmFsaWQoKSxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInltcy5pbnQud21zX3NlYXJjaFwiKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZUludm9pY2VLZXkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaWNvbjogXCJmYSBmYS1zZWFyY2hcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5jaGVja1dtc1N5c3RlbUludmFsaWQoKSxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInltcy5pbnQud21zX2FkZF9kb2N1bWVudF9yZWdpc3RlclwiKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZURvY3VtZW50UmVnaXN0ZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaWNvbjogXCJmYXMgZmEtcGVuLXNxdWFyZVwiXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHVibGljIGNoZWNrV21zU3lzdGVtSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMud21zU3lzdGVtICYmIHRoaXMud21zU3lzdGVtID09PSBXbXNTeXN0ZW0uTk9ORSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQcm9wKG9iajogYW55LCBwYXRoOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHBhdGguc3BsaXQoXCIuXCIpLnJlZHVjZSgocmVzdWx0OiBhbnksIHByb3A6IGFueSkgPT4gKHJlc3VsdFtwcm9wXSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IHJlc3VsdFtwcm9wXSksIG9iaik7XG4gICAgfVxuXG4gICAgcHVibGljIHZpZXcoKSB7XG4gICAgICAgIHRoaXMudmlld0RvY3VtZW50LmVtaXQodGhpcy5zZWxlY3Rpb25bMF0pO1xuICAgICAgICB0aGlzLnZpc2libGVEb2N1bWVudFJlZ2lzdGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lZGl0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIHNhdmUoKSB7XG4gICAgICAgIGlmKHRoaXMuZ3JpZERhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncmlkRGF0YS5mb3JFYWNoKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgIGlmKCFkYXRhLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmKCFkYXRhLnNjaGVkdWxpbmdJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5zY2hlZHVsaW5nSWQgPSB0aGlzLmFnZW5kYS5pZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBkYXRhLmtleSA9IHRoaXMudXBkYXRlS2V5QnlXbXMoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmluc2VydChkYXRhKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWNlc3NNZXNzYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLnVwZGF0ZShkYXRhLmlkLCBkYXRhKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWNlc3NNZXNzYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMubGlzdERvY3VtZW50cyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUtleUJ5V21zKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghZGF0YS5rZXkpIHtcbiAgICAgICAgICAgIGRhdGEua2V5ID0gZGF0YS5pbnZvaWNlS2V5O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLndtc1N5c3RlbSA9PT0gV21zU3lzdGVtLldJUykge1xuICAgICAgICAgICAgZGF0YS5rZXkgPSBgJHtkYXRhLmludm9pY2VOdW1iZXJ9OiR7ZGF0YS5pbnZvaWNlU2VyaWFsTnVtYmVyfToke2RhdGEucGFydG5lckRvY3VtZW50fWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGEua2V5O1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRlbGV0ZSgpIHtcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImRlbGV0ZV9jb25maXJtYXRpb25fbWVzc2FnZVwiKSxcbiAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImRlbGV0ZV9jb25maXJtYXRpb25fdGl0bGVcIiksXG4gICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZURvY3VtZW50SWZJZFVuZGZpbmVkKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24ubGVuZ3RoIDwgMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ya0pvaW4odGhpcy5zZWxlY3Rpb24ubWFwKGRvY3VtZW50ID0+IHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmRlbGV0ZShkb2N1bWVudC5pZCkpKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnV0aWxzLm1lc3NhZ2UoXCJzdWNjZXNzXCIsIFwiZGVsZXRlZF9tZXNzYWdlX3RpdGxlXCIsIFwiZGVsZXRlZF9tZXNzYWdlX2NvbnRlbnRcIik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdERvY3VtZW50cyh0cnVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVEb2N1bWVudElmSWRVbmRmaW5lZCgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlLmlkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXhHcmlkRGF0YSA9IHRoaXMuZ3JpZERhdGEuZmluZEluZGV4KGRvY3VtZW50ID0+IGRvY3VtZW50LmtleSA9PT0gdmFsdWUua2V5KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEuc3BsaWNlKGluZGV4R3JpZERhdGEsIDEpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBub3RTYXZlZERvY3VtZW50cygpIDogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWREYXRhLnNvbWUoZG9jdW1lbnQgPT4gIWRvY3VtZW50LmlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbGlzdERvY3VtZW50cyhpc0RlbGV0ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5saXN0KHtcbiAgICAgICAgICAgIGZpbHRlclF1ZXJ5OiBgc2NoZWR1bGluZ0lkIGVxICcke3RoaXMuYWdlbmRhLmlkfSdgLFxuICAgICAgICAgICAgc2l6ZTogMTAwXG4gICAgICAgIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoKGNvbnRlbnRzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEgPSBpc0RlbGV0ZSA/IHRoaXMuZ3JpZERhdGEuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uaWQpIDogW107XG5cbiAgICAgICAgICAgIGlmKGNvbnRlbnRzLnRvdGFsRWxlbWVudHMgPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkRGF0YS5wdXNoKC4uLmNvbnRlbnRzLmNvbnRlbnRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50VG90YWxSZWNvcmRzID0gY29udGVudHMudG90YWxFbGVtZW50cztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudFRvdGFsUmVjb3JkcyA9IHRoaXMuZ3JpZERhdGEubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaGFzRWxlbWVudFdpdGhvdXRJZCA9IHRoaXMuZ3JpZERhdGEuc29tZShpdGVtID0+ICFpdGVtLmlkKTtcblxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9ICFoYXNFbGVtZW50V2l0aG91dElkO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IFtdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEdyaWRDb2x1bW5zKCkge1xuICAgICAgICBsZXQgcmVzdWx0O1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy53bXNTeXN0ZW0pIHtcbiAgICAgICAgICAgIGNhc2UgV21zU3lzdGVtLlNFTklPUl9DT05ORUNUOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMud21zU2VuaW9yQ29ubmVjdEludGVncmF0aW9uKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFdtc1N5c3RlbS5XSVM6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy53bXNXaXNJbnRlZ3JhdGlvbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBXbXNTeXN0ZW0uU0VOSU9SOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMud21zU2lsdEludGVncmF0aW9uKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFdtc1N5c3RlbS5QQVJUTkVSOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMud21zUGFydG5lckludGVncmF0aW9uKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHdtc1BhcnRuZXJJbnRlZ3JhdGlvbigpIHtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IFtcbiAgICAgICAgICAgIHsgZmllbGQ6IFwiaW52b2ljZUtleVwiLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJ5bXMuaW50Lndtc19yZWdpc3Rlcl9kb2N1bWVudF9pbnZvaWNlX2tleVwiKSB9LFxuICAgICAgICAgICAgeyBmaWVsZDogXCJpbnZvaWNlTnVtYmVyXCIsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInltcy5pbnQud21zX3JlZ2lzdGVyX2RvY3VtZW50X2ludm9pY2VfbnVtYmVyXCIpIH0sXG4gICAgICAgICAgICB7IGZpZWxkOiBcImludm9pY2VTZXJpYWxOdW1iZXJcIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwieW1zLmludC53bXNfcmVnaXN0ZXJfZG9jdW1lbnRfaW52b2ljZV9zZXJpYWxfbnVtYmVyXCIpIH0sXG4gICAgICAgICAgICAuLi50aGlzLmdldENvbHVtblBhcnRuZXIoKVxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gY29sdW1ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIHdtc1NlbmlvckNvbm5lY3RJbnRlZ3JhdGlvbigpIHtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IFtcbiAgICAgICAgICAgIHsgZmllbGQ6IFwia2V5XCIsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInltcy5pbnQud21zX3B1cmNoYXNlT3JkZXJcIikgfSxcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q29sdW1uUGFydG5lcigpLFxuICAgICAgICAgICAgLi4udGhpcy5nZXRDb2x1bW5sb2dpc3RjVW5pdCgpXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBjb2x1bW5zO1xuICAgIH1cblxuICAgIHByaXZhdGUgd21zV2lzSW50ZWdyYXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSBbXG4gICAgICAgICAgICAuLi50aGlzLmdldENvbHVtbkludm9pY2VBbmRsb2dpc3RjVW5pdCgpLFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmFkZEludm9pY2VTaXR1YXRpb25JZk5vdENsaWVudGVFeHRlcm5vKGNvbHVtbnMpO1xuICAgICAgICByZXR1cm4gY29sdW1ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIHdtc1NpbHRJbnRlZ3JhdGlvbigpIHtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IFtcbiAgICAgICAgICAgIHsgZmllbGQ6IFwiaW52b2ljZUtleVwiLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJ5bXMuaW50Lndtc19yZWdpc3Rlcl9kb2N1bWVudF9pbnZvaWNlX2tleVwiKSB9LFxuICAgICAgICAgICAgLi4udGhpcy5nZXRDb2x1bW5JbnZvaWNlQW5kbG9naXN0Y1VuaXQoKSxcbiAgICAgICAgICAgIHsgZmllbGQ6IFwib3duZXJOYW1lXCIsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInltcy5pbnQud21zX3JlZ2lzdGVyX2RvY3VtZW50X293bmVyX25hbWVcIikgfSxcbiAgICAgICAgICAgIHsgZmllbGQ6IFwib3duZXJEb2N1bWVudFwiLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJ5bXMuaW50Lndtc19yZWdpc3Rlcl9kb2N1bWVudF9vd25lcl9kb2N1bWVudFwiKSB9LFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmFkZEludm9pY2VTaXR1YXRpb25JZk5vdENsaWVudGVFeHRlcm5vKGNvbHVtbnMpO1xuICAgICAgICByZXR1cm4gY29sdW1ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtbmludm9pY2VDb25kaXRpb24oKSB7XG4gICAgICAgIHJldHVybiB7IGZpZWxkOiBcImludm9pY2VDb25kaXRpb25cIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwieW1zLmludC53bXNfZ3JpZF9kb2N1bWVudF9pbnZvaWNlX2NvbmRpdGlvblwiKSB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uSW52b2ljZUFuZGxvZ2lzdGNVbml0KCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBmaWVsZDogXCJpbnZvaWNlTnVtYmVyXCIsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInltcy5pbnQud21zX3JlZ2lzdGVyX2RvY3VtZW50X2ludm9pY2VfbnVtYmVyXCIpIH0sXG4gICAgICAgICAgICB7IGZpZWxkOiBcImludm9pY2VTZXJpYWxOdW1iZXJcIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwieW1zLmludC53bXNfcmVnaXN0ZXJfZG9jdW1lbnRfaW52b2ljZV9zZXJpYWxfbnVtYmVyXCIpIH0sXG4gICAgICAgICAgICAuLi50aGlzLmdldENvbHVtblBhcnRuZXIoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q29sdW1ubG9naXN0Y1VuaXQoKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uUGFydG5lcigpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgZmllbGQ6IFwicGFydG5lck5hbWVcIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwieW1zLmludC53bXNfcmVnaXN0ZXJfZG9jdW1lbnRfcGFydG5lcl9uYW1lXCIpIH0sXG4gICAgICAgICAgICB7IGZpZWxkOiBcInBhcnRuZXJEb2N1bWVudFwiLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJ5bXMuaW50Lndtc19yZWdpc3Rlcl9kb2N1bWVudF9wYXJ0bmVyX2RvY3VtZW50XCIpIH0sXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5sb2dpc3RjVW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgZmllbGQ6IFwibG9naXN0Y1VuaXROYW1lXCIsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInltcy5pbnQud21zX3JlZ2lzdGVyX2RvY3VtZW50X2xvZ2lzdGNfdW5pdF9uYW1lXCIpIH0sXG4gICAgICAgICAgICB7IGZpZWxkOiBcImxvZ2lzdGNVbml0RG9jdW1lbnRcIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwieW1zLmludC53bXNfcmVnaXN0ZXJfZG9jdW1lbnRfbG9naXN0Y191bml0X2RvY3VtZW50XCIpIH0sXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRJbnZvaWNlU2l0dWF0aW9uSWZOb3RDbGllbnRlRXh0ZXJubyhjb2x1bW5zOiBhbnlbXSkge1xuICAgICAgICBpZiAoIXRoaXMuaXNDbGllbnRlRXh0ZXJubykge1xuICAgICAgICAgICAgY29sdW1ucy5wdXNoKHRoaXMuZ2V0Q29sdW1uaW52b2ljZUNvbmRpdGlvbigpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc1dtc1NlbmlvckNvbm5lY3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLndtc1N5c3RlbSA9PT0gV21zU3lzdGVtLlNFTklPUl9DT05ORUNUO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1dtc1dJUygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud21zU3lzdGVtID09PSBXbXNTeXN0ZW0uV0lTO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1dtc1NpbHQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLndtc1N5c3RlbSA9PT0gV21zU3lzdGVtLlNFTklPUjtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNXbXNQYXJ0bmVyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy53bXNTeXN0ZW0gPT09IFdtc1N5c3RlbS5QQVJUTkVSO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3VjZXNzTWVzc2FnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXRpbHMubWVzc2FnZShcInN1Y2Nlc3NcIiwgdGhpcy5zdW1tYXJ5LCBcInNhdmVkX21lc3NhZ2VfY29udGVudFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVEb2N1bWVudChkb2N1bWVudDogYW55KTogYm9vbGVhbntcbiAgICAgICAgaWYgKHRoaXMuaXNXbXNTZW5pb3JDb25uZWN0KCkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy55YXJkLmNvZGlnbyl7XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZE1lc3NhZ2UoXCJ5bXMuaW50LnlhcmRfY29kZV9ub3RfZm91bmRfd2FybmluZ19kZXNjcmlwdGlvblwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnQubG9naXN0Y1VuaXREb2N1bWVudCAhPT0gdGhpcy55YXJkLmNvZGlnbyl7XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZE1lc3NhZ2UoXCJ5bXMuaW50LmRvY3VtZW50X3lhcmRfbWlzbWF0Y2hfYWdlbmRhX3dhcm5pbmdfZGVzY3JpcHRpb25cIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2NoZWR1bGUuZXh0ZXJuYWxUZW5hbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkTWVzc2FnZShcInltcy5pbnQucGFydG5lcl9ub3RfaW5mb3JtZWRfYWdlbmRhX3dhcm5pbmdfZGVzY3JpcHRpb25cIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnQucGFydG5lckRvY3VtZW50ICE9PSB0aGlzLnNjaGVkdWxlLmV4dGVybmFsVGVuYW50LmNucGopIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkTWVzc2FnZShcInltcy5pbnQucGFydG5lcl9kaWZmZXJzX2Zyb21fYWdlbmRhX3dhcm5pbmdfZGVzY3JpcHRpb25cIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIHByaXZhdGUgYnVpbGRNZXNzYWdlKGRlc2NyaXB0aW9uOiBhbnkpe1xuICAgICAgICB0aGlzLnV0aWxzLm1lc3NhZ2UoXCJ3YXJuXCIsIFwieW1zLmludC5kb2N1bWVudG9faW52YWxpZG9fd2FybmluZ19oZWFkZXJcIiwgZGVzY3JpcHRpb24pO1xuICAgIH1cbn1cbiJdfQ==
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMveW1zLWludGVncmF0aW9uLyIsInNvdXJjZXMiOlsic3JjL3dtcy9jb21wb25lbnRzL2RvY3VtZW50LWdyaWQvZG9jdW1lbnQtZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQXFCLE1BQU0sd0JBQXdCLENBQUM7QUFFL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBT3ZEO0lBaUJFLCtCQUNrQixNQUEwQixFQUNsQyxtQkFBd0MsRUFDeEMsU0FBMkI7UUFGbkIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDbEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQWQzQixpQkFBWSxHQUEyQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBZWpFLENBQUM7SUFFSix3Q0FBUSxHQUFSO1FBQ0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsMkNBQVcsR0FBWDtRQUNFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FB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XG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwicHJpbWVuZy90YWJsZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBEb2N1bWVudCB9IGZyb20gXCIuLi8uLi9lbnRpdGllcy9kb2N1bWVudC9kb2N1bWVudFwiO1xuaW1wb3J0IHsgV21zU3lzdGVtIH0gZnJvbSBcIi4uLy4uL2VudGl0aWVzL3dtcy1zeXN0ZW0vd21zLXN5c3RlbVwiO1xuaW1wb3J0IHsgRG9jdW1lbnRHcmlkRmFjYWRlLCBEb2N1bWVudEdyaWRTdGF0ZSB9IGZyb20gXCIuL2RvY3VtZW50LWdyaWQuZmFjYWRlXCI7XG5pbXBvcnQgeyBJbnZvaWNlQ29uZGl0aW9uIH0gZnJvbSBcIi4uLy4uL2VudGl0aWVzL2ludm9pY2UtY29uZGl0aW9uL2ludm9pY2UtY29uZGl0aW9uXCI7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSBcInByaW1lbmcvYXBpXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImRvY3VtZW50LWdyaWRcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9kb2N1bWVudC1ncmlkLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9kb2N1bWVudC1ncmlkLmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBEb2N1bWVudEdyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGFnZW5kYTtcbiAgQElucHV0KCkgd21zU3lzdGVtOiBXbXNTeXN0ZW07XG5cbiAgQE91dHB1dCgpIHNob3dJbnZvaWNlU2VhcmNoTW9kYWw6IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBzaG93QWRkSW52b2ljZU1vZGFsOiBib29sZWFuO1xuICBAT3V0cHV0KCkgdmlld0RvY3VtZW50OiBFdmVudEVtaXR0ZXI8RG9jdW1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoXCJkb2N1bWVudFRhYmxlXCIpIHB1YmxpYyB0YWJsZTogVGFibGU7XG4gIEBWaWV3Q2hpbGQoXCJjdXN0b21UZW1wbGF0ZVwiKSBwdWJsaWMgY3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoXCJjdXN0b21GaWx0ZXJGaWVsZHNcIikgcHVibGljIGN1c3RvbUZpbHRlckZpZWxkczogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZChcImN1c3RvbUdyaWRDb2xncm91cFwiKSBwdWJsaWMgY3VzdG9tR3JpZENvbGdyb3VwOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKFwiY3VzdG9tR3JpZEhlYWRlclwiKSBwdWJsaWMgY3VzdG9tR3JpZEhlYWRlcjogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZChcImN1c3RvbUdyaWRCb2R5XCIpIHB1YmxpYyBjdXN0b21HcmlkQm9keTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBzdGF0ZSQ6IE9ic2VydmFibGU8RG9jdW1lbnRHcmlkU3RhdGU+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBmYWNhZGU6IERvY3VtZW50R3JpZEZhY2FkZSxcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUkID0gdGhpcy5mYWNhZGUuc3RhdGUkO1xuICAgIHRoaXMuZmFjYWRlLmluaXQodGhpcy5hZ2VuZGEsIHRoaXMud21zU3lzdGVtKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZmFjYWRlLmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIFVJIEV2ZW50IGhhbmRsZXJzIC0gZGVsZWdhbSBwYXJhIG8gZmFjYWRlXG4gIG9uVmlldygpOiB2b2lkIHtcbiAgICBjb25zdCBkb2N1bWVudCA9IHRoaXMuZmFjYWRlLnZpZXdEb2N1bWVudCgpO1xuICAgIHRoaXMudmlld0RvY3VtZW50LmVtaXQoZG9jdW1lbnQpO1xuICB9XG5cbiAgb25TYXZlKCk6IHZvaWQge1xuICAgIHRoaXMuZmFjYWRlLnNhdmUoKTtcbiAgfVxuXG4gIG9uRGVsZXRlKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJkZWxldGVfY29uZmlybWF0aW9uX21lc3NhZ2VcIiksXG4gICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJkZWxldGVfY29uZmlybWF0aW9uX3RpdGxlXCIpLFxuICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZmFjYWRlLmRlbGV0ZVNlbGVjdGVkRG9jdW1lbnRzKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25SZWZyZXNoKCk6IHZvaWQge1xuICAgIHRoaXMuZmFjYWRlLmxpc3REb2N1bWVudHMoZmFsc2UpO1xuICB9XG5cbiAgb25Sb3dTZWxlY3Qocm93RGF0YTogRG9jdW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmZhY2FkZS5hZGRUb1NlbGVjdGlvbihyb3dEYXRhKTtcbiAgfVxuXG4gIG9uSW52b2ljZUNvbmRpdGlvbkNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZhY2FkZS5zZXREaXNhYmxlZChmYWxzZSk7XG4gIH1cblxuICAvLyBHZXR0ZXJzIHBhcmEgbyB0ZW1wbGF0ZSAoZGVsZWdhbSBwYXJhIG8gZmFjYWRlKVxuICBnZXQgaW52b2ljZUNvbmRpdGlvbnMoKTogSW52b2ljZUNvbmRpdGlvbk91dHB1dFtdIHtcbiAgICByZXR1cm4gdGhpcy5mYWNhZGUuaW52b2ljZUNvbmRpdGlvbnM7XG4gIH1cblxuICBnZXRBY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLmZhY2FkZS5nZXRBY3Rpb25zKCk7XG4gIH1cblxuICBnZXRGaWx0ZXJlZEludm9pY2VDb25kaXRpb25zKFxuICAgIGludm9pY2VDb25kaXRpb246IGFueVxuICApOiBJbnZvaWNlQ29uZGl0aW9uT3V0cHV0W10ge1xuICAgIHJldHVybiB0aGlzLmZhY2FkZS5nZXRGaWx0ZXJlZEludm9pY2VDb25kaXRpb25zKGludm9pY2VDb25kaXRpb24pO1xuICB9XG5cbiAgbm90U2F2ZWREb2N1bWVudHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmFjYWRlLm5vdFNhdmVkRG9jdW1lbnRzKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnZvaWNlQ29uZGl0aW9uT3V0cHV0IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IEludm9pY2VDb25kaXRpb247XG59XG4iXX0=
|