@valtimo/dossier-management 11.3.2 → 12.0.1
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/esm2022/lib/components/dossier-management-assignee/dossier-management-assignee.component.mjs +7 -7
- package/esm2022/lib/components/dossier-management-connect-modal/dossier-management-connect-modal.component.mjs +7 -7
- package/esm2022/lib/components/dossier-management-create/dossier-management-create.component.mjs +119 -0
- package/esm2022/lib/components/dossier-management-detail/dossier-management-detail.component.mjs +34 -12
- package/esm2022/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.mjs +111 -36
- package/esm2022/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.component.mjs +159 -0
- package/esm2022/lib/components/dossier-management-document-definition/dossier-management-document-definition.component.mjs +147 -0
- package/esm2022/lib/components/dossier-management-list/dossier-management-list.component.mjs +33 -16
- package/esm2022/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.mjs +12 -11
- package/esm2022/lib/components/dossier-management-processes/dossier-management-processes.component.mjs +7 -7
- package/esm2022/lib/components/dossier-management-remove-modal/dossier-management-remove-modal.component.mjs +7 -7
- package/esm2022/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.mjs +50 -29
- package/esm2022/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.mjs +285 -0
- package/esm2022/lib/components/dossier-management-statuses/dossier-management-statuses.component.mjs +154 -0
- package/esm2022/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.mjs +10 -9
- package/esm2022/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.mjs +10 -9
- package/esm2022/lib/components/dossier-management-tabs/dossier-management-tabs.component.mjs +7 -7
- package/esm2022/lib/components/dossier-management-tabs/tab-form/tab-form.component.mjs +7 -7
- package/esm2022/lib/components/dossier-management-upload/dossier-management-upload.component.mjs +14 -17
- package/esm2022/lib/components/dossier-management-upload/dossier-management-upload.constants.mjs +16 -1
- package/esm2022/lib/components/dossier-management-upload/step/dossier-management-upload-step.component.mjs +20 -5
- package/esm2022/lib/dossier-management-routing.module.mjs +10 -8
- package/esm2022/lib/dossier-management.module.mjs +33 -18
- package/esm2022/lib/models/index.mjs +3 -2
- package/esm2022/lib/models/list-column.model.mjs +2 -2
- package/esm2022/lib/models/status.model.mjs +17 -0
- package/esm2022/lib/models/tab.enum.mjs +3 -2
- package/esm2022/lib/services/dossier-detail.service.mjs +18 -11
- package/esm2022/lib/services/dossier-export.service.mjs +7 -7
- package/esm2022/lib/services/dossier-management.service.mjs +38 -0
- package/esm2022/lib/services/index.mjs +2 -2
- package/esm2022/lib/services/tab-management.service.mjs +5 -5
- package/esm2022/lib/services/tab.service.mjs +25 -8
- package/esm2022/public-api.mjs +2 -2
- package/fesm2022/valtimo-dossier-management.mjs +1238 -473
- package/fesm2022/valtimo-dossier-management.mjs.map +1 -1
- package/lib/components/dossier-management-create/dossier-management-create.component.d.ts +26 -0
- package/lib/components/dossier-management-create/dossier-management-create.component.d.ts.map +1 -0
- package/lib/components/dossier-management-detail/dossier-management-detail.component.d.ts +9 -3
- package/lib/components/dossier-management-detail/dossier-management-detail.component.d.ts.map +1 -1
- package/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.d.ts +27 -14
- package/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.d.ts.map +1 -1
- package/lib/components/dossier-management-detail-container-actions/{dossier-management-detail-container-actions.d.ts → dossier-management-detail-container-actions.component.d.ts} +9 -3
- package/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.component.d.ts.map +1 -0
- package/lib/components/dossier-management-document-definition/dossier-management-document-definition.component.d.ts +48 -0
- package/lib/components/dossier-management-document-definition/dossier-management-document-definition.component.d.ts.map +1 -0
- package/lib/components/dossier-management-list/dossier-management-list.component.d.ts +7 -4
- package/lib/components/dossier-management-list/dossier-management-list.component.d.ts.map +1 -1
- package/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.d.ts +2 -2
- package/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.d.ts.map +1 -1
- package/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.d.ts +10 -4
- package/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.d.ts.map +1 -1
- package/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.d.ts +77 -0
- package/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.d.ts.map +1 -0
- package/lib/components/dossier-management-statuses/dossier-management-statuses.component.d.ts +47 -0
- package/lib/components/dossier-management-statuses/dossier-management-statuses.component.d.ts.map +1 -0
- package/lib/components/dossier-management-upload/dossier-management-upload.component.d.ts +3 -5
- package/lib/components/dossier-management-upload/dossier-management-upload.component.d.ts.map +1 -1
- package/lib/components/dossier-management-upload/dossier-management-upload.constants.d.ts.map +1 -1
- package/lib/components/dossier-management-upload/step/dossier-management-upload-step.component.d.ts.map +1 -1
- package/lib/dossier-management-routing.module.d.ts.map +1 -1
- package/lib/dossier-management.module.d.ts +24 -22
- package/lib/dossier-management.module.d.ts.map +1 -1
- package/lib/models/index.d.ts +1 -0
- package/lib/models/index.d.ts.map +1 -1
- package/lib/models/status.model.d.ts +4 -0
- package/lib/models/status.model.d.ts.map +1 -0
- package/lib/models/tab.enum.d.ts +2 -1
- package/lib/models/tab.enum.d.ts.map +1 -1
- package/lib/services/dossier-detail.service.d.ts +4 -1
- package/lib/services/dossier-detail.service.d.ts.map +1 -1
- package/lib/services/{dossier-import.service.d.ts → dossier-management.service.d.ts} +4 -4
- package/lib/services/dossier-management.service.d.ts.map +1 -0
- package/lib/services/tab.service.d.ts +9 -4
- package/lib/services/tab.service.d.ts.map +1 -1
- package/package.json +3 -3
- package/esm2022/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.mjs +0 -152
- package/esm2022/lib/components/dossier-management-document-definition/dossier-management-document-definition.mjs +0 -48
- package/esm2022/lib/components/dossier-management-link-process/dossier-management-link-process.component.mjs +0 -84
- package/esm2022/lib/services/dossier-import.service.mjs +0 -38
- package/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.d.ts.map +0 -1
- package/lib/components/dossier-management-document-definition/dossier-management-document-definition.d.ts +0 -15
- package/lib/components/dossier-management-document-definition/dossier-management-document-definition.d.ts.map +0 -1
- package/lib/components/dossier-management-link-process/dossier-management-link-process.component.d.ts +0 -27
- package/lib/components/dossier-management-link-process/dossier-management-link-process.component.d.ts.map +0 -1
- package/lib/services/dossier-import.service.d.ts.map +0 -1
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
17
|
+
import { BehaviorSubject, combineLatest, map, Subscription, switchMap, take, tap, } from 'rxjs';
|
|
18
|
+
import { CARBON_CONSTANTS } from '@valtimo/components';
|
|
19
|
+
import { Validators, } from '@angular/forms';
|
|
20
|
+
import { InternalCaseStatusColor, InternalCaseStatusUtils, } from '@valtimo/document';
|
|
21
|
+
import { Edit16 } from '@carbon/icons';
|
|
22
|
+
import * as i0 from "@angular/core";
|
|
23
|
+
import * as i1 from "@angular/forms";
|
|
24
|
+
import * as i2 from "carbon-components-angular";
|
|
25
|
+
import * as i3 from "@valtimo/document";
|
|
26
|
+
import * as i4 from "@ngx-translate/core";
|
|
27
|
+
import * as i5 from "@angular/common";
|
|
28
|
+
import * as i6 from "@valtimo/components";
|
|
29
|
+
export class DossierManagementStatusModalComponent {
|
|
30
|
+
set type(value) {
|
|
31
|
+
this._type$.next(value);
|
|
32
|
+
if (value === 'closed') {
|
|
33
|
+
setTimeout(() => {
|
|
34
|
+
this._typeAnimationDelay$.next(value);
|
|
35
|
+
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this._typeAnimationDelay$.next(value);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
set prefill(value) {
|
|
42
|
+
this._prefillStatus.next(value);
|
|
43
|
+
}
|
|
44
|
+
get visibleInCaseListByDefault() {
|
|
45
|
+
return this.statusFormGroup?.get('visibleInCaseListByDefault');
|
|
46
|
+
}
|
|
47
|
+
get key() {
|
|
48
|
+
return this.statusFormGroup?.get('key');
|
|
49
|
+
}
|
|
50
|
+
get title() {
|
|
51
|
+
return this.statusFormGroup?.get('title');
|
|
52
|
+
}
|
|
53
|
+
get color() {
|
|
54
|
+
return this.statusFormGroup?.get('color');
|
|
55
|
+
}
|
|
56
|
+
get invalid() {
|
|
57
|
+
return !!this.statusFormGroup?.invalid;
|
|
58
|
+
}
|
|
59
|
+
get pristine() {
|
|
60
|
+
return !!this.statusFormGroup?.pristine;
|
|
61
|
+
}
|
|
62
|
+
constructor(fb, iconService, caseStatusService, translateService) {
|
|
63
|
+
this.fb = fb;
|
|
64
|
+
this.iconService = iconService;
|
|
65
|
+
this.caseStatusService = caseStatusService;
|
|
66
|
+
this.translateService = translateService;
|
|
67
|
+
this.closeModalEvent = new EventEmitter();
|
|
68
|
+
this._type$ = new BehaviorSubject(undefined);
|
|
69
|
+
this._typeAnimationDelay$ = new BehaviorSubject(undefined);
|
|
70
|
+
this._prefillStatus = new BehaviorSubject(undefined);
|
|
71
|
+
this.statusFormGroup = this.fb.group({
|
|
72
|
+
title: this.fb.control('', Validators.required),
|
|
73
|
+
key: this.fb.control('', [
|
|
74
|
+
Validators.required,
|
|
75
|
+
Validators.minLength(3),
|
|
76
|
+
this.uniqueKeyValidator,
|
|
77
|
+
]),
|
|
78
|
+
visibleInCaseListByDefault: this.fb.control(true, Validators.required),
|
|
79
|
+
color: this.fb.control('', Validators.required),
|
|
80
|
+
});
|
|
81
|
+
this.isEdit$ = combineLatest([this._typeAnimationDelay$, this._prefillStatus]).pipe(tap(([type, prefillStatus]) => {
|
|
82
|
+
if (type === 'edit' && prefillStatus)
|
|
83
|
+
this.prefillForm(prefillStatus);
|
|
84
|
+
}), map(([type]) => type === 'edit'));
|
|
85
|
+
this.isAdd$ = this._typeAnimationDelay$.pipe(map(type => type === 'add'), tap(isAdd => {
|
|
86
|
+
if (isAdd)
|
|
87
|
+
this.resetForm();
|
|
88
|
+
}));
|
|
89
|
+
this.isClosed$ = this._type$.pipe(map(type => type === 'closed'));
|
|
90
|
+
this.disabled$ = new BehaviorSubject(false);
|
|
91
|
+
this.COLORS = [
|
|
92
|
+
InternalCaseStatusColor.Red,
|
|
93
|
+
InternalCaseStatusColor.Magenta,
|
|
94
|
+
InternalCaseStatusColor.Purple,
|
|
95
|
+
InternalCaseStatusColor.Blue,
|
|
96
|
+
InternalCaseStatusColor.Teal,
|
|
97
|
+
InternalCaseStatusColor.Green,
|
|
98
|
+
InternalCaseStatusColor.Cyan,
|
|
99
|
+
InternalCaseStatusColor.Gray,
|
|
100
|
+
InternalCaseStatusColor.CoolGray,
|
|
101
|
+
InternalCaseStatusColor.WarmGray,
|
|
102
|
+
InternalCaseStatusColor.HighContrast,
|
|
103
|
+
InternalCaseStatusColor.Outline,
|
|
104
|
+
];
|
|
105
|
+
this._selectedColor$ = new BehaviorSubject(undefined);
|
|
106
|
+
this.colorListItems$ = combineLatest([
|
|
107
|
+
this._selectedColor$,
|
|
108
|
+
this.translateService.stream('key'),
|
|
109
|
+
]).pipe(map(([selectedColor]) => this.COLORS.map(color => ({
|
|
110
|
+
selected: color === selectedColor,
|
|
111
|
+
content: this.translateService.instant('interface.tagType.' +
|
|
112
|
+
InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(color)),
|
|
113
|
+
color,
|
|
114
|
+
tagType: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(color),
|
|
115
|
+
}))));
|
|
116
|
+
this.editingKey$ = new BehaviorSubject(false);
|
|
117
|
+
this._originalStatusKey$ = new BehaviorSubject('');
|
|
118
|
+
this._subscriptions = new Subscription();
|
|
119
|
+
this.iconService.registerAll([Edit16]);
|
|
120
|
+
}
|
|
121
|
+
ngOnInit() {
|
|
122
|
+
this.openAutoKeySubscription();
|
|
123
|
+
}
|
|
124
|
+
ngOnDestroy() {
|
|
125
|
+
this._subscriptions.unsubscribe();
|
|
126
|
+
}
|
|
127
|
+
onClose() {
|
|
128
|
+
this.close();
|
|
129
|
+
}
|
|
130
|
+
toggleCheckedChange(checked) {
|
|
131
|
+
this.statusFormGroup.patchValue({
|
|
132
|
+
visibleInCaseListByDefault: checked,
|
|
133
|
+
});
|
|
134
|
+
this.statusFormGroup.markAsDirty();
|
|
135
|
+
}
|
|
136
|
+
addStatus() {
|
|
137
|
+
this.disable();
|
|
138
|
+
this.caseStatusService
|
|
139
|
+
.saveInternalCaseStatus(this.documentDefinitionName, this.getFormValue())
|
|
140
|
+
.subscribe({
|
|
141
|
+
next: () => {
|
|
142
|
+
this.enable();
|
|
143
|
+
this.closeAndRefresh();
|
|
144
|
+
},
|
|
145
|
+
error: () => {
|
|
146
|
+
this.enable(false);
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
editStatus() {
|
|
151
|
+
this.disable();
|
|
152
|
+
this._originalStatusKey$
|
|
153
|
+
.pipe(take(1), switchMap(originalStatusKey => this.caseStatusService.updateInternalCaseStatus(this.documentDefinitionName, originalStatusKey, this.getFormValue())))
|
|
154
|
+
.subscribe({
|
|
155
|
+
next: () => {
|
|
156
|
+
this.enable();
|
|
157
|
+
this.closeAndRefresh();
|
|
158
|
+
},
|
|
159
|
+
error: () => {
|
|
160
|
+
this.enable(false);
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
editKeyButtonClick() {
|
|
165
|
+
this.editingKey$.next(true);
|
|
166
|
+
}
|
|
167
|
+
colorDropdownChange(event) {
|
|
168
|
+
const newColor = event?.item?.color;
|
|
169
|
+
if (newColor) {
|
|
170
|
+
this._selectedColor$.next(newColor);
|
|
171
|
+
this.statusFormGroup.patchValue({ color: newColor });
|
|
172
|
+
this.statusFormGroup.markAsDirty();
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
prefillForm(prefillStatus) {
|
|
176
|
+
this._originalStatusKey$.next(prefillStatus.key);
|
|
177
|
+
this.statusFormGroup.patchValue({
|
|
178
|
+
key: prefillStatus.key,
|
|
179
|
+
title: prefillStatus.title,
|
|
180
|
+
visibleInCaseListByDefault: prefillStatus.visibleInCaseListByDefault,
|
|
181
|
+
color: prefillStatus.color,
|
|
182
|
+
});
|
|
183
|
+
this._selectedColor$.next(prefillStatus.color);
|
|
184
|
+
this.statusFormGroup.markAsPristine();
|
|
185
|
+
this.resetEditingKey();
|
|
186
|
+
}
|
|
187
|
+
resetForm() {
|
|
188
|
+
this.statusFormGroup.patchValue({
|
|
189
|
+
key: '',
|
|
190
|
+
title: '',
|
|
191
|
+
visibleInCaseListByDefault: true,
|
|
192
|
+
color: InternalCaseStatusColor.Blue,
|
|
193
|
+
});
|
|
194
|
+
this._selectedColor$.next(InternalCaseStatusColor.Blue);
|
|
195
|
+
this.statusFormGroup.markAsPristine();
|
|
196
|
+
this.resetEditingKey();
|
|
197
|
+
}
|
|
198
|
+
resetEditingKey() {
|
|
199
|
+
this.editingKey$.next(false);
|
|
200
|
+
}
|
|
201
|
+
openAutoKeySubscription() {
|
|
202
|
+
this._subscriptions.add(combineLatest([this.isAdd$, this.title.valueChanges, this.editingKey$]).subscribe(([isAdd, titleValue, editingKey]) => {
|
|
203
|
+
if (isAdd && !editingKey) {
|
|
204
|
+
if (titleValue) {
|
|
205
|
+
this.statusFormGroup.patchValue({ key: this.getUniqueKey(titleValue) });
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
this.clearKey();
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}));
|
|
212
|
+
}
|
|
213
|
+
getUniqueKey(title) {
|
|
214
|
+
const dashCaseKey = `${title}`
|
|
215
|
+
.toLowerCase()
|
|
216
|
+
.replace(/[^a-z0-9-_]+|-[^a-z0-9]+/g, '-')
|
|
217
|
+
.replace(/_[-_]+/g, '_')
|
|
218
|
+
.replace(/^[^a-z]+/g, '');
|
|
219
|
+
const usedKeys = this.usedKeys;
|
|
220
|
+
if (!usedKeys.includes(dashCaseKey)) {
|
|
221
|
+
return dashCaseKey;
|
|
222
|
+
}
|
|
223
|
+
return this.getUniqueKeyWithNumber(dashCaseKey, usedKeys);
|
|
224
|
+
}
|
|
225
|
+
getUniqueKeyWithNumber(dashCaseKey, usedKeys) {
|
|
226
|
+
const numbersFromCurrentKey = (dashCaseKey.match(/^\d+|\d+\b|\d+(?=\w)/g) || []).map((numberValue) => +numberValue);
|
|
227
|
+
const lastNumberFromCurrentKey = numbersFromCurrentKey.length > 0 && numbersFromCurrentKey[numbersFromCurrentKey.length - 1];
|
|
228
|
+
const newKey = lastNumberFromCurrentKey
|
|
229
|
+
? `${dashCaseKey.replace(`${lastNumberFromCurrentKey}`, `${lastNumberFromCurrentKey + 1}`)}`
|
|
230
|
+
: `${dashCaseKey}-1`;
|
|
231
|
+
if (usedKeys.includes(newKey)) {
|
|
232
|
+
return this.getUniqueKeyWithNumber(newKey, usedKeys);
|
|
233
|
+
}
|
|
234
|
+
return newKey;
|
|
235
|
+
}
|
|
236
|
+
clearKey() {
|
|
237
|
+
this.statusFormGroup.patchValue({ key: '' });
|
|
238
|
+
}
|
|
239
|
+
uniqueKeyValidator() {
|
|
240
|
+
return (control) => combineLatest([this.isEdit$, control.valueChanges]).pipe(map(([isEdit, keyValue]) => this.usedKeys?.every((key) => key !== keyValue) || isEdit
|
|
241
|
+
? null
|
|
242
|
+
: { uniqueKey: { value: control.value } }));
|
|
243
|
+
}
|
|
244
|
+
disable() {
|
|
245
|
+
this.disabled$.next(true);
|
|
246
|
+
this.statusFormGroup.disable();
|
|
247
|
+
}
|
|
248
|
+
enable(delay = true) {
|
|
249
|
+
setTimeout(() => {
|
|
250
|
+
this.disabled$.next(false);
|
|
251
|
+
this.statusFormGroup.enable();
|
|
252
|
+
}, delay ? CARBON_CONSTANTS.modalAnimationMs : 0);
|
|
253
|
+
}
|
|
254
|
+
close() {
|
|
255
|
+
this.closeModalEvent.emit('close');
|
|
256
|
+
}
|
|
257
|
+
closeAndRefresh() {
|
|
258
|
+
this.closeModalEvent.emit('closeAndRefresh');
|
|
259
|
+
}
|
|
260
|
+
getFormValue() {
|
|
261
|
+
return {
|
|
262
|
+
key: this.key.value,
|
|
263
|
+
title: this.title.value,
|
|
264
|
+
visibleInCaseListByDefault: this.visibleInCaseListByDefault.value,
|
|
265
|
+
color: this.color.value,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierManagementStatusModalComponent, deps: [{ token: i1.FormBuilder }, { token: i2.IconService }, { token: i3.CaseStatusService }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
269
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: DossierManagementStatusModalComponent, selector: "valtimo-dossier-management-status-modal", inputs: { type: "type", prefill: "prefill", usedKeys: "usedKeys", documentDefinitionName: "documentDefinitionName" }, outputs: { closeModalEvent: "closeModalEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n isClosed: isClosed$ | async,\n editingKey: editingKey$ | async,\n disabled: disabled$ | async\n } as obs\"\n [open]=\"!obs.isClosed\"\n size=\"sm\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onClose()\">\n <h3 cdsModalHeaderHeading>\n {{ obs.isAdd ? ('dossierManagement.statuses.add' | translate) : '' }}\n {{ obs.isEdit ? ('dossierManagement.statuses.edit' | translate) : '' }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"statusForm; context: {obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <div class=\"dropdown-color-tag\">\n <cds-tag *ngIf=\"item && item.content\" class=\"cds-tag--no-margin\" [type]=\"item?.tagType\">\n {{ 'interface.tagType.' + item?.tagType | translate }}\n </cds-tag>\n </div>\n</ng-template>\n\n<ng-template #statusForm let-obs=\"obs\">\n <form [formGroup]=\"statusFormGroup\" class=\"status-form\">\n <cds-label>\n {{ 'dossierManagement.statuses.columns.title' | translate }}\n\n <input cdsText formControlName=\"title\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label>\n {{ 'dossierManagement.statuses.columns.key' | translate }}\n\n <div class=\"edit-key-input\">\n <input\n cdsText\n formControlName=\"key\"\n [readOnly]=\"!obs.editingKey\"\n [placeholder]=\"\n obs.isAdd && !obs.editingKey\n ? ('dossierManagement.statuses.keyAutoGenerated' | translate)\n : ''\n \"\n />\n\n <cds-icon-button\n *ngIf=\"!obs.editingKey && obs.isAdd\"\n [disabled]=\"obs.disabled\"\n (click)=\"editKeyButtonClick()\"\n kind=\"secondary\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-label>\n\n <div class=\"horizontal-inputs\">\n <cds-label>\n {{ 'dossierManagement.statuses.columns.color' | translate }}\n\n <cds-dropdown\n [id]=\"'status-color-dropdown'\"\n [appendInline]=\"false\"\n [placeholder]=\"'dossierManagement.statuses.colorPlaceholder' | translate\"\n (selected)=\"colorDropdownChange($event)\"\n >\n <cds-dropdown-list [items]=\"colorListItems$\" [listTpl]=\"colorDropdownItemTemplate\">\n </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n\n <cds-toggle\n [label]=\"'dossierManagement.statuses.visibleTitle' | translate\"\n [onText]=\"'dossierManagement.statuses.visible' | translate\"\n [offText]=\"'dossierManagement.statuses.invisible' | translate\"\n [disabled]=\"obs.disabled\"\n [checked]=\"visibleInCaseListByDefault?.value\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n ></cds-toggle>\n </div>\n </form>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button cdsButton=\"secondary\" (click)=\"onClose()\" [disabled]=\"obs.disabled\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isAdd\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"addStatus()\"\n >\n {{ 'interface.add' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isEdit\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"editStatus()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n</ng-template>\n", styles: [".status-form{display:flex;flex-direction:column;gap:16px}.edit-key-input{height:40px;display:flex;width:100%;flex-direction:row;gap:16px;align-items:flex-end}.edit-key-input input:read-only{color:var(--cds-text-disabled)}::ng-deep .horizontal-inputs{display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}::ng-deep .horizontal-inputs .cds--label{width:100%;display:flex;flex-direction:column;gap:8px}::ng-deep .dropdown-color-tag .cds--tag{margin-top:-4px;margin-left:2px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i2.IconButton, selector: "cds-icon-button, ibm-icon-button", inputs: ["buttonNgClass", "buttonAttributes", "buttonId", "kind", "size", "type", "isExpressive", "disabled", "description"], outputs: ["click", "focus", "blur", "tooltipClick"] }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i2.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i2.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i2.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i2.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i2.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "component", type: i2.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i2.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i2.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "directive", type: i6.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]" }, { kind: "component", type: i2.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class"] }, { kind: "component", type: i2.Toggle, selector: "cds-toggle, ibm-toggle", inputs: ["offText", "onText", "label", "size", "hideLabel", "skeleton"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
270
|
+
}
|
|
271
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierManagementStatusModalComponent, decorators: [{
|
|
272
|
+
type: Component,
|
|
273
|
+
args: [{ selector: 'valtimo-dossier-management-status-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n isClosed: isClosed$ | async,\n editingKey: editingKey$ | async,\n disabled: disabled$ | async\n } as obs\"\n [open]=\"!obs.isClosed\"\n size=\"sm\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onClose()\">\n <h3 cdsModalHeaderHeading>\n {{ obs.isAdd ? ('dossierManagement.statuses.add' | translate) : '' }}\n {{ obs.isEdit ? ('dossierManagement.statuses.edit' | translate) : '' }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"statusForm; context: {obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <div class=\"dropdown-color-tag\">\n <cds-tag *ngIf=\"item && item.content\" class=\"cds-tag--no-margin\" [type]=\"item?.tagType\">\n {{ 'interface.tagType.' + item?.tagType | translate }}\n </cds-tag>\n </div>\n</ng-template>\n\n<ng-template #statusForm let-obs=\"obs\">\n <form [formGroup]=\"statusFormGroup\" class=\"status-form\">\n <cds-label>\n {{ 'dossierManagement.statuses.columns.title' | translate }}\n\n <input cdsText formControlName=\"title\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label>\n {{ 'dossierManagement.statuses.columns.key' | translate }}\n\n <div class=\"edit-key-input\">\n <input\n cdsText\n formControlName=\"key\"\n [readOnly]=\"!obs.editingKey\"\n [placeholder]=\"\n obs.isAdd && !obs.editingKey\n ? ('dossierManagement.statuses.keyAutoGenerated' | translate)\n : ''\n \"\n />\n\n <cds-icon-button\n *ngIf=\"!obs.editingKey && obs.isAdd\"\n [disabled]=\"obs.disabled\"\n (click)=\"editKeyButtonClick()\"\n kind=\"secondary\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-label>\n\n <div class=\"horizontal-inputs\">\n <cds-label>\n {{ 'dossierManagement.statuses.columns.color' | translate }}\n\n <cds-dropdown\n [id]=\"'status-color-dropdown'\"\n [appendInline]=\"false\"\n [placeholder]=\"'dossierManagement.statuses.colorPlaceholder' | translate\"\n (selected)=\"colorDropdownChange($event)\"\n >\n <cds-dropdown-list [items]=\"colorListItems$\" [listTpl]=\"colorDropdownItemTemplate\">\n </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n\n <cds-toggle\n [label]=\"'dossierManagement.statuses.visibleTitle' | translate\"\n [onText]=\"'dossierManagement.statuses.visible' | translate\"\n [offText]=\"'dossierManagement.statuses.invisible' | translate\"\n [disabled]=\"obs.disabled\"\n [checked]=\"visibleInCaseListByDefault?.value\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n ></cds-toggle>\n </div>\n </form>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button cdsButton=\"secondary\" (click)=\"onClose()\" [disabled]=\"obs.disabled\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isAdd\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"addStatus()\"\n >\n {{ 'interface.add' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isEdit\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"editStatus()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n</ng-template>\n", styles: [".status-form{display:flex;flex-direction:column;gap:16px}.edit-key-input{height:40px;display:flex;width:100%;flex-direction:row;gap:16px;align-items:flex-end}.edit-key-input input:read-only{color:var(--cds-text-disabled)}::ng-deep .horizontal-inputs{display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}::ng-deep .horizontal-inputs .cds--label{width:100%;display:flex;flex-direction:column;gap:8px}::ng-deep .dropdown-color-tag .cds--tag{margin-top:-4px;margin-left:2px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
274
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.IconService }, { type: i3.CaseStatusService }, { type: i4.TranslateService }], propDecorators: { type: [{
|
|
275
|
+
type: Input
|
|
276
|
+
}], prefill: [{
|
|
277
|
+
type: Input
|
|
278
|
+
}], usedKeys: [{
|
|
279
|
+
type: Input
|
|
280
|
+
}], documentDefinitionName: [{
|
|
281
|
+
type: Input
|
|
282
|
+
}], closeModalEvent: [{
|
|
283
|
+
type: Output
|
|
284
|
+
}] } });
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXN0YXR1cy1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXItbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1tYW5hZ2VtZW50LXN0YXR1c2VzL2Rvc3NpZXItbWFuYWdlbWVudC1zdGF0dXMtbW9kYWwvZG9zc2llci1tYW5hZ2VtZW50LXN0YXR1cy1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXItbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1tYW5hZ2VtZW50LXN0YXR1c2VzL2Rvc3NpZXItbWFuYWdlbWVudC1zdGF0dXMtbW9kYWwvZG9zc2llci1tYW5hZ2VtZW50LXN0YXR1cy1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLEdBQUcsRUFFSCxZQUFZLEVBQ1osU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBS0wsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUdMLHVCQUF1QixFQUN2Qix1QkFBdUIsR0FDeEIsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQVVyQyxN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RyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSztZQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQ3ZCLDBCQUEwQixFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLO1lBQ2pFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQWdDO1NBQ25ELENBQUM7SUFDSixDQUFDOzhHQXZVVSxxQ0FBcUM7a0dBQXJDLHFDQUFxQyxzUEM3RGxELDY1SUF3SUE7OzJGRDNFYSxxQ0FBcUM7a0JBTmpELFNBQVM7K0JBQ0UseUNBQXlDLG1CQUdsQyx1QkFBdUIsQ0FBQyxNQUFNO3lLQUczQixJQUFJO3NCQUF2QixLQUFLO2dCQVljLE9BQU87c0JBQTFCLEtBQUs7Z0JBSVUsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxzQkFBc0I7c0JBQXJDLEtBQUs7Z0JBRVcsZUFBZTtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdGF0dXNNb2RhbENsb3NlRXZlbnQsIFN0YXR1c01vZGFsVHlwZX0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q0FSQk9OX0NPTlNUQU5UU30gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEFzeW5jVmFsaWRhdG9yRm4sXG4gIEZvcm1CdWlsZGVyLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBDYXNlU3RhdHVzU2VydmljZSxcbiAgSW50ZXJuYWxDYXNlU3RhdHVzLFxuICBJbnRlcm5hbENhc2VTdGF0dXNDb2xvcixcbiAgSW50ZXJuYWxDYXNlU3RhdHVzVXRpbHMsXG59IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7SWNvblNlcnZpY2V9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtFZGl0MTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtMaXN0SXRlbX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9kcm9wZG93bi9saXN0LWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXN0YXR1cy1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtc3RhdHVzLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9zc2llci1tYW5hZ2VtZW50LXN0YXR1cy1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llck1hbmFnZW1lbnRTdGF0dXNNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHVibGljIHNldCB0eXBlKHZhbHVlOiBTdGF0dXNNb2RhbFR5cGUpIHtcbiAgICB0aGlzLl90eXBlJC5uZXh0KHZhbHVlKTtcblxuICAgIGlmICh2YWx1ZSA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLl90eXBlQW5pbWF0aW9uRGVsYXkkLm5leHQodmFsdWUpO1xuICAgICAgfSwgQ0FSQk9OX0NPTlNUQU5UUy5tb2RhbEFuaW1hdGlvbk1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdHlwZUFuaW1hdGlvbkRlbGF5JC5uZXh0KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHByZWZpbGwodmFsdWU6IEludGVybmFsQ2FzZVN0YXR1cykge1xuICAgIHRoaXMuX3ByZWZpbGxTdGF0dXMubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKSBwdWJsaWMgdXNlZEtleXMhOiBzdHJpbmdbXTtcbiAgQElucHV0KCkgcHVibGljIGRvY3VtZW50RGVmaW5pdGlvbk5hbWUhOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBjbG9zZU1vZGFsRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFN0YXR1c01vZGFsQ2xvc2VFdmVudD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF90eXBlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3RhdHVzTW9kYWxUeXBlPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90eXBlQW5pbWF0aW9uRGVsYXkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTdGF0dXNNb2RhbFR5cGU+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ByZWZpbGxTdGF0dXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEludGVybmFsQ2FzZVN0YXR1cz4odW5kZWZpbmVkKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgdGl0bGU6IHRoaXMuZmIuY29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAga2V5OiB0aGlzLmZiLmNvbnRyb2woJycsIFtcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKSxcbiAgICAgIHRoaXMudW5pcXVlS2V5VmFsaWRhdG9yLFxuICAgIF0pLFxuICAgIHZpc2libGVJbkNhc2VMaXN0QnlEZWZhdWx0OiB0aGlzLmZiLmNvbnRyb2wodHJ1ZSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgY29sb3I6IHRoaXMuZmIuY29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBpc0VkaXQkID0gY29tYmluZUxhdGVzdChbdGhpcy5fdHlwZUFuaW1hdGlvbkRlbGF5JCwgdGhpcy5fcHJlZmlsbFN0YXR1c10pLnBpcGUoXG4gICAgdGFwKChbdHlwZSwgcHJlZmlsbFN0YXR1c10pID0+IHtcbiAgICAgIGlmICh0eXBlID09PSAnZWRpdCcgJiYgcHJlZmlsbFN0YXR1cykgdGhpcy5wcmVmaWxsRm9ybShwcmVmaWxsU3RhdHVzKTtcbiAgICB9KSxcbiAgICBtYXAoKFt0eXBlXSkgPT4gdHlwZSA9PT0gJ2VkaXQnKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBpc0FkZCQgPSB0aGlzLl90eXBlQW5pbWF0aW9uRGVsYXkkLnBpcGUoXG4gICAgbWFwKHR5cGUgPT4gdHlwZSA9PT0gJ2FkZCcpLFxuICAgIHRhcChpc0FkZCA9PiB7XG4gICAgICBpZiAoaXNBZGQpIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgfSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNDbG9zZWQkID0gdGhpcy5fdHlwZSQucGlwZShtYXAodHlwZSA9PiB0eXBlID09PSAnY2xvc2VkJykpO1xuXG4gIHB1YmxpYyByZWFkb25seSBkaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IENPTE9SUzogSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3JbXSA9IFtcbiAgICBJbnRlcm5hbENhc2VTdGF0dXNDb2xvci5SZWQsXG4gICAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuTWFnZW50YSxcbiAgICBJbnRlcm5hbENhc2VTdGF0dXNDb2xvci5QdXJwbGUsXG4gICAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuQmx1ZSxcbiAgICBJbnRlcm5hbENhc2VTdGF0dXNDb2xvci5UZWFsLFxuICAgIEludGVybmFsQ2FzZVN0YXR1c0NvbG9yLkdyZWVuLFxuICAgIEludGVybmFsQ2FzZVN0YXR1c0NvbG9yLkN5YW4sXG4gICAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuR3JheSxcbiAgICBJbnRlcm5hbENhc2VTdGF0dXNDb2xvci5Db29sR3JheSxcbiAgICBJbnRlcm5hbENhc2VTdGF0dXNDb2xvci5XYXJtR3JheSxcbiAgICBJbnRlcm5hbENhc2VTdGF0dXNDb2xvci5IaWdoQ29udHJhc3QsXG4gICAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuT3V0bGluZSxcbiAgXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3RlZENvbG9yJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SW50ZXJuYWxDYXNlU3RhdHVzQ29sb3I+KHVuZGVmaW5lZCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbG9yTGlzdEl0ZW1zJDogT2JzZXJ2YWJsZTxMaXN0SXRlbVtdPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX3NlbGVjdGVkQ29sb3IkLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW3NlbGVjdGVkQ29sb3JdKSA9PlxuICAgICAgdGhpcy5DT0xPUlMubWFwKGNvbG9yID0+ICh7XG4gICAgICAgIHNlbGVjdGVkOiBjb2xvciA9PT0gc2VsZWN0ZWRDb2xvcixcbiAgICAgICAgY29udGVudDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgJ2ludGVyZmFjZS50YWdUeXBlLicgK1xuICAgICAgICAgICAgSW50ZXJuYWxDYXNlU3RhdHVzVXRpbHMuZ2V0VGFnVHlwZUZyb21JbnRlcm5hbENhc2VTdGF0dXNDb2xvcihjb2xvcilcbiAgICAgICAgKSxcbiAgICAgICAgY29sb3IsXG4gICAgICAgIHRhZ1R5cGU6IEludGVybmFsQ2FzZVN0YXR1c1V0aWxzLmdldFRhZ1R5cGVGcm9tSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IoY29sb3IpLFxuICAgICAgfSkpXG4gICAgKVxuICApO1xuXG4gIHB1YmxpYyBnZXQgdmlzaWJsZUluQ2FzZUxpc3RCeURlZmF1bHQoKTogQWJzdHJhY3RDb250cm9sPGJvb2xlYW4sIGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXNGb3JtR3JvdXA/LmdldCgndmlzaWJsZUluQ2FzZUxpc3RCeURlZmF1bHQnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQga2V5KCk6IEFic3RyYWN0Q29udHJvbDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnN0YXR1c0Zvcm1Hcm91cD8uZ2V0KCdrZXknKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGl0bGUoKTogQWJzdHJhY3RDb250cm9sPHN0cmluZywgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzRm9ybUdyb3VwPy5nZXQoJ3RpdGxlJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbG9yKCk6IEFic3RyYWN0Q29udHJvbDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnN0YXR1c0Zvcm1Hcm91cD8uZ2V0KCdjb2xvcicpO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuc3RhdHVzRm9ybUdyb3VwPy5pbnZhbGlkO1xuICB9XG5cbiAgcHVibGljIGdldCBwcmlzdGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnN0YXR1c0Zvcm1Hcm91cD8ucHJpc3RpbmU7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZWRpdGluZ0tleSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vcmlnaW5hbFN0YXR1c0tleSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpY29uU2VydmljZTogSWNvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlU3RhdHVzU2VydmljZTogQ2FzZVN0YXR1c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXJBbGwoW0VkaXQxNl0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlbkF1dG9LZXlTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQ2hlY2tlZENoYW5nZShjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXNGb3JtR3JvdXAucGF0Y2hWYWx1ZSh7XG4gICAgICB2aXNpYmxlSW5DYXNlTGlzdEJ5RGVmYXVsdDogY2hlY2tlZCxcbiAgICB9KTtcbiAgICB0aGlzLnN0YXR1c0Zvcm1Hcm91cC5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgcHVibGljIGFkZFN0YXR1cygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGUoKTtcblxuICAgIHRoaXMuY2FzZVN0YXR1c1NlcnZpY2VcbiAgICAgIC5zYXZlSW50ZXJuYWxDYXNlU3RhdHVzKHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSwgdGhpcy5nZXRGb3JtVmFsdWUoKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgICB0aGlzLmNsb3NlQW5kUmVmcmVzaCgpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZW5hYmxlKGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGVkaXRTdGF0dXMoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICB0aGlzLl9vcmlnaW5hbFN0YXR1c0tleSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAob3JpZ2luYWxTdGF0dXNLZXkgPT5cbiAgICAgICAgICB0aGlzLmNhc2VTdGF0dXNTZXJ2aWNlLnVwZGF0ZUludGVybmFsQ2FzZVN0YXR1cyhcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgICAgICAgIG9yaWdpbmFsU3RhdHVzS2V5LFxuICAgICAgICAgICAgdGhpcy5nZXRGb3JtVmFsdWUoKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmVuYWJsZSgpO1xuICAgICAgICAgIHRoaXMuY2xvc2VBbmRSZWZyZXNoKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbmFibGUoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZWRpdEtleUJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdGluZ0tleSQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBjb2xvckRyb3Bkb3duQ2hhbmdlKGV2ZW50OiB7XG4gICAgaXRlbToge2NvbG9yOiBzdHJpbmc7IGNvbnRlbnQ6IHN0cmluZzsgc2VsZWN0ZWQ6IGJvb2xlYW59O1xuICAgIGlzVXBkYXRlOiBib29sZWFuO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3QgbmV3Q29sb3IgPSBldmVudD8uaXRlbT8uY29sb3IgYXMgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3I7XG5cbiAgICBpZiAobmV3Q29sb3IpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkQ29sb3IkLm5leHQobmV3Q29sb3IpO1xuICAgICAgdGhpcy5zdGF0dXNGb3JtR3JvdXAucGF0Y2hWYWx1ZSh7Y29sb3I6IG5ld0NvbG9yfSk7XG4gICAgICB0aGlzLnN0YXR1c0Zvcm1Hcm91cC5tYXJrQXNEaXJ0eSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJlZmlsbEZvcm0ocHJlZmlsbFN0YXR1czogSW50ZXJuYWxDYXNlU3RhdHVzKTogdm9pZCB7XG4gICAgdGhpcy5fb3JpZ2luYWxTdGF0dXNLZXkkLm5leHQocHJlZmlsbFN0YXR1cy5rZXkpO1xuICAgIHRoaXMuc3RhdHVzRm9ybUdyb3VwLnBhdGNoVmFsdWUoe1xuICAgICAga2V5OiBwcmVmaWxsU3RhdHVzLmtleSxcbiAgICAgIHRpdGxlOiBwcmVmaWxsU3RhdHVzLnRpdGxlLFxuICAgICAgdmlzaWJsZUluQ2FzZUxpc3RCeURlZmF1bHQ6IHByZWZpbGxTdGF0dXMudmlzaWJsZUluQ2FzZUxpc3RCeURlZmF1bHQsXG4gICAgICBjb2xvcjogcHJlZmlsbFN0YXR1cy5jb2xvcixcbiAgICB9KTtcbiAgICB0aGlzLl9zZWxlY3RlZENvbG9yJC5uZXh0KHByZWZpbGxTdGF0dXMuY29sb3IpO1xuICAgIHRoaXMuc3RhdHVzRm9ybUdyb3VwLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgdGhpcy5yZXNldEVkaXRpbmdLZXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdHVzRm9ybUdyb3VwLnBhdGNoVmFsdWUoe1xuICAgICAga2V5OiAnJyxcbiAgICAgIHRpdGxlOiAnJyxcbiAgICAgIHZpc2libGVJbkNhc2VMaXN0QnlEZWZhdWx0OiB0cnVlLFxuICAgICAgY29sb3I6IEludGVybmFsQ2FzZVN0YXR1c0NvbG9yLkJsdWUsXG4gICAgfSk7XG4gICAgdGhpcy5fc2VsZWN0ZWRDb2xvciQubmV4dChJbnRlcm5hbENhc2VTdGF0dXNDb2xvci5CbHVlKTtcbiAgICB0aGlzLnN0YXR1c0Zvcm1Hcm91cC5tYXJrQXNQcmlzdGluZSgpO1xuICAgIHRoaXMucmVzZXRFZGl0aW5nS2V5KCk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RWRpdGluZ0tleSgpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRpbmdLZXkkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQXV0b0tleVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuaXNBZGQkLCB0aGlzLnRpdGxlLnZhbHVlQ2hhbmdlcywgdGhpcy5lZGl0aW5nS2V5JF0pLnN1YnNjcmliZShcbiAgICAgICAgKFtpc0FkZCwgdGl0bGVWYWx1ZSwgZWRpdGluZ0tleV0pID0+IHtcbiAgICAgICAgICBpZiAoaXNBZGQgJiYgIWVkaXRpbmdLZXkpIHtcbiAgICAgICAgICAgIGlmICh0aXRsZVZhbHVlKSB7XG4gICAgICAgICAgICAgIHRoaXMuc3RhdHVzRm9ybUdyb3VwLnBhdGNoVmFsdWUoe2tleTogdGhpcy5nZXRVbmlxdWVLZXkodGl0bGVWYWx1ZSl9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xlYXJLZXkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVbmlxdWVLZXkodGl0bGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZGFzaENhc2VLZXkgPSBgJHt0aXRsZX1gXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1teYS16MC05LV9dK3wtW15hLXowLTldKy9nLCAnLScpXG4gICAgICAucmVwbGFjZSgvX1stX10rL2csICdfJylcbiAgICAgIC5yZXBsYWNlKC9eW15hLXpdKy9nLCAnJyk7XG4gICAgY29uc3QgdXNlZEtleXMgPSB0aGlzLnVzZWRLZXlzO1xuXG4gICAgaWYgKCF1c2VkS2V5cy5pbmNsdWRlcyhkYXNoQ2FzZUtleSkpIHtcbiAgICAgIHJldHVybiBkYXNoQ2FzZUtleTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRVbmlxdWVLZXlXaXRoTnVtYmVyKGRhc2hDYXNlS2V5LCB1c2VkS2V5cyk7XG4gIH1cblxuICBwcml2YXRlIGdldFVuaXF1ZUtleVdpdGhOdW1iZXIoZGFzaENhc2VLZXk6IHN0cmluZywgdXNlZEtleXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBjb25zdCBudW1iZXJzRnJvbUN1cnJlbnRLZXkgPSAoZGFzaENhc2VLZXkubWF0Y2goL15cXGQrfFxcZCtcXGJ8XFxkKyg/PVxcdykvZykgfHwgW10pLm1hcChcbiAgICAgIChudW1iZXJWYWx1ZTogc3RyaW5nKSA9PiArbnVtYmVyVmFsdWVcbiAgICApO1xuICAgIGNvbnN0IGxhc3ROdW1iZXJGcm9tQ3VycmVudEtleSA9XG4gICAgICBudW1iZXJzRnJvbUN1cnJlbnRLZXkubGVuZ3RoID4gMCAmJiBudW1iZXJzRnJvbUN1cnJlbnRLZXlbbnVtYmVyc0Zyb21DdXJyZW50S2V5Lmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IG5ld0tleSA9IGxhc3ROdW1iZXJGcm9tQ3VycmVudEtleVxuICAgICAgPyBgJHtkYXNoQ2FzZUtleS5yZXBsYWNlKGAke2xhc3ROdW1iZXJGcm9tQ3VycmVudEtleX1gLCBgJHtsYXN0TnVtYmVyRnJvbUN1cnJlbnRLZXkgKyAxfWApfWBcbiAgICAgIDogYCR7ZGFzaENhc2VLZXl9LTFgO1xuXG4gICAgaWYgKHVzZWRLZXlzLmluY2x1ZGVzKG5ld0tleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFVuaXF1ZUtleVdpdGhOdW1iZXIobmV3S2V5LCB1c2VkS2V5cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0tleTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJLZXkoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXNGb3JtR3JvdXAucGF0Y2hWYWx1ZSh7a2V5OiAnJ30pO1xuICB9XG5cbiAgcHJpdmF0ZSB1bmlxdWVLZXlWYWxpZGF0b3IoKTogQXN5bmNWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiA9PlxuICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5pc0VkaXQkLCBjb250cm9sLnZhbHVlQ2hhbmdlc10pLnBpcGUoXG4gICAgICAgIG1hcCgoW2lzRWRpdCwga2V5VmFsdWVdKSA9PlxuICAgICAgICAgIHRoaXMudXNlZEtleXM/LmV2ZXJ5KChrZXk6IHN0cmluZykgPT4ga2V5ICE9PSBrZXlWYWx1ZSkgfHwgaXNFZGl0XG4gICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgIDoge3VuaXF1ZUtleToge3ZhbHVlOiBjb250cm9sLnZhbHVlfX1cbiAgICAgICAgKVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuc3RhdHVzRm9ybUdyb3VwLmRpc2FibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlKGRlbGF5ID0gdHJ1ZSk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLnN0YXR1c0Zvcm1Hcm91cC5lbmFibGUoKTtcbiAgICAgIH0sXG4gICAgICBkZWxheSA/IENBUkJPTl9DT05TVEFOVFMubW9kYWxBbmltYXRpb25NcyA6IDBcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlTW9kYWxFdmVudC5lbWl0KCdjbG9zZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZUFuZFJlZnJlc2goKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZU1vZGFsRXZlbnQuZW1pdCgnY2xvc2VBbmRSZWZyZXNoJyk7XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1WYWx1ZSgpOiBJbnRlcm5hbENhc2VTdGF0dXMge1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6IHRoaXMua2V5LnZhbHVlLFxuICAgICAgdGl0bGU6IHRoaXMudGl0bGUudmFsdWUsXG4gICAgICB2aXNpYmxlSW5DYXNlTGlzdEJ5RGVmYXVsdDogdGhpcy52aXNpYmxlSW5DYXNlTGlzdEJ5RGVmYXVsdC52YWx1ZSxcbiAgICAgIGNvbG9yOiB0aGlzLmNvbG9yLnZhbHVlIGFzIEludGVybmFsQ2FzZVN0YXR1c0NvbG9yLFxuICAgIH07XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGNkcy1tb2RhbFxuICB2YWx0aW1vQ2RzTW9kYWxcbiAgKm5nSWY9XCJ7XG4gICAgaXNBZGQ6IGlzQWRkJCB8IGFzeW5jLFxuICAgIGlzRWRpdDogaXNFZGl0JCB8IGFzeW5jLFxuICAgIGlzQ2xvc2VkOiBpc0Nsb3NlZCQgfCBhc3luYyxcbiAgICBlZGl0aW5nS2V5OiBlZGl0aW5nS2V5JCB8IGFzeW5jLFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZCQgfCBhc3luY1xuICB9IGFzIG9ic1wiXG4gIFtvcGVuXT1cIiFvYnMuaXNDbG9zZWRcIlxuICBzaXplPVwic21cIlxuPlxuICA8Y2RzLW1vZGFsLWhlYWRlciBzaG93Q2xvc2VCdXR0b249XCJ0cnVlXCIgKGNsb3NlU2VsZWN0KT1cIm9uQ2xvc2UoKVwiPlxuICAgIDxoMyBjZHNNb2RhbEhlYWRlckhlYWRpbmc+XG4gICAgICB7eyBvYnMuaXNBZGQgPyAoJ2Rvc3NpZXJNYW5hZ2VtZW50LnN0YXR1c2VzLmFkZCcgfCB0cmFuc2xhdGUpIDogJycgfX1cbiAgICAgIHt7IG9icy5pc0VkaXQgPyAoJ2Rvc3NpZXJNYW5hZ2VtZW50LnN0YXR1c2VzLmVkaXQnIHwgdHJhbnNsYXRlKSA6ICcnIH19XG4gICAgPC9oMz5cbiAgPC9jZHMtbW9kYWwtaGVhZGVyPlxuXG4gIDxzZWN0aW9uIGNkc01vZGFsQ29udGVudD5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RhdHVzRm9ybTsgY29udGV4dDoge29iczogb2JzfVwiPjwvbmctY29udGFpbmVyPlxuICA8L3NlY3Rpb24+XG5cbiAgPGNkcy1tb2RhbC1mb290ZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbnM7IGNvbnRleHQ6IHtvYnM6IG9ic31cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9jZHMtbW9kYWwtZm9vdGVyPlxuPC9jZHMtbW9kYWw+XG5cbjxuZy10ZW1wbGF0ZSAjY29sb3JEcm9wZG93bkl0ZW1UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbG9yLXRhZ1wiPlxuICAgIDxjZHMtdGFnICpuZ0lmPVwiaXRlbSAmJiBpdGVtLmNvbnRlbnRcIiBjbGFzcz1cImNkcy10YWctLW5vLW1hcmdpblwiIFt0eXBlXT1cIml0ZW0/LnRhZ1R5cGVcIj5cbiAgICAgIHt7ICdpbnRlcmZhY2UudGFnVHlwZS4nICsgaXRlbT8udGFnVHlwZSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvY2RzLXRhZz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3N0YXR1c0Zvcm0gbGV0LW9icz1cIm9ic1wiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cInN0YXR1c0Zvcm1Hcm91cFwiIGNsYXNzPVwic3RhdHVzLWZvcm1cIj5cbiAgICA8Y2RzLWxhYmVsPlxuICAgICAge3sgJ2Rvc3NpZXJNYW5hZ2VtZW50LnN0YXR1c2VzLmNvbHVtbnMudGl0bGUnIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgIDxpbnB1dCBjZHNUZXh0IGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCIgW2F0dHIubW9kYWwtcHJpbWFyeS1mb2N1c109XCJ0cnVlXCIgLz5cbiAgICA8L2Nkcy1sYWJlbD5cblxuICAgIDxjZHMtbGFiZWw+XG4gICAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMuY29sdW1ucy5rZXknIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJlZGl0LWtleS1pbnB1dFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjZHNUZXh0XG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwia2V5XCJcbiAgICAgICAgICBbcmVhZE9ubHldPVwiIW9icy5lZGl0aW5nS2V5XCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgICBvYnMuaXNBZGQgJiYgIW9icy5lZGl0aW5nS2V5XG4gICAgICAgICAgICAgID8gKCdkb3NzaWVyTWFuYWdlbWVudC5zdGF0dXNlcy5rZXlBdXRvR2VuZXJhdGVkJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgIFwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPGNkcy1pY29uLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiIW9icy5lZGl0aW5nS2V5ICYmIG9icy5pc0FkZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImVkaXRLZXlCdXR0b25DbGljaygpXCJcbiAgICAgICAgICBraW5kPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJlZGl0XCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICAgIDwvY2RzLWljb24tYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9jZHMtbGFiZWw+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaG9yaXpvbnRhbC1pbnB1dHNcIj5cbiAgICAgIDxjZHMtbGFiZWw+XG4gICAgICAgIHt7ICdkb3NzaWVyTWFuYWdlbWVudC5zdGF0dXNlcy5jb2x1bW5zLmNvbG9yJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgIDxjZHMtZHJvcGRvd25cbiAgICAgICAgICBbaWRdPVwiJ3N0YXR1cy1jb2xvci1kcm9wZG93bidcIlxuICAgICAgICAgIFthcHBlbmRJbmxpbmVdPVwiZmFsc2VcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMuY29sb3JQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIChzZWxlY3RlZCk9XCJjb2xvckRyb3Bkb3duQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNkcy1kcm9wZG93bi1saXN0IFtpdGVtc109XCJjb2xvckxpc3RJdGVtcyRcIiBbbGlzdFRwbF09XCJjb2xvckRyb3Bkb3duSXRlbVRlbXBsYXRlXCI+XG4gICAgICAgICAgPC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICAgICAgPC9jZHMtZHJvcGRvd24+XG4gICAgICA8L2Nkcy1sYWJlbD5cblxuICAgICAgPGNkcy10b2dnbGVcbiAgICAgICAgW2xhYmVsXT1cIidkb3NzaWVyTWFuYWdlbWVudC5zdGF0dXNlcy52aXNpYmxlVGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW29uVGV4dF09XCInZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMudmlzaWJsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbb2ZmVGV4dF09XCInZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMuaW52aXNpYmxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICBbY2hlY2tlZF09XCJ2aXNpYmxlSW5DYXNlTGlzdEJ5RGVmYXVsdD8udmFsdWVcIlxuICAgICAgICAoY2hlY2tlZENoYW5nZSk9XCJ0b2dnbGVDaGVja2VkQ2hhbmdlKCRldmVudClcIlxuICAgICAgPjwvY2RzLXRvZ2dsZT5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNidXR0b25zIGxldC1vYnM9XCJvYnNcIj5cbiAgPGJ1dHRvbiBjZHNCdXR0b249XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwib25DbG9zZSgpXCIgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiPlxuICAgIHt7ICdpbnRlcmZhY2UuY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uXG4gICAgKm5nSWY9XCJvYnMuaXNBZGRcIlxuICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgIFtkaXNhYmxlZF09XCJpbnZhbGlkIHx8IHByaXN0aW5lIHx8IG9icy5kaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cImFkZFN0YXR1cygpXCJcbiAgPlxuICAgIHt7ICdpbnRlcmZhY2UuYWRkJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uXG4gICAgKm5nSWY9XCJvYnMuaXNFZGl0XCJcbiAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICBbZGlzYWJsZWRdPVwiaW52YWxpZCB8fCBwcmlzdGluZSB8fCBvYnMuZGlzYWJsZWRcIlxuICAgIChjbGljayk9XCJlZGl0U3RhdHVzKClcIlxuICA+XG4gICAge3sgJ2ludGVyZmFjZS5zYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
package/esm2022/lib/components/dossier-management-statuses/dossier-management-statuses.component.mjs
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { ChangeDetectionStrategy, Component, ViewChild, } from '@angular/core';
|
|
17
|
+
import { InternalCaseStatusUtils } from '@valtimo/document';
|
|
18
|
+
import { BehaviorSubject, combineLatest, filter, map, Subject, switchMap, tap, } from 'rxjs';
|
|
19
|
+
import { MoveRowDirection, ViewType, } from '@valtimo/components';
|
|
20
|
+
import * as i0 from "@angular/core";
|
|
21
|
+
import * as i1 from "@valtimo/document";
|
|
22
|
+
import * as i2 from "@angular/router";
|
|
23
|
+
import * as i3 from "@angular/common";
|
|
24
|
+
import * as i4 from "carbon-components-angular";
|
|
25
|
+
import * as i5 from "@valtimo/components";
|
|
26
|
+
import * as i6 from "./dossier-management-status-modal/dossier-management-status-modal.component";
|
|
27
|
+
import * as i7 from "@ngx-translate/core";
|
|
28
|
+
export class DossierManagementStatusesComponent {
|
|
29
|
+
get documentDefinitionName$() {
|
|
30
|
+
return this._documentDefinitionName$;
|
|
31
|
+
}
|
|
32
|
+
constructor(caseStatusService, route) {
|
|
33
|
+
this.caseStatusService = caseStatusService;
|
|
34
|
+
this.route = route;
|
|
35
|
+
this._reload$ = new BehaviorSubject(null);
|
|
36
|
+
this._documentDefinitionName$ = this.route.params.pipe(map(params => params?.name), filter(docDefName => !!docDefName));
|
|
37
|
+
this.loading$ = new BehaviorSubject(true);
|
|
38
|
+
this.usedKeys$ = new BehaviorSubject([]);
|
|
39
|
+
this._documentStatuses = [];
|
|
40
|
+
this.documentStatuses$ = combineLatest([
|
|
41
|
+
this._documentDefinitionName$,
|
|
42
|
+
this._reload$,
|
|
43
|
+
]).pipe(tap(([_, reload]) => {
|
|
44
|
+
if (reload === null) {
|
|
45
|
+
this.loading$.next(true);
|
|
46
|
+
}
|
|
47
|
+
}), switchMap(([documentDefinitionName]) => this.caseStatusService.getInternalCaseStatusesManagement(documentDefinitionName)), map(statuses => statuses.map(status => ({
|
|
48
|
+
...status,
|
|
49
|
+
tagType: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(status.color),
|
|
50
|
+
}))), tap(statuses => {
|
|
51
|
+
this._documentStatuses = statuses;
|
|
52
|
+
this.usedKeys$.next(statuses.map(status => status.key));
|
|
53
|
+
this.loading$.next(false);
|
|
54
|
+
}));
|
|
55
|
+
this.fields$ = new BehaviorSubject([]);
|
|
56
|
+
this.ACTION_ITEMS = [
|
|
57
|
+
{
|
|
58
|
+
label: 'interface.edit',
|
|
59
|
+
callback: this.openEditModal.bind(this),
|
|
60
|
+
type: 'normal',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
label: 'interface.delete',
|
|
64
|
+
callback: this.openDeleteModal.bind(this),
|
|
65
|
+
type: 'danger',
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
this.statusModalType$ = new BehaviorSubject('closed');
|
|
69
|
+
this.prefillStatus$ = new BehaviorSubject(undefined);
|
|
70
|
+
this.statusToDelete$ = new BehaviorSubject(undefined);
|
|
71
|
+
this.showDeleteModal$ = new Subject();
|
|
72
|
+
}
|
|
73
|
+
ngAfterViewInit() {
|
|
74
|
+
this.initFields();
|
|
75
|
+
}
|
|
76
|
+
openDeleteModal(status) {
|
|
77
|
+
this.statusToDelete$.next(status);
|
|
78
|
+
this.showDeleteModal$.next(true);
|
|
79
|
+
}
|
|
80
|
+
openEditModal(status) {
|
|
81
|
+
this.prefillStatus$.next(status);
|
|
82
|
+
this.statusModalType$.next('edit');
|
|
83
|
+
}
|
|
84
|
+
openAddModal() {
|
|
85
|
+
this.statusModalType$.next('add');
|
|
86
|
+
}
|
|
87
|
+
closeModal(closeModalEvent) {
|
|
88
|
+
if (closeModalEvent === 'closeAndRefresh') {
|
|
89
|
+
this.reload();
|
|
90
|
+
}
|
|
91
|
+
this.statusModalType$.next('closed');
|
|
92
|
+
}
|
|
93
|
+
confirmDeleteStatus(status) {
|
|
94
|
+
this.documentDefinitionName$
|
|
95
|
+
.pipe(switchMap(documentDefinitionName => this.caseStatusService.deleteInternalCaseStatus(documentDefinitionName, status.key)))
|
|
96
|
+
.subscribe(() => {
|
|
97
|
+
this.reload();
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
onMoveRowClick(event) {
|
|
101
|
+
const { direction, index } = event;
|
|
102
|
+
const orderedStatuses = direction === MoveRowDirection.UP
|
|
103
|
+
? this.swapStatuses(this._documentStatuses, index - 1, index)
|
|
104
|
+
: this.swapStatuses(this._documentStatuses, index, index + 1);
|
|
105
|
+
this.documentDefinitionName$
|
|
106
|
+
.pipe(switchMap(documentDefinitionName => this.caseStatusService.updateInternalCaseStatuses(documentDefinitionName, orderedStatuses)))
|
|
107
|
+
.subscribe(() => {
|
|
108
|
+
this.reload(true);
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
reload(noAnimation = false) {
|
|
112
|
+
this._reload$.next(noAnimation ? 'noAnimation' : null);
|
|
113
|
+
}
|
|
114
|
+
swapStatuses(statuses, index1, index2) {
|
|
115
|
+
const temp = [...statuses];
|
|
116
|
+
temp[index1] = temp.splice(index2, 1, temp[index1])[0];
|
|
117
|
+
return temp;
|
|
118
|
+
}
|
|
119
|
+
initFields() {
|
|
120
|
+
this.fields$.next([
|
|
121
|
+
{
|
|
122
|
+
key: 'title',
|
|
123
|
+
label: 'dossierManagement.statuses.columns.title',
|
|
124
|
+
viewType: ViewType.TEXT,
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
key: 'key',
|
|
128
|
+
label: 'dossierManagement.statuses.columns.key',
|
|
129
|
+
viewType: ViewType.TEXT,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
key: 'visibleInCaseListByDefault',
|
|
133
|
+
label: 'dossierManagement.statuses.columns.visible',
|
|
134
|
+
viewType: ViewType.BOOLEAN,
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
viewType: ViewType.TEMPLATE,
|
|
138
|
+
template: this.colorColumnTemplate,
|
|
139
|
+
key: 'color',
|
|
140
|
+
label: 'dossierManagement.statuses.columns.color',
|
|
141
|
+
},
|
|
142
|
+
]);
|
|
143
|
+
}
|
|
144
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierManagementStatusesComponent, deps: [{ token: i1.CaseStatusService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
145
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: DossierManagementStatusesComponent, selector: "valtimo-dossier-management-statuses", viewQueries: [{ propertyName: "colorColumnTemplate", first: true, predicate: ["colorColumnTemplate"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n *ngIf=\"{\n loading: loading$ | async,\n documentStatuses: documentStatuses$ | async\n } as obs\"\n [items]=\"obs.documentStatuses\"\n [fields]=\"fields$ | async\"\n [header]=\"false\"\n [loading]=\"obs.loading\"\n [movingRowsEnabled]=\"true\"\n [actionItems]=\"ACTION_ITEMS\"\n (rowClicked)=\"openEditModal($event)\"\n (moveRow)=\"onMoveRowClick($event)\"\n>\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n [description]=\"'dossierManagement.statuses.noResults.description' | translate\"\n [title]=\"'dossierManagement.statuses.noResults.title' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-dossier-management-status-modal\n [type]=\"statusModalType$ | async\"\n [prefill]=\"prefillStatus$ | async\"\n [usedKeys]=\"usedKeys$ | async\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (closeModalEvent)=\"closeModal($event)\"\n></valtimo-dossier-management-status-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossierManagement.statuses.deleteText\"\n [outputOnConfirm]=\"statusToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"confirmDeleteStatus($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #buttons let-obs=\"obs\">\n <div class=\"dossier-management-search-fields__buttons\">\n <button cdsButton=\"primary\" [disabled]=\"obs.loading\" (click)=\"openAddModal()\">\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'dossierManagement.statuses.add' | translate }}\n </button>\n </div>\n</ng-template>\n\n<ng-template #colorColumnTemplate let-data=\"data\">\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"data?.item?.tagType\">\n {{ 'interface.tagType.' + data?.item?.tagType | translate }}\n </cds-tag>\n</ng-template>\n", styles: ["::ng-deep .cds-tag--no-margin{margin:0}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i5.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: i5.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i5.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title"] }, { kind: "component", type: i4.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class"] }, { kind: "component", type: i6.DossierManagementStatusModalComponent, selector: "valtimo-dossier-management-status-modal", inputs: ["type", "prefill", "usedKeys", "documentDefinitionName"], outputs: ["closeModalEvent"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
146
|
+
}
|
|
147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierManagementStatusesComponent, decorators: [{
|
|
148
|
+
type: Component,
|
|
149
|
+
args: [{ selector: 'valtimo-dossier-management-statuses', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n *ngIf=\"{\n loading: loading$ | async,\n documentStatuses: documentStatuses$ | async\n } as obs\"\n [items]=\"obs.documentStatuses\"\n [fields]=\"fields$ | async\"\n [header]=\"false\"\n [loading]=\"obs.loading\"\n [movingRowsEnabled]=\"true\"\n [actionItems]=\"ACTION_ITEMS\"\n (rowClicked)=\"openEditModal($event)\"\n (moveRow)=\"onMoveRowClick($event)\"\n>\n <ng-container\n carbonToolbarContent\n *ngTemplateOutlet=\"buttons; context: {obs: obs}\"\n ></ng-container>\n\n <valtimo-no-results\n [description]=\"'dossierManagement.statuses.noResults.description' | translate\"\n [title]=\"'dossierManagement.statuses.noResults.title' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-dossier-management-status-modal\n [type]=\"statusModalType$ | async\"\n [prefill]=\"prefillStatus$ | async\"\n [usedKeys]=\"usedKeys$ | async\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (closeModalEvent)=\"closeModal($event)\"\n></valtimo-dossier-management-status-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossierManagement.statuses.deleteText\"\n [outputOnConfirm]=\"statusToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"confirmDeleteStatus($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #buttons let-obs=\"obs\">\n <div class=\"dossier-management-search-fields__buttons\">\n <button cdsButton=\"primary\" [disabled]=\"obs.loading\" (click)=\"openAddModal()\">\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'dossierManagement.statuses.add' | translate }}\n </button>\n </div>\n</ng-template>\n\n<ng-template #colorColumnTemplate let-data=\"data\">\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"data?.item?.tagType\">\n {{ 'interface.tagType.' + data?.item?.tagType | translate }}\n </cds-tag>\n</ng-template>\n", styles: ["::ng-deep .cds-tag--no-margin{margin:0}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
150
|
+
}], ctorParameters: () => [{ type: i1.CaseStatusService }, { type: i2.ActivatedRoute }], propDecorators: { colorColumnTemplate: [{
|
|
151
|
+
type: ViewChild,
|
|
152
|
+
args: ['colorColumnTemplate']
|
|
153
|
+
}] } });
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXN0YXR1c2VzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtc3RhdHVzZXMvZG9zc2llci1tYW5hZ2VtZW50LXN0YXR1c2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtc3RhdHVzZXMvZG9zc2llci1tYW5hZ2VtZW50LXN0YXR1c2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0MsdUJBQXVCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixNQUFNLEVBQ04sR0FBRyxFQUVILE9BQU8sRUFDUCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUdMLGdCQUFnQixFQUVoQixRQUFRLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7O0FBUzdCLE1BQU0sT0FBTyxrQ0FBa0M7SUFVN0MsSUFBVyx1QkFBdUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDdkMsQ0FBQztJQXNERCxZQUNtQixpQkFBb0MsRUFDcEMsS0FBcUI7UUFEckIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQWpFdkIsYUFBUSxHQUFHLElB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NENBQTRDO2dCQUNuRCxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU87YUFDM0I7WUFDRDtnQkFDRSxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7Z0JBQzNCLFFBQVEsRUFBRSxJQUFJLENBQUMsbUJBQW1CO2dCQUNsQyxHQUFHLEVBQUUsT0FBTztnQkFDWixLQUFLLEVBQUUsMENBQTBDO2FBQ2xEO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0F2S1Usa0NBQWtDO2tHQUFsQyxrQ0FBa0MsdU1DbEQvQyw0cUZBMEVBOzsyRkR4QmEsa0NBQWtDO2tCQU45QyxTQUFTOytCQUNFLHFDQUFxQyxtQkFHOUIsdUJBQXVCLENBQUMsTUFBTTttSEFHYixtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Nhc2VTdGF0dXNTZXJ2aWNlLCBJbnRlcm5hbENhc2VTdGF0dXMsIEludGVybmFsQ2FzZVN0YXR1c1V0aWxzfSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBzd2l0Y2hNYXAsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQWN0aW9uSXRlbSxcbiAgQ29sdW1uQ29uZmlnLFxuICBNb3ZlUm93RGlyZWN0aW9uLFxuICBNb3ZlUm93RXZlbnQsXG4gIFZpZXdUeXBlLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7U3RhdHVzTW9kYWxDbG9zZUV2ZW50LCBTdGF0dXNNb2RhbFR5cGV9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXN0YXR1c2VzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItbWFuYWdlbWVudC1zdGF0dXNlcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rvc3NpZXItbWFuYWdlbWVudC1zdGF0dXNlcy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llck1hbmFnZW1lbnRTdGF0dXNlc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKCdjb2xvckNvbHVtblRlbXBsYXRlJykgY29sb3JDb2x1bW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9yZWxvYWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudWxsIHwgJ25vQW5pbWF0aW9uJz4obnVsbCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnREZWZpbml0aW9uTmFtZSQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMucm91dGUucGFyYW1zLnBpcGUoXG4gICAgbWFwKHBhcmFtcyA9PiBwYXJhbXM/Lm5hbWUpLFxuICAgIGZpbHRlcihkb2NEZWZOYW1lID0+ICEhZG9jRGVmTmFtZSlcbiAgKTtcblxuICBwdWJsaWMgZ2V0IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50RGVmaW5pdGlvbk5hbWUkO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdXNlZEtleXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pO1xuXG4gIHByaXZhdGUgX2RvY3VtZW50U3RhdHVzZXM6IEludGVybmFsQ2FzZVN0YXR1c1tdID0gW107XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50U3RhdHVzZXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZSQsXG4gICAgdGhpcy5fcmVsb2FkJCxcbiAgXSkucGlwZShcbiAgICB0YXAoKFtfLCByZWxvYWRdKSA9PiB7XG4gICAgICBpZiAocmVsb2FkID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMubG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzd2l0Y2hNYXAoKFtkb2N1bWVudERlZmluaXRpb25OYW1lXSkgPT5cbiAgICAgIHRoaXMuY2FzZVN0YXR1c1NlcnZpY2UuZ2V0SW50ZXJuYWxDYXNlU3RhdHVzZXNNYW5hZ2VtZW50KGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgKSxcbiAgICBtYXAoc3RhdHVzZXMgPT5cbiAgICAgIHN0YXR1c2VzLm1hcChzdGF0dXMgPT4gKHtcbiAgICAgICAgLi4uc3RhdHVzLFxuICAgICAgICB0YWdUeXBlOiBJbnRlcm5hbENhc2VTdGF0dXNVdGlscy5nZXRUYWdUeXBlRnJvbUludGVybmFsQ2FzZVN0YXR1c0NvbG9yKHN0YXR1cy5jb2xvciksXG4gICAgICB9KSlcbiAgICApLFxuICAgIHRhcChzdGF0dXNlcyA9PiB7XG4gICAgICB0aGlzLl9kb2N1bWVudFN0YXR1c2VzID0gc3RhdHVzZXM7XG4gICAgICB0aGlzLnVzZWRLZXlzJC5uZXh0KHN0YXR1c2VzLm1hcChzdGF0dXMgPT4gc3RhdHVzLmtleSkpO1xuICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBmaWVsZHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb2x1bW5Db25maWdbXT4oW10pO1xuXG4gIHB1YmxpYyByZWFkb25seSBBQ1RJT05fSVRFTVM6IEFjdGlvbkl0ZW1bXSA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogJ2ludGVyZmFjZS5lZGl0JyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLm9wZW5FZGl0TW9kYWwuYmluZCh0aGlzKSxcbiAgICAgIHR5cGU6ICdub3JtYWwnLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdpbnRlcmZhY2UuZGVsZXRlJyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLm9wZW5EZWxldGVNb2RhbC5iaW5kKHRoaXMpLFxuICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgfSxcbiAgXTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzTW9kYWxUeXBlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3RhdHVzTW9kYWxUeXBlPignY2xvc2VkJyk7XG4gIHB1YmxpYyByZWFkb25seSBwcmVmaWxsU3RhdHVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SW50ZXJuYWxDYXNlU3RhdHVzPih1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyByZWFkb25seSBzdGF0dXNUb0RlbGV0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEludGVybmFsQ2FzZVN0YXR1cz4odW5kZWZpbmVkKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dEZWxldGVNb2RhbCQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZVN0YXR1c1NlcnZpY2U6IENhc2VTdGF0dXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge31cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdEZpZWxkcygpO1xuICB9XG5cbiAgcHVibGljIG9wZW5EZWxldGVNb2RhbChzdGF0dXM6IEludGVybmFsQ2FzZVN0YXR1cyk6IHZvaWQge1xuICAgIHRoaXMuc3RhdHVzVG9EZWxldGUkLm5leHQoc3RhdHVzKTtcbiAgICB0aGlzLnNob3dEZWxldGVNb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuRWRpdE1vZGFsKHN0YXR1czogSW50ZXJuYWxDYXNlU3RhdHVzKTogdm9pZCB7XG4gICAgdGhpcy5wcmVmaWxsU3RhdHVzJC5uZXh0KHN0YXR1cyk7XG4gICAgdGhpcy5zdGF0dXNNb2RhbFR5cGUkLm5leHQoJ2VkaXQnKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuQWRkTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXNNb2RhbFR5cGUkLm5leHQoJ2FkZCcpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlTW9kYWwoY2xvc2VNb2RhbEV2ZW50OiBTdGF0dXNNb2RhbENsb3NlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoY2xvc2VNb2RhbEV2ZW50ID09PSAnY2xvc2VBbmRSZWZyZXNoJykge1xuICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXR1c01vZGFsVHlwZSQubmV4dCgnY2xvc2VkJyk7XG4gIH1cblxuICBwdWJsaWMgY29uZmlybURlbGV0ZVN0YXR1cyhzdGF0dXM6IEludGVybmFsQ2FzZVN0YXR1cyk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgICAgIHRoaXMuY2FzZVN0YXR1c1NlcnZpY2UuZGVsZXRlSW50ZXJuYWxDYXNlU3RhdHVzKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUsIHN0YXR1cy5rZXkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25Nb3ZlUm93Q2xpY2soZXZlbnQ6IE1vdmVSb3dFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHtkaXJlY3Rpb24sIGluZGV4fSA9IGV2ZW50O1xuXG4gICAgY29uc3Qgb3JkZXJlZFN0YXR1c2VzOiBJbnRlcm5hbENhc2VTdGF0dXNbXSA9XG4gICAgICBkaXJlY3Rpb24gPT09IE1vdmVSb3dEaXJlY3Rpb24uVVBcbiAgICAgICAgPyB0aGlzLnN3YXBTdGF0dXNlcyh0aGlzLl9kb2N1bWVudFN0YXR1c2VzLCBpbmRleCAtIDEsIGluZGV4KVxuICAgICAgICA6IHRoaXMuc3dhcFN0YXR1c2VzKHRoaXMuX2RvY3VtZW50U3RhdHVzZXMsIGluZGV4LCBpbmRleCArIDEpO1xuXG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChkb2N1bWVudERlZmluaXRpb25OYW1lID0+XG4gICAgICAgICAgdGhpcy5jYXNlU3RhdHVzU2VydmljZS51cGRhdGVJbnRlcm5hbENhc2VTdGF0dXNlcyhkb2N1bWVudERlZmluaXRpb25OYW1lLCBvcmRlcmVkU3RhdHVzZXMpXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbG9hZCh0cnVlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWxvYWQobm9BbmltYXRpb24gPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMuX3JlbG9hZCQubmV4dChub0FuaW1hdGlvbiA/ICdub0FuaW1hdGlvbicgOiBudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgc3dhcFN0YXR1c2VzKFxuICAgIHN0YXR1c2VzOiBJbnRlcm5hbENhc2VTdGF0dXNbXSxcbiAgICBpbmRleDE6IG51bWJlcixcbiAgICBpbmRleDI6IG51bWJlclxuICApOiBJbnRlcm5hbENhc2VTdGF0dXNbXSB7XG4gICAgY29uc3QgdGVtcCA9IFsuLi5zdGF0dXNlc107XG4gICAgdGVtcFtpbmRleDFdID0gdGVtcC5zcGxpY2UoaW5kZXgyLCAxLCB0ZW1wW2luZGV4MV0pWzBdO1xuXG4gICAgcmV0dXJuIHRlbXA7XG4gIH1cblxuICBwcml2YXRlIGluaXRGaWVsZHMoKTogdm9pZCB7XG4gICAgdGhpcy5maWVsZHMkLm5leHQoW1xuICAgICAge1xuICAgICAgICBrZXk6ICd0aXRsZScsXG4gICAgICAgIGxhYmVsOiAnZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMuY29sdW1ucy50aXRsZScsXG4gICAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5URVhULFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAna2V5JyxcbiAgICAgICAgbGFiZWw6ICdkb3NzaWVyTWFuYWdlbWVudC5zdGF0dXNlcy5jb2x1bW5zLmtleScsXG4gICAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5URVhULFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAndmlzaWJsZUluQ2FzZUxpc3RCeURlZmF1bHQnLFxuICAgICAgICBsYWJlbDogJ2Rvc3NpZXJNYW5hZ2VtZW50LnN0YXR1c2VzLmNvbHVtbnMudmlzaWJsZScsXG4gICAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5CT09MRUFOLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdmlld1R5cGU6IFZpZXdUeXBlLlRFTVBMQVRFLFxuICAgICAgICB0ZW1wbGF0ZTogdGhpcy5jb2xvckNvbHVtblRlbXBsYXRlLFxuICAgICAgICBrZXk6ICdjb2xvcicsXG4gICAgICAgIGxhYmVsOiAnZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMuY29sdW1ucy5jb2xvcicsXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjx2YWx0aW1vLWNhcmJvbi1saXN0XG4gICpuZ0lmPVwie1xuICAgIGxvYWRpbmc6IGxvYWRpbmckIHwgYXN5bmMsXG4gICAgZG9jdW1lbnRTdGF0dXNlczogZG9jdW1lbnRTdGF0dXNlcyQgfCBhc3luY1xuICB9IGFzIG9ic1wiXG4gIFtpdGVtc109XCJvYnMuZG9jdW1lbnRTdGF0dXNlc1wiXG4gIFtmaWVsZHNdPVwiZmllbGRzJCB8IGFzeW5jXCJcbiAgW2hlYWRlcl09XCJmYWxzZVwiXG4gIFtsb2FkaW5nXT1cIm9icy5sb2FkaW5nXCJcbiAgW21vdmluZ1Jvd3NFbmFibGVkXT1cInRydWVcIlxuICBbYWN0aW9uSXRlbXNdPVwiQUNUSU9OX0lURU1TXCJcbiAgKHJvd0NsaWNrZWQpPVwib3BlbkVkaXRNb2RhbCgkZXZlbnQpXCJcbiAgKG1vdmVSb3cpPVwib25Nb3ZlUm93Q2xpY2soJGV2ZW50KVwiXG4+XG4gIDxuZy1jb250YWluZXJcbiAgICBjYXJib25Ub29sYmFyQ29udGVudFxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uczsgY29udGV4dDoge29iczogb2JzfVwiXG4gID48L25nLWNvbnRhaW5lcj5cblxuICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIidkb3NzaWVyTWFuYWdlbWVudC5zdGF0dXNlcy5ub1Jlc3VsdHMuZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ2Rvc3NpZXJNYW5hZ2VtZW50LnN0YXR1c2VzLm5vUmVzdWx0cy50aXRsZScgfCB0cmFuc2xhdGVcIlxuICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG48L3ZhbHRpbW8tY2FyYm9uLWxpc3Q+XG5cbjx2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC1zdGF0dXMtbW9kYWxcbiAgW3R5cGVdPVwic3RhdHVzTW9kYWxUeXBlJCB8IGFzeW5jXCJcbiAgW3ByZWZpbGxdPVwicHJlZmlsbFN0YXR1cyQgfCBhc3luY1wiXG4gIFt1c2VkS2V5c109XCJ1c2VkS2V5cyQgfCBhc3luY1wiXG4gIFtkb2N1bWVudERlZmluaXRpb25OYW1lXT1cImRvY3VtZW50RGVmaW5pdGlvbk5hbWUkIHwgYXN5bmNcIlxuICAoY2xvc2VNb2RhbEV2ZW50KT1cImNsb3NlTW9kYWwoJGV2ZW50KVwiXG4+PC92YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC1zdGF0dXMtbW9kYWw+XG5cbjx2YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbFxuICBjb25maXJtQnV0dG9uVGV4dFRyYW5zbGF0aW9uS2V5PVwiaW50ZXJmYWNlLmRlbGV0ZVwiXG4gIGNvbmZpcm1CdXR0b25UeXBlPVwiZGFuZ2VyXCJcbiAgY29udGVudFRyYW5zbGF0aW9uS2V5PVwiZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMuZGVsZXRlVGV4dFwiXG4gIFtvdXRwdXRPbkNvbmZpcm1dPVwic3RhdHVzVG9EZWxldGUkIHwgYXN5bmNcIlxuICBbc2hvd01vZGFsU3ViamVjdCRdPVwic2hvd0RlbGV0ZU1vZGFsJFwiXG4gIHRpdGxlVHJhbnNsYXRpb25LZXk9XCJpbnRlcmZhY2UuZGVsZXRlXCJcbiAgKGNvbmZpcm1FdmVudCk9XCJjb25maXJtRGVsZXRlU3RhdHVzKCRldmVudClcIlxuPjwvdmFsdGltby1jb25maXJtYXRpb24tbW9kYWw+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9ucyBsZXQtb2JzPVwib2JzXCI+XG4gIDxkaXYgY2xhc3M9XCJkb3NzaWVyLW1hbmFnZW1lbnQtc2VhcmNoLWZpZWxkc19fYnV0dG9uc1wiPlxuICAgIDxidXR0b24gY2RzQnV0dG9uPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJvYnMubG9hZGluZ1wiIChjbGljayk9XCJvcGVuQWRkTW9kYWwoKVwiPlxuICAgICAgPHN2ZyBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCIgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiPjwvc3ZnPlxuXG4gICAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMuYWRkJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29sb3JDb2x1bW5UZW1wbGF0ZSBsZXQtZGF0YT1cImRhdGFcIj5cbiAgPGNkcy10YWcgY2xhc3M9XCJjZHMtdGFnLS1uby1tYXJnaW5cIiBbdHlwZV09XCJkYXRhPy5pdGVtPy50YWdUeXBlXCI+XG4gICAge3sgJ2ludGVyZmFjZS50YWdUeXBlLicgKyBkYXRhPy5pdGVtPy50YWdUeXBlIHwgdHJhbnNsYXRlIH19XG4gIDwvY2RzLXRhZz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|