@alfresco/adf-process-services 8.1.0-16320806191 → 9.1.0-16312921641
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/fesm2022/adf-process-services.mjs +297 -301
- package/fesm2022/adf-process-services.mjs.map +1 -1
- package/package.json +4 -6
- package/esm2022/adf-process-services.mjs +0 -5
- package/esm2022/lib/app-list/apps-list.component.mjs +0 -195
- package/esm2022/lib/app-list/icon.model.mjs +0 -166
- package/esm2022/lib/app-list/index.mjs +0 -18
- package/esm2022/lib/app-list/public-api.mjs +0 -23
- package/esm2022/lib/app-list/select-apps-dialog/select-apps-dialog.component.mjs +0 -53
- package/esm2022/lib/attachment/create-process-attachment/create-process-attachment.component.mjs +0 -73
- package/esm2022/lib/attachment/create-task-attachment/create-task-attachment.component.mjs +0 -73
- package/esm2022/lib/attachment/index.mjs +0 -18
- package/esm2022/lib/attachment/process-attachment-list/process-attachment-list.component.mjs +0 -197
- package/esm2022/lib/attachment/public-api.mjs +0 -31
- package/esm2022/lib/attachment/task-attachment-list/task-attachment-list.component.mjs +0 -196
- package/esm2022/lib/compat/types.mjs +0 -18
- package/esm2022/lib/form/events/validate-dynamic-table-row.event.mjs +0 -26
- package/esm2022/lib/form/form-custom-outcomes.component.mjs +0 -31
- package/esm2022/lib/form/form-list/form-list.component.mjs +0 -50
- package/esm2022/lib/form/form.component.mjs +0 -346
- package/esm2022/lib/form/index.mjs +0 -18
- package/esm2022/lib/form/model/form-definition.model.mjs +0 -92
- package/esm2022/lib/form/process-form-rendering.service.mjs +0 -55
- package/esm2022/lib/form/public-api.mjs +0 -32
- package/esm2022/lib/form/services/activiti-alfresco.service.mjs +0 -113
- package/esm2022/lib/form/services/ecm-model.service.mjs +0 -156
- package/esm2022/lib/form/services/editor.service.mjs +0 -87
- package/esm2022/lib/form/services/external-alfresco-api.service.mjs +0 -57
- package/esm2022/lib/form/services/index.mjs +0 -26
- package/esm2022/lib/form/services/model.service.mjs +0 -130
- package/esm2022/lib/form/services/process-content.service.mjs +0 -223
- package/esm2022/lib/form/services/process-definition.service.mjs +0 -93
- package/esm2022/lib/form/services/task-form.service.mjs +0 -127
- package/esm2022/lib/form/services/task.service.mjs +0 -77
- package/esm2022/lib/form/start-form/start-form.component.mjs +0 -141
- package/esm2022/lib/form/widgets/content-widget/attach-file-widget-dialog-component.interface.mjs +0 -18
- package/esm2022/lib/form/widgets/content-widget/attach-file-widget-dialog.component.mjs +0 -115
- package/esm2022/lib/form/widgets/content-widget/attach-file-widget-dialog.service.mjs +0 -100
- package/esm2022/lib/form/widgets/content-widget/attach-file-widget.component.mjs +0 -254
- package/esm2022/lib/form/widgets/content-widget/attach-folder-widget.component.mjs +0 -93
- package/esm2022/lib/form/widgets/content-widget/index.mjs +0 -18
- package/esm2022/lib/form/widgets/content-widget/public-api.mjs +0 -22
- package/esm2022/lib/form/widgets/document/content.widget.mjs +0 -125
- package/esm2022/lib/form/widgets/document/document.widget.mjs +0 -61
- package/esm2022/lib/form/widgets/dropdown/dropdown.widget.mjs +0 -182
- package/esm2022/lib/form/widgets/dynamic-table/dynamic-table.widget.mjs +0 -192
- package/esm2022/lib/form/widgets/dynamic-table/editors/amount/amount.editor.mjs +0 -47
- package/esm2022/lib/form/widgets/dynamic-table/editors/boolean/boolean.editor.mjs +0 -42
- package/esm2022/lib/form/widgets/dynamic-table/editors/date/date.editor.mjs +0 -84
- package/esm2022/lib/form/widgets/dynamic-table/editors/datetime/datetime.editor.mjs +0 -84
- package/esm2022/lib/form/widgets/dynamic-table/editors/dropdown/dropdown.editor.mjs +0 -95
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/cell-validator.model.mjs +0 -18
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/date-cell-validator-model.mjs +0 -47
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-row-validation-summary.model.mjs +0 -24
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-table-column-option.model.mjs +0 -18
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-table-column.model.mjs +0 -18
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-table-row.model.mjs +0 -18
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-table.widget.model.mjs +0 -159
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/number-cell-validator.model.mjs +0 -45
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/required-cell-validator.model.mjs +0 -40
- package/esm2022/lib/form/widgets/dynamic-table/editors/row-editor/row.editor.mjs +0 -89
- package/esm2022/lib/form/widgets/dynamic-table/editors/text/text.editor.mjs +0 -47
- package/esm2022/lib/form/widgets/dynamic-table/index.mjs +0 -18
- package/esm2022/lib/form/widgets/dynamic-table/public-api.mjs +0 -44
- package/esm2022/lib/form/widgets/file-viewer/file-viewer.widget.mjs +0 -46
- package/esm2022/lib/form/widgets/functional-group/functional-group.widget.mjs +0 -167
- package/esm2022/lib/form/widgets/index.mjs +0 -18
- package/esm2022/lib/form/widgets/people/people.widget.mjs +0 -169
- package/esm2022/lib/form/widgets/public-api.mjs +0 -54
- package/esm2022/lib/form/widgets/radio-buttons/radio-buttons.widget.mjs +0 -97
- package/esm2022/lib/form/widgets/typeahead/typeahead.widget.mjs +0 -152
- package/esm2022/lib/form/widgets/upload/upload.widget.mjs +0 -128
- package/esm2022/lib/people/components/people/people.component.mjs +0 -124
- package/esm2022/lib/people/components/people-list/people-list.component.mjs +0 -74
- package/esm2022/lib/people/components/people-search/people-search.component.mjs +0 -83
- package/esm2022/lib/people/components/people-search-field/people-search-field.component.mjs +0 -90
- package/esm2022/lib/people/components/people-selector/people-selector.component.mjs +0 -76
- package/esm2022/lib/people/helpers/get-display-user.mjs +0 -22
- package/esm2022/lib/people/index.mjs +0 -18
- package/esm2022/lib/people/interfaces/perform-search-callback.interface.mjs +0 -18
- package/esm2022/lib/people/public-api.mjs +0 -35
- package/esm2022/lib/process-comments/index.mjs +0 -21
- package/esm2022/lib/process-comments/process-comments.component.mjs +0 -45
- package/esm2022/lib/process-comments/services/comment-process.service.mjs +0 -77
- package/esm2022/lib/process-list/components/process-audit/process-audit.directive.mjs +0 -105
- package/esm2022/lib/process-list/components/process-filters/process-filters.component.mjs +0 -211
- package/esm2022/lib/process-list/components/process-instance-details/process-instance-details.component.mjs +0 -142
- package/esm2022/lib/process-list/components/process-instance-header/process-instance-header.component.mjs +0 -123
- package/esm2022/lib/process-list/components/process-instance-tasks/process-instance-tasks.component.mjs +0 -163
- package/esm2022/lib/process-list/components/process-list/process-list.component.mjs +0 -327
- package/esm2022/lib/process-list/components/start-process/start-process.component.mjs +0 -423
- package/esm2022/lib/process-list/index.mjs +0 -18
- package/esm2022/lib/process-list/public-api.mjs +0 -44
- package/esm2022/lib/process-list/services/process-filter.service.mjs +0 -182
- package/esm2022/lib/process-list/services/process.service.mjs +0 -259
- package/esm2022/lib/process.module.mjs +0 -132
- package/esm2022/lib/services/apps-process.service.mjs +0 -58
- package/esm2022/lib/services/people-process.service.mjs +0 -124
- package/esm2022/lib/services/task-comments.service.mjs +0 -65
- package/esm2022/lib/task-comments/index.mjs +0 -21
- package/esm2022/lib/task-comments/task-comments.component.mjs +0 -44
- package/esm2022/lib/task-list/components/attach-form/attach-form.component.mjs +0 -127
- package/esm2022/lib/task-list/components/checklist/checklist.component.mjs +0 -140
- package/esm2022/lib/task-list/components/start-task/start-task.component.mjs +0 -221
- package/esm2022/lib/task-list/components/task-details/task-details.component.mjs +0 -360
- package/esm2022/lib/task-list/components/task-filters/task-filters.component.mjs +0 -261
- package/esm2022/lib/task-list/components/task-form/claim-task.directive.mjs +0 -77
- package/esm2022/lib/task-list/components/task-form/task-form.component.mjs +0 -313
- package/esm2022/lib/task-list/components/task-form/unclaim-task.directive.mjs +0 -77
- package/esm2022/lib/task-list/components/task-header/task-header.component.mjs +0 -361
- package/esm2022/lib/task-list/components/task-list/task-list.component.mjs +0 -359
- package/esm2022/lib/task-list/components/task-standalone/task-standalone.component.mjs +0 -82
- package/esm2022/lib/task-list/index.mjs +0 -18
- package/esm2022/lib/task-list/models/form.model.mjs +0 -26
- package/esm2022/lib/task-list/models/task-details.event.mjs +0 -32
- package/esm2022/lib/task-list/models/task-preset.model.mjs +0 -41
- package/esm2022/lib/task-list/models/user-event.model.mjs +0 -18
- package/esm2022/lib/task-list/models/user-group.model.mjs +0 -18
- package/esm2022/lib/task-list/public-api.mjs +0 -60
- package/esm2022/lib/task-list/services/process-upload.service.mjs +0 -42
- package/esm2022/lib/task-list/services/task-filter.service.mjs +0 -249
- package/esm2022/lib/task-list/services/task-upload.service.mjs +0 -42
- package/esm2022/lib/task-list/services/tasklist.service.mjs +0 -251
- package/esm2022/lib/task-list/validators/task-description.validator.mjs +0 -26
- package/esm2022/public-api.mjs +0 -30
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
import { ADF_DATE_FORMATS, AdfDateFnsAdapter, DateFnsUtils, FormFieldModel, FormModel } from '@alfresco/adf-core';
|
|
18
|
-
import { Component, DestroyRef, EventEmitter, inject, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
19
|
-
import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
20
|
-
import { EMPTY } from 'rxjs';
|
|
21
|
-
import { TaskListService } from '../../services/tasklist.service';
|
|
22
|
-
import { defaultIfEmpty, switchMap } from 'rxjs/operators';
|
|
23
|
-
import { ReactiveFormsModule, UntypedFormBuilder, UntypedFormControl, Validators } from '@angular/forms';
|
|
24
|
-
import { isValid } from 'date-fns';
|
|
25
|
-
import { TaskRepresentation } from '@alfresco/js-api';
|
|
26
|
-
import { CommonModule } from '@angular/common';
|
|
27
|
-
import { TranslatePipe } from '@ngx-translate/core';
|
|
28
|
-
import { MatCardModule } from '@angular/material/card';
|
|
29
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
30
|
-
import { MatInputModule } from '@angular/material/input';
|
|
31
|
-
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
32
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
33
|
-
import { MatSelectModule } from '@angular/material/select';
|
|
34
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
35
|
-
import { PeopleWidgetComponent } from '../../../form';
|
|
36
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
37
|
-
import * as i0 from "@angular/core";
|
|
38
|
-
import * as i1 from "../../services/tasklist.service";
|
|
39
|
-
import * as i2 from "@angular/forms";
|
|
40
|
-
import * as i3 from "@angular/common";
|
|
41
|
-
import * as i4 from "@angular/material/card";
|
|
42
|
-
import * as i5 from "@angular/material/form-field";
|
|
43
|
-
import * as i6 from "@angular/material/input";
|
|
44
|
-
import * as i7 from "@angular/material/datepicker";
|
|
45
|
-
import * as i8 from "@angular/material/icon";
|
|
46
|
-
import * as i9 from "@angular/material/select";
|
|
47
|
-
import * as i10 from "@angular/material/core";
|
|
48
|
-
import * as i11 from "@angular/material/button";
|
|
49
|
-
const FORMAT_DATE = 'DD/MM/YYYY';
|
|
50
|
-
const MAX_LENGTH = 255;
|
|
51
|
-
export class StartTaskComponent {
|
|
52
|
-
constructor(taskService, formBuilder) {
|
|
53
|
-
this.taskService = taskService;
|
|
54
|
-
this.formBuilder = formBuilder;
|
|
55
|
-
/** Default Task Name. */
|
|
56
|
-
this.name = '';
|
|
57
|
-
/** Emitted when the task is successfully created. */
|
|
58
|
-
this.success = new EventEmitter();
|
|
59
|
-
/** Emitted when the cancel button is clicked by the user. */
|
|
60
|
-
this.cancel = new EventEmitter();
|
|
61
|
-
/** Emitted when an error occurs. */
|
|
62
|
-
this.error = new EventEmitter();
|
|
63
|
-
this.taskDetailsModel = new TaskRepresentation();
|
|
64
|
-
this.dateError = false;
|
|
65
|
-
this.maxTaskNameLength = MAX_LENGTH;
|
|
66
|
-
this.loading = false;
|
|
67
|
-
this.destroyRef = inject(DestroyRef);
|
|
68
|
-
}
|
|
69
|
-
ngOnInit() {
|
|
70
|
-
if (this.name) {
|
|
71
|
-
this.taskDetailsModel.name = this.name;
|
|
72
|
-
}
|
|
73
|
-
this.validateMaxTaskNameLength();
|
|
74
|
-
this.field = new FormFieldModel(new FormModel(), { id: this.assigneeId, value: this.assigneeId, placeholder: 'Assignee' });
|
|
75
|
-
this.loadFormsTask();
|
|
76
|
-
this.buildForm();
|
|
77
|
-
}
|
|
78
|
-
buildForm() {
|
|
79
|
-
this.taskForm = this.formBuilder.group({
|
|
80
|
-
name: new UntypedFormControl(this.taskDetailsModel.name, [
|
|
81
|
-
Validators.required,
|
|
82
|
-
Validators.maxLength(this.maxTaskNameLength),
|
|
83
|
-
this.whitespaceValidator
|
|
84
|
-
]),
|
|
85
|
-
description: new UntypedFormControl('', [this.whitespaceValidator]),
|
|
86
|
-
formKey: new UntypedFormControl('')
|
|
87
|
-
});
|
|
88
|
-
this.taskForm.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((taskFormValues) => this.setTaskDetails(taskFormValues));
|
|
89
|
-
}
|
|
90
|
-
whitespaceValidator(control) {
|
|
91
|
-
if (control.value) {
|
|
92
|
-
const isWhitespace = (control.value || '').trim().length === 0;
|
|
93
|
-
const isControlValid = control.value.length === 0 || !isWhitespace;
|
|
94
|
-
return isControlValid ? null : { whitespace: true };
|
|
95
|
-
}
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
setTaskDetails(form) {
|
|
99
|
-
this.taskDetailsModel.name = form.name;
|
|
100
|
-
this.taskDetailsModel.description = form.description;
|
|
101
|
-
this.taskDetailsModel.formKey = form.formKey ? form.formKey.toString() : null;
|
|
102
|
-
}
|
|
103
|
-
isFormValid() {
|
|
104
|
-
return this.taskForm.valid && !this.dateError && !this.loading;
|
|
105
|
-
}
|
|
106
|
-
saveTask() {
|
|
107
|
-
this.loading = true;
|
|
108
|
-
if (this.appId) {
|
|
109
|
-
this.taskDetailsModel.category = this.appId.toString();
|
|
110
|
-
}
|
|
111
|
-
this.taskService
|
|
112
|
-
.createNewTask(this.taskDetailsModel)
|
|
113
|
-
.pipe(switchMap((createRes) => this.attachForm(createRes.id, this.taskDetailsModel.formKey).pipe(defaultIfEmpty(createRes), switchMap((attachRes) => {
|
|
114
|
-
const assigneeId = this.assigneeId ? this.assigneeId.toString() : null;
|
|
115
|
-
return this.assignTaskByUserId(createRes.id, assigneeId).pipe(defaultIfEmpty(attachRes ? attachRes : createRes));
|
|
116
|
-
}))))
|
|
117
|
-
.subscribe((res) => {
|
|
118
|
-
this.loading = false;
|
|
119
|
-
this.success.emit(res);
|
|
120
|
-
}, (err) => {
|
|
121
|
-
this.loading = false;
|
|
122
|
-
this.error.emit(err);
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
setAssigneeId(userId) {
|
|
126
|
-
this.assigneeId = userId;
|
|
127
|
-
}
|
|
128
|
-
onCancel() {
|
|
129
|
-
this.cancel.emit();
|
|
130
|
-
}
|
|
131
|
-
getDisplayUser(firstName, lastName, delimiter = '-') {
|
|
132
|
-
firstName = firstName !== null ? firstName : '';
|
|
133
|
-
lastName = lastName !== null ? lastName : '';
|
|
134
|
-
return firstName + delimiter + lastName;
|
|
135
|
-
}
|
|
136
|
-
onDateChanged(newDateValue) {
|
|
137
|
-
this.dateError = false;
|
|
138
|
-
if (newDateValue) {
|
|
139
|
-
let date;
|
|
140
|
-
if (typeof newDateValue === 'string') {
|
|
141
|
-
date = DateFnsUtils.parseDate(newDateValue, FORMAT_DATE);
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
date = newDateValue;
|
|
145
|
-
}
|
|
146
|
-
if (isValid(date)) {
|
|
147
|
-
this.taskDetailsModel.dueDate = date;
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
this.dateError = true;
|
|
151
|
-
this.taskDetailsModel.dueDate = null;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
this.taskDetailsModel.dueDate = null;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
validateMaxTaskNameLength() {
|
|
159
|
-
if (this.maxTaskNameLength > MAX_LENGTH) {
|
|
160
|
-
this.maxTaskNameLength = MAX_LENGTH;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
get nameController() {
|
|
164
|
-
return this.taskForm.get('name');
|
|
165
|
-
}
|
|
166
|
-
get descriptionController() {
|
|
167
|
-
return this.taskForm.get('description');
|
|
168
|
-
}
|
|
169
|
-
attachForm(taskId, formKey) {
|
|
170
|
-
let response = EMPTY;
|
|
171
|
-
if (taskId && formKey) {
|
|
172
|
-
response = this.taskService.attachFormToATask(taskId, parseInt(formKey, 10));
|
|
173
|
-
}
|
|
174
|
-
return response;
|
|
175
|
-
}
|
|
176
|
-
assignTaskByUserId(taskId, userId) {
|
|
177
|
-
if (taskId && userId) {
|
|
178
|
-
return this.taskService.assignTaskByUserId(taskId, userId);
|
|
179
|
-
}
|
|
180
|
-
return EMPTY;
|
|
181
|
-
}
|
|
182
|
-
loadFormsTask() {
|
|
183
|
-
this.forms$ = this.taskService.getFormList();
|
|
184
|
-
}
|
|
185
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StartTaskComponent, deps: [{ token: i1.TaskListService }, { token: i2.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
186
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StartTaskComponent, isStandalone: true, selector: "adf-start-task", inputs: { appId: "appId", name: "name" }, outputs: { success: "success", cancel: "cancel", error: "error" }, providers: [
|
|
187
|
-
{ provide: DateAdapter, useClass: AdfDateFnsAdapter },
|
|
188
|
-
{ provide: MAT_DATE_FORMATS, useValue: ADF_DATE_FORMATS }
|
|
189
|
-
], ngImport: i0, template: "<mat-card appearance=\"outlined\" class=\"adf-new-task-layout-card\">\n <mat-card-header class=\"adf-new-task-heading\">\n <mat-card-title>{{'ADF_TASK_LIST.START_TASK.FORM.TITLE' | translate}}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <form [formGroup]=\"taskForm\" class=\"adf-new-task-form\">\n <div class=\"adf-task-name\">\n <mat-form-field>\n <mat-label>{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.NAME' | translate}}</mat-label>\n <input\n matInput\n id=\"name_id\"\n formControlName=\"name\">\n <mat-error *ngIf=\"nameController.hasError('required') || nameController.hasError('whitespace')\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ERROR.REQUIRED' | translate }}\n </mat-error>\n <mat-error *ngIf=\"nameController.hasError('maxlength')\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ERROR.MAXIMUM_LENGTH' | translate : { characters : maxTaskNameLength } }}\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"adf-task-description\">\n <mat-form-field>\n <mat-label>{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.DESCRIPTION' | translate}}</mat-label>\n <textarea\n matInput\n rows=\"1\"\n id=\"description_id\"\n formControlName=\"description\">\n </textarea>\n <mat-error *ngIf=\"descriptionController.hasError('whitespace')\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ERROR.MESSAGE' | translate }}\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"adf-input-row\">\n <mat-form-field>\n <input\n matInput\n (keyup)=\"onDateChanged($any($event).srcElement.value)\"\n (dateInput)=\"onDateChanged($any($event).value)\"\n [matDatepicker]=\"taskDatePicker\"\n placeholder=\"{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.DATE'|translate}}\"\n id=\"date_id\">\n <mat-datepicker-toggle\n matSuffix\n [for]=\"taskDatePicker\" />\n <mat-datepicker\n #taskDatePicker\n [touchUi]=\"true\" />\n <div class=\"adf-error-text-container\">\n <div *ngIf=\"dateError\">\n <div class=\"adf-error-text\">{{'ADF_TASK_LIST.START_TASK.FORM.ERROR.DATE'|translate}}</div>\n <mat-icon class=\"adf-error-icon\">warning</mat-icon>\n </div>\n </div>\n </mat-form-field>\n <people-widget\n (peopleSelected)=\"setAssigneeId($event)\"\n [field]=\"field\"\n class=\"adf-people-widget-content\" />\n </div>\n <mat-form-field class=\"adf-task-form\">\n <mat-label id=\"form_label\">{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.FORM'|translate}}</mat-label>\n <mat-select\n id=\"form_id\"\n class=\"form-control\"\n formControlName=\"formKey\">\n <mat-option>{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.NONE'|translate}}</mat-option>\n <mat-option *ngFor=\"let form of forms$ | async\" [value]=\"form.id\">{{ form.name }}</mat-option>\n </mat-select>\n </mat-form-field>\n </form>\n </mat-card-content>\n <mat-card-actions>\n <div class=\"adf-new-task-footer\">\n <button\n mat-button\n class=\"adf-uppercase\"\n (click)=\"onCancel()\"\n id=\"button-cancel\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ACTION.CANCEL' | translate }}\n </button>\n <button\n color=\"primary\"\n mat-button\n class=\"adf-uppercase\"\n [disabled]=\"!isFormValid()\"\n (click)=\"saveTask()\"\n id=\"button-start\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ACTION.START' | translate }}\n </button>\n </div>\n </mat-card-actions>\n</mat-card>\n", styles: [".adf-new-task-heading{padding-top:12px;border-bottom:1px solid var(--adf-theme-foreground-divider-color)}.adf-new-task-heading .mat-mdc-card-title{font-weight:700;font-size:var(--theme-adf-task-title-font-size)}.adf-new-task-layout-card{margin:10px auto;flex:1 1 100%;max-width:70%}.adf-new-task-layout-card .adf-new-task-form{flex-direction:column;display:flex}.adf-new-task-layout-card .adf-new-task-form .adf-task-name,.adf-new-task-layout-card .adf-new-task-form .adf-task-description{display:flex;margin-bottom:10px}.adf-new-task-layout-card .adf-new-task-form .adf-task-name mat-form-field,.adf-new-task-layout-card .adf-new-task-form .adf-task-description mat-form-field{flex:1}@media (max-width: 959.9px){.adf-new-task-layout-card .adf-new-task-form .adf-input-row{flex-direction:column}}@media (max-width: 959.9px){.adf-new-task-layout-card .adf-new-task-form .adf-input-row mat-form-field{margin-right:20px}}.adf-new-task-layout-card .adf-new-task-form .adf-task-form{flex:1 1 100%;box-sizing:border-box;max-width:48%}@media (max-width: 599.9px){.adf-new-task-layout-card .adf-new-task-form .adf-task-form{max-width:100%}}.adf-new-task-footer{padding:4px;font-size:var(--theme-adf-task-footer-font-size);border-top:1px solid #eee;display:flex;place-content:flex-end;align-items:flex-end}.adf-mat-select{padding-top:0}adf-start-task .mat-mdc-button.adf-uppercase{text-transform:uppercase}adf-start-task people-widget.adf-people-widget-content{width:100%}adf-start-task people-widget.adf-people-widget-content .mat-mdc-floating-label{top:-14px}adf-start-task .adf-people-widget-content .mat-mdc-form-field{width:100%}adf-start-task .adf-people-widget-content .adf-label{line-height:0}adf-start-task .adf-people-widget-content .adf-error-container{margin-top:-10px}adf-start-task .adf-start-task-input-container .mat-mdc-text-field-wrapper{padding-top:8px}adf-start-task .adf-error-text-container{position:absolute;height:20px;margin-top:12px;width:100%}adf-start-task .adf-error-text-container>div{display:flex;flex-flow:row;justify-content:flex-start}adf-start-task .adf-error-text{padding-right:8px;height:16px;font-size:var(--theme-caption-font-size);line-height:1.33;color:var(--theme-warn-color);width:auto}adf-start-task .adf-error-icon{font-size:var(--theme-adf-icon-1-font-size);color:var(--theme-warn-color)}adf-start-task .adf-label{color:#bababa}adf-start-task .adf-invalid .adf-file{border-color:var(--theme-warn-color)}adf-start-task .adf-invalid .mat-mdc-form-field-text-prefix{color:var(--theme-warn-color)}adf-start-task .adf-invalid .adf-input{border-color:var(--theme-warn-color)}adf-start-task .adf-invalid .adf-label{color:var(--theme-warn-color)}adf-start-task .adf-invalid .adf-label:after{background-color:var(--theme-warn-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i7.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i7.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i7.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i10.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i11.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: PeopleWidgetComponent, selector: "people-widget", outputs: ["peopleSelected"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
190
|
-
}
|
|
191
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StartTaskComponent, decorators: [{
|
|
192
|
-
type: Component,
|
|
193
|
-
args: [{ selector: 'adf-start-task', standalone: true, imports: [
|
|
194
|
-
CommonModule,
|
|
195
|
-
TranslatePipe,
|
|
196
|
-
MatCardModule,
|
|
197
|
-
ReactiveFormsModule,
|
|
198
|
-
MatFormFieldModule,
|
|
199
|
-
MatInputModule,
|
|
200
|
-
MatDatepickerModule,
|
|
201
|
-
MatIconModule,
|
|
202
|
-
MatSelectModule,
|
|
203
|
-
MatButtonModule,
|
|
204
|
-
PeopleWidgetComponent
|
|
205
|
-
], providers: [
|
|
206
|
-
{ provide: DateAdapter, useClass: AdfDateFnsAdapter },
|
|
207
|
-
{ provide: MAT_DATE_FORMATS, useValue: ADF_DATE_FORMATS }
|
|
208
|
-
], encapsulation: ViewEncapsulation.None, template: "<mat-card appearance=\"outlined\" class=\"adf-new-task-layout-card\">\n <mat-card-header class=\"adf-new-task-heading\">\n <mat-card-title>{{'ADF_TASK_LIST.START_TASK.FORM.TITLE' | translate}}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <form [formGroup]=\"taskForm\" class=\"adf-new-task-form\">\n <div class=\"adf-task-name\">\n <mat-form-field>\n <mat-label>{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.NAME' | translate}}</mat-label>\n <input\n matInput\n id=\"name_id\"\n formControlName=\"name\">\n <mat-error *ngIf=\"nameController.hasError('required') || nameController.hasError('whitespace')\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ERROR.REQUIRED' | translate }}\n </mat-error>\n <mat-error *ngIf=\"nameController.hasError('maxlength')\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ERROR.MAXIMUM_LENGTH' | translate : { characters : maxTaskNameLength } }}\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"adf-task-description\">\n <mat-form-field>\n <mat-label>{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.DESCRIPTION' | translate}}</mat-label>\n <textarea\n matInput\n rows=\"1\"\n id=\"description_id\"\n formControlName=\"description\">\n </textarea>\n <mat-error *ngIf=\"descriptionController.hasError('whitespace')\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ERROR.MESSAGE' | translate }}\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"adf-input-row\">\n <mat-form-field>\n <input\n matInput\n (keyup)=\"onDateChanged($any($event).srcElement.value)\"\n (dateInput)=\"onDateChanged($any($event).value)\"\n [matDatepicker]=\"taskDatePicker\"\n placeholder=\"{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.DATE'|translate}}\"\n id=\"date_id\">\n <mat-datepicker-toggle\n matSuffix\n [for]=\"taskDatePicker\" />\n <mat-datepicker\n #taskDatePicker\n [touchUi]=\"true\" />\n <div class=\"adf-error-text-container\">\n <div *ngIf=\"dateError\">\n <div class=\"adf-error-text\">{{'ADF_TASK_LIST.START_TASK.FORM.ERROR.DATE'|translate}}</div>\n <mat-icon class=\"adf-error-icon\">warning</mat-icon>\n </div>\n </div>\n </mat-form-field>\n <people-widget\n (peopleSelected)=\"setAssigneeId($event)\"\n [field]=\"field\"\n class=\"adf-people-widget-content\" />\n </div>\n <mat-form-field class=\"adf-task-form\">\n <mat-label id=\"form_label\">{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.FORM'|translate}}</mat-label>\n <mat-select\n id=\"form_id\"\n class=\"form-control\"\n formControlName=\"formKey\">\n <mat-option>{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.NONE'|translate}}</mat-option>\n <mat-option *ngFor=\"let form of forms$ | async\" [value]=\"form.id\">{{ form.name }}</mat-option>\n </mat-select>\n </mat-form-field>\n </form>\n </mat-card-content>\n <mat-card-actions>\n <div class=\"adf-new-task-footer\">\n <button\n mat-button\n class=\"adf-uppercase\"\n (click)=\"onCancel()\"\n id=\"button-cancel\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ACTION.CANCEL' | translate }}\n </button>\n <button\n color=\"primary\"\n mat-button\n class=\"adf-uppercase\"\n [disabled]=\"!isFormValid()\"\n (click)=\"saveTask()\"\n id=\"button-start\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ACTION.START' | translate }}\n </button>\n </div>\n </mat-card-actions>\n</mat-card>\n", styles: [".adf-new-task-heading{padding-top:12px;border-bottom:1px solid var(--adf-theme-foreground-divider-color)}.adf-new-task-heading .mat-mdc-card-title{font-weight:700;font-size:var(--theme-adf-task-title-font-size)}.adf-new-task-layout-card{margin:10px auto;flex:1 1 100%;max-width:70%}.adf-new-task-layout-card .adf-new-task-form{flex-direction:column;display:flex}.adf-new-task-layout-card .adf-new-task-form .adf-task-name,.adf-new-task-layout-card .adf-new-task-form .adf-task-description{display:flex;margin-bottom:10px}.adf-new-task-layout-card .adf-new-task-form .adf-task-name mat-form-field,.adf-new-task-layout-card .adf-new-task-form .adf-task-description mat-form-field{flex:1}@media (max-width: 959.9px){.adf-new-task-layout-card .adf-new-task-form .adf-input-row{flex-direction:column}}@media (max-width: 959.9px){.adf-new-task-layout-card .adf-new-task-form .adf-input-row mat-form-field{margin-right:20px}}.adf-new-task-layout-card .adf-new-task-form .adf-task-form{flex:1 1 100%;box-sizing:border-box;max-width:48%}@media (max-width: 599.9px){.adf-new-task-layout-card .adf-new-task-form .adf-task-form{max-width:100%}}.adf-new-task-footer{padding:4px;font-size:var(--theme-adf-task-footer-font-size);border-top:1px solid #eee;display:flex;place-content:flex-end;align-items:flex-end}.adf-mat-select{padding-top:0}adf-start-task .mat-mdc-button.adf-uppercase{text-transform:uppercase}adf-start-task people-widget.adf-people-widget-content{width:100%}adf-start-task people-widget.adf-people-widget-content .mat-mdc-floating-label{top:-14px}adf-start-task .adf-people-widget-content .mat-mdc-form-field{width:100%}adf-start-task .adf-people-widget-content .adf-label{line-height:0}adf-start-task .adf-people-widget-content .adf-error-container{margin-top:-10px}adf-start-task .adf-start-task-input-container .mat-mdc-text-field-wrapper{padding-top:8px}adf-start-task .adf-error-text-container{position:absolute;height:20px;margin-top:12px;width:100%}adf-start-task .adf-error-text-container>div{display:flex;flex-flow:row;justify-content:flex-start}adf-start-task .adf-error-text{padding-right:8px;height:16px;font-size:var(--theme-caption-font-size);line-height:1.33;color:var(--theme-warn-color);width:auto}adf-start-task .adf-error-icon{font-size:var(--theme-adf-icon-1-font-size);color:var(--theme-warn-color)}adf-start-task .adf-label{color:#bababa}adf-start-task .adf-invalid .adf-file{border-color:var(--theme-warn-color)}adf-start-task .adf-invalid .mat-mdc-form-field-text-prefix{color:var(--theme-warn-color)}adf-start-task .adf-invalid .adf-input{border-color:var(--theme-warn-color)}adf-start-task .adf-invalid .adf-label{color:var(--theme-warn-color)}adf-start-task .adf-invalid .adf-label:after{background-color:var(--theme-warn-color)}\n"] }]
|
|
209
|
-
}], ctorParameters: () => [{ type: i1.TaskListService }, { type: i2.UntypedFormBuilder }], propDecorators: { appId: [{
|
|
210
|
-
type: Input,
|
|
211
|
-
args: [{ required: true }]
|
|
212
|
-
}], name: [{
|
|
213
|
-
type: Input
|
|
214
|
-
}], success: [{
|
|
215
|
-
type: Output
|
|
216
|
-
}], cancel: [{
|
|
217
|
-
type: Output
|
|
218
|
-
}], error: [{
|
|
219
|
-
type: Output
|
|
220
|
-
}] } });
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtdGFzay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy9zcmMvbGliL3Rhc2stbGlzdC9jb21wb25lbnRzL3N0YXJ0LXRhc2svc3RhcnQtdGFzay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy9zcmMvbGliL3Rhc2stbGlzdC9jb21wb25lbnRzL3N0YXJ0LXRhc2svc3RhcnQtdGFzay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxLQUFLLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBb0IsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUksT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxP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LEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUU7WUFDckQsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFO1NBQzVELDBCQy9ETCw4bUpBK0ZBLG93RkRqRFEsWUFBWSxnVEFDWixhQUFhLGlEQUNiLGFBQWEsaWhCQUNiLG1CQUFtQiw0OEJBQ25CLGtCQUFrQix3Z0JBQ2xCLGNBQWMsMFdBQ2QsbUJBQW1CLGlnQkFDbkIsYUFBYSxtTEFDYixlQUFlLG9yQkFDZixlQUFlLDZOQUNmLHFCQUFxQjs7NEZBVWhCLGtCQUFrQjtrQkF4QjlCLFNBQVM7K0JBQ0ksZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YscUJBQXFCO3FCQUN4QixhQUdVO3dCQUNQLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUU7d0JBQ3JELEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRTtxQkFDNUQsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSTtxSEFLckMsS0FBSztzQkFESixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFLekIsSUFBSTtzQkFESCxLQUFLO2dCQUtOLE9BQU87c0JBRE4sTUFBTTtnQkFLUCxNQUFNO3NCQURMLE1BQU07Z0JBS1AsS0FBSztzQkFESixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBBREZfREFURV9GT1JNQVRTLCBBZGZEYXRlRm5zQWRhcHRlciwgRGF0ZUZuc1V0aWxzLCBGb3JtRmllbGRNb2RlbCwgRm9ybU1vZGVsIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBNQVRfREFURV9GT1JNQVRTIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybSB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLm1vZGVsJztcbmltcG9ydCB7IFRhc2tMaXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Rhc2tsaXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVmYXVsdElmRW1wdHksIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpc1ZhbGlkIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgVGFza1JlcHJlc2VudGF0aW9uIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgUGVvcGxlV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZm9ybSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmNvbnN0IEZPUk1BVF9EQVRFID0gJ0REL01NL1lZWVknO1xuY29uc3QgTUFYX0xFTkdUSCA9IDI1NTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtc3RhcnQtdGFzaycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlUGlwZSxcbiAgICAgICAgTWF0Q2FyZE1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICAgICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIFBlb3BsZVdpZGdldENvbXBvbmVudFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3N0YXJ0LXRhc2suY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0YXJ0LXRhc2suY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IEFkZkRhdGVGbnNBZGFwdGVyIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IEFERl9EQVRFX0ZPUk1BVFMgfVxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBTdGFydFRhc2tDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKiAocmVxdWlyZWQpIFRoZSBpZCBvZiB0aGUgYXBwLiAqL1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgYXBwSWQ6IG51bWJlcjtcblxuICAgIC8qKiBEZWZhdWx0IFRhc2sgTmFtZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5hbWU6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgdGFzayBpcyBzdWNjZXNzZnVsbHkgY3JlYXRlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBjYW5jZWwgYnV0dG9uIGlzIGNsaWNrZWQgYnkgdGhlIHVzZXIuICovXG4gICAgQE91dHB1dCgpXG4gICAgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhbiBlcnJvciBvY2N1cnMuICovXG4gICAgQE91dHB1dCgpXG4gICAgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIHRhc2tEZXRhaWxzTW9kZWwgPSBuZXcgVGFza1JlcHJlc2VudGF0aW9uKCk7XG4gICAgZm9ybXMkOiBPYnNlcnZhYmxlPEZvcm1bXT47XG4gICAgYXNzaWduZWVJZDogbnVtYmVyO1xuICAgIGZpZWxkOiBGb3JtRmllbGRNb2RlbDtcbiAgICB0YXNrRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgICBkYXRlRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBtYXhUYXNrTmFtZUxlbmd0aDogbnVtYmVyID0gTUFYX0xFTkdUSDtcbiAgICBsb2FkaW5nID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRhc2tTZXJ2aWNlOiBUYXNrTGlzdFNlcnZpY2UsIHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcikge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5uYW1lKSB7XG4gICAgICAgICAgICB0aGlzLnRhc2tEZXRhaWxzTW9kZWwubmFtZSA9IHRoaXMubmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsaWRhdGVNYXhUYXNrTmFtZUxlbmd0aCgpO1xuXG4gICAgICAgIHRoaXMuZmllbGQgPSBuZXcgRm9ybUZpZWxkTW9kZWwobmV3IEZvcm1Nb2RlbCgpLCB7IGlkOiB0aGlzLmFzc2lnbmVlSWQsIHZhbHVlOiB0aGlzLmFzc2lnbmVlSWQsIHBsYWNlaG9sZGVyOiAnQXNzaWduZWUnIH0pO1xuXG4gICAgICAgIHRoaXMubG9hZEZvcm1zVGFzaygpO1xuICAgICAgICB0aGlzLmJ1aWxkRm9ybSgpO1xuICAgIH1cblxuICAgIGJ1aWxkRm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YXNrRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgbmFtZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh0aGlzLnRhc2tEZXRhaWxzTW9kZWwubmFtZSwgW1xuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5tYXhUYXNrTmFtZUxlbmd0aCksXG4gICAgICAgICAgICAgICAgdGhpcy53aGl0ZXNwYWNlVmFsaWRhdG9yXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnLCBbdGhpcy53aGl0ZXNwYWNlVmFsaWRhdG9yXSksXG4gICAgICAgICAgICBmb3JtS2V5OiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnRhc2tGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKHRhc2tGb3JtVmFsdWVzKSA9PiB0aGlzLnNldFRhc2tEZXRhaWxzKHRhc2tGb3JtVmFsdWVzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3aGl0ZXNwYWNlVmFsaWRhdG9yKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCk6IGFueSB7XG4gICAgICAgIGlmIChjb250cm9sLnZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBpc1doaXRlc3BhY2UgPSAoY29udHJvbC52YWx1ZSB8fCAnJykudHJpbSgpLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgICAgIGNvbnN0IGlzQ29udHJvbFZhbGlkID0gY29udHJvbC52YWx1ZS5sZW5ndGggPT09IDAgfHwgIWlzV2hpdGVzcGFjZTtcbiAgICAgICAgICAgIHJldHVybiBpc0NvbnRyb2xWYWxpZCA/IG51bGwgOiB7IHdoaXRlc3BhY2U6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBzZXRUYXNrRGV0YWlscyhmb3JtOiBhbnkpIHtcbiAgICAgICAgdGhpcy50YXNrRGV0YWlsc01vZGVsLm5hbWUgPSBmb3JtLm5hbWU7XG4gICAgICAgIHRoaXMudGFza0RldGFpbHNNb2RlbC5kZXNjcmlwdGlvbiA9IGZvcm0uZGVzY3JpcHRpb247XG4gICAgICAgIHRoaXMudGFza0RldGFpbHNNb2RlbC5mb3JtS2V5ID0gZm9ybS5mb3JtS2V5ID8gZm9ybS5mb3JtS2V5LnRvU3RyaW5nKCkgOiBudWxsO1xuICAgIH1cblxuICAgIGlzRm9ybVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YXNrRm9ybS52YWxpZCAmJiAhdGhpcy5kYXRlRXJyb3IgJiYgIXRoaXMubG9hZGluZztcbiAgICB9XG5cbiAgICBzYXZlVGFzaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuYXBwSWQpIHtcbiAgICAgICAgICAgIHRoaXMudGFza0RldGFpbHNNb2RlbC5jYXRlZ29yeSA9IHRoaXMuYXBwSWQudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRhc2tTZXJ2aWNlXG4gICAgICAgICAgICAuY3JlYXRlTmV3VGFzayh0aGlzLnRhc2tEZXRhaWxzTW9kZWwpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKGNyZWF0ZVJlcykgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRhY2hGb3JtKGNyZWF0ZVJlcy5pZCwgdGhpcy50YXNrRGV0YWlsc01vZGVsLmZvcm1LZXkpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0SWZFbXB0eShjcmVhdGVSZXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKChhdHRhY2hSZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhc3NpZ25lZUlkID0gdGhpcy5hc3NpZ25lZUlkID8gdGhpcy5hc3NpZ25lZUlkLnRvU3RyaW5nKCkgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzc2lnblRhc2tCeVVzZXJJZChjcmVhdGVSZXMuaWQsIGFzc2lnbmVlSWQpLnBpcGUoZGVmYXVsdElmRW1wdHkoYXR0YWNoUmVzID8gYXR0YWNoUmVzIDogY3JlYXRlUmVzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzcy5lbWl0KHJlcyk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHNldEFzc2lnbmVlSWQodXNlcklkOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hc3NpZ25lZUlkID0gdXNlcklkO1xuICAgIH1cblxuICAgIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gICAgfVxuXG4gICAgZ2V0RGlzcGxheVVzZXIoZmlyc3ROYW1lOiBzdHJpbmcsIGxhc3ROYW1lOiBzdHJpbmcsIGRlbGltaXRlcjogc3RyaW5nID0gJy0nKTogc3RyaW5nIHtcbiAgICAgICAgZmlyc3ROYW1lID0gZmlyc3ROYW1lICE9PSBudWxsID8gZmlyc3ROYW1lIDogJyc7XG4gICAgICAgIGxhc3ROYW1lID0gbGFzdE5hbWUgIT09IG51bGwgPyBsYXN0TmFtZSA6ICcnO1xuICAgICAgICByZXR1cm4gZmlyc3ROYW1lICsgZGVsaW1pdGVyICsgbGFzdE5hbWU7XG4gICAgfVxuXG4gICAgb25EYXRlQ2hhbmdlZChuZXdEYXRlVmFsdWU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5kYXRlRXJyb3IgPSBmYWxzZTtcblxuICAgICAgICBpZiAobmV3RGF0ZVZhbHVlKSB7XG4gICAgICAgICAgICBsZXQgZGF0ZTogRGF0ZTtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBuZXdEYXRlVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZGF0ZSA9IERhdGVGbnNVdGlscy5wYXJzZURhdGUobmV3RGF0ZVZhbHVlLCBGT1JNQVRfREFURSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGUgPSBuZXdEYXRlVmFsdWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc1ZhbGlkKGRhdGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50YXNrRGV0YWlsc01vZGVsLmR1ZURhdGUgPSBkYXRlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy50YXNrRGV0YWlsc01vZGVsLmR1ZURhdGUgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50YXNrRGV0YWlsc01vZGVsLmR1ZURhdGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZU1heFRhc2tOYW1lTGVuZ3RoKCkge1xuICAgICAgICBpZiAodGhpcy5tYXhUYXNrTmFtZUxlbmd0aCA+IE1BWF9MRU5HVEgpIHtcbiAgICAgICAgICAgIHRoaXMubWF4VGFza05hbWVMZW5ndGggPSBNQVhfTEVOR1RIO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IG5hbWVDb250cm9sbGVyKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhc2tGb3JtLmdldCgnbmFtZScpO1xuICAgIH1cblxuICAgIGdldCBkZXNjcmlwdGlvbkNvbnRyb2xsZXIoKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFza0Zvcm0uZ2V0KCdkZXNjcmlwdGlvbicpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXR0YWNoRm9ybSh0YXNrSWQ6IHN0cmluZywgZm9ybUtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgbGV0IHJlc3BvbnNlOiBhbnkgPSBFTVBUWTtcbiAgICAgICAgaWYgKHRhc2tJZCAmJiBmb3JtS2V5KSB7XG4gICAgICAgICAgICByZXNwb25zZSA9IHRoaXMudGFza1NlcnZpY2UuYXR0YWNoRm9ybVRvQVRhc2sodGFza0lkLCBwYXJzZUludChmb3JtS2V5LCAxMCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzc2lnblRhc2tCeVVzZXJJZCh0YXNrSWQ6IHN0cmluZywgdXNlcklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRhc2tSZXByZXNlbnRhdGlvbj4ge1xuICAgICAgICBpZiAodGFza0lkICYmIHVzZXJJZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFza1NlcnZpY2UuYXNzaWduVGFza0J5VXNlcklkKHRhc2tJZCwgdXNlcklkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkRm9ybXNUYXNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1zJCA9IHRoaXMudGFza1NlcnZpY2UuZ2V0Rm9ybUxpc3QoKTtcbiAgICB9XG59XG4iLCI8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCIgY2xhc3M9XCJhZGYtbmV3LXRhc2stbGF5b3V0LWNhcmRcIj5cbiAgICA8bWF0LWNhcmQtaGVhZGVyIGNsYXNzPVwiYWRmLW5ldy10YXNrLWhlYWRpbmdcIj5cbiAgICAgICAgPG1hdC1jYXJkLXRpdGxlPnt7J0FERl9UQVNLX0xJU1QuU1RBUlRfVEFTSy5GT1JNLlRJVExFJyB8IHRyYW5zbGF0ZX19PC9tYXQtY2FyZC10aXRsZT5cbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cbiAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJ0YXNrRm9ybVwiIGNsYXNzPVwiYWRmLW5ldy10YXNrLWZvcm1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdGFzay1uYW1lXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7J0FERl9UQVNLX0xJU1QuU1RBUlRfVEFTSy5GT1JNLkxBQkVMLk5BTUUnIHwgdHJhbnNsYXRlfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJuYW1lX2lkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJuYW1lQ29udHJvbGxlci5oYXNFcnJvcigncmVxdWlyZWQnKSB8fCBuYW1lQ29udHJvbGxlci5oYXNFcnJvcignd2hpdGVzcGFjZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0FERl9UQVNLX0xJU1QuU1RBUlRfVEFTSy5GT1JNLkVSUk9SLlJFUVVJUkVEJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwibmFtZUNvbnRyb2xsZXIuaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0FERl9UQVNLX0xJU1QuU1RBUlRfVEFTSy5GT1JNLkVSUk9SLk1BWElNVU1fTEVOR1RIJyB8IHRyYW5zbGF0ZSA6IHsgY2hhcmFjdGVycyA6IG1heFRhc2tOYW1lTGVuZ3RoIH0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdGFzay1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57eydBREZfVEFTS19MSVNULlNUQVJUX1RBU0suRk9STS5MQUJFTC5ERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dzPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cImRlc2NyaXB0aW9uX2lkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJkZXNjcmlwdGlvbkNvbnRyb2xsZXIuaGFzRXJyb3IoJ3doaXRlc3BhY2UnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0FERl9UQVNLX0xJU1QuU1RBUlRfVEFTSy5GT1JNLkVSUk9SLk1FU1NBR0UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtaW5wdXQtcm93XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwib25EYXRlQ2hhbmdlZCgkYW55KCRldmVudCkuc3JjRWxlbWVudC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVJbnB1dCk9XCJvbkRhdGVDaGFuZ2VkKCRhbnkoJGV2ZW50KS52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwidGFza0RhdGVQaWNrZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydBREZfVEFTS19MSVNULlNUQVJUX1RBU0suRk9STS5MQUJFTC5EQVRFJ3x0cmFuc2xhdGV9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cImRhdGVfaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9yXT1cInRhc2tEYXRlUGlja2VyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAjdGFza0RhdGVQaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b3VjaFVpXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWVycm9yLXRleHQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0ZUVycm9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lcnJvci10ZXh0XCI+e3snQURGX1RBU0tfTElTVC5TVEFSVF9UQVNLLkZPUk0uRVJST1IuREFURSd8dHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtZXJyb3ItaWNvblwiPndhcm5pbmc8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgPHBlb3BsZS13aWRnZXRcbiAgICAgICAgICAgICAgICAgICAgKHBlb3BsZVNlbGVjdGVkKT1cInNldEFzc2lnbmVlSWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXBlb3BsZS13aWRnZXQtY29udGVudFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImFkZi10YXNrLWZvcm1cIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGlkPVwiZm9ybV9sYWJlbFwiPnt7J0FERl9UQVNLX0xJU1QuU1RBUlRfVEFTSy5GT1JNLkxBQkVMLkZPUk0nfHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJmb3JtX2lkXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmb3JtS2V5XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24+e3snQURGX1RBU0tfTElTVC5TVEFSVF9UQVNLLkZPUk0uTEFCRUwuTk9ORSd8dHJhbnNsYXRlfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGZvcm0gb2YgZm9ybXMkIHwgYXN5bmNcIiBbdmFsdWVdPVwiZm9ybS5pZFwiPnt7IGZvcm0ubmFtZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Zvcm0+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDxtYXQtY2FyZC1hY3Rpb25zPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLW5ldy10YXNrLWZvb3RlclwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi11cHBlcmNhc2VcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNhbmNlbCgpXCJcbiAgICAgICAgICAgICAgICBpZD1cImJ1dHRvbi1jYW5jZWxcIj5cbiAgICAgICAgICAgICAgICB7eyAnQURGX1RBU0tfTElTVC5TVEFSVF9UQVNLLkZPUk0uQUNUSU9OLkNBTkNFTCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXVwcGVyY2FzZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0Zvcm1WYWxpZCgpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZVRhc2soKVwiXG4gICAgICAgICAgICAgICAgaWQ9XCJidXR0b24tc3RhcnRcIj5cbiAgICAgICAgICAgICAgICB7eyAnQURGX1RBU0tfTElTVC5TVEFSVF9UQVNLLkZPUk0uQUNUSU9OLlNUQVJUJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cbjwvbWF0LWNhcmQ+XG4iXX0=
|