@colijnit/sharedcomponents 1.0.29 → 1.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -24
- package/bundles/colijnit-sharedcomponents.umd.js +789 -1887
- package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
- package/colijnit-sharedcomponents.d.ts +40 -29
- package/colijnit-sharedcomponents.metadata.json +1 -1
- package/esm2015/colijnit-sharedcomponents.js +41 -30
- package/esm2015/lib/components/date-planning/date-planning.component.js +6 -4
- package/esm2015/lib/components/docsign/component/signature/signature.component.js +3 -3
- package/esm2015/lib/components/docsign/component/signatures/signatures.component.js +7 -7
- package/esm2015/lib/components/docsign/docsign.component.js +5 -5
- package/esm2015/lib/components/layout-switcher/layout-switcher.component.js +3 -3
- package/esm2015/lib/components/send-method-dialog/components/layout-selection/layout-selection.component.js +57 -0
- package/esm2015/lib/components/send-method-dialog/components/layout-selection/layout-selection.module.js +19 -0
- package/esm2015/lib/components/send-method-dialog/components/printer-selection/printer-selection.component.js +76 -0
- package/esm2015/lib/components/send-method-dialog/components/printer-selection/printer-selection.module.js +21 -0
- package/esm2015/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.js +59 -0
- package/esm2015/lib/components/send-method-dialog/components/send-method-email/send-method-email.module.js +23 -0
- package/esm2015/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.js +50 -0
- package/esm2015/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.module.js +26 -0
- package/esm2015/lib/components/send-method-dialog/model/email-address-viewmodel.js +7 -0
- package/esm2015/lib/components/send-method-dialog/send-method-dialog.component.js +162 -251
- package/esm2015/lib/components/send-method-dialog/send-method-dialog.module.js +12 -13
- package/esm2015/lib/components/send-method-dialog/service/send-method.service.js +59 -0
- package/esm2015/lib/components/stock/stock-information-grid/stock-information-grid.component.js +101 -27
- package/esm2015/lib/components/stock/stock-transfer/stock-change-amount.component.js +3 -1
- package/esm2015/lib/components/stock/stock-transfer/stock-transfer.component.js +4 -2
- package/esm2015/lib/components/stock/stock.component.js +8 -1
- package/esm2015/lib/enum/icon.enum.js +6 -1
- package/esm2015/lib/model/icon-svg.js +7 -2
- package/esm2015/lib/model/send-method.js +8 -0
- package/esm2015/lib/model/time-window.bo.js +4 -4
- package/esm2015/lib/service/icon-cache.service.js +1 -1
- package/esm2015/lib/service/shared-connector.service.js +91 -121
- package/esm2015/lib/service/shared.service.js +11 -1
- package/esm2015/lib/service/stock.service.js +19 -36
- package/fesm2015/colijnit-sharedcomponents.js +834 -1849
- package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
- package/lib/components/circular-gauge/style/_layout.scss +0 -2
- package/lib/components/circular-gauge/style/_theme.scss +0 -2
- package/lib/components/circular-gauge/style/material.scss +1 -0
- package/lib/components/date-planning/date-planning.component.d.ts +3 -2
- package/lib/components/date-planning/style/_layout.scss +2 -4
- package/lib/components/date-planning/style/_theme.scss +2 -4
- package/lib/components/docsign/component/signature/style/_layout.scss +2 -4
- package/lib/components/docsign/component/signature/style/_theme.scss +2 -4
- package/lib/components/docsign/component/signature/style/material.scss +1 -3
- package/lib/components/docsign/component/signatures/style/_layout.scss +3 -5
- package/lib/components/docsign/component/signatures/style/_theme.scss +2 -4
- package/lib/components/docsign/component/signatures/style/material.scss +1 -2
- package/lib/components/docsign/style/_layout.scss +3 -5
- package/lib/components/docsign/style/_theme.scss +2 -4
- package/lib/components/docsign/style/material.scss +1 -0
- package/lib/components/layout-switcher/style/_layout.scss +2 -4
- package/lib/components/layout-switcher/style/_theme.scss +2 -4
- package/lib/components/layout-switcher/style/material.scss +1 -0
- package/lib/components/linear-gauge/style/_layout.scss +0 -2
- package/lib/components/linear-gauge/style/_theme.scss +0 -2
- package/lib/components/linear-gauge/style/material.scss +1 -0
- package/lib/components/send-method-dialog/components/layout-selection/layout-selection.component.d.ts +13 -0
- package/lib/components/send-method-dialog/components/layout-selection/layout-selection.module.d.ts +2 -0
- package/lib/components/send-method-dialog/components/layout-selection/style/_layout.scss +34 -0
- package/lib/components/send-method-dialog/components/layout-selection/style/_material-definition.scss +19 -0
- package/lib/components/send-method-dialog/components/layout-selection/style/_theme.scss +17 -0
- package/lib/components/send-method-dialog/components/layout-selection/style/material.scss +4 -0
- package/lib/components/send-method-dialog/components/printer-selection/printer-selection.component.d.ts +18 -0
- package/lib/components/send-method-dialog/components/printer-selection/printer-selection.module.d.ts +2 -0
- package/lib/components/send-method-dialog/components/printer-selection/style/_layout.scss +59 -0
- package/lib/components/send-method-dialog/components/printer-selection/style/_material-definition.scss +39 -0
- package/lib/components/send-method-dialog/components/printer-selection/style/_theme.scss +23 -0
- package/lib/components/send-method-dialog/components/printer-selection/style/material.scss +4 -0
- package/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.d.ts +14 -0
- package/lib/components/send-method-dialog/components/send-method-email/send-method-email.module.d.ts +2 -0
- package/lib/components/send-method-dialog/components/send-method-email/style/_layout.scss +21 -0
- package/lib/components/send-method-dialog/components/send-method-email/style/_material-definition.scss +8 -0
- package/lib/components/send-method-dialog/components/send-method-email/style/_theme.scss +5 -0
- package/lib/components/send-method-dialog/components/send-method-email/style/material.scss +4 -0
- package/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.d.ts +10 -0
- package/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.module.d.ts +2 -0
- package/lib/components/send-method-dialog/components/send-method-printer/style/_layout.scss +17 -0
- package/lib/components/send-method-dialog/components/send-method-printer/style/_material-definition.scss +5 -0
- package/lib/components/send-method-dialog/components/send-method-printer/style/_theme.scss +5 -0
- package/lib/components/send-method-dialog/components/send-method-printer/style/material.scss +4 -0
- package/lib/components/send-method-dialog/model/email-address-viewmodel.d.ts +5 -0
- package/lib/components/send-method-dialog/send-method-dialog.component.d.ts +53 -61
- package/lib/components/send-method-dialog/service/send-method.service.d.ts +23 -0
- package/lib/components/send-method-dialog/style/_layout.scss +44 -184
- package/lib/components/send-method-dialog/style/_material-definition.scss +30 -1
- package/lib/components/send-method-dialog/style/_theme.scss +31 -5
- package/lib/components/send-method-dialog/style/material.scss +5 -0
- package/lib/components/statusbar/style/_layout.scss +0 -2
- package/lib/components/statusbar/style/_theme.scss +0 -2
- package/lib/components/statusbar/style/material.scss +1 -0
- package/lib/components/stock/stock-information-grid/stock-information-grid.component.d.ts +12 -1
- package/lib/components/stock/stock.component.d.ts +2 -0
- package/lib/components/stock/style/_layout.scss +0 -2
- package/lib/components/stock/style/_theme.scss +0 -3
- package/lib/components/stock/style/material.scss +1 -0
- package/lib/enum/icon.enum.d.ts +5 -0
- package/lib/model/send-method.d.ts +7 -0
- package/lib/model/time-window.bo.d.ts +1 -1
- package/lib/service/icon-cache.service.d.ts +1 -1
- package/lib/service/shared-connector.service.d.ts +21 -29
- package/lib/service/shared.service.d.ts +4 -0
- package/lib/service/stock.service.d.ts +1 -12
- package/lib/style/_variables.scss +5 -1
- package/package.json +6 -6
- package/esm2015/lib/components/send-method-dialog/enums/send-option.js +0 -8
- package/esm2015/lib/factory/business-object-factory.js +0 -120
- package/esm2015/lib/factory/decorators/boolean.decorator.js +0 -102
- package/esm2015/lib/factory/decorators/complex-array.decorator.js +0 -55
- package/esm2015/lib/factory/decorators/complex-field.decorator.js +0 -57
- package/esm2015/lib/factory/decorators/date-field.decorator.js +0 -36
- package/esm2015/lib/factory/decorators/string-number.decorator.js +0 -43
- package/esm2015/lib/model/business-object.js +0 -81
- package/esm2015/lib/utils/array-utils.js +0 -202
- package/esm2015/lib/utils/check-precision-and-scale-result.js +0 -2
- package/esm2015/lib/utils/check-within-stepped-bounds-result.js +0 -2
- package/esm2015/lib/utils/is-nill.function.js +0 -5
- package/esm2015/lib/utils/number-utils.js +0 -390
- package/esm2015/lib/utils/object-utils.js +0 -278
- package/lib/components/send-method-dialog/enums/send-option.d.ts +0 -6
- package/lib/factory/business-object-factory.d.ts +0 -23
- package/lib/factory/decorators/boolean.decorator.d.ts +0 -43
- package/lib/factory/decorators/complex-array.decorator.d.ts +0 -25
- package/lib/factory/decorators/complex-field.decorator.d.ts +0 -25
- package/lib/factory/decorators/date-field.decorator.d.ts +0 -17
- package/lib/factory/decorators/string-number.decorator.d.ts +0 -22
- package/lib/model/business-object.d.ts +0 -7
- package/lib/utils/array-utils.d.ts +0 -63
- package/lib/utils/check-precision-and-scale-result.d.ts +0 -4
- package/lib/utils/check-within-stepped-bounds-result.d.ts +0 -8
- package/lib/utils/is-nill.function.d.ts +0 -1
- package/lib/utils/number-utils.d.ts +0 -125
- package/lib/utils/object-utils.d.ts +0 -40
|
@@ -1,134 +1,129 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
|
-
import { ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from
|
|
3
|
-
import { Icon } from
|
|
4
|
-
import { IconCacheService } from
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
2
|
+
import { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
3
|
+
import { Icon } from '../../enum/icon.enum';
|
|
4
|
+
import { IconCacheService } from '../../service/icon-cache.service';
|
|
5
|
+
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
6
|
+
import { OptionsService } from '../../service/options.service';
|
|
7
|
+
import { DictionaryService } from '../../service/dictionary.service';
|
|
8
|
+
import { SharedService } from '../../service/shared.service';
|
|
9
|
+
import { SendMethodService } from './service/send-method.service';
|
|
10
|
+
import { SendMethod } from '../../model/send-method';
|
|
11
|
+
import { SendMethodType } from '@colijnit/mainapi/build/enum/send-method-type.enum';
|
|
12
|
+
export const sendMethodsWithIcon = [
|
|
13
|
+
new SendMethod(SendMethodType.Fax, "Fax", Icon.PrintRegular),
|
|
14
|
+
new SendMethod(SendMethodType.Print, "Print", Icon.PrintSolid),
|
|
15
|
+
new SendMethod(SendMethodType.Email, "Email", Icon.AtSolid),
|
|
16
|
+
new SendMethod(SendMethodType.Edi, "Edi", Icon.FileExportSolid),
|
|
17
|
+
new SendMethod(SendMethodType.EmailTemplate, "Email template", Icon.EnvelopeRegular),
|
|
18
|
+
new SendMethod(SendMethodType.Sms, "Sms", Icon.MessageSmsSolid),
|
|
19
|
+
new SendMethod(SendMethodType.WebService, "Webservice", Icon.PrintRegular)
|
|
20
|
+
];
|
|
11
21
|
export class SendMethodDialogComponent {
|
|
12
|
-
constructor(iconCacheService,
|
|
22
|
+
constructor(iconCacheService, _optionsService, _dictionary, _changeDetector, _sharedService, _sendMethodService) {
|
|
13
23
|
this.iconCacheService = iconCacheService;
|
|
14
|
-
this.stockService = stockService;
|
|
15
24
|
this._optionsService = _optionsService;
|
|
16
25
|
this._dictionary = _dictionary;
|
|
17
26
|
this._changeDetector = _changeDetector;
|
|
27
|
+
this._sharedService = _sharedService;
|
|
28
|
+
this._sendMethodService = _sendMethodService;
|
|
18
29
|
this.icons = Icon;
|
|
19
|
-
this.
|
|
20
|
-
this.showEmailOption = true;
|
|
21
|
-
this.showPrintOption = true;
|
|
22
|
-
this.showPdfOption = true;
|
|
23
|
-
this.showXmlOption = true;
|
|
24
|
-
this.showPrintPriceStickers = true;
|
|
25
|
-
this.sendOptions = [
|
|
26
|
-
{ option: SendOption.Email,
|
|
27
|
-
iconName: this.icons.EnvelopeRegular,
|
|
28
|
-
},
|
|
29
|
-
{ option: SendOption.Print,
|
|
30
|
-
iconName: this.icons.PrintRegular,
|
|
31
|
-
},
|
|
32
|
-
{ option: SendOption.Pdf,
|
|
33
|
-
iconName: this.icons.FilePdfRegular,
|
|
34
|
-
},
|
|
35
|
-
{ option: SendOption.Xml,
|
|
36
|
-
iconName: this.icons.FilePdfRegular,
|
|
37
|
-
}
|
|
38
|
-
];
|
|
39
|
-
this.activeSendOption = SendOption.Email;
|
|
40
|
-
this.showStandardPrinterOptions = false;
|
|
41
|
-
this.showPrinterSelections = false;
|
|
42
|
-
this.showExitButton = true;
|
|
43
|
-
this.printTemplates = [];
|
|
44
|
-
this.printTemplatesField = { text: "name", value: "reportId" };
|
|
45
|
-
this.emailLayoutField = { text: "name", value: "reportId" };
|
|
46
|
-
this.priceListDataField = { text: "name", value: "priceListCode" };
|
|
47
|
-
this.upAndLoaded = false;
|
|
48
|
-
this.models = [false, false, true];
|
|
49
|
-
this.showDialog = false;
|
|
50
|
-
this.emailAdresses = [];
|
|
30
|
+
this.emailLayouts = [];
|
|
51
31
|
this.printLayouts = [];
|
|
32
|
+
this.emailAddresses = [];
|
|
33
|
+
this.visibleMethods = [];
|
|
52
34
|
this.isDocSignEnabled = false;
|
|
53
35
|
this.docSign = false;
|
|
36
|
+
this.reportingDocumentPrintRequestChange = new EventEmitter();
|
|
37
|
+
this.reportingDocumentEmailRequestChange = new EventEmitter();
|
|
38
|
+
this.reportingDocumentPdfRequestChange = new EventEmitter();
|
|
54
39
|
this.startSignatureClicked = new EventEmitter();
|
|
55
|
-
this.
|
|
56
|
-
this.
|
|
57
|
-
this.
|
|
58
|
-
this.
|
|
59
|
-
this.
|
|
60
|
-
this.
|
|
61
|
-
this.
|
|
62
|
-
|
|
40
|
+
this.closeClick = new EventEmitter();
|
|
41
|
+
this.okClick = new EventEmitter();
|
|
42
|
+
this.sendMethods = sendMethodsWithIcon;
|
|
43
|
+
this.upAndLoaded = false;
|
|
44
|
+
this.startUp = true;
|
|
45
|
+
this.showFax = true;
|
|
46
|
+
this.showPrint = true;
|
|
47
|
+
this.showEmail = true;
|
|
48
|
+
this.showEdi = true;
|
|
49
|
+
this.showSms = true;
|
|
50
|
+
this.showEmailTemplate = true;
|
|
51
|
+
this.showWebservice = true;
|
|
63
52
|
this._subscriptions = [];
|
|
64
|
-
this._subscriptions.push(this._optionsService.optionsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)));
|
|
65
|
-
}
|
|
66
|
-
set articleData(data) {
|
|
67
|
-
if (!(this.printLayoutParams instanceof PrintPriceStickers)) {
|
|
68
|
-
this.sendMethodParams.goodId = data.goodId;
|
|
69
|
-
this.sendMethodParams.warehouse = data.warehouseNo;
|
|
70
|
-
}
|
|
53
|
+
this._subscriptions.push(this._optionsService.optionsLoaded.subscribe(loaded => this._handleSettingsLoaded(loaded)), this._sendMethodService.reportingDocumentPrintBaseRequestChanged.subscribe((value) => this.reportingDocumentPrintRequestChange.next(value)), this._sendMethodService.reportingDocumentEmailBaseRequestChanged.subscribe((value) => this.reportingDocumentEmailRequestChange.next(value)), this._sendMethodService.reportingDocumentPdfBaseRequestChanged.subscribe((value) => this.reportingDocumentPdfRequestChange.next(value)));
|
|
71
54
|
}
|
|
72
|
-
;
|
|
73
55
|
showClass() {
|
|
74
56
|
return true;
|
|
75
57
|
}
|
|
76
58
|
ngOnInit() {
|
|
77
|
-
this.
|
|
78
|
-
|
|
59
|
+
if (this.reportingDocumentEmailRequest) {
|
|
60
|
+
this._sendMethodService.reportingDocumentEmailBaseRequest = this.reportingDocumentEmailRequest;
|
|
61
|
+
}
|
|
62
|
+
if (this.reportingDocumentPrintRequest) {
|
|
63
|
+
this._sendMethodService.reportingDocumentPrintBaseRequest = this.reportingDocumentPrintRequest;
|
|
64
|
+
}
|
|
65
|
+
if (this.reportingDocumentPdfRequest) {
|
|
66
|
+
this._sendMethodService.reportingDocumentPdfBaseRequest = this.reportingDocumentPdfRequest;
|
|
67
|
+
}
|
|
68
|
+
this._selectDefaultSendMethod();
|
|
69
|
+
this._prepareVisibleMethods();
|
|
79
70
|
}
|
|
80
71
|
ngOnDestroy() {
|
|
81
72
|
this._subscriptions.forEach(subscription => subscription.unsubscribe());
|
|
82
73
|
}
|
|
83
|
-
getPrinters() {
|
|
84
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
85
|
-
return this.stockService.getAllPrinters(true).then((list) => {
|
|
86
|
-
this.printerList = list;
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
closeDialogClick() {
|
|
91
|
-
this.showDialog = false;
|
|
92
|
-
}
|
|
93
74
|
handleSignatureStart() {
|
|
94
75
|
this.docSign = !this.docSign;
|
|
95
76
|
this.startSignatureClicked.emit();
|
|
96
77
|
}
|
|
97
|
-
|
|
98
|
-
this.
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if (this.
|
|
103
|
-
this.
|
|
78
|
+
handleSendMethodClick(sendMethod) {
|
|
79
|
+
this.activeSendMethod = sendMethod;
|
|
80
|
+
if (sendMethod.code === SendMethodType.Fax && this.showFax) {
|
|
81
|
+
this.navigationItems.nativeElement.scrollLeft = this.faxItems.nativeElement.offsetLeft - this.navigationItems.nativeElement.offsetLeft;
|
|
82
|
+
}
|
|
83
|
+
else if (sendMethod.code === SendMethodType.Print && this.showPrint) {
|
|
84
|
+
this.navigationItems.nativeElement.scrollLeft = this.printItems.nativeElement.offsetLeft - this.navigationItems.nativeElement.offsetLeft;
|
|
85
|
+
}
|
|
86
|
+
else if (sendMethod.code === SendMethodType.Email && this.showEmail) {
|
|
87
|
+
this.navigationItems.nativeElement.scrollLeft = this.emailItems.nativeElement.offsetLeft - this.navigationItems.nativeElement.offsetLeft;
|
|
88
|
+
}
|
|
89
|
+
else if (sendMethod.code === SendMethodType.Edi && this.showEdi) {
|
|
90
|
+
this.navigationItems.nativeElement.scrollLeft = this.ediItems.nativeElement.offsetLeft - this.navigationItems.nativeElement.offsetLeft;
|
|
91
|
+
}
|
|
92
|
+
else if (sendMethod.code === SendMethodType.EmailTemplate && this.showEmailTemplate) {
|
|
93
|
+
this.navigationItems.nativeElement.scrollLeft = this.emailTemplateItems.nativeElement.offsetLeft - this.navigationItems.nativeElement.offsetLeft;
|
|
94
|
+
}
|
|
95
|
+
else if (sendMethod.code === SendMethodType.Sms && this.showSms) {
|
|
96
|
+
this.navigationItems.nativeElement.scrollLeft = this.smsItems.nativeElement.offsetLeft - this.navigationItems.nativeElement.offsetLeft;
|
|
97
|
+
}
|
|
98
|
+
else if (sendMethod.code === SendMethodType.WebService && this.showWebservice) {
|
|
99
|
+
this.navigationItems.nativeElement.scrollLeft = this.webServiceItems.nativeElement.offsetLeft - this.navigationItems.nativeElement.offsetLeft;
|
|
104
100
|
}
|
|
105
101
|
}
|
|
106
|
-
|
|
107
|
-
this.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
102
|
+
_selectDefaultSendMethod() {
|
|
103
|
+
if (this.defaultSendMethod) {
|
|
104
|
+
const sendMethod = this.sendMethods.find(sm => sm.code === this.defaultSendMethod);
|
|
105
|
+
if (sendMethod) {
|
|
106
|
+
setTimeout(() => {
|
|
107
|
+
this.handleSendMethodClick(sendMethod);
|
|
108
|
+
this.startUp = false;
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
111
|
}
|
|
112
112
|
else {
|
|
113
|
-
this.
|
|
114
|
-
this.headerTitle = 'Verzendopties';
|
|
113
|
+
this.startUp = false;
|
|
115
114
|
}
|
|
116
115
|
}
|
|
117
|
-
|
|
118
|
-
this.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
this.
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
this.
|
|
127
|
-
|
|
128
|
-
getDefaultEmailLayouts() {
|
|
129
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
130
|
-
this.emailLayoutClicked.emit();
|
|
131
|
-
});
|
|
116
|
+
_prepareVisibleMethods() {
|
|
117
|
+
if (this.visibleMethods && this.visibleMethods.length > 0) {
|
|
118
|
+
this.sendMethods = this.sendMethods.filter(sm => this.visibleMethods.find(vm => vm === sm.code));
|
|
119
|
+
}
|
|
120
|
+
this.showFax = this.sendMethods.find(sm => sm.code === SendMethodType.Fax) !== undefined;
|
|
121
|
+
this.showPrint = this.sendMethods.find(sm => sm.code === SendMethodType.Print) !== undefined;
|
|
122
|
+
this.showEmail = this.sendMethods.find(sm => sm.code === SendMethodType.Email) !== undefined;
|
|
123
|
+
this.showEdi = this.sendMethods.find(sm => sm.code === SendMethodType.Edi) !== undefined;
|
|
124
|
+
this.showEmailTemplate = this.sendMethods.find(sm => sm.code === SendMethodType.EmailTemplate) !== undefined;
|
|
125
|
+
this.showSms = this.sendMethods.find(sm => sm.code === SendMethodType.Sms) !== undefined;
|
|
126
|
+
this.showWebservice = this.sendMethods.find(sm => sm.code === SendMethodType.WebService) !== undefined;
|
|
132
127
|
}
|
|
133
128
|
_handleSettingsLoaded(loaded) {
|
|
134
129
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -142,7 +137,7 @@ export class SendMethodDialogComponent {
|
|
|
142
137
|
return __awaiter(this, void 0, void 0, function* () {
|
|
143
138
|
// await this._connector.connect(this._optionsService.options);
|
|
144
139
|
if (this._optionsService.options.url) {
|
|
145
|
-
this._dictionary.rootUrl = this._optionsService.options.url.replace(
|
|
140
|
+
this._dictionary.rootUrl = this._optionsService.options.url.replace('/ajaxservice', '');
|
|
146
141
|
}
|
|
147
142
|
yield this._dictionary.setDictionary(this._optionsService.options.languageCode);
|
|
148
143
|
setTimeout(() => {
|
|
@@ -153,141 +148,57 @@ export class SendMethodDialogComponent {
|
|
|
153
148
|
}
|
|
154
149
|
SendMethodDialogComponent.decorators = [
|
|
155
150
|
{ type: Component, args: [{
|
|
156
|
-
selector:
|
|
151
|
+
selector: 'co-send-method-dialog',
|
|
157
152
|
template: `
|
|
158
|
-
<
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
<div class="email-option-content" *ngIf="activeSendOption === sendOption.Email || activeSendOption === sendOption.Pdf">
|
|
175
|
-
<div class="emails-container" *ngIf="activeSendOption === sendOption.Email">
|
|
176
|
-
<co-input-checkbox
|
|
177
|
-
*ngFor="let email of emailAdresses"
|
|
178
|
-
[(model)]="email.name"
|
|
179
|
-
[label]="email"
|
|
180
|
-
[cssClass]="'input-checkbox-wrapper'"
|
|
181
|
-
></co-input-checkbox>
|
|
182
|
-
</div>
|
|
183
|
-
|
|
184
|
-
<div class="lov-wrapper" (click)="getDefaultEmailLayouts()">
|
|
185
|
-
<co-input-combo-box
|
|
186
|
-
[(model)]="sendMethodParams.reportId"
|
|
187
|
-
[collection]="emailLayouts"
|
|
188
|
-
[fields]="emailLayoutField"
|
|
189
|
-
placeholder="Layout"
|
|
190
|
-
></co-input-combo-box>
|
|
191
|
-
</div>
|
|
192
|
-
|
|
193
|
-
<div *ngIf="isDocSignEnabled" class="signature-button-wrapper">
|
|
194
|
-
<div class="custom-button-wrapper signature-button" (click)="handleSignatureStart()">
|
|
195
|
-
<co-icon [iconData]="iconCacheService.getIcon(icons.SignatureField)"></co-icon>
|
|
196
|
-
</div>
|
|
197
|
-
<div class="custom-button-wrapper send-button" (click)="sendEmail()">
|
|
198
|
-
<co-icon [iconData]="iconCacheService.getIcon(icons.Email)"></co-icon>
|
|
199
|
-
</div>
|
|
200
|
-
</div>
|
|
201
|
-
|
|
202
|
-
<ione-docsign *ngIf="docSign"></ione-docsign>
|
|
203
|
-
</div>
|
|
204
|
-
|
|
205
|
-
<div class="email-option-content" *ngIf="activeSendOption === sendOption.Print" (click)="getPrintTemplates()">
|
|
206
|
-
<div *ngIf="showPrintPriceStickers">
|
|
207
|
-
<div class="lov-wrapper">
|
|
208
|
-
<co-input-combo-box
|
|
209
|
-
[(model)]="sendMethodParams.reportId"
|
|
210
|
-
[collection]="printLayouts"
|
|
211
|
-
[fields]="printTemplatesField"
|
|
212
|
-
placeholder="Layout"
|
|
213
|
-
></co-input-combo-box>
|
|
214
|
-
</div>
|
|
215
|
-
<div class="lov-wrapper" *ngIf="priceListCodeData">
|
|
216
|
-
<co-input-combo-box
|
|
217
|
-
[(model)]="sendMethodParams.priceListCode"
|
|
218
|
-
[collection]="priceListCodeData"
|
|
219
|
-
[fields]="priceListDataField"
|
|
220
|
-
placeholder="Layout"
|
|
221
|
-
></co-input-combo-box>
|
|
222
|
-
</div>
|
|
223
|
-
</div>
|
|
153
|
+
<co-dialog id="sendOptionsDialog" [headerTemplate]="headerTemplate" [footerTemplate]="footerTemplate"
|
|
154
|
+
(closeClick)="closeClick.emit($event)">
|
|
155
|
+
<ng-template #headerTemplate>
|
|
156
|
+
<div class="co-dialog-header-title" [textContent]="headerTitle"></div>
|
|
157
|
+
</ng-template>
|
|
158
|
+
<div class="dialog-content-wrapper">
|
|
159
|
+
<div class="send-methods-wrapper">
|
|
160
|
+
<div class="send-button-wrapper" *ngFor="let sendMethod of sendMethods; let index = index"
|
|
161
|
+
[class.selected]="activeSendMethod ? sendMethod.code === activeSendMethod.code : index === 0"
|
|
162
|
+
(click)="handleSendMethodClick(sendMethod)">
|
|
163
|
+
<co-icon class="custom-button-icon" [iconData]="iconCacheService.getIcon(sendMethod.icon)"></co-icon>
|
|
164
|
+
<div class="custom-button-title" [textContent]="sendMethod.description"></div>
|
|
165
|
+
</div>
|
|
166
|
+
</div>
|
|
167
|
+
<div #navigationItems class="send-method-navigation-wrapper" [class.smooth-scrolling]="!startUp">
|
|
168
|
+
<div #faxItems class="send-method-navigation-content co-small-scrollbar">
|
|
224
169
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
170
|
+
</div>
|
|
171
|
+
<div #printItems class="send-method-navigation-content co-small-scrollbar" *ngIf="showPrint">
|
|
172
|
+
<co-send-method-printer
|
|
173
|
+
[layouts]="printLayouts"
|
|
174
|
+
></co-send-method-printer>
|
|
175
|
+
</div>
|
|
176
|
+
<div #emailItems class="send-method-navigation-content co-small-scrollbar" *ngIf="showEmail">
|
|
177
|
+
<co-send-method-email
|
|
178
|
+
[emailAddresses]="emailAddresses"
|
|
179
|
+
[layouts]="emailLayouts"
|
|
180
|
+
></co-send-method-email>
|
|
181
|
+
</div>
|
|
182
|
+
<div #ediItems class="send-method-navigation-content co-small-scrollbar" *ngIf="showEdi">
|
|
237
183
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
<co-icon class="arrow-icon" [iconData]="iconCacheService.getIcon(icons.ArrowFatRight)"></co-icon>
|
|
241
|
-
<span class="standard-printer-message" [textContent]="'Standaard printer voor lay-out instellen'"></span>
|
|
242
|
-
</div>
|
|
184
|
+
</div>
|
|
185
|
+
<div #emailTemplateItems class="send-method-navigation-content co-small-scrollbar" *ngIf="showEmailTemplate">
|
|
243
186
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
[(model)]="models[0]"
|
|
247
|
-
[label]="'Per gebruiker instellen'"
|
|
248
|
-
[cssClass]="'input-checkbox-wrapper'"
|
|
249
|
-
></co-input-checkbox>
|
|
250
|
-
<co-input-checkbox
|
|
251
|
-
[(model)]="models[1]"
|
|
252
|
-
[label]="'Voor alle gebruikers instellen'"
|
|
253
|
-
[cssClass]="'input-checkbox-wrapper'"
|
|
254
|
-
></co-input-checkbox>
|
|
255
|
-
</div>
|
|
256
|
-
</div>
|
|
187
|
+
</div>
|
|
188
|
+
<div #smsItems class="send-method-navigation-content co-small-scrollbar" *ngIf="showSms">
|
|
257
189
|
|
|
258
|
-
<div class="print-footer-wrapper">
|
|
259
|
-
<div class="input-number-wrapper">
|
|
260
|
-
<co-input-number-picker class="number-picker"
|
|
261
|
-
[step]="1" [(model)]="sendMethodParams.amount" [min]="1"
|
|
262
|
-
[ngModelOptions]="{debounce: 1}">
|
|
263
|
-
</co-input-number-picker>
|
|
264
|
-
</div>
|
|
265
|
-
<div class="custom-button-wrapper print-button" (click)="handlePrintClicked()">
|
|
266
|
-
<span [textContent]="'Print'"></span>
|
|
267
|
-
</div>
|
|
268
|
-
<div class="custom-button-wrapper signature-button" (click)="handleSignatureStart()">
|
|
269
|
-
<co-icon [iconData]="iconCacheService.getIcon(icons.SignatureField)"></co-icon>
|
|
270
|
-
</div>
|
|
271
|
-
</div>
|
|
272
|
-
</div>
|
|
273
190
|
</div>
|
|
191
|
+
<div #webServiceItems class="send-method-navigation-content co-small-scrollbar" *ngIf="showWebservice">
|
|
274
192
|
|
|
275
|
-
<div class="printer-content-container" @slideInOut *ngIf="showPrinterSelections">
|
|
276
|
-
<div class="selected-printer-wrapper selection clickable" *ngFor="let printers of printerList" (click)="onPrinterClicked(printers)">
|
|
277
|
-
<div class="printer-option-list-item">
|
|
278
|
-
<co-icon class="printer-icon" [iconData]="iconCacheService.getIcon(icons.PrintRegular)"></co-icon>
|
|
279
|
-
<div class="printer-details">
|
|
280
|
-
<span class="printer-name" [textContent]="printers.name"></span>
|
|
281
|
-
<span class="printer-status" [textContent]="printers.acceptingJobs"></span>
|
|
282
|
-
</div>
|
|
283
|
-
</div>
|
|
284
|
-
<co-icon class="select-printer-arrow" *ngIf="!showPrinterSelections"
|
|
285
|
-
[iconData]="iconCacheService.getIcon(icons.ArrowPointRight)"></co-icon>
|
|
286
|
-
</div>
|
|
287
193
|
</div>
|
|
288
194
|
</div>
|
|
289
|
-
</
|
|
290
|
-
|
|
195
|
+
</div>
|
|
196
|
+
<ng-template #footerTemplate>
|
|
197
|
+
<div class="co-dialog-footer-button-wrapper">
|
|
198
|
+
<co-button [label]="'Ok'" (click)="okClick.emit(activeSendMethod ? activeSendMethod.code : '0')"></co-button>
|
|
199
|
+
</div>
|
|
200
|
+
</ng-template>
|
|
201
|
+
</co-dialog>
|
|
291
202
|
`,
|
|
292
203
|
encapsulation: ViewEncapsulation.None,
|
|
293
204
|
animations: [
|
|
@@ -301,38 +212,38 @@ SendMethodDialogComponent.decorators = [
|
|
|
301
212
|
];
|
|
302
213
|
SendMethodDialogComponent.ctorParameters = () => [
|
|
303
214
|
{ type: IconCacheService },
|
|
304
|
-
{ type: StockService },
|
|
305
215
|
{ type: OptionsService },
|
|
306
216
|
{ type: DictionaryService },
|
|
307
|
-
{ type: ChangeDetectorRef }
|
|
217
|
+
{ type: ChangeDetectorRef },
|
|
218
|
+
{ type: SharedService },
|
|
219
|
+
{ type: SendMethodService }
|
|
308
220
|
];
|
|
309
221
|
SendMethodDialogComponent.propDecorators = {
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
emailAdresses: [{ type: Input }],
|
|
222
|
+
navigationItems: [{ type: ViewChild, args: ['navigationItems', { read: ElementRef },] }],
|
|
223
|
+
faxItems: [{ type: ViewChild, args: ['faxItems', { read: ElementRef },] }],
|
|
224
|
+
printItems: [{ type: ViewChild, args: ['printItems', { read: ElementRef },] }],
|
|
225
|
+
emailItems: [{ type: ViewChild, args: ['emailItems', { read: ElementRef },] }],
|
|
226
|
+
ediItems: [{ type: ViewChild, args: ['ediItems', { read: ElementRef },] }],
|
|
227
|
+
emailTemplateItems: [{ type: ViewChild, args: ['emailTemplateItems', { read: ElementRef },] }],
|
|
228
|
+
smsItems: [{ type: ViewChild, args: ['smsItems', { read: ElementRef },] }],
|
|
229
|
+
webServiceItems: [{ type: ViewChild, args: ['webServiceItems', { read: ElementRef },] }],
|
|
230
|
+
reportingDocumentPrintRequest: [{ type: Input }],
|
|
231
|
+
reportingDocumentEmailRequest: [{ type: Input }],
|
|
232
|
+
reportingDocumentPdfRequest: [{ type: Input }],
|
|
322
233
|
emailLayouts: [{ type: Input }],
|
|
323
234
|
printLayouts: [{ type: Input }],
|
|
235
|
+
headerTitle: [{ type: Input }],
|
|
236
|
+
emailAddresses: [{ type: Input }],
|
|
324
237
|
defaultSendMethod: [{ type: Input }],
|
|
325
|
-
|
|
238
|
+
visibleMethods: [{ type: Input }],
|
|
326
239
|
isDocSignEnabled: [{ type: Input }],
|
|
327
240
|
docSign: [{ type: Input }],
|
|
328
|
-
|
|
241
|
+
reportingDocumentPrintRequestChange: [{ type: Output }],
|
|
242
|
+
reportingDocumentEmailRequestChange: [{ type: Output }],
|
|
243
|
+
reportingDocumentPdfRequestChange: [{ type: Output }],
|
|
329
244
|
startSignatureClicked: [{ type: Output }],
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
showClass: [{ type: HostBinding, args: ["class.ione-send-method-dialog",] }],
|
|
334
|
-
printTemplatesClicked: [{ type: Output }],
|
|
335
|
-
defaultSendMethodClicked: [{ type: Output }],
|
|
336
|
-
printLayoutParams: [{ type: Output }]
|
|
245
|
+
closeClick: [{ type: Output }],
|
|
246
|
+
okClick: [{ type: Output }],
|
|
247
|
+
showClass: [{ type: HostBinding, args: ['class.co-send-method-dialog',] }]
|
|
337
248
|
};
|
|
338
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1tZXRob2QtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZGNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NlbmQtbWV0aG9kLWRpYWxvZy9zZW5kLW1ldGhvZC1kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUUvRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFJekQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRW5FLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBc0ozRixNQUFNLE9BQU8seUJBQXlCO0lBeUlwQyxZQUNTLGdCQUFrQyxFQUNsQyxZQUEwQixFQUN6QixlQUErQixFQUMvQixXQUE4QixFQUM5QixlQUFrQztRQUpuQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ3pCLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMv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QkFBaUI7WUFsQnZCLGlCQUFpQjs7OzhCQThLaEIsS0FBSzs4QkFHTCxLQUFLOzRCQUdMLEtBQUs7NEJBR0wsS0FBSztxQ0FHTCxLQUFLO2dDQUdMLEtBQUs7OEJBR0wsS0FBSzt5QkFnQ0wsS0FBSzswQkFHTCxLQUFLOzBCQUdMLEtBQUs7eUJBR0wsS0FBSzs0QkFHTCxLQUFLOzJCQUdMLEtBQUs7MkJBR0wsS0FBSztnQ0FHTCxLQUFLO21DQUdMLEtBQUs7K0JBR0wsS0FBSztzQkFHTCxLQUFLOzBCQUdMLEtBQUs7b0NBUUwsTUFBTTsrQkFHTixNQUFNO2lDQUdOLE1BQU07aUNBR04sTUFBTTt3QkFHTixXQUFXLFNBQUMsK0JBQStCO29DQUszQyxNQUFNO3VDQUdOLE1BQU07Z0NBR04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtJY29ufSBmcm9tIFwiLi4vLi4vZW51bS9pY29uLmVudW1cIjtcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtTZW5kT3B0aW9ufSBmcm9tIFwiLi9lbnVtcy9zZW5kLW9wdGlvblwiO1xyXG5pbXBvcnQge2FuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcclxuaW1wb3J0IHtQcmludGVyfSBmcm9tIFwiQGNvbGlqbml0L3NoYXJlZGFwaS9idWlsZC9tb2RlbC9yZXBvcnQvcHJpbnRlci5ib1wiO1xyXG5pbXBvcnQge1N0b2NrU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2Uvc3RvY2suc2VydmljZVwiO1xyXG5pbXBvcnQge1N0b2NrU3RpY2tlcnNQcmludExheW91dHN9IGZyb20gXCJAY29saWpuaXQvc2hhcmVkYXBpL2J1aWxkL21vZGVsL3JlcG9ydC9zdG9jay1zdGlja2Vycy1wcmludC1sYXlvdXRzLmJvXCI7XHJcbmltcG9ydCB7Q29Ecm9wRG93bkxpc3RGaWVsZHN9IGZyb20gXCIuLi9zdG9jay9zdG9jay10cmFuc2Zlci9jby1kcm9wLWRvd24tbGlzdC1maWVsZHMuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge09wdGlvbnNTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9vcHRpb25zLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtEaWN0aW9uYXJ5U2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvZGljdGlvbmFyeS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7U3RvY2tTdGlja2Vyc0VtYWlsTGF5b3V0c30gZnJvbSBcIkBjb2xpam5pdC9zaGFyZWRhcGkvYnVpbGQvbW9kZWwvcmVwb3J0L3N0b2NrLXN0aWNrZXJzLWVtYWlsLWxheW91dHMuYm9cIjtcclxuaW1wb3J0IHtQcmludFByaWNlU3RpY2tlcnN9IGZyb20gXCJAY29saWpuaXQvc2hhcmVkYXBpL2J1aWxkL21vZGVsL3ByaW50LXByaWNlLXN0aWNrZXJzLmJvXCI7XHJcbmltcG9ydCB7U2VuZE1ldGhvZFBhcmFtc30gZnJvbSBcIi4vc2VuZC1tZXRob2QtcGFyYW1zLmludGVyZmFjZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaW9uZS1zZW5kLW1ldGhvZC1kaWFsb2dcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cInNlbmQtbWV0aG9kLWRpYWxvZy13cmFwcGVyXCI+XHJcbiAgICAgIDxjby1kaWFsb2cgaWQ9XCJzZW5kT3B0aW9uc0RpYWxvZ1wiIFtoZWFkZXJUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiICpuZ0lmPVwic2hvd0RpYWxvZ1wiIFtzaG93Q2xvc2VJY29uXT1cInNob3dFeGl0QnV0dG9uXCIgKGNsb3NlQ2xpY2spPVwiY2xvc2VEaWFsb2dDbGljaygpXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXJUZW1wbGF0ZT5cclxuICAgICAgICAgIDxoMiBbdGV4dENvbnRlbnRdPVwiaGVhZGVyVGl0bGVcIj48L2gyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1jb250ZW50LXdyYXBwZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnQtY29udGFpbmVyXCIgKm5nSWY9XCIhc2hvd1ByaW50ZXJTZWxlY3Rpb25zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZW5kLW9wdGlvbnMtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tYnV0dG9uLXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlbmRPcHRpb24gb2Ygc2VuZE9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkLW9wdGlvbl09XCJzZW5kT3B0aW9uLm9wdGlvbiA9PT0gYWN0aXZlU2VuZE9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlU2VuZE9wdGlvbiA9IHNlbmRPcHRpb24ub3B0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8Y28taWNvbiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKHNlbmRPcHRpb24uaWNvbk5hbWUpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbWFpbC1vcHRpb24tY29udGVudFwiICpuZ0lmPVwiYWN0aXZlU2VuZE9wdGlvbiA9PT0gc2VuZE9wdGlvbi5FbWFpbCB8fCBhY3RpdmVTZW5kT3B0aW9uID09PSBzZW5kT3B0aW9uLlBkZlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbWFpbHMtY29udGFpbmVyXCIgKm5nSWY9XCJhY3RpdmVTZW5kT3B0aW9uID09PSBzZW5kT3B0aW9uLkVtYWlsXCI+XHJcbiAgICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGVtYWlsIG9mIGVtYWlsQWRyZXNzZXNcIlxyXG4gICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJlbWFpbC5uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImVtYWlsXCJcclxuICAgICAgICAgICAgICAgICAgW2Nzc0NsYXNzXT1cIidpbnB1dC1jaGVja2JveC13cmFwcGVyJ1wiXHJcbiAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvdi13cmFwcGVyXCIgKGNsaWNrKT1cImdldERlZmF1bHRFbWFpbExheW91dHMoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LWNvbWJvLWJveFxyXG4gICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZW5kTWV0aG9kUGFyYW1zLnJlcG9ydElkXCJcclxuICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwiZW1haWxMYXlvdXRzXCJcclxuICAgICAgICAgICAgICAgICAgW2ZpZWxkc109XCJlbWFpbExheW91dEZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJMYXlvdXRcIlxyXG4gICAgICAgICAgICAgICAgPjwvY28taW5wdXQtY29tYm8tYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNEb2NTaWduRW5hYmxlZFwiIGNsYXNzPVwic2lnbmF0dXJlLWJ1dHRvbi13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWJ1dHRvbi13cmFwcGVyIHNpZ25hdHVyZS1idXR0b25cIiAoY2xpY2spPVwiaGFuZGxlU2lnbmF0dXJlU3RhcnQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taWNvbiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLlNpZ25hdHVyZUZpZWxkKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1idXR0b24td3JhcHBlciBzZW5kLWJ1dHRvblwiIChjbGljayk9XCJzZW5kRW1haWwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taWNvbiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkVtYWlsKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8aW9uZS1kb2NzaWduICpuZ0lmPVwiZG9jU2lnblwiPjwvaW9uZS1kb2NzaWduPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbWFpbC1vcHRpb24tY29udGVudFwiICpuZ0lmPVwiYWN0aXZlU2VuZE9wdGlvbiA9PT0gc2VuZE9wdGlvbi5QcmludFwiIChjbGljayk9XCJnZXRQcmludFRlbXBsYXRlcygpXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dQcmludFByaWNlU3RpY2tlcnNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb3Ytd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taW5wdXQtY29tYm8tYm94XHJcbiAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VuZE1ldGhvZFBhcmFtcy5yZXBvcnRJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwicHJpbnRMYXlvdXRzXCJcclxuICAgICAgICAgICAgICAgICAgICBbZmllbGRzXT1cInByaW50VGVtcGxhdGVzRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTGF5b3V0XCJcclxuICAgICAgICAgICAgICAgICAgPjwvY28taW5wdXQtY29tYm8tYm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG92LXdyYXBwZXJcIiAqbmdJZj1cInByaWNlTGlzdENvZGVEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1jb21iby1ib3hcclxuICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZW5kTWV0aG9kUGFyYW1zLnByaWNlTGlzdENvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cInByaWNlTGlzdENvZGVEYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICBbZmllbGRzXT1cInByaWNlTGlzdERhdGFGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJMYXlvdXRcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC1jb21iby1ib3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvdi13cmFwcGVyIGNsaWNrYWJsZVwiIChjbGljayk9XCJ0b2dnbGVQcmludGVyU2VsZWN0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1wcmludGVyLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaW50ZXItb3B0aW9uLWxpc3QtaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwicHJpbnRlci1pY29uXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5QcmludFJlZ3VsYXIpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmludGVyLWRldGFpbHNcIiAqbmdJZj1cInByaW50ZXJMaXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByaW50ZXItbmFtZVwiIFt0ZXh0Q29udGVudF09XCJkZWZhdWx0UHJpbnRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJpbnRlci1zdGF0dXNcIiBbdGV4dENvbnRlbnRdPVwiZGVmYXVsdFByaW50ZXIuYWNjZXB0aW5nSm9ic1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwic2VsZWN0LXByaW50ZXItYXJyb3dcIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkFycm93UG9pbnRSaWdodClcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YW5kYXJkLXByaW50ZXItd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YW5kYXJkLXByaW50ZXItbGlua1wiIChjbGljayk9XCJzaG93U3RhbmRhcmRQcmludGVyT3B0aW9ucyA9ICFzaG93U3RhbmRhcmRQcmludGVyT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cImFycm93LWljb25cIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkFycm93RmF0UmlnaHQpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YW5kYXJkLXByaW50ZXItbWVzc2FnZVwiIFt0ZXh0Q29udGVudF09XCInU3RhbmRhYXJkIHByaW50ZXIgdm9vciBsYXktb3V0IGluc3RlbGxlbidcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhbmRhcmQtcHJpbnRlci1zZWxlY3Rpb25zXCIgKm5nSWY9XCJzaG93U3RhbmRhcmRQcmludGVyT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJtb2RlbHNbMF1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInUGVyIGdlYnJ1aWtlciBpbnN0ZWxsZW4nXCJcclxuICAgICAgICAgICAgICAgICAgICBbY3NzQ2xhc3NdPVwiJ2lucHV0LWNoZWNrYm94LXdyYXBwZXInXCJcclxuICAgICAgICAgICAgICAgICAgPjwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cIm1vZGVsc1sxXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidWb29yIGFsbGUgZ2VicnVpa2VycyBpbnN0ZWxsZW4nXCJcclxuICAgICAgICAgICAgICAgICAgICBbY3NzQ2xhc3NdPVwiJ2lucHV0LWNoZWNrYm94LXdyYXBwZXInXCJcclxuICAgICAgICAgICAgICAgICAgPjwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaW50LWZvb3Rlci13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LW51bWJlci1waWNrZXIgY2xhc3M9XCJudW1iZXItcGlja2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0ZXBdPVwiMVwiIFsobW9kZWwpXT1cInNlbmRNZXRob2RQYXJhbXMuYW1vdW50XCIgW21pbl09XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntkZWJvdW5jZTogMX1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9jby1pbnB1dC1udW1iZXItcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWJ1dHRvbi13cmFwcGVyIHByaW50LWJ1dHRvblwiIChjbGljayk9XCJoYW5kbGVQcmludENsaWNrZWQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwiJ1ByaW50J1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1idXR0b24td3JhcHBlciBzaWduYXR1cmUtYnV0dG9uXCIgKGNsaWNrKT1cImhhbmRsZVNpZ25hdHVyZVN0YXJ0KClcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5TaWduYXR1cmVGaWVsZClcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpbnRlci1jb250ZW50LWNvbnRhaW5lclwiIEBzbGlkZUluT3V0ICpuZ0lmPVwic2hvd1ByaW50ZXJTZWxlY3Rpb25zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1wcmludGVyLXdyYXBwZXIgc2VsZWN0aW9uIGNsaWNrYWJsZVwiICpuZ0Zvcj1cImxldCBwcmludGVycyBvZiBwcmludGVyTGlzdFwiIChjbGljayk9XCJvblByaW50ZXJDbGlja2VkKHByaW50ZXJzKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmludGVyLW9wdGlvbi1saXN0LWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwicHJpbnRlci1pY29uXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5QcmludFJlZ3VsYXIpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaW50ZXItZGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByaW50ZXItbmFtZVwiIFt0ZXh0Q29udGVudF09XCJwcmludGVycy5uYW1lXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByaW50ZXItc3RhdHVzXCIgW3RleHRDb250ZW50XT1cInByaW50ZXJzLmFjY2VwdGluZ0pvYnNcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cInNlbGVjdC1wcmludGVyLWFycm93XCIgKm5nSWY9XCIhc2hvd1ByaW50ZXJTZWxlY3Rpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkFycm93UG9pbnRSaWdodClcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvY28tZGlhbG9nPlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ3NsaWRlSW5PdXQnLCBbXHJcbiAgICAgIHN0YXRlKCcqJywgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCUpJywgd2lkdGg6ICcxMDAlJywgb3BhY2l0eTogJzEnfSkpLFxyXG4gICAgICBzdGF0ZSgndm9pZCcsIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDE1MCUpJywgb3BhY2l0eTogJzAnfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBhbmltYXRlKDI1MCkpXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBTZW5kTWV0aG9kRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG4gIHB1YmxpYyByZWFkb25seSBzZW5kT3B0aW9uOiB0eXBlb2YgU2VuZE9wdGlvbiA9IFNlbmRPcHRpb247XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dFbWFpbE9wdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dQcmludE9wdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dQZGZPcHRpb246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93WG1sT3B0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd1ByaW50UHJpY2VTdGlja2VyczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHByaWNlTGlzdENvZGVEYXRhOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgc2VuZE9wdGlvbnM6IHtvcHRpb246IFNlbmRPcHRpb24sIGljb25OYW1lOiBJY29ufVtdID0gW1xyXG4gICAgeyBvcHRpb246IFNlbmRPcHRpb24uRW1haWwsXHJcbiAgICAgIGljb25OYW1lOiB0aGlzLmljb25zLkVudmVsb3BlUmVndWxhcixcclxuICAgIH0sXHJcbiAgICB7IG9wdGlvbjogU2VuZE9wdGlvbi5QcmludCxcclxuICAgICAgaWNvbk5hbWU6IHRoaXMuaWNvbnMuUHJpbnRSZWd1bGFyLFxyXG4gICAgfSxcclxuICAgIHsgb3B0aW9uOiBTZW5kT3B0aW9uLlBkZixcclxuICAgICAgaWNvbk5hbWU6IHRoaXMuaWNvbnMuRmlsZVBkZlJlZ3VsYXIsXHJcbiAgICB9LFxyXG4gICAgeyBvcHRpb246IFNlbmRPcHRpb24uWG1sLFxyXG4gICAgICBpY29uTmFtZTogdGhpcy5pY29ucy5GaWxlUGRmUmVndWxhcixcclxuICAgIH1cclxuICBdXHJcblxyXG4gIHB1YmxpYyBhY3RpdmVTZW5kT3B0aW9uOiBTZW5kT3B0aW9uID0gU2VuZE9wdGlvbi5FbWFpbDtcclxuICBwdWJsaWMgc2hvd1N0YW5kYXJkUHJpbnRlck9wdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1ByaW50ZXJTZWxlY3Rpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dFeGl0QnV0dG9uID0gdHJ1ZTtcclxuICBwdWJsaWMgZGVmYXVsdFByaW50ZXI6IFByaW50ZXI7XHJcbiAgcHVibGljIHByaW50VGVtcGxhdGVzOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBwcmludFRlbXBsYXRlc0ZpZWxkOiBDb0Ryb3BEb3duTGlzdEZpZWxkcyA9IHt0ZXh0OiBcIm5hbWVcIiwgdmFsdWU6IFwicmVwb3J0SWRcIn07XHJcbiAgcHVibGljIGVtYWlsTGF5b3V0RmllbGQ6IENvRHJvcERvd25MaXN0RmllbGRzID0ge3RleHQ6IFwibmFtZVwiLCB2YWx1ZTogXCJyZXBvcnRJZFwifTtcclxuICBwdWJsaWMgcHJpY2VMaXN0RGF0YUZpZWxkOiBDb0Ryb3BEb3duTGlzdEZpZWxkcyA9IHt0ZXh0OiBcIm5hbWVcIiwgdmFsdWU6IFwicHJpY2VMaXN0Q29kZVwifTtcclxuICBwdWJsaWMgdXBBbmRMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgbW9kZWxzOiBib29sZWFuW10gPSBbZmFsc2UsIGZhbHNlLCB0cnVlXTtcclxuXHJcbiAgcHVibGljIHNlbGVjdGVkTGF5b3V0OiAnTGF5b3V0IDEnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93RGlhbG9nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGhlYWRlclRpdGxlOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHByaW50ZXJMaXN0OiBQcmludGVyW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlbGF0aW9uSWQ6IG51bWJlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZW1haWxBZHJlc3NlczogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZW1haWxMYXlvdXRzOiBhbnlbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcHJpbnRMYXlvdXRzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWZhdWx0U2VuZE1ldGhvZDogYW55O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWZhdWx0RW1haWxBZHJlc3NlczogYW55O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpc0RvY1NpZ25FbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRvY1NpZ246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGFydGljbGVEYXRhKGRhdGE6IGFueSkge1xyXG4gICAgaWYgKCEodGhpcy5wcmludExheW91dFBhcmFtcyBpbnN0YW5jZW9mIFByaW50UHJpY2VTdGlja2VycykpIHtcclxuICAgICAgdGhpcy5zZW5kTWV0aG9kUGFyYW1zLmdvb2RJZCA9IGRhdGEuZ29vZElkO1xyXG4gICAgICB0aGlzLnNlbmRNZXRob2RQYXJhbXMud2FyZWhvdXNlID0gZGF0YS53YXJlaG91c2VObztcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgc3RhcnRTaWduYXR1cmVDbGlja2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgc2VuZEVtYWlsQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHByaW50QnV0dG9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGVtYWlsTGF5b3V0Q2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaW9uZS1zZW5kLW1ldGhvZC1kaWFsb2dcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcHJpbnRUZW1wbGF0ZXNDbGlja2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZGVmYXVsdFNlbmRNZXRob2RDbGlja2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcHJpbnRMYXlvdXRQYXJhbXM6IEV2ZW50RW1pdHRlcjxTZW5kTWV0aG9kUGFyYW1zPiA9IG5ldyBFdmVudEVtaXR0ZXI8U2VuZE1ldGhvZFBhcmFtcz4oKTtcclxuXHJcbiAgcHVibGljIHNlbmRNZXRob2RQYXJhbXM6IFNlbmRNZXRob2RQYXJhbXMgPSBuZXcgY2xhc3MgaW1wbGVtZW50cyBTZW5kTWV0aG9kUGFyYW1zIHtcclxuICAgIGFtb3VudDogbnVtYmVyO1xyXG4gICAgYmF0Y2g6IHN0cmluZztcclxuICAgIGdvb2RJZDogbnVtYmVyO1xyXG4gICAgZ29vZElkczogbnVtYmVyW107XHJcbiAgICBsb2NhdGlvbjogc3RyaW5nO1xyXG4gICAgcHJpY2VMaXN0Q29kZTogc3RyaW5nO1xyXG4gICAgcHJpbnRlck5hbWU6IHN0cmluZztcclxuICAgIHJlcG9ydElkOiBudW1iZXI7XHJcbiAgICBzZXJpYWw6IHN0cmluZztcclxuICAgIHdhcmVob3VzZTogbnVtYmVyO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGljb25DYWNoZVNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgc3RvY2tTZXJ2aWNlOiBTdG9ja1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9vcHRpb25zU2VydmljZTogT3B0aW9uc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kaWN0aW9uYXJ5OiBEaWN0aW9uYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICApIHtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5fb3B0aW9uc1NlcnZpY2Uub3B0aW9uc0xvYWRlZC5zdWJzY3JpYmUobG9hZGVkID0+IHRoaXMuX2hhbmRsZVNldHRpbmdzTG9hZGVkKGxvYWRlZCkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmdldERlZmF1bHRTZW5kTWV0aG9kKCk7XHJcbiAgICB0aGlzLmdldERlZmF1bHRFbWFpbExheW91dHMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0UHJpbnRlcnMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9ja1NlcnZpY2UuZ2V0QWxsUHJpbnRlcnModHJ1ZSkudGhlbigobGlzdCkgPT4ge1xyXG4gICAgICB0aGlzLnByaW50ZXJMaXN0ID0gbGlzdDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlRGlhbG9nQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dEaWFsb2cgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTaWduYXR1cmVTdGFydCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZG9jU2lnbiA9ICF0aGlzLmRvY1NpZ247XHJcbiAgICB0aGlzLnN0YXJ0U2lnbmF0dXJlQ2xpY2tlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VuZEVtYWlsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZW5kRW1haWxDbGlja2VkLmVtaXQoKTtcclxuICAgIHRoaXMucHJpbnRMYXlvdXRQYXJhbXMuZW1pdCh0aGlzLnNlbmRNZXRob2RQYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVByaW50Q2xpY2tlZCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbmRNZXRob2RQYXJhbXMucHJpbnRlck5hbWUpIHtcclxuICAgICAgdGhpcy5wcmludEJ1dHRvbkNsaWNrZWQuZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZVByaW50ZXJTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldFByaW50ZXJzKCk7XHJcbiAgICBpZiAoIXRoaXMuc2hvd1ByaW50ZXJTZWxlY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuc2hvd1ByaW50ZXJTZWxlY3Rpb25zID0gdHJ1ZTtcclxuICAgICAgdGhpcy5oZWFkZXJUaXRsZSA9ICdQcmludGVyIHNlbGVjdGllJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvd1ByaW50ZXJTZWxlY3Rpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaGVhZGVyVGl0bGUgPSAnVmVyemVuZG9wdGllcyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25QcmludGVyQ2xpY2tlZChwcmludGVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlZmF1bHRQcmludGVyID0gcHJpbnRlci5uYW1lO1xyXG4gICAgdGhpcy5zZW5kTWV0aG9kUGFyYW1zLnByaW50ZXJOYW1lID0gcHJpbnRlci5uYW1lO1xyXG4gICAgdGhpcy5zaG93UHJpbnRlclNlbGVjdGlvbnMgPSEgdGhpcy5zaG93UHJpbnRlclNlbGVjdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UHJpbnRUZW1wbGF0ZXMoKTogYW55IHtcclxuICAgIHRoaXMucHJpbnRUZW1wbGF0ZXNDbGlja2VkLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXREZWZhdWx0U2VuZE1ldGhvZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVmYXVsdFNlbmRNZXRob2RDbGlja2VkLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZWZhdWx0RW1haWxMYXlvdXRzKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5lbWFpbExheW91dENsaWNrZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlU2V0dGluZ3NMb2FkZWQobG9hZGVkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAobG9hZGVkKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX2luaXRDb25uZWN0aW9uKCkudGhlbigpO1xyXG4gICAgICB0aGlzLnVwQW5kTG9hZGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2luaXRDb25uZWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gYXdhaXQgdGhpcy5fY29ubmVjdG9yLmNvbm5lY3QodGhpcy5fb3B0aW9uc1NlcnZpY2Uub3B0aW9ucyk7XHJcblxyXG4gICAgaWYgKHRoaXMuX29wdGlvbnNTZXJ2aWNlLm9wdGlvbnMudXJsKSB7XHJcbiAgICAgIHRoaXMuX2RpY3Rpb25hcnkucm9vdFVybCA9IHRoaXMuX29wdGlvbnNTZXJ2aWNlLm9wdGlvbnMudXJsLnJlcGxhY2UoXCIvYWpheHNlcnZpY2VcIiwgXCJcIik7XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLl9kaWN0aW9uYXJ5LnNldERpY3Rpb25hcnkodGhpcy5fb3B0aW9uc1NlcnZpY2Uub3B0aW9ucy5sYW5ndWFnZUNvZGUpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1tZXRob2QtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZGNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NlbmQtbWV0aG9kLWRpYWxvZy9zZW5kLW1ldGhvZC1kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFL0UsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQU0zRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBRWxGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFpQjtJQUMvQyxJQUFJLFVBQVUsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzVELElBQUksVUFBVSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDOUQsSUFBSSxVQUFVLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUMzRCxJQUFJLFVBQVUsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQy9ELElBQUksVUFBVSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNwRixJQUFJLFVBQVUsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQy9ELElBQUksVUFBVSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7Q0FDM0UsQ0FBQTtBQWlFRCxNQUFNLE9BQU8seUJBQXlCO0lBcUdwQyxZQUNTLGdCQUFrQyxFQUNqQyxlQUErQixFQUMvQixXQUE4QixFQUM5QixlQUFrQyxFQUNsQyxjQUE2QixFQUM3QixrQkFBcUM7UUFMdEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNqQyxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQzlCLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUNsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBMUcvQixVQUFLLEdBQWdCLElBQUksQ0FBQztRQW9DbkMsaUJBQVksR0FBaUMsRUFBRSxDQUFDO1FBR2hELGlCQUFZLEdBQWlDLEVBQUUsQ0FBQztRQVNoRCxtQkFBYyxHQUFhLEVBQUUsQ0FBQztRQU05QixtQkFBYyxHQUFnQyxFQUFFLENBQUM7UUFHakQscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBR2xDLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFHekIsd0NBQW1DLEdBQW9ELElBQUksWUFBWSxFQUFxQyxDQUFDO1FBRzdJLHdDQUFtQyxHQUFvRCxJQUFJLFlBQVksRUFBcUMsQ0FBQztRQUc3SSxzQ0FBaUMsR0FBa0QsSUFBSSxZQUFZLEVBQW1DLENBQUM7UUFHdkksMEJBQXFCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFHbkUsZUFBVSxHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO1FBR3RFLFlBQU8sR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU8zRCxnQkFBVyxHQUFHLG1CQUFtQixDQUFDO1FBRWxDLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFFeEIsWUFBTyxHQUFZLElBQUksQ0FBQztRQUN4QixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFDMUIsWUFBTyxHQUFZLElBQUksQ0FBQztRQUN4QixZQUFPLEdBQVksSUFBSSxDQUFDO1FBQ3hCLHNCQUFpQixHQUFZLElBQUksQ0FBQztRQUNsQyxtQkFBYyxHQUFZLElBQUksQ0FBQztRQUU5QixtQkFBYyxHQUFtQixFQUFFLENBQUM7UUFVMUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUMxRixJQUFJLENBQUMsa0JBQWtCLENBQUMsd0NBQXdDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBd0MsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUM5SyxJQUFJLENBQUMsa0JBQWtCLENBQUMsd0NBQXdDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBd0MsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUM5SyxJQUFJLENBQUMsa0JBQWtCLENBQUMsc0NBQXNDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBc0MsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN6SyxDQUFBO0lBQ0gsQ0FBQztJQWpDTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBaUNELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyw2QkFBNkIsRUFBRTtZQUN0QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUNBQWlDLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDO1NBQ2hHO1FBQ0QsSUFBSSxJQUFJLENBQUMsNkJBQTZCLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlDQUFpQyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQztTQUNoRztRQUNELElBQUksSUFBSSxDQUFDLDJCQUEyQixFQUFFO1lBQ3BDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywrQkFBK0IsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUM7U0FDNUY7UUFDRCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVNLG9CQUFvQjtRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM3QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVNLHFCQUFxQixDQUFDLFVBQXNCO1FBQ2pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUM7UUFDbkMsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMxRCxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztTQUN4STthQUFNLElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDckUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUM7U0FDMUk7YUFBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3JFLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO1NBQzFJO2FBQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqRSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztTQUN4STthQUFNLElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUNyRixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO1NBQ2xKO2FBQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqRSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztTQUN4STthQUFNLElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDL0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUM7U0FDL0k7SUFDSCxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLE1BQU0sVUFBVSxHQUFlLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMvRixJQUFJLFVBQVUsRUFBRTtnQkFDZCxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3ZCLENBQUMsQ0FBQyxDQUFDO2FBQ0o7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ2xHO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsQ0FBQztRQUN6RixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssU0FBUyxDQUFDO1FBQzdGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxTQUFTLENBQUM7UUFDN0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsQ0FBQztRQUN6RixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxTQUFTLENBQUM7UUFDN0csSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsQ0FBQztRQUN6RixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssU0FBUyxDQUFDO0lBQ3pHLENBQUM7SUFFYSxxQkFBcUIsQ0FBQyxNQUFlOztZQUNqRCxJQUFJLE1BQU0sRUFBRTtnQkFDVixNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDekI7UUFDSCxDQUFDO0tBQUE7SUFFYSxlQUFlOztZQUMzQiwrREFBK0Q7WUFFL0QsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ3pGO1lBQ0QsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNoRixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQUE7OztZQTFRRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtEVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsVUFBVSxFQUFFO29CQUNWLE9BQU8sQ0FBQyxZQUFZLEVBQUU7d0JBQ3BCLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7d0JBQzdFLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO3dCQUNuRSxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDdEMsQ0FBQztpQkFDSDthQUNGOzs7WUF0Rk8sZ0JBQWdCO1lBR2hCLGNBQWM7WUFDZCxpQkFBaUI7WUFqQnZCLGlCQUFpQjtZQWtCWCxhQUFhO1lBTWIsaUJBQWlCOzs7OEJBZ0Z0QixTQUFTLFNBQUMsaUJBQWlCLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDO3VCQUcvQyxTQUFTLFNBQUMsVUFBVSxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQzt5QkFHeEMsU0FBUyxTQUFDLFlBQVksRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUM7eUJBRzFDLFNBQVMsU0FBQyxZQUFZLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDO3VCQUcxQyxTQUFTLFNBQUMsVUFBVSxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQztpQ0FHeEMsU0FBUyxTQUFDLG9CQUFvQixFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQzt1QkFHbEQsU0FBUyxTQUFDLFVBQVUsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUM7OEJBR3hDLFNBQVMsU0FBQyxpQkFBaUIsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUM7NENBRy9DLEtBQUs7NENBR0wsS0FBSzswQ0FHTCxLQUFLOzJCQUdMLEtBQUs7MkJBR0wsS0FBSzswQkFNTCxLQUFLOzZCQUdMLEtBQUs7Z0NBR0wsS0FBSzs2QkFHTCxLQUFLOytCQUdMLEtBQUs7c0JBR0wsS0FBSztrREFHTCxNQUFNO2tEQUdOLE1BQU07Z0RBR04sTUFBTTtvQ0FHTixNQUFNO3lCQUdOLE1BQU07c0JBR04sTUFBTTt3QkFHTixXQUFXLFNBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7T3B0aW9uc1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2Uvb3B0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHtEaWN0aW9uYXJ5U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9kaWN0aW9uYXJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQge1NoYXJlZFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2Uvc2hhcmVkLnNlcnZpY2UnO1xyXG5pbXBvcnQge1JlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnQtbGF5b3V0LXNlbGVjdGlvbi1lbWFpbC5ibyc7XHJcbmltcG9ydCB7UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnR9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydC1sYXlvdXQtc2VsZWN0aW9uLXByaW50LmJvJztcclxuaW1wb3J0IHtSZXBvcnRpbmdEb2N1bWVudFByaW50QmFzZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydGluZy1kb2N1bWVudC1wcmludC1iYXNlLXJlcXVlc3QnO1xyXG5pbXBvcnQge1JlcG9ydGluZ0RvY3VtZW50RW1haWxCYXNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0aW5nLWRvY3VtZW50LWVtYWlsLWJhc2UtcmVxdWVzdCc7XHJcbmltcG9ydCB7UmVwb3J0aW5nRG9jdW1lbnRQZGZCYXNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0aW5nLWRvY3VtZW50LXBkZi1iYXNlLXJlcXVlc3QnO1xyXG5pbXBvcnQge1NlbmRNZXRob2RTZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2Uvc2VuZC1tZXRob2Quc2VydmljZSc7XHJcbmltcG9ydCB7U2VuZE1ldGhvZH0gZnJvbSAnLi4vLi4vbW9kZWwvc2VuZC1tZXRob2QnO1xyXG5pbXBvcnQge1NlbmRNZXRob2RUeXBlfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL3NlbmQtbWV0aG9kLXR5cGUuZW51bSc7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VuZE1ldGhvZHNXaXRoSWNvbjogU2VuZE1ldGhvZFtdID0gW1xyXG4gIG5ldyBTZW5kTWV0aG9kKFNlbmRNZXRob2RUeXBlLkZheCwgXCJGYXhcIiwgSWNvbi5QcmludFJlZ3VsYXIpLFxyXG4gIG5ldyBTZW5kTWV0aG9kKFNlbmRNZXRob2RUeXBlLlByaW50LCBcIlByaW50XCIsIEljb24uUHJpbnRTb2xpZCksXHJcbiAgbmV3IFNlbmRNZXRob2QoU2VuZE1ldGhvZFR5cGUuRW1haWwsIFwiRW1haWxcIiwgSWNvbi5BdFNvbGlkKSxcclxuICBuZXcgU2VuZE1ldGhvZChTZW5kTWV0aG9kVHlwZS5FZGksIFwiRWRpXCIsIEljb24uRmlsZUV4cG9ydFNvbGlkKSxcclxuICBuZXcgU2VuZE1ldGhvZChTZW5kTWV0aG9kVHlwZS5FbWFpbFRlbXBsYXRlLCBcIkVtYWlsIHRlbXBsYXRlXCIsIEljb24uRW52ZWxvcGVSZWd1bGFyKSxcclxuICBuZXcgU2VuZE1ldGhvZChTZW5kTWV0aG9kVHlwZS5TbXMsIFwiU21zXCIsIEljb24uTWVzc2FnZVNtc1NvbGlkKSxcclxuICBuZXcgU2VuZE1ldGhvZChTZW5kTWV0aG9kVHlwZS5XZWJTZXJ2aWNlLCBcIldlYnNlcnZpY2VcIiwgSWNvbi5QcmludFJlZ3VsYXIpXHJcbl1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tc2VuZC1tZXRob2QtZGlhbG9nJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGNvLWRpYWxvZyBpZD1cInNlbmRPcHRpb25zRGlhbG9nXCIgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclRlbXBsYXRlXCIgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgKGNsb3NlQ2xpY2spPVwiY2xvc2VDbGljay5lbWl0KCRldmVudClcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXJUZW1wbGF0ZT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZGlhbG9nLWhlYWRlci10aXRsZVwiIFt0ZXh0Q29udGVudF09XCJoZWFkZXJUaXRsZVwiPjwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWNvbnRlbnQtd3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZW5kLW1ldGhvZHMtd3JhcHBlclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlbmQtYnV0dG9uLXdyYXBwZXJcIiAqbmdGb3I9XCJsZXQgc2VuZE1ldGhvZCBvZiBzZW5kTWV0aG9kczsgbGV0IGluZGV4ID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiYWN0aXZlU2VuZE1ldGhvZCA/IHNlbmRNZXRob2QuY29kZSA9PT0gYWN0aXZlU2VuZE1ldGhvZC5jb2RlIDogaW5kZXggPT09IDBcIlxyXG4gICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlU2VuZE1ldGhvZENsaWNrKHNlbmRNZXRob2QpXCI+XHJcbiAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwiY3VzdG9tLWJ1dHRvbi1pY29uXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihzZW5kTWV0aG9kLmljb24pXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWJ1dHRvbi10aXRsZVwiIFt0ZXh0Q29udGVudF09XCJzZW5kTWV0aG9kLmRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICNuYXZpZ2F0aW9uSXRlbXMgY2xhc3M9XCJzZW5kLW1ldGhvZC1uYXZpZ2F0aW9uLXdyYXBwZXJcIiBbY2xhc3Muc21vb3RoLXNjcm9sbGluZ109XCIhc3RhcnRVcFwiPlxyXG4gICAgICAgICAgPGRpdiAjZmF4SXRlbXMgY2xhc3M9XCJzZW5kLW1ldGhvZC1uYXZpZ2F0aW9uLWNvbnRlbnQgY28tc21hbGwtc2Nyb2xsYmFyXCI+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICNwcmludEl0ZW1zIGNsYXNzPVwic2VuZC1tZXRob2QtbmF2aWdhdGlvbi1jb250ZW50IGNvLXNtYWxsLXNjcm9sbGJhclwiICpuZ0lmPVwic2hvd1ByaW50XCI+XHJcbiAgICAgICAgICAgIDxjby1zZW5kLW1ldGhvZC1wcmludGVyXHJcbiAgICAgICAgICAgICAgW2xheW91dHNdPVwicHJpbnRMYXlvdXRzXCJcclxuICAgICAgICAgICAgPjwvY28tc2VuZC1tZXRob2QtcHJpbnRlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAjZW1haWxJdGVtcyBjbGFzcz1cInNlbmQtbWV0aG9kLW5hdmlnYXRpb24tY29udGVudCBjby1zbWFsbC1zY3JvbGxiYXJcIiAqbmdJZj1cInNob3dFbWFpbFwiPlxyXG4gICAgICAgICAgICA8Y28tc2VuZC1tZXRob2QtZW1haWxcclxuICAgICAgICAgICAgICBbZW1haWxBZGRyZXNzZXNdPVwiZW1haWxBZGRyZXNzZXNcIlxyXG4gICAgICAgICAgICAgIFtsYXlvdXRzXT1cImVtYWlsTGF5b3V0c1wiXHJcbiAgICAgICAgICAgID48L2NvLXNlbmQtbWV0aG9kLWVtYWlsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICNlZGlJdGVtcyBjbGFzcz1cInNlbmQtbWV0aG9kLW5hdmlnYXRpb24tY29udGVudCBjby1zbWFsbC1zY3JvbGxiYXJcIiAqbmdJZj1cInNob3dFZGlcIj5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgI2VtYWlsVGVtcGxhdGVJdGVtcyBjbGFzcz1cInNlbmQtbWV0aG9kLW5hdmlnYXRpb24tY29udGVudCBjby1zbWFsbC1zY3JvbGxiYXJcIiAqbmdJZj1cInNob3dFbWFpbFRlbXBsYXRlXCI+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICNzbXNJdGVtcyBjbGFzcz1cInNlbmQtbWV0aG9kLW5hdmlnYXRpb24tY29udGVudCBjby1zbWFsbC1zY3JvbGxiYXJcIiAqbmdJZj1cInNob3dTbXNcIj5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgI3dlYlNlcnZpY2VJdGVtcyBjbGFzcz1cInNlbmQtbWV0aG9kLW5hdmlnYXRpb24tY29udGVudCBjby1zbWFsbC1zY3JvbGxiYXJcIiAqbmdJZj1cInNob3dXZWJzZXJ2aWNlXCI+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjby1kaWFsb2ctZm9vdGVyLWJ1dHRvbi13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8Y28tYnV0dG9uIFtsYWJlbF09XCInT2snXCIgKGNsaWNrKT1cIm9rQ2xpY2suZW1pdChhY3RpdmVTZW5kTWV0aG9kID8gYWN0aXZlU2VuZE1ldGhvZC5jb2RlIDogJzAnKVwiPjwvY28tYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9jby1kaWFsb2c+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ3NsaWRlSW5PdXQnLCBbXHJcbiAgICAgIHN0YXRlKCcqJywgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCUpJywgd2lkdGg6ICcxMDAlJywgb3BhY2l0eTogJzEnfSkpLFxyXG4gICAgICBzdGF0ZSgndm9pZCcsIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDE1MCUpJywgb3BhY2l0eTogJzAnfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBhbmltYXRlKDI1MCkpXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBTZW5kTWV0aG9kRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG5cclxuICBAVmlld0NoaWxkKCduYXZpZ2F0aW9uSXRlbXMnLCB7cmVhZDogRWxlbWVudFJlZn0pXHJcbiAgcHVibGljIG5hdmlnYXRpb25JdGVtczogRWxlbWVudFJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZmF4SXRlbXMnLCB7cmVhZDogRWxlbWVudFJlZn0pXHJcbiAgcHVibGljIGZheEl0ZW1zOiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdwcmludEl0ZW1zJywge3JlYWQ6IEVsZW1lbnRSZWZ9KVxyXG4gIHB1YmxpYyBwcmludEl0ZW1zOiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdlbWFpbEl0ZW1zJywge3JlYWQ6IEVsZW1lbnRSZWZ9KVxyXG4gIHB1YmxpYyBlbWFpbEl0ZW1zOiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdlZGlJdGVtcycsIHtyZWFkOiBFbGVtZW50UmVmfSlcclxuICBwdWJsaWMgZWRpSXRlbXM6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2VtYWlsVGVtcGxhdGVJdGVtcycsIHtyZWFkOiBFbGVtZW50UmVmfSlcclxuICBwdWJsaWMgZW1haWxUZW1wbGF0ZUl0ZW1zOiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdzbXNJdGVtcycsIHtyZWFkOiBFbGVtZW50UmVmfSlcclxuICBwdWJsaWMgc21zSXRlbXM6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3dlYlNlcnZpY2VJdGVtcycsIHtyZWFkOiBFbGVtZW50UmVmfSlcclxuICBwdWJsaWMgd2ViU2VydmljZUl0ZW1zOiBFbGVtZW50UmVmO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZXBvcnRpbmdEb2N1bWVudFByaW50UmVxdWVzdDogUmVwb3J0aW5nRG9jdW1lbnRQcmludEJhc2VSZXF1ZXN0O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZXBvcnRpbmdEb2N1bWVudEVtYWlsUmVxdWVzdDogUmVwb3J0aW5nRG9jdW1lbnRFbWFpbEJhc2VSZXF1ZXN0O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZXBvcnRpbmdEb2N1bWVudFBkZlJlcXVlc3Q6IFJlcG9ydGluZ0RvY3VtZW50UGRmQmFzZVJlcXVlc3Q7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGVtYWlsTGF5b3V0czogUmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwcmludExheW91dHM6IFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10gPSBbXTtcclxuXHJcbiAgLy8gQElucHV0KClcclxuICAvLyBwdWJsaWMgcHJpY2VMaXN0Q29kZURhdGE6IGFueTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaGVhZGVyVGl0bGU6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZW1haWxBZGRyZXNzZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRlZmF1bHRTZW5kTWV0aG9kOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHZpc2libGVNZXRob2RzOiBTZW5kTWV0aG9kVHlwZVtdIHwgc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaXNEb2NTaWduRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkb2NTaWduOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZXBvcnRpbmdEb2N1bWVudFByaW50UmVxdWVzdENoYW5nZTogRXZlbnRFbWl0dGVyPFJlcG9ydGluZ0RvY3VtZW50UHJpbnRCYXNlUmVxdWVzdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlcG9ydGluZ0RvY3VtZW50UHJpbnRCYXNlUmVxdWVzdD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlcG9ydGluZ0RvY3VtZW50RW1haWxSZXF1ZXN0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8UmVwb3J0aW5nRG9jdW1lbnRFbWFpbEJhc2VSZXF1ZXN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVwb3J0aW5nRG9jdW1lbnRFbWFpbEJhc2VSZXF1ZXN0PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVwb3J0aW5nRG9jdW1lbnRQZGZSZXF1ZXN0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8UmVwb3J0aW5nRG9jdW1lbnRQZGZCYXNlUmVxdWVzdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlcG9ydGluZ0RvY3VtZW50UGRmQmFzZVJlcXVlc3Q+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzdGFydFNpZ25hdHVyZUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjbG9zZUNsaWNrOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBva0NsaWNrOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLXNlbmQtbWV0aG9kLWRpYWxvZycpXHJcbiAgcHVibGljIHNob3dDbGFzcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbmRNZXRob2RzID0gc2VuZE1ldGhvZHNXaXRoSWNvbjtcclxuICBwdWJsaWMgYWN0aXZlU2VuZE1ldGhvZDogU2VuZE1ldGhvZDtcclxuICBwdWJsaWMgdXBBbmRMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc3RhcnRVcDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHB1YmxpYyBzaG93RmF4OiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgc2hvd1ByaW50OiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgc2hvd0VtYWlsOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgc2hvd0VkaTogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIHNob3dTbXM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBzaG93RW1haWxUZW1wbGF0ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIHNob3dXZWJzZXJ2aWNlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZSxcclxuICAgIHByaXZhdGUgX29wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RpY3Rpb25hcnk6IERpY3Rpb25hcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfc2hhcmVkU2VydmljZTogU2hhcmVkU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlbmRNZXRob2RTZXJ2aWNlOiBTZW5kTWV0aG9kU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLl9vcHRpb25zU2VydmljZS5vcHRpb25zTG9hZGVkLnN1YnNjcmliZShsb2FkZWQgPT4gdGhpcy5faGFuZGxlU2V0dGluZ3NMb2FkZWQobG9hZGVkKSksXHJcbiAgICAgIHRoaXMuX3NlbmRNZXRob2RTZXJ2aWNlLnJlcG9ydGluZ0RvY3VtZW50UHJpbnRCYXNlUmVxdWVzdENoYW5nZWQuc3Vic2NyaWJlKCh2YWx1ZTogUmVwb3J0aW5nRG9jdW1lbnRQcmludEJhc2VSZXF1ZXN0KSA9PiB0aGlzLnJlcG9ydGluZ0RvY3VtZW50UHJpbnRSZXF1ZXN0Q2hhbmdlLm5leHQodmFsdWUpKSxcclxuICAgICAgdGhpcy5fc2VuZE1ldGhvZFNlcnZpY2UucmVwb3J0aW5nRG9jdW1lbnRFbWFpbEJhc2VSZXF1ZXN0Q2hhbmdlZC5zdWJzY3JpYmUoKHZhbHVlOiBSZXBvcnRpbmdEb2N1bWVudEVtYWlsQmFzZVJlcXVlc3QpID0+IHRoaXMucmVwb3J0aW5nRG9jdW1lbnRFbWFpbFJlcXVlc3RDaGFuZ2UubmV4dCh2YWx1ZSkpLFxyXG4gICAgICB0aGlzLl9zZW5kTWV0aG9kU2VydmljZS5yZXBvcnRpbmdEb2N1bWVudFBkZkJhc2VSZXF1ZXN0Q2hhbmdlZC5zdWJzY3JpYmUoKHZhbHVlOiBSZXBvcnRpbmdEb2N1bWVudFBkZkJhc2VSZXF1ZXN0KSA9PiB0aGlzLnJlcG9ydGluZ0RvY3VtZW50UGRmUmVxdWVzdENoYW5nZS5uZXh0KHZhbHVlKSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMucmVwb3J0aW5nRG9jdW1lbnRFbWFpbFJlcXVlc3QpIHtcclxuICAgICAgdGhpcy5fc2VuZE1ldGhvZFNlcnZpY2UucmVwb3J0aW5nRG9jdW1lbnRFbWFpbEJhc2VSZXF1ZXN0ID0gdGhpcy5yZXBvcnRpbmdEb2N1bWVudEVtYWlsUmVxdWVzdDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJlcG9ydGluZ0RvY3VtZW50UHJpbnRSZXF1ZXN0KSB7XHJcbiAgICAgIHRoaXMuX3NlbmRNZXRob2RTZXJ2aWNlLnJlcG9ydGluZ0RvY3VtZW50UHJpbnRCYXNlUmVxdWVzdCA9IHRoaXMucmVwb3J0aW5nRG9jdW1lbnRQcmludFJlcXVlc3Q7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5yZXBvcnRpbmdEb2N1bWVudFBkZlJlcXVlc3QpIHtcclxuICAgICAgdGhpcy5fc2VuZE1ldGhvZFNlcnZpY2UucmVwb3J0aW5nRG9jdW1lbnRQZGZCYXNlUmVxdWVzdCA9IHRoaXMucmVwb3J0aW5nRG9jdW1lbnRQZGZSZXF1ZXN0O1xyXG4gICAgfVxyXG4gICAgdGhpcy5fc2VsZWN0RGVmYXVsdFNlbmRNZXRob2QoKTtcclxuICAgIHRoaXMuX3ByZXBhcmVWaXNpYmxlTWV0aG9kcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTaWduYXR1cmVTdGFydCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZG9jU2lnbiA9ICF0aGlzLmRvY1NpZ247XHJcbiAgICB0aGlzLnN0YXJ0U2lnbmF0dXJlQ2xpY2tlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2VuZE1ldGhvZENsaWNrKHNlbmRNZXRob2Q6IFNlbmRNZXRob2QpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlU2VuZE1ldGhvZCA9IHNlbmRNZXRob2Q7XHJcbiAgICBpZiAoc2VuZE1ldGhvZC5jb2RlID09PSBTZW5kTWV0aG9kVHlwZS5GYXggJiYgdGhpcy5zaG93RmF4KSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdGlvbkl0ZW1zLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRoaXMuZmF4SXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0IC0gdGhpcy5uYXZpZ2F0aW9uSXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgfSBlbHNlIGlmIChzZW5kTWV0aG9kLmNvZGUgPT09IFNlbmRNZXRob2RUeXBlLlByaW50ICYmIHRoaXMuc2hvd1ByaW50KSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdGlvbkl0ZW1zLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRoaXMucHJpbnRJdGVtcy5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQgLSB0aGlzLm5hdmlnYXRpb25JdGVtcy5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQ7XHJcbiAgICB9IGVsc2UgaWYgKHNlbmRNZXRob2QuY29kZSA9PT0gU2VuZE1ldGhvZFR5cGUuRW1haWwgJiYgdGhpcy5zaG93RW1haWwpIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0aW9uSXRlbXMubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGhpcy5lbWFpbEl0ZW1zLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCAtIHRoaXMubmF2aWdhdGlvbkl0ZW1zLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcclxuICAgIH0gZWxzZSBpZiAoc2VuZE1ldGhvZC5jb2RlID09PSBTZW5kTWV0aG9kVHlwZS5FZGkgJiYgdGhpcy5zaG93RWRpKSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdGlvbkl0ZW1zLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRoaXMuZWRpSXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0IC0gdGhpcy5uYXZpZ2F0aW9uSXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgfSBlbHNlIGlmIChzZW5kTWV0aG9kLmNvZGUgPT09IFNlbmRNZXRob2RUeXBlLkVtYWlsVGVtcGxhdGUgJiYgdGhpcy5zaG93RW1haWxUZW1wbGF0ZSkge1xyXG4gICAgICB0aGlzLm5hdmlnYXRpb25JdGVtcy5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0aGlzLmVtYWlsVGVtcGxhdGVJdGVtcy5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQgLSB0aGlzLm5hdmlnYXRpb25JdGVtcy5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQ7XHJcbiAgICB9IGVsc2UgaWYgKHNlbmRNZXRob2QuY29kZSA9PT0gU2VuZE1ldGhvZFR5cGUuU21zICYmIHRoaXMuc2hvd1Ntcykge1xyXG4gICAgICB0aGlzLm5hdmlnYXRpb25JdGVtcy5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0aGlzLnNtc0l0ZW1zLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCAtIHRoaXMubmF2aWdhdGlvbkl0ZW1zLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcclxuICAgIH0gZWxzZSBpZiAoc2VuZE1ldGhvZC5jb2RlID09PSBTZW5kTWV0aG9kVHlwZS5XZWJTZXJ2aWNlICYmIHRoaXMuc2hvd1dlYnNlcnZpY2UpIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0aW9uSXRlbXMubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGhpcy53ZWJTZXJ2aWNlSXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0IC0gdGhpcy5uYXZpZ2F0aW9uSXRlbXMubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2VsZWN0RGVmYXVsdFNlbmRNZXRob2QoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0U2VuZE1ldGhvZCkge1xyXG4gICAgICBjb25zdCBzZW5kTWV0aG9kOiBTZW5kTWV0aG9kID0gdGhpcy5zZW5kTWV0aG9kcy5maW5kKHNtID0+IHNtLmNvZGUgPT09IHRoaXMuZGVmYXVsdFNlbmRNZXRob2QpO1xyXG4gICAgICBpZiAoc2VuZE1ldGhvZCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVTZW5kTWV0aG9kQ2xpY2soc2VuZE1ldGhvZCk7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0VXAgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdGFydFVwID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlVmlzaWJsZU1ldGhvZHMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52aXNpYmxlTWV0aG9kcyAmJiB0aGlzLnZpc2libGVNZXRob2RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZW5kTWV0aG9kcyA9IHRoaXMuc2VuZE1ldGhvZHMuZmlsdGVyKHNtID0+IHRoaXMudmlzaWJsZU1ldGhvZHMuZmluZCh2bSA9PiB2bSA9PT0gc20uY29kZSkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93RmF4ID0gdGhpcy5zZW5kTWV0aG9kcy5maW5kKHNtID0+IHNtLmNvZGUgPT09IFNlbmRNZXRob2RUeXBlLkZheCkgIT09IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc2hvd1ByaW50ID0gdGhpcy5zZW5kTWV0aG9kcy5maW5kKHNtID0+IHNtLmNvZGUgPT09IFNlbmRNZXRob2RUeXBlLlByaW50KSAhPT0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zaG93RW1haWwgPSB0aGlzLnNlbmRNZXRob2RzLmZpbmQoc20gPT4gc20uY29kZSA9PT0gU2VuZE1ldGhvZFR5cGUuRW1haWwpICE9PSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnNob3dFZGkgPSB0aGlzLnNlbmRNZXRob2RzLmZpbmQoc20gPT4gc20uY29kZSA9PT0gU2VuZE1ldGhvZFR5cGUuRWRpKSAhPT0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zaG93RW1haWxUZW1wbGF0ZSA9IHRoaXMuc2VuZE1ldGhvZHMuZmluZChzbSA9PiBzbS5jb2RlID09PSBTZW5kTWV0aG9kVHlwZS5FbWFpbFRlbXBsYXRlKSAhPT0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zaG93U21zID0gdGhpcy5zZW5kTWV0aG9kcy5maW5kKHNtID0+IHNtLmNvZGUgPT09IFNlbmRNZXRob2RUeXBlLlNtcykgIT09IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc2hvd1dlYnNlcnZpY2UgPSB0aGlzLnNlbmRNZXRob2RzLmZpbmQoc20gPT4gc20uY29kZSA9PT0gU2VuZE1ldGhvZFR5cGUuV2ViU2VydmljZSkgIT09IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2hhbmRsZVNldHRpbmdzTG9hZGVkKGxvYWRlZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKGxvYWRlZCkge1xyXG4gICAgICBhd2FpdCB0aGlzLl9pbml0Q29ubmVjdGlvbigpLnRoZW4oKTtcclxuICAgICAgdGhpcy51cEFuZExvYWRlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9pbml0Q29ubmVjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIC8vIGF3YWl0IHRoaXMuX2Nvbm5lY3Rvci5jb25uZWN0KHRoaXMuX29wdGlvbnNTZXJ2aWNlLm9wdGlvbnMpO1xyXG5cclxuICAgIGlmICh0aGlzLl9vcHRpb25zU2VydmljZS5vcHRpb25zLnVybCkge1xyXG4gICAgICB0aGlzLl9kaWN0aW9uYXJ5LnJvb3RVcmwgPSB0aGlzLl9vcHRpb25zU2VydmljZS5vcHRpb25zLnVybC5yZXBsYWNlKCcvYWpheHNlcnZpY2UnLCAnJyk7XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLl9kaWN0aW9uYXJ5LnNldERpY3Rpb25hcnkodGhpcy5fb3B0aW9uc1NlcnZpY2Uub3B0aW9ucy5sYW5ndWFnZUNvZGUpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|