bpm-core 0.0.31 → 0.0.33
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/app/app.component.mjs +2 -2
- package/esm2022/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.mjs +1 -5
- package/esm2022/lib/components/app-component-sections/faqs/faqs.component.mjs +4 -9
- package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +140 -72
- package/esm2022/lib/components/app-component-sections/index.mjs +1 -2
- package/esm2022/lib/components/app-component-sections/main-request-details/main-request-details.component.mjs +5 -7
- package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +155 -61
- package/esm2022/lib/components/shared-components/form-field/control-value-accessor.directive.mjs +5 -6
- package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +3 -3
- package/esm2022/lib/components/shared-components/form-field/date-picker/date-picker.component.mjs +8 -46
- package/esm2022/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.mjs +161 -14
- package/esm2022/lib/components/shared-components/form-field/input/input.component.mjs +10 -12
- package/esm2022/lib/components/shared-components/form-field/input-currency/input-currency.component.mjs +11 -4
- package/esm2022/lib/components/shared-components/form-field/input-email/input-email.component.mjs +12 -4
- package/esm2022/lib/components/shared-components/form-field/input-mask/input-mask.component.mjs +3 -3
- package/esm2022/lib/components/shared-components/form-field/input-number/input-number.component.mjs +9 -5
- package/esm2022/lib/components/shared-components/form-field/validation-errors/validation-errors.component.mjs +5 -1
- package/esm2022/lib/{validators → directives}/ar.directive.mjs +4 -3
- package/esm2022/lib/{validators → directives}/currency.directive.mjs +4 -3
- package/esm2022/lib/{validators → directives}/en.directive.mjs +4 -3
- package/esm2022/lib/directives/number.directive.mjs +68 -0
- package/esm2022/lib/i18n/ar.mjs +3 -2
- package/esm2022/lib/i18n/en.mjs +2 -1
- package/esm2022/lib/regex/regex-patterns.mjs +4 -0
- package/esm2022/lib/services/core.service.ts.mjs +18 -3
- package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs +2 -2
- package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +13 -6
- package/esm2022/lib/validators/index.mjs +4 -4
- package/fesm2022/bpm-core.mjs +807 -511
- package/fesm2022/bpm-core.mjs.map +1 -1
- package/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.d.ts +1 -1
- package/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.d.ts +2 -4
- package/lib/components/app-component-sections/faqs/faqs.component.d.ts +1 -3
- package/lib/components/app-component-sections/form-section/form-section.component.d.ts +92 -7
- package/lib/components/app-component-sections/index.d.ts +0 -1
- package/lib/components/app-component-sections/service-header/service-header.component.d.ts +97 -7
- package/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.d.ts +1 -1
- package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +2 -1
- package/lib/components/shared-components/form-field/date-picker/date-picker.component.d.ts +0 -4
- package/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.d.ts +22 -6
- package/lib/components/shared-components/form-field/input/input.component.d.ts +1 -3
- package/lib/components/shared-components/form-field/input-email/input-email.component.d.ts +1 -0
- package/lib/{validators → directives}/ar.directive.d.ts +1 -1
- package/lib/{validators → directives}/currency.directive.d.ts +1 -1
- package/lib/{validators → directives}/en.directive.d.ts +1 -1
- package/lib/directives/number.directive.d.ts +14 -0
- package/lib/i18n/ar.d.ts +1 -0
- package/lib/i18n/en.d.ts +1 -0
- package/lib/regex/regex-patterns.d.ts +3 -0
- package/lib/services/core.service.ts.d.ts +1 -0
- package/lib/validators/index.d.ts +0 -3
- package/package.json +2 -2
- package/src/lib/assets/scss/_custom-popover.scss +3 -0
- package/src/lib/assets/scss/_settings.scss +5 -2
- package/esm2022/lib/components/app-component-sections/comment-section/comment-section.component.mjs +0 -66
- package/lib/components/app-component-sections/comment-section/comment-section.component.d.ts +0 -19
package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs
CHANGED
|
@@ -5,18 +5,26 @@ import { MatExpansionModule, MatExpansionPanel } from '@angular/material/expansi
|
|
|
5
5
|
import { SatPopoverModule } from '@ncstate/sat-popover';
|
|
6
6
|
import { ProfileInfoDrop } from '../../../interfaces';
|
|
7
7
|
import * as Constants from '../../../constants';
|
|
8
|
-
import * as moment from 'moment';
|
|
9
8
|
import { ProfileSectionComponent } from "../profile-section/profile-section.component";
|
|
9
|
+
import { format } from 'date-fns';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
import * as i1 from "../../../services";
|
|
12
12
|
import * as i2 from "@angular/material/expansion";
|
|
13
13
|
import * as i3 from "ng-dynamic-component";
|
|
14
|
+
const StatusMap = {
|
|
15
|
+
[Constants.FORM_STATUS_REJECTED]: { class: 'danger', icon: 'close' },
|
|
16
|
+
[Constants.FORM_STATUS_CANCELLED]: { class: 'danger', icon: 'close' },
|
|
17
|
+
[Constants.FORM_STATUS_REJECT]: { class: 'danger', icon: 'close' },
|
|
18
|
+
[Constants.SECTION_STATUS_UNSATISFIED]: { class: 'danger', icon: 'close' },
|
|
19
|
+
[Constants.FORM_STATUS_CANCEL]: { class: 'danger', icon: 'close' },
|
|
20
|
+
[Constants.FORM_STATUS_PENDING]: { class: 'warning', icon: 'clock' },
|
|
21
|
+
'default': { class: 'success', icon: 'check' }
|
|
22
|
+
};
|
|
14
23
|
export class FormSectionComponent {
|
|
15
24
|
i18n;
|
|
16
25
|
coreService;
|
|
17
26
|
sidenavService;
|
|
18
27
|
userType = 'recipient';
|
|
19
|
-
// @ViewChild('popover') popover?: any;
|
|
20
28
|
popoverType = 'recipient';
|
|
21
29
|
requestDetails;
|
|
22
30
|
userPopoverInfo = {};
|
|
@@ -24,14 +32,10 @@ export class FormSectionComponent {
|
|
|
24
32
|
form;
|
|
25
33
|
lov;
|
|
26
34
|
isReadOnly;
|
|
27
|
-
// @Input() isOpen: boolean;
|
|
28
|
-
// @Input() isFinalApproval: boolean;
|
|
29
35
|
controllers;
|
|
30
36
|
segmentDynamicLoaderService;
|
|
31
37
|
sectionFormComponent = null;
|
|
32
38
|
sectionName = 'SECTION_NAME.requestDetails';
|
|
33
|
-
sectionNumber;
|
|
34
|
-
sectionStatusValue;
|
|
35
39
|
sectionStatusKey;
|
|
36
40
|
recipient = {
|
|
37
41
|
isShowing: false,
|
|
@@ -42,114 +46,178 @@ export class FormSectionComponent {
|
|
|
42
46
|
profile: null
|
|
43
47
|
};
|
|
44
48
|
input;
|
|
45
|
-
// highlightFlag: boolean;
|
|
46
49
|
processingDate;
|
|
47
|
-
randomID = Math.floor(Math.random() * (999999 - 100000)) + 100000;
|
|
48
50
|
constructor(i18n, coreService, sidenavService) {
|
|
49
51
|
this.i18n = i18n;
|
|
50
52
|
this.coreService = coreService;
|
|
51
53
|
this.sidenavService = sidenavService;
|
|
52
|
-
// this.highlightFlag = false;
|
|
53
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Method to initialize various components when the component is initialized.
|
|
57
|
+
*
|
|
58
|
+
* @return {void}
|
|
59
|
+
*/
|
|
54
60
|
ngOnInit() {
|
|
61
|
+
this.initSectionFormComponent();
|
|
62
|
+
this.initSectionName();
|
|
63
|
+
this.initInput();
|
|
64
|
+
this.initProcessingDate();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Initializes the section form component by fetching it from the segment dynamic loader service.
|
|
68
|
+
*
|
|
69
|
+
* @return {void}
|
|
70
|
+
*/
|
|
71
|
+
initSectionFormComponent() {
|
|
55
72
|
this.sectionFormComponent = this.segmentDynamicLoaderService.getComponent(this.section.id);
|
|
56
|
-
|
|
57
|
-
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Initializes the section name based on the provided section data.
|
|
76
|
+
* If the section's body contains a 'stageName' property, the section name is set to the value of that property.
|
|
77
|
+
* Otherwise, the section name is retrieved using the segmentDynamicLoaderService based on the section ID.
|
|
78
|
+
*
|
|
79
|
+
* @return {void}
|
|
80
|
+
*/
|
|
81
|
+
initSectionName() {
|
|
82
|
+
if (this.section.body.details?.['stageName']) {
|
|
83
|
+
this.sectionName = this.section.body.details['stageName'];
|
|
58
84
|
}
|
|
59
85
|
else {
|
|
60
86
|
this.sectionName = this.segmentDynamicLoaderService.getSectionName(this.section.id);
|
|
61
87
|
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Initializes the input object with the provided values for read-only status, list of values, section, and form.
|
|
91
|
+
*
|
|
92
|
+
* @return {void}
|
|
93
|
+
*/
|
|
94
|
+
initInput() {
|
|
62
95
|
this.input = {
|
|
63
96
|
isReadOnly: this.isReadOnly,
|
|
64
97
|
lov: this.lov,
|
|
65
98
|
section: this.section,
|
|
66
|
-
// controllers: this.controllers,
|
|
67
|
-
// requestDetails: this.requestDetails,
|
|
68
99
|
form: this.form
|
|
69
100
|
};
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Initializes the processing date based on the section's header processing date.
|
|
104
|
+
* If the processing date is available in the section header, it formats the processing date
|
|
105
|
+
* and assigns it to the processingDate property of the instance.
|
|
106
|
+
*
|
|
107
|
+
* @return {void}
|
|
108
|
+
*/
|
|
109
|
+
initProcessingDate() {
|
|
110
|
+
if (this.section?.header?.processingDate) {
|
|
111
|
+
this.processingDate = format(new Date(this.section.header.processingDate), "dd/MM/yyyy hh:mm:ss");
|
|
79
112
|
}
|
|
80
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Check if the section is expanded.
|
|
116
|
+
*
|
|
117
|
+
* @return {boolean} Returns true if the section is expanded, false otherwise.
|
|
118
|
+
*/
|
|
81
119
|
get isExpanded() {
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
return this.section?.body?.details?.expandStage === 'true';
|
|
86
|
-
}
|
|
87
|
-
sectionId() {
|
|
88
|
-
return this.section.id.split(' ').join('') + this.randomID;
|
|
120
|
+
const hasSections = Boolean(this.form?.sections?.length);
|
|
121
|
+
const isAnySectionExpandable = hasSections && this.form.sections.some(section => 'expandStage' in (section?.body?.details || {}));
|
|
122
|
+
return isAnySectionExpandable ? (this.section?.body?.details?.['expandStage'] === 'true') : true;
|
|
89
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Create a ProfileInfoDrop object from the response object.
|
|
126
|
+
*
|
|
127
|
+
* @param {any} response - The response object containing user profile information.
|
|
128
|
+
*
|
|
129
|
+
* @return {ProfileInfoDrop} A ProfileInfoDrop object created from the response data.
|
|
130
|
+
*/
|
|
90
131
|
createUserProfileFromResponse(response) {
|
|
91
|
-
|
|
132
|
+
const user = response?.["Users"][0];
|
|
133
|
+
return new ProfileInfoDrop(false, user?.employeeNumber, user?.email, user?.name, user?.generalDepartment?.name, user?.position?.name, user?.sector?.name, user?.department?.name, user?.generalDepartment?.code, user?.location, user?.nationality?.desc, user?.contact?.mobile, user?.manager?.name, user?.seniorSectorName?.name);
|
|
92
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* Method to open or create a user profile.
|
|
137
|
+
*
|
|
138
|
+
* @param {ProfileInfoDrop} userData - The user profile data to open or create.
|
|
139
|
+
* @param {string} personType - The type of person this profile belongs to.
|
|
140
|
+
*
|
|
141
|
+
* @return {void}
|
|
142
|
+
*/
|
|
93
143
|
openOrCreateUserProfile(userData, personType) {
|
|
94
144
|
this.sidenavService.data = userData;
|
|
95
145
|
this.userPopoverInfo = userData;
|
|
96
146
|
this[personType].profile = userData;
|
|
97
147
|
this.sidenavService.publish('open', ProfileSectionComponent);
|
|
98
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Toggles the display of small profile information for a given person type
|
|
151
|
+
*
|
|
152
|
+
* @param {any} event - The event that triggered the toggle
|
|
153
|
+
* @param {string} personType - The type of person for which to display the profile information
|
|
154
|
+
*
|
|
155
|
+
* @return {void}
|
|
156
|
+
*/
|
|
99
157
|
toggleSmallProfileInfo(event, personType) {
|
|
100
158
|
this.userType = personType;
|
|
101
159
|
event.stopPropagation();
|
|
102
160
|
let userInfo = this[personType];
|
|
103
|
-
if (userInfo.profile
|
|
161
|
+
if (!userInfo.profile) {
|
|
104
162
|
this.popoverType = personType;
|
|
105
|
-
let userEmail =
|
|
106
|
-
this.
|
|
107
|
-
if (response) {
|
|
108
|
-
let userData = this.createUserProfileFromResponse(response);
|
|
109
|
-
this.openOrCreateUserProfile(userData, personType);
|
|
110
|
-
}
|
|
111
|
-
});
|
|
163
|
+
let userEmail = this.getUserEmail(personType);
|
|
164
|
+
this.fetchAndSetUserProfile(userEmail, personType);
|
|
112
165
|
}
|
|
113
166
|
else {
|
|
114
|
-
this.openOrCreateUserProfile(
|
|
167
|
+
this.openOrCreateUserProfile(userInfo.profile, personType);
|
|
115
168
|
}
|
|
116
169
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
170
|
+
/**
|
|
171
|
+
* Retrieves the email of the user based on the personType parameter.
|
|
172
|
+
*
|
|
173
|
+
* @param {string} personType - Type of the person ('recipient' or others).
|
|
174
|
+
* @return {string} - The email address of the user.
|
|
175
|
+
*/
|
|
176
|
+
getUserEmail(personType) {
|
|
177
|
+
return (personType === 'recipient'
|
|
178
|
+
? this.section.header.personToThumbnail.split('=')[1]
|
|
179
|
+
: this?.section?.header?.delegatedToThumbnail.split('=')[1]);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Fetches the user profile using the provided user email and person type, then sets the profile.
|
|
183
|
+
*
|
|
184
|
+
* @param {string} userEmail - The email of the user whose profile is to be fetched and set.
|
|
185
|
+
* @param {string} personType - The type of person (e.g., employee, customer) for whom the profile is being fetched.
|
|
186
|
+
*
|
|
187
|
+
* @return {void}
|
|
188
|
+
*/
|
|
189
|
+
fetchAndSetUserProfile(userEmail, personType) {
|
|
190
|
+
this.coreService.employeeProfile(userEmail).subscribe((response) => {
|
|
191
|
+
if (response) {
|
|
192
|
+
let userData = this.createUserProfileFromResponse(response);
|
|
193
|
+
this.openOrCreateUserProfile(userData, personType);
|
|
128
194
|
}
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
return 'success';
|
|
132
|
-
}
|
|
195
|
+
});
|
|
133
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* Returns the CSS class associated with the input status.
|
|
199
|
+
*
|
|
200
|
+
* @param {string} status - The status for which the CSS class is needed.
|
|
201
|
+
* @return {string} - The CSS class corresponding to the given status.
|
|
202
|
+
*/
|
|
203
|
+
statusClass(status) {
|
|
204
|
+
status = status ? status.toLowerCase() : '';
|
|
205
|
+
let statusStrategy = StatusMap[status] || StatusMap['default'];
|
|
206
|
+
return statusStrategy.class;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Returns the icon associated with the provided status.
|
|
210
|
+
*
|
|
211
|
+
* @param {string} status - The status for which to retrieve the icon.
|
|
212
|
+
* @return {string} The icon corresponding to the provided status.
|
|
213
|
+
*/
|
|
134
214
|
statusIcon(status) {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
return 'close';
|
|
139
|
-
}
|
|
140
|
-
else if (status === Constants.FORM_STATUS_PENDING || status.toLowerCase() === 'pending') {
|
|
141
|
-
return 'clock';
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
return 'check';
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
return 'check';
|
|
149
|
-
}
|
|
215
|
+
status = status ? status.toLowerCase() : '';
|
|
216
|
+
let statusStrategy = StatusMap[status] || StatusMap['default'];
|
|
217
|
+
return statusStrategy.icon;
|
|
150
218
|
}
|
|
151
219
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FormSectionComponent, deps: [{ token: i1.CoreI18nService }, { token: i1.CoreService }, { token: i1.SidenavService }], target: i0.ɵɵFactoryTarget.Component });
|
|
152
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
220
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: FormSectionComponent, isStandalone: true, selector: "app-form-section", inputs: { requestDetails: "requestDetails", section: "section", form: "form", lov: "lov", isReadOnly: "isReadOnly", controllers: "controllers", segmentDynamicLoaderService: "segmentDynamicLoaderService", sectionFormComponent: "sectionFormComponent", sectionName: "sectionName" }, ngImport: i0, template: "<mat-expansion-panel class=\"mb-4\" [expanded]=\"isExpanded\" hideToggle #approvalPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n\r\n <div class=\"approval-panel-container\">\r\n <div class=\"d-flex gap-2 flex-grow-1 approval-panel-title\">\r\n <ds-status\r\n status=\"{{statusClass(sectionStatusKey)}}\" no-opacity icon\r\n class=\"circle-status d-none d-sm-inline-block\">\r\n <ds-icon icon=\"{{statusIcon(sectionStatusKey)}}\"></ds-icon>\r\n </ds-status>\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <span class=\"fs-16 fw-medium m-0\"> {{ sectionName }}</span>\r\n @if (section.header?.processedBy) {\r\n <bdi class=\"fs-12 fc-dark-gray fw-normal line-height-1 d-block mt-1\">\r\n {{ processingDate }}\r\n </bdi>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"approval-panel-details gap-1\">\r\n @if (!section?.body?.details?.['stage0']?.['isStage0'] || section?.body?.details?.['stage0']?.['isStage0'] === 'false') {\r\n <ng-container>\r\n @if (section?.header?.personTo) {\r\n <div\r\n class=\"d-flex align-items-center gap-3\"\r\n (click)=\"$event.stopImmediatePropagation();\">\r\n <div\r\n (click)=\"toggleSmallProfileInfo($event, 'recipient')\"\r\n class=\"d-flex align-items-center gap-2 radius-3 h-40\"\r\n [ngClass]=\"{'user-avatar-name px-0 px-md-2': !section?.header?.delegatedTo, 'p-0': section?.header?.delegatedTo}\">\r\n <ds-avatar image=\"{{section?.header?.personToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n @if (!section?.header?.delegatedTo) {\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\"\r\n [ngClass]=\"{'panel-user-only': !section?.header?.delegatedTo}\"\r\n >{{ section?.header?.personTo }}</span>\r\n }\r\n </div>\r\n @if (section?.header?.delegatedTo) {\r\n <div\r\n class=\"d-flex align-items-center gap-3\"\r\n (click)=\"toggleSmallProfileInfo($event, 'delegate')\">\r\n <img\r\n class=\"rotate-arrow\"\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIxMyIgdmlld0JveD0iMCAwIDIxIDEzIj48cGF0aCBkPSJNMjEsNy43NjNhMS42MjEsMS42MjEsMCwwLDEtLjQ0Ny41OTMsMS4zMDYsMS4zMDYsMCwwLDEtLjc1LjE5NGMtNy4yODQsMC04LjU2OCwwLTE1Ljg1MywwSDMuNjY5TDMuNjMsOC42Yy4wNzcuMDY0LjE1OC4xMjQuMjI5LjE5NHExLjcxLDEuNjksMy40MiwzLjM4MWExLjAyMywxLjAyMywwLDAsMSwuMjkxLDEuMDc5Ljk5Mi45OTIsMCwwLDEtLjguNzE5LDEuMDUzLDEuMDUzLDAsMCwxLTEtLjMzMVEzLjgzMSwxMS43MTksMS44ODYsOS44Yy0uNDQyLS40MzctLjg3OS0uODgxLTEuMzMtMS4zMDlBNC41NzIsNC41NzIsMCwwLDEsMCw3LjgxNFY3LjE4NUEzMC43ODMsMzAuNzgzLDAsMCwxLDIuNzMsNC4zNzFjMS0xLjAyNywyLjAzOC0yLjAyNSwzLjA2My0zLjAzMkExLjA0OSwxLjA0OSwwLDEsMSw3LjI3NywyLjgyQzYuNCwzLjcsNS41MDksNC41Nyw0LjYyNSw1LjQ0NmMtLjMyMy4zMjEtLjY0NC42NDUtLjk3My45NzYuMDg0LjA1OS4xODEuMDI3LjI3LjAyNyw3LjI1OCwwLDguNTE2LDAsMTUuNzc1LDBBMS4xMjksMS4xMjksMCwwLDEsMjEsNy4yOXYuNDcyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMC45OTkpIiBmaWxsPSIjYTU0ZWUxIi8+PC9zdmc+\"/>\r\n <div class=\"d-flex align-items-center gap-2 px-0 px-md-2 radius-3 user-avatar-name h-40\">\r\n <ds-avatar image=\"{{section?.header?.delegatedToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\">{{ section?.header?.delegatedTo }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n\r\n @if (section?.body?.details?.['decision']?.key) {\r\n <ds-status\r\n class=\"main-status\"\r\n status=\"{{statusClass(section?.body?.details?.['decision']?.key)}}\">{{ section?.body?.details?.['decision']?.value }}\r\n </ds-status>\r\n }\r\n </div>\r\n\r\n <div class=\"approval-panel-toggle\">\r\n @if (approvalPanel.expanded) {\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n } @else {\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n }\r\n </div>\r\n\r\n </div>\r\n </mat-expansion-panel-header>\r\n <section class=\"border-top pt-4\">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n </section>\r\n\r\n</mat-expansion-panel>\r\n", styles: [":host ::ng-deep .mat-expansion-panel-content{background:#fff!important}:host .mat-expansion-panel-content{background:#fff!important}:host .approval-panel-container{display:grid;grid-template-columns:40% calc(60% - 45px) 20px;grid-template-areas:\"title details toggle\";gap:.75rem;place-content:space-between;align-items:center;flex-grow:1;width:100%}@media (max-width: 991px){:host .approval-panel-container{grid-template-columns:calc(100% - 45px) 20px;grid-template-areas:\"title toggle\" \"details details\"}}:host .approval-panel-container .approval-panel-title{grid-area:title}:host .approval-panel-container .panel-user-name{max-width:120px}@media (max-width: 768px){:host .approval-panel-container .panel-user-name.panel-ueser-only{max-width:140px}:host .approval-panel-container .panel-user-name:not(.panel-ueser-only){max-width:90px}}:host .approval-panel-container .approval-panel-details{display:flex;align-items:center;justify-content:space-between;grid-area:details}:host .approval-panel-container .approval-panel-toggle{grid-area:toggle;display:flex;align-items:center;justify-content:center;width:20px}:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 25px}@media (min-width: 768px){:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}@media (min-width: 768px){:host ::ng-deep .user-avatar-name{padding-inline-end:1rem!important}}:host .circle-status::part(base){--status-radius: 50%;--status-size: 18px;--status-fs: 80% }:host .panel-title{min-width:40%;width:40%}@media (max-width: 576px){:host .panel-title{min-width:100%!important;width:100%!important}}:host .panel-user-status{min-width:60%;width:60%;display:flex;align-items:center;justify-content:space-between}@media (max-width: 576px){:host .panel-user-status{min-width:100%!important;width:100%!important}:host .panel-user-status .user-delegate{min-width:auto}:host .panel-user-status .main-status::part(base){--status-width: 50px}}\n"], dependencies: [{ kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: ComponentOutletIoDirective, selector: "[ngComponentOutletNdcDynamicInputs],[ngComponentOutletNdcDynamicOutputs]", inputs: ["ngComponentOutletNdcDynamicInputs", "ngComponentOutletNdcDynamicOutputs"], exportAs: ["ndcDynamicIo"] }, { kind: "ngmodule", type: SatPopoverModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: DynamicModule }, { kind: "directive", type: i3.ComponentOutletInjectorDirective, selector: "[ngComponentOutlet]", exportAs: ["ndcComponentOutletInjector"] }] });
|
|
153
221
|
}
|
|
154
222
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FormSectionComponent, decorators: [{
|
|
155
223
|
type: Component,
|
|
@@ -162,7 +230,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
162
230
|
SatPopoverModule,
|
|
163
231
|
NgClass,
|
|
164
232
|
DynamicModule
|
|
165
|
-
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<mat-expansion-panel
|
|
233
|
+
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<mat-expansion-panel class=\"mb-4\" [expanded]=\"isExpanded\" hideToggle #approvalPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n\r\n <div class=\"approval-panel-container\">\r\n <div class=\"d-flex gap-2 flex-grow-1 approval-panel-title\">\r\n <ds-status\r\n status=\"{{statusClass(sectionStatusKey)}}\" no-opacity icon\r\n class=\"circle-status d-none d-sm-inline-block\">\r\n <ds-icon icon=\"{{statusIcon(sectionStatusKey)}}\"></ds-icon>\r\n </ds-status>\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <span class=\"fs-16 fw-medium m-0\"> {{ sectionName }}</span>\r\n @if (section.header?.processedBy) {\r\n <bdi class=\"fs-12 fc-dark-gray fw-normal line-height-1 d-block mt-1\">\r\n {{ processingDate }}\r\n </bdi>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"approval-panel-details gap-1\">\r\n @if (!section?.body?.details?.['stage0']?.['isStage0'] || section?.body?.details?.['stage0']?.['isStage0'] === 'false') {\r\n <ng-container>\r\n @if (section?.header?.personTo) {\r\n <div\r\n class=\"d-flex align-items-center gap-3\"\r\n (click)=\"$event.stopImmediatePropagation();\">\r\n <div\r\n (click)=\"toggleSmallProfileInfo($event, 'recipient')\"\r\n class=\"d-flex align-items-center gap-2 radius-3 h-40\"\r\n [ngClass]=\"{'user-avatar-name px-0 px-md-2': !section?.header?.delegatedTo, 'p-0': section?.header?.delegatedTo}\">\r\n <ds-avatar image=\"{{section?.header?.personToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n @if (!section?.header?.delegatedTo) {\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\"\r\n [ngClass]=\"{'panel-user-only': !section?.header?.delegatedTo}\"\r\n >{{ section?.header?.personTo }}</span>\r\n }\r\n </div>\r\n @if (section?.header?.delegatedTo) {\r\n <div\r\n class=\"d-flex align-items-center gap-3\"\r\n (click)=\"toggleSmallProfileInfo($event, 'delegate')\">\r\n <img\r\n class=\"rotate-arrow\"\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIxMyIgdmlld0JveD0iMCAwIDIxIDEzIj48cGF0aCBkPSJNMjEsNy43NjNhMS42MjEsMS42MjEsMCwwLDEtLjQ0Ny41OTMsMS4zMDYsMS4zMDYsMCwwLDEtLjc1LjE5NGMtNy4yODQsMC04LjU2OCwwLTE1Ljg1MywwSDMuNjY5TDMuNjMsOC42Yy4wNzcuMDY0LjE1OC4xMjQuMjI5LjE5NHExLjcxLDEuNjksMy40MiwzLjM4MWExLjAyMywxLjAyMywwLDAsMSwuMjkxLDEuMDc5Ljk5Mi45OTIsMCwwLDEtLjguNzE5LDEuMDUzLDEuMDUzLDAsMCwxLTEtLjMzMVEzLjgzMSwxMS43MTksMS44ODYsOS44Yy0uNDQyLS40MzctLjg3OS0uODgxLTEuMzMtMS4zMDlBNC41NzIsNC41NzIsMCwwLDEsMCw3LjgxNFY3LjE4NUEzMC43ODMsMzAuNzgzLDAsMCwxLDIuNzMsNC4zNzFjMS0xLjAyNywyLjAzOC0yLjAyNSwzLjA2My0zLjAzMkExLjA0OSwxLjA0OSwwLDEsMSw3LjI3NywyLjgyQzYuNCwzLjcsNS41MDksNC41Nyw0LjYyNSw1LjQ0NmMtLjMyMy4zMjEtLjY0NC42NDUtLjk3My45NzYuMDg0LjA1OS4xODEuMDI3LjI3LjAyNyw3LjI1OCwwLDguNTE2LDAsMTUuNzc1LDBBMS4xMjksMS4xMjksMCwwLDEsMjEsNy4yOXYuNDcyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMC45OTkpIiBmaWxsPSIjYTU0ZWUxIi8+PC9zdmc+\"/>\r\n <div class=\"d-flex align-items-center gap-2 px-0 px-md-2 radius-3 user-avatar-name h-40\">\r\n <ds-avatar image=\"{{section?.header?.delegatedToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\">{{ section?.header?.delegatedTo }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n\r\n @if (section?.body?.details?.['decision']?.key) {\r\n <ds-status\r\n class=\"main-status\"\r\n status=\"{{statusClass(section?.body?.details?.['decision']?.key)}}\">{{ section?.body?.details?.['decision']?.value }}\r\n </ds-status>\r\n }\r\n </div>\r\n\r\n <div class=\"approval-panel-toggle\">\r\n @if (approvalPanel.expanded) {\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n } @else {\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n }\r\n </div>\r\n\r\n </div>\r\n </mat-expansion-panel-header>\r\n <section class=\"border-top pt-4\">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n </section>\r\n\r\n</mat-expansion-panel>\r\n", styles: [":host ::ng-deep .mat-expansion-panel-content{background:#fff!important}:host .mat-expansion-panel-content{background:#fff!important}:host .approval-panel-container{display:grid;grid-template-columns:40% calc(60% - 45px) 20px;grid-template-areas:\"title details toggle\";gap:.75rem;place-content:space-between;align-items:center;flex-grow:1;width:100%}@media (max-width: 991px){:host .approval-panel-container{grid-template-columns:calc(100% - 45px) 20px;grid-template-areas:\"title toggle\" \"details details\"}}:host .approval-panel-container .approval-panel-title{grid-area:title}:host .approval-panel-container .panel-user-name{max-width:120px}@media (max-width: 768px){:host .approval-panel-container .panel-user-name.panel-ueser-only{max-width:140px}:host .approval-panel-container .panel-user-name:not(.panel-ueser-only){max-width:90px}}:host .approval-panel-container .approval-panel-details{display:flex;align-items:center;justify-content:space-between;grid-area:details}:host .approval-panel-container .approval-panel-toggle{grid-area:toggle;display:flex;align-items:center;justify-content:center;width:20px}:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 25px}@media (min-width: 768px){:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}@media (min-width: 768px){:host ::ng-deep .user-avatar-name{padding-inline-end:1rem!important}}:host .circle-status::part(base){--status-radius: 50%;--status-size: 18px;--status-fs: 80% }:host .panel-title{min-width:40%;width:40%}@media (max-width: 576px){:host .panel-title{min-width:100%!important;width:100%!important}}:host .panel-user-status{min-width:60%;width:60%;display:flex;align-items:center;justify-content:space-between}@media (max-width: 576px){:host .panel-user-status{min-width:100%!important;width:100%!important}:host .panel-user-status .user-delegate{min-width:auto}:host .panel-user-status .main-status::part(base){--status-width: 50px}}\n"] }]
|
|
166
234
|
}], ctorParameters: () => [{ type: i1.CoreI18nService }, { type: i1.CoreService }, { type: i1.SidenavService }], propDecorators: { requestDetails: [{
|
|
167
235
|
type: Input
|
|
168
236
|
}], section: [{
|
|
@@ -182,4 +250,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
182
250
|
}], sectionName: [{
|
|
183
251
|
type: Input
|
|
184
252
|
}] } });
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hcHAtY29tcG9uZW50LXNlY3Rpb25zL2Zvcm0tc2VjdGlvbi9mb3JtLXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvZm9ybS1zZWN0aW9uL2Zvcm0tc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRTNILE9BQU8sRUFBQywwQkFBMEIsRUFBRSxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRSxPQUFPLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ2xGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBTyxlQUFlLEVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFBO0FBQ2hDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDOzs7OztBQW1CckYsTUFBTSxPQUFPLG9CQUFvQjtJQW9DdEI7SUFDVTtJQUNBO0lBcENuQixRQUFRLEdBQUcsV0FBVyxDQUFDO0lBQ3ZCLHVDQUF1QztJQUN2QyxXQUFXLEdBQUcsV0FBVyxD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QU94QixjQUFjO3NCQUF0QixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFDRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0NoZWNrZWQsIEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb3JlSTE4blNlcnZpY2UsIENvcmVTZXJ2aWNlLCBTaWRlbmF2U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQge0NvbXBvbmVudE91dGxldElvRGlyZWN0aXZlLCBEeW5hbWljTW9kdWxlfSBmcm9tICduZy1keW5hbWljLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7TmdDbGFzcywgTmdDb21wb25lbnRPdXRsZXQsIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7TWF0RXhwYW5zaW9uTW9kdWxlLCBNYXRFeHBhbnNpb25QYW5lbH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHtTYXRQb3BvdmVyTW9kdWxlfSBmcm9tICdAbmNzdGF0ZS9zYXQtcG9wb3Zlcic7XHJcbmltcG9ydCB7Rm9ybSwgUHJvZmlsZUluZm9Ecm9wLCBTZWN0aW9ufSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0ICogYXMgQ29uc3RhbnRzIGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnXHJcbmltcG9ydCB7UHJvZmlsZVNlY3Rpb25Db21wb25lbnR9IGZyb20gXCIuLi9wcm9maWxlLXNlY3Rpb24vcHJvZmlsZS1zZWN0aW9uLmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZm9ybS1zZWN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mb3JtLXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcclxuICAgIE1hdEV4cGFuc2lvblBhbmVsLFxyXG4gICAgTmdJZixcclxuICAgIE5nQ29tcG9uZW50T3V0bGV0LFxyXG4gICAgQ29tcG9uZW50T3V0bGV0SW9EaXJlY3RpdmUsXHJcbiAgICBTYXRQb3BvdmVyTW9kdWxlLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIER5bmFtaWNNb2R1bGVcclxuICBdLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybVNlY3Rpb25Db21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgdXNlclR5cGUgPSAncmVjaXBpZW50JztcclxuICAvLyBAVmlld0NoaWxkKCdwb3BvdmVyJykgcG9wb3Zlcj86IGFueTtcclxuICBwb3BvdmVyVHlwZSA9ICdyZWNpcGllbnQnO1xyXG4gIEBJbnB1dCgpIHJlcXVlc3REZXRhaWxzOiBTZWN0aW9uO1xyXG4gIHVzZXJQb3BvdmVySW5mbzogYW55ID0ge307XHJcbiAgQElucHV0KCkgc2VjdGlvbjogU2VjdGlvbjtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dCgpIGxvdjogYW55O1xyXG4gIEBJbnB1dCgpIGlzUmVhZE9ubHk6IGJvb2xlYW47XHJcbiAgLy8gQElucHV0KCkgaXNPcGVuOiBib29sZWFuO1xyXG4gIC8vIEBJbnB1dCgpIGlzRmluYWxBcHByb3ZhbDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjb250cm9sbGVyczogYW55O1xyXG4gIEBJbnB1dCgpIHNlZ21lbnREeW5hbWljTG9hZGVyU2VydmljZTogYW55O1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25Gb3JtQ29tcG9uZW50OiBhbnkgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25OYW1lID0gJ1NFQ1RJT05fTkFNRS5yZXF1ZXN0RGV0YWlscyc7XHJcbiAgc2VjdGlvbk51bWJlcjogbnVtYmVyO1xyXG4gIHNlY3Rpb25TdGF0dXNWYWx1ZTogc3RyaW5nO1xyXG4gIHNlY3Rpb25TdGF0dXNLZXk6IHN0cmluZztcclxuICByZWNpcGllbnQgPSB7XHJcbiAgICBpc1Nob3dpbmc6IGZhbHNlLFxyXG4gICAgcHJvZmlsZTogbnVsbFxyXG4gIH07XHJcbiAgZGVsZWdhdGUgPSB7XHJcbiAgICBpc1Nob3dpbmc6IGZhbHNlLFxyXG4gICAgcHJvZmlsZTogbnVsbFxyXG4gIH07XHJcbiAgcHVibGljIGlucHV0O1xyXG4gIC8vIGhpZ2hsaWdodEZsYWc6IGJvb2xlYW47XHJcblxyXG4gIHByb2Nlc3NpbmdEYXRlOiBzdHJpbmc7XHJcbiAgcHVibGljIHJhbmRvbUlEOiBudW1iZXIgPVxyXG4gICAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDk5OTk5OSAtIDEwMDAwMCkpICsgMTAwMDAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpMThuOiBDb3JlSTE4blNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvcmVTZXJ2aWNlOiBDb3JlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2lkZW5hdlNlcnZpY2U6IFNpZGVuYXZTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICAvLyB0aGlzLmhpZ2hsaWdodEZsYWcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZWN0aW9uRm9ybUNvbXBvbmVudCA9IHRoaXMuc2VnbWVudER5bmFtaWNMb2FkZXJTZXJ2aWNlLmdldENvbXBvbmVudChcclxuICAgICAgdGhpcy5zZWN0aW9uLmlkXHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuc2VjdGlvbi5ib2R5LmRldGFpbHMuc3RhZ2VOYW1lKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbk5hbWUgPSB0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzLnN0YWdlTmFtZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbk5hbWUgPSB0aGlzLnNlZ21lbnREeW5hbWljTG9hZGVyU2VydmljZS5nZXRTZWN0aW9uTmFtZSh0aGlzLnNlY3Rpb24uaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5wdXQgPSB7XHJcbiAgICAgIGlzUmVhZE9ubHk6IHRoaXMuaXNSZWFkT25seSxcclxuICAgICAgbG92OiB0aGlzLmxvdixcclxuICAgICAgc2VjdGlvbjogdGhpcy5zZWN0aW9uLFxyXG4gICAgICAvLyBjb250cm9sbGVyczogdGhpcy5jb250cm9sbGVycyxcclxuICAgICAgLy8gcmVxdWVzdERldGFpbHM6IHRoaXMucmVxdWVzdERldGFpbHMsXHJcbiAgICAgIGZvcm06dGhpcy5mb3JtXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuc2VjdGlvbi5oZWFkZXIgJiYgdGhpcy5zZWN0aW9uLmhlYWRlci5wcm9jZXNzaW5nRGF0ZSkge1xyXG4gICAgICB0aGlzLnByb2Nlc3NpbmdEYXRlID0gbW9tZW50KHRoaXMuc2VjdGlvbi5oZWFkZXIucHJvY2Vzc2luZ0RhdGUpXHJcbiAgICAgICAgLmxvY2FsZSgnZW4tVVMnKVxyXG4gICAgICAgIC5mb3JtYXQoJ0REL01NL1lZWVkgSEg6bW06c3MnKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLmhpZ2hsaWdodEZsYWcgPSB0aGlzLmlzT3BlbjtcclxuICAgIGNvbnN0IHggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjY29sbGFwc2UnICsgdGhpcy5zZWN0aW9uSWQoKSk7XHJcbiAgICBpZiAoeC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbk51bWJlciA9IHgubGVuZ3RoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGdldCBpc0V4cGFuZGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaXNFeHBhbmRhYmxlRnJvbUJhY2tlbmQgPSB0aGlzLmZvcm0/LnNlY3Rpb25zPy5sZW5ndGggJiYgdGhpcy5mb3JtLnNlY3Rpb25zLnNvbWUoc2VjdGlvbiA9PiAnZXhwYW5kU3RhZ2UnIGluIHNlY3Rpb24/LmJvZHk/LmRldGFpbHMpO1xyXG4gICAgaWYgKCFpc0V4cGFuZGFibGVGcm9tQmFja2VuZCkgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gdGhpcy5zZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5leHBhbmRTdGFnZSA9PT0gJ3RydWUnO1xyXG4gIH1cclxuXHJcbiAgc2VjdGlvbklkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VjdGlvbi5pZC5zcGxpdCgnICcpLmpvaW4oJycpICsgdGhpcy5yYW5kb21JRDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlVXNlclByb2ZpbGVGcm9tUmVzcG9uc2UocmVzcG9uc2U6IGFueSk6IFByb2ZpbGVJbmZvRHJvcCB7XHJcbiAgICByZXR1cm4gbmV3IFByb2ZpbGVJbmZvRHJvcChcclxuICAgICAgZmFsc2UsXHJcbiAgICAgIHJlc3BvbnNlPy5bXCJVc2Vyc1wiXVswXT8uZW1wbG95ZWVOdW1iZXIsXHJcbiAgICAgIHJlc3BvbnNlPy5bXCJVc2Vyc1wiXVswXT8uZW1haWwsXHJcbiAgICAgIHJlc3BvbnNlPy5bXCJVc2Vyc1wiXVswXT8ubmFtZSxcclxuICAgICAgcmVzcG9uc2U/LltcIlVzZXJzXCJdWzBdPy5nZW5lcmFsRGVwYXJ0bWVudD8ubmFtZSxcclxuICAgICAgcmVzcG9uc2U/LltcIlVzZXJzXCJdWzBdPy5wb3NpdGlvbj8ubmFtZSxcclxuICAgICAgcmVzcG9uc2U/LltcIlVzZXJzXCJdWzBdPy5zZWN0b3I/Lm5hbWUsXHJcbiAgICAgIHJlc3BvbnNlPy5bXCJVc2Vyc1wiXVswXT8uZGVwYXJ0bWVudD8ubmFtZSxcclxuICAgICAgcmVzcG9uc2U/LltcIlVzZXJzXCJdWzBdPy5nZW5lcmFsRGVwYXJ0bWVudD8uY29kZSxcclxuICAgICAgcmVzcG9uc2U/LltcIlVzZXJzXCJdWzBdPy5sb2NhdGlvbixcclxuICAgICAgcmVzcG9uc2U/LltcIlVzZXJzXCJdWzBdPy5uYXRpb25hbGl0eT8uZGVzYyxcclxuICAgICAgcmVzcG9uc2U/LltcIlVzZXJzXCJdWzBdPy5jb250YWN0Py5tb2JpbGUsXHJcbiAgICAgIHJlc3BvbnNlPy5bXCJVc2Vyc1wiXVswXT8ubWFuYWdlcj8ubmFtZSxcclxuICAgICAgcmVzcG9uc2U/LltcIlVzZXJzXCJdWzBdPy5zZW5pb3JTZWN0b3JOYW1lPy5uYW1lXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcGVuT3JDcmVhdGVVc2VyUHJvZmlsZSh1c2VyRGF0YTogUHJvZmlsZUluZm9Ecm9wLCBwZXJzb25UeXBlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2lkZW5hdlNlcnZpY2UuZGF0YSA9IHVzZXJEYXRhO1xyXG4gICAgdGhpcy51c2VyUG9wb3ZlckluZm8gPSB1c2VyRGF0YTtcclxuICAgIHRoaXNbcGVyc29uVHlwZV0ucHJvZmlsZSA9IHVzZXJEYXRhO1xyXG4gICAgdGhpcy5zaWRlbmF2U2VydmljZS5wdWJsaXNoKCdvcGVuJywgUHJvZmlsZVNlY3Rpb25Db21wb25lbnQpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU21hbGxQcm9maWxlSW5mbyhldmVudCwgcGVyc29uVHlwZSkge1xyXG4gICAgdGhpcy51c2VyVHlwZSA9IHBlcnNvblR5cGU7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGxldCB1c2VySW5mbyA9IHRoaXNbcGVyc29uVHlwZV07XHJcbiAgICBpZiAodXNlckluZm8ucHJvZmlsZSA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnBvcG92ZXJUeXBlID0gcGVyc29uVHlwZTtcclxuICAgICAgbGV0IHVzZXJFbWFpbCA9IChwZXJzb25UeXBlID09PSAncmVjaXBpZW50JyA/IHRoaXMuc2VjdGlvbi5oZWFkZXIucGVyc29uVG9UaHVtYm5haWwuc3BsaXQoJz0nKVsxXSA6IHRoaXM/LnNlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG9UaHVtYm5haWwuc3BsaXQoJz0nKVsxXSk7XHJcbiAgICAgIHRoaXMuY29yZVNlcnZpY2UuZW1wbG95ZWVQcm9maWxlKHVzZXJFbWFpbCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBsZXQgdXNlckRhdGEgPSB0aGlzLmNyZWF0ZVVzZXJQcm9maWxlRnJvbVJlc3BvbnNlKHJlc3BvbnNlKTtcclxuICAgICAgICAgIHRoaXMub3Blbk9yQ3JlYXRlVXNlclByb2ZpbGUodXNlckRhdGEsIHBlcnNvblR5cGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wZW5PckNyZWF0ZVVzZXJQcm9maWxlKHRoaXNbcGVyc29uVHlwZV0ucHJvZmlsZSwgcGVyc29uVHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0dXNDbGFzcyhzdGF0dXM6IHN0cmluZykge1xyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgc3RhdHVzID09PSBDb25zdGFudHMuRk9STV9TVEFUVVNfUkVKRUNURUQgfHwgc3RhdHVzID09PSBDb25zdGFudHMuRk9STV9TVEFUVVNfQ0FOQ0VMTEVEXHJcbiAgICAgICAgfHwgc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdyZWplY3QnIHx8IHN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAndW5zYXRpc2ZpZWQnIHx8IHN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAnY2FuY2VsJ1xyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gJ2Rhbmdlcic7XHJcbiAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSBDb25zdGFudHMuRk9STV9TVEFUVVNfUEVORElORyB8fCBzdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3BlbmRpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuICd3YXJuaW5nJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdHVzSWNvbihzdGF0dXM6IHN0cmluZykge1xyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgc3RhdHVzID09PSBDb25zdGFudHMuRk9STV9TVEFUVVNfUkVKRUNURUQgfHwgc3RhdHVzID09PSBDb25zdGFudHMuRk9STV9TVEFUVVNfQ0FOQ0VMTEVEXHJcbiAgICAgICAgfHwgc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdyZWplY3QnIHx8IHN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAndW5zYXRpc2ZpZWQnIHx8IHN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAnY2FuY2VsJ1xyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gJ2Nsb3NlJztcclxuICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09IENvbnN0YW50cy5GT1JNX1NUQVRVU19QRU5ESU5HIHx8IHN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAncGVuZGluZycpIHtcclxuICAgICAgICByZXR1cm4gJ2Nsb2NrJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJ2NoZWNrJztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdjaGVjayc7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtZXhwYW5zaW9uLXBhbmVsXHJcbiAgY2xhc3M9XCJtYi00XCIgW2V4cGFuZGVkXT1cImlzRXhwYW5kZWRcIiAqbmdJZj1cImZvcm0/LmhlYWRlcj8uc3RhdHVzPy5bJ2tleSddICE9PSAnTkVXJyBcIiBoaWRlVG9nZ2xlXHJcbiAgI2FwcHJvdmFsUGFuZWw9XCJtYXRFeHBhbnNpb25QYW5lbFwiPlxyXG4gIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYXBwcm92YWwtcGFuZWwtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgZmxleC1ncm93LTEgYXBwcm92YWwtcGFuZWwtdGl0bGVcIj5cclxuICAgICAgICA8ZHMtc3RhdHVzXHJcbiAgICAgICAgICBzdGF0dXM9XCJ7e3N0YXR1c0NsYXNzKHNlY3Rpb25TdGF0dXNLZXkpfX1cIiBuby1vcGFjaXR5IGljb25cclxuICAgICAgICAgIGNsYXNzPVwiY2lyY2xlLXN0YXR1cyBkLW5vbmUgZC1zbS1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgIDxkcy1pY29uIGljb249XCJ7e3N0YXR1c0ljb24oc2VjdGlvblN0YXR1c0tleSl9fVwiPjwvZHMtaWNvbj5cclxuICAgICAgICA8L2RzLXN0YXR1cz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTE2IGZ3LW1lZGl1bSBtLTBcIj4ge3sgc2VjdGlvbk5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICA8YmRpIGNsYXNzPVwiZnMtMTIgZmMtZGFyay1ncmF5IGZ3LW5vcm1hbCBsaW5lLWhlaWdodC0xIGQtYmxvY2sgbXQtMVwiICpuZ0lmPVwic2VjdGlvbi5oZWFkZXI/LnByb2Nlc3NlZEJ5XCI+XHJcbiAgICAgICAgICAgIHt7IHByb2Nlc3NpbmdEYXRlIH19XHJcbiAgICAgICAgICA8L2JkaT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC1wYW5lbC1kZXRhaWxzIGdhcC0xXCI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoIXNlY3Rpb24/LmJvZHk/LmRldGFpbHM/Llsnc3RhZ2UwJ10/LlsnaXNTdGFnZTAnXSB8fCBzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5bJ3N0YWdlMCddPy5bJ2lzU3RhZ2UwJ10gPT09ICdmYWxzZScpXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiICpuZ0lmPVwic2VjdGlvbj8uaGVhZGVyPy5wZXJzb25UbztcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1wiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNtYWxsUHJvZmlsZUluZm8oJGV2ZW50LCAncmVjaXBpZW50JylcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiByYWRpdXMtMyBoLTQwXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3VzZXItYXZhdGFyLW5hbWUgcHgtMCBweC1tZC0yJzogIXNlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG8sICdwLTAnOiBzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvfVwiPlxyXG4gICAgICAgICAgICAgIDxkcy1hdmF0YXIgaW1hZ2U9XCJ7e3NlY3Rpb24/LmhlYWRlcj8ucGVyc29uVG9UaHVtYm5haWx9fVwiIHNpemU9XCJzbWFsbFwiIGNsYXNzPVwidXNlci1hdmF0YXJcIj48L2RzLWF2YXRhcj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmcy0xNCBmdy1tZWRpdW0gZC1pbmxpbmUtYmxvY2sgcGFuZWwtdXNlci1uYW1lIHRleHQtdHJ1bmNhdGVcIiBbbmdDbGFzc109XCJ7J3BhbmVsLXVzZXItb25seSc6ICFzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvfVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvXCI+e3sgc2VjdGlvbj8uaGVhZGVyPy5wZXJzb25UbyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvXCIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU21hbGxQcm9maWxlSW5mbygkZXZlbnQsICdkZWxlZ2F0ZScpXCI+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyb3RhdGUtYXJyb3dcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgICAgIHNyYz1cImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIZHBaSFJvUFNJeU1TSWdhR1ZwWjJoMFBTSXhNeUlnZG1sbGQwSnZlRDBpTUNBd0lESXhJREV6SWo0OGNHRjBhQ0JrUFNKTk1qRXNOeTQzTmpOaE1TNDJNakVzTVM0Mk1qRXNNQ3d3TERFdExqUTBOeTQxT1RNc01TNHpNRFlzTVM0ek1EWXNNQ3d3TERFdExqYzFMakU1TkdNdE55NHlPRFFzTUMwNExqVTJPQ3d3TFRFMUxqZzFNeXd3U0RNdU5qWTVURE11TmpNc09DNDJZeTR3TnpjdU1EWTBMakUxT0M0eE1qUXVNakk1TGpFNU5IRXhMamN4TERFdU5qa3NNeTQwTWl3ekxqTTRNV0V4TGpBeU15d3hMakF5TXl3d0xEQXNNU3d1TWpreExERXVNRGM1TGprNU1pNDVPVElzTUN3d0xERXRMamd1TnpFNUxERXVNRFV6TERFdU1EVXpMREFzTUN3eExURXRMak16TVZFekxqZ3pNU3d4TVM0M01Ua3NNUzQ0T0RZc09TNDRZeTB1TkRReUxTNDBNemN0TGpnM09TMHVPRGd4TFRFdU16TXRNUzR6TURsQk5DNDFOeklzTkM0MU56SXNNQ3d3TERFc01DdzNMamd4TkZZM0xqRTROVUV6TUM0M09ETXNNekF1TnpnekxEQXNNQ3d4TERJdU56TXNOQzR6TnpGak1TMHhMakF5Tnl3eUxqQXpPQzB5TGpBeU5Td3pMakEyTXkwekxqQXpNa0V4TGpBME9Td3hMakEwT1N3d0xERXNNU3czTGpJM055d3lMamd5UXpZdU5Dd3pMamNzTlM0MU1Ea3NOQzQxTnl3MExqWXlOU3cxTGpRME5tTXRMak15TXk0ek1qRXRMalkwTkM0Mk5EVXRMamszTXk0NU56WXVNRGcwTGpBMU9TNHhPREV1TURJM0xqSTNMakF5Tnl3M0xqSTFPQ3d3TERndU5URTJMREFzTVRVdU56YzFMREJCTVM0eE1qa3NNUzR4TWprc01Dd3dMREVzTWpFc055NHlPWFl1TkRjeVdpSWdkSEpoYm5ObWIzSnRQU0owY21GdWMyeGhkR1VvTUNBdE1DNDVPVGtwSWlCbWFXeHNQU0lqWVRVMFpXVXhJaTgrUEM5emRtYytcIi8+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMCBweC1tZC0yIHJhZGl1cy0zIHVzZXItYXZhdGFyLW5hbWUgaC00MFwiPlxyXG4gICAgICAgICAgICAgICAgPGRzLWF2YXRhciBpbWFnZT1cInt7c2VjdGlvbj8uaGVhZGVyPy5kZWxlZ2F0ZWRUb1RodW1ibmFpbH19XCIgc2l6ZT1cInNtYWxsXCIgY2xhc3M9XCJ1c2VyLWF2YXRhclwiPjwvZHMtYXZhdGFyPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmcy0xNCBmdy1tZWRpdW0gZC1pbmxpbmUtYmxvY2sgcGFuZWwtdXNlci1uYW1lIHRleHQtdHJ1bmNhdGVcIj57eyBzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8ZHMtc3RhdHVzXHJcbiAgICAgICAgICBjbGFzcz1cIm1haW4tc3RhdHVzXCIgKm5nSWY9XCJzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5bJ2RlY2lzaW9uJ10/LmtleTtcIlxyXG4gICAgICAgICAgc3RhdHVzPVwie3tzdGF0dXNDbGFzcyhzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5bJ2RlY2lzaW9uJ10/LmtleSl9fVwiPnt7IHNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LlsnZGVjaXNpb24nXT8udmFsdWUgfX1cclxuICAgICAgICA8L2RzLXN0YXR1cz5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwcm92YWwtcGFuZWwtdG9nZ2xlXCI+XHJcbiAgICAgICAgPGRzLWljb24gaWNvbj1cInBsdXMtMVwiIGNsYXNzPVwiZnMtMjAgZmMtY29yYWxcIiAqbmdJZj1cIiFhcHByb3ZhbFBhbmVsLmV4cGFuZGVkXCI+PC9kcy1pY29uPlxyXG4gICAgICAgIDxkcy1pY29uIGljb249XCJtaW51c1wiIGNsYXNzPVwiZnMtMjAgZmMtZGFyay1ncmF5XCIgKm5nSWY9XCJhcHByb3ZhbFBhbmVsLmV4cGFuZGVkXCI+PC9kcy1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gIDxzZWN0aW9uIGNsYXNzPVwiYm9yZGVyLXRvcCBwdC00XCI+XHJcbiAgICA8bmctY29udGFpbmVyICAqbmdDb21wb25lbnRPdXRsZXQ9XCJzZWN0aW9uRm9ybUNvbXBvbmVudDsgbmRjRHluYW1pY0lucHV0czogaW5wdXRcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L3NlY3Rpb24+XHJcblxyXG48L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtPy5oZWFkZXI/LnN0YXR1cz8uWydrZXknXSA9PSAnTkVXJyBcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cInNlY3Rpb25Gb3JtQ29tcG9uZW50OyBuZGNEeW5hbWljSW5wdXRzOiBpbnB1dFwiPjwvbmctY29udGFpbmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hcHAtY29tcG9uZW50LXNlY3Rpb25zL2Zvcm0tc2VjdGlvbi9mb3JtLXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvZm9ybS1zZWN0aW9uL2Zvcm0tc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEVBQUMsMEJBQTBCLEVBQUUsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDL0UsT0FBTyxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQU8sZUFBZSxFQUFVLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxLQUFLLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDOzs7OztBQUVoQyxNQUFNLFNBQVMsR0FBRztJQUNoQixDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxF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UyxDQUFDLENBQUM7UUFDL0QsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxNQUFjO1FBQ3ZCLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzVDLElBQUksY0FBYyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0QsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDO0lBQzdCLENBQUM7dUdBak9VLG9CQUFvQjsyRkFBcEIsb0JBQW9CLG9XQ3RDakMsb3pKQWlGQSx1L0REdERJLGtCQUFrQixxWUFHbEIsaUJBQWlCLG9QQUNqQiwwQkFBMEIscU9BQzFCLGdCQUFnQiwrQkFDaEIsT0FBTyxtRkFDUCxhQUFhOzsyRkFJSixvQkFBb0I7a0JBakJoQyxTQUFTOytCQUNFLGtCQUFrQixjQUdoQixJQUFJLFdBQ1A7d0JBQ1Asa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLElBQUk7d0JBQ0osaUJBQWlCO3dCQUNqQiwwQkFBMEI7d0JBQzFCLGdCQUFnQjt3QkFDaEIsT0FBTzt3QkFDUCxhQUFhO3FCQUNkLFdBQ1EsQ0FBQyxzQkFBc0IsQ0FBQzsySUFNeEIsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvcmVJMThuU2VydmljZSwgQ29yZVNlcnZpY2UsIFNpZGVuYXZTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7Q29tcG9uZW50T3V0bGV0SW9EaXJlY3RpdmUsIER5bmFtaWNNb2R1bGV9IGZyb20gJ25nLWR5bmFtaWMtY29tcG9uZW50JztcclxuaW1wb3J0IHtOZ0NsYXNzLCBOZ0NvbXBvbmVudE91dGxldCwgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtNYXRFeHBhbnNpb25Nb2R1bGUsIE1hdEV4cGFuc2lvblBhbmVsfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xyXG5pbXBvcnQge1NhdFBvcG92ZXJNb2R1bGV9IGZyb20gJ0BuY3N0YXRlL3NhdC1wb3BvdmVyJztcclxuaW1wb3J0IHtGb3JtLCBQcm9maWxlSW5mb0Ryb3AsIFNlY3Rpb259IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgKiBhcyBDb25zdGFudHMgZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHtQcm9maWxlU2VjdGlvbkNvbXBvbmVudH0gZnJvbSBcIi4uL3Byb2ZpbGUtc2VjdGlvbi9wcm9maWxlLXNlY3Rpb24uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7Zm9ybWF0fSBmcm9tICdkYXRlLWZucyc7XHJcblxyXG5jb25zdCBTdGF0dXNNYXAgPSB7XHJcbiAgW0NvbnN0YW50cy5GT1JNX1NUQVRVU19SRUpFQ1RFRF06IHtjbGFzczogJ2RhbmdlcicsIGljb246ICdjbG9zZSd9LFxyXG4gIFtDb25zdGFudHMuRk9STV9TVEFUVVNfQ0FOQ0VMTEVEXToge2NsYXNzOiAnZGFuZ2VyJywgaWNvbjogJ2Nsb3NlJ30sXHJcbiAgW0NvbnN0YW50cy5GT1JNX1NUQVRVU19SRUpFQ1RdOiB7Y2xhc3M6ICdkYW5nZXInLCBpY29uOiAnY2xvc2UnfSxcclxuICBbQ29uc3RhbnRzLlNFQ1RJT05fU1RBVFVTX1VOU0FUSVNGSUVEXToge2NsYXNzOiAnZGFuZ2VyJywgaWNvbjogJ2Nsb3NlJ30sXHJcbiAgW0NvbnN0YW50cy5GT1JNX1NUQVRVU19DQU5DRUxdOiB7Y2xhc3M6ICdkYW5nZXInLCBpY29uOiAnY2xvc2UnfSxcclxuICBbQ29uc3RhbnRzLkZPUk1fU1RBVFVTX1BFTkRJTkddOiB7Y2xhc3M6ICd3YXJuaW5nJywgaWNvbjogJ2Nsb2NrJ30sXHJcbiAgJ2RlZmF1bHQnOiB7Y2xhc3M6ICdzdWNjZXNzJywgaWNvbjogJ2NoZWNrJ31cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZm9ybS1zZWN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mb3JtLXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcclxuICAgIE1hdEV4cGFuc2lvblBhbmVsLFxyXG4gICAgTmdJZixcclxuICAgIE5nQ29tcG9uZW50T3V0bGV0LFxyXG4gICAgQ29tcG9uZW50T3V0bGV0SW9EaXJlY3RpdmUsXHJcbiAgICBTYXRQb3BvdmVyTW9kdWxlLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIER5bmFtaWNNb2R1bGVcclxuICBdLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybVNlY3Rpb25Db21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgdXNlclR5cGUgPSAncmVjaXBpZW50JztcclxuICBwb3BvdmVyVHlwZSA9ICdyZWNpcGllbnQnO1xyXG4gIEBJbnB1dCgpIHJlcXVlc3REZXRhaWxzOiBTZWN0aW9uO1xyXG4gIHVzZXJQb3BvdmVySW5mbzogYW55ID0ge307XHJcbiAgQElucHV0KCkgc2VjdGlvbjogU2VjdGlvbjtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dCgpIGxvdjogYW55O1xyXG4gIEBJbnB1dCgpIGlzUmVhZE9ubHk6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY29udHJvbGxlcnM6IGFueTtcclxuICBASW5wdXQoKSBzZWdtZW50RHluYW1pY0xvYWRlclNlcnZpY2U6IGFueTtcclxuICBASW5wdXQoKSBzZWN0aW9uRm9ybUNvbXBvbmVudDogYW55ID0gbnVsbDtcclxuICBASW5wdXQoKSBzZWN0aW9uTmFtZSA9ICdTRUNUSU9OX05BTUUucmVxdWVzdERldGFpbHMnO1xyXG4gIHNlY3Rpb25TdGF0dXNLZXk6IHN0cmluZztcclxuICByZWNpcGllbnQgPSB7XHJcbiAgICBpc1Nob3dpbmc6IGZhbHNlLFxyXG4gICAgcHJvZmlsZTogbnVsbFxyXG4gIH07XHJcbiAgZGVsZWdhdGUgPSB7XHJcbiAgICBpc1Nob3dpbmc6IGZhbHNlLFxyXG4gICAgcHJvZmlsZTogbnVsbFxyXG4gIH07XHJcbiAgcHVibGljIGlucHV0O1xyXG4gIHByb2Nlc3NpbmdEYXRlOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGkxOG46IENvcmVJMThuU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29yZVNlcnZpY2U6IENvcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzaWRlbmF2U2VydmljZTogU2lkZW5hdlNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZCB0byBpbml0aWFsaXplIHZhcmlvdXMgY29tcG9uZW50cyB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5pdGlhbGl6ZWQuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pbml0U2VjdGlvbkZvcm1Db21wb25lbnQoKTtcclxuICAgIHRoaXMuaW5pdFNlY3Rpb25OYW1lKCk7XHJcbiAgICB0aGlzLmluaXRJbnB1dCgpO1xyXG4gICAgdGhpcy5pbml0UHJvY2Vzc2luZ0RhdGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBzZWN0aW9uIGZvcm0gY29tcG9uZW50IGJ5IGZldGNoaW5nIGl0IGZyb20gdGhlIHNlZ21lbnQgZHluYW1pYyBsb2FkZXIgc2VydmljZS5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0U2VjdGlvbkZvcm1Db21wb25lbnQoKSB7XHJcbiAgICB0aGlzLnNlY3Rpb25Gb3JtQ29tcG9uZW50ID0gdGhpcy5zZWdtZW50RHluYW1pY0xvYWRlclNlcnZpY2UuZ2V0Q29tcG9uZW50KFxyXG4gICAgICB0aGlzLnNlY3Rpb24uaWRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0aGUgc2VjdGlvbiBuYW1lIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBzZWN0aW9uIGRhdGEuXHJcbiAgICogSWYgdGhlIHNlY3Rpb24ncyBib2R5IGNvbnRhaW5zIGEgJ3N0YWdlTmFtZScgcHJvcGVydHksIHRoZSBzZWN0aW9uIG5hbWUgaXMgc2V0IHRvIHRoZSB2YWx1ZSBvZiB0aGF0IHByb3BlcnR5LlxyXG4gICAqIE90aGVyd2lzZSwgdGhlIHNlY3Rpb24gbmFtZSBpcyByZXRyaWV2ZWQgdXNpbmcgdGhlIHNlZ21lbnREeW5hbWljTG9hZGVyU2VydmljZSBiYXNlZCBvbiB0aGUgc2VjdGlvbiBJRC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0U2VjdGlvbk5hbWUoKSB7XHJcbiAgICBpZiAodGhpcy5zZWN0aW9uLmJvZHkuZGV0YWlscz8uWydzdGFnZU5hbWUnXSkge1xyXG4gICAgICB0aGlzLnNlY3Rpb25OYW1lID0gdGhpcy5zZWN0aW9uLmJvZHkuZGV0YWlsc1snc3RhZ2VOYW1lJ107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlY3Rpb25OYW1lID0gdGhpcy5zZWdtZW50RHluYW1pY0xvYWRlclNlcnZpY2UuZ2V0U2VjdGlvbk5hbWUodGhpcy5zZWN0aW9uLmlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBpbnB1dCBvYmplY3Qgd2l0aCB0aGUgcHJvdmlkZWQgdmFsdWVzIGZvciByZWFkLW9ubHkgc3RhdHVzLCBsaXN0IG9mIHZhbHVlcywgc2VjdGlvbiwgYW5kIGZvcm0uXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaW5pdElucHV0KCkge1xyXG4gICAgdGhpcy5pbnB1dCA9IHtcclxuICAgICAgaXNSZWFkT25seTogdGhpcy5pc1JlYWRPbmx5LFxyXG4gICAgICBsb3Y6IHRoaXMubG92LFxyXG4gICAgICBzZWN0aW9uOiB0aGlzLnNlY3Rpb24sXHJcbiAgICAgIGZvcm06IHRoaXMuZm9ybVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBwcm9jZXNzaW5nIGRhdGUgYmFzZWQgb24gdGhlIHNlY3Rpb24ncyBoZWFkZXIgcHJvY2Vzc2luZyBkYXRlLlxyXG4gICAqIElmIHRoZSBwcm9jZXNzaW5nIGRhdGUgaXMgYXZhaWxhYmxlIGluIHRoZSBzZWN0aW9uIGhlYWRlciwgaXQgZm9ybWF0cyB0aGUgcHJvY2Vzc2luZyBkYXRlXHJcbiAgICogYW5kIGFzc2lnbnMgaXQgdG8gdGhlIHByb2Nlc3NpbmdEYXRlIHByb3BlcnR5IG9mIHRoZSBpbnN0YW5jZS5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0UHJvY2Vzc2luZ0RhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5zZWN0aW9uPy5oZWFkZXI/LnByb2Nlc3NpbmdEYXRlKSB7XHJcbiAgICAgIHRoaXMucHJvY2Vzc2luZ0RhdGUgPSBmb3JtYXQobmV3IERhdGUodGhpcy5zZWN0aW9uLmhlYWRlci5wcm9jZXNzaW5nRGF0ZSksIFwiZGQvTU0veXl5eSBoaDptbTpzc1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGUgc2VjdGlvbiBpcyBleHBhbmRlZC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGUgc2VjdGlvbiBpcyBleHBhbmRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxyXG4gICAqL1xyXG4gIGdldCBpc0V4cGFuZGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaGFzU2VjdGlvbnMgPSBCb29sZWFuKHRoaXMuZm9ybT8uc2VjdGlvbnM/Lmxlbmd0aCk7XHJcbiAgICBjb25zdCBpc0FueVNlY3Rpb25FeHBhbmRhYmxlID0gaGFzU2VjdGlvbnMgJiYgdGhpcy5mb3JtLnNlY3Rpb25zLnNvbWUoc2VjdGlvbiA9PiAnZXhwYW5kU3RhZ2UnIGluIChzZWN0aW9uPy5ib2R5Py5kZXRhaWxzIHx8IHt9KSk7XHJcbiAgICByZXR1cm4gaXNBbnlTZWN0aW9uRXhwYW5kYWJsZSA/ICh0aGlzLnNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LlsnZXhwYW5kU3RhZ2UnXSA9PT0gJ3RydWUnKSA6IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBQcm9maWxlSW5mb0Ryb3Agb2JqZWN0IGZyb20gdGhlIHJlc3BvbnNlIG9iamVjdC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7YW55fSByZXNwb25zZSAtIFRoZSByZXNwb25zZSBvYmplY3QgY29udGFpbmluZyB1c2VyIHByb2ZpbGUgaW5mb3JtYXRpb24uXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHtQcm9maWxlSW5mb0Ryb3B9IEEgUHJvZmlsZUluZm9Ecm9wIG9iamVjdCBjcmVhdGVkIGZyb20gdGhlIHJlc3BvbnNlIGRhdGEuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVVc2VyUHJvZmlsZUZyb21SZXNwb25zZShyZXNwb25zZTogYW55KTogUHJvZmlsZUluZm9Ecm9wIHtcclxuICAgIGNvbnN0IHVzZXIgPSByZXNwb25zZT8uW1wiVXNlcnNcIl1bMF07XHJcbiAgICByZXR1cm4gbmV3IFByb2ZpbGVJbmZvRHJvcChcclxuICAgICAgZmFsc2UsXHJcbiAgICAgIHVzZXI/LmVtcGxveWVlTnVtYmVyLFxyXG4gICAgICB1c2VyPy5lbWFpbCxcclxuICAgICAgdXNlcj8ubmFtZSxcclxuICAgICAgdXNlcj8uZ2VuZXJhbERlcGFydG1lbnQ/Lm5hbWUsXHJcbiAgICAgIHVzZXI/LnBvc2l0aW9uPy5uYW1lLFxyXG4gICAgICB1c2VyPy5zZWN0b3I/Lm5hbWUsXHJcbiAgICAgIHVzZXI/LmRlcGFydG1lbnQ/Lm5hbWUsXHJcbiAgICAgIHVzZXI/LmdlbmVyYWxEZXBhcnRtZW50Py5jb2RlLFxyXG4gICAgICB1c2VyPy5sb2NhdGlvbixcclxuICAgICAgdXNlcj8ubmF0aW9uYWxpdHk/LmRlc2MsXHJcbiAgICAgIHVzZXI/LmNvbnRhY3Q/Lm1vYmlsZSxcclxuICAgICAgdXNlcj8ubWFuYWdlcj8ubmFtZSxcclxuICAgICAgdXNlcj8uc2VuaW9yU2VjdG9yTmFtZT8ubmFtZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZCB0byBvcGVuIG9yIGNyZWF0ZSBhIHVzZXIgcHJvZmlsZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UHJvZmlsZUluZm9Ecm9wfSB1c2VyRGF0YSAtIFRoZSB1c2VyIHByb2ZpbGUgZGF0YSB0byBvcGVuIG9yIGNyZWF0ZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGVyc29uVHlwZSAtIFRoZSB0eXBlIG9mIHBlcnNvbiB0aGlzIHByb2ZpbGUgYmVsb25ncyB0by5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvcGVuT3JDcmVhdGVVc2VyUHJvZmlsZSh1c2VyRGF0YTogUHJvZmlsZUluZm9Ecm9wLCBwZXJzb25UeXBlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2lkZW5hdlNlcnZpY2UuZGF0YSA9IHVzZXJEYXRhO1xyXG4gICAgdGhpcy51c2VyUG9wb3ZlckluZm8gPSB1c2VyRGF0YTtcclxuICAgIHRoaXNbcGVyc29uVHlwZV0ucHJvZmlsZSA9IHVzZXJEYXRhO1xyXG4gICAgdGhpcy5zaWRlbmF2U2VydmljZS5wdWJsaXNoKCdvcGVuJywgUHJvZmlsZVNlY3Rpb25Db21wb25lbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlcyB0aGUgZGlzcGxheSBvZiBzbWFsbCBwcm9maWxlIGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIHBlcnNvbiB0eXBlXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge2FueX0gZXZlbnQgLSBUaGUgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIHRvZ2dsZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwZXJzb25UeXBlIC0gVGhlIHR5cGUgb2YgcGVyc29uIGZvciB3aGljaCB0byBkaXNwbGF5IHRoZSBwcm9maWxlIGluZm9ybWF0aW9uXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIHRvZ2dsZVNtYWxsUHJvZmlsZUluZm8oZXZlbnQ6IGFueSwgcGVyc29uVHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnVzZXJUeXBlID0gcGVyc29uVHlwZTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgbGV0IHVzZXJJbmZvID0gdGhpc1twZXJzb25UeXBlXTtcclxuICAgIGlmICghdXNlckluZm8ucHJvZmlsZSkge1xyXG4gICAgICB0aGlzLnBvcG92ZXJUeXBlID0gcGVyc29uVHlwZTtcclxuICAgICAgbGV0IHVzZXJFbWFpbCA9IHRoaXMuZ2V0VXNlckVtYWlsKHBlcnNvblR5cGUpO1xyXG4gICAgICB0aGlzLmZldGNoQW5kU2V0VXNlclByb2ZpbGUodXNlckVtYWlsLCBwZXJzb25UeXBlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub3Blbk9yQ3JlYXRlVXNlclByb2ZpbGUodXNlckluZm8ucHJvZmlsZSwgcGVyc29uVHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGVtYWlsIG9mIHRoZSB1c2VyIGJhc2VkIG9uIHRoZSBwZXJzb25UeXBlIHBhcmFtZXRlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwZXJzb25UeXBlIC0gVHlwZSBvZiB0aGUgcGVyc29uICgncmVjaXBpZW50JyBvciBvdGhlcnMpLlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gLSBUaGUgZW1haWwgYWRkcmVzcyBvZiB0aGUgdXNlci5cclxuICAgKi9cclxuICBwcml2YXRlIGdldFVzZXJFbWFpbChwZXJzb25UeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIChwZXJzb25UeXBlID09PSAncmVjaXBpZW50J1xyXG4gICAgICAgID8gdGhpcy5zZWN0aW9uLmhlYWRlci5wZXJzb25Ub1RodW1ibmFpbC5zcGxpdCgnPScpWzFdXHJcbiAgICAgICAgOiB0aGlzPy5zZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvVGh1bWJuYWlsLnNwbGl0KCc9JylbMV1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSB1c2VyIHByb2ZpbGUgdXNpbmcgdGhlIHByb3ZpZGVkIHVzZXIgZW1haWwgYW5kIHBlcnNvbiB0eXBlLCB0aGVuIHNldHMgdGhlIHByb2ZpbGUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlckVtYWlsIC0gVGhlIGVtYWlsIG9mIHRoZSB1c2VyIHdob3NlIHByb2ZpbGUgaXMgdG8gYmUgZmV0Y2hlZCBhbmQgc2V0LlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwZXJzb25UeXBlIC0gVGhlIHR5cGUgb2YgcGVyc29uIChlLmcuLCBlbXBsb3llZSwgY3VzdG9tZXIpIGZvciB3aG9tIHRoZSBwcm9maWxlIGlzIGJlaW5nIGZldGNoZWQuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZmV0Y2hBbmRTZXRVc2VyUHJvZmlsZSh1c2VyRW1haWw6IHN0cmluZywgcGVyc29uVHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvcmVTZXJ2aWNlLmVtcGxveWVlUHJvZmlsZSh1c2VyRW1haWwpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2UpIHtcclxuICAgICAgICBsZXQgdXNlckRhdGEgPSB0aGlzLmNyZWF0ZVVzZXJQcm9maWxlRnJvbVJlc3BvbnNlKHJlc3BvbnNlKTtcclxuICAgICAgICB0aGlzLm9wZW5PckNyZWF0ZVVzZXJQcm9maWxlKHVzZXJEYXRhLCBwZXJzb25UeXBlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBDU1MgY2xhc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnB1dCBzdGF0dXMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdHVzIC0gVGhlIHN0YXR1cyBmb3Igd2hpY2ggdGhlIENTUyBjbGFzcyBpcyBuZWVkZWQuXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSAtIFRoZSBDU1MgY2xhc3MgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gc3RhdHVzLlxyXG4gICAqL1xyXG4gIHN0YXR1c0NsYXNzKHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHN0YXR1cyA9IHN0YXR1cyA/IHN0YXR1cy50b0xvd2VyQ2FzZSgpIDogJyc7XHJcbiAgICBsZXQgc3RhdHVzU3RyYXRlZ3kgPSBTdGF0dXNNYXBbc3RhdHVzXSB8fCBTdGF0dXNNYXBbJ2RlZmF1bHQnXTtcclxuICAgIHJldHVybiBzdGF0dXNTdHJhdGVneS5jbGFzcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGljb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm92aWRlZCBzdGF0dXMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdHVzIC0gVGhlIHN0YXR1cyBmb3Igd2hpY2ggdG8gcmV0cmlldmUgdGhlIGljb24uXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgaWNvbiBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm92aWRlZCBzdGF0dXMuXHJcbiAgICovXHJcbiAgc3RhdHVzSWNvbihzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBzdGF0dXMgPSBzdGF0dXMgPyBzdGF0dXMudG9Mb3dlckNhc2UoKSA6ICcnO1xyXG4gICAgbGV0IHN0YXR1c1N0cmF0ZWd5ID0gU3RhdHVzTWFwW3N0YXR1c10gfHwgU3RhdHVzTWFwWydkZWZhdWx0J107XHJcbiAgICByZXR1cm4gc3RhdHVzU3RyYXRlZ3kuaWNvbjtcclxuICB9XHJcbn1cclxuIiwiPG1hdC1leHBhbnNpb24tcGFuZWwgY2xhc3M9XCJtYi00XCIgW2V4cGFuZGVkXT1cImlzRXhwYW5kZWRcIiBoaWRlVG9nZ2xlICNhcHByb3ZhbFBhbmVsPVwibWF0RXhwYW5zaW9uUGFuZWxcIj5cclxuICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImFwcHJvdmFsLXBhbmVsLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIGZsZXgtZ3Jvdy0xIGFwcHJvdmFsLXBhbmVsLXRpdGxlXCI+XHJcbiAgICAgICAgPGRzLXN0YXR1c1xyXG4gICAgICAgICAgc3RhdHVzPVwie3tzdGF0dXNDbGFzcyhzZWN0aW9uU3RhdHVzS2V5KX19XCIgbm8tb3BhY2l0eSBpY29uXHJcbiAgICAgICAgICBjbGFzcz1cImNpcmNsZS1zdGF0dXMgZC1ub25lIGQtc20taW5saW5lLWJsb2NrXCI+XHJcbiAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwie3tzdGF0dXNJY29uKHNlY3Rpb25TdGF0dXNLZXkpfX1cIj48L2RzLWljb24+XHJcbiAgICAgICAgPC9kcy1zdGF0dXM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xNiBmdy1tZWRpdW0gbS0wXCI+IHt7IHNlY3Rpb25OYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgQGlmIChzZWN0aW9uLmhlYWRlcj8ucHJvY2Vzc2VkQnkpIHtcclxuICAgICAgICAgICAgPGJkaSBjbGFzcz1cImZzLTEyIGZjLWRhcmstZ3JheSBmdy1ub3JtYWwgbGluZS1oZWlnaHQtMSBkLWJsb2NrIG10LTFcIj5cclxuICAgICAgICAgICAgICB7eyBwcm9jZXNzaW5nRGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2JkaT5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC1wYW5lbC1kZXRhaWxzIGdhcC0xXCI+XHJcbiAgICAgICAgQGlmICghc2VjdGlvbj8uYm9keT8uZGV0YWlscz8uWydzdGFnZTAnXT8uWydpc1N0YWdlMCddIHx8IHNlY3Rpb24/LmJvZHk/LmRldGFpbHM/Llsnc3RhZ2UwJ10/LlsnaXNTdGFnZTAnXSA9PT0gJ2ZhbHNlJykge1xyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgQGlmIChzZWN0aW9uPy5oZWFkZXI/LnBlcnNvblRvKSB7XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTbWFsbFByb2ZpbGVJbmZvKCRldmVudCwgJ3JlY2lwaWVudCcpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHJhZGl1cy0zIGgtNDBcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3VzZXItYXZhdGFyLW5hbWUgcHgtMCBweC1tZC0yJzogIXNlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG8sICdwLTAnOiBzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZHMtYXZhdGFyIGltYWdlPVwie3tzZWN0aW9uPy5oZWFkZXI/LnBlcnNvblRvVGh1bWJuYWlsfX1cIiBzaXplPVwic21hbGxcIiBjbGFzcz1cInVzZXItYXZhdGFyXCI+PC9kcy1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgICAgIEBpZiAoIXNlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG8pIHtcclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmcy0xNCBmdy1tZWRpdW0gZC1pbmxpbmUtYmxvY2sgcGFuZWwtdXNlci1uYW1lIHRleHQtdHJ1bmNhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwYW5lbC11c2VyLW9ubHknOiAhc2VjdGlvbj8uaGVhZGVyPy5kZWxlZ2F0ZWRUb31cIlxyXG4gICAgICAgICAgICAgICAgICAgID57eyBzZWN0aW9uPy5oZWFkZXI/LnBlcnNvblRvIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIEBpZiAoc2VjdGlvbj8uaGVhZGVyPy5kZWxlZ2F0ZWRUbykge1xyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU21hbGxQcm9maWxlSW5mbygkZXZlbnQsICdkZWxlZ2F0ZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3RhdGUtYXJyb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIZHBaSFJvUFNJeU1TSWdhR1ZwWjJoMFBTSXhNeUlnZG1sbGQwSnZlRDBpTUNBd0lESXhJREV6SWo0OGNHRjBhQ0JrUFNKTk1qRXNOeTQzTmpOaE1TNDJNakVzTVM0Mk1qRXNNQ3d3TERFdExqUTBOeTQxT1RNc01TNHpNRFlzTVM0ek1EWXNNQ3d3TERFdExqYzFMakU1TkdNdE55NHlPRFFzTUMwNExqVTJPQ3d3TFRFMUxqZzFNeXd3U0RNdU5qWTVURE11TmpNc09DNDJZeTR3TnpjdU1EWTBMakUxT0M0eE1qUXVNakk1TGpFNU5IRXhMamN4TERFdU5qa3NNeTQwTWl3ekxqTTRNV0V4TGpBeU15d3hMakF5TXl3d0xEQXNNU3d1TWpreExERXVNRGM1TGprNU1pNDVPVElzTUN3d0xERXRMamd1TnpFNUxERXVNRFV6TERFdU1EVXpMREFzTUN3eExURXRMak16TVZFekxqZ3pNU3d4TVM0M01Ua3NNUzQ0T0RZc09TNDRZeTB1TkRReUxTNDBNemN0TGpnM09TMHVPRGd4TFRFdU16TXRNUzR6TURsQk5DNDFOeklzTkM0MU56SXNNQ3d3TERFc01DdzNMamd4TkZZM0xqRTROVUV6TUM0M09ETXNNekF1TnpnekxEQXNNQ3d4TERJdU56TXNOQzR6TnpGak1TMHhMakF5Tnl3eUxqQXpPQzB5TGpBeU5Td3pMakEyTXkwekxqQXpNa0V4TGpBME9Td3hMakEwT1N3d0xERXNNU3czTGpJM055d3lMamd5UXpZdU5Dd3pMamNzTlM0MU1Ea3NOQzQxTnl3MExqWXlOU3cxTGpRME5tTXRMak15TXk0ek1qRXRMalkwTkM0Mk5EVXRMamszTXk0NU56WXVNRGcwTGpBMU9TNHhPREV1TURJM0xqSTNMakF5Tnl3M0xqSTFPQ3d3TERndU5URTJMREFzTVRVdU56YzFMREJCTVM0eE1qa3NNUzR4TWprc01Dd3dMREVzTWpFc055NHlPWFl1TkRjeVdpSWdkSEpoYm5ObWIzSnRQU0owY21GdWMyeGhkR1VvTUNBdE1DNDVPVGtwSWlCbWFXeHNQU0lqWVRVMFpXVXhJaTgrUEM5emRtYytcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMCBweC1tZC0yIHJhZGl1cy0zIHVzZXItYXZhdGFyLW5hbWUgaC00MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRzLWF2YXRhciBpbWFnZT1cInt7c2VjdGlvbj8uaGVhZGVyPy5kZWxlZ2F0ZWRUb1RodW1ibmFpbH19XCIgc2l6ZT1cInNtYWxsXCIgY2xhc3M9XCJ1c2VyLWF2YXRhclwiPjwvZHMtYXZhdGFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmcy0xNCBmdy1tZWRpdW0gZC1pbmxpbmUtYmxvY2sgcGFuZWwtdXNlci1uYW1lIHRleHQtdHJ1bmNhdGVcIj57eyBzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKHNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LlsnZGVjaXNpb24nXT8ua2V5KSB7XHJcbiAgICAgICAgICA8ZHMtc3RhdHVzXHJcbiAgICAgICAgICAgIGNsYXNzPVwibWFpbi1zdGF0dXNcIlxyXG4gICAgICAgICAgICBzdGF0dXM9XCJ7e3N0YXR1c0NsYXNzKHNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LlsnZGVjaXNpb24nXT8ua2V5KX19XCI+e3sgc2VjdGlvbj8uYm9keT8uZGV0YWlscz8uWydkZWNpc2lvbiddPy52YWx1ZSB9fVxyXG4gICAgICAgICAgPC9kcy1zdGF0dXM+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC1wYW5lbC10b2dnbGVcIj5cclxuICAgICAgICBAaWYgKGFwcHJvdmFsUGFuZWwuZXhwYW5kZWQpIHtcclxuICAgICAgICAgIDxkcy1pY29uIGljb249XCJtaW51c1wiIGNsYXNzPVwiZnMtMjAgZmMtZGFyay1ncmF5XCI+PC9kcy1pY29uPlxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPGRzLWljb24gaWNvbj1cInBsdXMtMVwiIGNsYXNzPVwiZnMtMjAgZmMtY29yYWxcIj48L2RzLWljb24+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gIDxzZWN0aW9uIGNsYXNzPVwiYm9yZGVyLXRvcCBwdC00XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cInNlY3Rpb25Gb3JtQ29tcG9uZW50OyBuZGNEeW5hbWljSW5wdXRzOiBpbnB1dFwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvc2VjdGlvbj5cclxuXHJcbjwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuIl19
|
|
@@ -5,6 +5,5 @@ export * from './form-section/form-section.component';
|
|
|
5
5
|
export * from './main-request-details/main-request-details.component';
|
|
6
6
|
export * from './feedback-section/feedback-section.component';
|
|
7
7
|
export * from './profile-section/profile-section.component';
|
|
8
|
-
export * from './comment-section/comment-section.component';
|
|
9
8
|
export * from './layout/layout.component';
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC1zZWN0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJDQUEyQyxDQUFBO0FBQ3pELGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYywrQ0FBK0MsQ0FBQTtBQUM3RCxjQUFjLHVDQUF1QyxDQUFBO0FBQ3JELGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYywrQ0FBK0MsQ0FBQTtBQUM3RCxjQUFjLDZDQUE2QyxDQUFBO0FBQzNELGNBQWMsMkJBQTJCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NlcnZpY2UtaGVhZGVyL3NlcnZpY2UtaGVhZGVyLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9zdGF0dXMvc3RhdHVzLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi93b3JrZmxvdy1zZWN0aW9uL3dvcmtmbG93LXNlY3Rpb24uY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tc2VjdGlvbi9mb3JtLXNlY3Rpb24uY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL21haW4tcmVxdWVzdC1kZXRhaWxzL21haW4tcmVxdWVzdC1kZXRhaWxzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZmVlZGJhY2stc2VjdGlvbi9mZWVkYmFjay1zZWN0aW9uLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9wcm9maWxlLXNlY3Rpb24vcHJvZmlsZS1zZWN0aW9uLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudCdcclxuIl19
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
|
|
2
2
|
import { MatAccordion, MatExpansionModule, MatExpansionPanel } from '@angular/material/expansion';
|
|
3
|
-
import { NgIf } from '@angular/common';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
import * as i1 from "../../../services";
|
|
6
5
|
import * as i2 from "@angular/material/expansion";
|
|
@@ -13,19 +12,18 @@ export class MainRequestDetailsComponent {
|
|
|
13
12
|
this.i18n = i18n;
|
|
14
13
|
}
|
|
15
14
|
get isExpanded() {
|
|
16
|
-
return this.section?.body?.details?.expandStage === 'true';
|
|
15
|
+
return this.section?.body?.details?.['expandStage'] === 'true';
|
|
17
16
|
}
|
|
18
17
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MainRequestDetailsComponent, deps: [{ token: i1.CoreI18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
18
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: MainRequestDetailsComponent, isStandalone: true, selector: "app-main-request-details", inputs: { section: "section", lov: "lov", form: "form" }, ngImport: i0, template: "<mat-accordion class=\"primary-accordion main-request-accordion border-top\">\r\n <mat-expansion-panel [expanded]=\"isExpanded || (form?.sections?.length === 1 )\" class=\"mb-3\" hideToggle #requestPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n <h2 class=\"fs-16 fw-medium fc-coral m-0 flex-grow-1\">{{ i18n.translate('requestDetailsTitle') }}</h2>\r\n @if (requestPanel.expanded) {\r\n <div class=\"d-inline-flex align-items-center gap-2\">\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n </div>\r\n } @else {\r\n <div class=\"d-inline-flex align-items-center gap-2\">\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </div>\r\n }\r\n </mat-expansion-panel-header>\r\n <section class=\"default-box box-shadow p-4\">\r\n <ng-content></ng-content>\r\n </section>\r\n </mat-expansion-panel>\r\n</mat-accordion>\r\n", styles: [".main-request-accordion{--accordion-height: 65px;--accordion-radius: 0 0 4px 4px;--accordion-shadow: 0 7px 10px rgba(var(--rgb-black), 3%);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--gray);--panel-padding: 0 1.5rem;--panel-body-padding: 0 0 1.5rem;position:relative;z-index:1}@media (max-width: 576px){.main-request-accordion{--accordion-height: 55px;--panel-padding: 0 1rem;--panel-body-padding: 0 1rem 1rem}}.main-request-accordion .inner-accordion{--accordion-height: 44px;--accordion-bc: var(--light-gray);--accordion-bc-active: var(--white);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--light-gray);--panel-body-padding: 0;--accordion-shadow: none;--panel-padding: 0 1.5rem}\n"], dependencies: [{ kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i2.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }] });
|
|
20
19
|
}
|
|
21
20
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MainRequestDetailsComponent, decorators: [{
|
|
22
21
|
type: Component,
|
|
23
22
|
args: [{ selector: 'app-main-request-details', standalone: true, schemas: [CUSTOM_ELEMENTS_SCHEMA], imports: [
|
|
24
23
|
MatExpansionModule,
|
|
25
24
|
MatAccordion,
|
|
26
|
-
MatExpansionPanel
|
|
27
|
-
|
|
28
|
-
], template: "<mat-accordion class=\"primary-accordion main-request-accordion border-top\">\r\n <mat-expansion-panel [expanded]=\"isExpanded || (form?.sections?.length === 1 )\" class=\"mb-3\" hideToggle #requestPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n <h2 class=\"fs-16 fw-medium fc-coral m-0 flex-grow-1\">{{i18n.translate('requestDetailsTitle')}}</h2>\r\n <div class=\"d-inline-flex align-items-center gap-2\" *ngIf=\"!requestPanel.expanded\">\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </div>\r\n <div class=\"d-inline-flex align-items-center gap-2\" *ngIf=\"requestPanel.expanded\">\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n </div>\r\n </mat-expansion-panel-header>\r\n <section class=\"default-box box-shadow p-4\">\r\n <ng-content ></ng-content>\r\n </section>\r\n </mat-expansion-panel>\r\n</mat-accordion>\r\n", styles: [".main-request-accordion{--accordion-height: 65px;--accordion-radius: 0 0 4px 4px;--accordion-shadow: 0 7px 10px rgba(var(--rgb-black), 3%);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--gray);--panel-padding: 0 1.5rem;--panel-body-padding: 0 0 1.5rem;position:relative;z-index:1}@media (max-width: 576px){.main-request-accordion{--accordion-height: 55px;--panel-padding: 0 1rem;--panel-body-padding: 0 1rem 1rem}}.main-request-accordion .inner-accordion{--accordion-height: 44px;--accordion-bc: var(--light-gray);--accordion-bc-active: var(--white);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--light-gray);--panel-body-padding: 0;--accordion-shadow: none;--panel-padding: 0 1.5rem}\n"] }]
|
|
25
|
+
MatExpansionPanel
|
|
26
|
+
], template: "<mat-accordion class=\"primary-accordion main-request-accordion border-top\">\r\n <mat-expansion-panel [expanded]=\"isExpanded || (form?.sections?.length === 1 )\" class=\"mb-3\" hideToggle #requestPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n <h2 class=\"fs-16 fw-medium fc-coral m-0 flex-grow-1\">{{ i18n.translate('requestDetailsTitle') }}</h2>\r\n @if (requestPanel.expanded) {\r\n <div class=\"d-inline-flex align-items-center gap-2\">\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n </div>\r\n } @else {\r\n <div class=\"d-inline-flex align-items-center gap-2\">\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </div>\r\n }\r\n </mat-expansion-panel-header>\r\n <section class=\"default-box box-shadow p-4\">\r\n <ng-content></ng-content>\r\n </section>\r\n </mat-expansion-panel>\r\n</mat-accordion>\r\n", styles: [".main-request-accordion{--accordion-height: 65px;--accordion-radius: 0 0 4px 4px;--accordion-shadow: 0 7px 10px rgba(var(--rgb-black), 3%);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--gray);--panel-padding: 0 1.5rem;--panel-body-padding: 0 0 1.5rem;position:relative;z-index:1}@media (max-width: 576px){.main-request-accordion{--accordion-height: 55px;--panel-padding: 0 1rem;--panel-body-padding: 0 1rem 1rem}}.main-request-accordion .inner-accordion{--accordion-height: 44px;--accordion-bc: var(--light-gray);--accordion-bc-active: var(--white);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--light-gray);--panel-body-padding: 0;--accordion-shadow: none;--panel-padding: 0 1.5rem}\n"] }]
|
|
29
27
|
}], ctorParameters: () => [{ type: i1.CoreI18nService }], propDecorators: { section: [{
|
|
30
28
|
type: Input
|
|
31
29
|
}], lov: [{
|
|
@@ -33,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
33
31
|
}], form: [{
|
|
34
32
|
type: Input
|
|
35
33
|
}] } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1yZXF1ZXN0LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvbWFpbi1yZXF1ZXN0LWRldGFpbHMvbWFpbi1yZXF1ZXN0LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvbWFpbi1yZXF1ZXN0LWRldGFpbHMvbWFpbi1yZXF1ZXN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekUsT0FBTyxFQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7O0FBY2hHLE1BQU0sT0FBTywyQkFBMkI7SUFJbkI7SUFIVixPQUFPLENBQVU7SUFDakIsR0FBRyxDQUFNO0lBQ1QsSUFBSSxDQUFPO0lBQ3BCLFlBQW1CLElBQXFCO1FBQXJCLFNBQUksR0FBSixJQUFJLENBQWlCO0lBQUcsQ0FBQztJQUU1QyxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLE1BQU0sQ0FBQztJQUNqRSxDQUFDO3VHQVJVLDJCQUEyQjsyRkFBM0IsMkJBQTJCLDhJQ2pCeEMsazhCQW1CQSw4ekJEUEksa0JBQWtCOzsyRkFLVCwyQkFBMkI7a0JBWnZDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBR3hCLElBQUksV0FDUCxDQUFDLHNCQUFzQixDQUFDLFdBQ3hCO3dCQUNQLGtCQUFrQjt3QkFDbEIsWUFBWTt3QkFDWixpQkFBaUI7cUJBQ2xCO29GQUdRLE9BQU87c0JBQWYsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb3JlSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEZvcm0sIFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHtNYXRBY2NvcmRpb24sIE1hdEV4cGFuc2lvbk1vZHVsZSwgTWF0RXhwYW5zaW9uUGFuZWx9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1tYWluLXJlcXVlc3QtZGV0YWlscycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21haW4tcmVxdWVzdC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tYWluLXJlcXVlc3QtZGV0YWlscy5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcclxuICAgIE1hdEFjY29yZGlvbixcclxuICAgIE1hdEV4cGFuc2lvblBhbmVsXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFpblJlcXVlc3REZXRhaWxzQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBzZWN0aW9uOiBTZWN0aW9uO1xyXG4gIEBJbnB1dCgpIGxvdjogYW55O1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm07XHJcbiAgY29uc3RydWN0b3IocHVibGljIGkxOG46IENvcmVJMThuU2VydmljZSkge31cclxuXHJcbiAgZ2V0IGlzRXhwYW5kZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5bJ2V4cGFuZFN0YWdlJ10gPT09ICd0cnVlJztcclxuICB9XHJcbn1cclxuIiwiPG1hdC1hY2NvcmRpb24gY2xhc3M9XCJwcmltYXJ5LWFjY29yZGlvbiBtYWluLXJlcXVlc3QtYWNjb3JkaW9uIGJvcmRlci10b3BcIj5cclxuICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwiaXNFeHBhbmRlZCB8fCAoZm9ybT8uc2VjdGlvbnM/Lmxlbmd0aCA9PT0gMSApXCIgY2xhc3M9XCJtYi0zXCIgaGlkZVRvZ2dsZSAjcmVxdWVzdFBhbmVsPVwibWF0RXhwYW5zaW9uUGFuZWxcIj5cclxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgPGgyIGNsYXNzPVwiZnMtMTYgZnctbWVkaXVtIGZjLWNvcmFsIG0tMCBmbGV4LWdyb3ctMVwiPnt7IGkxOG4udHJhbnNsYXRlKCdyZXF1ZXN0RGV0YWlsc1RpdGxlJykgfX08L2gyPlxyXG4gICAgICBAaWYgKHJlcXVlc3RQYW5lbC5leHBhbmRlZCkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgPGRzLWljb24gaWNvbj1cIm1pbnVzXCIgY2xhc3M9XCJmcy0yMCBmYy1kYXJrLWdyYXlcIj48L2RzLWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgPGRzLWljb24gaWNvbj1cInBsdXMtMVwiIGNsYXNzPVwiZnMtMjAgZmMtY29yYWxcIj48L2RzLWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImRlZmF1bHQtYm94IGJveC1zaGFkb3cgcC00XCI+XHJcbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDwvc2VjdGlvbj5cclxuICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbjwvbWF0LWFjY29yZGlvbj5cclxuIl19
|