@qbs-origin/origin-form 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/esm2022/lib/action-step-handler.mjs +163 -0
- package/esm2022/lib/auth-client.service.mjs +69 -0
- package/esm2022/lib/enums/label.keys.mjs +721 -0
- package/esm2022/lib/form-css.helper.mjs +367 -0
- package/esm2022/lib/formly/baseFormlyControlComponent.mjs +52 -0
- package/esm2022/lib/formly/baseFormlyStepComponent.mjs +59 -0
- package/esm2022/lib/formly/custom-section-separator.component.mjs +32 -0
- package/esm2022/lib/formly/form-section-separator.component.mjs +36 -0
- package/esm2022/lib/formly/formly-action.mjs +56 -0
- package/esm2022/lib/formly/formly-checkbox/formly-checkbox.component.mjs +52 -0
- package/esm2022/lib/formly/formly-dictionary-dropdown-tree/formly-dictionary-dropdown-tree.component.mjs +261 -0
- package/esm2022/lib/formly/formly-download-documents/formly-download-documents.component.mjs +126 -0
- package/esm2022/lib/formly/formly-enrol-card/formly-enrol-card.component.mjs +120 -0
- package/esm2022/lib/formly/formly-field-stepper/formly-field-stepper.component.mjs +762 -0
- package/esm2022/lib/formly/formly-generate-documents/formly-generate-documents.component.mjs +57 -0
- package/esm2022/lib/formly/formly-identification.component.mjs +84 -0
- package/esm2022/lib/formly/formly-open-banking/formly-open-banking.component.mjs +590 -0
- package/esm2022/lib/formly/formly-paragraph/formly-paragraph.component.mjs +35 -0
- package/esm2022/lib/formly/formly-radio/formly-radio-component.mjs +49 -0
- package/esm2022/lib/formly/formly-row-fille.mjs +12 -0
- package/esm2022/lib/formly/formly-scan-id/formly-scan-id.component.mjs +284 -0
- package/esm2022/lib/formly/formly-sign/formly-sign.component.mjs +173 -0
- package/esm2022/lib/formly/formly-upload-documents/formly-upload-documents.component.mjs +198 -0
- package/esm2022/lib/formly/formly-validate-contact-info/formly-validate-contact-info.component.mjs +124 -0
- package/esm2022/lib/formly/formly-view-documents/formly-view-documents.component.mjs +245 -0
- package/esm2022/lib/formly/formly-view-offers/formly-view-offers.component.mjs +160 -0
- package/esm2022/lib/model-population.helper.mjs +265 -0
- package/esm2022/lib/models/application-type.model.mjs +12 -0
- package/esm2022/lib/models/application.model.mjs +30 -0
- package/esm2022/lib/models/auth/users.model.mjs +2 -0
- package/esm2022/lib/models/dictionary.model.mjs +20 -0
- package/esm2022/lib/models/flux.model.mjs +105 -0
- package/esm2022/lib/models/forms.model.mjs +572 -0
- package/esm2022/lib/models/label-info.model.mjs +2 -0
- package/esm2022/lib/models/label.model.mjs +2 -0
- package/esm2022/lib/models/language.model.mjs +3 -0
- package/esm2022/lib/models/list.model.mjs +2 -0
- package/esm2022/lib/models/partner.model.mjs +3 -0
- package/esm2022/lib/models/treeview.model.mjs +15 -0
- package/esm2022/lib/origin-form-auth.service.mjs +40 -0
- package/esm2022/lib/origin-form-config.model.mjs +2 -0
- package/esm2022/lib/origin-form-token.interceptor.mjs +35 -0
- package/esm2022/lib/origin-form.component.mjs +2391 -0
- package/esm2022/lib/origin-form.module.mjs +479 -0
- package/esm2022/lib/origin-form.service.mjs +14 -0
- package/esm2022/lib/others/check-list.database.mjs +55 -0
- package/esm2022/lib/others/config-service.mjs +42 -0
- package/esm2022/lib/others/dictionary-label-info.mjs +3 -0
- package/esm2022/lib/others/environment-type.mjs +21 -0
- package/esm2022/lib/others/external-link.directive.mjs +49 -0
- package/esm2022/lib/others/flux-helper.mjs +1397 -0
- package/esm2022/lib/others/picker.component.mjs +119 -0
- package/esm2022/lib/others/translation.pipe.mjs +21 -0
- package/esm2022/lib/others/translations-helper.mjs +258 -0
- package/esm2022/lib/others/utils.mjs +272 -0
- package/esm2022/lib/services/applicationData.service.mjs +145 -0
- package/esm2022/lib/services/auth-http.service.mjs +80 -0
- package/esm2022/lib/services/dialog.service.mjs +56 -0
- package/esm2022/lib/services/dictionary.service.mjs +198 -0
- package/esm2022/lib/services/forms.service.mjs +47 -0
- package/esm2022/lib/services/labels.service.mjs +29 -0
- package/esm2022/lib/services/language.service.mjs +24 -0
- package/esm2022/lib/services/open-banking.service.mjs +194 -0
- package/esm2022/lib/services/origin-form-signalr-handler.service.mjs +107 -0
- package/esm2022/lib/services/origin-form-signalr.service.mjs +105 -0
- package/esm2022/lib/services/otp.service.mjs +28 -0
- package/esm2022/lib/services/proxy.service.mjs +79 -0
- package/esm2022/lib/services/scroll-to-error.service.mjs +369 -0
- package/esm2022/lib/services/translation.service.mjs +27 -0
- package/esm2022/lib/shared-components/confirmation.component.mjs +34 -0
- package/esm2022/lib/shared-components/dictionaries-tree.component.mjs +301 -0
- package/esm2022/lib/shared-components/grid.component.mjs +241 -0
- package/esm2022/lib/shared-components/treeview/treeview.component.mjs +224 -0
- package/esm2022/lib/theme-css.mjs +2254 -0
- package/esm2022/lib/theme-injector.service.mjs +26 -0
- package/esm2022/public-api.mjs +4 -0
- package/esm2022/qbs-origin-origin-form.mjs +5 -0
- package/fesm2022/qbs-origin-origin-form.mjs +15215 -0
- package/fesm2022/qbs-origin-origin-form.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/action-step-handler.d.ts +49 -0
- package/lib/auth-client.service.d.ts +17 -0
- package/lib/enums/label.keys.d.ts +720 -0
- package/lib/form-css.helper.d.ts +28 -0
- package/lib/formly/baseFormlyControlComponent.d.ts +25 -0
- package/lib/formly/baseFormlyStepComponent.d.ts +29 -0
- package/lib/formly/custom-section-separator.component.d.ts +6 -0
- package/lib/formly/form-section-separator.component.d.ts +10 -0
- package/lib/formly/formly-action.d.ts +13 -0
- package/lib/formly/formly-checkbox/formly-checkbox.component.d.ts +15 -0
- package/lib/formly/formly-dictionary-dropdown-tree/formly-dictionary-dropdown-tree.component.d.ts +45 -0
- package/lib/formly/formly-download-documents/formly-download-documents.component.d.ts +22 -0
- package/lib/formly/formly-enrol-card/formly-enrol-card.component.d.ts +114 -0
- package/lib/formly/formly-field-stepper/formly-field-stepper.component.d.ts +79 -0
- package/lib/formly/formly-generate-documents/formly-generate-documents.component.d.ts +17 -0
- package/lib/formly/formly-identification.component.d.ts +19 -0
- package/lib/formly/formly-open-banking/formly-open-banking.component.d.ts +119 -0
- package/lib/formly/formly-paragraph/formly-paragraph.component.d.ts +10 -0
- package/lib/formly/formly-radio/formly-radio-component.d.ts +15 -0
- package/lib/formly/formly-row-fille.d.ts +6 -0
- package/lib/formly/formly-scan-id/formly-scan-id.component.d.ts +41 -0
- package/lib/formly/formly-sign/formly-sign.component.d.ts +36 -0
- package/lib/formly/formly-upload-documents/formly-upload-documents.component.d.ts +25 -0
- package/lib/formly/formly-validate-contact-info/formly-validate-contact-info.component.d.ts +79 -0
- package/lib/formly/formly-view-documents/formly-view-documents.component.d.ts +33 -0
- package/lib/formly/formly-view-offers/formly-view-offers.component.d.ts +23 -0
- package/lib/model-population.helper.d.ts +8 -0
- package/lib/models/application-type.model.d.ts +27 -0
- package/lib/models/application.model.d.ts +107 -0
- package/lib/models/auth/users.model.d.ts +20 -0
- package/lib/models/dictionary.model.d.ts +77 -0
- package/lib/models/flux.model.d.ts +101 -0
- package/lib/models/forms.model.d.ts +504 -0
- package/lib/models/label-info.model.d.ts +10 -0
- package/lib/models/label.model.d.ts +4 -0
- package/lib/models/language.model.d.ts +5 -0
- package/lib/models/list.model.d.ts +8 -0
- package/lib/models/partner.model.d.ts +12 -0
- package/lib/models/treeview.model.d.ts +17 -0
- package/lib/origin-form-auth.service.d.ts +15 -0
- package/lib/origin-form-config.model.d.ts +12 -0
- package/lib/origin-form-token.interceptor.d.ts +12 -0
- package/lib/origin-form.component.d.ts +231 -0
- package/lib/origin-form.module.d.ts +84 -0
- package/lib/origin-form.service.d.ts +6 -0
- package/lib/others/check-list.database.d.ts +16 -0
- package/lib/others/config-service.d.ts +22 -0
- package/lib/others/dictionary-label-info.d.ts +6 -0
- package/lib/others/environment-type.d.ts +8 -0
- package/lib/others/external-link.directive.d.ts +12 -0
- package/lib/others/flux-helper.d.ts +115 -0
- package/lib/others/picker.component.d.ts +36 -0
- package/lib/others/translation.pipe.d.ts +10 -0
- package/lib/others/translations-helper.d.ts +31 -0
- package/lib/others/utils.d.ts +37 -0
- package/lib/services/applicationData.service.d.ts +35 -0
- package/lib/services/auth-http.service.d.ts +21 -0
- package/lib/services/dialog.service.d.ts +20 -0
- package/lib/services/dictionary.service.d.ts +89 -0
- package/lib/services/forms.service.d.ts +17 -0
- package/lib/services/labels.service.d.ts +13 -0
- package/lib/services/language.service.d.ts +14 -0
- package/lib/services/open-banking.service.d.ts +137 -0
- package/lib/services/origin-form-signalr-handler.service.d.ts +29 -0
- package/lib/services/origin-form-signalr.service.d.ts +24 -0
- package/lib/services/otp.service.d.ts +22 -0
- package/lib/services/proxy.service.d.ts +29 -0
- package/lib/services/scroll-to-error.service.d.ts +54 -0
- package/lib/services/translation.service.d.ts +10 -0
- package/lib/shared-components/confirmation.component.d.ts +77 -0
- package/lib/shared-components/dictionaries-tree.component.d.ts +51 -0
- package/lib/shared-components/grid.component.d.ts +138 -0
- package/lib/shared-components/treeview/treeview.component.d.ts +121 -0
- package/lib/theme-css.d.ts +2 -0
- package/lib/theme-injector.service.d.ts +8 -0
- package/package.json +42 -0
- package/public-api.d.ts +3 -0
- package/schematics-compiled/collection.json +10 -0
- package/schematics-compiled/ng-add/index.d.ts +2 -0
- package/schematics-compiled/ng-add/index.js +67 -0
- package/schematics-compiled/ng-add/index.js.map +1 -0
- package/schematics-compiled/ng-add/schema.json +8 -0
- package/src/lib/assets/fonts/Figtree-Bold.ttf +0 -0
- package/src/lib/assets/fonts/Figtree-Light.ttf +0 -0
- package/src/lib/assets/fonts/Figtree-Regular.ttf +0 -0
- package/src/lib/assets/fonts/Sora-ExtraBold.ttf +0 -0
- package/src/lib/assets/fonts/Sora-Light.ttf +0 -0
- package/src/lib/assets/fonts/Sora-Regular.ttf +0 -0
- package/src/lib/assets/fonts/ttrounds-bold-webfont.woff +0 -0
- package/src/lib/assets/fonts/ttrounds-bold-webfont.woff2 +0 -0
- package/src/lib/assets/fonts/ttrounds-regular-webfont.woff +0 -0
- package/src/lib/assets/fonts/ttrounds-regular-webfont.woff2 +0 -0
- package/src/lib/assets/fonts/ttrounds-thin-webfont.woff +0 -0
- package/src/lib/assets/fonts/ttrounds-thin-webfont.woff2 +0 -0
- package/src/lib/assets/images/flag/icon-flag-de.svg +10 -0
- package/src/lib/assets/images/flag/icon-flag-en.svg +1 -0
- package/src/lib/assets/images/flag/icon-flag-es.svg +11 -0
- package/src/lib/assets/images/flag/icon-flag-fr.svg +1 -0
- package/src/lib/assets/images/flag/icon-flag-ro.svg +11 -0
- package/src/lib/assets/images/flag/origin-form/new-id-card.png +0 -0
- package/src/lib/assets/images/flag/origin-form/old-id-card.png +0 -0
|
@@ -0,0 +1,572 @@
|
|
|
1
|
+
import { Partner } from './partner.model';
|
|
2
|
+
import { FluxHelper } from '../others/flux-helper';
|
|
3
|
+
import { PresentationControl } from './flux.model';
|
|
4
|
+
export class FormModel {
|
|
5
|
+
}
|
|
6
|
+
export class AppDataControl {
|
|
7
|
+
constructor(controlId = '', fillValue = '', fillValueId = '') {
|
|
8
|
+
this.controlId = controlId || '';
|
|
9
|
+
this.fillValue = fillValue || '';
|
|
10
|
+
this.fillValueId = fillValueId || '';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class AppDataSection {
|
|
14
|
+
constructor(sectionId = '', controls = []) {
|
|
15
|
+
this.sectionId = sectionId || '';
|
|
16
|
+
this.controls = controls || [];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export class AppDataStep {
|
|
20
|
+
constructor(stepId = '', type, sections = []) {
|
|
21
|
+
this.stepId = stepId || '';
|
|
22
|
+
this.type = type;
|
|
23
|
+
this.sections = sections || [];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class AppDataFill {
|
|
27
|
+
constructor(appDataId = '', configurationId = '', currentStepId = '', statusId = '', language = '', flux = [], offerId = '', isSubmitted = false) {
|
|
28
|
+
this.metadata = {
|
|
29
|
+
appDataId: appDataId || '',
|
|
30
|
+
configurationId: configurationId || '',
|
|
31
|
+
currentStepId: currentStepId || '',
|
|
32
|
+
statusId: statusId || '',
|
|
33
|
+
language: language || '',
|
|
34
|
+
offerId: offerId || '',
|
|
35
|
+
isSubmitted: isSubmitted || false,
|
|
36
|
+
};
|
|
37
|
+
this.flux = flux || [];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export class AppData {
|
|
41
|
+
constructor(data) {
|
|
42
|
+
(this.id = data.id ?? undefined), (this.appDataId = data.appDataId || '');
|
|
43
|
+
this.appConfigurationId = data.appConfigurationId || 0;
|
|
44
|
+
this.fillData = data.fillData;
|
|
45
|
+
this.withNextStep = data.withNextStep;
|
|
46
|
+
this.blockPreviousStep = data.blockPreviousStep;
|
|
47
|
+
if (!data.env) {
|
|
48
|
+
this.env = 'Config';
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.env = data.env;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export class FormModelExtenxions {
|
|
56
|
+
constructor(model) {
|
|
57
|
+
this.formModel = model;
|
|
58
|
+
}
|
|
59
|
+
fluxItems(untilStepIdentifier = undefined) {
|
|
60
|
+
let items = [];
|
|
61
|
+
if (this.formModel.metadataFields) {
|
|
62
|
+
this.formModel.metadataFields.forEach((fieldValue) => {
|
|
63
|
+
items.push({
|
|
64
|
+
fieldName: fieldValue,
|
|
65
|
+
fieldType: StepControlType.Metadata,
|
|
66
|
+
id: `metadata.${fieldValue}`,
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
if (!this.formModel?.flux) {
|
|
71
|
+
return items;
|
|
72
|
+
}
|
|
73
|
+
if (this.formModel.documents?.length > 0) {
|
|
74
|
+
items = items.concat(this.extractDocumentsFluxItems(this.formModel.flux));
|
|
75
|
+
}
|
|
76
|
+
items = items.concat(this.extractSectionsFluxItems(this.formModel.flux, untilStepIdentifier));
|
|
77
|
+
return items;
|
|
78
|
+
}
|
|
79
|
+
extractSectionsFluxItems(steps, untilStepIdentifier = undefined) {
|
|
80
|
+
let items = [];
|
|
81
|
+
for (let step of steps) {
|
|
82
|
+
if (step.sections) {
|
|
83
|
+
if (untilStepIdentifier && step.identifier === untilStepIdentifier) {
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
step.sections.forEach((section) => {
|
|
87
|
+
if (section.controls) {
|
|
88
|
+
section.controls.forEach((control) => {
|
|
89
|
+
if ([
|
|
90
|
+
StepControlType.Buttons,
|
|
91
|
+
StepControlType.NewRow,
|
|
92
|
+
StepControlType.FluxInfo,
|
|
93
|
+
StepControlType.Paragraph,
|
|
94
|
+
].includes(control.type) == false) {
|
|
95
|
+
items.push({
|
|
96
|
+
fieldName: `${step.name} -> ${section.title} -> ${control.title}`,
|
|
97
|
+
fieldType: control.type,
|
|
98
|
+
manulInputControlType: control.specificControlData?.type,
|
|
99
|
+
id: control.identifier,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return items;
|
|
108
|
+
}
|
|
109
|
+
extractDocumentsFluxItems(stepData) {
|
|
110
|
+
let items = [];
|
|
111
|
+
stepData?.forEach((step) => {
|
|
112
|
+
if (step.type === FluxType.UploadDocument) {
|
|
113
|
+
step.config?.documents?.forEach((document) => {
|
|
114
|
+
items.push({
|
|
115
|
+
fieldName: `${step.name} -> ${FluxHelper.getDocumentNameById(document?.documentId, this.formModel) || document.name}`,
|
|
116
|
+
fieldType: step.type,
|
|
117
|
+
id: document?.documentId
|
|
118
|
+
? `upload.${document.documentId}`
|
|
119
|
+
: `${step.type}.${step.name}`,
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
else if (step.type === FluxType.GenerateDocument) {
|
|
124
|
+
step.config?.generatedDocuments?.forEach((document) => {
|
|
125
|
+
items.push({
|
|
126
|
+
fieldName: `${step.name} -> ${FluxHelper.getDocumentNameById(document?.id, this.formModel) ||
|
|
127
|
+
document.name}`,
|
|
128
|
+
fieldType: step.type,
|
|
129
|
+
id: document?.id
|
|
130
|
+
? `generate.${document.id}`
|
|
131
|
+
: `${step.type}.${step.name}`,
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
else if (step.type === FluxType.Sign) {
|
|
136
|
+
if (step.config?.documents) {
|
|
137
|
+
step.config?.documents.forEach((document) => {
|
|
138
|
+
items.push({
|
|
139
|
+
fieldName: `${step.name} -> ${FluxHelper.getDocumentNameById(document?.id, this.formModel) || document.name}`,
|
|
140
|
+
fieldType: step.type,
|
|
141
|
+
id: document?.id
|
|
142
|
+
? `sign.${document.id}`
|
|
143
|
+
: `${step.type}.${step.name}`,
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
if (step.config?.systemDocuments) {
|
|
148
|
+
step.config?.systemDocuments.forEach((document) => {
|
|
149
|
+
items.push({
|
|
150
|
+
fieldName: `${step.name} -> ${FluxHelper.getDocumentNameById(document?.id, this.formModel) || document.name}`,
|
|
151
|
+
fieldType: step.type,
|
|
152
|
+
id: document?.id
|
|
153
|
+
? `system.${document.id}`
|
|
154
|
+
: `${step.type}.${step.name}`,
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
return items;
|
|
161
|
+
}
|
|
162
|
+
fluxItemsWithGetApiMethods(excludedMethodId = '') {
|
|
163
|
+
let items = this.fluxItems();
|
|
164
|
+
this.formModel.api.getItems.forEach((apiMethod) => {
|
|
165
|
+
if (apiMethod.id !== excludedMethodId) {
|
|
166
|
+
apiMethod.fields?.forEach((f) => {
|
|
167
|
+
items.push({
|
|
168
|
+
fieldName: `${apiMethod.method} -> ${f.fieldName}`,
|
|
169
|
+
fieldType: StepControlType.ApiMethodField,
|
|
170
|
+
id: f.id,
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
return items;
|
|
176
|
+
}
|
|
177
|
+
offerMethodsItems() {
|
|
178
|
+
let items = [];
|
|
179
|
+
let offerMethodsIds = [];
|
|
180
|
+
this.formModel.partners?.forEach((p) => {
|
|
181
|
+
p.generalSettings.offers?.forEach((o) => {
|
|
182
|
+
offerMethodsIds.push(o.apiMethodId);
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
offerMethodsIds = [...new Set(offerMethodsIds)];
|
|
186
|
+
const allApiItems = [
|
|
187
|
+
...this.formModel.api.getItems,
|
|
188
|
+
...this.formModel.api.validationItems,
|
|
189
|
+
...this.formModel.api.sendItems,
|
|
190
|
+
];
|
|
191
|
+
offerMethodsIds.forEach((methodId) => {
|
|
192
|
+
const apiMethod = allApiItems.find((item) => item.id === methodId);
|
|
193
|
+
if (apiMethod) {
|
|
194
|
+
apiMethod.fields?.forEach((f) => {
|
|
195
|
+
items.push({
|
|
196
|
+
fieldName: `${apiMethod.method} -> ${f.fieldName}`,
|
|
197
|
+
fieldType: FluxType.ViewOffer,
|
|
198
|
+
id: `api_${apiMethod.id} -> ${f.id}`,
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
return items;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
export class ApiData {
|
|
207
|
+
}
|
|
208
|
+
export class ApiItem {
|
|
209
|
+
}
|
|
210
|
+
export class GetApiItem {
|
|
211
|
+
}
|
|
212
|
+
export class DesignModel {
|
|
213
|
+
constructor(data) {
|
|
214
|
+
this.fonts = [];
|
|
215
|
+
this.buttons = [];
|
|
216
|
+
this.otpActionButtons = [];
|
|
217
|
+
this.components = [];
|
|
218
|
+
this.tables = [];
|
|
219
|
+
if (data) {
|
|
220
|
+
if (data.fonts) {
|
|
221
|
+
this.fonts = data.fonts.map((font) => new FontConfig(font));
|
|
222
|
+
}
|
|
223
|
+
if (data.buttons) {
|
|
224
|
+
this.buttons = data.buttons.map((button) => new ButtonConfig(button));
|
|
225
|
+
}
|
|
226
|
+
if (data.components) {
|
|
227
|
+
this.components = data.components.map((component) => new ComponentConfig(component));
|
|
228
|
+
}
|
|
229
|
+
if (data.tables) {
|
|
230
|
+
this.tables = data.tables.map((table) => new TableConfig(table));
|
|
231
|
+
}
|
|
232
|
+
this.backgroundColor = data.backgroundColor;
|
|
233
|
+
this.fontSize = data.fontSize;
|
|
234
|
+
this.buttonsHorizontalPosition = data.horizontalPosition;
|
|
235
|
+
this.buttonsVerticalPosition = data.verticalPosition;
|
|
236
|
+
this.maxWidth = data.maxWidth;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
export class FontConfig {
|
|
241
|
+
constructor(data) {
|
|
242
|
+
if (data) {
|
|
243
|
+
this.name = data.name;
|
|
244
|
+
this.fontFamily = data.fontFamily;
|
|
245
|
+
this.fontSize = data.fontSize;
|
|
246
|
+
this.color = data.color;
|
|
247
|
+
this.fontWeight = data.fontWeight;
|
|
248
|
+
this.textAlign = data.textAlign;
|
|
249
|
+
this.letterSpacing = data.letterSpacing;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
export class ButtonConfig {
|
|
254
|
+
constructor(data) {
|
|
255
|
+
if (data) {
|
|
256
|
+
this.name = data.name;
|
|
257
|
+
this.backgroundColor = data.backgroundColor;
|
|
258
|
+
this.color = data.color;
|
|
259
|
+
this.border = data.border;
|
|
260
|
+
this.borderColor = data.borderColor;
|
|
261
|
+
this.borderRadius = data.borderRadius;
|
|
262
|
+
this.horizontalPadding = data.horizontalPadding;
|
|
263
|
+
this.verticalPadding = data.verticalPadding;
|
|
264
|
+
this.fontFamily = data.fontFamily;
|
|
265
|
+
this.fontSize = data.fontSize;
|
|
266
|
+
this.letterSpacing = data.letterSpacing;
|
|
267
|
+
this.width = data.width;
|
|
268
|
+
this.height = data.height;
|
|
269
|
+
this.minWidth = data.minWidth;
|
|
270
|
+
this.minHeight = data.minHeight;
|
|
271
|
+
this.maxWidth = data.maxWidth;
|
|
272
|
+
this.maxHeight = data.maxHeight;
|
|
273
|
+
this.horizontalPosition = data.horizontalPosition;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
export class TableConfig {
|
|
278
|
+
constructor(table) {
|
|
279
|
+
if (table) {
|
|
280
|
+
this.headerConfig = table.headerConfig;
|
|
281
|
+
this.detailConfig = table.detailConfig;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
export class HeaderConfig {
|
|
286
|
+
constructor(data) {
|
|
287
|
+
if (data) {
|
|
288
|
+
this.name = data.name;
|
|
289
|
+
this.backgroundColor = data.backgroundColor;
|
|
290
|
+
this.textColor = data.color;
|
|
291
|
+
this.border = data.border;
|
|
292
|
+
this.textAlign = data.textAlign;
|
|
293
|
+
this.fontFamily = data.fontFamily;
|
|
294
|
+
this.fontSize = data.fontSize;
|
|
295
|
+
this.letterSpacing = data.letterSpacing;
|
|
296
|
+
this.padding = data.padding;
|
|
297
|
+
this.borderCollapse = data.borderCollapse;
|
|
298
|
+
this.borderSpacing = data.borderSpacing;
|
|
299
|
+
this.verticalAlign = data.verticalAlign;
|
|
300
|
+
this.width = data.width;
|
|
301
|
+
this.height = data.height;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
export class DetailConfig {
|
|
306
|
+
constructor(data) {
|
|
307
|
+
if (data) {
|
|
308
|
+
this.name = data.name;
|
|
309
|
+
this.backgroundColor = data.backgroundColor;
|
|
310
|
+
this.textColor = data.color;
|
|
311
|
+
this.textAlign = data.textAlign;
|
|
312
|
+
this.letterSpacing = data.letterSpacing;
|
|
313
|
+
this.padding = data.padding;
|
|
314
|
+
this.rowBorder = data.rowBorder;
|
|
315
|
+
this.hoverBackgroundColor = data.hoverBackgroundColor;
|
|
316
|
+
this.verticalAlign = data.verticalAlign;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
export class ComponentConfig {
|
|
321
|
+
constructor(data) {
|
|
322
|
+
if (data) {
|
|
323
|
+
this.name = data.name;
|
|
324
|
+
this.backgroundColor = data.backgroundColor;
|
|
325
|
+
this.border = data.border;
|
|
326
|
+
this.borderRadius = data.borderRadius;
|
|
327
|
+
this.labelStyle = data.labelStyle;
|
|
328
|
+
this.textAlign = data.textAlign;
|
|
329
|
+
this.color = data.color;
|
|
330
|
+
this.weight = data.weight;
|
|
331
|
+
this.startColor = data.startColor;
|
|
332
|
+
this.endColor = data.endColor;
|
|
333
|
+
this.height = data.height;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
export class DisplayModel {
|
|
338
|
+
}
|
|
339
|
+
export class GeneralDataModel {
|
|
340
|
+
}
|
|
341
|
+
export const initialFormulareState = {
|
|
342
|
+
data: {
|
|
343
|
+
applicationId: 0,
|
|
344
|
+
applicationUuid: '',
|
|
345
|
+
generalData: {
|
|
346
|
+
name: '',
|
|
347
|
+
applicationType: 0,
|
|
348
|
+
languages: [],
|
|
349
|
+
defaultLanguage: '',
|
|
350
|
+
continueWithOffer: false,
|
|
351
|
+
showCounterStep: false,
|
|
352
|
+
showNameStep: false,
|
|
353
|
+
showAllSteps: false,
|
|
354
|
+
showProgressBar: false,
|
|
355
|
+
},
|
|
356
|
+
design: {
|
|
357
|
+
fonts: [],
|
|
358
|
+
buttons: [],
|
|
359
|
+
otpActionButtons: [],
|
|
360
|
+
components: [],
|
|
361
|
+
tables: [],
|
|
362
|
+
backgroundColor: '',
|
|
363
|
+
fontSize: '',
|
|
364
|
+
buttonsHorizontalPosition: '',
|
|
365
|
+
buttonsVerticalPosition: '',
|
|
366
|
+
maxWidth: '',
|
|
367
|
+
marginLeft: '',
|
|
368
|
+
marginRight: '',
|
|
369
|
+
marginTop: '',
|
|
370
|
+
marginBottom: '',
|
|
371
|
+
},
|
|
372
|
+
flux: [],
|
|
373
|
+
api: { getItems: [], validationItems: [], sendItems: [] },
|
|
374
|
+
partners: [],
|
|
375
|
+
documents: [],
|
|
376
|
+
statuses: [],
|
|
377
|
+
display: {
|
|
378
|
+
sections: [],
|
|
379
|
+
},
|
|
380
|
+
generatedCss: {},
|
|
381
|
+
metadataFields: [],
|
|
382
|
+
errors: {},
|
|
383
|
+
applicationMappings: {
|
|
384
|
+
applicationTypeId: 0,
|
|
385
|
+
columnMappings: [],
|
|
386
|
+
},
|
|
387
|
+
},
|
|
388
|
+
selectedTab: 'Date generale',
|
|
389
|
+
canGetFromProd: false,
|
|
390
|
+
canGetFromTest: false,
|
|
391
|
+
canPublishInProd: false,
|
|
392
|
+
canPublishInTest: false,
|
|
393
|
+
applicationUuid: '',
|
|
394
|
+
version: '',
|
|
395
|
+
};
|
|
396
|
+
export class PartnerDictionaryMapping {
|
|
397
|
+
}
|
|
398
|
+
export class PartnerSettings {
|
|
399
|
+
constructor() {
|
|
400
|
+
this.partnerMethodsApi = [];
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
export class PartnerMethodApi {
|
|
404
|
+
}
|
|
405
|
+
export var InboundMethodType;
|
|
406
|
+
(function (InboundMethodType) {
|
|
407
|
+
InboundMethodType["Standard"] = "Standard";
|
|
408
|
+
InboundMethodType["StatusMethod"] = "StatusMethod";
|
|
409
|
+
})(InboundMethodType || (InboundMethodType = {}));
|
|
410
|
+
export class PartnerMethodApiAuth {
|
|
411
|
+
}
|
|
412
|
+
export class PartnerKeyValueItem {
|
|
413
|
+
}
|
|
414
|
+
export class PartnerStatusMapping {
|
|
415
|
+
}
|
|
416
|
+
export class PartnerMethodUrl {
|
|
417
|
+
}
|
|
418
|
+
export class PartnerMethodResponse {
|
|
419
|
+
}
|
|
420
|
+
export class UrlMapFields {
|
|
421
|
+
}
|
|
422
|
+
export class PartnerMethodBody {
|
|
423
|
+
}
|
|
424
|
+
export class FieldsMapping {
|
|
425
|
+
}
|
|
426
|
+
export class MethodField {
|
|
427
|
+
constructor() {
|
|
428
|
+
this.manulInputControlType = undefined;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
export class GetMethodField {
|
|
432
|
+
}
|
|
433
|
+
export class ManualInputControlData {
|
|
434
|
+
}
|
|
435
|
+
export class ParagraphControlData {
|
|
436
|
+
}
|
|
437
|
+
export class DictionaryControlData {
|
|
438
|
+
}
|
|
439
|
+
export var FluxType;
|
|
440
|
+
(function (FluxType) {
|
|
441
|
+
FluxType[FluxType["Kyc"] = 0] = "Kyc";
|
|
442
|
+
FluxType[FluxType["Email"] = 1] = "Email";
|
|
443
|
+
FluxType[FluxType["Phone"] = 2] = "Phone";
|
|
444
|
+
FluxType[FluxType["Sign"] = 3] = "Sign";
|
|
445
|
+
FluxType[FluxType["Status"] = 4] = "Status";
|
|
446
|
+
FluxType[FluxType["Custom"] = 5] = "Custom";
|
|
447
|
+
FluxType[FluxType["Pause"] = 6] = "Pause";
|
|
448
|
+
FluxType[FluxType["IdScan"] = 7] = "IdScan";
|
|
449
|
+
FluxType[FluxType["GenerateDocument"] = 8] = "GenerateDocument";
|
|
450
|
+
FluxType[FluxType["Action"] = 9] = "Action";
|
|
451
|
+
FluxType[FluxType["UploadDocument"] = 10] = "UploadDocument";
|
|
452
|
+
FluxType[FluxType["DownloadDocument"] = 11] = "DownloadDocument";
|
|
453
|
+
FluxType[FluxType["ViewOffer"] = 12] = "ViewOffer";
|
|
454
|
+
FluxType[FluxType["Final"] = 13] = "Final";
|
|
455
|
+
FluxType[FluxType["ViewDocument"] = 14] = "ViewDocument";
|
|
456
|
+
FluxType[FluxType["NETOPIA"] = 15] = "NETOPIA";
|
|
457
|
+
FluxType[FluxType["EUPLATESC"] = 16] = "EUPLATESC";
|
|
458
|
+
FluxType[FluxType["OpenBanking"] = 17] = "OpenBanking";
|
|
459
|
+
})(FluxType || (FluxType = {}));
|
|
460
|
+
export var SectionType;
|
|
461
|
+
(function (SectionType) {
|
|
462
|
+
SectionType[SectionType["Presentation"] = 0] = "Presentation";
|
|
463
|
+
SectionType[SectionType["Collect"] = 1] = "Collect";
|
|
464
|
+
SectionType[SectionType["Display"] = 2] = "Display";
|
|
465
|
+
})(SectionType || (SectionType = {}));
|
|
466
|
+
export var StepControlType;
|
|
467
|
+
(function (StepControlType) {
|
|
468
|
+
StepControlType[StepControlType["ManualInput"] = 0] = "ManualInput";
|
|
469
|
+
StepControlType[StepControlType["Paragraph"] = 1] = "Paragraph";
|
|
470
|
+
StepControlType[StepControlType["CheckBox"] = 2] = "CheckBox";
|
|
471
|
+
StepControlType[StepControlType["Dictionary"] = 3] = "Dictionary";
|
|
472
|
+
StepControlType[StepControlType["Buttons"] = 4] = "Buttons";
|
|
473
|
+
StepControlType[StepControlType["FluxInfo"] = 5] = "FluxInfo";
|
|
474
|
+
StepControlType[StepControlType["NewRow"] = 6] = "NewRow";
|
|
475
|
+
StepControlType[StepControlType["Metadata"] = 7] = "Metadata";
|
|
476
|
+
StepControlType[StepControlType["ApiMethodField"] = 8] = "ApiMethodField";
|
|
477
|
+
StepControlType[StepControlType["DownloadDocuments"] = 9] = "DownloadDocuments";
|
|
478
|
+
StepControlType[StepControlType["ViewDocuments"] = 10] = "ViewDocuments";
|
|
479
|
+
StepControlType[StepControlType["UploadDocuments"] = 11] = "UploadDocuments";
|
|
480
|
+
})(StepControlType || (StepControlType = {}));
|
|
481
|
+
export var DimensionType;
|
|
482
|
+
(function (DimensionType) {
|
|
483
|
+
DimensionType[DimensionType["Percentage"] = 0] = "Percentage";
|
|
484
|
+
DimensionType[DimensionType["Pixels"] = 1] = "Pixels";
|
|
485
|
+
})(DimensionType || (DimensionType = {}));
|
|
486
|
+
export var ManualInputControlType;
|
|
487
|
+
(function (ManualInputControlType) {
|
|
488
|
+
ManualInputControlType[ManualInputControlType["Text"] = 0] = "Text";
|
|
489
|
+
ManualInputControlType[ManualInputControlType["Numeric"] = 1] = "Numeric";
|
|
490
|
+
ManualInputControlType[ManualInputControlType["DateTime"] = 2] = "DateTime";
|
|
491
|
+
ManualInputControlType[ManualInputControlType["Email"] = 3] = "Email";
|
|
492
|
+
ManualInputControlType[ManualInputControlType["Phone"] = 4] = "Phone";
|
|
493
|
+
ManualInputControlType[ManualInputControlType["TextArea"] = 5] = "TextArea";
|
|
494
|
+
})(ManualInputControlType || (ManualInputControlType = {}));
|
|
495
|
+
export var SignatureType;
|
|
496
|
+
(function (SignatureType) {
|
|
497
|
+
SignatureType[SignatureType["Electronic"] = 0] = "Electronic";
|
|
498
|
+
SignatureType[SignatureType["Handwritten"] = 1] = "Handwritten";
|
|
499
|
+
SignatureType[SignatureType["Qualified"] = 2] = "Qualified";
|
|
500
|
+
})(SignatureType || (SignatureType = {}));
|
|
501
|
+
export var ApiMethodType;
|
|
502
|
+
(function (ApiMethodType) {
|
|
503
|
+
ApiMethodType[ApiMethodType["GetData"] = 0] = "GetData";
|
|
504
|
+
ApiMethodType[ApiMethodType["SendData"] = 1] = "SendData";
|
|
505
|
+
ApiMethodType[ApiMethodType["Validation"] = 2] = "Validation";
|
|
506
|
+
})(ApiMethodType || (ApiMethodType = {}));
|
|
507
|
+
export class StatusModel {
|
|
508
|
+
constructor(id, denumire, ordine, final, isActive, actions) {
|
|
509
|
+
this.actions = [];
|
|
510
|
+
this.id = id;
|
|
511
|
+
this.name = denumire;
|
|
512
|
+
this.order = ordine;
|
|
513
|
+
this.final = final;
|
|
514
|
+
this.isActive = isActive;
|
|
515
|
+
this.actions = actions;
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
export class StatusAction {
|
|
519
|
+
constructor() {
|
|
520
|
+
this.partnerIds = [];
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
export class PresentationParagraphControl extends PresentationControl {
|
|
524
|
+
}
|
|
525
|
+
export class AppPartner extends Partner {
|
|
526
|
+
constructor() {
|
|
527
|
+
super(...arguments);
|
|
528
|
+
this.documents = [];
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
export class AppPartnerGeneralSettings {
|
|
532
|
+
constructor() {
|
|
533
|
+
this.offers = [];
|
|
534
|
+
this.receivedOffers = [];
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
export class AppStatusWorkerSettings {
|
|
538
|
+
}
|
|
539
|
+
export class AppPartnerGeneralSettingsOffer {
|
|
540
|
+
constructor() {
|
|
541
|
+
this.apiMethodFields = [];
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
export class AppPartnerGeneralSettingsReceivedOffer {
|
|
545
|
+
}
|
|
546
|
+
export class AppPartnerDocuments {
|
|
547
|
+
}
|
|
548
|
+
export class AppDocument {
|
|
549
|
+
constructor() {
|
|
550
|
+
this.versions = [];
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
export class SignedDocument extends AppDocument {
|
|
554
|
+
}
|
|
555
|
+
export class AppDocumentVersion {
|
|
556
|
+
}
|
|
557
|
+
export class BookmarkMapping {
|
|
558
|
+
}
|
|
559
|
+
export class ErrorTranslations {
|
|
560
|
+
}
|
|
561
|
+
export class UploadDocument {
|
|
562
|
+
}
|
|
563
|
+
export class UploadDocumentDetails extends UploadDocument {
|
|
564
|
+
}
|
|
565
|
+
export class StepsSettings {
|
|
566
|
+
}
|
|
567
|
+
export var AppDataStatus;
|
|
568
|
+
(function (AppDataStatus) {
|
|
569
|
+
AppDataStatus[AppDataStatus["new"] = 0] = "new";
|
|
570
|
+
AppDataStatus[AppDataStatus["finished"] = 1] = "finished";
|
|
571
|
+
})(AppDataStatus || (AppDataStatus = {}));
|
|
572
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL21vZGVscy9mb3Jtcy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSxjQUFjLENBQUM7QUFHMUUsTUFBTSxPQUFPLFNBQVM7Q0FlckI7QUFFRCxNQUFNLE9BQU8sY0FBYztJQUt6QixZQUNFLFlBQW9CLEVBQUUsRUFDdEIsWUFBb0IsRUFBRSxFQUN0QixjQUFzQixFQUFFO1FBRXhCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLElBQUksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQVksWUFBb0IsRUFBRSxFQUFFLFdBQTZCLEVBQUU7UUFDakUsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sV0FBVztJQUt0QixZQUNFLFNBQWlCLEVBQUUsRUFDbkIsSUFBWSxFQUNaLFdBQTZCLEVBQUU7UUFFL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUs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QWIsYUFBYSxRQUd4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhYmVsSW5mbyB9IGZyb20gJy4vbGFiZWwtaW5mby5tb2RlbCc7XG5pbXBvcnQgeyBQYXJ0bmVyIH0gZnJvbSAnLi9wYXJ0bmVyLm1vZGVsJztcbmltcG9ydCB7IERpY3Rpb25hcnlMYWJlbEluZm8gfSBmcm9tICcuLi9vdGhlcnMvZGljdGlvbmFyeS1sYWJlbC1pbmZvJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uTWFwcGluZ3MgfSBmcm9tICcuL2FwcGxpY2F0aW9uLXR5cGUubW9kZWwnO1xuaW1wb3J0IHsgQ3NzUnVsZXMgfSBmcm9tICcuLi9vdGhlcnMvdXRpbHMnO1xuaW1wb3J0IHsgRmx1eEhlbHBlciB9IGZyb20gJy4uL290aGVycy9mbHV4LWhlbHBlcic7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25Db250cm9sLCBTZWN0aW9uRGF0YSwgU3RlcERhdGEgfSBmcm9tICcuL2ZsdXgubW9kZWwnO1xuXG5cbmV4cG9ydCBjbGFzcyBGb3JtTW9kZWwge1xuICBhcHBsaWNhdGlvbklkOiBudW1iZXI7XG4gIGFwcGxpY2F0aW9uVXVpZDogc3RyaW5nO1xuICBnZW5lcmFsRGF0YTogR2VuZXJhbERhdGFNb2RlbDtcbiAgZGVzaWduOiBEZXNpZ25Nb2RlbDtcbiAgZmx1eDogU3RlcERhdGFbXTtcbiAgYXBpOiBBcGlEYXRhO1xuICBwYXJ0bmVyczogQXBwUGFydG5lcltdO1xuICBkb2N1bWVudHM6IEFwcERvY3VtZW50W107XG4gIHN0YXR1c2VzOiBTdGF0dXNNb2RlbFtdO1xuICBkaXNwbGF5OiBEaXNwbGF5TW9kZWw7XG4gIGdlbmVyYXRlZENzczogQ3NzUnVsZXM7XG4gIG1ldGFkYXRhRmllbGRzOiBbXTtcbiAgZXJyb3JzOiB7IFt0YWJOYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuICBhcHBsaWNhdGlvbk1hcHBpbmdzOiBBcHBsaWNhdGlvbk1hcHBpbmdzO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwRGF0YUNvbnRyb2wge1xuICBjb250cm9sSWQ6IHN0cmluZztcbiAgZmlsbFZhbHVlOiBzdHJpbmc7XG4gIGZpbGxWYWx1ZUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29udHJvbElkOiBzdHJpbmcgPSAnJyxcbiAgICBmaWxsVmFsdWU6IHN0cmluZyA9ICcnLFxuICAgIGZpbGxWYWx1ZUlkOiBzdHJpbmcgPSAnJ1xuICApIHtcbiAgICB0aGlzLmNvbnRyb2xJZCA9IGNvbnRyb2xJZCB8fCAnJztcbiAgICB0aGlzLmZpbGxWYWx1ZSA9IGZpbGxWYWx1ZSB8fCAnJztcbiAgICB0aGlzLmZpbGxWYWx1ZUlkID0gZmlsbFZhbHVlSWQgfHwgJyc7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFTZWN0aW9uIHtcbiAgc2VjdGlvbklkOiBzdHJpbmc7XG4gIGNvbnRyb2xzOiBBcHBEYXRhQ29udHJvbFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNlY3Rpb25JZDogc3RyaW5nID0gJycsIGNvbnRyb2xzOiBBcHBEYXRhQ29udHJvbFtdID0gW10pIHtcbiAgICB0aGlzLnNlY3Rpb25JZCA9IHNlY3Rpb25JZCB8fCAnJztcbiAgICB0aGlzLmNvbnRyb2xzID0gY29udHJvbHMgfHwgW107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFTdGVwIHtcbiAgc3RlcElkOiBzdHJpbmc7XG4gIHR5cGU6IG51bWJlcjtcbiAgc2VjdGlvbnM6IEFwcERhdGFTZWN0aW9uW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RlcElkOiBzdHJpbmcgPSAnJyxcbiAgICB0eXBlOiBudW1iZXIsXG4gICAgc2VjdGlvbnM6IEFwcERhdGFTZWN0aW9uW10gPSBbXVxuICApIHtcbiAgICB0aGlzLnN0ZXBJZCA9IHN0ZXBJZCB8fCAnJztcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc2VjdGlvbnMgPSBzZWN0aW9ucyB8fCBbXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBwRGF0YUZpbGwge1xuICBtZXRhZGF0YToge1xuICAgIGFwcERhdGFJZDogc3RyaW5nO1xuICAgIGNvbmZpZ3VyYXRpb25JZDogc3RyaW5nO1xuICAgIGN1cnJlbnRTdGVwSWQ6IHN0cmluZztcbiAgICBzdGF0dXNJZDogc3RyaW5nO1xuICAgIGxhbmd1YWdlOiBzdHJpbmc7XG4gICAgb2ZmZXJJZDogc3RyaW5nO1xuICAgIGlzU3VibWl0dGVkOiBib29sZWFuO1xuICB9O1xuICBmbHV4OiBBcHBEYXRhU3RlcFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFwcERhdGFJZDogc3RyaW5nID0gJycsXG4gICAgY29uZmlndXJhdGlvbklkOiBzdHJpbmcgPSAnJyxcbiAgICBjdXJyZW50U3RlcElkOiBzdHJpbmcgPSAnJyxcbiAgICBzdGF0dXNJZDogc3RyaW5nID0gJycsXG4gICAgbGFuZ3VhZ2U6IHN0cmluZyA9ICcnLFxuICAgIGZsdXg6IEFwcERhdGFTdGVwW10gPSBbXSxcbiAgICBvZmZlcklkOiBzdHJpbmcgPSAnJyxcbiAgICBpc1N1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlXG4gICkge1xuICAgIHRoaXMubWV0YWRhdGEgPSB7XG4gICAgICBhcHBEYXRhSWQ6IGFwcERhdGFJZCB8fCAnJyxcbiAgICAgIGNvbmZpZ3VyYXRpb25JZDogY29uZmlndXJhdGlvbklkIHx8ICcnLFxuICAgICAgY3VycmVudFN0ZXBJZDogY3VycmVudFN0ZXBJZCB8fCAnJyxcbiAgICAgIHN0YXR1c0lkOiBzdGF0dXNJZCB8fCAnJyxcbiAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSB8fCAnJyxcbiAgICAgIG9mZmVySWQ6IG9mZmVySWQgfHwgJycsXG4gICAgICBpc1N1Ym1pdHRlZDogaXNTdWJtaXR0ZWQgfHwgZmFsc2UsXG4gICAgfTtcbiAgICB0aGlzLmZsdXggPSBmbHV4IHx8IFtdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBEYXRhIHtcbiAgaWQ/OiBudW1iZXI7XG4gIGFwcERhdGFJZDogc3RyaW5nO1xuICBhcHBDb25maWd1cmF0aW9uSWQ6IG51bWJlcjtcbiAgZmlsbERhdGE/OiBBcHBEYXRhRmlsbDtcbiAgd2l0aE5leHRTdGVwOiBib29sZWFuO1xuICBibG9ja1ByZXZpb3VzU3RlcDogYm9vbGVhbjtcbiAgZW52OiBzdHJpbmc7XG4gIHN0YXR1czogQXBwRGF0YVN0YXR1cztcblxuICBjb25zdHJ1Y3RvcihkYXRhOiB7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgYXBwRGF0YUlkOiBzdHJpbmc7XG4gICAgYXBwQ29uZmlndXJhdGlvbklkOiBudW1iZXI7XG4gICAgZmlsbERhdGE/OiBBcHBEYXRhRmlsbDtcbiAgICB3aXRoTmV4dFN0ZXA6IGJvb2xlYW47XG4gICAgYmxvY2tQcmV2aW91c1N0ZXA6IGJvb2xlYW47XG4gICAgZW52OiBzdHJpbmc7XG4gIH0pIHtcbiAgICAodGhpcy5pZCA9IGRhdGEuaWQgPz8gdW5kZWZpbmVkKSwgKHRoaXMuYXBwRGF0YUlkID0gZGF0YS5hcHBEYXRhSWQgfHwgJycpO1xuICAgIHRoaXMuYXBwQ29uZmlndXJhdGlvbklkID0gZGF0YS5hcHBDb25maWd1cmF0aW9uSWQgfHwgMDtcbiAgICB0aGlzLmZpbGxEYXRhID0gZGF0YS5maWxsRGF0YTtcbiAgICB0aGlzLndpdGhOZXh0U3RlcCA9IGRhdGEud2l0aE5leHRTdGVwO1xuICAgIHRoaXMuYmxvY2tQcmV2aW91c1N0ZXAgPSBkYXRhLmJsb2NrUHJldmlvdXNTdGVwO1xuICAgIGlmICghZGF0YS5lbnYpIHtcbiAgICAgIHRoaXMuZW52ID0gJ0NvbmZpZyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW52ID0gZGF0YS5lbnY7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGb3JtTW9kZWxFeHRlbnhpb25zIHtcbiAgZm9ybU1vZGVsOiBGb3JtTW9kZWw7XG5cbiAgY29uc3RydWN0b3IobW9kZWw6IEZvcm1Nb2RlbCkge1xuICAgIHRoaXMuZm9ybU1vZGVsID0gbW9kZWw7XG4gIH1cblxuICBwdWJsaWMgZmx1eEl0ZW1zKFxuICAgIHVudGlsU3RlcElkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5tZXRhZGF0YUZpZWxkcykge1xuICAgICAgdGhpcy5mb3JtTW9kZWwubWV0YWRhdGFGaWVsZHMuZm9yRWFjaCgoZmllbGRWYWx1ZSkgPT4ge1xuICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkVmFsdWUsXG4gICAgICAgICAgZmllbGRUeXBlOiBTdGVwQ29udHJvbFR5cGUuTWV0YWRhdGEsXG4gICAgICAgICAgaWQ6IGBtZXRhZGF0YS4ke2ZpZWxkVmFsdWV9YCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZm9ybU1vZGVsPy5mbHV4KSB7XG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybU1vZGVsLmRvY3VtZW50cz8ubGVuZ3RoID4gMCkge1xuICAgICAgaXRlbXMgPSBpdGVtcy5jb25jYXQodGhpcy5leHRyYWN0RG9jdW1lbnRzRmx1eEl0ZW1zKHRoaXMuZm9ybU1vZGVsLmZsdXgpKTtcbiAgICB9XG4gICAgaXRlbXMgPSBpdGVtcy5jb25jYXQoXG4gICAgICB0aGlzLmV4dHJhY3RTZWN0aW9uc0ZsdXhJdGVtcyh0aGlzLmZvcm1Nb2RlbC5mbHV4LCB1bnRpbFN0ZXBJZGVudGlmaWVyKVxuICAgICk7XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cbiAgcHJpdmF0ZSBleHRyYWN0U2VjdGlvbnNGbHV4SXRlbXMoXG4gICAgc3RlcHM6IFN0ZXBEYXRhW10sXG4gICAgdW50aWxTdGVwSWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG4gICk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgc3RlcCBvZiBzdGVwcykge1xuICAgICAgaWYgKHN0ZXAuc2VjdGlvbnMpIHtcbiAgICAgICAgaWYgKHVudGlsU3RlcElkZW50aWZpZXIgJiYgc3RlcC5pZGVudGlmaWVyID09PSB1bnRpbFN0ZXBJZGVudGlmaWVyKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc3RlcC5zZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgaWYgKHNlY3Rpb24uY29udHJvbHMpIHtcbiAgICAgICAgICAgIHNlY3Rpb24uY29udHJvbHMuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLkJ1dHRvbnMsXG4gICAgICAgICAgICAgICAgICBTdGVwQ29udHJvbFR5cGUuTmV3Um93LFxuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLkZsdXhJbmZvLFxuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLlBhcmFncmFwaCxcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGNvbnRyb2wudHlwZSkgPT0gZmFsc2VcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtzZWN0aW9uLnRpdGxlfSAtPiAke2NvbnRyb2wudGl0bGV9YCxcbiAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogY29udHJvbC50eXBlLFxuICAgICAgICAgICAgICAgICAgbWFudWxJbnB1dENvbnRyb2xUeXBlOiBjb250cm9sLnNwZWNpZmljQ29udHJvbERhdGE/LnR5cGUsXG4gICAgICAgICAgICAgICAgICBpZDogY29udHJvbC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdERvY3VtZW50c0ZsdXhJdGVtcyhzdGVwRGF0YTogU3RlcERhdGFbXSk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgc3RlcERhdGE/LmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgIGlmIChzdGVwLnR5cGUgPT09IEZsdXhUeXBlLlVwbG9hZERvY3VtZW50KSB7XG4gICAgICAgIHN0ZXAuY29uZmlnPy5kb2N1bWVudHM/LmZvckVhY2goXG4gICAgICAgICAgKGRvY3VtZW50OiB7IGRvY3VtZW50SWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudD8uZG9jdW1lbnRJZCxcbiAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybU1vZGVsXG4gICAgICAgICAgICAgICAgKSB8fCBkb2N1bWVudC5uYW1lXG4gICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICBmaWVsZFR5cGU6IHN0ZXAudHlwZSxcbiAgICAgICAgICAgICAgaWQ6IGRvY3VtZW50Py5kb2N1bWVudElkXG4gICAgICAgICAgICAgICAgPyBgdXBsb2FkLiR7ZG9jdW1lbnQuZG9jdW1lbnRJZH1gXG4gICAgICAgICAgICAgICAgOiBgJHtzdGVwLnR5cGV9LiR7c3RlcC5uYW1lfWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAudHlwZSA9PT0gRmx1eFR5cGUuR2VuZXJhdGVEb2N1bWVudCkge1xuICAgICAgICBzdGVwLmNvbmZpZz8uZ2VuZXJhdGVkRG9jdW1lbnRzPy5mb3JFYWNoKFxuICAgICAgICAgIChkb2N1bWVudDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgIGZpZWxkTmFtZTogYCR7c3RlcC5uYW1lfSAtPiAke1xuICAgICAgICAgICAgICAgIEZsdXhIZWxwZXIuZ2V0RG9jdW1lbnROYW1lQnlJZChkb2N1bWVudD8uaWQsIHRoaXMuZm9ybU1vZGVsKSB8fFxuICAgICAgICAgICAgICAgIGRvY3VtZW50Lm5hbWVcbiAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgIGZpZWxkVHlwZTogc3RlcC50eXBlLFxuICAgICAgICAgICAgICBpZDogZG9jdW1lbnQ/LmlkXG4gICAgICAgICAgICAgICAgPyBgZ2VuZXJhdGUuJHtkb2N1bWVudC5pZH1gXG4gICAgICAgICAgICAgICAgOiBgJHtzdGVwLnR5cGV9LiR7c3RlcC5uYW1lfWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAudHlwZSA9PT0gRmx1eFR5cGUuU2lnbikge1xuICAgICAgICBpZiAoc3RlcC5jb25maWc/LmRvY3VtZW50cykge1xuICAgICAgICAgIHN0ZXAuY29uZmlnPy5kb2N1bWVudHMuZm9yRWFjaChcbiAgICAgICAgICAgIChkb2N1bWVudDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICAgIEZsdXhIZWxwZXIuZ2V0RG9jdW1lbnROYW1lQnlJZChcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ/LmlkLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbFxuICAgICAgICAgICAgICAgICAgKSB8fCBkb2N1bWVudC5uYW1lXG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgZmllbGRUeXBlOiBzdGVwLnR5cGUsXG4gICAgICAgICAgICAgICAgaWQ6IGRvY3VtZW50Py5pZFxuICAgICAgICAgICAgICAgICAgPyBgc2lnbi4ke2RvY3VtZW50LmlkfWBcbiAgICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0ZXAuY29uZmlnPy5zeXN0ZW1Eb2N1bWVudHMpIHtcbiAgICAgICAgICBzdGVwLmNvbmZpZz8uc3lzdGVtRG9jdW1lbnRzLmZvckVhY2goXG4gICAgICAgICAgICAoZG9jdW1lbnQ6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgZmllbGROYW1lOiBgJHtzdGVwLm5hbWV9IC0+ICR7XG4gICAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtTW9kZWxcbiAgICAgICAgICAgICAgICAgICkgfHwgZG9jdW1lbnQubmFtZVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogc3RlcC50eXBlLFxuICAgICAgICAgICAgICAgIGlkOiBkb2N1bWVudD8uaWRcbiAgICAgICAgICAgICAgICAgID8gYHN5c3RlbS4ke2RvY3VtZW50LmlkfWBcbiAgICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHVibGljIGZsdXhJdGVtc1dpdGhHZXRBcGlNZXRob2RzKFxuICAgIGV4Y2x1ZGVkTWV0aG9kSWQ6IHN0cmluZyA9ICcnXG4gICk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtcyA9IHRoaXMuZmx1eEl0ZW1zKCk7XG4gICAgdGhpcy5mb3JtTW9kZWwuYXBpLmdldEl0ZW1zLmZvckVhY2goKGFwaU1ldGhvZCkgPT4ge1xuICAgICAgaWYgKGFwaU1ldGhvZC5pZCAhPT0gZXhjbHVkZWRNZXRob2RJZCkge1xuICAgICAgICBhcGlNZXRob2QuZmllbGRzPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZE5hbWU6IGAke2FwaU1ldGhvZC5tZXRob2R9IC0+ICR7Zi5maWVsZE5hbWV9YCxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogU3RlcENvbnRyb2xUeXBlLkFwaU1ldGhvZEZpZWxkLFxuICAgICAgICAgICAgaWQ6IGYuaWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHVibGljIG9mZmVyTWV0aG9kc0l0ZW1zKCk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgbGV0IG9mZmVyTWV0aG9kc0lkczogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLmZvcm1Nb2RlbC5wYXJ0bmVycz8uZm9yRWFjaCgocCkgPT4ge1xuICAgICAgcC5nZW5lcmFsU2V0dGluZ3Mub2ZmZXJzPy5mb3JFYWNoKChvKSA9PiB7XG4gICAgICAgIG9mZmVyTWV0aG9kc0lkcy5wdXNoKG8uYXBpTWV0aG9kSWQpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBvZmZlck1ldGhvZHNJZHMgPSBbLi4ubmV3IFNldChvZmZlck1ldGhvZHNJZHMpXTtcblxuICAgIGNvbnN0IGFsbEFwaUl0ZW1zID0gW1xuICAgICAgLi4udGhpcy5mb3JtTW9kZWwuYXBpLmdldEl0ZW1zLFxuICAgICAgLi4udGhpcy5mb3JtTW9kZWwuYXBpLnZhbGlkYXRpb25JdGVtcyxcbiAgICAgIC4uLnRoaXMuZm9ybU1vZGVsLmFwaS5zZW5kSXRlbXMsXG4gICAgXTtcblxuICAgIG9mZmVyTWV0aG9kc0lkcy5mb3JFYWNoKChtZXRob2RJZCkgPT4ge1xuICAgICAgY29uc3QgYXBpTWV0aG9kID0gYWxsQXBpSXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gbWV0aG9kSWQpO1xuICAgICAgaWYgKGFwaU1ldGhvZCkge1xuICAgICAgICBhcGlNZXRob2QuZmllbGRzPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZE5hbWU6IGAke2FwaU1ldGhvZC5tZXRob2R9IC0+ICR7Zi5maWVsZE5hbWV9YCxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogRmx1eFR5cGUuVmlld09mZmVyLFxuICAgICAgICAgICAgaWQ6IGBhcGlfJHthcGlNZXRob2QuaWR9IC0+ICR7Zi5pZH1gLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBpRGF0YSB7XG4gIGdldEl0ZW1zOiBHZXRBcGlJdGVtW107XG4gIHZhbGlkYXRpb25JdGVtczogQXBpSXRlbVtdO1xuICBzZW5kSXRlbXM6IEFwaUl0ZW1bXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwaUl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBtZXRob2Q6IHN0cmluZztcbiAgZmllbGRzOiBNZXRob2RGaWVsZFtdO1xuICB0eXBlOiBBcGlNZXRob2RUeXBlO1xufVxuXG5leHBvcnQgY2xhc3MgR2V0QXBpSXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBmaWVsZHM6IEdldE1ldGhvZEZpZWxkW107XG4gIHR5cGU6IEFwaU1ldGhvZFR5cGU7XG59XG5leHBvcnQgY2xhc3MgRGVzaWduTW9kZWwge1xuICBmb250czogRm9udENvbmZpZ1tdID0gW107XG4gIGJ1dHRvbnM6IEJ1dHRvbkNvbmZpZ1tdID0gW107XG4gIG90cEFjdGlvbkJ1dHRvbnM6IEJ1dHRvbkNvbmZpZ1tdID0gW107XG4gIGNvbXBvbmVudHM6IENvbXBvbmVudENvbmZpZ1tdID0gW107XG4gIHRhYmxlczogVGFibGVDb25maWdbXSA9IFtdO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgZm9udFNpemU6IHN0cmluZztcbiAgYnV0dG9uc0hvcml6b250YWxQb3NpdGlvbjogc3RyaW5nO1xuICBidXR0b25zVmVydGljYWxQb3NpdGlvbjogc3RyaW5nO1xuICBtYXhXaWR0aDogc3RyaW5nO1xuICBtYXJnaW5MZWZ0OiBzdHJpbmc7XG4gIG1hcmdpblJpZ2h0OiBzdHJpbmc7XG4gIG1hcmdpblRvcDogc3RyaW5nO1xuICBtYXJnaW5Cb3R0b206IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLmZvbnRzKSB7XG4gICAgICAgIHRoaXMuZm9udHMgPSBkYXRhLmZvbnRzLm1hcCgoZm9udDogYW55KSA9PiBuZXcgRm9udENvbmZpZyhmb250KSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmJ1dHRvbnMpIHtcbiAgICAgICAgdGhpcy5idXR0b25zID0gZGF0YS5idXR0b25zLm1hcChcbiAgICAgICAgICAoYnV0dG9uOiBhbnkpID0+IG5ldyBCdXR0b25Db25maWcoYnV0dG9uKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5jb21wb25lbnRzKSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50cyA9IGRhdGEuY29tcG9uZW50cy5tYXAoXG4gICAgICAgICAgKGNvbXBvbmVudDogYW55KSA9PiBuZXcgQ29tcG9uZW50Q29uZmlnKGNvbXBvbmVudClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEudGFibGVzKSB7XG4gICAgICAgIHRoaXMudGFibGVzID0gZGF0YS50YWJsZXMubWFwKCh0YWJsZTogYW55KSA9PiBuZXcgVGFibGVDb25maWcodGFibGUpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5idXR0b25zSG9yaXpvbnRhbFBvc2l0aW9uID0gZGF0YS5ob3Jpem9udGFsUG9zaXRpb247XG4gICAgICB0aGlzLmJ1dHRvbnNWZXJ0aWNhbFBvc2l0aW9uID0gZGF0YS52ZXJ0aWNhbFBvc2l0aW9uO1xuICAgICAgdGhpcy5tYXhXaWR0aCA9IGRhdGEubWF4V2lkdGg7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGb250Q29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBmb250RmFtaWx5OiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGZvbnRXZWlnaHQ6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGxldHRlclNwYWNpbmc6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseTtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5jb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLmZvbnRXZWlnaHQgPSBkYXRhLmZvbnRXZWlnaHQ7XG4gICAgICB0aGlzLnRleHRBbGlnbiA9IGRhdGEudGV4dEFsaWduO1xuICAgICAgdGhpcy5sZXR0ZXJTcGFjaW5nID0gZGF0YS5sZXR0ZXJTcGFjaW5nO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbiAgYm9yZGVyOiBzdHJpbmc7XG4gIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gIGJvcmRlclJhZGl1czogc3RyaW5nO1xuICBob3Jpem9udGFsUGFkZGluZzogc3RyaW5nO1xuICB2ZXJ0aWNhbFBhZGRpbmc6IHN0cmluZztcbiAgZm9udEZhbWlseTogc3RyaW5nO1xuICBmb250U2l6ZTogc3RyaW5nO1xuICBsZXR0ZXJTcGFjaW5nOiBzdHJpbmc7XG4gIHdpZHRoOiBzdHJpbmc7XG4gIGhlaWdodDogc3RyaW5nO1xuICBtaW5XaWR0aDogc3RyaW5nO1xuICBtaW5IZWlnaHQ6IHN0cmluZztcbiAgbWF4V2lkdGg6IHN0cmluZztcbiAgbWF4SGVpZ2h0OiBzdHJpbmc7XG4gIGhvcml6b250YWxQb3NpdGlvbj86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLmNvbG9yID0gZGF0YS5jb2xvcjtcbiAgICAgIHRoaXMuYm9yZGVyID0gZGF0YS5ib3JkZXI7XG4gICAgICB0aGlzLmJvcmRlckNvbG9yID0gZGF0YS5ib3JkZXJDb2xvcjtcbiAgICAgIHRoaXMuYm9yZGVyUmFkaXVzID0gZGF0YS5ib3JkZXJSYWRpdXM7XG4gICAgICB0aGlzLmhvcml6b250YWxQYWRkaW5nID0gZGF0YS5ob3Jpem9udGFsUGFkZGluZztcbiAgICAgIHRoaXMudmVydGljYWxQYWRkaW5nID0gZGF0YS52ZXJ0aWNhbFBhZGRpbmc7XG4gICAgICB0aGlzLmZvbnRGYW1pbHkgPSBkYXRhLmZvbnRGYW1pbHk7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMubGV0dGVyU3BhY2luZyA9IGRhdGEubGV0dGVyU3BhY2luZztcbiAgICAgIHRoaXMud2lkdGggPSBkYXRhLndpZHRoO1xuICAgICAgdGhpcy5oZWlnaHQgPSBkYXRhLmhlaWdodDtcbiAgICAgIHRoaXMubWluV2lkdGggPSBkYXRhLm1pbldpZHRoO1xuICAgICAgdGhpcy5taW5IZWlnaHQgPSBkYXRhLm1pbkhlaWdodDtcbiAgICAgIHRoaXMubWF4V2lkdGggPSBkYXRhLm1heFdpZHRoO1xuICAgICAgdGhpcy5tYXhIZWlnaHQgPSBkYXRhLm1heEhlaWdodDtcbiAgICAgIHRoaXMuaG9yaXpvbnRhbFBvc2l0aW9uID0gZGF0YS5ob3Jpem9udGFsUG9zaXRpb247XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUNvbmZpZyB7XG4gIGhlYWRlckNvbmZpZzogSGVhZGVyQ29uZmlnO1xuICBkZXRhaWxDb25maWc6IERldGFpbENvbmZpZztcblxuICBjb25zdHJ1Y3Rvcih0YWJsZT86IGFueSkge1xuICAgIGlmICh0YWJsZSkge1xuICAgICAgdGhpcy5oZWFkZXJDb25maWcgPSB0YWJsZS5oZWFkZXJDb25maWc7XG4gICAgICB0aGlzLmRldGFpbENvbmZpZyA9IHRhYmxlLmRldGFpbENvbmZpZztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhlYWRlckNvbmZpZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIHRleHRDb2xvcjogc3RyaW5nO1xuICBib3JkZXI6IHN0cmluZztcbiAgYm9yZGVyQ29sb3I6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGZvbnRGYW1pbHk6IHN0cmluZztcbiAgZm9udFNpemU6IHN0cmluZztcbiAgbGV0dGVyU3BhY2luZzogc3RyaW5nO1xuICBwYWRkaW5nOiBzdHJpbmc7XG4gIGJvcmRlckNvbGxhcHNlOiBzdHJpbmc7XG4gIGJvcmRlclNwYWNpbmc6IHN0cmluZztcbiAgdmVydGljYWxBbGlnbjogc3RyaW5nO1xuICB3aWR0aDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLnRleHRDb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLmJvcmRlciA9IGRhdGEuYm9yZGVyO1xuICAgICAgdGhpcy50ZXh0QWxpZ24gPSBkYXRhLnRleHRBbGlnbjtcbiAgICAgIHRoaXMuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseTtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5sZXR0ZXJTcGFjaW5nID0gZGF0YS5sZXR0ZXJTcGFjaW5nO1xuICAgICAgdGhpcy5wYWRkaW5nID0gZGF0YS5wYWRkaW5nO1xuICAgICAgdGhpcy5ib3JkZXJDb2xsYXBzZSA9IGRhdGEuYm9yZGVyQ29sbGFwc2U7XG4gICAgICB0aGlzLmJvcmRlclNwYWNpbmcgPSBkYXRhLmJvcmRlclNwYWNpbmc7XG4gICAgICB0aGlzLnZlcnRpY2FsQWxpZ24gPSBkYXRhLnZlcnRpY2FsQWxpZ247XG4gICAgICB0aGlzLndpZHRoID0gZGF0YS53aWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZXRhaWxDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICB0ZXh0Q29sb3I6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGxldHRlclNwYWNpbmc6IHN0cmluZztcbiAgcGFkZGluZzogc3RyaW5nO1xuICByb3dCb3JkZXI6IHN0cmluZztcbiAgcm93Qm9yZGVyQ29sb3I6IHN0cmluZztcbiAgaG92ZXJCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgdmVydGljYWxBbGlnbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE/OiBhbnkpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5uYW1lID0gZGF0YS5uYW1lO1xuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMudGV4dENvbG9yID0gZGF0YS5jb2xvcjtcbiAgICAgIHRoaXMudGV4dEFsaWduID0gZGF0YS50ZXh0QWxpZ247XG4gICAgICB0aGlzLmxldHRlclNwYWNpbmcgPSBkYXRhLmxldHRlclNwYWNpbmc7XG4gICAgICB0aGlzLnBhZGRpbmcgPSBkYXRhLnBhZGRpbmc7XG4gICAgICB0aGlzLnJvd0JvcmRlciA9IGRhdGEucm93Qm9yZGVyO1xuICAgICAgdGhpcy5ob3ZlckJhY2tncm91bmRDb2xvciA9IGRhdGEuaG92ZXJCYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLnZlcnRpY2FsQWxpZ24gPSBkYXRhLnZlcnRpY2FsQWxpZ247XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICBib3JkZXI6IHN0cmluZztcbiAgYm9yZGVyUmFkaXVzOiBzdHJpbmc7XG4gIGxhYmVsU3R5bGU6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBib3JkZXJDb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgd2VpZ2h0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzdGFydENvbG9yPzogc3RyaW5nO1xuICBlbmRDb2xvcj86IHN0cmluZztcbiAgaGVpZ2h0Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE/OiBhbnkpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5uYW1lID0gZGF0YS5uYW1lO1xuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMuYm9yZGVyID0gZGF0YS5ib3JkZXI7XG4gICAgICB0aGlzLmJvcmRlclJhZGl1cyA9IGRhdGEuYm9yZGVyUmFkaXVzO1xuICAgICAgdGhpcy5sYWJlbFN0eWxlID0gZGF0YS5sYWJlbFN0eWxlO1xuICAgICAgdGhpcy50ZXh0QWxpZ24gPSBkYXRhLnRleHRBbGlnbjtcbiAgICAgIHRoaXMuY29sb3IgPSBkYXRhLmNvbG9yO1xuICAgICAgdGhpcy53ZWlnaHQgPSBkYXRhLndlaWdodDtcbiAgICAgIHRoaXMuc3RhcnRDb2xvciA9IGRhdGEuc3RhcnRDb2xvcjtcbiAgICAgIHRoaXMuZW5kQ29sb3IgPSBkYXRhLmVuZENvbG9yO1xuICAgICAgdGhpcy5oZWlnaHQgPSBkYXRhLmhlaWdodDtcbiAgICB9XG4gIH1cbn1cbmV4cG9ydCBjbGFzcyBEaXNwbGF5TW9kZWwge1xuICBzZWN0aW9uczogU2VjdGlvbkRhdGFbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEdlbmVyYWxEYXRhTW9kZWwge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFwcGxpY2F0aW9uVHlwZTogbnVtYmVyO1xuICBsYW5ndWFnZXM6IHN0cmluZ1tdO1xuICBkZWZhdWx0TGFuZ3VhZ2U6IHN0cmluZztcbiAgY29udGludWVXaXRoT2ZmZXI6IGJvb2xlYW47XG4gIHNob3dDb3VudGVyU3RlcDogYm9vbGVhbjtcbiAgc2hvd05hbWVTdGVwOiBib29sZWFuO1xuICBzaG93QWxsU3RlcHM6IGJvb2xlYW47XG4gIHNob3dQcm9ncmVzc0JhcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3Jtc1N0YXRlIHtcbiAgZGF0YTogRm9ybU1vZGVsO1xuICBzZWxlY3RlZFRhYjogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGNhbkdldEZyb21Qcm9kOiBib29sZWFuO1xuICBjYW5HZXRGcm9tVGVzdDogYm9vbGVhbjtcbiAgY2FuUHVibGlzaEluUHJvZDogYm9vbGVhbjtcbiAgY2FuUHVibGlzaEluVGVzdDogYm9vbGVhbjtcbiAgYXBwbGljYXRpb25VdWlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsRm9ybXVsYXJlU3RhdGU6IEZvcm1zU3RhdGUgPSB7XG4gIGRhdGE6IHtcbiAgICBhcHBsaWNhdGlvbklkOiAwLFxuICAgIGFwcGxpY2F0aW9uVXVpZDogJycsXG4gICAgZ2VuZXJhbERhdGE6IHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYXBwbGljYXRpb25UeXBlOiAwLFxuICAgICAgbGFuZ3VhZ2VzOiBbXSxcbiAgICAgIGRlZmF1bHRMYW5ndWFnZTogJycsXG4gICAgICBjb250aW51ZVdpdGhPZmZlcjogZmFsc2UsXG4gICAgICBzaG93Q291bnRlclN0ZXA6IGZhbHNlLFxuICAgICAgc2hvd05hbWVTdGVwOiBmYWxzZSxcbiAgICAgIHNob3dBbGxTdGVwczogZmFsc2UsXG4gICAgICBzaG93UHJvZ3Jlc3NCYXI6IGZhbHNlLFxuICAgIH0sXG4gICAgZGVzaWduOiB7XG4gICAgICBmb250czogW10sXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIG90cEFjdGlvbkJ1dHRvbnM6IFtdLFxuICAgICAgY29tcG9uZW50czogW10sXG4gICAgICB0YWJsZXM6IFtdLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAnJyxcbiAgICAgIGZvbnRTaXplOiAnJyxcbiAgICAgIGJ1dHRvbnNIb3Jpem9udGFsUG9zaXRpb246ICcnLFxuICAgICAgYnV0dG9uc1ZlcnRpY2FsUG9zaXRpb246ICcnLFxuICAgICAgbWF4V2lkdGg6ICcnLFxuICAgICAgbWFyZ2luTGVmdDogJycsXG4gICAgICBtYXJnaW5SaWdodDogJycsXG4gICAgICBtYXJnaW5Ub3A6ICcnLFxuICAgICAgbWFyZ2luQm90dG9tOiAnJyxcbiAgICB9LFxuICAgIGZsdXg6IFtdLFxuICAgIGFwaTogeyBnZXRJdGVtczogW10sIHZhbGlkYXRpb25JdGVtczogW10sIHNlbmRJdGVtczogW10gfSxcbiAgICBwYXJ0bmVyczogW10sXG4gICAgZG9jdW1lbnRzOiBbXSxcbiAgICBzdGF0dXNlczogW10sXG4gICAgZGlzcGxheToge1xuICAgICAgc2VjdGlvbnM6IFtdLFxuICAgIH0sXG4gICAgZ2VuZXJhdGVkQ3NzOiB7fSxcbiAgICBtZXRhZGF0YUZpZWxkczogW10sXG4gICAgZXJyb3JzOiB7fSxcbiAgICBhcHBsaWNhdGlvbk1hcHBpbmdzOiB7XG4gICAgICBhcHBsaWNhdGlvblR5cGVJZDogMCxcbiAgICAgIGNvbHVtbk1hcHBpbmdzOiBbXSxcbiAgICB9LFxuICB9LFxuICBzZWxlY3RlZFRhYjogJ0RhdGUgZ2VuZXJhbGUnLFxuICBjYW5HZXRGcm9tUHJvZDogZmFsc2UsXG4gIGNhbkdldEZyb21UZXN0OiBmYWxzZSxcbiAgY2FuUHVibGlzaEluUHJvZDogZmFsc2UsXG4gIGNhblB1Ymxpc2hJblRlc3Q6IGZhbHNlLFxuICBhcHBsaWNhdGlvblV1aWQ6ICcnLFxuICB2ZXJzaW9uOiAnJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyRGljdGlvbmFyeU1hcHBpbmcge1xuICBkaWN0aW9uYXJ5SWQ6IHN0cmluZztcbiAgZGljdGlvbmFyeU5hbWU6IHN0cmluZztcbiAgbWFwcGluZ3M6IFBhcnRuZXJLZXlWYWx1ZUl0ZW1bXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJTZXR0aW5ncyB7XG4gIHBhcnRuZXJNZXRob2RzQXBpOiBQYXJ0bmVyTWV0aG9kQXBpW10gPSBbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RBcGkge1xuICBtZXRob2RJZDogc3RyaW5nO1xuICBtZXRob2RUeXBlOiBzdHJpbmc7XG4gIGNhbGxUeXBlOiBzdHJpbmc7XG4gIGJvZHlDb25maWd1cmF0aW9uOiBQYXJ0bmVyTWV0aG9kQm9keTtcbiAgcmVzcG9uc2VDb25maWd1cmF0aW9uOiBQYXJ0bmVyTWV0aG9kUmVzcG9uc2U7XG4gIHVybENvbmZpZ3VyYXRpb246IFBhcnRuZXJNZXRob2RVcmw7XG4gIGF1dGhWYWx1ZTogUGFydG5lck1ldGhvZEFwaUF1dGg7XG4gIGhlYWRlcnM6IFBhcnRuZXJLZXlWYWx1ZUl0ZW1bXTtcbiAgLy8gSU5CT1VORC1zcGVjaWZpYyBwcm9wZXJ0aWVzXG4gIGluYm91bmRNZXRob2RUeXBlPzogSW5ib3VuZE1ldGhvZFR5cGU7IC8vIFR5cGUgb2YgSU5CT1VORCBtZXRob2Rcbn1cblxuZXhwb3J0IGVudW0gSW5ib3VuZE1ldGhvZFR5cGUge1xuICBTdGFuZGFyZCA9ICdTdGFuZGFyZCcsXG4gIFN0YXR1c01ldGhvZCA9ICdTdGF0dXNNZXRob2QnLFxufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZEFwaUF1dGgge1xuICBoZWFkZXJOYW1lOiBzdHJpbmcgfCBudWxsO1xuICBhcGlLZXk6IHN0cmluZyB8IG51bGw7XG4gIGF1dGhUeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyS2V5VmFsdWVJdGVtIHtcbiAga2V5OiBzdHJpbmc7XG4gIGtleU5hbWU6IHN0cmluZyB8IG51bGw7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgUGFydG5lclN0YXR1c01hcHBpbmcge1xuICBwYXJ0bmVyU3RhdHVzOiBzdHJpbmc7XG4gIGFwcFN0YXR1czogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZFVybCB7XG4gIHVybFZhbHVlOiBzdHJpbmc7XG4gIHRpbWVvdXQ6IG51bWJlcjtcbiAgdGVzdFVybDogc3RyaW5nO1xuICBwcm9kVXJsOiBzdHJpbmc7XG4gIHBhcmFtZXRlck1hcHBpbmdzOiBVcmxNYXBGaWVsZHNbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RSZXNwb25zZSB7XG4gIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gIGpzb25WYWx1ZTogc3RyaW5nO1xuICByZXNwb25zZU1hcEZpZWxkczogRmllbGRzTWFwcGluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgVXJsTWFwRmllbGRzIHtcbiAgdXJsUGFyYW1ldGVyOiBzdHJpbmc7XG4gIGZsdXhGaWVsZDogc3RyaW5nO1xuICBmbHV4RmllbGRJZDogc3RyaW5nO1xuICBmaWVsZFR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RCb2R5IHtcbiAgY29udGVudFR5cGU6IHN0cmluZztcbiAganNvblZhbHVlOiBzdHJpbmc7XG4gIGJvZHlNYXBGaWVsZHM6IEZpZWxkc01hcHBpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEZpZWxkc01hcHBpbmcge1xuICBwYXJ0bmVyRmllbGQ6IHN0cmluZztcbiAgZmx1eEZpZWxkSWQ6IHN0cmluZztcbiAgbWV0aG9kRmllbGRJZDogc3RyaW5nO1xuICBmaWVsZFR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIE1ldGhvZEZpZWxkIHtcbiAgaWQ6IHN0cmluZztcbiAgZmllbGROYW1lOiBzdHJpbmc7XG4gIGZpZWxkVHlwZTogU3RlcENvbnRyb2xUeXBlIHwgRmx1eFR5cGUgfCBzdHJpbmc7XG4gIG1hbnVsSW5wdXRDb250cm9sVHlwZT86IE1hbnVhbElucHV0Q29udHJvbFR5cGUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRNZXRob2RGaWVsZCB7XG4gIGlkOiBzdHJpbmc7XG4gIGZpZWxkTmFtZTogc3RyaW5nO1xuICBmaWVsZFR5cGU6IFN0ZXBDb250cm9sVHlwZSB8IEZsdXhUeXBlIHwgc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNYW51YWxJbnB1dENvbnRyb2xEYXRhIHtcbiAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZTtcbiAgaXNTaW1wbGVWYWxpZGF0aW9uOiBib29sZWFuO1xuICBpc0FwaVZhbGlkYXRpb246IGJvb2xlYW47XG4gIGFwaVZhbGlkYXRpb25NZXRob2Q/OiBzdHJpbmcgfCBudWxsO1xuICBhcGlWYWxpZGF0aW9uUGFydG5lcj86IHN0cmluZyB8IG51bGw7XG4gIGFsbG93ZWRDaGFyYWN0ZXJzPzogc3RyaW5nO1xuICBtYXhDaGFyYWN0ZXJzPzogbnVtYmVyO1xuICBtaW5WYWx1ZT86IG51bWJlcjtcbiAgbWF4VmFsdWU/OiBudW1iZXI7XG4gIGFsbG93T25seVBhc3Q/OiBib29sZWFuO1xuICBhbGxvd09ubHlGdXR1cmU/OiBib29sZWFuO1xuICBpc01hbmRhdG9yeTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcmFncmFwaENvbnRyb2xEYXRhIHtcbiAgZGVzY3JpcHRpb25UcmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xuICBpc01hbmRhdG9yeTogYm9vbGVhbjtcbiAgaXNNYW5kYXRvcnlUcmFuc2xhdGlvbnM/OiBMYWJlbEluZm9bXTtcbn1cblxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlDb250cm9sRGF0YSB7XG4gIGRpY3Rpb25hcnlVVUlEOiBzdHJpbmc7XG4gIHNob3dBc1JhZGlvQnV0dG9uc0xpc3Q6IGJvb2xlYW47XG4gIHJlbGF0ZWREaWN0aW9uYXJpZXNUcmFuc2xhdGlvbnM6IERpY3Rpb25hcnlMYWJlbEluZm9bXTtcbiAgZGljdGlvbmFyeURlZmF1bHRWYWx1ZUlkPzogbnVtYmVyIHwgbnVsbDtcbiAgc2VsZWN0ZWRSZWxhdGVkRGljdGlvbmFyaWVzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGVudW0gRmx1eFR5cGUge1xuICBLeWMgPSAwLFxuICBFbWFpbCA9IDEsXG4gIFBob25lID0gMixcbiAgU2lnbiA9IDMsXG4gIFN0YXR1cyA9IDQsXG4gIEN1c3RvbSA9IDUsXG4gIFBhdXNlID0gNixcbiAgSWRTY2FuID0gNyxcbiAgR2VuZXJhdGVEb2N1bWVudCA9IDgsXG4gIEFjdGlvbiA9IDksXG4gIFVwbG9hZERvY3VtZW50ID0gMTAsXG4gIERvd25sb2FkRG9jdW1lbnQgPSAxMSxcbiAgVmlld09mZmVyID0gMTIsXG4gIEZpbmFsID0gMTMsXG4gIFZpZXdEb2N1bWVudCA9IDE0LFxuICBORVRPUElBID0gMTUsXG4gIEVVUExBVEVTQyA9IDE2LFxuICBPcGVuQmFua2luZyA9IDE3LFxufVxuXG5leHBvcnQgZW51bSBTZWN0aW9uVHlwZSB7XG4gIFByZXNlbnRhdGlvbixcbiAgQ29sbGVjdCxcbiAgRGlzcGxheSxcbn1cblxuZXhwb3J0IGVudW0gU3RlcENvbnRyb2xUeXBlIHtcbiAgTWFudWFsSW5wdXQgPSAwLFxuICBQYXJhZ3JhcGggPSAxLFxuICBDaGVja0JveCA9IDIsXG4gIERpY3Rpb25hcnkgPSAzLFxuICBCdXR0b25zID0gNCxcbiAgRmx1eEluZm8gPSA1LFxuICBOZXdSb3cgPSA2LFxuICBNZXRhZGF0YSA9IDcsXG4gIEFwaU1ldGhvZEZpZWxkID0gOCxcbiAgRG93bmxvYWREb2N1bWVudHMgPSA5LFxuICBWaWV3RG9jdW1lbnRzID0gMTAsXG4gIFVwbG9hZERvY3VtZW50cyA9IDExLFxufVxuXG5leHBvcnQgZW51bSBEaW1lbnNpb25UeXBlIHtcbiAgUGVyY2VudGFnZSxcbiAgUGl4ZWxzLFxufVxuXG5leHBvcnQgZW51bSBNYW51YWxJbnB1dENvbnRyb2xUeXBlIHtcbiAgVGV4dCxcbiAgTnVtZXJpYyxcbiAgRGF0ZVRpbWUsXG4gIEVtYWlsLFxuICBQaG9uZSxcbiAgVGV4dEFyZWEsXG59XG5cbmV4cG9ydCBlbnVtIFNpZ25hdHVyZVR5cGUge1xuICBFbGVjdHJvbmljLFxuICBIYW5kd3JpdHRlbixcbiAgUXVhbGlmaWVkLFxufVxuXG5leHBvcnQgZW51bSBBcGlNZXRob2RUeXBlIHtcbiAgR2V0RGF0YSxcbiAgU2VuZERhdGEsXG4gIFZhbGlkYXRpb24sXG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0dXNNb2RlbCB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbiAgZmluYWw6IGJvb2xlYW47XG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICBhY3Rpb25zOiBTdGF0dXNBY3Rpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZGVudW1pcmU6IHN0cmluZyxcbiAgICBvcmRpbmU6IG51bWJlcixcbiAgICBmaW5hbDogYm9vbGVhbixcbiAgICBpc0FjdGl2ZTogYm9vbGVhbixcbiAgICBhY3Rpb25zOiBTdGF0dXNBY3Rpb25bXVxuICApIHtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5uYW1lID0gZGVudW1pcmU7XG4gICAgdGhpcy5vcmRlciA9IG9yZGluZTtcbiAgICB0aGlzLmZpbmFsID0gZmluYWw7XG4gICAgdGhpcy5pc0FjdGl2ZSA9IGlzQWN0aXZlO1xuICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0YXR1c0FjdGlvbiB7XG4gIGlkPzogc3RyaW5nO1xuICBhY3Rpb25UaXRsZTogc3RyaW5nO1xuICBhcGlNZXRob2RJZDogc3RyaW5nO1xuICBwYXJ0bmVySWRzOiBudW1iZXJbXSA9IFtdO1xufVxuXG5leHBvcnQgY2xhc3MgUHJlc2VudGF0aW9uUGFyYWdyYXBoQ29udHJvbCBleHRlbmRzIFByZXNlbnRhdGlvbkNvbnRyb2wge1xuICBkZXNjcmlwdGlvblRyYW5zbGF0aW9uczogTGFiZWxJbmZvW107XG59XG5cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXIgZXh0ZW5kcyBQYXJ0bmVyIHtcbiAgZG9jdW1lbnRzPzogQXBwUGFydG5lckRvY3VtZW50c1tdID0gW107XG4gIGdlbmVyYWxTZXR0aW5nczogQXBwUGFydG5lckdlbmVyYWxTZXR0aW5ncztcbiAgcGFydG5lclNldHRpbmdzOiBQYXJ0bmVyU2V0dGluZ3M7XG4gIHBhcnRuZXJEaWN0aW9uYXJ5TWFwcGluZzogUGFydG5lckRpY3Rpb25hcnlNYXBwaW5nW107XG4gIHBhcnRuZXJTdGF0dXNNYXBwaW5nOiBQYXJ0bmVyU3RhdHVzTWFwcGluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwUGFydG5lckdlbmVyYWxTZXR0aW5ncyB7XG4gIGFjY2VwdE11bHRpcGxlT2ZmZXJzOiBib29sZWFuO1xuICBvZmZlcnM6IEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NPZmZlcltdID0gW107XG4gIHJlY2VpdmVkT2ZmZXJzOiBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzUmVjZWl2ZWRPZmZlcltdID0gW107XG4gIHZhbGFiaWxpdHk6IG51bWJlcjtcbiAgaGFzQ3VzdG9tVmFsYWJpbGl0eTogYm9vbGVhbjtcbiAgc3RhdHVzV29ya2VyU2V0dGluZ3M6IEFwcFN0YXR1c1dvcmtlclNldHRpbmdzO1xufVxuZXhwb3J0IGNsYXNzIEFwcFN0YXR1c1dvcmtlclNldHRpbmdzIHtcbiAgbWF4UmV0cmllczogbnVtYmVyO1xuICBsb29wSW50ZXJ2YWw6IG51bWJlcjtcbn1cbmV4cG9ydCBjbGFzcyBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzT2ZmZXIge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGFwaU1ldGhvZElkOiBzdHJpbmc7XG4gIGlkZW50aWZpZXI6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgY3VzdG9tVmFsYWJpbGl0eT86IG51bWJlcjtcbiAgYXBpTWV0aG9kRmllbGRzPzogYW55W10gPSBbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NSZWNlaXZlZE9mZmVyIHtcbiAgaWQ6IHN0cmluZztcbiAgb2ZmZXJzOiBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzT2ZmZXJbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXJEb2N1bWVudHMge1xuICBpZDogc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIGRvY3VtZW50TmFtZTogc3RyaW5nO1xuICBhcGlNZXRob2RJZDogc3RyaW5nO1xuICBpc0VkaXRNb2RlOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwRG9jdW1lbnQge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRyYW5zbGF0aW9uczogTGFiZWxJbmZvW107XG4gIGdlbmVyYXRlZEJ5QXBwOiBib29sZWFuO1xuICBpc1N0YXRpYzogYm9vbGVhbjtcbiAgaXNBY3RpdmU6IGJvb2xlYW47XG4gIHZlcnNpb25zOiBBcHBEb2N1bWVudFZlcnNpb25bXSA9IFtdO1xufVxuZXhwb3J0IGNsYXNzIFNpZ25lZERvY3VtZW50IGV4dGVuZHMgQXBwRG9jdW1lbnQge1xuICBzb3VyY2VEb2N1bWVudHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcERvY3VtZW50RXh0ZW5kZWQgZXh0ZW5kcyBBcHBEb2N1bWVudCB7XG4gIGlzQXBpRG9jdW1lbnQ/OiBib29sZWFuOyBcbn1cblxuZXhwb3J0IGNsYXNzIEFwcERvY3VtZW50VmVyc2lvbiB7XG4gIGlkOiBudW1iZXI7XG4gIGFwcGxpY2F0aW9uSWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIHZlcnNpb246IG51bWJlcjtcbiAgdmFsaWRGcm9tOiBEYXRlO1xuICB2YWxpZFRvOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBpc0VkaXRNb2RlOiBib29sZWFuO1xuICBkYXRhOiBzdHJpbmcgfCBudWxsO1xuICBmbHV4Qm9va21hcmtzOiBCb29rbWFya01hcHBpbmdbXTtcbiAgaXNUZW1wb3Jhcnk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBCb29rbWFya01hcHBpbmcge1xuICBib29rbWFyazogc3RyaW5nO1xuICBjb250cm9sSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yVHJhbnNsYXRpb25zIHtcbiAgY29kZTogc3RyaW5nO1xuICB0cmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xufVxuXG5leHBvcnQgY2xhc3MgVXBsb2FkRG9jdW1lbnQge1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGZpbGVEYXRhOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBVcGxvYWREb2N1bWVudERldGFpbHMgZXh0ZW5kcyBVcGxvYWREb2N1bWVudCB7XG4gIGRvY3VtZW50TmFtZTogc3RyaW5nO1xuICBkb2N1bWVudEV4dGVuc2lvbnM6IHN0cmluZztcbiAgZG9jdW1lbnRNYXhTaXplOiBudW1iZXI7XG4gIGlzTWFuZGF0b3J5OiBib29sZWFuO1xuICBpc1VwbG9hZGluZzogYm9vbGVhbjtcbiAgaXNVcGxvYWRTdWNjZXNzOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgU3RlcHNTZXR0aW5ncyB7XG4gIHNob3dDb3VudGVyOiBib29sZWFuO1xuICBzaG93TGFiZWxzOiBib29sZWFuO1xuICBzaG93QWxsU3RlcHM6IGJvb2xlYW47XG4gIHNob3dQcm9ncmVzc0JhcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gQXBwRGF0YVN0YXR1cyB7XG4gIG5ldyA9IDAsXG4gIGZpbmlzaGVkID0gMSxcbn1cbiJdfQ==
|