@fundamental-ngx/platform 0.43.37 → 0.43.39
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/approval-flow/approval-flow-user-list/approval-flow-user-list.component.d.ts +10 -0
- package/button/button.component.d.ts +1 -2
- package/esm2020/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +2 -4
- package/esm2020/approval-flow/approval-flow-user-list/approval-flow-user-list.component.mjs +50 -14
- package/esm2020/button/button.component.mjs +5 -3
- package/esm2020/list/base-list-item.mjs +4 -2
- package/esm2020/list/list.component.mjs +12 -2
- package/esm2020/table/components/table-row/table-row.component.mjs +3 -3
- package/esm2020/table/table.component.mjs +3 -3
- package/esm2020/table-helpers/directives/table-virtual-scroll.directive.mjs +9 -6
- package/esm2020/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +3 -3
- package/fesm2015/fundamental-ngx-platform-approval-flow.mjs +52 -20
- package/fesm2015/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-button.mjs +4 -2
- package/fesm2015/fundamental-ngx-platform-button.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-list.mjs +15 -2
- package/fesm2015/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-table-helpers.mjs +8 -5
- package/fesm2015/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-table.mjs +4 -4
- package/fesm2015/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-value-help-dialog.mjs +2 -2
- package/fesm2015/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-approval-flow.mjs +50 -18
- package/fesm2020/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-button.mjs +4 -2
- package/fesm2020/fundamental-ngx-platform-button.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-list.mjs +14 -2
- package/fesm2020/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-table-helpers.mjs +8 -5
- package/fesm2020/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-table.mjs +4 -4
- package/fesm2020/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-value-help-dialog.mjs +2 -2
- package/fesm2020/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fundamental-ngx-platform-v0.43.39.tgz +0 -0
- package/list/list.component.d.ts +6 -0
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/fundamental-ngx-platform-v0.43.37.tgz +0 -0
|
@@ -32,8 +32,14 @@ export declare class ApprovalFlowUserListComponent implements AfterViewInit, OnC
|
|
|
32
32
|
/** @hidden */
|
|
33
33
|
_displayUsers: ApprovalUser[];
|
|
34
34
|
/** @hidden */
|
|
35
|
+
_allSelectedUsers: ApprovalUser[];
|
|
36
|
+
/** @hidden */
|
|
35
37
|
private _intervalID?;
|
|
36
38
|
/** @hidden */
|
|
39
|
+
private _destroyed$;
|
|
40
|
+
/** @hidden */
|
|
41
|
+
private _dontCallSelection;
|
|
42
|
+
/** @hidden */
|
|
37
43
|
constructor(_cdr: ChangeDetectorRef);
|
|
38
44
|
/** @hidden */
|
|
39
45
|
ngAfterViewInit(): void;
|
|
@@ -51,6 +57,10 @@ export declare class ApprovalFlowUserListComponent implements AfterViewInit, OnC
|
|
|
51
57
|
private _userCollectorIntervalFn;
|
|
52
58
|
/** @hidden */
|
|
53
59
|
private _killInterval;
|
|
60
|
+
/** @hidden */
|
|
61
|
+
private _listenToListItemChange;
|
|
62
|
+
/** @hidden */
|
|
63
|
+
private _selectItems;
|
|
54
64
|
static ɵfac: i0.ɵɵFactoryDeclaration<ApprovalFlowUserListComponent, never>;
|
|
55
65
|
static ɵcmp: i0.ɵɵComponentDeclaration<ApprovalFlowUserListComponent, "fdp-approval-flow-user-list", never, { "users": "users"; "selectedUsers": "selectedUsers"; "isSelectable": "isSelectable"; }, { "onUserClick": "onUserClick"; "onSelectionChange": "onSelectionChange"; }, never, never, false, never>;
|
|
56
66
|
}
|
|
@@ -25,8 +25,7 @@ export declare class ButtonComponent extends BaseComponent implements AfterViewI
|
|
|
25
25
|
buttonType: ButtonType;
|
|
26
26
|
/** Whether button is in toggled state. */
|
|
27
27
|
toggled: Nullable<boolean>;
|
|
28
|
-
/** arialabel, tooltip for
|
|
29
|
-
* for acccesiblity of the element */
|
|
28
|
+
/** arialabel, tooltip for button, intended to be used when the button only contains an icon */
|
|
30
29
|
title: Nullable<string>;
|
|
31
30
|
/** @deprecated use toggled input property instead
|
|
32
31
|
* aria-selected for acccesiblity to the native HTML button
|
|
@@ -160,9 +160,7 @@ export class ApprovalFlowAddNodeComponent {
|
|
|
160
160
|
}
|
|
161
161
|
/** @hidden */
|
|
162
162
|
_exitSelectMode() {
|
|
163
|
-
|
|
164
|
-
this._selectedApprovers = [];
|
|
165
|
-
}
|
|
163
|
+
this._selectedApprovers = this._data.node?.approvers?.length ? [...this._data.node.approvers] : [];
|
|
166
164
|
if (!this._data.isEdit && !this._data.node?.approvalTeamId) {
|
|
167
165
|
this.viewService.resetTeam();
|
|
168
166
|
}
|
|
@@ -276,4 +274,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
276
274
|
class: 'fdp-approval-flow-dialog fdp-approval-flow-add-node'
|
|
277
275
|
}, template: "<fd-dialog fdCompact>\n <fd-dialog-header [class.show-search]=\"_selectMode && !_userToShowDetails\">\n <ng-template fdkTemplate=\"header\">\n <p>\n <ng-container *ngIf=\"!_selectMode && !_data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApprovers' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"!_selectMode && _data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderEditApprover' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isSelectTeamMode\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApproverTeam' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitTeamMembersMode()\"></fd-icon>\n {{ viewService.team?.name ?? '' }} ({{ viewService.team?.members?.length ?? 0 }})\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitUserDetailsMode()\"></fd-icon>\n {{ 'platformApprovalFlow.addNodeDialogHeaderDetail' | fdTranslate }}\n </ng-container>\n </p>\n\n <fdp-search-field\n *ngIf=\"_selectMode && !_userToShowDetails\"\n [placeholder]=\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\"\n [suggestions]=\"[]\"\n (inputChange)=\"_onSearchStringChange($event.text)\"\n ></fdp-search-field>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body [class.fd-dialog__body--auto-height]=\"viewService.isUserDetailsMode\">\n <ng-container *ngIf=\"!_selectMode\">\n <div fd-form-item *ngIf=\"_data.showNodeTypeSelect\">\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogNodeType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_nodeType\">\n <ng-container *ngFor=\"let option of _nodeTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_nodeTypes.SERIAL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeSerial' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_nodeTypes.PARALLEL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeParallel' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogApproverType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_approverType\">\n <ng-container *ngFor=\"let option of _approverTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_approverTypes.SINGLE_USER\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeUser' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.ANYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.EVERYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogUserOrTeam' | fdTranslate }}</label>\n\n <fd-multi-input\n *ngIf=\"_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedApprovers\"\n [(ngModel)]=\"_selectedApprovers\"\n [displayFn]=\"_displayUserFn\"\n (openChange)=\"_goToSelectMode()\"\n (selectedChange)=\"_setSelectedApprovers($event)\"\n ></fd-multi-input>\n\n <fd-multi-input\n *ngIf=\"!_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedTeamArray\"\n [(ngModel)]=\"_selectedTeamArray\"\n [displayFn]=\"_displayTeamFn\"\n (openChange)=\"_goToSelectMode()\"\n ></fd-multi-input>\n </div>\n\n <div *ngIf=\"_nodeType === _nodeTypes.PARALLEL\" fd-form-item>\n <fd-checkbox [(ngModel)]=\"_addToNextSerial\">\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\n </fd-checkbox>\n </div>\n\n <div *ngIf=\"_checkDueDate\" fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogDueDate' | fdTranslate }}</label>\n\n <fd-date-picker type=\"single\" [state]=\"!this._dueDate ? 'error' : null\" [(ngModel)]=\"_dueDate\">\n </fd-date-picker>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fdp-approval-flow-team-list\n *ngIf=\"!_data.teamDataSource.isDataLoading; else loadingTpl\"\n [isRtl]=\"_data.rtl\"\n [teams]=\"_teams\"\n [selectedTeamId]=\"_selectedTeam?.id\"\n (onTeamClick)=\"_viewTeamMembers($event)\"\n (onTeamRadioClick)=\"_setSelectedTeam($event)\"\n ></fdp-approval-flow-team-list>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isTeamMembersMode\">\n <fdp-approval-flow-user-list\n *ngIf=\"viewService.isSelectUserMode || !_data.userDataSource.isDataLoading; else loadingTpl\"\n [users]=\"viewService.isSelectUserMode ? _approvers : _filteredTeamMembers\"\n [isSelectable]=\"viewService.isSelectUserMode\"\n [selectedUsers]=\"_selectedApprovers\"\n (onUserClick)=\"_seeUserDetails($event)\"\n (onSelectionChange)=\"_selectedApprovers = $event\"\n ></fdp-approval-flow-user-list>\n </ng-container>\n\n <fdp-approval-flow-user-details\n *ngIf=\"viewService.isUserDetailsMode && _userToShowDetails\"\n [user]=\"_userToShowDetails\"\n [detailsTemplate]=\"_data.userDetailsTemplate\"\n [details]=\"_userToShowDetailsData$\"\n ></fdp-approval-flow-user-details>\n </ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <ng-container *ngIf=\"!_selectMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-dialog-decisive-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\"\n [disabled]=\"_isMainSubmitButtonDisabled\"\n (click)=\"_submit()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fd-dialog-decisive-button\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectUserMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedApprovers.length\"\n (click)=\"_confirmSelectedApprovers()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedTeam && !viewService.team\"\n (click)=\"_confirmSelectedTeam()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitTeamMembersMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitUserDetailsMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n </ng-container>\n </fd-dialog-footer>\n</fd-dialog>\n\n<ng-template #loadingTpl>\n <fd-busy-indicator [loading]=\"true\" [block]=\"true\"> </fd-busy-indicator>\n</ng-template>\n", styles: [".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\n", ".fdp-approval-flow-add-node .fd-dialog__body{width:20rem;height:27rem}.fdp-approval-flow-add-node .fd-dialog__body--auto-height{height:auto}\n"] }]
|
|
278
276
|
}], ctorParameters: function () { return [{ type: i1.DialogRef }, { type: i2.ApprovalFlowAddNodeViewService }, { type: i0.ChangeDetectorRef }]; } });
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWFkZC1ub2RlL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFJVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsVUFBVSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDN0csT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkJuRixNQUFNLENBQU4sSUFBWSx3QkFHWDtBQUhELFdBQVksd0JBQXdCO0lBQ2hDLDZDQUFpQixDQUFBO0lBQ2pCLGlEQUFxQixDQUFBO0FBQ3pCLENBQUMsRUFIVyx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBR25DO0FBRUQsTUFBTSxDQUFOLElBQVksNEJBSVg7QUFKRCxXQUFZLDRCQUE0QjtJQUNwQywyREFBMkIsQ0FBQTtJQUMzQixpREFBaUIsQ0FBQTtJQUNq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QUcsS0FBSyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDOzt5SEFyVFEsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsbUpDbkV6QyxndlhBMlBBOzJGRHhMYSw0QkFBNEI7a0JBVnhDLFNBQVM7K0JBQ0ksNEJBQTRCLGlCQUd2QixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNGLEtBQUssRUFBRSxxREFBcUQ7cUJBQy9EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGZERhdGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5cbmltcG9ydCB7IEFwcHJvdmFsRmxvd0FkZE5vZGVWaWV3U2VydmljZSwgVklFV19NT0RFUyB9IGZyb20gJy4uL3NlcnZpY2VzL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IGRpc3BsYXlUZWFtRm4sIGRpc3BsYXlVc2VyRm4sIGZpbHRlckJ5TmFtZSwgdHJhY2tCeUZuIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBBcHByb3ZhbE5vZGUsIEFwcHJvdmFsVGVhbSwgQXBwcm92YWxVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dUZWFtRGF0YVNvdXJjZSwgQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBBZGROb2RlRGlhbG9nUmVmRGF0YSB7XG4gICAgaXNFZGl0PzogYm9vbGVhbjtcbiAgICBzaG93Tm9kZVR5cGVTZWxlY3Q/OiBib29sZWFuO1xuICAgIG5vZGU/OiBBcHByb3ZhbE5vZGU7XG4gICAgbm9kZVRhcmdldD86IEFwcHJvdmFsRmxvd05vZGVUYXJnZXQ7XG4gICAgdGVhbURhdGFTb3VyY2U6IEFwcHJvdmFsRmxvd1RlYW1EYXRhU291cmNlPEFwcHJvdmFsVGVhbT47XG4gICAgdXNlckRhdGFTb3VyY2U6IEFwcHJvdmFsRmxvd1VzZXJEYXRhU291cmNlPEFwcHJvdmFsVXNlcj47XG4gICAgdXNlckRldGFpbHNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBjaGVja0R1ZURhdGU/OiBib29sZWFuO1xuICAgIHJ0bDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGROb2RlRGlhbG9nRm9ybURhdGEge1xuICAgIG5vZGU6IEFwcHJvdmFsTm9kZTtcbiAgICBub2RlVHlwZTogQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTO1xuICAgIHRvTmV4dFNlcmlhbDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQXBwcm92YWxGbG93TmV3Tm9kZVBsYWNlbWVudCA9ICdiZWZvcmUnIHwgJ2FmdGVyJyB8ICdiZWZvcmUtYWxsJyB8ICdhZnRlci1hbGwnO1xuXG5leHBvcnQgdHlwZSBBcHByb3ZhbEZsb3dOb2RlVGFyZ2V0ID0gQXBwcm92YWxGbG93TmV3Tm9kZVBsYWNlbWVudCB8ICdlbXB0eScgfCAncGFyYWxsZWwnO1xuXG5leHBvcnQgZW51bSBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVMge1xuICAgIFNFUklBTCA9ICdTRVJJQUwnLFxuICAgIFBBUkFMTEVMID0gJ1BBUkFMTEVMJ1xufVxuXG5leHBvcnQgZW51bSBBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTIHtcbiAgICBTSU5HTEVfVVNFUiA9ICdTSU5HTEVfVVNFUicsXG4gICAgQU5ZT05FID0gJ0FOWU9ORScsXG4gICAgRVZFUllPTkUgPSAnRVZFUllPTkUnXG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEFwcHJvdmFsRmxvd0FkZE5vZGUgY29tcG9uZW50IGlzIGRlcHJpY2F0ZWQgc2luY2UgdmVyc2lvbiAwLjQwLjBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtYXBwcm92YWwtZmxvdy1hZGQtbm9kZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuLi9zdHlsZXMvYXBwcm92YWwtZmxvdy1kaWFsb2cuc2NzcycsICcuL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZHAtYXBwcm92YWwtZmxvdy1kaWFsb2cgZmRwLWFwcHJvdmFsLWZsb3ctYWRkLW5vZGUnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dBZGROb2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX25vZGVUeXBlID0gQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTLlNFUklBTDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX25vZGVUeXBlcyA9IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX25vZGVUeXBlc0FycmF5ID0gT2JqZWN0LmtleXMoQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FwcHJvdmVyVHlwZSA9IEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMuU0lOR0xFX1VTRVI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlclR5cGVzID0gQVBQUk9WQUxfRkxPV19BUFBST1ZFUl9UWVBFUztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FwcHJvdmVyVHlwZXNBcnJheSA9IE9iamVjdC5rZXlzKEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZHVlRGF0ZSA9IEZkRGF0ZS5nZXROb3coKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdE1vZGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FwcHJvdmVyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RlYW1zOiBBcHByb3ZhbFRlYW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRBcHByb3ZlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZFRlYW06IE51bGxhYmxlPEFwcHJvdmFsVGVhbT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZFRlYW1BcnJheTogQXBwcm92YWxUZWFtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGVkVGVhbU1lbWJlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9maWx0ZXJlZFRlYW1NZW1iZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXNlclRvU2hvd0RldGFpbHM/OiBBcHByb3ZhbFVzZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF91c2VyVG9TaG93RGV0YWlsc0RhdGEkPzogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2hlY2tEdWVEYXRlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5VXNlckZuID0gZGlzcGxheVVzZXJGbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXlUZWFtRm4gPSBkaXNwbGF5VGVhbUZuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdHJhY2tCeUZuID0gdHJhY2tCeUZuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYWRkVG9OZXh0U2VyaWFsID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZpZXdDaGFuZ2VTdWI6IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGF0YVNvdXJjZVN1YjogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogRGlhbG9nUmVmPEFkZE5vZGVEaWFsb2dSZWZEYXRhPixcbiAgICAgICAgcHVibGljIHZpZXdTZXJ2aWNlOiBBcHByb3ZhbEZsb3dBZGROb2RlVmlld1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfZGF0YSgpOiBBZGROb2RlRGlhbG9nUmVmRGF0YSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1JlZi5kYXRhO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9pc1NpbmdsZVVzZXJNb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwcm92ZXJUeXBlID09PSB0aGlzLl9hcHByb3ZlclR5cGVzLlNJTkdMRV9VU0VSO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9pc01haW5TdWJtaXRCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzID0gdGhpcy5faXNTaW5nbGVVc2VyTW9kZSA/IHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzIDogdGhpcy5fc2VsZWN0ZWRUZWFtQXJyYXk7XG5cbiAgICAgICAgcmV0dXJuICFhcHByb3ZlcnMubGVuZ3RoIHx8ICh0aGlzLl9jaGVja0R1ZURhdGUgJiYgIXRoaXMuX2R1ZURhdGUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9oZWFkZXJBcnJvd0dseXBoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnbmF2aWdhdGlvbi0nICsgKHRoaXMuX2RhdGEucnRsID8gJ3JpZ2h0JyA6ICdsZWZ0JykgKyAnLWFycm93JztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyB0cmlnZ2VyaW5nIGluaXRpYWwgbG9hZGluZyBvZiBkYXRhIGluIGRhdGEgc291cmNlcy5cbiAgICAgICAgdGhpcy5fZGF0YS50ZWFtRGF0YVNvdXJjZS5tYXRjaCgpO1xuICAgICAgICB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLm1hdGNoKCk7XG4gICAgICAgIGNvbnN0IHRlYW1zJCA9IHRoaXMuX2RhdGEudGVhbURhdGFTb3VyY2Uub3BlbigpO1xuICAgICAgICBjb25zdCBhcHByb3ZlcnMkID0gdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5vcGVuKCk7XG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2VTdWIgPSBjb21iaW5lTGF0ZXN0KFt0ZWFtcyQsIGFwcHJvdmVycyRdKS5zdWJzY3JpYmUoKFt0ZWFtcywgYXBwcm92ZXJzXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdGVhbXMgPSB0ZWFtcztcblxuICAgICAgICAgICAgdGhpcy5fYXBwcm92ZXJzID0gYXBwcm92ZXJzO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fZGF0YS5pc0VkaXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGVja0R1ZURhdGUgPSAhIXRoaXMuX2RhdGEuY2hlY2tEdWVEYXRlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoZWNrRHVlRGF0ZSAmJiB0aGlzLl9kYXRhLm5vZGU/LmR1ZURhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZHVlRGF0ZSA9IEZkRGF0ZS5nZXRGZERhdGVCeURhdGUobmV3IERhdGUodGhpcy5fZGF0YS5ub2RlLmR1ZURhdGUpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEFwcHJvdmVycyA9IFsuLi4odGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZlcnMgPz8gW10pXTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRlYW0gPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmFsVGVhbUlkICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RlYW1zLmZpbmQoKHQpID0+IHQuaWQgPT09IHRoaXMuX2RhdGEubm9kZT8uYXBwcm92YWxUZWFtSWQpO1xuICAgICAgICAgICAgICAgIGlmICh0ZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2VsZWN0VGVhbSh0ZWFtKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW0gPSB0ZWFtO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1BcnJheSA9IFt0ZWFtXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYXBwcm92ZXJUeXBlID0gdGhpcy5fZGF0YS5ub2RlPy5pc0V2ZXJ5b25lQXBwcm92YWxOZWVkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5fYXBwcm92ZXJUeXBlcy5FVkVSWU9ORVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9hcHByb3ZlclR5cGVzLkFOWU9ORTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl92aWV3Q2hhbmdlU3ViID0gdGhpcy52aWV3U2VydmljZS5vblZpZXdDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX29uU2VhcmNoU3RyaW5nQ2hhbmdlKCcnKTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5fZGF0YS5ub2RlVGFyZ2V0KSB7XG4gICAgICAgICAgICBjYXNlICdlbXB0eSc6XG4gICAgICAgICAgICBjYXNlICdiZWZvcmUnOlxuICAgICAgICAgICAgY2FzZSAnYWZ0ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMuX25vZGVUeXBlID0gdGhpcy5fbm9kZVR5cGVzLlNFUklBTDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3BhcmFsbGVsJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9ub2RlVHlwZSA9IHRoaXMuX25vZGVUeXBlcy5QQVJBTExFTDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZpZXdDaGFuZ2VTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuX2RhdGEudGVhbURhdGFTb3VyY2UuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9nb1RvU2VsZWN0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0TW9kZSA9IHRydWU7XG5cbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50Vmlldyh0aGlzLl9pc1NpbmdsZVVzZXJNb2RlID8gVklFV19NT0RFUy5TRUxFQ1RfVVNFUiA6IFZJRVdfTU9ERVMuU0VMRUNUX1RFQU0pO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2V4aXRTZWxlY3RNb2RlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMubGVuZ3RoICYmICF0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX2RhdGEuaXNFZGl0ICYmICF0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmFsVGVhbUlkKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnJlc2V0VGVhbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0TW9kZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnJlc2V0VmlldygpO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldFNlbGVjdGVkQXBwcm92ZXJzKGFwcHJvdmVyczogQXBwcm92YWxVc2VyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMgPSBhcHByb3ZlcnM7XG5cbiAgICAgICAgdGhpcy5fY29uZmlybVNlbGVjdGVkQXBwcm92ZXJzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29uZmlybVNlbGVjdGVkQXBwcm92ZXJzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2RhdGEubm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RhdGEubm9kZS5hcHByb3ZlcnMgPSB0aGlzLl9zZWxlY3RlZEFwcHJvdmVycztcbiAgICAgICAgdGhpcy5fZGF0YS5ub2RlLnZhcmlvdXNUZWFtcyA9IHRoaXMuX2RhdGEubm9kZS5hcHByb3ZlcnMuc29tZShcbiAgICAgICAgICAgICh1KSA9PiB1LnRlYW1JZCAhPT0gdGhpcy5fZGF0YS5ub2RlIS5hcHByb3ZlcnNbMF0udGVhbUlkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2RhdGEubm9kZS5kZXNjcmlwdGlvbiA9IHRoaXMuX2RhdGEubm9kZS52YXJpb3VzVGVhbXMgPyAnJyA6IHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzWzBdPy5kZXNjcmlwdGlvbjtcblxuICAgICAgICBkZWxldGUgdGhpcy5fZGF0YS5ub2RlLmFwcHJvdmFsVGVhbUlkO1xuICAgICAgICBkZWxldGUgdGhpcy5fZGF0YS5ub2RlLmlzRXZlcnlvbmVBcHByb3ZhbE5lZWRlZDtcblxuICAgICAgICB0aGlzLl9leGl0U2VsZWN0TW9kZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldFNlbGVjdGVkVGVhbSh0ZWFtOiBBcHByb3ZhbFRlYW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZWxlY3RUZWFtKHRlYW0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbmZpcm1TZWxlY3RlZFRlYW0oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy52aWV3U2VydmljZS50ZWFtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtID0gdGhpcy52aWV3U2VydmljZS50ZWFtO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1BcnJheSA9IFt0aGlzLnZpZXdTZXJ2aWNlLnRlYW1dO1xuXG4gICAgICAgIGlmICh0aGlzLl9kYXRhLm5vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS52YXJpb3VzVGVhbXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5hcHByb3ZhbFRlYW1JZCA9IHRoaXMudmlld1NlcnZpY2UudGVhbS5pZDtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5kZXNjcmlwdGlvbiA9IHRoaXMudmlld1NlcnZpY2UudGVhbS5uYW1lO1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmlzRXZlcnlvbmVBcHByb3ZhbE5lZWRlZCA9IHRoaXMuX2FwcHJvdmVyVHlwZSA9PT0gQVBQUk9WQUxfRkxPV19BUFBST1ZFUl9UWVBFUy5FVkVSWU9ORTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2V4aXRTZWxlY3RNb2RlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VlVXNlckRldGFpbHModXNlcjogQXBwcm92YWxVc2VyKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcoVklFV19NT0RFUy5VU0VSX0RFVEFJTFMpO1xuXG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzID0gdXNlcjtcbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHNEYXRhJCA9IHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2UuZGF0YVByb3ZpZGVyLmdldE9uZShuZXcgTWFwKFtbJ2lkJywgdXNlci5pZF1dKSk7XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leGl0VXNlckRldGFpbHNNb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KHRoaXMudmlld1NlcnZpY2UudGVhbSA/IFZJRVdfTU9ERVMuVklFV19URUFNX01FTUJFUlMgOiBWSUVXX01PREVTLlNFTEVDVF9VU0VSKTtcblxuICAgICAgICB0aGlzLl91c2VyVG9TaG93RGV0YWlscyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHNEYXRhJCA9IHVuZGVmaW5lZDtcblxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ZpZXdUZWFtTWVtYmVycyh0ZWFtOiBBcHByb3ZhbFRlYW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZWxlY3RUZWFtKHRlYW0pO1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KFZJRVdfTU9ERVMuVklFV19URUFNX01FTUJFUlMpO1xuXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbU1lbWJlcnMgPSB0ZWFtLm1lbWJlcnM7XG5cbiAgICAgICAgdGhpcy5fc2V0RmlsdGVyZWRUZWFtTWVtYmVycyh0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzKTsgLy8gYXBwbHlpbmcgbG9jYWwgZmlsdGVyaW5nXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhpdFRlYW1NZW1iZXJzTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50VmlldyhWSUVXX01PREVTLlNFTEVDVF9URUFNKTtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5yZXNldFRlYW0oKTtcblxuICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzID0gW107XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zdWJtaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhLm5vZGUgJiYgIXRoaXMuX2lzU2luZ2xlVXNlck1vZGUgJiYgdGhpcy5fc2VsZWN0ZWRUZWFtKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuYXBwcm92ZXJzID0gWy4uLnRoaXMuX3NlbGVjdGVkVGVhbS5tZW1iZXJzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kYXRhLm5vZGUgJiYgdGhpcy5fY2hlY2tEdWVEYXRlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuZHVlRGF0ZSA9IHRoaXMuX2R1ZURhdGUudG9EYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAgICAgICBub2RlOiB0aGlzLl9kYXRhLm5vZGUsXG4gICAgICAgICAgICBub2RlVHlwZTogdGhpcy5fbm9kZVR5cGUsXG4gICAgICAgICAgICB0b05leHRTZXJpYWw6IHRoaXMuX2FkZFRvTmV4dFNlcmlhbFxuICAgICAgICB9IGFzIEFkZE5vZGVEaWFsb2dGb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25TZWFyY2hTdHJpbmdDaGFuZ2Uoc2VhcmNoU3RyaW5nID0gJycpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IE1hcChbWydxdWVyeScsIHNlYXJjaFN0cmluZ11dKTtcblxuICAgICAgICBpZiAodGhpcy52aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLm1hdGNoKHBhcmFtcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWV3U2VydmljZS5pc1NlbGVjdFRlYW1Nb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLnRlYW1EYXRhU291cmNlLm1hdGNoKHBhcmFtcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0RmlsdGVyZWRUZWFtTWVtYmVycyh0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzLmZpbHRlcigodXNlcikgPT4gZmlsdGVyQnlOYW1lKHVzZXIsIHNlYXJjaFN0cmluZykpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldEZpbHRlcmVkVGVhbU1lbWJlcnModXNlcnM6IEFwcHJvdmFsVXNlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZpbHRlcmVkVGVhbU1lbWJlcnMgPSBbLi4udXNlcnNdO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cbiIsIjxmZC1kaWFsb2cgZmRDb21wYWN0PlxuICAgIDxmZC1kaWFsb2ctaGVhZGVyIFtjbGFzcy5zaG93LXNlYXJjaF09XCJfc2VsZWN0TW9kZSAmJiAhX3VzZXJUb1Nob3dEZXRhaWxzXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBmZGtUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFfc2VsZWN0TW9kZSAmJiAhX2RhdGEuaXNFZGl0XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nSGVhZGVyQWRkQXBwcm92ZXJzJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIV9zZWxlY3RNb2RlICYmIF9kYXRhLmlzRWRpdFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0hlYWRlckVkaXRBcHByb3ZlcicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUgfHwgdmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0hlYWRlckFkZEFwcHJvdmVyVGVhbScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTZXJ2aWNlLmlzVGVhbU1lbWJlcnNNb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCJfaGVhZGVyQXJyb3dHbHlwaFwiIChjbGljayk9XCJfZXhpdFRlYW1NZW1iZXJzTW9kZSgpXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICB7eyB2aWV3U2VydmljZS50ZWFtPy5uYW1lID8/ICcnIH19ICh7eyB2aWV3U2VydmljZS50ZWFtPy5tZW1iZXJzPy5sZW5ndGggPz8gMCB9fSlcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwiX2hlYWRlckFycm93R2x5cGhcIiAoY2xpY2spPVwiX2V4aXRVc2VyRGV0YWlsc01vZGUoKVwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dIZWFkZXJEZXRhaWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgPGZkcC1zZWFyY2gtZmllbGRcbiAgICAgICAgICAgICAgICAqbmdJZj1cIl9zZWxlY3RNb2RlICYmICFfdXNlclRvU2hvd0RldGFpbHNcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZVNlYXJjaFBsYWNlaG9sZGVyJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbc3VnZ2VzdGlvbnNdPVwiW11cIlxuICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZSk9XCJfb25TZWFyY2hTdHJpbmdDaGFuZ2UoJGV2ZW50LnRleHQpXCJcbiAgICAgICAgICAgID48L2ZkcC1zZWFyY2gtZmllbGQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuXG4gICAgPGZkLWRpYWxvZy1ib2R5IFtjbGFzcy5mZC1kaWFsb2dfX2JvZHktLWF1dG8taGVpZ2h0XT1cInZpZXdTZXJ2aWNlLmlzVXNlckRldGFpbHNNb2RlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhX3NlbGVjdE1vZGVcIj5cbiAgICAgICAgICAgIDxkaXYgZmQtZm9ybS1pdGVtICpuZ0lmPVwiX2RhdGEuc2hvd05vZGVUeXBlU2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nTm9kZVR5cGUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAgICAgICAgPGZkLXNlbGVjdCBbKHZhbHVlKV09XCJfbm9kZVR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIF9ub2RlVHlwZXNBcnJheVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiAqbmdTd2l0Y2hDYXNlPVwiX25vZGVUeXBlcy5TRVJJQUxcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nTm9kZVR5cGVTZXJpYWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiAqbmdTd2l0Y2hDYXNlPVwiX25vZGVUeXBlcy5QQVJBTExFTFwiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dOb2RlVHlwZVBhcmFsbGVsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2ZkLXNlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGZkLWZvcm0taXRlbT5cbiAgICAgICAgICAgICAgICA8bGFiZWwgZmQtZm9ybS1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAgICAgICAgPGZkLXNlbGVjdCBbKHZhbHVlKV09XCJfYXBwcm92ZXJUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBfYXBwcm92ZXJUeXBlc0FycmF5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uICpuZ1N3aXRjaENhc2U9XCJfYXBwcm92ZXJUeXBlcy5TSU5HTEVfVVNFUlwiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGVVc2VyJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gKm5nU3dpdGNoQ2FzZT1cIl9hcHByb3ZlclR5cGVzLkFOWU9ORVwiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGVUZWFtQW55b25lJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gKm5nU3dpdGNoQ2FzZT1cIl9hcHByb3ZlclR5cGVzLkVWRVJZT05FXCIgW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0FwcHJvdmVyVHlwZVRlYW1FdmVyeW9uZScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9mZC1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+e3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dVc2VyT3JUZWFtJyB8IGZkVHJhbnNsYXRlIH19PC9sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxmZC1tdWx0aS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIl9pc1NpbmdsZVVzZXJNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dBbGxCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbZHJvcGRvd25WYWx1ZXNdPVwiX3NlbGVjdGVkQXBwcm92ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJfc2VsZWN0ZWRBcHByb3ZlcnNcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZuXT1cIl9kaXNwbGF5VXNlckZuXCJcbiAgICAgICAgICAgICAgICAgICAgKG9wZW5DaGFuZ2UpPVwiX2dvVG9TZWxlY3RNb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiX3NldFNlbGVjdGVkQXBwcm92ZXJzKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2ZkLW11bHRpLWlucHV0PlxuXG4gICAgICAgICAgICAgICAgPGZkLW11bHRpLWlucHV0XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIV9pc1NpbmdsZVVzZXJNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dBbGxCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbZHJvcGRvd25WYWx1ZXNdPVwiX3NlbGVjdGVkVGVhbUFycmF5XCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJfc2VsZWN0ZWRUZWFtQXJyYXlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZuXT1cIl9kaXNwbGF5VGVhbUZuXCJcbiAgICAgICAgICAgICAgICAgICAgKG9wZW5DaGFuZ2UpPVwiX2dvVG9TZWxlY3RNb2RlKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLW11bHRpLWlucHV0PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJfbm9kZVR5cGUgPT09IF9ub2RlVHlwZXMuUEFSQUxMRUxcIiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGZkLWNoZWNrYm94IFsobmdNb2RlbCldPVwiX2FkZFRvTmV4dFNlcmlhbFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0FkZFRvTmV4dCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIl9jaGVja0R1ZURhdGVcIiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+e3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dEdWVEYXRlJyB8IGZkVHJhbnNsYXRlIH19PC9sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxmZC1kYXRlLXBpY2tlciB0eXBlPVwic2luZ2xlXCIgW3N0YXRlXT1cIiF0aGlzLl9kdWVEYXRlID8gJ2Vycm9yJyA6IG51bGxcIiBbKG5nTW9kZWwpXT1cIl9kdWVEYXRlXCI+XG4gICAgICAgICAgICAgICAgPC9mZC1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3NlbGVjdE1vZGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1NlbGVjdFRlYW1Nb2RlXCI+XG4gICAgICAgICAgICAgICAgPGZkcC1hcHByb3ZhbC1mbG93LXRlYW0tbGlzdFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFfZGF0YS50ZWFtRGF0YVNvdXJjZS5pc0RhdGFMb2FkaW5nOyBlbHNlIGxvYWRpbmdUcGxcIlxuICAgICAgICAgICAgICAgICAgICBbaXNSdGxdPVwiX2RhdGEucnRsXCJcbiAgICAgICAgICAgICAgICAgICAgW3RlYW1zXT1cIl90ZWFtc1wiXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFRlYW1JZF09XCJfc2VsZWN0ZWRUZWFtPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgIChvblRlYW1DbGljayk9XCJfdmlld1RlYW1NZW1iZXJzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAob25UZWFtUmFkaW9DbGljayk9XCJfc2V0U2VsZWN0ZWRUZWFtKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2ZkcC1hcHByb3ZhbC1mbG93LXRlYW0tbGlzdD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSB8fCB2aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZHAtYXBwcm92YWwtZmxvdy11c2VyLWxpc3RcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlIHx8ICFfZGF0YS51c2VyRGF0YVNvdXJjZS5pc0RhdGFMb2FkaW5nOyBlbHNlIGxvYWRpbmdUcGxcIlxuICAgICAgICAgICAgICAgICAgICBbdXNlcnNdPVwidmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSA/IF9hcHByb3ZlcnMgOiBfZmlsdGVyZWRUZWFtTWVtYmVyc1wiXG4gICAgICAgICAgICAgICAgICAgIFtpc1NlbGVjdGFibGVdPVwidmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFVzZXJzXT1cIl9zZWxlY3RlZEFwcHJvdmVyc1wiXG4gICAgICAgICAgICAgICAgICAgIChvblVzZXJDbGljayk9XCJfc2VlVXNlckRldGFpbHMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChvblNlbGVjdGlvbkNoYW5nZSk9XCJfc2VsZWN0ZWRBcHByb3ZlcnMgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICAgID48L2ZkcC1hcHByb3ZhbC1mbG93LXVzZXItbGlzdD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8ZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZSAmJiBfdXNlclRvU2hvd0RldGFpbHNcIlxuICAgICAgICAgICAgICAgIFt1c2VyXT1cIl91c2VyVG9TaG93RGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgW2RldGFpbHNUZW1wbGF0ZV09XCJfZGF0YS51c2VyRGV0YWlsc1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbZGV0YWlsc109XCJfdXNlclRvU2hvd0RldGFpbHNEYXRhJFwiXG4gICAgICAgICAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHM+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZmQtZGlhbG9nLWJvZHk+XG5cbiAgICA8ZmQtZGlhbG9nLWZvb3Rlcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFfc2VsZWN0TW9kZVwiPlxuICAgICAgICAgICAgPGZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkLWRpYWxvZy1kZWNpc2l2ZS1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUFkZEFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIl9pc01haW5TdWJtaXRCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfc3VibWl0KClcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG5cbiAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgZmQtZGlhbG9nLWRlY2lzaXZlLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUNhbmNlbEFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRpYWxvZ1JlZi5jbG9zZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3NlbGVjdE1vZGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlXCI+XG4gICAgICAgICAgICAgICAgPGZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlU2VsZWN0QXBwcm92ZXJBY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIV9zZWxlY3RlZEFwcHJvdmVycy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9jb25maXJtU2VsZWN0ZWRBcHByb3ZlcnMoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPGZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQ2FuY2VsQXBwcm92ZXJTZWxlY3Rpb25BY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2V4aXRTZWxlY3RNb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZVNlbGVjdEFwcHJvdmVyQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFfc2VsZWN0ZWRUZWFtICYmICF2aWV3U2VydmljZS50ZWFtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfY29uZmlybVNlbGVjdGVkVGVhbSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8ZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVDYW5jZWxBcHByb3ZlclNlbGVjdGlvbkFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFNlbGVjdE1vZGUoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUFwcHJvdmVyT3JUZWFtRGV0YWlsc0Nsb3NlQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0VGVhbU1lbWJlcnNNb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNVc2VyRGV0YWlsc01vZGVcIj5cbiAgICAgICAgICAgICAgICA8ZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVBcHByb3Zlck9yVGVhbURldGFpbHNDbG9zZUFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFVzZXJEZXRhaWxzTW9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxuPC9mZC1kaWFsb2c+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RwbD5cbiAgICA8ZmQtYnVzeS1pbmRpY2F0b3IgW2xvYWRpbmddPVwidHJ1ZVwiIFtibG9ja109XCJ0cnVlXCI+IDwvZmQtYnVzeS1pbmRpY2F0b3I+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
277
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWFkZC1ub2RlL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFJVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsVUFBVSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDN0csT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkJuRixNQUFNLENBQU4sSUFBWSx3QkFHWDtBQUhELFdBQVksd0JBQXdCO0lBQ2hDLDZDQUFpQixDQUFBO0lBQ2pCLGlEQUFxQixDQUFBO0FBQ3pCLENBQUMsRUFIVyx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBR25DO0FBRUQsTUFBTSxDQUFOLElBQVksNEJBSVg7QUFKRCxXQUFZLDRCQUE0QjtJQUNwQywyREFBMkIsQ0FBQTtJQUMzQixpREFBaUIsQ0FBQTtJQUNq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QUMsb0JBQW9CLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQzs7eUhBblRRLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLG1KQ25FekMsZ3ZYQTJQQTsyRkR4TGEsNEJBQTRCO2tCQVZ4QyxTQUFTOytCQUNJLDRCQUE0QixpQkFHdkIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixLQUFLLEVBQUUscURBQXFEO3FCQUMvRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRmREYXRlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGV0aW1lJztcbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuXG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dBZGROb2RlVmlld1NlcnZpY2UsIFZJRVdfTU9ERVMgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLXZpZXcuc2VydmljZSc7XG5pbXBvcnQgeyBkaXNwbGF5VGVhbUZuLCBkaXNwbGF5VXNlckZuLCBmaWx0ZXJCeU5hbWUsIHRyYWNrQnlGbiB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQXBwcm92YWxOb2RlLCBBcHByb3ZhbFRlYW0sIEFwcHJvdmFsVXNlciB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93VGVhbURhdGFTb3VyY2UsIEFwcHJvdmFsRmxvd1VzZXJEYXRhU291cmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkTm9kZURpYWxvZ1JlZkRhdGEge1xuICAgIGlzRWRpdD86IGJvb2xlYW47XG4gICAgc2hvd05vZGVUeXBlU2VsZWN0PzogYm9vbGVhbjtcbiAgICBub2RlPzogQXBwcm92YWxOb2RlO1xuICAgIG5vZGVUYXJnZXQ/OiBBcHByb3ZhbEZsb3dOb2RlVGFyZ2V0O1xuICAgIHRlYW1EYXRhU291cmNlOiBBcHByb3ZhbEZsb3dUZWFtRGF0YVNvdXJjZTxBcHByb3ZhbFRlYW0+O1xuICAgIHVzZXJEYXRhU291cmNlOiBBcHByb3ZhbEZsb3dVc2VyRGF0YVNvdXJjZTxBcHByb3ZhbFVzZXI+O1xuICAgIHVzZXJEZXRhaWxzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgY2hlY2tEdWVEYXRlPzogYm9vbGVhbjtcbiAgICBydGw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkTm9kZURpYWxvZ0Zvcm1EYXRhIHtcbiAgICBub2RlOiBBcHByb3ZhbE5vZGU7XG4gICAgbm9kZVR5cGU6IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUztcbiAgICB0b05leHRTZXJpYWw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEFwcHJvdmFsRmxvd05ld05vZGVQbGFjZW1lbnQgPSAnYmVmb3JlJyB8ICdhZnRlcicgfCAnYmVmb3JlLWFsbCcgfCAnYWZ0ZXItYWxsJztcblxuZXhwb3J0IHR5cGUgQXBwcm92YWxGbG93Tm9kZVRhcmdldCA9IEFwcHJvdmFsRmxvd05ld05vZGVQbGFjZW1lbnQgfCAnZW1wdHknIHwgJ3BhcmFsbGVsJztcblxuZXhwb3J0IGVudW0gQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTIHtcbiAgICBTRVJJQUwgPSAnU0VSSUFMJyxcbiAgICBQQVJBTExFTCA9ICdQQVJBTExFTCdcbn1cblxuZXhwb3J0IGVudW0gQVBQUk9WQUxfRkxPV19BUFBST1ZFUl9UWVBFUyB7XG4gICAgU0lOR0xFX1VTRVIgPSAnU0lOR0xFX1VTRVInLFxuICAgIEFOWU9ORSA9ICdBTllPTkUnLFxuICAgIEVWRVJZT05FID0gJ0VWRVJZT05FJ1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBBcHByb3ZhbEZsb3dBZGROb2RlIGNvbXBvbmVudCBpcyBkZXByaWNhdGVkIHNpbmNlIHZlcnNpb24gMC40MC4wXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWFwcHJvdmFsLWZsb3ctYWRkLW5vZGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi4vc3R5bGVzL2FwcHJvdmFsLWZsb3ctZGlhbG9nLnNjc3MnLCAnLi9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmRwLWFwcHJvdmFsLWZsb3ctZGlhbG9nIGZkcC1hcHByb3ZhbC1mbG93LWFkZC1ub2RlJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxGbG93QWRkTm9kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZSA9IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUy5TRVJJQUw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZXMgPSBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZXNBcnJheSA9IE9iamVjdC5rZXlzKEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlclR5cGUgPSBBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTLlNJTkdMRV9VU0VSO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYXBwcm92ZXJUeXBlcyA9IEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlclR5cGVzQXJyYXkgPSBPYmplY3Qua2V5cyhBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2R1ZURhdGUgPSBGZERhdGUuZ2V0Tm93KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RNb2RlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90ZWFtczogQXBwcm92YWxUZWFtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGVkQXBwcm92ZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRUZWFtOiBOdWxsYWJsZTxBcHByb3ZhbFRlYW0+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRUZWFtQXJyYXk6IEFwcHJvdmFsVGVhbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZFRlYW1NZW1iZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZmlsdGVyZWRUZWFtTWVtYmVyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3VzZXJUb1Nob3dEZXRhaWxzPzogQXBwcm92YWxVc2VyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXNlclRvU2hvd0RldGFpbHNEYXRhJD86IE9ic2VydmFibGU8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NoZWNrRHVlRGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheVVzZXJGbiA9IGRpc3BsYXlVc2VyRm47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5VGVhbUZuID0gZGlzcGxheVRlYW1GbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrQnlGbiA9IHRyYWNrQnlGbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FkZFRvTmV4dFNlcmlhbCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92aWV3Q2hhbmdlU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RhdGFTb3VyY2VTdWI6IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IERpYWxvZ1JlZjxBZGROb2RlRGlhbG9nUmVmRGF0YT4sXG4gICAgICAgIHB1YmxpYyB2aWV3U2VydmljZTogQXBwcm92YWxGbG93QWRkTm9kZVZpZXdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2RhdGEoKTogQWRkTm9kZURpYWxvZ1JlZkRhdGEge1xuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2dSZWYuZGF0YTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaXNTaW5nbGVVc2VyTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcHJvdmVyVHlwZSA9PT0gdGhpcy5fYXBwcm92ZXJUeXBlcy5TSU5HTEVfVVNFUjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaXNNYWluU3VibWl0QnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGFwcHJvdmVycyA9IHRoaXMuX2lzU2luZ2xlVXNlck1vZGUgPyB0aGlzLl9zZWxlY3RlZEFwcHJvdmVycyA6IHRoaXMuX3NlbGVjdGVkVGVhbUFycmF5O1xuXG4gICAgICAgIHJldHVybiAhYXBwcm92ZXJzLmxlbmd0aCB8fCAodGhpcy5fY2hlY2tEdWVEYXRlICYmICF0aGlzLl9kdWVEYXRlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaGVhZGVyQXJyb3dHbHlwaCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ25hdmlnYXRpb24tJyArICh0aGlzLl9kYXRhLnJ0bCA/ICdyaWdodCcgOiAnbGVmdCcpICsgJy1hcnJvdyc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gdHJpZ2dlcmluZyBpbml0aWFsIGxvYWRpbmcgb2YgZGF0YSBpbiBkYXRhIHNvdXJjZXMuXG4gICAgICAgIHRoaXMuX2RhdGEudGVhbURhdGFTb3VyY2UubWF0Y2goKTtcbiAgICAgICAgdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5tYXRjaCgpO1xuICAgICAgICBjb25zdCB0ZWFtcyQgPSB0aGlzLl9kYXRhLnRlYW1EYXRhU291cmNlLm9wZW4oKTtcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzJCA9IHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2Uub3BlbigpO1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlU3ViID0gY29tYmluZUxhdGVzdChbdGVhbXMkLCBhcHByb3ZlcnMkXSkuc3Vic2NyaWJlKChbdGVhbXMsIGFwcHJvdmVyc10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3RlYW1zID0gdGVhbXM7XG5cbiAgICAgICAgICAgIHRoaXMuX2FwcHJvdmVycyA9IGFwcHJvdmVycztcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGEuaXNFZGl0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hlY2tEdWVEYXRlID0gISF0aGlzLl9kYXRhLmNoZWNrRHVlRGF0ZTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGVja0R1ZURhdGUgJiYgdGhpcy5fZGF0YS5ub2RlPy5kdWVEYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2R1ZURhdGUgPSBGZERhdGUuZ2V0RmREYXRlQnlEYXRlKG5ldyBEYXRlKHRoaXMuX2RhdGEubm9kZS5kdWVEYXRlKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMgPSBbLi4uKHRoaXMuX2RhdGEubm9kZT8uYXBwcm92ZXJzID8/IFtdKV07XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0ZWFtID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZhbFRlYW1JZCAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90ZWFtcy5maW5kKCh0KSA9PiB0LmlkID09PSB0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmFsVGVhbUlkKTtcbiAgICAgICAgICAgICAgICBpZiAodGVhbSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNlbGVjdFRlYW0odGVhbSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtID0gdGVhbTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtQXJyYXkgPSBbdGVhbV07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcHJvdmVyVHlwZSA9IHRoaXMuX2RhdGEubm9kZT8uaXNFdmVyeW9uZUFwcHJvdmFsTmVlZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX2FwcHJvdmVyVHlwZXMuRVZFUllPTkVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5fYXBwcm92ZXJUeXBlcy5BTllPTkU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fdmlld0NoYW5nZVN1YiA9IHRoaXMudmlld1NlcnZpY2Uub25WaWV3Q2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9vblNlYXJjaFN0cmluZ0NoYW5nZSgnJyk7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMuX2RhdGEubm9kZVRhcmdldCkge1xuICAgICAgICAgICAgY2FzZSAnZW1wdHknOlxuICAgICAgICAgICAgY2FzZSAnYmVmb3JlJzpcbiAgICAgICAgICAgIGNhc2UgJ2FmdGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9ub2RlVHlwZSA9IHRoaXMuX25vZGVUeXBlcy5TRVJJQUw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwYXJhbGxlbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fbm9kZVR5cGUgPSB0aGlzLl9ub2RlVHlwZXMuUEFSQUxMRUw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl92aWV3Q2hhbmdlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2VTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5jbG9zZSgpO1xuICAgICAgICB0aGlzLl9kYXRhLnRlYW1EYXRhU291cmNlLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZ29Ub1NlbGVjdE1vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdE1vZGUgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcodGhpcy5faXNTaW5nbGVVc2VyTW9kZSA/IFZJRVdfTU9ERVMuU0VMRUNUX1VTRVIgOiBWSUVXX01PREVTLlNFTEVDVF9URUFNKTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leGl0U2VsZWN0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMgPSB0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmVycz8ubGVuZ3RoID8gWy4uLnRoaXMuX2RhdGEubm9kZS5hcHByb3ZlcnNdIDogW107XG5cbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhLmlzRWRpdCAmJiAhdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZhbFRlYW1JZCkge1xuICAgICAgICAgICAgdGhpcy52aWV3U2VydmljZS5yZXNldFRlYW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NlbGVjdE1vZGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5yZXNldFZpZXcoKTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRTZWxlY3RlZEFwcHJvdmVycyhhcHByb3ZlcnM6IEFwcHJvdmFsVXNlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzID0gYXBwcm92ZXJzO1xuXG4gICAgICAgIHRoaXMuX2NvbmZpcm1TZWxlY3RlZEFwcHJvdmVycygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbmZpcm1TZWxlY3RlZEFwcHJvdmVycygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhLm5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kYXRhLm5vZGUuYXBwcm92ZXJzID0gdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnM7XG4gICAgICAgIHRoaXMuX2RhdGEubm9kZS52YXJpb3VzVGVhbXMgPSB0aGlzLl9kYXRhLm5vZGUuYXBwcm92ZXJzLnNvbWUoXG4gICAgICAgICAgICAodSkgPT4gdS50ZWFtSWQgIT09IHRoaXMuX2RhdGEubm9kZSEuYXBwcm92ZXJzWzBdLnRlYW1JZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9kYXRhLm5vZGUuZGVzY3JpcHRpb24gPSB0aGlzLl9kYXRhLm5vZGUudmFyaW91c1RlYW1zID8gJycgOiB0aGlzLl9zZWxlY3RlZEFwcHJvdmVyc1swXT8uZGVzY3JpcHRpb247XG5cbiAgICAgICAgZGVsZXRlIHRoaXMuX2RhdGEubm9kZS5hcHByb3ZhbFRlYW1JZDtcbiAgICAgICAgZGVsZXRlIHRoaXMuX2RhdGEubm9kZS5pc0V2ZXJ5b25lQXBwcm92YWxOZWVkZWQ7XG5cbiAgICAgICAgdGhpcy5fZXhpdFNlbGVjdE1vZGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRTZWxlY3RlZFRlYW0odGVhbTogQXBwcm92YWxUZWFtKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2VsZWN0VGVhbSh0ZWFtKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb25maXJtU2VsZWN0ZWRUZWFtKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudmlld1NlcnZpY2UudGVhbSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbSA9IHRoaXMudmlld1NlcnZpY2UudGVhbTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtQXJyYXkgPSBbdGhpcy52aWV3U2VydmljZS50ZWFtXTtcblxuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUudmFyaW91c1RlYW1zID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuYXBwcm92YWxUZWFtSWQgPSB0aGlzLnZpZXdTZXJ2aWNlLnRlYW0uaWQ7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuZGVzY3JpcHRpb24gPSB0aGlzLnZpZXdTZXJ2aWNlLnRlYW0ubmFtZTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5pc0V2ZXJ5b25lQXBwcm92YWxOZWVkZWQgPSB0aGlzLl9hcHByb3ZlclR5cGUgPT09IEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMuRVZFUllPTkU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9leGl0U2VsZWN0TW9kZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlZVVzZXJEZXRhaWxzKHVzZXI6IEFwcHJvdmFsVXNlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KFZJRVdfTU9ERVMuVVNFUl9ERVRBSUxTKTtcblxuICAgICAgICB0aGlzLl91c2VyVG9TaG93RGV0YWlscyA9IHVzZXI7XG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSQgPSB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLmRhdGFQcm92aWRlci5nZXRPbmUobmV3IE1hcChbWydpZCcsIHVzZXIuaWRdXSkpO1xuXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhpdFVzZXJEZXRhaWxzTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50Vmlldyh0aGlzLnZpZXdTZXJ2aWNlLnRlYW0gPyBWSUVXX01PREVTLlZJRVdfVEVBTV9NRU1CRVJTIDogVklFV19NT0RFUy5TRUxFQ1RfVVNFUik7XG5cbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHMgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF92aWV3VGVhbU1lbWJlcnModGVhbTogQXBwcm92YWxUZWFtKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2VsZWN0VGVhbSh0ZWFtKTtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50VmlldyhWSUVXX01PREVTLlZJRVdfVEVBTV9NRU1CRVJTKTtcblxuICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzID0gdGVhbS5tZW1iZXJzO1xuXG4gICAgICAgIHRoaXMuX3NldEZpbHRlcmVkVGVhbU1lbWJlcnModGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycyk7IC8vIGFwcGx5aW5nIGxvY2FsIGZpbHRlcmluZ1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2V4aXRUZWFtTWVtYmVyc01vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcoVklFV19NT0RFUy5TRUxFQ1RfVEVBTSk7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2UucmVzZXRUZWFtKCk7XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycyA9IFtdO1xuXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc3VibWl0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlICYmICF0aGlzLl9pc1NpbmdsZVVzZXJNb2RlICYmIHRoaXMuX3NlbGVjdGVkVGVhbSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmFwcHJvdmVycyA9IFsuLi50aGlzLl9zZWxlY3RlZFRlYW0ubWVtYmVyc107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlICYmIHRoaXMuX2NoZWNrRHVlRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmR1ZURhdGUgPSB0aGlzLl9kdWVEYXRlLnRvRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgICAgbm9kZTogdGhpcy5fZGF0YS5ub2RlLFxuICAgICAgICAgICAgbm9kZVR5cGU6IHRoaXMuX25vZGVUeXBlLFxuICAgICAgICAgICAgdG9OZXh0U2VyaWFsOiB0aGlzLl9hZGRUb05leHRTZXJpYWxcbiAgICAgICAgfSBhcyBBZGROb2RlRGlhbG9nRm9ybURhdGEpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uU2VhcmNoU3RyaW5nQ2hhbmdlKHNlYXJjaFN0cmluZyA9ICcnKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBNYXAoW1sncXVlcnknLCBzZWFyY2hTdHJpbmddXSk7XG5cbiAgICAgICAgaWYgKHRoaXMudmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5tYXRjaChwYXJhbXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS50ZWFtRGF0YVNvdXJjZS5tYXRjaChwYXJhbXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmlld1NlcnZpY2UuaXNUZWFtTWVtYmVyc01vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEZpbHRlcmVkVGVhbU1lbWJlcnModGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycy5maWx0ZXIoKHVzZXIpID0+IGZpbHRlckJ5TmFtZSh1c2VyLCBzZWFyY2hTdHJpbmcpKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRGaWx0ZXJlZFRlYW1NZW1iZXJzKHVzZXJzOiBBcHByb3ZhbFVzZXJbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9maWx0ZXJlZFRlYW1NZW1iZXJzID0gWy4uLnVzZXJzXTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG59XG4iLCI8ZmQtZGlhbG9nIGZkQ29tcGFjdD5cbiAgICA8ZmQtZGlhbG9nLWhlYWRlciBbY2xhc3Muc2hvdy1zZWFyY2hdPVwiX3NlbGVjdE1vZGUgJiYgIV91c2VyVG9TaG93RGV0YWlsc1wiPlxuICAgICAgICA8bmctdGVtcGxhdGUgZmRrVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhX3NlbGVjdE1vZGUgJiYgIV9kYXRhLmlzRWRpdFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0hlYWRlckFkZEFwcHJvdmVycycgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFfc2VsZWN0TW9kZSAmJiBfZGF0YS5pc0VkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dIZWFkZXJFZGl0QXBwcm92ZXInIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlIHx8IHZpZXdTZXJ2aWNlLmlzU2VsZWN0VGVhbU1vZGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dIZWFkZXJBZGRBcHByb3ZlclRlYW0nIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwiX2hlYWRlckFycm93R2x5cGhcIiAoY2xpY2spPVwiX2V4aXRUZWFtTWVtYmVyc01vZGUoKVwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAge3sgdmlld1NlcnZpY2UudGVhbT8ubmFtZSA/PyAnJyB9fSAoe3sgdmlld1NlcnZpY2UudGVhbT8ubWVtYmVycz8ubGVuZ3RoID8/IDAgfX0pXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNVc2VyRGV0YWlsc01vZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gW2dseXBoXT1cIl9oZWFkZXJBcnJvd0dseXBoXCIgKGNsaWNrKT1cIl9leGl0VXNlckRldGFpbHNNb2RlKClcIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nSGVhZGVyRGV0YWlsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgIDxmZHAtc2VhcmNoLWZpZWxkXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJfc2VsZWN0TW9kZSAmJiAhX3VzZXJUb1Nob3dEZXRhaWxzXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVTZWFyY2hQbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3N1Z2dlc3Rpb25zXT1cIltdXCJcbiAgICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2UpPVwiX29uU2VhcmNoU3RyaW5nQ2hhbmdlKCRldmVudC50ZXh0KVwiXG4gICAgICAgICAgICA+PC9mZHAtc2VhcmNoLWZpZWxkPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cblxuICAgIDxmZC1kaWFsb2ctYm9keSBbY2xhc3MuZmQtZGlhbG9nX19ib2R5LS1hdXRvLWhlaWdodF09XCJ2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIV9zZWxlY3RNb2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLWZvcm0taXRlbSAqbmdJZj1cIl9kYXRhLnNob3dOb2RlVHlwZVNlbGVjdFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ05vZGVUeXBlJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxmZC1zZWxlY3QgWyh2YWx1ZSldPVwiX25vZGVUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBfbm9kZVR5cGVzQXJyYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gKm5nU3dpdGNoQ2FzZT1cIl9ub2RlVHlwZXMuU0VSSUFMXCIgW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ05vZGVUeXBlU2VyaWFsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gKm5nU3dpdGNoQ2FzZT1cIl9ub2RlVHlwZXMuUEFSQUxMRUxcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nTm9kZVR5cGVQYXJhbGxlbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9mZC1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nQXBwcm92ZXJUeXBlJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxmZC1zZWxlY3QgWyh2YWx1ZSldPVwiX2FwcHJvdmVyVHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgX2FwcHJvdmVyVHlwZXNBcnJheVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiAqbmdTd2l0Y2hDYXNlPVwiX2FwcHJvdmVyVHlwZXMuU0lOR0xFX1VTRVJcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nQXBwcm92ZXJUeXBlVXNlcicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uICpuZ1N3aXRjaENhc2U9XCJfYXBwcm92ZXJUeXBlcy5BTllPTkVcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nQXBwcm92ZXJUeXBlVGVhbUFueW9uZScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uICpuZ1N3aXRjaENhc2U9XCJfYXBwcm92ZXJUeXBlcy5FVkVSWU9ORVwiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGVUZWFtRXZlcnlvbmUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZmQtc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgZmQtZm9ybS1pdGVtPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsPnt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nVXNlck9yVGVhbScgfCBmZFRyYW5zbGF0ZSB9fTwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgICA8ZmQtbXVsdGktaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJfaXNTaW5nbGVVc2VyTW9kZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93QWxsQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Ryb3Bkb3duVmFsdWVzXT1cIl9zZWxlY3RlZEFwcHJvdmVyc1wiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiX3NlbGVjdGVkQXBwcm92ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGbl09XCJfZGlzcGxheVVzZXJGblwiXG4gICAgICAgICAgICAgICAgICAgIChvcGVuQ2hhbmdlKT1cIl9nb1RvU2VsZWN0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cIl9zZXRTZWxlY3RlZEFwcHJvdmVycygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1tdWx0aS1pbnB1dD5cblxuICAgICAgICAgICAgICAgIDxmZC1tdWx0aS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFfaXNTaW5nbGVVc2VyTW9kZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93QWxsQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Ryb3Bkb3duVmFsdWVzXT1cIl9zZWxlY3RlZFRlYW1BcnJheVwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiX3NlbGVjdGVkVGVhbUFycmF5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGbl09XCJfZGlzcGxheVRlYW1GblwiXG4gICAgICAgICAgICAgICAgICAgIChvcGVuQ2hhbmdlKT1cIl9nb1RvU2VsZWN0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1tdWx0aS1pbnB1dD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiX25vZGVUeXBlID09PSBfbm9kZVR5cGVzLlBBUkFMTEVMXCIgZmQtZm9ybS1pdGVtPlxuICAgICAgICAgICAgICAgIDxmZC1jaGVja2JveCBbKG5nTW9kZWwpXT1cIl9hZGRUb05leHRTZXJpYWxcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBZGRUb05leHQnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2ZkLWNoZWNrYm94PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJfY2hlY2tEdWVEYXRlXCIgZmQtZm9ybS1pdGVtPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsPnt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nRHVlRGF0ZScgfCBmZFRyYW5zbGF0ZSB9fTwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgICA8ZmQtZGF0ZS1waWNrZXIgdHlwZT1cInNpbmdsZVwiIFtzdGF0ZV09XCIhdGhpcy5fZHVlRGF0ZSA/ICdlcnJvcicgOiBudWxsXCIgWyhuZ01vZGVsKV09XCJfZHVlRGF0ZVwiPlxuICAgICAgICAgICAgICAgIDwvZmQtZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9zZWxlY3RNb2RlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZHAtYXBwcm92YWwtZmxvdy10ZWFtLWxpc3RcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhX2RhdGEudGVhbURhdGFTb3VyY2UuaXNEYXRhTG9hZGluZzsgZWxzZSBsb2FkaW5nVHBsXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzUnRsXT1cIl9kYXRhLnJ0bFwiXG4gICAgICAgICAgICAgICAgICAgIFt0ZWFtc109XCJfdGVhbXNcIlxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRUZWFtSWRdPVwiX3NlbGVjdGVkVGVhbT8uaWRcIlxuICAgICAgICAgICAgICAgICAgICAob25UZWFtQ2xpY2spPVwiX3ZpZXdUZWFtTWVtYmVycygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uVGVhbVJhZGlvQ2xpY2spPVwiX3NldFNlbGVjdGVkVGVhbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy10ZWFtLWxpc3Q+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUgfHwgdmlld1NlcnZpY2UuaXNUZWFtTWVtYmVyc01vZGVcIj5cbiAgICAgICAgICAgICAgICA8ZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1saXN0XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSB8fCAhX2RhdGEudXNlckRhdGFTb3VyY2UuaXNEYXRhTG9hZGluZzsgZWxzZSBsb2FkaW5nVHBsXCJcbiAgICAgICAgICAgICAgICAgICAgW3VzZXJzXT1cInZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUgPyBfYXBwcm92ZXJzIDogX2ZpbHRlcmVkVGVhbU1lbWJlcnNcIlxuICAgICAgICAgICAgICAgICAgICBbaXNTZWxlY3RhYmxlXT1cInZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGVcIlxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRVc2Vyc109XCJfc2VsZWN0ZWRBcHByb3ZlcnNcIlxuICAgICAgICAgICAgICAgICAgICAob25Vc2VyQ2xpY2spPVwiX3NlZVVzZXJEZXRhaWxzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAob25TZWxlY3Rpb25DaGFuZ2UpPVwiX3NlbGVjdGVkQXBwcm92ZXJzID0gJGV2ZW50XCJcbiAgICAgICAgICAgICAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy11c2VyLWxpc3Q+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPGZkcC1hcHByb3ZhbC1mbG93LXVzZXItZGV0YWlsc1xuICAgICAgICAgICAgICAgICpuZ0lmPVwidmlld1NlcnZpY2UuaXNVc2VyRGV0YWlsc01vZGUgJiYgX3VzZXJUb1Nob3dEZXRhaWxzXCJcbiAgICAgICAgICAgICAgICBbdXNlcl09XCJfdXNlclRvU2hvd0RldGFpbHNcIlxuICAgICAgICAgICAgICAgIFtkZXRhaWxzVGVtcGxhdGVdPVwiX2RhdGEudXNlckRldGFpbHNUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2RldGFpbHNdPVwiX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSRcIlxuICAgICAgICAgICAgPjwvZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuXG4gICAgPGZkLWRpYWxvZy1mb290ZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhX3NlbGVjdE1vZGVcIj5cbiAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC1kaWFsb2ctZGVjaXNpdmUtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVBZGRBY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfaXNNYWluU3VibWl0QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3N1Ym1pdCgpXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuXG4gICAgICAgICAgICA8ZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGZkLWRpYWxvZy1kZWNpc2l2ZS1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVDYW5jZWxBY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9zZWxlY3RNb2RlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZVNlbGVjdEFwcHJvdmVyQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFfc2VsZWN0ZWRBcHByb3ZlcnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfY29uZmlybVNlbGVjdGVkQXBwcm92ZXJzKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cblxuICAgICAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUNhbmNlbEFwcHJvdmVyU2VsZWN0aW9uQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0U2VsZWN0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTZXJ2aWNlLmlzU2VsZWN0VGVhbU1vZGVcIj5cbiAgICAgICAgICAgICAgICA8ZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVTZWxlY3RBcHByb3ZlckFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhX3NlbGVjdGVkVGVhbSAmJiAhdmlld1NlcnZpY2UudGVhbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2NvbmZpcm1TZWxlY3RlZFRlYW0oKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPGZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQ2FuY2VsQXBwcm92ZXJTZWxlY3Rpb25BY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2V4aXRTZWxlY3RNb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNUZWFtTWVtYmVyc01vZGVcIj5cbiAgICAgICAgICAgICAgICA8ZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVBcHByb3Zlck9yVGVhbURldGFpbHNDbG9zZUFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFRlYW1NZW1iZXJzTW9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTZXJ2aWNlLmlzVXNlckRldGFpbHNNb2RlXCI+XG4gICAgICAgICAgICAgICAgPGZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQXBwcm92ZXJPclRlYW1EZXRhaWxzQ2xvc2VBY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2V4aXRVc2VyRGV0YWlsc01vZGUoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZmQtZGlhbG9nLWZvb3Rlcj5cbjwvZmQtZGlhbG9nPlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmdUcGw+XG4gICAgPGZkLWJ1c3ktaW5kaWNhdG9yIFtsb2FkaW5nXT1cInRydWVcIiBbYmxvY2tdPVwidHJ1ZVwiPiA8L2ZkLWJ1c3ktaW5kaWNhdG9yPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, Output, QueryList, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';
|
|
2
2
|
import { ListComponent, StandardListItemComponent } from '@fundamental-ngx/platform/list';
|
|
3
3
|
import { trackByFn } from '../helpers';
|
|
4
|
+
import { takeUntil } from 'rxjs';
|
|
5
|
+
import { DestroyedService } from '@fundamental-ngx/cdk/utils';
|
|
4
6
|
import * as i0 from "@angular/core";
|
|
5
7
|
import * as i1 from "@angular/common";
|
|
6
8
|
import * as i2 from "@angular/forms";
|
|
@@ -36,17 +38,22 @@ export class ApprovalFlowUserListComponent {
|
|
|
36
38
|
this._trackByFn = trackByFn;
|
|
37
39
|
/** @hidden */
|
|
38
40
|
this._displayUsers = [];
|
|
41
|
+
/** @hidden */
|
|
42
|
+
this._allSelectedUsers = [];
|
|
43
|
+
/** @hidden */
|
|
44
|
+
this._destroyed$ = inject(DestroyedService);
|
|
45
|
+
/** @hidden */
|
|
46
|
+
this._dontCallSelection = false;
|
|
39
47
|
}
|
|
40
48
|
/** @hidden */
|
|
41
49
|
ngAfterViewInit() {
|
|
42
50
|
if (this.selectedUsers.length) {
|
|
43
|
-
|
|
44
|
-
this.
|
|
45
|
-
this.
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
this._cdr.detectChanges();
|
|
51
|
+
this._selectItems(this.selectedUsers);
|
|
52
|
+
this._allSelectedUsers = [...this.selectedUsers];
|
|
53
|
+
this._cdr.markForCheck();
|
|
54
|
+
}
|
|
55
|
+
if (this.isSelectable) {
|
|
56
|
+
this._listenToListItemChange();
|
|
50
57
|
}
|
|
51
58
|
}
|
|
52
59
|
/** @hidden */
|
|
@@ -61,13 +68,22 @@ export class ApprovalFlowUserListComponent {
|
|
|
61
68
|
}
|
|
62
69
|
/** @hidden */
|
|
63
70
|
_onSelect(event) {
|
|
64
|
-
this.
|
|
65
|
-
|
|
71
|
+
if (!this._dontCallSelection) {
|
|
72
|
+
this._selectedItems = event.selectedItems;
|
|
73
|
+
if (event.removed) {
|
|
74
|
+
this._allSelectedUsers = this._allSelectedUsers.filter((user) => `${this._idPrefix + user.id}` !== event.removed.id);
|
|
75
|
+
}
|
|
76
|
+
if (event.added) {
|
|
77
|
+
this._allSelectedUsers.push(...this._getUsersFromSelectedItems([event.added]));
|
|
78
|
+
}
|
|
79
|
+
this.onSelectionChange.emit(this._allSelectedUsers);
|
|
80
|
+
this._cdr.detectChanges();
|
|
81
|
+
}
|
|
66
82
|
}
|
|
67
83
|
/** @hidden */
|
|
68
84
|
_getUsersFromSelectedItems(items) {
|
|
69
85
|
return items
|
|
70
|
-
.map((item) => this.users.find((user) => `${this._idPrefix + user.id}` === item.
|
|
86
|
+
.map((item) => this.users.find((user) => `${this._idPrefix + user.id}` === item.id))
|
|
71
87
|
.filter((u) => !!u);
|
|
72
88
|
}
|
|
73
89
|
/** @hidden */
|
|
@@ -102,14 +118,34 @@ export class ApprovalFlowUserListComponent {
|
|
|
102
118
|
clearInterval(this._intervalID);
|
|
103
119
|
}
|
|
104
120
|
}
|
|
121
|
+
/** @hidden */
|
|
122
|
+
_listenToListItemChange() {
|
|
123
|
+
this.listItems.changes.pipe(takeUntil(this._destroyed$)).subscribe(() => {
|
|
124
|
+
this._selectItems(this._allSelectedUsers);
|
|
125
|
+
this._cdr.detectChanges();
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
/** @hidden */
|
|
129
|
+
_selectItems(users) {
|
|
130
|
+
this._dontCallSelection = true;
|
|
131
|
+
const allSelectedUserNames = users.map((user) => this._idPrefix + user.id);
|
|
132
|
+
const currentSelectedList = this.listItems.filter((item) => allSelectedUserNames.includes(item.id));
|
|
133
|
+
this.list._clearSelection();
|
|
134
|
+
this._selectedItems = [...currentSelectedList];
|
|
135
|
+
this._selectedItems.forEach((item) => {
|
|
136
|
+
item._selected = true;
|
|
137
|
+
this.list._selectItem(item);
|
|
138
|
+
});
|
|
139
|
+
this._dontCallSelection = false;
|
|
140
|
+
}
|
|
105
141
|
}
|
|
106
142
|
ApprovalFlowUserListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApprovalFlowUserListComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
107
|
-
ApprovalFlowUserListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ApprovalFlowUserListComponent, selector: "fdp-approval-flow-user-list", inputs: { users: "users", selectedUsers: "selectedUsers", isSelectable: "isSelectable" }, outputs: { onUserClick: "onUserClick", onSelectionChange: "onSelectionChange" }, host: { classAttribute: "fdp-approval-flow-user-list" }, viewQueries: [{ propertyName: "list", first: true, predicate: ListComponent, descendants: true }, { propertyName: "listItems", predicate: StandardListItemComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"fdp-approval-flow-user-list__selected-count\" *ngIf=\"
|
|
143
|
+
ApprovalFlowUserListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ApprovalFlowUserListComponent, selector: "fdp-approval-flow-user-list", inputs: { users: "users", selectedUsers: "selectedUsers", isSelectable: "isSelectable" }, outputs: { onUserClick: "onUserClick", onSelectionChange: "onSelectionChange" }, host: { classAttribute: "fdp-approval-flow-user-list" }, providers: [DestroyedService], viewQueries: [{ propertyName: "list", first: true, predicate: ListComponent, descendants: true }, { propertyName: "listItems", predicate: StandardListItemComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"fdp-approval-flow-user-list__selected-count\" *ngIf=\"_allSelectedUsers.length\">\n <ng-container *ngIf=\"_allSelectedUsers.length === 1; else multipleItems\">\n {{ 'platformApprovalFlow.userListSelectedItemsCountSingular' | fdTranslate }}\n </ng-container>\n\n <ng-template #multipleItems>\n {{\n 'platformApprovalFlow.userListSelectedItemsCountPlural' | fdTranslate : { count: _allSelectedUsers.length }\n }}\n </ng-template>\n</div>\n\n<fdp-list\n [selectionMode]=\"isSelectable ? 'multi' : 'none'\"\n [selection]=\"isSelectable\"\n [navigationIndicator]=\"true\"\n [hasByLine]=\"true\"\n [(ngModel)]=\"_selectedItems\"\n [selectedItems]=\"_selectedItems\"\n (selectedItemChange)=\"_onSelect($event)\"\n>\n <fdp-standard-list-item\n *ngFor=\"let _user of _displayUsers; trackBy: _trackByFn\"\n [attr.id]=\"_idPrefix + _user.id\"\n [id]=\"_idPrefix + _user.id\"\n [avatarSrc]=\"_user.imgUrl\"\n [avatarTitle]=\"_user.name\"\n [description]=\"_user.description\"\n [ariaLabel]=\"_user.name\"\n [title]=\"_user.name\"\n (click)=\"$event.stopPropagation(); onUserClick.emit(_user)\"\n ></fdp-standard-list-item>\n</fdp-list>\n", styles: [".fdp-approval-flow-user-list{display:block;margin-top:-1rem}.fdp-approval-flow-user-list__selected-count{line-height:2rem;margin:0 -1rem;padding:0 1rem;background:#f2f2f2;background:var(--sapList_HeaderBackground, #f2f2f2)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.ListComponent, selector: "fdp-list", inputs: ["selectedItems", "ariaSetsize", "ariaMultiselectable", "loadTitle", "loadingLabel", "delayTime", "itemSize", "loadMore", "loadOnScroll", "role", "listType", "maxHeight", "noBorder", "scrollOffsetPercentage", "selection", "selectionMode", "value", "rowSelection", "dataSource", "navigated", "navigationIndicator", "hasByLine", "hasObject", "unreadIndicator", "interceptTabKey"], outputs: ["selectedItemChange"] }, { kind: "component", type: i3.StandardListItemComponent, selector: "fdp-standard-list-item" }, { kind: "pipe", type: i4.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
108
144
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApprovalFlowUserListComponent, decorators: [{
|
|
109
145
|
type: Component,
|
|
110
146
|
args: [{ selector: 'fdp-approval-flow-user-list', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
111
147
|
class: 'fdp-approval-flow-user-list'
|
|
112
|
-
}, template: "<div class=\"fdp-approval-flow-user-list__selected-count\" *ngIf=\"
|
|
148
|
+
}, providers: [DestroyedService], template: "<div class=\"fdp-approval-flow-user-list__selected-count\" *ngIf=\"_allSelectedUsers.length\">\n <ng-container *ngIf=\"_allSelectedUsers.length === 1; else multipleItems\">\n {{ 'platformApprovalFlow.userListSelectedItemsCountSingular' | fdTranslate }}\n </ng-container>\n\n <ng-template #multipleItems>\n {{\n 'platformApprovalFlow.userListSelectedItemsCountPlural' | fdTranslate : { count: _allSelectedUsers.length }\n }}\n </ng-template>\n</div>\n\n<fdp-list\n [selectionMode]=\"isSelectable ? 'multi' : 'none'\"\n [selection]=\"isSelectable\"\n [navigationIndicator]=\"true\"\n [hasByLine]=\"true\"\n [(ngModel)]=\"_selectedItems\"\n [selectedItems]=\"_selectedItems\"\n (selectedItemChange)=\"_onSelect($event)\"\n>\n <fdp-standard-list-item\n *ngFor=\"let _user of _displayUsers; trackBy: _trackByFn\"\n [attr.id]=\"_idPrefix + _user.id\"\n [id]=\"_idPrefix + _user.id\"\n [avatarSrc]=\"_user.imgUrl\"\n [avatarTitle]=\"_user.name\"\n [description]=\"_user.description\"\n [ariaLabel]=\"_user.name\"\n [title]=\"_user.name\"\n (click)=\"$event.stopPropagation(); onUserClick.emit(_user)\"\n ></fdp-standard-list-item>\n</fdp-list>\n", styles: [".fdp-approval-flow-user-list{display:block;margin-top:-1rem}.fdp-approval-flow-user-list__selected-count{line-height:2rem;margin:0 -1rem;padding:0 1rem;background:#f2f2f2;background:var(--sapList_HeaderBackground, #f2f2f2)}\n"] }]
|
|
113
149
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { users: [{
|
|
114
150
|
type: Input
|
|
115
151
|
}], selectedUsers: [{
|
|
@@ -131,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
131
167
|
type: ViewChildren,
|
|
132
168
|
args: [StandardListItemComponent]
|
|
133
169
|
}] } });
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy11c2VyLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy11c2VyLWxpc3QvYXBwcm92YWwtZmxvdy11c2VyLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy11c2VyLWxpc3QvYXBwcm92YWwtZmxvdy11c2VyLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFFVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBRUgsYUFBYSxFQUViLHlCQUF5QixFQUM1QixNQUFNLGdDQUFnQyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7OztBQUV2QyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUNuQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFFMUI7OztHQUdHO0FBV0gsTUFBTSxPQUFPLDZCQUE2QjtJQThDdEMsY0FBYztJQUNkLFlBQW9CLElBQXVCO1FBQXZCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBOUMzQywwQkFBMEI7UUFFMUIsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFFM0IsbUNBQW1DO1FBRW5DLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUVuQyxxQ0FBcUM7UUFFckMsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFFcEIsa0NBQWtDO1FBRWxDLCtEQUErRDtRQUMvRCxnQkFB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REosS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBS04sWUFBWTtzQkFEWCxLQUFLOztRQUtOLCtEQUErRDtRQUMvRCxXQUFXO3NCQUZWLE1BQU07O1FBTVAsK0RBQStEO1FBQy9ELGlCQUFpQjtzQkFGaEIsTUFBTTtnQkFNUCxJQUFJO3NCQURILFNBQVM7dUJBQUMsYUFBYTtnQkFLeEIsU0FBUztzQkFEUixZQUFZO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gICAgQmFzZUxpc3RJdGVtLFxuICAgIExpc3RDb21wb25lbnQsXG4gICAgU2VsZWN0aW9uQ2hhbmdlRXZlbnQsXG4gICAgU3RhbmRhcmRMaXN0SXRlbUNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL2xpc3QnO1xuaW1wb3J0IHsgQXBwcm92YWxVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyB0cmFja0J5Rm4gfSBmcm9tICcuLi9oZWxwZXJzJztcblxuY29uc3QgSVRFTVNfUkVOREVSRURfQVRfT05DRSA9IDEwMDtcbmNvbnN0IElOVEVSVkFMX0lOX01TID0gMTA7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEFwcHJvdmFsRmxvd1VzZXJMaXN0IGNvbXBvbmVudCBpcyBkZXByaWNhdGVkIHNpbmNlIHZlcnNpb24gMC40MC4wXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwcm92YWwtZmxvdy11c2VyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2FwcHJvdmFsLWZsb3ctdXNlci1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1saXN0J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxGbG93VXNlckxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgLyoqIEFwcHJvdmFsIGZsb3cgdXNlcnMgKi9cbiAgICBASW5wdXQoKVxuICAgIHVzZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEFwcHJvdmFsIGZsb3cgc2VsZWN0ZWQgdXNlcnMgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGVkVXNlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogV2hldGhlciB0aGUgbGlzdCBpcyBzZWxlY3RhYmxlICovXG4gICAgQElucHV0KClcbiAgICBpc1NlbGVjdGFibGUgPSB0cnVlO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgb24gdXNlciBjbGljayAqL1xuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIG9uVXNlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxBcHByb3ZhbFVzZXI+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCBvbiBzZWxlY3Rpb24gY2hhbmdlICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgb25TZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFwcHJvdmFsVXNlcltdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKExpc3RDb21wb25lbnQpXG4gICAgbGlzdDogTGlzdENvbXBvbmVudDxBcHByb3ZhbFVzZXI+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKFN0YW5kYXJkTGlzdEl0ZW1Db21wb25lbnQpXG4gICAgbGlzdEl0ZW1zOiBRdWVyeUxpc3Q8U3RhbmRhcmRMaXN0SXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZEl0ZW1zOiBCYXNlTGlzdEl0ZW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaWRQcmVmaXggPSAnYXBwcm92YWwtbm9kZS11c2VyLSc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90cmFja0J5Rm4gPSB0cmFja0J5Rm47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5VXNlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ludGVydmFsSUQ/OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRVc2Vycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQXBwcm92ZXJzTmFtZXMgPSB0aGlzLnNlbGVjdGVkVXNlcnMubWFwKChhcHByb3ZlcikgPT4gYXBwcm92ZXIubmFtZSk7XG5cbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSB0aGlzLmxpc3RJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGl0ZW0pID0+ICEhaXRlbS5hdmF0YXI/LmFyaWFMYWJlbCAmJiBzZWxlY3RlZEFwcHJvdmVyc05hbWVzLmluY2x1ZGVzKGl0ZW0uYXZhdGFyLmFyaWFMYWJlbClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0uX3NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3QuX3NlbGVjdEl0ZW0oaXRlbSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy51c2Vycykge1xuICAgICAgICAgICAgdGhpcy5fY29sbGVjdERhdGFQcm9ncmVzc2l2ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2lsbEludGVydmFsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25TZWxlY3QoZXZlbnQ6IFNlbGVjdGlvbkNoYW5nZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSBldmVudC5zZWxlY3RlZEl0ZW1zO1xuXG4gICAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLl9nZXRVc2Vyc0Zyb21TZWxlY3RlZEl0ZW1zKGV2ZW50LnNlbGVjdGVkSXRlbXMpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFVzZXJzRnJvbVNlbGVjdGVkSXRlbXMoaXRlbXM6IEJhc2VMaXN0SXRlbVtdKTogQXBwcm92YWxVc2VyW10ge1xuICAgICAgICByZXR1cm4gaXRlbXNcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IHRoaXMudXNlcnMuZmluZCgodXNlcikgPT4gYCR7dGhpcy5faWRQcmVmaXggKyB1c2VyLmlkfWAgPT09IGl0ZW0uaXRlbUVsLm5hdGl2ZUVsZW1lbnQuaWQpKVxuICAgICAgICAgICAgLmZpbHRlcigodSk6IHUgaXMgQXBwcm92YWxVc2VyID0+ICEhdSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb2xsZWN0RGF0YVByb2dyZXNzaXZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9raWxsSW50ZXJ2YWwoKTtcbiAgICAgICAgdGhpcy5fZGlzcGxheVVzZXJzID0gW107XG5cbiAgICAgICAgaWYgKCF0aGlzLnVzZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25UcmFja2VyID0geyBjdXJyZW50SW5kZXg6IDAgfTtcblxuICAgICAgICB0aGlzLl91c2VyQ29sbGVjdG9ySW50ZXJ2YWxGbihjb2xsZWN0aW9uVHJhY2tlcik7XG4gICAgICAgIHRoaXMuX2ludGVydmFsSUQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoXG4gICAgICAgICAgICB0aGlzLl91c2VyQ29sbGVjdG9ySW50ZXJ2YWxGbi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgSU5URVJWQUxfSU5fTVMsXG4gICAgICAgICAgICBjb2xsZWN0aW9uVHJhY2tlclxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXNlckNvbGxlY3RvckludGVydmFsRm4odHJhY2tlcjogeyBjdXJyZW50SW5kZXg6IG51bWJlciB9KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5leHRJbmRleCA9IHRyYWNrZXIuY3VycmVudEluZGV4ICsgSVRFTVNfUkVOREVSRURfQVRfT05DRTtcblxuICAgICAgICBjb25zdCBjb2xsZWN0ZWRVc2VyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gdHJhY2tlci5jdXJyZW50SW5kZXg7IGkgPD0gbmV4dEluZGV4OyBpKyspIHtcbiAgICAgICAgICAgIGlmIChpID49IHRoaXMudXNlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fa2lsbEludGVydmFsKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbGxlY3RlZFVzZXJzLnB1c2godGhpcy51c2Vyc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICB0cmFja2VyLmN1cnJlbnRJbmRleCArPSBJVEVNU19SRU5ERVJFRF9BVF9PTkNFO1xuXG4gICAgICAgIHRoaXMuX2Rpc3BsYXlVc2Vycy5wdXNoKC4uLmNvbGxlY3RlZFVzZXJzKTtcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfa2lsbEludGVydmFsKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faW50ZXJ2YWxJRCkge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbElEKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy11c2VyLWxpc3RfX3NlbGVjdGVkLWNvdW50XCIgKm5nSWY9XCJfc2VsZWN0ZWRJdGVtcy5sZW5ndGhcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3NlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAxOyBlbHNlIG11bHRpcGxlSXRlbXNcIj5cbiAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LnVzZXJMaXN0U2VsZWN0ZWRJdGVtc0NvdW50U2luZ3VsYXInIHwgZmRUcmFuc2xhdGUgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbXVsdGlwbGVJdGVtcz5cbiAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LnVzZXJMaXN0U2VsZWN0ZWRJdGVtc0NvdW50UGx1cmFsJyB8IGZkVHJhbnNsYXRlOiB7IGNvdW50OiBfc2VsZWN0ZWRJdGVtcy5sZW5ndGggfSB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPGZkcC1saXN0XG4gICAgW3NlbGVjdGlvbk1vZGVdPVwiaXNTZWxlY3RhYmxlID8gJ211bHRpJyA6ICdub25lJ1wiXG4gICAgW3NlbGVjdGlvbl09XCJpc1NlbGVjdGFibGVcIlxuICAgIFtuYXZpZ2F0aW9uSW5kaWNhdG9yXT1cInRydWVcIlxuICAgIFtoYXNCeUxpbmVdPVwidHJ1ZVwiXG4gICAgWyhuZ01vZGVsKV09XCJfc2VsZWN0ZWRJdGVtc1wiXG4gICAgW3NlbGVjdGVkSXRlbXNdPVwiX3NlbGVjdGVkSXRlbXNcIlxuICAgIChzZWxlY3RlZEl0ZW1DaGFuZ2UpPVwiX29uU2VsZWN0KCRldmVudClcIlxuPlxuICAgIDxmZHAtc3RhbmRhcmQtbGlzdC1pdGVtXG4gICAgICAgICpuZ0Zvcj1cImxldCBfdXNlciBvZiBfZGlzcGxheVVzZXJzOyB0cmFja0J5OiBfdHJhY2tCeUZuXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiX2lkUHJlZml4ICsgX3VzZXIuaWRcIlxuICAgICAgICBbYXZhdGFyU3JjXT1cIl91c2VyLmltZ1VybFwiXG4gICAgICAgIFthdmF0YXJUaXRsZV09XCJfdXNlci5uYW1lXCJcbiAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIl91c2VyLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgW2FyaWFMYWJlbF09XCJfdXNlci5uYW1lXCJcbiAgICAgICAgW3RpdGxlXT1cIl91c2VyLm5hbWVcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvblVzZXJDbGljay5lbWl0KF91c2VyKVwiXG4gICAgPjwvZmRwLXN0YW5kYXJkLWxpc3QtaXRlbT5cbjwvZmRwLWxpc3Q+XG4iXX0=
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy11c2VyLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy11c2VyLWxpc3QvYXBwcm92YWwtZmxvdy11c2VyLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy11c2VyLWxpc3QvYXBwcm92YWwtZmxvdy11c2VyLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUVILGFBQWEsRUFFYix5QkFBeUIsRUFDNUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQUU5RCxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUNuQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFFMUI7OztHQUdHO0FBWUgsTUFBTSxPQUFPLDZCQUE2QjtJQXVEdEMsY0FBYztJQUNkLFlBQW9CLElBQXVCO1FBQXZCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBdkQzQywwQkFBMEI7UUFFMUIsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFFM0IsbUNBQW1DO1FBRW5DLGtC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Q0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUNwQyxDQUFDOzswSEFqTFEsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsMFJBRjNCLENBQUMsZ0JBQWdCLENBQUMsZ0VBMEJsQixhQUFhLCtEQUlWLHlCQUF5QixxRUMzRTNDLDB2Q0FpQ0E7MkZEY2EsNkJBQTZCO2tCQVh6QyxTQUFTOytCQUNJLDZCQUE2QixpQkFHeEIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixLQUFLLEVBQUUsNkJBQTZCO3FCQUN2QyxhQUNVLENBQUMsZ0JBQWdCLENBQUM7d0dBSzdCLEtBQUs7c0JBREosS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBS04sWUFBWTtzQkFEWCxLQUFLOztRQUtOLCtEQUErRDtRQUMvRCxXQUFXO3NCQUZWLE1BQU07O1FBTVAsK0RBQStEO1FBQy9ELGlCQUFpQjtzQkFGaEIsTUFBTTtnQkFNUCxJQUFJO3NCQURILFNBQVM7dUJBQUMsYUFBYTtnQkFLeEIsU0FBUztzQkFEUixZQUFZO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIEJhc2VMaXN0SXRlbSxcbiAgICBMaXN0Q29tcG9uZW50LFxuICAgIFNlbGVjdGlvbkNoYW5nZUV2ZW50LFxuICAgIFN0YW5kYXJkTGlzdEl0ZW1Db21wb25lbnRcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9saXN0JztcbmltcG9ydCB7IEFwcHJvdmFsVXNlciB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgdHJhY2tCeUZuIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERlc3Ryb3llZFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5cbmNvbnN0IElURU1TX1JFTkRFUkVEX0FUX09OQ0UgPSAxMDA7XG5jb25zdCBJTlRFUlZBTF9JTl9NUyA9IDEwO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBBcHByb3ZhbEZsb3dVc2VyTGlzdCBjb21wb25lbnQgaXMgZGVwcmljYXRlZCBzaW5jZSB2ZXJzaW9uIDAuNDAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1hcHByb3ZhbC1mbG93LXVzZXItbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcHJvdmFsLWZsb3ctdXNlci1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hcHByb3ZhbC1mbG93LXVzZXItbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkcC1hcHByb3ZhbC1mbG93LXVzZXItbGlzdCdcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW0Rlc3Ryb3llZFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEFwcHJvdmFsRmxvd1VzZXJMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIC8qKiBBcHByb3ZhbCBmbG93IHVzZXJzICovXG4gICAgQElucHV0KClcbiAgICB1c2VyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBBcHByb3ZhbCBmbG93IHNlbGVjdGVkIHVzZXJzICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RlZFVzZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGxpc3QgaXMgc2VsZWN0YWJsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNTZWxlY3RhYmxlID0gdHJ1ZTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIG9uIHVzZXIgY2xpY2sgKi9cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBvblVzZXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8QXBwcm92YWxVc2VyPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgb24gc2VsZWN0aW9uIGNoYW5nZSAqL1xuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBcHByb3ZhbFVzZXJbXT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChMaXN0Q29tcG9uZW50KVxuICAgIGxpc3Q6IExpc3RDb21wb25lbnQ8QXBwcm92YWxVc2VyPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbihTdGFuZGFyZExpc3RJdGVtQ29tcG9uZW50KVxuICAgIGxpc3RJdGVtczogUXVlcnlMaXN0PFN0YW5kYXJkTGlzdEl0ZW1Db21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRJdGVtczogQmFzZUxpc3RJdGVtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lkUHJlZml4ID0gJ2FwcHJvdmFsLW5vZGUtdXNlci0nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdHJhY2tCeUZuID0gdHJhY2tCeUZuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheVVzZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYWxsU2VsZWN0ZWRVc2VyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW50ZXJ2YWxJRD86IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVzdHJveWVkJCA9IGluamVjdChEZXN0cm95ZWRTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZG9udENhbGxTZWxlY3Rpb24gPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFVzZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0SXRlbXModGhpcy5zZWxlY3RlZFVzZXJzKTtcbiAgICAgICAgICAgIHRoaXMuX2FsbFNlbGVjdGVkVXNlcnMgPSBbLi4udGhpcy5zZWxlY3RlZFVzZXJzXTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5fbGlzdGVuVG9MaXN0SXRlbUNoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnVzZXJzKSB7XG4gICAgICAgICAgICB0aGlzLl9jb2xsZWN0RGF0YVByb2dyZXNzaXZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9raWxsSW50ZXJ2YWwoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vblNlbGVjdChldmVudDogU2VsZWN0aW9uQ2hhbmdlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kb250Q2FsbFNlbGVjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IGV2ZW50LnNlbGVjdGVkSXRlbXM7XG5cbiAgICAgICAgICAgIGlmIChldmVudC5yZW1vdmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWxsU2VsZWN0ZWRVc2VycyA9IHRoaXMuX2FsbFNlbGVjdGVkVXNlcnMuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAodXNlcikgPT4gYCR7dGhpcy5faWRQcmVmaXggKyB1c2VyLmlkfWAgIT09IGV2ZW50LnJlbW92ZWQhLmlkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV2ZW50LmFkZGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWxsU2VsZWN0ZWRVc2Vycy5wdXNoKC4uLnRoaXMuX2dldFVzZXJzRnJvbVNlbGVjdGVkSXRlbXMoW2V2ZW50LmFkZGVkXSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5fYWxsU2VsZWN0ZWRVc2Vycyk7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRVc2Vyc0Zyb21TZWxlY3RlZEl0ZW1zKGl0ZW1zOiBCYXNlTGlzdEl0ZW1bXSk6IEFwcHJvdmFsVXNlcltdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zXG4gICAgICAgICAgICAubWFwKChpdGVtKSA9PiB0aGlzLnVzZXJzLmZpbmQoKHVzZXIpID0+IGAke3RoaXMuX2lkUHJlZml4ICsgdXNlci5pZH1gID09PSBpdGVtLmlkKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKHUpOiB1IGlzIEFwcHJvdmFsVXNlciA9PiAhIXUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29sbGVjdERhdGFQcm9ncmVzc2l2ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2lsbEludGVydmFsKCk7XG4gICAgICAgIHRoaXMuX2Rpc3BsYXlVc2VycyA9IFtdO1xuXG4gICAgICAgIGlmICghdGhpcy51c2Vycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uVHJhY2tlciA9IHsgY3VycmVudEluZGV4OiAwIH07XG5cbiAgICAgICAgdGhpcy5fdXNlckNvbGxlY3RvckludGVydmFsRm4oY29sbGVjdGlvblRyYWNrZXIpO1xuICAgICAgICB0aGlzLl9pbnRlcnZhbElEID0gd2luZG93LnNldEludGVydmFsKFxuICAgICAgICAgICAgdGhpcy5fdXNlckNvbGxlY3RvckludGVydmFsRm4uYmluZCh0aGlzKSxcbiAgICAgICAgICAgIElOVEVSVkFMX0lOX01TLFxuICAgICAgICAgICAgY29sbGVjdGlvblRyYWNrZXJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VzZXJDb2xsZWN0b3JJbnRlcnZhbEZuKHRyYWNrZXI6IHsgY3VycmVudEluZGV4OiBudW1iZXIgfSk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSB0cmFja2VyLmN1cnJlbnRJbmRleCArIElURU1TX1JFTkRFUkVEX0FUX09OQ0U7XG5cbiAgICAgICAgY29uc3QgY29sbGVjdGVkVXNlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHRyYWNrZXIuY3VycmVudEluZGV4OyBpIDw9IG5leHRJbmRleDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoaSA+PSB0aGlzLnVzZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2tpbGxJbnRlcnZhbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb2xsZWN0ZWRVc2Vycy5wdXNoKHRoaXMudXNlcnNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJhY2tlci5jdXJyZW50SW5kZXggKz0gSVRFTVNfUkVOREVSRURfQVRfT05DRTtcblxuICAgICAgICB0aGlzLl9kaXNwbGF5VXNlcnMucHVzaCguLi5jb2xsZWN0ZWRVc2Vycyk7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2tpbGxJbnRlcnZhbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2ludGVydmFsSUQpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWxJRCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvTGlzdEl0ZW1DaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGlzdEl0ZW1zLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RJdGVtcyh0aGlzLl9hbGxTZWxlY3RlZFVzZXJzKTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VsZWN0SXRlbXModXNlcnM6IEFwcHJvdmFsVXNlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RvbnRDYWxsU2VsZWN0aW9uID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgYWxsU2VsZWN0ZWRVc2VyTmFtZXMgPSB1c2Vycy5tYXAoKHVzZXIpID0+IHRoaXMuX2lkUHJlZml4ICsgdXNlci5pZCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3RlZExpc3QgPSB0aGlzLmxpc3RJdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGFsbFNlbGVjdGVkVXNlck5hbWVzLmluY2x1ZGVzKGl0ZW0uaWQpKTtcbiAgICAgICAgdGhpcy5saXN0Ll9jbGVhclNlbGVjdGlvbigpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zID0gWy4uLmN1cnJlbnRTZWxlY3RlZExpc3RdO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uX3NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubGlzdC5fc2VsZWN0SXRlbShpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2RvbnRDYWxsU2VsZWN0aW9uID0gZmFsc2U7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93LXVzZXItbGlzdF9fc2VsZWN0ZWQtY291bnRcIiAqbmdJZj1cIl9hbGxTZWxlY3RlZFVzZXJzLmxlbmd0aFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfYWxsU2VsZWN0ZWRVc2Vycy5sZW5ndGggPT09IDE7IGVsc2UgbXVsdGlwbGVJdGVtc1wiPlxuICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cudXNlckxpc3RTZWxlY3RlZEl0ZW1zQ291bnRTaW5ndWxhcicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNtdWx0aXBsZUl0ZW1zPlxuICAgICAgICB7e1xuICAgICAgICAgICAgJ3BsYXRmb3JtQXBwcm92YWxGbG93LnVzZXJMaXN0U2VsZWN0ZWRJdGVtc0NvdW50UGx1cmFsJyB8IGZkVHJhbnNsYXRlIDogeyBjb3VudDogX2FsbFNlbGVjdGVkVXNlcnMubGVuZ3RoIH1cbiAgICAgICAgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjxmZHAtbGlzdFxuICAgIFtzZWxlY3Rpb25Nb2RlXT1cImlzU2VsZWN0YWJsZSA/ICdtdWx0aScgOiAnbm9uZSdcIlxuICAgIFtzZWxlY3Rpb25dPVwiaXNTZWxlY3RhYmxlXCJcbiAgICBbbmF2aWdhdGlvbkluZGljYXRvcl09XCJ0cnVlXCJcbiAgICBbaGFzQnlMaW5lXT1cInRydWVcIlxuICAgIFsobmdNb2RlbCldPVwiX3NlbGVjdGVkSXRlbXNcIlxuICAgIFtzZWxlY3RlZEl0ZW1zXT1cIl9zZWxlY3RlZEl0ZW1zXCJcbiAgICAoc2VsZWN0ZWRJdGVtQ2hhbmdlKT1cIl9vblNlbGVjdCgkZXZlbnQpXCJcbj5cbiAgICA8ZmRwLXN0YW5kYXJkLWxpc3QtaXRlbVxuICAgICAgICAqbmdGb3I9XCJsZXQgX3VzZXIgb2YgX2Rpc3BsYXlVc2VyczsgdHJhY2tCeTogX3RyYWNrQnlGblwiXG4gICAgICAgIFthdHRyLmlkXT1cIl9pZFByZWZpeCArIF91c2VyLmlkXCJcbiAgICAgICAgW2lkXT1cIl9pZFByZWZpeCArIF91c2VyLmlkXCJcbiAgICAgICAgW2F2YXRhclNyY109XCJfdXNlci5pbWdVcmxcIlxuICAgICAgICBbYXZhdGFyVGl0bGVdPVwiX3VzZXIubmFtZVwiXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCJfdXNlci5kZXNjcmlwdGlvblwiXG4gICAgICAgIFthcmlhTGFiZWxdPVwiX3VzZXIubmFtZVwiXG4gICAgICAgIFt0aXRsZV09XCJfdXNlci5uYW1lXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25Vc2VyQ2xpY2suZW1pdChfdXNlcilcIlxuICAgID48L2ZkcC1zdGFuZGFyZC1saXN0LWl0ZW0+XG48L2ZkcC1saXN0PlxuIl19
|
|
@@ -35,10 +35,12 @@ export class ButtonComponent extends BaseComponent {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
ButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ButtonComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
38
|
-
ButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ButtonComponent, selector: "fdp-button", inputs: { glyphPosition: "glyphPosition", label: "label", glyph: "glyph", buttonType: "buttonType", toggled: "toggled", title: "title", ariaSelected: "ariaSelected", ariaDisabled: "ariaDisabled", ariaExpanded: "ariaExpanded", ariaControlsId: "ariaControlsId", ariaPressed: "ariaPressed", name: "name", type: "type", value: "value" }, outputs: { buttonClicked: "buttonClicked" }, host: { properties: { "attr.tabindex": "this.tabIndex" } }, usesInheritance: true, ngImport: i0, template: "<button\n #fdButton\n fd-button\n [attr.id]=\"id\"\n [attr.
|
|
38
|
+
ButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ButtonComponent, selector: "fdp-button", inputs: { glyphPosition: "glyphPosition", label: "label", glyph: "glyph", buttonType: "buttonType", toggled: "toggled", title: "title", ariaSelected: "ariaSelected", ariaDisabled: "ariaDisabled", ariaExpanded: "ariaExpanded", ariaControlsId: "ariaControlsId", ariaPressed: "ariaPressed", name: "name", type: "type", value: "value" }, outputs: { buttonClicked: "buttonClicked" }, host: { attributes: { "role": "button" }, properties: { "attr.tabindex": "this.tabIndex" } }, usesInheritance: true, ngImport: i0, template: "<button\n #fdButton\n fd-button\n [attr.id]=\"id\"\n [attr.name]=\"name\"\n [ariaLabel]=\"ariaLabel\"\n [attr.title]=\"!!glyph && !label ? title : null\"\n [attr.aria-controls]=\"ariaControlsId\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-disabled]=\"ariaDisabled\"\n [attr.value]=\"value\"\n [glyphPosition]=\"glyphPosition\"\n [label]=\"label\"\n [type]=\"type\"\n [toggled]=\"toggled || ariaPressed || ariaSelected\"\n [glyph]=\"glyph\"\n [disabled]=\"disabled\"\n [fdType]=\"buttonType\"\n [class.is-disabled]=\"ariaDisabled\"\n [style.width]=\"width\"\n (click)=\"onBtnClick($event)\"\n></button>\n", styles: [":host{display:inline-block}:host(:focus){outline:none}.fd-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }] });
|
|
39
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
40
40
|
type: Component,
|
|
41
|
-
args: [{ selector: 'fdp-button',
|
|
41
|
+
args: [{ selector: 'fdp-button', host: {
|
|
42
|
+
role: 'button'
|
|
43
|
+
}, template: "<button\n #fdButton\n fd-button\n [attr.id]=\"id\"\n [attr.name]=\"name\"\n [ariaLabel]=\"ariaLabel\"\n [attr.title]=\"!!glyph && !label ? title : null\"\n [attr.aria-controls]=\"ariaControlsId\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-disabled]=\"ariaDisabled\"\n [attr.value]=\"value\"\n [glyphPosition]=\"glyphPosition\"\n [label]=\"label\"\n [type]=\"type\"\n [toggled]=\"toggled || ariaPressed || ariaSelected\"\n [glyph]=\"glyph\"\n [disabled]=\"disabled\"\n [fdType]=\"buttonType\"\n [class.is-disabled]=\"ariaDisabled\"\n [style.width]=\"width\"\n (click)=\"onBtnClick($event)\"\n></button>\n", styles: [":host{display:inline-block}:host(:focus){outline:none}.fd-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}\n"] }]
|
|
42
44
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { glyphPosition: [{
|
|
43
45
|
type: Input
|
|
44
46
|
}], label: [{
|
|
@@ -97,4 +99,4 @@ export class DeprecatedButtonAriaPressed {
|
|
|
97
99
|
};
|
|
98
100
|
}
|
|
99
101
|
}
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9idXR0b24vYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9idXR0b24vYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFXakUsTUFBTSxPQUFPLGVBQWdCLFNBQVEsYUFBYTtJQTBGOUMsY0FBYztJQUNkLFlBQXNCLGVBQWtDLEVBQVUsV0FBdUI7UUFDckYsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBREwsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUExRnpGLHdDQUF3QztRQUV4QyxrQkFBYSxHQUFrQixRQUFRLENBQUM7UUFleEM7Ozt1REFHK0M7UUFFL0MsZUFBVSxHQUFlLFVBQVUsQ0FBQztRQXdEcEMsd0NBQXdDO1FBRXhDLGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdEQ7OztXQUdHO1FBRUgsYUFBUSxHQUFHLElBQUksQ0FBQztJQUtoQixDQUFDO0lBRUQsY0FBYztJQUNkLGVBQWU7UUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVLENBQUMsTUFBVztRQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDOzs0R0F6R1EsZUFBZTtnR0FBZixlQUFlLGtpQkN4QjVCLG1xQkFzQkE7MkZERWEsZUFBZTtrQkFSM0IsU0FBUzsrQkFDSSxZQUFZLFFBR2hCO3dCQUNGLElBQUksRUFBRSxRQUFRO3FCQUNqQjtpSUFLRCxhQUFhO3NCQURaLEtBQUs7Z0JBT04sS0FBSztzQkFESixLQUFLO2dCQVFOLEtBQUs7c0JBREosS0FBSztnQkFRTixVQUFVO3NCQURULEtBQUs7Z0JBS04sT0FBTztzQkFETixLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSztnQkFPTixZQUFZO3NCQURYLEtBQUs7Z0JBTU4sWUFBWTtzQkFEWCxLQUFLO2dCQVFOLFlBQVk7c0JBRFgsS0FBSztnQkFRTixjQUFjO3NCQURiLEtBQUs7Z0JBT04sV0FBVztzQkFEVixLQUFLO2dCQU1OLElBQUk7c0JBREgsS0FBSztnQkFNTixJQUFJO3NCQURILEtBQUs7Z0JBTU4sS0FBSztzQkFESixLQUFLO2dCQUtOLGFBQWE7c0JBRFosTUFBTTtnQkFRUCxRQUFRO3NCQURQLFdBQVc7dUJBQUMsZUFBZTs7QUFxQmhDLE1BQU0sT0FBTyw0QkFBNEI7SUFBekM7UUFDSSxjQUFjO1FBQ2QsWUFBTyxHQUFHLDRDQUE0QyxDQUFDO1FBRXZELGNBQWM7UUFDZCxnQkFBVyxHQUFHO1lBQ1YsSUFBSSxFQUFFLHNDQUFzQztZQUM1QyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDO1lBQzdCLFFBQVEsRUFBRSxPQUFPO1NBQ3BCLENBQUM7SUFDTixDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sMkJBQTJCO0lBQXhDO1FBQ0ksY0FBYztRQUNkLFlBQU8sR0FBRywyQ0FBMkMsQ0FBQztRQUV0RCxjQUFjO1FBQ2QsZ0JBQVcsR0FBRztZQUNWLElBQUksRUFBRSxzQ0FBc0M7WUFDNUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQztZQUM3QixRQUFRLEVBQUUsT0FBTztTQUNwQixDQUFDO0lBQ04sQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uVHlwZSwgR2x5cGhQb3NpdGlvbiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IE1vZHVsZURlcHJlY2F0aW9uIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1idXR0b24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2J1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ2J1dHRvbidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogUG9zaXRpb24gb2YgZ2x5cGggcmVsYXRlZCB0byB0ZXh0ICovXG4gICAgQElucHV0KClcbiAgICBnbHlwaFBvc2l0aW9uOiBHbHlwaFBvc2l0aW9uID0gJ2JlZm9yZSc7XG5cbiAgICAvKipcbiAgICAgKiBUZXh0IHJlbmRlcmVkIGluc2lkZSBidXR0b24gY29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBpY29uIHRvIGluY2x1ZGUgaW4gdGhlIGJ1dHRvbi4gU2VlIHRoZSBpY29uIHBhZ2UgZm9yIHRoZSBsaXN0IG9mIGljb25zLlxuICAgICAqIFNldHRlciBpcyB1c2VkIHRvIGNvbnRyb2wgd2hlbiBjc3MgY2xhc3MgaGF2ZSB0byBiZSByZWJ1aWxkZWQuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBzZXQgdG8gJycuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnbHlwaDogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBidXR0b25UeXBlIG9mIHRoZSBidXR0b24uIFR5cGVzIGluY2x1ZGVzXG4gICAgICdzdGFuZGFyZCcsJ3Bvc2l0aXZlJywgJ25lZ2F0aXZlJywgJ2F0dGVudGlvbicsICdnaG9zdCcsXG4gICAgICd0cmFuc3BhcmVudCcsICdlbXBoYXNpemVkJywnbWVudScuXG4gICAgICpMZWF2ZSBlbXB0eSBmb3IgZGVmYXVsdCAoc3RhbmRhcmQgYnV0dG9uKS4nKi9cbiAgICBASW5wdXQoKVxuICAgIGJ1dHRvblR5cGU6IEJ1dHRvblR5cGUgPSAnc3RhbmRhcmQnO1xuXG4gICAgLyoqIFdoZXRoZXIgYnV0dG9uIGlzIGluIHRvZ2dsZWQgc3RhdGUuICovXG4gICAgQElucHV0KClcbiAgICB0b2dnbGVkOiBOdWxsYWJsZTxib29sZWFuPjtcblxuICAgIC8qKiBhcmlhbGFiZWwsIHRvb2x0aXAgZm9yIGJ1dHRvbiwgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aGVuIHRoZSBidXR0b24gb25seSBjb250YWlucyBhbiBpY29uICovXG4gICAgQElucHV0KClcbiAgICB0aXRsZTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBAZGVwcmVjYXRlZCB1c2UgdG9nZ2xlZCBpbnB1dCBwcm9wZXJ0eSBpbnN0ZWFkXG4gICAgICogYXJpYS1zZWxlY3RlZCBmb3IgYWNjY2VzaWJsaXR5IHRvIHRoZSBuYXRpdmUgSFRNTCBidXR0b25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFTZWxlY3RlZDogTnVsbGFibGU8Ym9vbGVhbj47XG5cbiAgICAvKiogYXJpYS1kaXNhYmxlZCBmb3IgYWNjY2VzaWJsaXR5IHRvXG4gICAgICogIHRoZSBuYXRpdmUgSFRNTCBidXR0b24qL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYURpc2FibGVkOiBOdWxsYWJsZTxib29sZWFuPjtcblxuICAgIC8qKlxuICAgICAqIHByb3BhZ2F0ZSBhcmlhLWV4cGFuZGVkIGZvciBhY2Nlc3NpYmxpdHkgdG9cbiAgICAgKiB0aGUgbmF0aXZlIEhUTUwgYnV0dG9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcmlhRXhwYW5kZWQ6IE51bGxhYmxlPGJvb2xlYW4+O1xuXG4gICAgLyoqXG4gICAgICogcHJvcGFnYXRlIGFyaWEtY29udHJvbHMgZm9yIGFjY2Vzc2libGl0eSB0b1xuICAgICAqIHRoZSBuYXRpdmUgSFRNTCBidXR0b25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFDb250cm9sc0lkOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEBkZXByZWNhdGVkIHVzZSB0b2dnbGVkIGlucHV0IHByb3BlcnR5IGluc3RlYWRcbiAgICAgKiBwcm9wYWdhdGUgYXJpYS1wcmVzc2VkIGZvciBhY2Nlc3NpYmxpdHkgdG8gdGhlIG5hdGl2ZSBIVE1MIGJ1dHRvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYVByZXNzZWQ6IE51bGxhYmxlPGJvb2xlYW4+O1xuXG4gICAgLyoqIFNwZWNpZmllcyBhIG5hbWUgdG9cbiAgICAgKiAgdGhlIG5hdGl2ZSBIVE1MIGJ1dHRvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgLyoqIFNwZWNpZmllcyB0aGUgdHlwZSB0b1xuICAgICAqICB0aGUgbmF0aXZlIEhUTUwgYnV0dG9uICovXG4gICAgQElucHV0KClcbiAgICB0eXBlOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFNwZWNpZmllcyBhbiBpbml0aWFsIHZhbHVlIHRvXG4gICAgICogIHRoZSBuYXRpdmUgSFRNTCBidXR0b24gKi9cbiAgICBASW5wdXQoKVxuICAgIHZhbHVlOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEV2ZW50IHNlbnQgd2hlbiBidXR0b24gaXMgY2xpY2tlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGJ1dHRvbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqXG4gICAgICogVGFrZSBob3N0IGVsZW1lbnQgb3V0IG9mIHRhYiBvcmRlciwgc28gdGhhdCBjaGlsZCBidXR0b24gY2FuXG4gICAgICogYmUgcHJvcGVybHkgZm9jdXNlZCBvbi5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICAgIHRhYkluZGV4ID0gJy0xJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgc3VwZXIoX2NoYW5nZURldGVjdG9yKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXNbMF0uY2xhc3NMaXN0LmFkZCgnZmQtZWxsaXBzaXMnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgSGFuZGxlcyBidXR0b24gY2xpY2tcbiAgICAgKi9cbiAgICBwdWJsaWMgb25CdG5DbGljaygkZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1dHRvbkNsaWNrZWQuZW1pdCgkZXZlbnQpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERlcHJlY2F0ZWRCdXR0b25BcmlhU2VsZWN0ZWQgaW1wbGVtZW50cyBNb2R1bGVEZXByZWNhdGlvbiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBtZXNzYWdlID0gJ2FyaWFTZWxlY3RlZCBpbnB1dCBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkLic7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFsdGVybmF0aXZlID0ge1xuICAgICAgICBuYW1lOiAnVXNlIFt0b2dnbGVkXSBpbnB1dCBwcm9wZXJ0eSBpbnN0ZWFkJyxcbiAgICAgICAgbGluazogWycvcGxhdGZvcm0nLCAnYnV0dG9uJ10sXG4gICAgICAgIGZyYWdtZW50OiAnc3RhdGUnXG4gICAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIERlcHJlY2F0ZWRCdXR0b25BcmlhUHJlc3NlZCBpbXBsZW1lbnRzIE1vZHVsZURlcHJlY2F0aW9uIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG1lc3NhZ2UgPSAnYXJpYVByZXNzZWQgaW5wdXQgcHJvcGVydHkgaXMgZGVwcmVjYXRlZC4nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhbHRlcm5hdGl2ZSA9IHtcbiAgICAgICAgbmFtZTogJ1VzZSBbdG9nZ2xlZF0gaW5wdXQgcHJvcGVydHkgaW5zdGVhZCcsXG4gICAgICAgIGxpbms6IFsnL3BsYXRmb3JtJywgJ2J1dHRvbiddLFxuICAgICAgICBmcmFnbWVudDogJ3N0YXRlJ1xuICAgIH07XG59XG4iLCI8YnV0dG9uXG4gICAgI2ZkQnV0dG9uXG4gICAgZmQtYnV0dG9uXG4gICAgW2F0dHIuaWRdPVwiaWRcIlxuICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgW2FyaWFMYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgIFthdHRyLnRpdGxlXT1cIiEhZ2x5cGggJiYgIWxhYmVsID8gdGl0bGUgOiBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImFyaWFDb250cm9sc0lkXCJcbiAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImFyaWFFeHBhbmRlZFwiXG4gICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJhcmlhRGlzYWJsZWRcIlxuICAgIFthdHRyLnZhbHVlXT1cInZhbHVlXCJcbiAgICBbZ2x5cGhQb3NpdGlvbl09XCJnbHlwaFBvc2l0aW9uXCJcbiAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgIFt0eXBlXT1cInR5cGVcIlxuICAgIFt0b2dnbGVkXT1cInRvZ2dsZWQgfHwgYXJpYVByZXNzZWQgfHwgYXJpYVNlbGVjdGVkXCJcbiAgICBbZ2x5cGhdPVwiZ2x5cGhcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2ZkVHlwZV09XCJidXR0b25UeXBlXCJcbiAgICBbY2xhc3MuaXMtZGlzYWJsZWRdPVwiYXJpYURpc2FibGVkXCJcbiAgICBbc3R5bGUud2lkdGhdPVwid2lkdGhcIlxuICAgIChjbGljayk9XCJvbkJ0bkNsaWNrKCRldmVudClcIlxuPjwvYnV0dG9uPlxuIl19
|