@colijnit/transaction 12.1.72 → 12.1.73
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/colijnit-transaction.umd.js +396 -176
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/lib/assets/dictionary/text.properties.js +37 -1
- package/esm2015/lib/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.js +17 -4
- package/esm2015/lib/component/checkout/checkout.component.js +11 -6
- package/esm2015/lib/component/core/base/transaction-filter-content-base.component.js +3 -2
- package/esm2015/lib/component/core/base/transaction-line-base.component.js +4 -3
- package/esm2015/lib/component/relation/relation-base.component.js +4 -1
- package/esm2015/lib/component/relation/relation-general/relation-general.component.js +6 -4
- package/esm2015/lib/component/transaction-confirmation-details/transaction-confirmation-details.component.js +4 -23
- package/esm2015/lib/component/transaction-confirmation-history/transaction-confirmation-history.component.js +2 -4
- package/esm2015/lib/component/transaction-header/transaction-header-delivery/transaction-header-delivery.component.js +10 -3
- package/esm2015/lib/component/transaction-line-fields/transaction-line-supplier-button.component.js +14 -4
- package/esm2015/lib/component/transaction-line-side-panel-purchase/transaction-line-side-panel-purchase.component.js +1 -4
- package/esm2015/lib/component/transaction-search/transaction-filter-content/enum/search-placeholder.enum.js +27 -0
- package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-article/transaction-purchase-order-filter-content-article.component.js +7 -3
- package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-logistics/transaction-purchase-order-filter-content-logistics.component.js +6 -3
- package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-order/transaction-purchase-order-filter-content-order.component.js +8 -3
- package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-article/transaction-sales-order-filter-content-article.component.js +23 -18
- package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-logistics/transaction-sales-order-filter-content-logistics.component.js +133 -130
- package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-order/transaction-sales-order-filter-content-order.component.js +44 -38
- package/esm2015/lib/component/transaction-search/transaction-filter-item/transaction-filter-item.component.js +3 -2
- package/esm2015/lib/service/error.service.js +17 -1
- package/esm2015/lib/service/pending-reason.service.js +17 -11
- package/esm2015/lib/service/relation-connector.service.js +31 -1
- package/esm2015/lib/service/relation.service.js +40 -2
- package/esm2015/lib/service/transaction-connector-adapter.service.js +17 -1
- package/esm2015/lib/service/transaction-connector.service.js +6 -1
- package/esm2015/lib/service/transaction.service.js +14 -5
- package/fesm2015/colijnit-transaction.js +565 -343
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/lib/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.d.ts +8 -4
- package/lib/component/checkout/checkout.component.d.ts +2 -0
- package/lib/component/core/base/transaction-filter-content-base.component.d.ts +2 -1
- package/lib/component/relation/relation-base.component.d.ts +3 -1
- package/lib/component/relation/relation-general/relation-general.component.d.ts +2 -0
- package/lib/component/relation/relation-general/style/_layout.scss +1 -0
- package/lib/component/transaction-confirmation-details/style/_layout.scss +0 -16
- package/lib/component/transaction-confirmation-details/transaction-confirmation-details.component.d.ts +0 -4
- package/lib/component/transaction-confirmation-history/style/_layout.scss +0 -4
- package/lib/component/transaction-header/transaction-header-delivery/transaction-header-delivery.component.d.ts +1 -0
- package/lib/component/transaction-line-fields/transaction-line-supplier-button.component.d.ts +1 -0
- package/lib/component/transaction-line-side-panel-purchase/transaction-line-side-panel-purchase.component.d.ts +0 -1
- package/lib/component/transaction-search/transaction-filter-content/enum/search-placeholder.enum.d.ts +25 -0
- package/lib/component/transaction-search/transaction-filter-item/transaction-filter-item.component.d.ts +1 -1
- package/lib/service/pending-reason.service.d.ts +8 -7
- package/lib/service/relation-connector.service.d.ts +2 -0
- package/lib/service/relation.service.d.ts +7 -0
- package/lib/service/transaction-connector-adapter.service.d.ts +1 -0
- package/lib/service/transaction-connector.service.d.ts +1 -0
- package/lib/service/transaction.service.d.ts +1 -0
- package/lib/style/transaction-globals.scss +3 -43
- package/package.json +3 -3
|
@@ -18,8 +18,9 @@ import { TransactionEventService } from "./transaction-event.service";
|
|
|
18
18
|
import { CustomerFullObject } from "@colijnit/relationapi/build/model/customer-full-object.bo";
|
|
19
19
|
import { RelationStatus } from "@colijnit/articleapi/build/enum/relation-status.enum";
|
|
20
20
|
import { RelationKind } from "@colijnit/articleapi/build/enum/relation-kind.enum";
|
|
21
|
-
import { RelationConnectorService } from "./relation-connector.service";
|
|
22
21
|
import { TransactionKind } from "@colijnit/transactionapi/build/enum/transaction-kind.enum";
|
|
22
|
+
import { RelationService } from "./relation.service";
|
|
23
|
+
import { Relation } from "@colijnit/relationapi/build/model/relation.bo";
|
|
23
24
|
import * as i0 from "@angular/core";
|
|
24
25
|
import * as i1 from "./options.service";
|
|
25
26
|
import * as i2 from "./dialog.service";
|
|
@@ -28,9 +29,9 @@ import * as i4 from "@colijnit/sharedcomponents";
|
|
|
28
29
|
import * as i5 from "./article-connector.service";
|
|
29
30
|
import * as i6 from "./dictionary.service";
|
|
30
31
|
import * as i7 from "./transaction-event.service";
|
|
31
|
-
import * as i8 from "./relation
|
|
32
|
+
import * as i8 from "./relation.service";
|
|
32
33
|
export class PendingReasonService {
|
|
33
|
-
constructor(options, dialogService, connector, sharedService, articleConnector, dictionaryService, transactionEventService,
|
|
34
|
+
constructor(options, dialogService, connector, sharedService, articleConnector, dictionaryService, transactionEventService, relationService) {
|
|
34
35
|
this.options = options;
|
|
35
36
|
this.dialogService = dialogService;
|
|
36
37
|
this.connector = connector;
|
|
@@ -38,7 +39,7 @@ export class PendingReasonService {
|
|
|
38
39
|
this.articleConnector = articleConnector;
|
|
39
40
|
this.dictionaryService = dictionaryService;
|
|
40
41
|
this.transactionEventService = transactionEventService;
|
|
41
|
-
this.
|
|
42
|
+
this.relationService = relationService;
|
|
42
43
|
this.logout = new Subject();
|
|
43
44
|
this.transactionUpdated = new BehaviorSubject(undefined);
|
|
44
45
|
this.relationUpdated = new BehaviorSubject(undefined);
|
|
@@ -49,7 +50,7 @@ export class PendingReasonService {
|
|
|
49
50
|
this.purchasePortalLine = [];
|
|
50
51
|
this.docDeliveryBatch = new DocDeliveryBatch();
|
|
51
52
|
this.articleAmount = 0;
|
|
52
|
-
this._relation = new
|
|
53
|
+
this._relation = new Relation();
|
|
53
54
|
}
|
|
54
55
|
set relation(value) {
|
|
55
56
|
if (value) {
|
|
@@ -68,6 +69,11 @@ export class PendingReasonService {
|
|
|
68
69
|
this.transactionEventService.connectionInitialized.next(true);
|
|
69
70
|
});
|
|
70
71
|
}
|
|
72
|
+
resetCurrentTransaction() {
|
|
73
|
+
this.currentTransaction = new TransactionInfoResponse();
|
|
74
|
+
this._relation = new CustomerFullObject();
|
|
75
|
+
this.articleAmount = 0;
|
|
76
|
+
}
|
|
71
77
|
cancelAddTransactionLine(lineUuid, remember = true) {
|
|
72
78
|
return __awaiter(this, void 0, void 0, function* () {
|
|
73
79
|
return new Promise((resolve, reject) => {
|
|
@@ -270,14 +276,14 @@ export class PendingReasonService {
|
|
|
270
276
|
}
|
|
271
277
|
_getRelation(relation) {
|
|
272
278
|
if (relation) {
|
|
273
|
-
this.
|
|
279
|
+
this.relationService.getRelationNumber(relation.relationId).then((relationNr) => {
|
|
274
280
|
if (relation.relationType === RelationKind.Customer) {
|
|
275
|
-
this.
|
|
281
|
+
this.relationService.getCustomerFullObject(parseInt(relationNr, 0)).then((customer) => {
|
|
276
282
|
this.relation = customer;
|
|
277
283
|
});
|
|
278
284
|
}
|
|
279
285
|
else if (relation.relationType === RelationKind.Supplier) {
|
|
280
|
-
this.
|
|
286
|
+
this.relationService.getSupplierFullObject(parseInt(relationNr, 0)).then((supplier) => {
|
|
281
287
|
this.relation = supplier;
|
|
282
288
|
});
|
|
283
289
|
}
|
|
@@ -285,7 +291,7 @@ export class PendingReasonService {
|
|
|
285
291
|
}
|
|
286
292
|
}
|
|
287
293
|
}
|
|
288
|
-
PendingReasonService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PendingReasonService_Factory() { return new PendingReasonService(i0.ɵɵinject(i1.OptionsService), i0.ɵɵinject(i2.DialogService), i0.ɵɵinject(i3.TransactionConnectorService), i0.ɵɵinject(i4.SharedService), i0.ɵɵinject(i5.ArticleConnectorService), i0.ɵɵinject(i6.DictionaryService), i0.ɵɵinject(i7.TransactionEventService), i0.ɵɵinject(i8.
|
|
294
|
+
PendingReasonService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PendingReasonService_Factory() { return new PendingReasonService(i0.ɵɵinject(i1.OptionsService), i0.ɵɵinject(i2.DialogService), i0.ɵɵinject(i3.TransactionConnectorService), i0.ɵɵinject(i4.SharedService), i0.ɵɵinject(i5.ArticleConnectorService), i0.ɵɵinject(i6.DictionaryService), i0.ɵɵinject(i7.TransactionEventService), i0.ɵɵinject(i8.RelationService)); }, token: PendingReasonService, providedIn: "root" });
|
|
289
295
|
PendingReasonService.decorators = [
|
|
290
296
|
{ type: Injectable, args: [{
|
|
291
297
|
providedIn: "root"
|
|
@@ -299,6 +305,6 @@ PendingReasonService.ctorParameters = () => [
|
|
|
299
305
|
{ type: ArticleConnectorService },
|
|
300
306
|
{ type: DictionaryService },
|
|
301
307
|
{ type: TransactionEventService },
|
|
302
|
-
{ type:
|
|
308
|
+
{ type: RelationService }
|
|
303
309
|
];
|
|
304
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy1yZWFzb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvc2VydmljZS9wZW5kaW5nLXJlYXNvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLG1FQUFtRSxDQUFDO0FBRTFHLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBRS9GLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsZUFBZSxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUNuRyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sd0VBQXdFLENBQUM7QUFDdkgsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFcEUsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0sK0VBQStFLENBQUM7QUFJaEksT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNERBQTRELENBQUM7QUFHNUYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDckYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3BF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L2NvcmVcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvXCI7XHJcbmltcG9ydCB7TGluZU9wZXJhdGlvblN0YXR1c30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9saW5lLW9wZXJhdGlvbi1zdGF0dXMuYm9cIjtcclxuaW1wb3J0IHtQZW5kaW5nUmVhc29uVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3BlbmRpbmctcmVhc29uLXR5cGUuZW51bVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUluZm99IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1pbmZvLmJvXCI7XHJcbmltcG9ydCB7T3B0aW9uc1NlcnZpY2V9IGZyb20gXCIuL29wdGlvbnMuc2VydmljZVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZX0gZnJvbSBcIi4vdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIFN1YmplY3R9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWxpbmUtdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7RGlhbG9nU2VydmljZX0gZnJvbSBcIi4vZGlhbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtSZXNvbHZlTGluZVBlbmRpbmdSZWFzb25SZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3Jlc29sdmUtcGVuZGluZy1yZWFzb24tcmVxdWVzdC5ib1wiO1xyXG5pbXBvcnQge0FydGljbGVDb25uZWN0b3JTZXJ2aWNlfSBmcm9tIFwiLi9hcnRpY2xlLWNvbm5lY3Rvci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SGVhZGVyT3BlcmF0aW9uU3RhdHVzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2hlYWRlci1vcGVyYXRpb24tc3RhdHVzLmJvXCI7XHJcbmltcG9ydCB7UmVzb2x2ZUhlYWRlclBlbmRpbmdSZWFzb25SZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3Jlc29sdmUtaGVhZGVyLXBlbmRpbmctcmVhc29uLXJlcXVlc3QuYm9cIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm99IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby5ib1wiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUNoYXJhY3RlcmlzdGljfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uTGluZUNoYXJhY3RlcmlzdGljLmJvXCI7XHJcbmltcG9ydCB7UHVyY2hhc2VQb3J0YWxMaW5lfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3B1cmNoYXNlLXBvcnRhbC1saW5lLmJvXCI7XHJcbmltcG9ydCB7RG9jRGVsaXZlcnlCYXRjaH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kb2MtZGVsaXZlcnktYmF0Y2guYm9cIjtcclxuaW1wb3J0IHtSZWxhdGlvbkFueVR5cGV9IGZyb20gXCIuLi9tb2RlbC9yZWxhdGlvbi1hbnktdHlwZVwiO1xyXG5pbXBvcnQge0RpYWxvZ1Jlc3BvbnNlSW50ZXJmYWNlfSBmcm9tIFwiLi4vaW50ZXJmYWNlL2RpYWxvZy1yZXNwb25zZS5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtBcHBQb3B1cEJ1dHRvblR5cGV9IGZyb20gXCIuLi9jb21wb25lbnQvY29yZS9lbnVtL2FwcC1wb3B1cC1idXR0b24tdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7U2hhcmVkU2VydmljZX0gZnJvbSBcIkBjb2xpam5pdC9zaGFyZWRjb21wb25lbnRzXCI7XHJcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gXCIuL2RpY3Rpb25hcnkuc2VydmljZVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlfSBmcm9tIFwiLi90cmFuc2FjdGlvbi1ldmVudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7Q3VzdG9tZXJGdWxsT2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL2N1c3RvbWVyLWZ1bGwtb2JqZWN0LmJvXCI7XHJcbmltcG9ydCB7VmFsaWRhdGlvblJlc3VsdH0gZnJvbSBcIkBjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL3ZhbGlkYXRpb24tcmVzdWx0XCI7XHJcbmltcG9ydCB7UmVsYXRpb25TdGF0dXN9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9lbnVtL3JlbGF0aW9uLXN0YXR1cy5lbnVtXCI7XHJcbmltcG9ydCB7UmVsYXRpb25LaW5kfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvZW51bS9yZWxhdGlvbi1raW5kLmVudW1cIjtcclxuaW1wb3J0IHtTdXBwbGllckZ1bGxPYmplY3R9IGZyb20gXCJAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvc3VwcGxpZXItZnVsbC1vYmplY3QuYm9cIjtcclxuaW1wb3J0IHtSZWxhdGlvblNtYWxsT2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLXNtYWxsLW9iamVjdC5ib1wiO1xyXG5pbXBvcnQge1JlbGF0aW9uQ29ubmVjdG9yU2VydmljZX0gZnJvbSBcIi4vcmVsYXRpb24tY29ubmVjdG9yLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbktpbmR9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS90cmFuc2FjdGlvbi1raW5kLmVudW1cIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGVuZGluZ1JlYXNvblNlcnZpY2Uge1xyXG4gIHB1YmxpYyBsb2dvdXQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHB1YmxpYyB0cmFuc2FjdGlvblVwZGF0ZWQ6IEJlaGF2aW9yU3ViamVjdDxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPih1bmRlZmluZWQpO1xyXG4gIHB1YmxpYyByZWxhdGlvblVwZGF0ZWQ6IEJlaGF2aW9yU3ViamVjdDxSZWxhdGlvbkFueVR5cGU+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZWxhdGlvbkFueVR5cGU+KHVuZGVmaW5lZCk7XHJcblxyXG4gIHB1YmxpYyBhcHBsaWNhdGlvblVzZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaW52b2ljZUFkZHJlc3NTYW1lQXNEZWxpdmVyeTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHB1YmxpYyB0cmFuc2FjdGlvbktpbmQ6IFRyYW5zYWN0aW9uS2luZCA9IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyO1xyXG5cclxuICBwdWJsaWMgY3VycmVudFRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSA9IG5ldyBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSgpO1xyXG5cclxuICBwdWJsaWMgc2V0IHJlbGF0aW9uKHZhbHVlOiBSZWxhdGlvbkFueVR5cGUpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLl9yZWxhdGlvbiA9IHZhbHVlO1xyXG4gICAgICB0aGlzLnJlbGF0aW9uVXBkYXRlZC5uZXh0KHRoaXMuX3JlbGF0aW9uKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIGdldCByZWxhdGlvbigpOiBSZWxhdGlvbkFueVR5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlbGF0aW9uO1xyXG4gIH1cclxuICBwdWJsaWMgcHVyY2hhc2VQb3J0YWxMaW5lOiBQdXJjaGFzZVBvcnRhbExpbmVbXSA9IFtdO1xyXG4gIHB1YmxpYyBkb2NEZWxpdmVyeUJhdGNoOiBEb2NEZWxpdmVyeUJhdGNoID0gbmV3IERvY0RlbGl2ZXJ5QmF0Y2goKVxyXG5cclxuICBwdWJsaWMgYXJ0aWNsZUFtb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgcHJpdmF0ZSBfcmVsYXRpb246IFJlbGF0aW9uQW55VHlwZSA9IG5ldyBDdXN0b21lckZ1bGxPYmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgb3B0aW9uczogT3B0aW9uc1NlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBjb25uZWN0b3I6IFRyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBzaGFyZWRTZXJ2aWNlOiBTaGFyZWRTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGFydGljbGVDb25uZWN0b3I6IEFydGljbGVDb25uZWN0b3JTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGRpY3Rpb25hcnlTZXJ2aWNlOiBEaWN0aW9uYXJ5U2VydmljZSxcclxuICAgIHByb3RlY3RlZCB0cmFuc2FjdGlvbkV2ZW50U2VydmljZTogVHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgcmVsYXRpb25Db25uZWN0b3I6IFJlbGF0aW9uQ29ubmVjdG9yU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGluaXQob3B0aW9uczogYW55KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLm9wdGlvbnMuaW5pdGlhbGl6ZShvcHRpb25zKTtcclxuICAgIHRoaXMuc2hhcmVkU2VydmljZS5pbml0KG9wdGlvbnMpO1xyXG4gICAgdGhpcy5jb25uZWN0b3IuY29ubmVjdCgpO1xyXG4gICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5jb25uZWN0aW9uSW5pdGlhbGl6ZWQubmV4dCh0cnVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjYW5jZWxBZGRUcmFuc2FjdGlvbkxpbmUobGluZVV1aWQ6IHN0cmluZywgcmVtZW1iZXI6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHRoaXMuY29ubmVjdG9yLmNhbmNlbEFkZFRyYW5zYWN0aW9uTGluZShsaW5lVXVpZClcclxuICAgICAgICAudGhlbihhc3luYyAocmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVtZW1iZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UuaXNTdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlSGVhZGVyT3BlcmF0aW9uU3RhdHVzZXMocmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBpZiAoIXJlc3BvbnNlLmhlYWRlck9wZXJhdGlvblN0YXR1c2VzIHx8IHJlc3BvbnNlLmhlYWRlck9wZXJhdGlvblN0YXR1c2VzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGxldCBzdWNjZXNzOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCByZXNwb25zZS5oZWFkZXJPcGVyYXRpb25TdGF0dXNlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBzdGF0dXM6IEhlYWRlck9wZXJhdGlvblN0YXR1cyA9IHJlc3BvbnNlLmhlYWRlck9wZXJhdGlvblN0YXR1c2VzW2ldO1xyXG4gICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBhd2FpdCB0aGlzLl9oYW5kbGVIZWFkZXJPcGVyYXRpb25TdGF0dXMoc3RhdHVzLCByZXNwb25zZS50cmFuc2FjdGlvbkluZm8pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaGFzUGVuZGluZ1JlYXNvbnM6IGJvb2xlYW4gPSByZXNwb25zZS5oZWFkZXJPcGVyYXRpb25TdGF0dXNlcy5maWx0ZXIobG9zID0+IGxvcy5wZW5kaW5nUmVhc29uICE9PSBcIk5PTkVcIikubGVuZ3RoID4gMDtcclxuICAgIGlmICghaGFzUGVuZGluZ1JlYXNvbnMpIHtcclxuICAgICAgdGhpcy5yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VjY2VzcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyByZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbih2YWx1ZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uID0gdmFsdWU7XHJcbiAgICB0aGlzLl9zZXRBbW91bnQoKTtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24gJiYgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnJlbGF0aW9uLnJlbGF0aW9uSWQpIHtcclxuICAgICAgdGhpcy5fZ2V0UmVsYXRpb24odGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnJlbGF0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uVXBkYXRlZC5uZXh0KHRoaXMuY3VycmVudFRyYW5zYWN0aW9uKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBpbml0aWFsaXplVHJhbnNhY3Rpb24oKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMucmVsYXRpb24pIHtcclxuICAgICAgdGhpcy5yZWxhdGlvbiA9IG5ldyBDdXN0b21lckZ1bGxPYmplY3QoKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5yZWxhdGlvbi5yZWxhdGlvbklkKSB7XHJcbiAgICAgIGlmICh0aGlzLnJlbGF0aW9uLnJlbGF0aW9uVHlwZSA9PT0gUmVsYXRpb25LaW5kLkN1c3RvbWVyKSB7XHJcbiAgICAgICAgKHRoaXMucmVsYXRpb24gYXMgQ3VzdG9tZXJGdWxsT2JqZWN0KS5yZWxhdGlvblN0YXR1cyA9IFJlbGF0aW9uU3RhdHVzLlJlZ3VsYXJDdXN0b21lcjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbGF0aW9uLnN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnByZWZlcnJlZERlbGl2ZXJ5RGF0ZTIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucHJlZmVycmVkRGVsaXZlcnlEYXRlMiA9IFwiPVwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGlmICghcmVzcG9uc2UubGluZU9wZXJhdGlvblN0YXR1c2VzIHx8IHJlc3BvbnNlLmxpbmVPcGVyYXRpb25TdGF0dXNlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBsZXQgc3VjY2VzczogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgcmVzcG9uc2UubGluZU9wZXJhdGlvblN0YXR1c2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHN0YXR1czogTGluZU9wZXJhdGlvblN0YXR1cyA9IHJlc3BvbnNlLmxpbmVPcGVyYXRpb25TdGF0dXNlc1tpXTtcclxuICAgICAgY29uc3QgdHJhbnNMaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvID0gcmVzcG9uc2UudHJhbnNhY3Rpb25MaW5lcy5maW5kKHQgPT4gdC5saW5lTnIgPT09IHN0YXR1cy5saW5lTnIpO1xyXG4gICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBhd2FpdCB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKHN0YXR1cywgdHJhbnNMaW5lKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhc1BlbmRpbmdSZWFzb25zOiBib29sZWFuID0gcmVzcG9uc2UubGluZU9wZXJhdGlvblN0YXR1c2VzLmZpbHRlcihsb3MgPT4gbG9zLnBlbmRpbmdSZWFzb24gIT09IFwiTk9ORVwiKS5sZW5ndGggPiAwO1xyXG4gICAgaWYgKCFoYXNQZW5kaW5nUmVhc29ucykge1xyXG4gICAgICB0aGlzLnJlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdWNjZXNzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cyhvcGVyYXRpb25TdGF0dXM6IExpbmVPcGVyYXRpb25TdGF0dXMsIHRyYW5zYWN0aW9uTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgc3dpdGNoIChvcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvblR5cGUpIHtcclxuICAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5BQk9SVEVEOlxyXG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLkNBTkNFTExFRDpcclxuICAgICAgICBpZiAob3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24gIT09ICdVU0VSX0RFQ0lTSU9OJykge1xyXG4gICAgICAgIC8vICAgYXdhaXQgdGhpcy5fY2FuY2VsQXJ0aWNsZShvcGVyYXRpb25TdGF0dXMudXVpZCk7XHJcbiAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuX3Nob3dSZWFzb25EaWFsb2cob3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQ09ORklSTUFUSU9OX05FRURFRDpcclxuICAgICAgICBhd2FpdCB0aGlzLl9jb25maXJtQWN0aW9uKHRyYW5zYWN0aW9uTGluZS51dWlkLCBvcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbiwgb3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb25UeXBlKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuSU5WQUxJRF9MT0dJU1RJQ1M6XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fc2hvd1dhcmVob3VzZUNjRGlhbG9nKFxyXG4gICAgICAgICAgb3BlcmF0aW9uU3RhdHVzLnV1aWQsIHRyYW5zYWN0aW9uTGluZS5hbW91bnQsIHRyYW5zYWN0aW9uTGluZS5jb21taXNzaW9uQ29kZSwgdHJhbnNhY3Rpb25MaW5lLndhcmVob3VzZU51bWJlcixcclxuICAgICAgICAgIG9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uLCBvcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvblR5cGUpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLk5PTl9DUklUSUNBTF9ESVNDT05USU5VQVRJT046XHJcbiAgICAgICAgdGhpcy5fc2hvd1JlYXNvbkRpYWxvZyhvcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQ0hBUkFDVEVSSVNUSUNTX0FOU1dFUl9ORUVERUQ6XHJcbiAgICAgICAgdGhpcy5fc2hvd0NoYXJhY3RlcmlzdGljRGlhbG9nKG9wZXJhdGlvblN0YXR1cy51dWlkLCBvcGVyYXRpb25TdGF0dXMuY2hhcmFjdGVyaXN0aWMsIG9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uLCBvcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvblR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLk5PTkU6XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVIZWFkZXJPcGVyYXRpb25TdGF0dXMob3BlcmF0aW9uU3RhdHVzOiBIZWFkZXJPcGVyYXRpb25TdGF0dXMsIHRyYW5zYWN0aW9uSW5mbzogVHJhbnNhY3Rpb25JbmZvKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBzd2l0Y2ggKG9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uVHlwZSkge1xyXG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLkFCT1JURUQ6XHJcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQ0FOQ0VMTEVEOlxyXG4gICAgICAgIGF3YWl0IHRoaXMuX3Nob3dSZWFzb25EaWFsb2cob3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24pO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5DT05GSVJNQVRJT05fTkVFREVEOlxyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25maXJtSGVhZGVyQWN0aW9uKHRyYW5zYWN0aW9uSW5mby51dWlkLCBvcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbiwgb3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb25UeXBlKTtcclxuICAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5OT05FOlxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHJlc29sdmVQZW5kaW5nTGluZVJlYXNvbihwZW5kaW5nTGluZVZhbHVlczogUmVzb2x2ZUxpbmVQZW5kaW5nUmVhc29uUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5jb25uZWN0b3IucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHBlbmRpbmdMaW5lVmFsdWVzKTtcclxuICAgIC8vIHRoaXMucmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xyXG4gICAgdGhpcy5oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzZXMocmVzcG9uc2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHJlc29sdmVQZW5kaW5nSGVhZGVyUmVhc29uKHBlbmRpbmdIZWFkZXJWYWx1ZXM6IFJlc29sdmVIZWFkZXJQZW5kaW5nUmVhc29uUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5jb25uZWN0b3IucmVzb2x2ZVBlbmRpbmdIZWFkZXJSZWFzb24ocGVuZGluZ0hlYWRlclZhbHVlcyk7XHJcbiAgICAvLyB0aGlzLnJlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcclxuICAgIHJldHVybiB0aGlzLmhhbmRsZUhlYWRlck9wZXJhdGlvblN0YXR1c2VzKHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2NvbmZpcm1BY3Rpb24odXVpZDogc3RyaW5nLCByZWFzb246IHN0cmluZywgdHlwZTogUGVuZGluZ1JlYXNvblR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHJlYXNvblJlcXVlc3QgPSBuZXcgUmVzb2x2ZUxpbmVQZW5kaW5nUmVhc29uUmVxdWVzdCh1dWlkLCByZWFzb24sIHR5cGUpO1xyXG4gICAgLy8gY29uc3QgcGVuZGluZ1JlYXNvblRleHQ6IHN0cmluZyA9IGF3YWl0IHRoaXMuX2dldFBlbmRpbmdSZWFzb25UZXh0KHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uKTtcclxuICAgIHJlYXNvblJlcXVlc3QuY29uZmlybWF0aW9uID0gYXdhaXQgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dZZXNObygnQWN0aW9uJywgcmVhc29uKTtcclxuICAgIGF3YWl0IHRoaXMucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHJlYXNvblJlcXVlc3QpO1xyXG4gICAgLy8gdGhpcy5faGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cygpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9zaG93Q2hhcmFjdGVyaXN0aWNEaWFsb2codXVpZDogc3RyaW5nLCBjaGFyYWN0ZXJpc3RpY3M6IFRyYW5zYWN0aW9uTGluZUNoYXJhY3RlcmlzdGljLCByZWFzb246IHN0cmluZywgdHlwZTogUGVuZGluZ1JlYXNvblR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHJlYXNvblJlcXVlc3QgPSBuZXcgUmVzb2x2ZUxpbmVQZW5kaW5nUmVhc29uUmVxdWVzdCh1dWlkLCByZWFzb24sIHR5cGUpO1xyXG4gICAgbGV0IGNoYXI6IHN0cmluZztcclxuICAgIGNvbnN0IHJlc3BvbnNlOiBEaWFsb2dSZXNwb25zZUludGVyZmFjZSA9IGF3YWl0IHRoaXMuZGlhbG9nU2VydmljZS5zaG93Q2hhcmFjdGVyaXN0aWNzKFxyXG4gICAgICBjaGFyYWN0ZXJpc3RpY3MucXVlc3Rpb24sIGNoYXJhY3RlcmlzdGljcy50cmFuc2FjdGlvbkxpbmVDaGFyYWN0ZXJpc3RpY0Nob2ljZXMsIGNoYXJhY3RlcmlzdGljcy52YWx1ZSk7XHJcbiAgICBpZiAocmVzcG9uc2UuYnV0dG9uID09PSBBcHBQb3B1cEJ1dHRvblR5cGUuT2spIHtcclxuICAgICAgY2hhciA9IHJlc3BvbnNlLm91dHB1dDtcclxuICAgIH1cclxuICAgIHJlYXNvblJlcXVlc3QudGV4dHVhbFVzZXJJbnB1dCA9IGNoYXI7XHJcbiAgICBhd2FpdCB0aGlzLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbihyZWFzb25SZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3Nob3dXYXJlaG91c2VDY0RpYWxvZyh1dWlkOiBzdHJpbmcsIHF1YW50aXR5OiBudW1iZXIsIGNvbW1pc3Npb25Db2RlOiBzdHJpbmcsIHdhcmVob3VzZU5yOiBudW1iZXIsIHJlYXNvbjogc3RyaW5nLCB0eXBlOiBQZW5kaW5nUmVhc29uVHlwZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgcmVhc29uUmVxdWVzdCA9IG5ldyBSZXNvbHZlTGluZVBlbmRpbmdSZWFzb25SZXF1ZXN0KHV1aWQsIHJlYXNvbiwgdHlwZSk7XHJcbiAgICBjb25zdCByZXNwb25zZTogRGlhbG9nUmVzcG9uc2VJbnRlcmZhY2UgPSBhd2FpdCB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd1dhcmVob3VzZUNDKHF1YW50aXR5LCBjb21taXNzaW9uQ29kZSwgd2FyZWhvdXNlTnIpO1xyXG4gICAgaWYgKHJlc3BvbnNlLmJ1dHRvbiA9PT0gQXBwUG9wdXBCdXR0b25UeXBlLk9rKSB7XHJcbiAgICAgIHJlYXNvblJlcXVlc3QucXVhbnRpdHkgPSByZXNwb25zZS5vdXRwdXQucXVhbnRpdHk7XHJcbiAgICAgIHJlYXNvblJlcXVlc3QuY29tbWlzc2lvbkNvZGUgPSByZXNwb25zZS5vdXRwdXQuY29tbWlzc2lvbkNvZGU7XHJcbiAgICAgIHJlYXNvblJlcXVlc3Qud2FyZWhvdXNlTnIgPSByZXNwb25zZS5vdXRwdXQud2FyZWhvdXNlTnI7XHJcbiAgICAgIGF3YWl0IHRoaXMucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHJlYXNvblJlcXVlc3QpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fY2FuY2VsQXJ0aWNsZSh1dWlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2NvbmZpcm1IZWFkZXJBY3Rpb24odXVpZDogc3RyaW5nLCByZWFzb246IHN0cmluZywgdHlwZTogUGVuZGluZ1JlYXNvblR5cGUpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IHJlYXNvblJlcXVlc3QgPSBuZXcgUmVzb2x2ZUhlYWRlclBlbmRpbmdSZWFzb25SZXF1ZXN0KHV1aWQsIHJlYXNvbiwgdHlwZSk7XHJcbiAgICAvLyBjb25zdCBwZW5kaW5nUmVhc29uVGV4dDogc3RyaW5nID0gYXdhaXQgdGhpcy5fZ2V0UGVuZGluZ1JlYXNvblRleHQodGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24pO1xyXG4gICAgcmVhc29uUmVxdWVzdC5jb25maXJtYXRpb24gPSBhd2FpdCB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd1llc05vKCdBY3Rpb24nLCByZWFzb24pO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucmVzb2x2ZVBlbmRpbmdIZWFkZXJSZWFzb24ocmVhc29uUmVxdWVzdCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9zaG93UmVhc29uRGlhbG9nKHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dJbmZvcm1hdGlvbihyZWFzb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0QW1vdW50KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFRyYW5zYWN0aW9uICYmIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTGluZXMpIHtcclxuICAgICAgdGhpcy5hcnRpY2xlQW1vdW50ID0gdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lcy5maWx0ZXIodCA9PiB0LmxpbmVUeXBlID09PSBUcmFuc2FjdGlvbkxpbmVUeXBlLkFydGljbGVMaW5lKS5sZW5ndGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9jYW5jZWxBcnRpY2xlKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5jYW5jZWxBZGRUcmFuc2FjdGlvbkxpbmUodXVpZCwgZmFsc2UpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldFJlbGF0aW9uKHJlbGF0aW9uOiBSZWxhdGlvblNtYWxsT2JqZWN0KTogdm9pZCB7XHJcbiAgICBpZiAocmVsYXRpb24pIHtcclxuICAgICAgdGhpcy5yZWxhdGlvbkNvbm5lY3Rvci5nZXRSZWxhdGlvbk51bWJlcihyZWxhdGlvbi5yZWxhdGlvbklkKS50aGVuKChyZWxhdGlvbk5yOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAocmVsYXRpb24ucmVsYXRpb25UeXBlID09PSBSZWxhdGlvbktpbmQuQ3VzdG9tZXIpIHtcclxuICAgICAgICAgIHRoaXMucmVsYXRpb25Db25uZWN0b3IuZ2V0Q3VzdG9tZXJGdWxsT2JqZWN0KHBhcnNlSW50KHJlbGF0aW9uTnIsIDApKS50aGVuKChjdXN0b21lcjogQ3VzdG9tZXJGdWxsT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVsYXRpb24gPSBjdXN0b21lcjtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVsYXRpb24ucmVsYXRpb25UeXBlID09PSBSZWxhdGlvbktpbmQuU3VwcGxpZXIpIHtcclxuICAgICAgICAgIHRoaXMucmVsYXRpb25Db25uZWN0b3IuZ2V0U3VwcGxpZXJGdWxsT2JqZWN0KHBhcnNlSW50KHJlbGF0aW9uTnIsIDApKS50aGVuKChzdXBwbGllcjogU3VwcGxpZXJGdWxsT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVsYXRpb24gPSBzdXBwbGllcjtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
310
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy1yZWFzb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvc2VydmljZS9wZW5kaW5nLXJlYXNvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLG1FQUFtRSxDQUFDO0FBRTFHLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBRS9GLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsZUFBZSxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUNuRyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sd0VBQXdFLENBQUM7QUFDdkgsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFcEUsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0sK0VBQStFLENBQUM7QUFJaEksT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNERBQTRELENBQUM7QUFHNUYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDckYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBRTdGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUNwRixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFHaEYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sK0NBQStDLENBQUM7Ozs7Ozs7Ozs7QUFLdkUsTUFBTSxPQUFPLG9CQUFvQjtJQTRCL0IsWUFDUyxPQUF1QixFQUNwQixhQUE0QixFQUM1QixTQUFzQyxFQUN0QyxhQUE0QixFQUM1QixnQkFBeUMsRUFDekMsaUJBQW9DLEVBQ3BDLHVCQUFnRCxFQUNoRCxlQUFnQztRQVBuQyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNwQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixjQUFTLEdBQVQsU0FBUyxDQUE2QjtRQUN0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBQ3pDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFuQ3JDLFdBQU0sR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUM1Qyx1QkFBa0IsR0FBNkMsSUFBSSxlQUFlLENBQTBCLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZILG9CQUFlLEdBQThCLElBQUksZUFBZSxDQUFXLFNBQVMsQ0FBQyxDQUFDO1FBRXRGLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLGlDQUE0QixHQUFZLElBQUksQ0FBQztRQUU3QyxvQkFBZSxHQUFvQixlQUFlLENBQUMsVUFBVSxDQUFDO1FBRTlELHVCQUFrQixHQUE0QixJQUFJLHVCQUF1QixFQUFFLENBQUM7UUFXNUUsdUJBQWtCLEdBQXlCLEVBQUUsQ0FBQztRQUM5QyxxQkFBZ0IsR0FBcUIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFBO1FBRTNELGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRXpCLGNBQVMsR0FBYSxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBWTdDLENBQUM7SUExQkQsSUFBVyxRQUFRLENBQUMsS0FBZTtRQUNqQyxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7SUFDRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFvQlksSUFBSSxDQUFDLE9BQVk7O1lBQzVCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsdUJBQXVCLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLENBQUM7S0FBQTtJQUVNLHVCQUF1QjtRQUM1QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFWSx3QkFBd0IsQ0FBQyxRQUFnQixFQUFFLFdBQW9CLElBQUk7O1lBQzlFLE9BQU8sSUFBSSxPQUFPLENBQTBCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUM5RCxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQztxQkFDOUMsSUFBSSxDQUFDLENBQU8sUUFBaUMsRUFBRSxFQUFFO29CQUNoRCxJQUFJLFFBQVEsRUFBRTt3QkFDWixJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLENBQUM7cUJBQzNDO29CQUNELElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRTt3QkFDdEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUNuQjt5QkFBTTt3QkFDTCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7cUJBQ2xCO2dCQUNILENBQUMsQ0FBQSxDQUFDO3FCQUNELEtBQUssQ0FBQyxDQUFDLE1BQXdCLEVBQUUsRUFBRTtvQkFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBO0lBRVksNkJBQTZCLENBQUMsUUFBaUM7O1lBQzFFLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLElBQUksUUFBUSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3RGLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxJQUFJLE9BQU8sR0FBWSxJQUFJLENBQUM7WUFDNUIsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hFLE1BQU0sTUFBTSxHQUEwQixRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFFLE9BQU8sR0FBRyxPQUFPLEtBQUksTUFBTSxJQUFJLENBQUMsNEJBQTRCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQSxDQUFDO2FBQ2hHO1lBQ0QsTUFBTSxpQkFBaUIsR0FBWSxRQUFRLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsS0FBSyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzNILElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzNDO1lBQ0QsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztLQUFBO0lBRVksMEJBQTBCLENBQUMsS0FBOEI7O1lBQ3BFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7WUFDaEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFO2dCQUNuSCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDckU7WUFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3hELENBQUM7S0FBQTtJQUVTLHFCQUFxQjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztTQUMxQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtZQUM3QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLFlBQVksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3ZELElBQUksQ0FBQyxRQUErQixDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsZUFBZSxDQUFDO2FBQ3ZGO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztTQUN0QztRQUNELElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsS0FBSyxTQUFTLEVBQUU7WUFDaEYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsR0FBRyxHQUFHLENBQUM7U0FDdEU7SUFDSCxDQUFDO0lBRWUsMkJBQTJCLENBQUMsUUFBaUM7O1lBQzNFLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLElBQUksUUFBUSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ2xGLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxJQUFJLE9BQU8sR0FBWSxJQUFJLENBQUM7WUFDNUIsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RFLE1BQU0sTUFBTSxHQUF3QixRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RFLE1BQU0sU0FBUyxHQUF3QixRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3ZHLE9BQU8sR0FBRyxPQUFPLEtBQUksTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFBLENBQUM7YUFDL0U7WUFDRCxNQUFNLGlCQUFpQixHQUFZLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDekgsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUN0QixJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDM0M7WUFDRCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO0tBQUE7SUFFYSwwQkFBMEIsQ0FBQyxlQUFvQyxFQUFFLGVBQW9DOztZQUNqSCxRQUFRLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDekMsS0FBSyxpQkFBaUIsQ0FBQyxPQUFPLENBQUM7Z0JBQy9CLEtBQUssaUJBQWlCLENBQUMsU0FBUztvQkFDOUIsSUFBSSxlQUFlLENBQUMsYUFBYSxLQUFLLGVBQWUsRUFBRTt3QkFDdkQscURBQXFEO3dCQUNyRCxXQUFXO3dCQUNULElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7cUJBQ3ZEO29CQUNELE9BQU8sS0FBSyxDQUFDO2dCQUNmLEtBQUssaUJBQWlCLENBQUMsbUJBQW1CO29CQUN4QyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUNsSCxPQUFPLEtBQUssQ0FBQztnQkFDZixLQUFLLGlCQUFpQixDQUFDLGlCQUFpQjtvQkFDdEMsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQy9CLGVBQWUsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsY0FBYyxFQUFFLGVBQWUsQ0FBQyxlQUFlLEVBQzdHLGVBQWUsQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBQ3BFLE9BQU8sSUFBSSxDQUFDO2dCQUNkLEtBQUssaUJBQWlCLENBQUMsNEJBQTRCO29CQUNqRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUN0RCxNQUFNO2dCQUNSLEtBQUssaUJBQWlCLENBQUMsNkJBQTZCO29CQUNsRCxJQUFJLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsY0FBYyxFQUFFLGVBQWUsQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBQ3ZKLE1BQU07Z0JBQ1IsS0FBSyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7Z0JBQzVCO29CQUNFLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7UUFDSCxDQUFDO0tBQUE7SUFFYSw0QkFBNEIsQ0FBQyxlQUFzQyxFQUFFLGVBQWdDOztZQUNqSCxRQUFRLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDekMsS0FBSyxpQkFBaUIsQ0FBQyxPQUFPLENBQUM7Z0JBQy9CLEtBQUssaUJBQWlCLENBQUMsU0FBUztvQkFDOUIsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUM1RCxPQUFPLEtBQUssQ0FBQztnQkFDZixLQUFLLGlCQUFpQixDQUFDLG1CQUFtQjtvQkFDeEMsT0FBTyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ2pJLEtBQUssaUJBQWlCLENBQUMsSUFBSSxDQUFDO2dCQUM1QjtvQkFDRSxPQUFPLElBQUksQ0FBQzthQUNmO1FBQ0gsQ0FBQztLQUFBO0lBRVksd0JBQXdCLENBQUMsaUJBQWtEOztZQUN0RixNQUFNLFFBQVEsR0FBNEIsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDM0csNkNBQTZDO1lBQzdDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QyxDQUFDO0tBQUE7SUFFWSwwQkFBMEIsQ0FBQyxtQkFBc0Q7O1lBQzVGLE1BQU0sUUFBUSxHQUE0QixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUMvRyw2Q0FBNkM7WUFDN0MsT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsQ0FBQztLQUFBO0lBRWEsY0FBYyxDQUFDLElBQVksRUFBRSxNQUFjLEVBQUUsSUFBdUI7O1lBQ2hGLE1BQU0sYUFBYSxHQUFHLElBQUksK0JBQStCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM5RSxpSEFBaUg7WUFDakgsYUFBYSxDQUFDLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNsRixNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNuRCxvQ0FBb0M7UUFDdEMsQ0FBQztLQUFBO0lBRWEseUJBQXlCLENBQUMsSUFBWSxFQUFFLGVBQThDLEVBQUUsTUFBYyxFQUFFLElBQXVCOztZQUMzSSxNQUFNLGFBQWEsR0FBRyxJQUFJLCtCQUErQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUUsSUFBSSxJQUFZLENBQUM7WUFDakIsTUFBTSxRQUFRLEdBQTRCLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FDcEYsZUFBZSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsb0NBQW9DLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pHLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUU7Z0JBQzdDLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO2FBQ3hCO1lBQ0QsYUFBYSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUN0QyxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRCxDQUFDO0tBQUE7SUFFYSxzQkFBc0IsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxjQUFzQixFQUFFLFdBQW1CLEVBQUUsTUFBYyxFQUFFLElBQXVCOztZQUN2SixNQUFNLGFBQWEsR0FBRyxJQUFJLCtCQUErQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUUsTUFBTSxRQUFRLEdBQTRCLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUMxSCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssa0JBQWtCLENBQUMsRUFBRSxFQUFFO2dCQUM3QyxhQUFhLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO2dCQUNsRCxhQUFhLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO2dCQUM5RCxhQUFhLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO2dCQUN4RCxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNwRDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzNCO1FBQ0gsQ0FBQztLQUFBO0lBRWEsb0JBQW9CLENBQUMsSUFBWSxFQUFFLE1BQWMsRUFBRSxJQUF1Qjs7WUFDdEYsTUFBTSxhQUFhLEdBQUcsSUFBSSxpQ0FBaUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2hGLGlIQUFpSDtZQUNqSCxhQUFhLENBQUMsWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2xGLE9BQU8sTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUQsQ0FBQztLQUFBO0lBRWEsaUJBQWlCLENBQUMsTUFBYzs7WUFDNUMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRCxDQUFDO0tBQUE7SUFFTyxVQUFVO1FBQ2hCLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2RSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztTQUNsSTtJQUNILENBQUM7SUFFYSxjQUFjLENBQUMsSUFBWTs7WUFDdkMsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztpQkFDN0MsSUFBSSxDQUFDLENBQUMsUUFBaUMsRUFBRSxFQUFFO2dCQUN4QyxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUNGLENBQUM7UUFDTixDQUFDO0tBQUE7SUFFTyxZQUFZLENBQUMsUUFBNkI7UUFDaEQsSUFBSSxRQUFRLEVBQUU7WUFDWixJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFrQixFQUFFLEVBQUU7Z0JBQ3RGLElBQUksUUFBUSxDQUFDLFlBQVksS0FBSyxZQUFZLENBQUMsUUFBUSxFQUFFO29CQUNuRCxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUE0QixFQUFFLEVBQUU7d0JBQ3hHLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO29CQUMzQixDQUFDLENBQUMsQ0FBQztpQkFDSjtxQkFBTSxJQUFJLFFBQVEsQ0FBQyxZQUFZLEtBQUssWUFBWSxDQUFDLFFBQVEsRUFBRTtvQkFDMUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBNEIsRUFBRSxFQUFFO3dCQUN4RyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztvQkFDM0IsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7OztZQXJRRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQS9CTyxjQUFjO1lBSWQsYUFBYTtZQUhiLDJCQUEyQjtZQWUzQixhQUFhO1lBVmIsdUJBQXVCO1lBV3ZCLGlCQUFpQjtZQUNqQix1QkFBdUI7WUFRdkIsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvXCI7XHJcbmltcG9ydCB7TGluZU9wZXJhdGlvblN0YXR1c30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9saW5lLW9wZXJhdGlvbi1zdGF0dXMuYm9cIjtcclxuaW1wb3J0IHtQZW5kaW5nUmVhc29uVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3BlbmRpbmctcmVhc29uLXR5cGUuZW51bVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUluZm99IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1pbmZvLmJvXCI7XHJcbmltcG9ydCB7T3B0aW9uc1NlcnZpY2V9IGZyb20gXCIuL29wdGlvbnMuc2VydmljZVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZX0gZnJvbSBcIi4vdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIFN1YmplY3R9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWxpbmUtdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7RGlhbG9nU2VydmljZX0gZnJvbSBcIi4vZGlhbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtSZXNvbHZlTGluZVBlbmRpbmdSZWFzb25SZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3Jlc29sdmUtcGVuZGluZy1yZWFzb24tcmVxdWVzdC5ib1wiO1xyXG5pbXBvcnQge0FydGljbGVDb25uZWN0b3JTZXJ2aWNlfSBmcm9tIFwiLi9hcnRpY2xlLWNvbm5lY3Rvci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SGVhZGVyT3BlcmF0aW9uU3RhdHVzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2hlYWRlci1vcGVyYXRpb24tc3RhdHVzLmJvXCI7XHJcbmltcG9ydCB7UmVzb2x2ZUhlYWRlclBlbmRpbmdSZWFzb25SZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3Jlc29sdmUtaGVhZGVyLXBlbmRpbmctcmVhc29uLXJlcXVlc3QuYm9cIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm99IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby5ib1wiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUNoYXJhY3RlcmlzdGljfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uTGluZUNoYXJhY3RlcmlzdGljLmJvXCI7XHJcbmltcG9ydCB7UHVyY2hhc2VQb3J0YWxMaW5lfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3B1cmNoYXNlLXBvcnRhbC1saW5lLmJvXCI7XHJcbmltcG9ydCB7RG9jRGVsaXZlcnlCYXRjaH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kb2MtZGVsaXZlcnktYmF0Y2guYm9cIjtcclxuaW1wb3J0IHtSZWxhdGlvbkFueVR5cGV9IGZyb20gXCIuLi9tb2RlbC9yZWxhdGlvbi1hbnktdHlwZVwiO1xyXG5pbXBvcnQge0RpYWxvZ1Jlc3BvbnNlSW50ZXJmYWNlfSBmcm9tIFwiLi4vaW50ZXJmYWNlL2RpYWxvZy1yZXNwb25zZS5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtBcHBQb3B1cEJ1dHRvblR5cGV9IGZyb20gXCIuLi9jb21wb25lbnQvY29yZS9lbnVtL2FwcC1wb3B1cC1idXR0b24tdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7U2hhcmVkU2VydmljZX0gZnJvbSBcIkBjb2xpam5pdC9zaGFyZWRjb21wb25lbnRzXCI7XHJcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gXCIuL2RpY3Rpb25hcnkuc2VydmljZVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlfSBmcm9tIFwiLi90cmFuc2FjdGlvbi1ldmVudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7Q3VzdG9tZXJGdWxsT2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL2N1c3RvbWVyLWZ1bGwtb2JqZWN0LmJvXCI7XHJcbmltcG9ydCB7VmFsaWRhdGlvblJlc3VsdH0gZnJvbSBcIkBjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL3ZhbGlkYXRpb24tcmVzdWx0XCI7XHJcbmltcG9ydCB7UmVsYXRpb25TdGF0dXN9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9lbnVtL3JlbGF0aW9uLXN0YXR1cy5lbnVtXCI7XHJcbmltcG9ydCB7UmVsYXRpb25LaW5kfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvZW51bS9yZWxhdGlvbi1raW5kLmVudW1cIjtcclxuaW1wb3J0IHtTdXBwbGllckZ1bGxPYmplY3R9IGZyb20gXCJAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvc3VwcGxpZXItZnVsbC1vYmplY3QuYm9cIjtcclxuaW1wb3J0IHtSZWxhdGlvblNtYWxsT2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLXNtYWxsLW9iamVjdC5ib1wiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uS2luZH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWtpbmQuZW51bVwiO1xyXG5pbXBvcnQge1JlbGF0aW9uU2VydmljZX0gZnJvbSBcIi4vcmVsYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQge1JlbGF0aW9ufSBmcm9tIFwiQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLmJvXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcclxufSlcclxuZXhwb3J0IGNsYXNzIFBlbmRpbmdSZWFzb25TZXJ2aWNlIHtcclxuICBwdWJsaWMgbG9nb3V0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwdWJsaWMgdHJhbnNhY3Rpb25VcGRhdGVkOiBCZWhhdmlvclN1YmplY3Q8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4odW5kZWZpbmVkKTtcclxuICBwdWJsaWMgcmVsYXRpb25VcGRhdGVkOiBCZWhhdmlvclN1YmplY3Q8UmVsYXRpb24+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZWxhdGlvbj4odW5kZWZpbmVkKTtcclxuXHJcbiAgcHVibGljIGFwcGxpY2F0aW9uVXNlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpbnZvaWNlQWRkcmVzc1NhbWVBc0RlbGl2ZXJ5OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHVibGljIHRyYW5zYWN0aW9uS2luZDogVHJhbnNhY3Rpb25LaW5kID0gVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXI7XHJcblxyXG4gIHB1YmxpYyBjdXJyZW50VHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlID0gbmV3IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKCk7XHJcblxyXG4gIHB1YmxpYyBzZXQgcmVsYXRpb24odmFsdWU6IFJlbGF0aW9uKSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5fcmVsYXRpb24gPSB2YWx1ZTtcclxuICAgICAgdGhpcy5yZWxhdGlvblVwZGF0ZWQubmV4dCh0aGlzLl9yZWxhdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQgcmVsYXRpb24oKTogUmVsYXRpb24ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlbGF0aW9uO1xyXG4gIH1cclxuICBwdWJsaWMgcHVyY2hhc2VQb3J0YWxMaW5lOiBQdXJjaGFzZVBvcnRhbExpbmVbXSA9IFtdO1xyXG4gIHB1YmxpYyBkb2NEZWxpdmVyeUJhdGNoOiBEb2NEZWxpdmVyeUJhdGNoID0gbmV3IERvY0RlbGl2ZXJ5QmF0Y2goKVxyXG5cclxuICBwdWJsaWMgYXJ0aWNsZUFtb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgcHJpdmF0ZSBfcmVsYXRpb246IFJlbGF0aW9uID0gbmV3IFJlbGF0aW9uKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgY29ubmVjdG9yOiBUcmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgc2hhcmVkU2VydmljZTogU2hhcmVkU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBhcnRpY2xlQ29ubmVjdG9yOiBBcnRpY2xlQ29ubmVjdG9yU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBkaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgdHJhbnNhY3Rpb25FdmVudFNlcnZpY2U6IFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIHJlbGF0aW9uU2VydmljZTogUmVsYXRpb25TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaW5pdChvcHRpb25zOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMub3B0aW9ucy5pbml0aWFsaXplKG9wdGlvbnMpO1xyXG4gICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmluaXQob3B0aW9ucyk7XHJcbiAgICB0aGlzLmNvbm5lY3Rvci5jb25uZWN0KCk7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLmNvbm5lY3Rpb25Jbml0aWFsaXplZC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlc2V0Q3VycmVudFRyYW5zYWN0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UoKTtcclxuICAgIHRoaXMuX3JlbGF0aW9uID0gbmV3IEN1c3RvbWVyRnVsbE9iamVjdCgpO1xyXG4gICAgdGhpcy5hcnRpY2xlQW1vdW50ID0gMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjYW5jZWxBZGRUcmFuc2FjdGlvbkxpbmUobGluZVV1aWQ6IHN0cmluZywgcmVtZW1iZXI6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHRoaXMuY29ubmVjdG9yLmNhbmNlbEFkZFRyYW5zYWN0aW9uTGluZShsaW5lVXVpZClcclxuICAgICAgICAudGhlbihhc3luYyAocmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVtZW1iZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UuaXNTdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlSGVhZGVyT3BlcmF0aW9uU3RhdHVzZXMocmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBpZiAoIXJlc3BvbnNlLmhlYWRlck9wZXJhdGlvblN0YXR1c2VzIHx8IHJlc3BvbnNlLmhlYWRlck9wZXJhdGlvblN0YXR1c2VzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGxldCBzdWNjZXNzOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCByZXNwb25zZS5oZWFkZXJPcGVyYXRpb25TdGF0dXNlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBzdGF0dXM6IEhlYWRlck9wZXJhdGlvblN0YXR1cyA9IHJlc3BvbnNlLmhlYWRlck9wZXJhdGlvblN0YXR1c2VzW2ldO1xyXG4gICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBhd2FpdCB0aGlzLl9oYW5kbGVIZWFkZXJPcGVyYXRpb25TdGF0dXMoc3RhdHVzLCByZXNwb25zZS50cmFuc2FjdGlvbkluZm8pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaGFzUGVuZGluZ1JlYXNvbnM6IGJvb2xlYW4gPSByZXNwb25zZS5oZWFkZXJPcGVyYXRpb25TdGF0dXNlcy5maWx0ZXIobG9zID0+IGxvcy5wZW5kaW5nUmVhc29uICE9PSBcIk5PTkVcIikubGVuZ3RoID4gMDtcclxuICAgIGlmICghaGFzUGVuZGluZ1JlYXNvbnMpIHtcclxuICAgICAgdGhpcy5yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VjY2VzcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyByZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbih2YWx1ZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uID0gdmFsdWU7XHJcbiAgICB0aGlzLl9zZXRBbW91bnQoKTtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24gJiYgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnJlbGF0aW9uLnJlbGF0aW9uSWQpIHtcclxuICAgICAgdGhpcy5fZ2V0UmVsYXRpb24odGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnJlbGF0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uVXBkYXRlZC5uZXh0KHRoaXMuY3VycmVudFRyYW5zYWN0aW9uKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBpbml0aWFsaXplVHJhbnNhY3Rpb24oKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMucmVsYXRpb24pIHtcclxuICAgICAgdGhpcy5yZWxhdGlvbiA9IG5ldyBDdXN0b21lckZ1bGxPYmplY3QoKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5yZWxhdGlvbi5yZWxhdGlvbklkKSB7XHJcbiAgICAgIGlmICh0aGlzLnJlbGF0aW9uLnJlbGF0aW9uVHlwZSA9PT0gUmVsYXRpb25LaW5kLkN1c3RvbWVyKSB7XHJcbiAgICAgICAgKHRoaXMucmVsYXRpb24gYXMgQ3VzdG9tZXJGdWxsT2JqZWN0KS5yZWxhdGlvblN0YXR1cyA9IFJlbGF0aW9uU3RhdHVzLlJlZ3VsYXJDdXN0b21lcjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbGF0aW9uLnN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnByZWZlcnJlZERlbGl2ZXJ5RGF0ZTIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucHJlZmVycmVkRGVsaXZlcnlEYXRlMiA9IFwiPVwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXNlcyhyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGlmICghcmVzcG9uc2UubGluZU9wZXJhdGlvblN0YXR1c2VzIHx8IHJlc3BvbnNlLmxpbmVPcGVyYXRpb25TdGF0dXNlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBsZXQgc3VjY2VzczogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgcmVzcG9uc2UubGluZU9wZXJhdGlvblN0YXR1c2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHN0YXR1czogTGluZU9wZXJhdGlvblN0YXR1cyA9IHJlc3BvbnNlLmxpbmVPcGVyYXRpb25TdGF0dXNlc1tpXTtcclxuICAgICAgY29uc3QgdHJhbnNMaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvID0gcmVzcG9uc2UudHJhbnNhY3Rpb25MaW5lcy5maW5kKHQgPT4gdC5saW5lTnIgPT09IHN0YXR1cy5saW5lTnIpO1xyXG4gICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBhd2FpdCB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKHN0YXR1cywgdHJhbnNMaW5lKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhc1BlbmRpbmdSZWFzb25zOiBib29sZWFuID0gcmVzcG9uc2UubGluZU9wZXJhdGlvblN0YXR1c2VzLmZpbHRlcihsb3MgPT4gbG9zLnBlbmRpbmdSZWFzb24gIT09IFwiTk9ORVwiKS5sZW5ndGggPiAwO1xyXG4gICAgaWYgKCFoYXNQZW5kaW5nUmVhc29ucykge1xyXG4gICAgICB0aGlzLnJlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdWNjZXNzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cyhvcGVyYXRpb25TdGF0dXM6IExpbmVPcGVyYXRpb25TdGF0dXMsIHRyYW5zYWN0aW9uTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgc3dpdGNoIChvcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvblR5cGUpIHtcclxuICAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5BQk9SVEVEOlxyXG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLkNBTkNFTExFRDpcclxuICAgICAgICBpZiAob3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24gIT09ICdVU0VSX0RFQ0lTSU9OJykge1xyXG4gICAgICAgIC8vICAgYXdhaXQgdGhpcy5fY2FuY2VsQXJ0aWNsZShvcGVyYXRpb25TdGF0dXMudXVpZCk7XHJcbiAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuX3Nob3dSZWFzb25EaWFsb2cob3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQ09ORklSTUFUSU9OX05FRURFRDpcclxuICAgICAgICBhd2FpdCB0aGlzLl9jb25maXJtQWN0aW9uKHRyYW5zYWN0aW9uTGluZS51dWlkLCBvcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbiwgb3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb25UeXBlKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuSU5WQUxJRF9MT0dJU1RJQ1M6XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fc2hvd1dhcmVob3VzZUNjRGlhbG9nKFxyXG4gICAgICAgICAgb3BlcmF0aW9uU3RhdHVzLnV1aWQsIHRyYW5zYWN0aW9uTGluZS5hbW91bnQsIHRyYW5zYWN0aW9uTGluZS5jb21taXNzaW9uQ29kZSwgdHJhbnNhY3Rpb25MaW5lLndhcmVob3VzZU51bWJlcixcclxuICAgICAgICAgIG9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uLCBvcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvblR5cGUpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLk5PTl9DUklUSUNBTF9ESVNDT05USU5VQVRJT046XHJcbiAgICAgICAgdGhpcy5fc2hvd1JlYXNvbkRpYWxvZyhvcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQ0hBUkFDVEVSSVNUSUNTX0FOU1dFUl9ORUVERUQ6XHJcbiAgICAgICAgdGhpcy5fc2hvd0NoYXJhY3RlcmlzdGljRGlhbG9nKG9wZXJhdGlvblN0YXR1cy51dWlkLCBvcGVyYXRpb25TdGF0dXMuY2hhcmFjdGVyaXN0aWMsIG9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uLCBvcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvblR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLk5PTkU6XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVIZWFkZXJPcGVyYXRpb25TdGF0dXMob3BlcmF0aW9uU3RhdHVzOiBIZWFkZXJPcGVyYXRpb25TdGF0dXMsIHRyYW5zYWN0aW9uSW5mbzogVHJhbnNhY3Rpb25JbmZvKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBzd2l0Y2ggKG9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uVHlwZSkge1xyXG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLkFCT1JURUQ6XHJcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQ0FOQ0VMTEVEOlxyXG4gICAgICAgIGF3YWl0IHRoaXMuX3Nob3dSZWFzb25EaWFsb2cob3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24pO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5DT05GSVJNQVRJT05fTkVFREVEOlxyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25maXJtSGVhZGVyQWN0aW9uKHRyYW5zYWN0aW9uSW5mby51dWlkLCBvcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbiwgb3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb25UeXBlKTtcclxuICAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5OT05FOlxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHJlc29sdmVQZW5kaW5nTGluZVJlYXNvbihwZW5kaW5nTGluZVZhbHVlczogUmVzb2x2ZUxpbmVQZW5kaW5nUmVhc29uUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5jb25uZWN0b3IucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHBlbmRpbmdMaW5lVmFsdWVzKTtcclxuICAgIC8vIHRoaXMucmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xyXG4gICAgdGhpcy5oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzZXMocmVzcG9uc2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHJlc29sdmVQZW5kaW5nSGVhZGVyUmVhc29uKHBlbmRpbmdIZWFkZXJWYWx1ZXM6IFJlc29sdmVIZWFkZXJQZW5kaW5nUmVhc29uUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5jb25uZWN0b3IucmVzb2x2ZVBlbmRpbmdIZWFkZXJSZWFzb24ocGVuZGluZ0hlYWRlclZhbHVlcyk7XHJcbiAgICAvLyB0aGlzLnJlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcclxuICAgIHJldHVybiB0aGlzLmhhbmRsZUhlYWRlck9wZXJhdGlvblN0YXR1c2VzKHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2NvbmZpcm1BY3Rpb24odXVpZDogc3RyaW5nLCByZWFzb246IHN0cmluZywgdHlwZTogUGVuZGluZ1JlYXNvblR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHJlYXNvblJlcXVlc3QgPSBuZXcgUmVzb2x2ZUxpbmVQZW5kaW5nUmVhc29uUmVxdWVzdCh1dWlkLCByZWFzb24sIHR5cGUpO1xyXG4gICAgLy8gY29uc3QgcGVuZGluZ1JlYXNvblRleHQ6IHN0cmluZyA9IGF3YWl0IHRoaXMuX2dldFBlbmRpbmdSZWFzb25UZXh0KHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uKTtcclxuICAgIHJlYXNvblJlcXVlc3QuY29uZmlybWF0aW9uID0gYXdhaXQgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dZZXNObygnQWN0aW9uJywgcmVhc29uKTtcclxuICAgIGF3YWl0IHRoaXMucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHJlYXNvblJlcXVlc3QpO1xyXG4gICAgLy8gdGhpcy5faGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cygpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9zaG93Q2hhcmFjdGVyaXN0aWNEaWFsb2codXVpZDogc3RyaW5nLCBjaGFyYWN0ZXJpc3RpY3M6IFRyYW5zYWN0aW9uTGluZUNoYXJhY3RlcmlzdGljLCByZWFzb246IHN0cmluZywgdHlwZTogUGVuZGluZ1JlYXNvblR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHJlYXNvblJlcXVlc3QgPSBuZXcgUmVzb2x2ZUxpbmVQZW5kaW5nUmVhc29uUmVxdWVzdCh1dWlkLCByZWFzb24sIHR5cGUpO1xyXG4gICAgbGV0IGNoYXI6IHN0cmluZztcclxuICAgIGNvbnN0IHJlc3BvbnNlOiBEaWFsb2dSZXNwb25zZUludGVyZmFjZSA9IGF3YWl0IHRoaXMuZGlhbG9nU2VydmljZS5zaG93Q2hhcmFjdGVyaXN0aWNzKFxyXG4gICAgICBjaGFyYWN0ZXJpc3RpY3MucXVlc3Rpb24sIGNoYXJhY3RlcmlzdGljcy50cmFuc2FjdGlvbkxpbmVDaGFyYWN0ZXJpc3RpY0Nob2ljZXMsIGNoYXJhY3RlcmlzdGljcy52YWx1ZSk7XHJcbiAgICBpZiAocmVzcG9uc2UuYnV0dG9uID09PSBBcHBQb3B1cEJ1dHRvblR5cGUuT2spIHtcclxuICAgICAgY2hhciA9IHJlc3BvbnNlLm91dHB1dDtcclxuICAgIH1cclxuICAgIHJlYXNvblJlcXVlc3QudGV4dHVhbFVzZXJJbnB1dCA9IGNoYXI7XHJcbiAgICBhd2FpdCB0aGlzLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbihyZWFzb25SZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3Nob3dXYXJlaG91c2VDY0RpYWxvZyh1dWlkOiBzdHJpbmcsIHF1YW50aXR5OiBudW1iZXIsIGNvbW1pc3Npb25Db2RlOiBzdHJpbmcsIHdhcmVob3VzZU5yOiBudW1iZXIsIHJlYXNvbjogc3RyaW5nLCB0eXBlOiBQZW5kaW5nUmVhc29uVHlwZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgcmVhc29uUmVxdWVzdCA9IG5ldyBSZXNvbHZlTGluZVBlbmRpbmdSZWFzb25SZXF1ZXN0KHV1aWQsIHJlYXNvbiwgdHlwZSk7XHJcbiAgICBjb25zdCByZXNwb25zZTogRGlhbG9nUmVzcG9uc2VJbnRlcmZhY2UgPSBhd2FpdCB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd1dhcmVob3VzZUNDKHF1YW50aXR5LCBjb21taXNzaW9uQ29kZSwgd2FyZWhvdXNlTnIpO1xyXG4gICAgaWYgKHJlc3BvbnNlLmJ1dHRvbiA9PT0gQXBwUG9wdXBCdXR0b25UeXBlLk9rKSB7XHJcbiAgICAgIHJlYXNvblJlcXVlc3QucXVhbnRpdHkgPSByZXNwb25zZS5vdXRwdXQucXVhbnRpdHk7XHJcbiAgICAgIHJlYXNvblJlcXVlc3QuY29tbWlzc2lvbkNvZGUgPSByZXNwb25zZS5vdXRwdXQuY29tbWlzc2lvbkNvZGU7XHJcbiAgICAgIHJlYXNvblJlcXVlc3Qud2FyZWhvdXNlTnIgPSByZXNwb25zZS5vdXRwdXQud2FyZWhvdXNlTnI7XHJcbiAgICAgIGF3YWl0IHRoaXMucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHJlYXNvblJlcXVlc3QpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fY2FuY2VsQXJ0aWNsZSh1dWlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2NvbmZpcm1IZWFkZXJBY3Rpb24odXVpZDogc3RyaW5nLCByZWFzb246IHN0cmluZywgdHlwZTogUGVuZGluZ1JlYXNvblR5cGUpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IHJlYXNvblJlcXVlc3QgPSBuZXcgUmVzb2x2ZUhlYWRlclBlbmRpbmdSZWFzb25SZXF1ZXN0KHV1aWQsIHJlYXNvbiwgdHlwZSk7XHJcbiAgICAvLyBjb25zdCBwZW5kaW5nUmVhc29uVGV4dDogc3RyaW5nID0gYXdhaXQgdGhpcy5fZ2V0UGVuZGluZ1JlYXNvblRleHQodGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24pO1xyXG4gICAgcmVhc29uUmVxdWVzdC5jb25maXJtYXRpb24gPSBhd2FpdCB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd1llc05vKCdBY3Rpb24nLCByZWFzb24pO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucmVzb2x2ZVBlbmRpbmdIZWFkZXJSZWFzb24ocmVhc29uUmVxdWVzdCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9zaG93UmVhc29uRGlhbG9nKHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dJbmZvcm1hdGlvbihyZWFzb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0QW1vdW50KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFRyYW5zYWN0aW9uICYmIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTGluZXMpIHtcclxuICAgICAgdGhpcy5hcnRpY2xlQW1vdW50ID0gdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lcy5maWx0ZXIodCA9PiB0LmxpbmVUeXBlID09PSBUcmFuc2FjdGlvbkxpbmVUeXBlLkFydGljbGVMaW5lKS5sZW5ndGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9jYW5jZWxBcnRpY2xlKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5jYW5jZWxBZGRUcmFuc2FjdGlvbkxpbmUodXVpZCwgZmFsc2UpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldFJlbGF0aW9uKHJlbGF0aW9uOiBSZWxhdGlvblNtYWxsT2JqZWN0KTogdm9pZCB7XHJcbiAgICBpZiAocmVsYXRpb24pIHtcclxuICAgICAgdGhpcy5yZWxhdGlvblNlcnZpY2UuZ2V0UmVsYXRpb25OdW1iZXIocmVsYXRpb24ucmVsYXRpb25JZCkudGhlbigocmVsYXRpb25Ocjogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlbGF0aW9uLnJlbGF0aW9uVHlwZSA9PT0gUmVsYXRpb25LaW5kLkN1c3RvbWVyKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbGF0aW9uU2VydmljZS5nZXRDdXN0b21lckZ1bGxPYmplY3QocGFyc2VJbnQocmVsYXRpb25OciwgMCkpLnRoZW4oKGN1c3RvbWVyOiBDdXN0b21lckZ1bGxPYmplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZWxhdGlvbiA9IGN1c3RvbWVyO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChyZWxhdGlvbi5yZWxhdGlvblR5cGUgPT09IFJlbGF0aW9uS2luZC5TdXBwbGllcikge1xyXG4gICAgICAgICAgdGhpcy5yZWxhdGlvblNlcnZpY2UuZ2V0U3VwcGxpZXJGdWxsT2JqZWN0KHBhcnNlSW50KHJlbGF0aW9uTnIsIDApKS50aGVuKChzdXBwbGllcjogU3VwcGxpZXJGdWxsT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVsYXRpb24gPSBzdXBwbGllcjtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -174,6 +174,36 @@ export class RelationConnectorService {
|
|
|
174
174
|
});
|
|
175
175
|
});
|
|
176
176
|
}
|
|
177
|
+
insertSupplier(relation) {
|
|
178
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
179
|
+
return new Promise((resolve, reject) => {
|
|
180
|
+
return this.connector.insertSupplier(relation).then((result) => {
|
|
181
|
+
if (result.validationResult && result.validationResult.success) {
|
|
182
|
+
resolve(this._boFactory.makeWithRawBackendData(SupplierFullObject, result.resultObject));
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
this._handleExceptionFromResponse(result);
|
|
186
|
+
reject(null);
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
updateSupplier(relation) {
|
|
193
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
194
|
+
return new Promise((resolve, reject) => {
|
|
195
|
+
return this.connector.updateSupplier(relation).then((result) => {
|
|
196
|
+
if (result.validationResult && result.validationResult.success) {
|
|
197
|
+
resolve(this._boFactory.makeWithRawBackendData(SupplierFullObject, result.resultObject));
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
this._handleExceptionFromResponse(result);
|
|
201
|
+
reject(null);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
}
|
|
177
207
|
_handleExceptionFromResponse(result) {
|
|
178
208
|
this._errorService.showValidationError(result);
|
|
179
209
|
}
|
|
@@ -189,4 +219,4 @@ RelationConnectorService.ctorParameters = () => [
|
|
|
189
219
|
{ type: ErrorService },
|
|
190
220
|
{ type: TransactionEventService }
|
|
191
221
|
];
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24tY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL3NlcnZpY2UvcmVsYXRpb24tY29ubmVjdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLCtEQUErRCxDQUFDO0FBQ3BHLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUM3RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUM3RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFHN0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDN0YsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBRTFFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7OztBQUtwRSxNQUFNLE9BQU8sd0JBQXdCO0lBS25DLFlBQ1UsZUFBK0IsRUFDL0IsYUFBMkIsRUFDM0Isd0JBQWlEO1FBRmpELG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXlCO1FBTG5ELGVBQVUsR0FBMEIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBT3RFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFvQixFQUFFLEVBQUU7WUFDckYsSUFB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QUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ2Q7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7S0FBQTtJQUVPLDRCQUE0QixDQUFDLE1BQStCO1FBQ2xFLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQzs7OztZQWhLRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQWZPLGNBQWM7WUFLZCxZQUFZO1lBTVosdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge09wdGlvbnNTZXJ2aWNlfSBmcm9tIFwiLi9vcHRpb25zLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtCdXNpbmVzc09iamVjdEZhY3Rvcnl9IGZyb20gXCJAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9mYWN0b3J5L2J1c2luZXNzLW9iamVjdC1mYWN0b3J5XCI7XHJcbmltcG9ydCB7UmVsYXRpb25BcGl9IGZyb20gXCJAY29saWpuaXQvcmVsYXRpb25hcGlcIjtcclxuaW1wb3J0IHtDdXN0b21lckZ1bGxPYmplY3R9IGZyb20gXCJAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvY3VzdG9tZXItZnVsbC1vYmplY3QuYm9cIjtcclxuaW1wb3J0IHtTdXBwbGllckZ1bGxPYmplY3R9IGZyb20gXCJAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvc3VwcGxpZXItZnVsbC1vYmplY3QuYm9cIjtcclxuaW1wb3J0IHtFcnJvclNlcnZpY2V9IGZyb20gXCIuL2Vycm9yLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtEYXRhU2VydmljZVJlc3BvbnNlRGF0YX0gZnJvbSBcIkBjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL2RhdGEtc2VydmljZS1yZXNwb25zZS1kYXRhXCI7XHJcbmltcG9ydCB7UmVsYXRpb25SZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLXJlcXVlc3RcIjtcclxuaW1wb3J0IHtSZWxhdGlvbkxpc3RPYmplY3R9IGZyb20gXCJAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tbGlzdC1vYmplY3QuYm9cIjtcclxuaW1wb3J0IHtCcmFuY2hMb3Z9IGZyb20gXCJAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvYnJhbmNoLWxvdi5ib1wiO1xyXG5pbXBvcnQge1ZhbGlkYXRpb25SZXN1bHR9IGZyb20gXCJAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC92YWxpZGF0aW9uLXJlc3VsdFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlfSBmcm9tIFwiLi90cmFuc2FjdGlvbi1ldmVudC5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlbGF0aW9uQ29ubmVjdG9yU2VydmljZSB7XHJcbiAgcHVibGljIGNvbm5lY3RvcjogUmVsYXRpb25BcGk7XHJcblxyXG4gIHByaXZhdGUgX2JvRmFjdG9yeTogQnVzaW5lc3NPYmplY3RGYWN0b3J5ID0gbmV3IEJ1c2luZXNzT2JqZWN0RmFjdG9yeSgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX29wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Vycm9yU2VydmljZTogRXJyb3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb25FdmVudFNlcnZpY2U6IFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLl90cmFuc2FjdGlvbkV2ZW50U2VydmljZS5jb25uZWN0aW9uSW5pdGlhbGl6ZWQuc3Vic2NyaWJlKChpbml0aWFsaXplZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICBpZiAoaW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICB0aGlzLmNvbm5lY3QoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjb25uZWN0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5jb25uZWN0b3IgPSBuZXcgUmVsYXRpb25BcGkodGhpcy5fb3B0aW9uc1NlcnZpY2Uub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0Q3VzdG9tZXJGdWxsT2JqZWN0KHJlbGF0aW9uTm86IG51bWJlcik6IFByb21pc2U8Q3VzdG9tZXJGdWxsT2JqZWN0PiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0Q3VzdG9tZXJGdWxsT2JqZWN0KHJlbGF0aW9uTm8pO1xyXG4gICAgaWYgKHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0ICYmIHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2JvRmFjdG9yeS5tYWtlV2l0aFJhd0JhY2tlbmREYXRhKEN1c3RvbWVyRnVsbE9iamVjdCwgcmVzdWx0LnJlc3VsdE9iamVjdCkgYXMgdW5rbm93biBhcyBDdXN0b21lckZ1bGxPYmplY3Q7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9oYW5kbGVFeGNlcHRpb25Gcm9tUmVzcG9uc2UocmVzdWx0KTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U3VwcGxpZXJGdWxsT2JqZWN0KHJlbGF0aW9uTm86IG51bWJlcik6IFByb21pc2U8U3VwcGxpZXJGdWxsT2JqZWN0PiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0U3VwcGxpZXJGdWxsT2JqZWN0KHJlbGF0aW9uTm8pO1xyXG4gICAgaWYgKHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0ICYmIHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2JvRmFjdG9yeS5tYWtlV2l0aFJhd0JhY2tlbmREYXRhKFN1cHBsaWVyRnVsbE9iamVjdCwgcmVzdWx0LnJlc3VsdE9iamVjdCkgYXMgdW5rbm93biBhcyBTdXBwbGllckZ1bGxPYmplY3Q7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9oYW5kbGVFeGNlcHRpb25Gcm9tUmVzcG9uc2UocmVzdWx0KTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0UmVsYXRpb25MaXN0T2JqZWN0cyhyZWxhdGlvblJlcXVlc3Q6IFJlbGF0aW9uUmVxdWVzdCk6IFByb21pc2U8UmVsYXRpb25MaXN0T2JqZWN0W10+IHtcclxuICAgIGNvbnN0IHJlc3VsdDogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRSZWxhdGlvbkxpc3RPYmplY3RzKHJlbGF0aW9uUmVxdWVzdCk7XHJcbiAgICBpZiAocmVzdWx0LnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzdWx0LnZhbGlkYXRpb25SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYm9GYWN0b3J5Lm1ha2VCT0FycmF5RnJvbVJhd0JhY2tlbmREYXRhQXJyYXkoUmVsYXRpb25MaXN0T2JqZWN0LCByZXN1bHQucmVzdWx0T2JqZWN0cykgYXMgdW5rbm93biBhcyBSZWxhdGlvbkxpc3RPYmplY3RbXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2hhbmRsZUV4Y2VwdGlvbkZyb21SZXNwb25zZShyZXN1bHQpO1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0UmVsYXRpb25OdW1iZXIocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHJlc3VsdDogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRSZWxhdGlvbk51bWJlcihyZWxhdGlvbklkKTtcclxuICAgIGlmIChyZXN1bHQudmFsaWRhdGlvblJlc3VsdCAmJiByZXN1bHQudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiByZXN1bHQucmVzdWx0T2JqZWN0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5faGFuZGxlRXhjZXB0aW9uRnJvbVJlc3BvbnNlKHJlc3VsdCk7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEJyYW5jaGVzKGJyYW5jaE5yPzogc3RyaW5nKTogUHJvbWlzZTxCcmFuY2hMb3ZbXT4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldEJyYW5jaGVzKGJyYW5jaE5yKTtcclxuICAgIGlmIChyZXN1bHQudmFsaWRhdGlvblJlc3VsdCAmJiByZXN1bHQudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9ib0ZhY3RvcnkubWFrZUJPQXJyYXlGcm9tUmF3QmFja2VuZERhdGFBcnJheShCcmFuY2hMb3YsIHJlc3VsdC5yZXN1bHRPYmplY3RzKSBhcyB1bmtub3duIGFzIEJyYW5jaExvdltdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5faGFuZGxlRXhjZXB0aW9uRnJvbVJlc3BvbnNlKHJlc3VsdCk7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjb21taXQoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuY29tbWl0KCk7XHJcbiAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5faGFuZGxlRXhjZXB0aW9uRnJvbVJlc3BvbnNlKHJlc3VsdCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2NrQ3VzdG9tZXJGdWxsT2JqZWN0KHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IubG9ja0N1c3RvbWVyQnlJZChyZWxhdGlvbk5yKS50aGVuKGFzeW5jIChyZXN1bHQ6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhKSA9PiB7XHJcbiAgICAgICAgcmVzb2x2ZShyZXN1bHQudmFsaWRhdGlvblJlc3VsdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9ja1N1cHBsaWVyRnVsbE9iamVjdChyZWxhdGlvbk5yOiBudW1iZXIpOiBQcm9taXNlPFZhbGlkYXRpb25SZXN1bHQ+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmxvY2tTdXBwbGllckJ5SWQocmVsYXRpb25OcikudGhlbihhc3luYyAocmVzdWx0OiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSkgPT4ge1xyXG4gICAgICAgIHJlc29sdmUocmVzdWx0LnZhbGlkYXRpb25SZXN1bHQpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvY2tFbXBsb3llZUZ1bGxPYmplY3QocmVsYXRpb25OcjogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5sb2NrRW1wbG95ZWVCeUlkKHJlbGF0aW9uTnIpLnRoZW4oYXN5bmMgKHJlc3VsdDogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEpID0+IHtcclxuICAgICAgICByZXNvbHZlKHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2NrQnJhbmNoRnVsbE9iamVjdChyZWxhdGlvbk5yOiBudW1iZXIpOiBQcm9taXNlPFZhbGlkYXRpb25SZXN1bHQ+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmxvY2tCcmFuY2hCeUlkKHJlbGF0aW9uTnIpLnRoZW4oYXN5bmMgKHJlc3VsdDogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEpID0+IHtcclxuICAgICAgICByZXNvbHZlKHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2NrQ29tcGFueUZ1bGxPYmplY3QocmVsYXRpb25OcjogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5sb2NrQ29tcGFueUJ5SWQocmVsYXRpb25OcikudGhlbihhc3luYyAocmVzdWx0OiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSkgPT4ge1xyXG4gICAgICAgIHJlc29sdmUocmVzdWx0LnZhbGlkYXRpb25SZXN1bHQpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvY2tDb250YWN0UGVyc29uKHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IubG9ja0NvbnRhY3RQZXJzb25CeUlkKHJlbGF0aW9uTnIpLnRoZW4oYXN5bmMgKHJlc3VsdDogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEpID0+IHtcclxuICAgICAgICByZXNvbHZlKHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBpbnNlcnRDdXN0b21lcihyZWxhdGlvbjogQ3VzdG9tZXJGdWxsT2JqZWN0KTogUHJvbWlzZTxDdXN0b21lckZ1bGxPYmplY3Q+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmluc2VydEN1c3RvbWVyKHJlbGF0aW9uKS50aGVuKChyZXN1bHQ6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0ICYmIHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIHJlc29sdmUodGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoQ3VzdG9tZXJGdWxsT2JqZWN0LCByZXN1bHQucmVzdWx0T2JqZWN0KSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuX2hhbmRsZUV4Y2VwdGlvbkZyb21SZXNwb25zZShyZXN1bHQpO1xyXG4gICAgICAgICAgcmVqZWN0KG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVDdXN0b21lcihyZWxhdGlvbjogQ3VzdG9tZXJGdWxsT2JqZWN0KTogUHJvbWlzZTxDdXN0b21lckZ1bGxPYmplY3Q+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLnVwZGF0ZUN1c3RvbWVyKHJlbGF0aW9uKS50aGVuKChyZXN1bHQ6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0ICYmIHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIHJlc29sdmUodGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoQ3VzdG9tZXJGdWxsT2JqZWN0LCByZXN1bHQucmVzdWx0T2JqZWN0KSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuX2hhbmRsZUV4Y2VwdGlvbkZyb21SZXNwb25zZShyZXN1bHQpO1xyXG4gICAgICAgICAgcmVqZWN0KG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hhbmRsZUV4Y2VwdGlvbkZyb21SZXNwb25zZShyZXN1bHQ6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhKTogdm9pZCB7XHJcbiAgICB0aGlzLl9lcnJvclNlcnZpY2Uuc2hvd1ZhbGlkYXRpb25FcnJvcihyZXN1bHQpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24tY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL3NlcnZpY2UvcmVsYXRpb24tY29ubmVjdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLCtEQUErRCxDQUFDO0FBQ3BHLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUM3RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUM3RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFHN0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDN0YsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBRTFFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7OztBQUtwRSxNQUFNLE9BQU8sd0JBQXdCO0lBS25DLFlBQ1UsZUFBK0IsRUFDL0IsYUFBMkIsRUFDM0Isd0JBQWlEO1FBRmpELG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXlCO1FBTG5ELGVBQVUsR0FBMEIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBT3RFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFvQixFQUFFLEVBQUU7WUFDckYsSUFB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QUMsQ0FBQyxDQUFDO3FCQUMxRjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsNEJBQTRCLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDZDtnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBO0lBRU8sNEJBQTRCLENBQUMsTUFBK0I7UUFDbEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDOzs7O1lBMUxGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBZk8sY0FBYztZQUtkLFlBQVk7WUFNWix1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7T3B0aW9uc1NlcnZpY2V9IGZyb20gXCIuL29wdGlvbnMuc2VydmljZVwiO1xyXG5pbXBvcnQge0J1c2luZXNzT2JqZWN0RmFjdG9yeX0gZnJvbSBcIkBjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL2ZhY3RvcnkvYnVzaW5lc3Mtb2JqZWN0LWZhY3RvcnlcIjtcclxuaW1wb3J0IHtSZWxhdGlvbkFwaX0gZnJvbSBcIkBjb2xpam5pdC9yZWxhdGlvbmFwaVwiO1xyXG5pbXBvcnQge0N1c3RvbWVyRnVsbE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9jdXN0b21lci1mdWxsLW9iamVjdC5ib1wiO1xyXG5pbXBvcnQge1N1cHBsaWVyRnVsbE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9zdXBwbGllci1mdWxsLW9iamVjdC5ib1wiO1xyXG5pbXBvcnQge0Vycm9yU2VydmljZX0gZnJvbSBcIi4vZXJyb3Iuc2VydmljZVwiO1xyXG5pbXBvcnQge0RhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhfSBmcm9tIFwiQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvZGF0YS1zZXJ2aWNlLXJlc3BvbnNlLWRhdGFcIjtcclxuaW1wb3J0IHtSZWxhdGlvblJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tcmVxdWVzdFwiO1xyXG5pbXBvcnQge1JlbGF0aW9uTGlzdE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1saXN0LW9iamVjdC5ib1wiO1xyXG5pbXBvcnQge0JyYW5jaExvdn0gZnJvbSBcIkBjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9icmFuY2gtbG92LmJvXCI7XHJcbmltcG9ydCB7VmFsaWRhdGlvblJlc3VsdH0gZnJvbSBcIkBjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL3ZhbGlkYXRpb24tcmVzdWx0XCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25FdmVudFNlcnZpY2V9IGZyb20gXCIuL3RyYW5zYWN0aW9uLWV2ZW50LnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVsYXRpb25Db25uZWN0b3JTZXJ2aWNlIHtcclxuICBwdWJsaWMgY29ubmVjdG9yOiBSZWxhdGlvbkFwaTtcclxuXHJcbiAgcHJpdmF0ZSBfYm9GYWN0b3J5OiBCdXNpbmVzc09iamVjdEZhY3RvcnkgPSBuZXcgQnVzaW5lc3NPYmplY3RGYWN0b3J5KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZXJyb3JTZXJ2aWNlOiBFcnJvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvbkV2ZW50U2VydmljZTogVHJhbnNhY3Rpb25FdmVudFNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLmNvbm5lY3Rpb25Jbml0aWFsaXplZC5zdWJzY3JpYmUoKGluaXRpYWxpemVkOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmIChpbml0aWFsaXplZCkge1xyXG4gICAgICAgIHRoaXMuY29ubmVjdCgpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGNvbm5lY3QoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmNvbm5lY3RvciA9IG5ldyBSZWxhdGlvbkFwaSh0aGlzLl9vcHRpb25zU2VydmljZS5vcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRDdXN0b21lckZ1bGxPYmplY3QocmVsYXRpb25ObzogbnVtYmVyKTogUHJvbWlzZTxDdXN0b21lckZ1bGxPYmplY3Q+IHtcclxuICAgIGNvbnN0IHJlc3VsdDogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRDdXN0b21lckZ1bGxPYmplY3QocmVsYXRpb25Obyk7XHJcbiAgICBpZiAocmVzdWx0LnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzdWx0LnZhbGlkYXRpb25SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoQ3VzdG9tZXJGdWxsT2JqZWN0LCByZXN1bHQucmVzdWx0T2JqZWN0KSBhcyB1bmtub3duIGFzIEN1c3RvbWVyRnVsbE9iamVjdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2hhbmRsZUV4Y2VwdGlvbkZyb21SZXNwb25zZShyZXN1bHQpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRTdXBwbGllckZ1bGxPYmplY3QocmVsYXRpb25ObzogbnVtYmVyKTogUHJvbWlzZTxTdXBwbGllckZ1bGxPYmplY3Q+IHtcclxuICAgIGNvbnN0IHJlc3VsdDogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRTdXBwbGllckZ1bGxPYmplY3QocmVsYXRpb25Obyk7XHJcbiAgICBpZiAocmVzdWx0LnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzdWx0LnZhbGlkYXRpb25SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoU3VwcGxpZXJGdWxsT2JqZWN0LCByZXN1bHQucmVzdWx0T2JqZWN0KSBhcyB1bmtub3duIGFzIFN1cHBsaWVyRnVsbE9iamVjdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2hhbmRsZUV4Y2VwdGlvbkZyb21SZXNwb25zZShyZXN1bHQpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRSZWxhdGlvbkxpc3RPYmplY3RzKHJlbGF0aW9uUmVxdWVzdDogUmVsYXRpb25SZXF1ZXN0KTogUHJvbWlzZTxSZWxhdGlvbkxpc3RPYmplY3RbXT4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldFJlbGF0aW9uTGlzdE9iamVjdHMocmVsYXRpb25SZXF1ZXN0KTtcclxuICAgIGlmIChyZXN1bHQudmFsaWRhdGlvblJlc3VsdCAmJiByZXN1bHQudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9ib0ZhY3RvcnkubWFrZUJPQXJyYXlGcm9tUmF3QmFja2VuZERhdGFBcnJheShSZWxhdGlvbkxpc3RPYmplY3QsIHJlc3VsdC5yZXN1bHRPYmplY3RzKSBhcyB1bmtub3duIGFzIFJlbGF0aW9uTGlzdE9iamVjdFtdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5faGFuZGxlRXhjZXB0aW9uRnJvbVJlc3BvbnNlKHJlc3VsdCk7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRSZWxhdGlvbk51bWJlcihyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldFJlbGF0aW9uTnVtYmVyKHJlbGF0aW9uSWQpO1xyXG4gICAgaWYgKHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0ICYmIHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIHJlc3VsdC5yZXN1bHRPYmplY3Q7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9oYW5kbGVFeGNlcHRpb25Gcm9tUmVzcG9uc2UocmVzdWx0KTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0QnJhbmNoZXMoYnJhbmNoTnI/OiBzdHJpbmcpOiBQcm9taXNlPEJyYW5jaExvdltdPiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0QnJhbmNoZXMoYnJhbmNoTnIpO1xyXG4gICAgaWYgKHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0ICYmIHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2JvRmFjdG9yeS5tYWtlQk9BcnJheUZyb21SYXdCYWNrZW5kRGF0YUFycmF5KEJyYW5jaExvdiwgcmVzdWx0LnJlc3VsdE9iamVjdHMpIGFzIHVua25vd24gYXMgQnJhbmNoTG92W107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9oYW5kbGVFeGNlcHRpb25Gcm9tUmVzcG9uc2UocmVzdWx0KTtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGNvbW1pdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IHJlc3VsdDogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5jb21taXQoKTtcclxuICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9oYW5kbGVFeGNlcHRpb25Gcm9tUmVzcG9uc2UocmVzdWx0KTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvY2tDdXN0b21lckZ1bGxPYmplY3QocmVsYXRpb25OcjogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5sb2NrQ3VzdG9tZXJCeUlkKHJlbGF0aW9uTnIpLnRoZW4oYXN5bmMgKHJlc3VsdDogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEpID0+IHtcclxuICAgICAgICByZXNvbHZlKHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2NrU3VwcGxpZXJGdWxsT2JqZWN0KHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IubG9ja1N1cHBsaWVyQnlJZChyZWxhdGlvbk5yKS50aGVuKGFzeW5jIChyZXN1bHQ6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhKSA9PiB7XHJcbiAgICAgICAgcmVzb2x2ZShyZXN1bHQudmFsaWRhdGlvblJlc3VsdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9ja0VtcGxveWVlRnVsbE9iamVjdChyZWxhdGlvbk5yOiBudW1iZXIpOiBQcm9taXNlPFZhbGlkYXRpb25SZXN1bHQ+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmxvY2tFbXBsb3llZUJ5SWQocmVsYXRpb25OcikudGhlbihhc3luYyAocmVzdWx0OiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSkgPT4ge1xyXG4gICAgICAgIHJlc29sdmUocmVzdWx0LnZhbGlkYXRpb25SZXN1bHQpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvY2tCcmFuY2hGdWxsT2JqZWN0KHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IubG9ja0JyYW5jaEJ5SWQocmVsYXRpb25OcikudGhlbihhc3luYyAocmVzdWx0OiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSkgPT4ge1xyXG4gICAgICAgIHJlc29sdmUocmVzdWx0LnZhbGlkYXRpb25SZXN1bHQpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvY2tDb21wYW55RnVsbE9iamVjdChyZWxhdGlvbk5yOiBudW1iZXIpOiBQcm9taXNlPFZhbGlkYXRpb25SZXN1bHQ+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmxvY2tDb21wYW55QnlJZChyZWxhdGlvbk5yKS50aGVuKGFzeW5jIChyZXN1bHQ6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhKSA9PiB7XHJcbiAgICAgICAgcmVzb2x2ZShyZXN1bHQudmFsaWRhdGlvblJlc3VsdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9ja0NvbnRhY3RQZXJzb24ocmVsYXRpb25OcjogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5sb2NrQ29udGFjdFBlcnNvbkJ5SWQocmVsYXRpb25OcikudGhlbihhc3luYyAocmVzdWx0OiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSkgPT4ge1xyXG4gICAgICAgIHJlc29sdmUocmVzdWx0LnZhbGlkYXRpb25SZXN1bHQpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGluc2VydEN1c3RvbWVyKHJlbGF0aW9uOiBDdXN0b21lckZ1bGxPYmplY3QpOiBQcm9taXNlPEN1c3RvbWVyRnVsbE9iamVjdD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuaW5zZXJ0Q3VzdG9tZXIocmVsYXRpb24pLnRoZW4oKHJlc3VsdDogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0LnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzdWx0LnZhbGlkYXRpb25SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICAgICAgcmVzb2x2ZSh0aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShDdXN0b21lckZ1bGxPYmplY3QsIHJlc3VsdC5yZXN1bHRPYmplY3QpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5faGFuZGxlRXhjZXB0aW9uRnJvbVJlc3BvbnNlKHJlc3VsdCk7XHJcbiAgICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHVwZGF0ZUN1c3RvbWVyKHJlbGF0aW9uOiBDdXN0b21lckZ1bGxPYmplY3QpOiBQcm9taXNlPEN1c3RvbWVyRnVsbE9iamVjdD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IudXBkYXRlQ3VzdG9tZXIocmVsYXRpb24pLnRoZW4oKHJlc3VsdDogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0LnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzdWx0LnZhbGlkYXRpb25SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICAgICAgcmVzb2x2ZSh0aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShDdXN0b21lckZ1bGxPYmplY3QsIHJlc3VsdC5yZXN1bHRPYmplY3QpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5faGFuZGxlRXhjZXB0aW9uRnJvbVJlc3BvbnNlKHJlc3VsdCk7XHJcbiAgICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGluc2VydFN1cHBsaWVyKHJlbGF0aW9uOiBTdXBwbGllckZ1bGxPYmplY3QpOiBQcm9taXNlPFN1cHBsaWVyRnVsbE9iamVjdD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuaW5zZXJ0U3VwcGxpZXIocmVsYXRpb24pLnRoZW4oKHJlc3VsdDogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0LnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzdWx0LnZhbGlkYXRpb25SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICAgICAgcmVzb2x2ZSh0aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShTdXBwbGllckZ1bGxPYmplY3QsIHJlc3VsdC5yZXN1bHRPYmplY3QpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5faGFuZGxlRXhjZXB0aW9uRnJvbVJlc3BvbnNlKHJlc3VsdCk7XHJcbiAgICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHVwZGF0ZVN1cHBsaWVyKHJlbGF0aW9uOiBTdXBwbGllckZ1bGxPYmplY3QpOiBQcm9taXNlPFN1cHBsaWVyRnVsbE9iamVjdD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IudXBkYXRlU3VwcGxpZXIocmVsYXRpb24pLnRoZW4oKHJlc3VsdDogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0LnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzdWx0LnZhbGlkYXRpb25SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICAgICAgcmVzb2x2ZSh0aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShTdXBwbGllckZ1bGxPYmplY3QsIHJlc3VsdC5yZXN1bHRPYmplY3QpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5faGFuZGxlRXhjZXB0aW9uRnJvbVJlc3BvbnNlKHJlc3VsdCk7XHJcbiAgICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGFuZGxlRXhjZXB0aW9uRnJvbVJlc3BvbnNlKHJlc3VsdDogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Vycm9yU2VydmljZS5zaG93VmFsaWRhdGlvbkVycm9yKHJlc3VsdCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -29,8 +29,17 @@ export class RelationService {
|
|
|
29
29
|
[RelationKind.Company, (relationNr) => this._lockCompanyFullObject(relationNr)],
|
|
30
30
|
[RelationKind.ContactPerson, (relationNr) => this._lockContactPerson(relationNr)],
|
|
31
31
|
]);
|
|
32
|
+
this._getMethods = new Map([
|
|
33
|
+
[RelationKind.Customer, (relationNr) => this.getCustomerFullObject(relationNr)],
|
|
34
|
+
[RelationKind.Supplier, (relationNr) => this.getSupplierFullObject(relationNr)]
|
|
35
|
+
]);
|
|
32
36
|
this._updateMethods = new Map([
|
|
33
|
-
[RelationKind.Customer, (relation) => this.updateCustomer(relation)]
|
|
37
|
+
[RelationKind.Customer, (relation) => this.updateCustomer(relation)],
|
|
38
|
+
[RelationKind.Supplier, (relation) => this.updateSupplier(relation)]
|
|
39
|
+
]);
|
|
40
|
+
this._insertMethods = new Map([
|
|
41
|
+
[RelationKind.Customer, (relation) => this.insertCustomer(relation)],
|
|
42
|
+
[RelationKind.Supplier, (relation) => this.insertSupplier(relation)]
|
|
34
43
|
]);
|
|
35
44
|
}
|
|
36
45
|
getCustomerFullObject(relationNo) {
|
|
@@ -51,6 +60,14 @@ export class RelationService {
|
|
|
51
60
|
return this._adapterService.updateCustomer(relation);
|
|
52
61
|
});
|
|
53
62
|
}
|
|
63
|
+
insertSupplier(relation) {
|
|
64
|
+
return this._adapterService.insertSupplier(relation);
|
|
65
|
+
}
|
|
66
|
+
updateSupplier(relation) {
|
|
67
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
return this._adapterService.updateSupplier(relation);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
54
71
|
getRelationListObjects(relationRequest) {
|
|
55
72
|
return this._adapterService.getRelationListObjects(relationRequest);
|
|
56
73
|
}
|
|
@@ -62,6 +79,16 @@ export class RelationService {
|
|
|
62
79
|
return this._adapterService.getBranches(branchNr);
|
|
63
80
|
}).getValue(branchNr);
|
|
64
81
|
}
|
|
82
|
+
insertRelation(relationKind, relation) {
|
|
83
|
+
const insertMethod = this._insertMethods.get(relationKind);
|
|
84
|
+
if (insertMethod) {
|
|
85
|
+
return insertMethod.call(this, relation);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
const result = new Relation();
|
|
89
|
+
return Promise.resolve(result);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
65
92
|
updateRelation(relationKind, relation) {
|
|
66
93
|
const updateMethod = this._updateMethods.get(relationKind);
|
|
67
94
|
if (updateMethod) {
|
|
@@ -83,6 +110,17 @@ export class RelationService {
|
|
|
83
110
|
return Promise.resolve(result);
|
|
84
111
|
}
|
|
85
112
|
}
|
|
113
|
+
getRelation(relationKind, relationNr) {
|
|
114
|
+
const getMethod = this._getMethods.get(relationKind);
|
|
115
|
+
if (getMethod) {
|
|
116
|
+
return getMethod.call(this, relationNr);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
const result = new ValidationResult();
|
|
120
|
+
result.success = false;
|
|
121
|
+
return Promise.resolve(null);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
86
124
|
commit() {
|
|
87
125
|
return this._adapterService.commit();
|
|
88
126
|
}
|
|
@@ -117,4 +155,4 @@ RelationService.ctorParameters = () => [
|
|
|
117
155
|
{ type: SelectSingleCacheService },
|
|
118
156
|
{ type: SelectMultipleParameterizedCacheService }
|
|
119
157
|
];
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvc2VydmljZS9yZWxhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUNoRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUN2RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUc3RixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDMUUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDN0YsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDdEYsT0FBTyxFQUFDLHVDQUF1QyxFQUFDLE1BQU0sOERBQThELENBQUM7QUFDckgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLCtDQUErQyxDQUFDOzs7Ozs7QUFRdkUsTUFBTSxPQUFPLGVBQWU7SUFjMUIsWUFDVSxlQUF5QyxFQUN6QywyQkFBdUQsRUFDdkQseUJBQW1ELEVBQ25ELHdDQUFpRjtRQUhqRixvQkFBZSxHQUFmLGVBQWUsQ0FBMEI7UUFDekMsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE0QjtRQUN2RCw4QkFBeUIsR0FBekIseUJBQXlCLENBQTBCO1FBQ25ELDZDQUF3QyxHQUF4Qyx3Q0FBd0MsQ0FBeUM7UUFqQjFFLGlCQUFZLEdBQW9DLElBQUksR0FBRyxDQUE2QjtZQUNuRyxD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QUksQ0FBQyxlQUFlLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVPLHNCQUFzQixDQUFDLFVBQWtCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU8sa0JBQWtCLENBQUMsVUFBa0I7UUFDM0MsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVELENBQUM7Ozs7WUF6R0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFqQk8sd0JBQXdCO1lBRHhCLDBCQUEwQjtZQVMxQix3QkFBd0I7WUFDeEIsdUNBQXVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiLi4vY2FjaGUvc2VydmljZS9zZWxlY3QtbXVsdGlwbGUtY2FjaGUuc2VydmljZVwiO1xyXG5pbXBvcnQge1JlbGF0aW9uQ29ubmVjdG9yU2VydmljZX0gZnJvbSBcIi4vcmVsYXRpb24tY29ubmVjdG9yLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtSZWxhdGlvbktpbmR9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9lbnVtL3JlbGF0aW9uLWtpbmQuZW51bVwiO1xyXG5pbXBvcnQge1ZhbGlkYXRpb25SZXN1bHR9IGZyb20gXCJAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC92YWxpZGF0aW9uLXJlc3VsdFwiO1xyXG5pbXBvcnQge0N1c3RvbWVyRnVsbE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9jdXN0b21lci1mdWxsLW9iamVjdC5ib1wiO1xyXG5pbXBvcnQge1JlbGF0aW9uUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1yZXF1ZXN0XCI7XHJcbmltcG9ydCB7UmVsYXRpb25MaXN0T2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLWxpc3Qtb2JqZWN0LmJvXCI7XHJcbmltcG9ydCB7QnJhbmNoTG92fSBmcm9tIFwiQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL2JyYW5jaC1sb3YuYm9cIjtcclxuaW1wb3J0IHtTdXBwbGllckZ1bGxPYmplY3R9IGZyb20gXCJAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvc3VwcGxpZXItZnVsbC1vYmplY3QuYm9cIjtcclxuaW1wb3J0IHtTZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2V9IGZyb20gXCIuLi9jYWNoZS9zZXJ2aWNlL3NlbGVjdC1zaW5nbGUtY2FjaGUuc2VydmljZVwiO1xyXG5pbXBvcnQge1NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZX0gZnJvbSBcIi4uL2NhY2hlL3NlcnZpY2Uvc2VsZWN0LW11bHRpcGxlLXBhcmFtZXRlcml6ZWQtY2FjaGUuc2VydmljZVwiO1xyXG5pbXBvcnQge1JlbGF0aW9ufSBmcm9tIFwiQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLmJvXCI7XHJcblxyXG50eXBlIExvY2tGbkhlYWRlciA9IChyZWxhdGlvbk5yOiBudW1iZXIpID0+IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD47XHJcbnR5cGUgVXBkYXRlRm5IZWFkZXIgPSAocmVsYXRpb246IFJlbGF0aW9uKSA9PiBQcm9taXNlPFJlbGF0aW9uPjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVsYXRpb25TZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2NrTWV0aG9kczogTWFwPFJlbGF0aW9uS2luZCwgTG9ja0ZuSGVhZGVyPiA9IG5ldyBNYXA8UmVsYXRpb25LaW5kLCBMb2NrRm5IZWFkZXI+KFtcclxuICAgIFtSZWxhdGlvbktpbmQuQ3VzdG9tZXIsIChyZWxhdGlvbk5yOiBudW1iZXIpID0+IHRoaXMuX2xvY2tDdXN0b21lckZ1bGxPYmplY3QocmVsYXRpb25OcildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5TdXBwbGllciwgKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gdGhpcy5fbG9ja1N1cHBsaWVyRnVsbE9iamVjdChyZWxhdGlvbk5yKV0sXHJcbiAgICBbUmVsYXRpb25LaW5kLlBlcnNvbm5lbCwgKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gdGhpcy5fbG9ja0VtcGxveWVlRnVsbE9iamVjdChyZWxhdGlvbk5yKV0sXHJcbiAgICBbUmVsYXRpb25LaW5kLkJyYW5jaCwgKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gdGhpcy5fbG9ja0JyYW5jaEZ1bGxPYmplY3QocmVsYXRpb25OcildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5Db21wYW55LCAocmVsYXRpb25OcjogbnVtYmVyKSA9PiB0aGlzLl9sb2NrQ29tcGFueUZ1bGxPYmplY3QocmVsYXRpb25OcildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5Db250YWN0UGVyc29uLCAocmVsYXRpb25OcjogbnVtYmVyKSA9PiB0aGlzLl9sb2NrQ29udGFjdFBlcnNvbihyZWxhdGlvbk5yKV0sXHJcbiAgXSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3VwZGF0ZU1ldGhvZHM6IE1hcDxSZWxhdGlvbktpbmQsIFVwZGF0ZUZuSGVhZGVyPiA9IG5ldyBNYXA8UmVsYXRpb25LaW5kLCBVcGRhdGVGbkhlYWRlcj4oW1xyXG4gICAgW1JlbGF0aW9uS2luZC5DdXN0b21lciwgKHJlbGF0aW9uOiBDdXN0b21lckZ1bGxPYmplY3QpID0+IHRoaXMudXBkYXRlQ3VzdG9tZXIocmVsYXRpb24pXVxyXG4gIF0pO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2FkYXB0ZXJTZXJ2aWNlOiBSZWxhdGlvbkNvbm5lY3RvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZTogU2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2U6IFNlbGVjdFNpbmdsZUNhY2hlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZTogU2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBwdWJsaWMgZ2V0Q3VzdG9tZXJGdWxsT2JqZWN0KHJlbGF0aW9uTm86IG51bWJlcik6IFByb21pc2U8Q3VzdG9tZXJGdWxsT2JqZWN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDdXN0b21lckZ1bGxPYmplY3Q+KEN1c3RvbWVyRnVsbE9iamVjdCwgcmVsYXRpb25ObywgKCkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q3VzdG9tZXJGdWxsT2JqZWN0KHJlbGF0aW9uTm8pXHJcbiAgICB9KS5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFN1cHBsaWVyRnVsbE9iamVjdChyZWxhdGlvbk5vOiBudW1iZXIpOiBQcm9taXNlPFN1cHBsaWVyRnVsbE9iamVjdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdFNpbmdsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8U3VwcGxpZXJGdWxsT2JqZWN0PihTdXBwbGllckZ1bGxPYmplY3QsIHJlbGF0aW9uTm8sICgpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFN1cHBsaWVyRnVsbE9iamVjdChyZWxhdGlvbk5vKVxyXG4gICAgfSkuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbnNlcnRDdXN0b21lcihyZWxhdGlvbjogQ3VzdG9tZXJGdWxsT2JqZWN0KTogUHJvbWlzZTxDdXN0b21lckZ1bGxPYmplY3Q+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5pbnNlcnRDdXN0b21lcihyZWxhdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgdXBkYXRlQ3VzdG9tZXIocmVsYXRpb246IEN1c3RvbWVyRnVsbE9iamVjdCk6IFByb21pc2U8Q3VzdG9tZXJGdWxsT2JqZWN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlQ3VzdG9tZXIocmVsYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFJlbGF0aW9uTGlzdE9iamVjdHMocmVsYXRpb25SZXF1ZXN0OiBSZWxhdGlvblJlcXVlc3QpOiBQcm9taXNlPFJlbGF0aW9uTGlzdE9iamVjdFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UmVsYXRpb25MaXN0T2JqZWN0cyhyZWxhdGlvblJlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFJlbGF0aW9uTnVtYmVyKHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UmVsYXRpb25OdW1iZXIocmVsYXRpb25JZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QnJhbmNoZXMoYnJhbmNoTnI/OiBzdHJpbmcpOiBQcm9taXNlPEJyYW5jaExvdltdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxCcmFuY2hMb3Y+KEJyYW5jaExvdiwgKGJyYW5jaE5yPzogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRCcmFuY2hlcyhicmFuY2hOcilcclxuICAgIH0pLmdldFZhbHVlKGJyYW5jaE5yKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVSZWxhdGlvbihyZWxhdGlvbktpbmQ6IFJlbGF0aW9uS2luZCwgcmVsYXRpb246IFJlbGF0aW9uKTogUHJvbWlzZTxSZWxhdGlvbj4ge1xyXG4gICAgY29uc3QgdXBkYXRlTWV0aG9kOiBVcGRhdGVGbkhlYWRlciA9IHRoaXMuX3VwZGF0ZU1ldGhvZHMuZ2V0KHJlbGF0aW9uS2luZCk7XHJcbiAgICBpZiAodXBkYXRlTWV0aG9kKSB7XHJcbiAgICAgIHJldHVybiB1cGRhdGVNZXRob2QuY2FsbCh0aGlzLCByZWxhdGlvbik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCByZXN1bHQ6IFJlbGF0aW9uID0gbmV3IFJlbGF0aW9uKCk7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2NrUmVsYXRpb24ocmVsYXRpb25LaW5kOiBSZWxhdGlvbktpbmQsIHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xyXG4gICAgY29uc3QgbG9ja01ldGhvZDogTG9ja0ZuSGVhZGVyID0gdGhpcy5fbG9ja01ldGhvZHMuZ2V0KHJlbGF0aW9uS2luZCk7XHJcbiAgICBpZiAobG9ja01ldGhvZCkge1xyXG4gICAgICByZXR1cm4gbG9ja01ldGhvZC5jYWxsKHRoaXMsIHJlbGF0aW9uTnIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcmVzdWx0OiBWYWxpZGF0aW9uUmVzdWx0ID0gbmV3IFZhbGlkYXRpb25SZXN1bHQoKTtcclxuICAgICAgcmVzdWx0LnN1Y2Nlc3MgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbW1pdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jb21taXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvY2tDdXN0b21lckZ1bGxPYmplY3QocmVsYXRpb25OcjogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UubG9ja0N1c3RvbWVyRnVsbE9iamVjdChyZWxhdGlvbk5yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvY2tTdXBwbGllckZ1bGxPYmplY3QocmVsYXRpb25OcjogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UubG9ja1N1cHBsaWVyRnVsbE9iamVjdChyZWxhdGlvbk5yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvY2tFbXBsb3llZUZ1bGxPYmplY3QocmVsYXRpb25OcjogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UubG9ja0VtcGxveWVlRnVsbE9iamVjdChyZWxhdGlvbk5yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvY2tCcmFuY2hGdWxsT2JqZWN0KHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tCcmFuY2hGdWxsT2JqZWN0KHJlbGF0aW9uTnIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9ja0NvbXBhbnlGdWxsT2JqZWN0KHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tDb21wYW55RnVsbE9iamVjdChyZWxhdGlvbk5yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvY2tDb250YWN0UGVyc29uKHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tDb250YWN0UGVyc29uKHJlbGF0aW9uTnIpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvc2VydmljZS9yZWxhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUNoRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUN2RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUc3RixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDMUUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDN0YsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDdEYsT0FBTyxFQUFDLHVDQUF1QyxFQUFDLE1BQU0sOERBQThELENBQUM7QUFDckgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLCtDQUErQyxDQUFDOzs7Ozs7QUFZdkUsTUFBTSxPQUFPLGVBQWU7SUF5QjFCLFlBQ1UsZUFBeUMsRUFDekMsMkJBQXVELEVBQ3ZELHlCQUFtRCxFQUNuRCx3Q0FBaUY7UUFIakYsb0JBQWUsR0FBZixlQUFlLENBQTBCO1FBQ3pDLGdDQUEyQixHQUEzQiwyQkFBMkIsQ0FBNEI7UUFDdkQsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEwQjtRQUNuRCw2Q0FBd0MsR0FBeEMsd0NBQXdDLENBQXlDO1FBNUIxRSxpQkFBWSxHQUFvQyxJQUFJLEdBQUcsQ0FBNkI7WUFDbkcs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LE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdkIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVNLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVPLHVCQUF1QixDQUFDLFVBQWtCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sdUJBQXVCLENBQUMsVUFBa0I7UUFDaEQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxVQUFrQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVPLHFCQUFxQixDQUFDLFVBQWtCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsVUFBa0I7UUFDL0MsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxVQUFrQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7OztZQWpKRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQXJCTyx3QkFBd0I7WUFEeEIsMEJBQTBCO1lBUzFCLHdCQUF3QjtZQUN4Qix1Q0FBdUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7U2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2V9IGZyb20gXCIuLi9jYWNoZS9zZXJ2aWNlL3NlbGVjdC1tdWx0aXBsZS1jYWNoZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7UmVsYXRpb25Db25uZWN0b3JTZXJ2aWNlfSBmcm9tIFwiLi9yZWxhdGlvbi1jb25uZWN0b3Iuc2VydmljZVwiO1xyXG5pbXBvcnQge1JlbGF0aW9uS2luZH0gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL2VudW0vcmVsYXRpb24ta2luZC5lbnVtXCI7XHJcbmltcG9ydCB7VmFsaWRhdGlvblJlc3VsdH0gZnJvbSBcIkBjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL3ZhbGlkYXRpb24tcmVzdWx0XCI7XHJcbmltcG9ydCB7Q3VzdG9tZXJGdWxsT2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL2N1c3RvbWVyLWZ1bGwtb2JqZWN0LmJvXCI7XHJcbmltcG9ydCB7UmVsYXRpb25SZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLXJlcXVlc3RcIjtcclxuaW1wb3J0IHtSZWxhdGlvbkxpc3RPYmplY3R9IGZyb20gXCJAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tbGlzdC1vYmplY3QuYm9cIjtcclxuaW1wb3J0IHtCcmFuY2hMb3Z9IGZyb20gXCJAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvYnJhbmNoLWxvdi5ib1wiO1xyXG5pbXBvcnQge1N1cHBsaWVyRnVsbE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9zdXBwbGllci1mdWxsLW9iamVjdC5ib1wiO1xyXG5pbXBvcnQge1NlbGVjdFNpbmdsZUNhY2hlU2VydmljZX0gZnJvbSBcIi4uL2NhY2hlL3NlcnZpY2Uvc2VsZWN0LXNpbmdsZS1jYWNoZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7U2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiLi4vY2FjaGUvc2VydmljZS9zZWxlY3QtbXVsdGlwbGUtcGFyYW1ldGVyaXplZC1jYWNoZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7UmVsYXRpb259IGZyb20gXCJAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24uYm9cIjtcclxuaW1wb3J0IHtSZWxhdGlvbkFueVR5cGV9IGZyb20gXCJAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tYW55LXR5cGVcIjtcclxuXHJcbnR5cGUgTG9ja0ZuSGVhZGVyID0gKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PjtcclxudHlwZSBHZXRSZWxhdGlvbkZuSGVhZGVyID0gKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gUHJvbWlzZTxSZWxhdGlvbkFueVR5cGU+O1xyXG50eXBlIEluc2VydFJlbGF0aW9uRm4gPSAocmVsYXRpb246IFJlbGF0aW9uQW55VHlwZSkgPT4gUHJvbWlzZTxSZWxhdGlvbkFueVR5cGU+O1xyXG50eXBlIFVwZGF0ZVJlbGF0aW9uRm4gPSAocmVsYXRpb246IFJlbGF0aW9uQW55VHlwZSkgPT4gUHJvbWlzZTxSZWxhdGlvbkFueVR5cGU+O1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVsYXRpb25TZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2NrTWV0aG9kczogTWFwPFJlbGF0aW9uS2luZCwgTG9ja0ZuSGVhZGVyPiA9IG5ldyBNYXA8UmVsYXRpb25LaW5kLCBMb2NrRm5IZWFkZXI+KFtcclxuICAgIFtSZWxhdGlvbktpbmQuQ3VzdG9tZXIsIChyZWxhdGlvbk5yOiBudW1iZXIpID0+IHRoaXMuX2xvY2tDdXN0b21lckZ1bGxPYmplY3QocmVsYXRpb25OcildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5TdXBwbGllciwgKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gdGhpcy5fbG9ja1N1cHBsaWVyRnVsbE9iamVjdChyZWxhdGlvbk5yKV0sXHJcbiAgICBbUmVsYXRpb25LaW5kLlBlcnNvbm5lbCwgKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gdGhpcy5fbG9ja0VtcGxveWVlRnVsbE9iamVjdChyZWxhdGlvbk5yKV0sXHJcbiAgICBbUmVsYXRpb25LaW5kLkJyYW5jaCwgKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gdGhpcy5fbG9ja0JyYW5jaEZ1bGxPYmplY3QocmVsYXRpb25OcildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5Db21wYW55LCAocmVsYXRpb25OcjogbnVtYmVyKSA9PiB0aGlzLl9sb2NrQ29tcGFueUZ1bGxPYmplY3QocmVsYXRpb25OcildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5Db250YWN0UGVyc29uLCAocmVsYXRpb25OcjogbnVtYmVyKSA9PiB0aGlzLl9sb2NrQ29udGFjdFBlcnNvbihyZWxhdGlvbk5yKV0sXHJcbiAgXSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2dldE1ldGhvZHM6IE1hcDxSZWxhdGlvbktpbmQsIEdldFJlbGF0aW9uRm5IZWFkZXI+ID0gbmV3IE1hcDxSZWxhdGlvbktpbmQsIEdldFJlbGF0aW9uRm5IZWFkZXI+KFtcclxuICAgIFtSZWxhdGlvbktpbmQuQ3VzdG9tZXIsIChyZWxhdGlvbk5yOiBudW1iZXIpID0+IHRoaXMuZ2V0Q3VzdG9tZXJGdWxsT2JqZWN0KHJlbGF0aW9uTnIpXSxcclxuICAgIFtSZWxhdGlvbktpbmQuU3VwcGxpZXIsIChyZWxhdGlvbk5yOiBudW1iZXIpID0+IHRoaXMuZ2V0U3VwcGxpZXJGdWxsT2JqZWN0KHJlbGF0aW9uTnIpXVxyXG4gIF0pO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF91cGRhdGVNZXRob2RzOiBNYXA8UmVsYXRpb25LaW5kLCBVcGRhdGVSZWxhdGlvbkZuPiA9IG5ldyBNYXA8UmVsYXRpb25LaW5kLCBVcGRhdGVSZWxhdGlvbkZuPihbXHJcbiAgICBbUmVsYXRpb25LaW5kLkN1c3RvbWVyLCAocmVsYXRpb246IEN1c3RvbWVyRnVsbE9iamVjdCkgPT4gdGhpcy51cGRhdGVDdXN0b21lcihyZWxhdGlvbildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5TdXBwbGllciwgKHJlbGF0aW9uOiBTdXBwbGllckZ1bGxPYmplY3QpID0+IHRoaXMudXBkYXRlU3VwcGxpZXIocmVsYXRpb24pXVxyXG4gIF0pO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9pbnNlcnRNZXRob2RzOiBNYXA8UmVsYXRpb25LaW5kLCBJbnNlcnRSZWxhdGlvbkZuPiA9IG5ldyBNYXA8UmVsYXRpb25LaW5kLCBJbnNlcnRSZWxhdGlvbkZuPihbXHJcbiAgICBbUmVsYXRpb25LaW5kLkN1c3RvbWVyLCAocmVsYXRpb246IEN1c3RvbWVyRnVsbE9iamVjdCkgPT4gdGhpcy5pbnNlcnRDdXN0b21lcihyZWxhdGlvbildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5TdXBwbGllciwgKHJlbGF0aW9uOiBTdXBwbGllckZ1bGxPYmplY3QpID0+IHRoaXMuaW5zZXJ0U3VwcGxpZXIocmVsYXRpb24pXVxyXG4gIF0pXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfYWRhcHRlclNlcnZpY2U6IFJlbGF0aW9uQ29ubmVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlOiBTZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlbGVjdFNpbmdsZUNhY2hlU2VydmljZTogU2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlOiBTZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBnZXRDdXN0b21lckZ1bGxPYmplY3QocmVsYXRpb25ObzogbnVtYmVyKTogUHJvbWlzZTxDdXN0b21lckZ1bGxPYmplY3Q+IHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPEN1c3RvbWVyRnVsbE9iamVjdD4oQ3VzdG9tZXJGdWxsT2JqZWN0LCByZWxhdGlvbk5vLCAoKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDdXN0b21lckZ1bGxPYmplY3QocmVsYXRpb25ObylcclxuICAgIH0pLmdldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U3VwcGxpZXJGdWxsT2JqZWN0KHJlbGF0aW9uTm86IG51bWJlcik6IFByb21pc2U8U3VwcGxpZXJGdWxsT2JqZWN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxTdXBwbGllckZ1bGxPYmplY3Q+KFN1cHBsaWVyRnVsbE9iamVjdCwgcmVsYXRpb25ObywgKCkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U3VwcGxpZXJGdWxsT2JqZWN0KHJlbGF0aW9uTm8pXHJcbiAgICB9KS5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGluc2VydEN1c3RvbWVyKHJlbGF0aW9uOiBDdXN0b21lckZ1bGxPYmplY3QpOiBQcm9taXNlPEN1c3RvbWVyRnVsbE9iamVjdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmluc2VydEN1c3RvbWVyKHJlbGF0aW9uKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVDdXN0b21lcihyZWxhdGlvbjogQ3VzdG9tZXJGdWxsT2JqZWN0KTogUHJvbWlzZTxDdXN0b21lckZ1bGxPYmplY3Q+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS51cGRhdGVDdXN0b21lcihyZWxhdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5zZXJ0U3VwcGxpZXIocmVsYXRpb246IFN1cHBsaWVyRnVsbE9iamVjdCk6IFByb21pc2U8U3VwcGxpZXJGdWxsT2JqZWN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuaW5zZXJ0U3VwcGxpZXIocmVsYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHVwZGF0ZVN1cHBsaWVyKHJlbGF0aW9uOiBTdXBwbGllckZ1bGxPYmplY3QpOiBQcm9taXNlPFN1cHBsaWVyRnVsbE9iamVjdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnVwZGF0ZVN1cHBsaWVyKHJlbGF0aW9uKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRSZWxhdGlvbkxpc3RPYmplY3RzKHJlbGF0aW9uUmVxdWVzdDogUmVsYXRpb25SZXF1ZXN0KTogUHJvbWlzZTxSZWxhdGlvbkxpc3RPYmplY3RbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFJlbGF0aW9uTGlzdE9iamVjdHMocmVsYXRpb25SZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRSZWxhdGlvbk51bWJlcihyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFJlbGF0aW9uTnVtYmVyKHJlbGF0aW9uSWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEJyYW5jaGVzKGJyYW5jaE5yPzogc3RyaW5nKTogUHJvbWlzZTxCcmFuY2hMb3ZbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8QnJhbmNoTG92PihCcmFuY2hMb3YsIChicmFuY2hOcj86IHN0cmluZykgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QnJhbmNoZXMoYnJhbmNoTnIpXHJcbiAgICB9KS5nZXRWYWx1ZShicmFuY2hOcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5zZXJ0UmVsYXRpb24ocmVsYXRpb25LaW5kOiBSZWxhdGlvbktpbmQsIHJlbGF0aW9uOiBSZWxhdGlvbik6IFByb21pc2U8UmVsYXRpb24+IHtcclxuICAgIGNvbnN0IGluc2VydE1ldGhvZDogSW5zZXJ0UmVsYXRpb25GbiA9IHRoaXMuX2luc2VydE1ldGhvZHMuZ2V0KHJlbGF0aW9uS2luZCk7XHJcbiAgICBpZiAoaW5zZXJ0TWV0aG9kKSB7XHJcbiAgICAgIHJldHVybiBpbnNlcnRNZXRob2QuY2FsbCh0aGlzLCByZWxhdGlvbik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCByZXN1bHQ6IFJlbGF0aW9uID0gbmV3IFJlbGF0aW9uKCk7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVSZWxhdGlvbihyZWxhdGlvbktpbmQ6IFJlbGF0aW9uS2luZCwgcmVsYXRpb246IFJlbGF0aW9uKTogUHJvbWlzZTxSZWxhdGlvbj4ge1xyXG4gICAgY29uc3QgdXBkYXRlTWV0aG9kOiBVcGRhdGVSZWxhdGlvbkZuID0gdGhpcy5fdXBkYXRlTWV0aG9kcy5nZXQocmVsYXRpb25LaW5kKTtcclxuICAgIGlmICh1cGRhdGVNZXRob2QpIHtcclxuICAgICAgcmV0dXJuIHVwZGF0ZU1ldGhvZC5jYWxsKHRoaXMsIHJlbGF0aW9uKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogUmVsYXRpb24gPSBuZXcgUmVsYXRpb24oKTtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvY2tSZWxhdGlvbihyZWxhdGlvbktpbmQ6IFJlbGF0aW9uS2luZCwgcmVsYXRpb25OcjogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XHJcbiAgICBjb25zdCBsb2NrTWV0aG9kOiBMb2NrRm5IZWFkZXIgPSB0aGlzLl9sb2NrTWV0aG9kcy5nZXQocmVsYXRpb25LaW5kKTtcclxuICAgIGlmIChsb2NrTWV0aG9kKSB7XHJcbiAgICAgIHJldHVybiBsb2NrTWV0aG9kLmNhbGwodGhpcywgcmVsYXRpb25Ocik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCByZXN1bHQ6IFZhbGlkYXRpb25SZXN1bHQgPSBuZXcgVmFsaWRhdGlvblJlc3VsdCgpO1xyXG4gICAgICByZXN1bHQuc3VjY2VzcyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UmVsYXRpb24ocmVsYXRpb25LaW5kOiBSZWxhdGlvbktpbmQsIHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8UmVsYXRpb25BbnlUeXBlPiB7XHJcbiAgICBjb25zdCBnZXRNZXRob2Q6IEdldFJlbGF0aW9uRm5IZWFkZXIgPSB0aGlzLl9nZXRNZXRob2RzLmdldChyZWxhdGlvbktpbmQpO1xyXG4gICAgaWYgKGdldE1ldGhvZCkge1xyXG4gICAgICByZXR1cm4gZ2V0TWV0aG9kLmNhbGwodGhpcywgcmVsYXRpb25Ocik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCByZXN1bHQ6IFZhbGlkYXRpb25SZXN1bHQgPSBuZXcgVmFsaWRhdGlvblJlc3VsdCgpO1xyXG4gICAgICByZXN1bHQuc3VjY2VzcyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbW1pdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jb21taXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvY2tDdXN0b21lckZ1bGxPYmplY3QocmVsYXRpb25OcjogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UubG9ja0N1c3RvbWVyRnVsbE9iamVjdChyZWxhdGlvbk5yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvY2tTdXBwbGllckZ1bGxPYmplY3QocmVsYXRpb25OcjogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UubG9ja1N1cHBsaWVyRnVsbE9iamVjdChyZWxhdGlvbk5yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvY2tFbXBsb3llZUZ1bGxPYmplY3QocmVsYXRpb25OcjogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UubG9ja0VtcGxveWVlRnVsbE9iamVjdChyZWxhdGlvbk5yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvY2tCcmFuY2hGdWxsT2JqZWN0KHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tCcmFuY2hGdWxsT2JqZWN0KHJlbGF0aW9uTnIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9ja0NvbXBhbnlGdWxsT2JqZWN0KHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tDb21wYW55RnVsbE9iamVjdChyZWxhdGlvbk5yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvY2tDb250YWN0UGVyc29uKHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tDb250YWN0UGVyc29uKHJlbGF0aW9uTnIpO1xyXG4gIH1cclxufVxyXG4iXX0=
|