@fundamental-ngx/platform 0.47.3 → 0.47.4-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +2 -2
  2. package/esm2022/form/combobox/combobox/combobox.component.mjs +3 -3
  3. package/esm2022/form/combobox/commons/base-combobox.mjs +17 -2
  4. package/esm2022/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.mjs +2 -3
  5. package/esm2022/form/index.mjs +1 -2
  6. package/esm2022/form/select/commons/base-select.mjs +10 -2
  7. package/esm2022/form/select/select/select.component.mjs +3 -3
  8. package/esm2022/form/select/select.module.mjs +5 -6
  9. package/esm2022/search-field/search-field.component.mjs +2 -2
  10. package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +2 -2
  11. package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +2 -2
  12. package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +2 -2
  13. package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +2 -2
  14. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +1 -1
  15. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  16. package/fesm2022/fundamental-ngx-platform-form.mjs +41 -51
  17. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  18. package/fesm2022/fundamental-ngx-platform-search-field.mjs +1 -1
  19. package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
  20. package/fesm2022/fundamental-ngx-platform-table.mjs +3 -3
  21. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  22. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +1 -1
  23. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  24. package/form/combobox/commons/base-combobox.d.ts +9 -2
  25. package/form/index.d.ts +0 -1
  26. package/form/select/commons/base-select.d.ts +9 -2
  27. package/form/select/select.module.d.ts +1 -2
  28. package/fundamental-ngx-platform-v0.47.4-rc.0.tgz +0 -0
  29. package/package.json +4 -4
  30. package/schematics/ng-add/index.js +1 -1
  31. package/esm2022/form/select/option/option.component.mjs +0 -37
  32. package/form/select/option/option.component.d.ts +0 -14
  33. package/fundamental-ngx-platform-v0.47.3.tgz +0 -0
@@ -272,7 +272,7 @@ export class ApprovalFlowAddNodeComponent {
272
272
  this._cdr.detectChanges();
273
273
  }
274
274
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ApprovalFlowAddNodeComponent, deps: [{ token: i1.DialogRef }, { token: i2.ApprovalFlowAddNodeViewService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
275
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: ApprovalFlowAddNodeComponent, isStandalone: true, selector: "fdp-approval-flow-add-node", host: { classAttribute: "fdp-approval-flow-dialog fdp-approval-flow-add-node" }, ngImport: i0, 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-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\"\n [disabled]=\"_isMainSubmitButtonDisabled\"\n (click)=\"_submit()\"\n >\n </fd-button-bar>\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectUserMode\">\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedApprovers.length\"\n (click)=\"_confirmSelectedApprovers()\"\n ></fd-button-bar>\n\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedTeam && !viewService.team\"\n (click)=\"_confirmSelectedTeam()\"\n ></fd-button-bar>\n\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitTeamMembersMode()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitUserDetailsMode()\"\n ></fd-button-bar>\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"], dependencies: [{ kind: "component", type: DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "directive", type: ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "scrollStrategy", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "advancedStateMessage", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "component", type: MultiInputComponent, selector: "fd-multi-input", inputs: ["placeholder", "disabled", "required", "compactCollapse", "maxHeight", "glyph", "dropdownValues", "openDropdownOnAddOnClicked", "searchTerm", "inputId", "highlight", "selected", "class", "filterFn", "valueFn", "displayFn", "newTokenParseFn", "optionItemIdentifier", "newTokenValidateFn", "ariaLabel", "ariaLabelledBy", "fillControlMode", "state", "buttonFocusable", "allowNewTokens", "mobile", "showAllButton", "bodyMaxWidth", "mobileConfig", "includes", "itemTemplate", "title", "byline", "autoComplete", "open", "displayAddonButton", "tokenHiddenId"], outputs: ["searchTermChange", "selectedChange", "openChange", "addOnButtonClicked", "allItemsSelectedChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: DatePickerComponent, selector: "fd-date-picker", inputs: ["type", "placeholder", "inputId", "required", "message", "messageTriggers", "selectedDate", "selectedRangeDate", "startingDayOfWeek", "rangeHoverEffect", "useValidation", "allowNull", "activeView", "placement", "appendTo", "disabled", "closeOnDateChoose", "showTodayButton", "todayButtonLabel", "previousButtonDisableFunction", "nextButtonDisableFunction", "state", "buttonFocusable", "specialDaysRules", "yearGrid", "aggregatedYearGrid", "markWeekends", "showWeekNumbers", "isOpen", "inline", "ariaLabelledBy", "processInputOnBlur", "preventScrollOnFocus", "mobile", "mobileConfig", "mobileLandscape", "mobilePortrait", "disableFunction", "disableRangeStartFunction", "disableRangeEndFunction"], outputs: ["isOpenChange", "selectedDateChange", "selectedRangeDateChange", "activeViewChange"] }, { kind: "component", type: ApprovalFlowTeamListComponent, selector: "fdp-approval-flow-team-list", inputs: ["teams", "isRtl", "selectedTeamId"], outputs: ["onTeamClick", "onTeamRadioClick"] }, { kind: "component", type: ApprovalFlowUserListComponent, selector: "fdp-approval-flow-user-list", inputs: ["users", "selectedUsers", "isSelectable"], outputs: ["onUserClick", "onSelectionChange"] }, { kind: "component", type: ApprovalFlowUserDetailsComponent, selector: "fdp-approval-flow-user-details", inputs: ["user", "details", "detailsTemplate"] }, { kind: "component", type: DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
275
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: ApprovalFlowAddNodeComponent, isStandalone: true, selector: "fdp-approval-flow-add-node", host: { classAttribute: "fdp-approval-flow-dialog fdp-approval-flow-add-node" }, ngImport: i0, 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-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\"\n [disabled]=\"_isMainSubmitButtonDisabled\"\n (click)=\"_submit()\"\n >\n </fd-button-bar>\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectUserMode\">\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedApprovers.length\"\n (click)=\"_confirmSelectedApprovers()\"\n ></fd-button-bar>\n\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedTeam && !viewService.team\"\n (click)=\"_confirmSelectedTeam()\"\n ></fd-button-bar>\n\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitTeamMembersMode()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitUserDetailsMode()\"\n ></fd-button-bar>\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"], dependencies: [{ kind: "component", type: DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "directive", type: ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "scrollStrategy", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "advancedStateMessage", "tabOutStrategy", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "component", type: MultiInputComponent, selector: "fd-multi-input", inputs: ["placeholder", "disabled", "required", "compactCollapse", "maxHeight", "glyph", "dropdownValues", "openDropdownOnAddOnClicked", "searchTerm", "inputId", "highlight", "selected", "class", "filterFn", "valueFn", "displayFn", "newTokenParseFn", "optionItemIdentifier", "newTokenValidateFn", "ariaLabel", "ariaLabelledBy", "fillControlMode", "state", "buttonFocusable", "allowNewTokens", "mobile", "showAllButton", "bodyMaxWidth", "mobileConfig", "includes", "itemTemplate", "title", "byline", "autoComplete", "open", "displayAddonButton", "tokenHiddenId"], outputs: ["searchTermChange", "selectedChange", "openChange", "addOnButtonClicked", "allItemsSelectedChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: DatePickerComponent, selector: "fd-date-picker", inputs: ["type", "placeholder", "inputId", "required", "message", "messageTriggers", "selectedDate", "selectedRangeDate", "startingDayOfWeek", "rangeHoverEffect", "useValidation", "allowNull", "activeView", "placement", "appendTo", "disabled", "closeOnDateChoose", "showTodayButton", "todayButtonLabel", "previousButtonDisableFunction", "nextButtonDisableFunction", "state", "buttonFocusable", "specialDaysRules", "yearGrid", "aggregatedYearGrid", "markWeekends", "showWeekNumbers", "isOpen", "inline", "ariaLabelledBy", "processInputOnBlur", "preventScrollOnFocus", "mobile", "mobileConfig", "mobileLandscape", "mobilePortrait", "disableFunction", "disableRangeStartFunction", "disableRangeEndFunction"], outputs: ["isOpenChange", "selectedDateChange", "selectedRangeDateChange", "activeViewChange"] }, { kind: "component", type: ApprovalFlowTeamListComponent, selector: "fdp-approval-flow-team-list", inputs: ["teams", "isRtl", "selectedTeamId"], outputs: ["onTeamClick", "onTeamRadioClick"] }, { kind: "component", type: ApprovalFlowUserListComponent, selector: "fdp-approval-flow-user-list", inputs: ["users", "selectedUsers", "isSelectable"], outputs: ["onUserClick", "onSelectionChange"] }, { kind: "component", type: ApprovalFlowUserDetailsComponent, selector: "fdp-approval-flow-user-details", inputs: ["user", "details", "detailsTemplate"] }, { kind: "component", type: DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
276
276
  }
277
277
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ApprovalFlowAddNodeComponent, decorators: [{
278
278
  type: Component,
@@ -309,4 +309,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
309
309
  FdTranslatePipe
310
310
  ], 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-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\"\n [disabled]=\"_isMainSubmitButtonDisabled\"\n (click)=\"_submit()\"\n >\n </fd-button-bar>\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectUserMode\">\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedApprovers.length\"\n (click)=\"_confirmSelectedApprovers()\"\n ></fd-button-bar>\n\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedTeam && !viewService.team\"\n (click)=\"_confirmSelectedTeam()\"\n ></fd-button-bar>\n\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitTeamMembersMode()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitUserDetailsMode()\"\n ></fd-button-bar>\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"] }]
311
311
  }], ctorParameters: function () { return [{ type: i1.DialogRef }, { type: i2.ApprovalFlowAddNodeViewService }, { type: i0.ChangeDetectorRef }]; } });
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWFkZC1ub2RlL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFJVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE0QixhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQVksaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVB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aUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsNkJBQTZCO3dCQUM3Qiw2QkFBNkI7d0JBQzdCLGdDQUFnQzt3QkFDaEMscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsZUFBZTtxQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZkRGF0ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcblxuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE5nRm9yLCBOZ0lmLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTnVsbGFibGUsIFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uQmFyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBCdXN5SW5kaWNhdG9yQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1c3ktaW5kaWNhdG9yJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NoZWNrYm94JztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGUtcGlja2VyJztcbmltcG9ydCB7XG4gICAgRGlhbG9nQm9keUNvbXBvbmVudCxcbiAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IEZvcm1JdGVtQ29tcG9uZW50LCBGb3JtTGFiZWxDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHsgTXVsdGlJbnB1dENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tdWx0aS1pbnB1dCc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IE9wdGlvbkNvbXBvbmVudCwgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NlbGVjdCc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU2VhcmNoRmllbGRDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NlYXJjaC1maWVsZCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dUZWFtRGF0YVNvdXJjZSwgQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dUZWFtTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdGVhbS1saXN0L2FwcHJvdmFsLWZsb3ctdGVhbS1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdXNlci1saXN0L2FwcHJvdmFsLWZsb3ctdXNlci1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBkaXNwbGF5VGVhbUZuLCBkaXNwbGF5VXNlckZuLCBmaWx0ZXJCeU5hbWUsIHRyYWNrQnlGbiB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQXBwcm92YWxOb2RlLCBBcHByb3ZhbFRlYW0sIEFwcHJvdmFsVXNlciB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93QWRkTm9kZVZpZXdTZXJ2aWNlLCBWSUVXX01PREVTIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS12aWV3LnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkZE5vZGVEaWFsb2dSZWZEYXRhIHtcbiAgICBpc0VkaXQ/OiBib29sZWFuO1xuICAgIHNob3dOb2RlVHlwZVNlbGVjdD86IGJvb2xlYW47XG4gICAgbm9kZT86IEFwcHJvdmFsTm9kZTtcbiAgICBub2RlVGFyZ2V0PzogQXBwcm92YWxGbG93Tm9kZVRhcmdldDtcbiAgICB0ZWFtRGF0YVNvdXJjZTogQXBwcm92YWxGbG93VGVhbURhdGFTb3VyY2U8QXBwcm92YWxUZWFtPjtcbiAgICB1c2VyRGF0YVNvdXJjZTogQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2U8QXBwcm92YWxVc2VyPjtcbiAgICB1c2VyRGV0YWlsc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIGNoZWNrRHVlRGF0ZT86IGJvb2xlYW47XG4gICAgcnRsOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZE5vZGVEaWFsb2dGb3JtRGF0YSB7XG4gICAgbm9kZTogQXBwcm92YWxOb2RlO1xuICAgIG5vZGVUeXBlOiBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVM7XG4gICAgdG9OZXh0U2VyaWFsOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBBcHByb3ZhbEZsb3dOZXdOb2RlUGxhY2VtZW50ID0gJ2JlZm9yZScgfCAnYWZ0ZXInIHwgJ2JlZm9yZS1hbGwnIHwgJ2FmdGVyLWFsbCc7XG5cbmV4cG9ydCB0eXBlIEFwcHJvdmFsRmxvd05vZGVUYXJnZXQgPSBBcHByb3ZhbEZsb3dOZXdOb2RlUGxhY2VtZW50IHwgJ2VtcHR5JyB8ICdwYXJhbGxlbCc7XG5cbmV4cG9ydCBlbnVtIEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUyB7XG4gICAgU0VSSUFMID0gJ1NFUklBTCcsXG4gICAgUEFSQUxMRUwgPSAnUEFSQUxMRUwnXG59XG5cbmV4cG9ydCBlbnVtIEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMge1xuICAgIFNJTkdMRV9VU0VSID0gJ1NJTkdMRV9VU0VSJyxcbiAgICBBTllPTkUgPSAnQU5ZT05FJyxcbiAgICBFVkVSWU9ORSA9ICdFVkVSWU9ORSdcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogQXBwcm92YWxGbG93QWRkTm9kZSBjb21wb25lbnQgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDAuNDAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1hcHByb3ZhbC1mbG93LWFkZC1ub2RlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4uL3N0eWxlcy9hcHByb3ZhbC1mbG93LWRpYWxvZy5zY3NzJywgJy4vYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkcC1hcHByb3ZhbC1mbG93LWRpYWxvZyBmZHAtYXBwcm92YWwtZmxvdy1hZGQtbm9kZSdcbiAgICB9LFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIENvbnRlbnREZW5zaXR5RGlyZWN0aXZlLFxuICAgICAgICBEaWFsb2dIZWFkZXJDb21wb25lbnQsXG4gICAgICAgIFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBJY29uQ29tcG9uZW50LFxuICAgICAgICBTZWFyY2hGaWVsZENvbXBvbmVudCxcbiAgICAgICAgQ2RrU2Nyb2xsYWJsZSxcbiAgICAgICAgU2Nyb2xsYmFyRGlyZWN0aXZlLFxuICAgICAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgICAgICBGb3JtSXRlbUNvbXBvbmVudCxcbiAgICAgICAgRm9ybUxhYmVsQ29tcG9uZW50LFxuICAgICAgICBTZWxlY3RDb21wb25lbnQsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBOZ1N3aXRjaCxcbiAgICAgICAgTmdTd2l0Y2hDYXNlLFxuICAgICAgICBPcHRpb25Db21wb25lbnQsXG4gICAgICAgIE11bHRpSW5wdXRDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICAgICAgRGF0ZVBpY2tlckNvbXBvbmVudCxcbiAgICAgICAgQXBwcm92YWxGbG93VGVhbUxpc3RDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd1VzZXJMaXN0Q29tcG9uZW50LFxuICAgICAgICBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCxcbiAgICAgICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgICAgICBCdXR0b25CYXJDb21wb25lbnQsXG4gICAgICAgIEJ1c3lJbmRpY2F0b3JDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxGbG93QWRkTm9kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZSA9IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUy5TRVJJQUw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZXMgPSBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZXNBcnJheSA9IE9iamVjdC5rZXlzKEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlclR5cGUgPSBBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTLlNJTkdMRV9VU0VSO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYXBwcm92ZXJUeXBlcyA9IEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlclR5cGVzQXJyYXkgPSBPYmplY3Qua2V5cyhBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2R1ZURhdGUgPSBGZERhdGUuZ2V0Tm93KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RNb2RlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90ZWFtczogQXBwcm92YWxUZWFtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGVkQXBwcm92ZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRUZWFtOiBOdWxsYWJsZTxBcHByb3ZhbFRlYW0+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRUZWFtQXJyYXk6IEFwcHJvdmFsVGVhbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZFRlYW1NZW1iZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZmlsdGVyZWRUZWFtTWVtYmVyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3VzZXJUb1Nob3dEZXRhaWxzPzogQXBwcm92YWxVc2VyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXNlclRvU2hvd0RldGFpbHNEYXRhJD86IE9ic2VydmFibGU8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NoZWNrRHVlRGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheVVzZXJGbiA9IGRpc3BsYXlVc2VyRm47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5VGVhbUZuID0gZGlzcGxheVRlYW1GbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrQnlGbiA9IHRyYWNrQnlGbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FkZFRvTmV4dFNlcmlhbCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92aWV3Q2hhbmdlU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RhdGFTb3VyY2VTdWI6IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IERpYWxvZ1JlZjxBZGROb2RlRGlhbG9nUmVmRGF0YT4sXG4gICAgICAgIHB1YmxpYyB2aWV3U2VydmljZTogQXBwcm92YWxGbG93QWRkTm9kZVZpZXdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2RhdGEoKTogQWRkTm9kZURpYWxvZ1JlZkRhdGEge1xuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2dSZWYuZGF0YTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaXNTaW5nbGVVc2VyTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcHJvdmVyVHlwZSA9PT0gdGhpcy5fYXBwcm92ZXJUeXBlcy5TSU5HTEVfVVNFUjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaXNNYWluU3VibWl0QnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGFwcHJvdmVycyA9IHRoaXMuX2lzU2luZ2xlVXNlck1vZGUgPyB0aGlzLl9zZWxlY3RlZEFwcHJvdmVycyA6IHRoaXMuX3NlbGVjdGVkVGVhbUFycmF5O1xuXG4gICAgICAgIHJldHVybiAhYXBwcm92ZXJzLmxlbmd0aCB8fCAodGhpcy5fY2hlY2tEdWVEYXRlICYmICF0aGlzLl9kdWVEYXRlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaGVhZGVyQXJyb3dHbHlwaCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ25hdmlnYXRpb24tJyArICh0aGlzLl9kYXRhLnJ0bCA/ICdyaWdodCcgOiAnbGVmdCcpICsgJy1hcnJvdyc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gdHJpZ2dlcmluZyBpbml0aWFsIGxvYWRpbmcgb2YgZGF0YSBpbiBkYXRhIHNvdXJjZXMuXG4gICAgICAgIHRoaXMuX2RhdGEudGVhbURhdGFTb3VyY2UubWF0Y2goKTtcbiAgICAgICAgdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5tYXRjaCgpO1xuICAgICAgICBjb25zdCB0ZWFtcyQgPSB0aGlzLl9kYXRhLnRlYW1EYXRhU291cmNlLm9wZW4oKTtcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzJCA9IHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2Uub3BlbigpO1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlU3ViID0gY29tYmluZUxhdGVzdChbdGVhbXMkLCBhcHByb3ZlcnMkXSkuc3Vic2NyaWJlKChbdGVhbXMsIGFwcHJvdmVyc10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3RlYW1zID0gdGVhbXM7XG5cbiAgICAgICAgICAgIHRoaXMuX2FwcHJvdmVycyA9IGFwcHJvdmVycztcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGEuaXNFZGl0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hlY2tEdWVEYXRlID0gISF0aGlzLl9kYXRhLmNoZWNrRHVlRGF0ZTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGVja0R1ZURhdGUgJiYgdGhpcy5fZGF0YS5ub2RlPy5kdWVEYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2R1ZURhdGUgPSBGZERhdGUuZ2V0RmREYXRlQnlEYXRlKG5ldyBEYXRlKHRoaXMuX2RhdGEubm9kZS5kdWVEYXRlKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMgPSBbLi4uKHRoaXMuX2RhdGEubm9kZT8uYXBwcm92ZXJzID8/IFtdKV07XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0ZWFtID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZhbFRlYW1JZCAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90ZWFtcy5maW5kKCh0KSA9PiB0LmlkID09PSB0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmFsVGVhbUlkKTtcbiAgICAgICAgICAgICAgICBpZiAodGVhbSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNlbGVjdFRlYW0odGVhbSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtID0gdGVhbTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtQXJyYXkgPSBbdGVhbV07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcHJvdmVyVHlwZSA9IHRoaXMuX2RhdGEubm9kZT8uaXNFdmVyeW9uZUFwcHJvdmFsTmVlZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX2FwcHJvdmVyVHlwZXMuRVZFUllPTkVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5fYXBwcm92ZXJUeXBlcy5BTllPTkU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fdmlld0NoYW5nZVN1YiA9IHRoaXMudmlld1NlcnZpY2Uub25WaWV3Q2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9vblNlYXJjaFN0cmluZ0NoYW5nZSgnJyk7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMuX2RhdGEubm9kZVRhcmdldCkge1xuICAgICAgICAgICAgY2FzZSAnZW1wdHknOlxuICAgICAgICAgICAgY2FzZSAnYmVmb3JlJzpcbiAgICAgICAgICAgIGNhc2UgJ2FmdGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9ub2RlVHlwZSA9IHRoaXMuX25vZGVUeXBlcy5TRVJJQUw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwYXJhbGxlbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fbm9kZVR5cGUgPSB0aGlzLl9ub2RlVHlwZXMuUEFSQUxMRUw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl92aWV3Q2hhbmdlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2VTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5jbG9zZSgpO1xuICAgICAgICB0aGlzLl9kYXRhLnRlYW1EYXRhU291cmNlLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZ29Ub1NlbGVjdE1vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdE1vZGUgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcodGhpcy5faXNTaW5nbGVVc2VyTW9kZSA/IFZJRVdfTU9ERVMuU0VMRUNUX1VTRVIgOiBWSUVXX01PREVTLlNFTEVDVF9URUFNKTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leGl0U2VsZWN0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzLmxlbmd0aCAmJiAhdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEFwcHJvdmVycyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhLmlzRWRpdCAmJiAhdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZhbFRlYW1JZCkge1xuICAgICAgICAgICAgdGhpcy52aWV3U2VydmljZS5yZXNldFRlYW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NlbGVjdE1vZGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5yZXNldFZpZXcoKTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRTZWxlY3RlZEFwcHJvdmVycyhhcHByb3ZlcnM6IEFwcHJvdmFsVXNlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzID0gYXBwcm92ZXJzO1xuXG4gICAgICAgIHRoaXMuX2NvbmZpcm1TZWxlY3RlZEFwcHJvdmVycygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbmZpcm1TZWxlY3RlZEFwcHJvdmVycygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhLm5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kYXRhLm5vZGUuYXBwcm92ZXJzID0gdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnM7XG4gICAgICAgIHRoaXMuX2RhdGEubm9kZS52YXJpb3VzVGVhbXMgPSB0aGlzLl9kYXRhLm5vZGUuYXBwcm92ZXJzLnNvbWUoXG4gICAgICAgICAgICAodSkgPT4gdS50ZWFtSWQgIT09IHRoaXMuX2RhdGEubm9kZSEuYXBwcm92ZXJzWzBdLnRlYW1JZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9kYXRhLm5vZGUuZGVzY3JpcHRpb24gPSB0aGlzLl9kYXRhLm5vZGUudmFyaW91c1RlYW1zID8gJycgOiB0aGlzLl9zZWxlY3RlZEFwcHJvdmVyc1swXT8uZGVzY3JpcHRpb247XG5cbiAgICAgICAgZGVsZXRlIHRoaXMuX2RhdGEubm9kZS5hcHByb3ZhbFRlYW1JZDtcbiAgICAgICAgZGVsZXRlIHRoaXMuX2RhdGEubm9kZS5pc0V2ZXJ5b25lQXBwcm92YWxOZWVkZWQ7XG5cbiAgICAgICAgdGhpcy5fZXhpdFNlbGVjdE1vZGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRTZWxlY3RlZFRlYW0odGVhbTogQXBwcm92YWxUZWFtKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2VsZWN0VGVhbSh0ZWFtKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb25maXJtU2VsZWN0ZWRUZWFtKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudmlld1NlcnZpY2UudGVhbSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbSA9IHRoaXMudmlld1NlcnZpY2UudGVhbTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtQXJyYXkgPSBbdGhpcy52aWV3U2VydmljZS50ZWFtXTtcblxuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUudmFyaW91c1RlYW1zID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuYXBwcm92YWxUZWFtSWQgPSB0aGlzLnZpZXdTZXJ2aWNlLnRlYW0uaWQ7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuZGVzY3JpcHRpb24gPSB0aGlzLnZpZXdTZXJ2aWNlLnRlYW0ubmFtZTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5pc0V2ZXJ5b25lQXBwcm92YWxOZWVkZWQgPSB0aGlzLl9hcHByb3ZlclR5cGUgPT09IEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMuRVZFUllPTkU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9leGl0U2VsZWN0TW9kZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlZVVzZXJEZXRhaWxzKHVzZXI6IEFwcHJvdmFsVXNlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KFZJRVdfTU9ERVMuVVNFUl9ERVRBSUxTKTtcblxuICAgICAgICB0aGlzLl91c2VyVG9TaG93RGV0YWlscyA9IHVzZXI7XG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSQgPSB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLmRhdGFQcm92aWRlci5nZXRPbmUobmV3IE1hcChbWydpZCcsIHVzZXIuaWRdXSkpO1xuXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhpdFVzZXJEZXRhaWxzTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50Vmlldyh0aGlzLnZpZXdTZXJ2aWNlLnRlYW0gPyBWSUVXX01PREVTLlZJRVdfVEVBTV9NRU1CRVJTIDogVklFV19NT0RFUy5TRUxFQ1RfVVNFUik7XG5cbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHMgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF92aWV3VGVhbU1lbWJlcnModGVhbTogQXBwcm92YWxUZWFtKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2VsZWN0VGVhbSh0ZWFtKTtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50VmlldyhWSUVXX01PREVTLlZJRVdfVEVBTV9NRU1CRVJTKTtcblxuICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzID0gdGVhbS5tZW1iZXJzO1xuXG4gICAgICAgIHRoaXMuX3NldEZpbHRlcmVkVGVhbU1lbWJlcnModGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycyk7IC8vIGFwcGx5aW5nIGxvY2FsIGZpbHRlcmluZ1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2V4aXRUZWFtTWVtYmVyc01vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcoVklFV19NT0RFUy5TRUxFQ1RfVEVBTSk7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2UucmVzZXRUZWFtKCk7XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycyA9IFtdO1xuXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc3VibWl0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlICYmICF0aGlzLl9pc1NpbmdsZVVzZXJNb2RlICYmIHRoaXMuX3NlbGVjdGVkVGVhbSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmFwcHJvdmVycyA9IFsuLi50aGlzLl9zZWxlY3RlZFRlYW0ubWVtYmVyc107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlICYmIHRoaXMuX2NoZWNrRHVlRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmR1ZURhdGUgPSB0aGlzLl9kdWVEYXRlLnRvRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgICAgbm9kZTogdGhpcy5fZGF0YS5ub2RlLFxuICAgICAgICAgICAgbm9kZVR5cGU6IHRoaXMuX25vZGVUeXBlLFxuICAgICAgICAgICAgdG9OZXh0U2VyaWFsOiB0aGlzLl9hZGRUb05leHRTZXJpYWxcbiAgICAgICAgfSBhcyBBZGROb2RlRGlhbG9nRm9ybURhdGEpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uU2VhcmNoU3RyaW5nQ2hhbmdlKHNlYXJjaFN0cmluZyA9ICcnKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBNYXAoW1sncXVlcnknLCBzZWFyY2hTdHJpbmddXSk7XG5cbiAgICAgICAgaWYgKHRoaXMudmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5tYXRjaChwYXJhbXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS50ZWFtRGF0YVNvdXJjZS5tYXRjaChwYXJhbXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmlld1NlcnZpY2UuaXNUZWFtTWVtYmVyc01vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEZpbHRlcmVkVGVhbU1lbWJlcnModGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycy5maWx0ZXIoKHVzZXIpID0+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+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhX3NlbGVjdE1vZGVcIj5cbiAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQWRkQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfaXNNYWluU3VibWl0QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfc3VibWl0KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQ2FuY2VsQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoKVwiXG4gICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3NlbGVjdE1vZGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlXCI+XG4gICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZVNlbGVjdEFwcHJvdmVyQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIV9zZWxlY3RlZEFwcHJvdmVycy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2NvbmZpcm1TZWxlY3RlZEFwcHJvdmVycygpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuXG4gICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQ2FuY2VsQXBwcm92ZXJTZWxlY3Rpb25BY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFNlbGVjdE1vZGUoKVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVTZWxlY3RBcHByb3ZlckFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFfc2VsZWN0ZWRUZWFtICYmICF2aWV3U2VydmljZS50ZWFtXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9jb25maXJtU2VsZWN0ZWRUZWFtKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG5cbiAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVDYW5jZWxBcHByb3ZlclNlbGVjdGlvbkFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0U2VsZWN0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUFwcHJvdmVyT3JUZWFtRGV0YWlsc0Nsb3NlQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2V4aXRUZWFtTWVtYmVyc01vZGUoKVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNVc2VyRGV0YWlsc01vZGVcIj5cbiAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVBcHByb3Zlck9yVGVhbURldGFpbHNDbG9zZUFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0VXNlckRldGFpbHNNb2RlKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxuPC9mZC1kaWFsb2c+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RwbD5cbiAgICA8ZmQtYnVzeS1pbmRpY2F0b3IgW2xvYWRpbmddPVwidHJ1ZVwiIFtibG9ja109XCJ0cnVlXCI+IDwvZmQtYnVzeS1pbmRpY2F0b3I+XG48L25nLXRlbXBsYXRlPlxuIl19
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWFkZC1ub2RlL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFJVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE0QixhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQVksaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVB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aUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsNkJBQTZCO3dCQUM3Qiw2QkFBNkI7d0JBQzdCLGdDQUFnQzt3QkFDaEMscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsZUFBZTtxQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZkRGF0ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcblxuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE5nRm9yLCBOZ0lmLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTnVsbGFibGUsIFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uQmFyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBCdXN5SW5kaWNhdG9yQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1c3ktaW5kaWNhdG9yJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NoZWNrYm94JztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGUtcGlja2VyJztcbmltcG9ydCB7XG4gICAgRGlhbG9nQm9keUNvbXBvbmVudCxcbiAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IEZvcm1JdGVtQ29tcG9uZW50LCBGb3JtTGFiZWxDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHsgTXVsdGlJbnB1dENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tdWx0aS1pbnB1dCc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IE9wdGlvbkNvbXBvbmVudCwgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NlbGVjdCc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU2VhcmNoRmllbGRDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NlYXJjaC1maWVsZCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dUZWFtRGF0YVNvdXJjZSwgQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dUZWFtTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdGVhbS1saXN0L2FwcHJvdmFsLWZsb3ctdGVhbS1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdXNlci1saXN0L2FwcHJvdmFsLWZsb3ctdXNlci1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBkaXNwbGF5VGVhbUZuLCBkaXNwbGF5VXNlckZuLCBmaWx0ZXJCeU5hbWUsIHRyYWNrQnlGbiB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQXBwcm92YWxOb2RlLCBBcHByb3ZhbFRlYW0sIEFwcHJvdmFsVXNlciB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93QWRkTm9kZVZpZXdTZXJ2aWNlLCBWSUVXX01PREVTIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS12aWV3LnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkZE5vZGVEaWFsb2dSZWZEYXRhIHtcbiAgICBpc0VkaXQ/OiBib29sZWFuO1xuICAgIHNob3dOb2RlVHlwZVNlbGVjdD86IGJvb2xlYW47XG4gICAgbm9kZT86IEFwcHJvdmFsTm9kZTtcbiAgICBub2RlVGFyZ2V0PzogQXBwcm92YWxGbG93Tm9kZVRhcmdldDtcbiAgICB0ZWFtRGF0YVNvdXJjZTogQXBwcm92YWxGbG93VGVhbURhdGFTb3VyY2U8QXBwcm92YWxUZWFtPjtcbiAgICB1c2VyRGF0YVNvdXJjZTogQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2U8QXBwcm92YWxVc2VyPjtcbiAgICB1c2VyRGV0YWlsc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIGNoZWNrRHVlRGF0ZT86IGJvb2xlYW47XG4gICAgcnRsOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZE5vZGVEaWFsb2dGb3JtRGF0YSB7XG4gICAgbm9kZTogQXBwcm92YWxOb2RlO1xuICAgIG5vZGVUeXBlOiBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVM7XG4gICAgdG9OZXh0U2VyaWFsOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBBcHByb3ZhbEZsb3dOZXdOb2RlUGxhY2VtZW50ID0gJ2JlZm9yZScgfCAnYWZ0ZXInIHwgJ2JlZm9yZS1hbGwnIHwgJ2FmdGVyLWFsbCc7XG5cbmV4cG9ydCB0eXBlIEFwcHJvdmFsRmxvd05vZGVUYXJnZXQgPSBBcHByb3ZhbEZsb3dOZXdOb2RlUGxhY2VtZW50IHwgJ2VtcHR5JyB8ICdwYXJhbGxlbCc7XG5cbmV4cG9ydCBlbnVtIEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUyB7XG4gICAgU0VSSUFMID0gJ1NFUklBTCcsXG4gICAgUEFSQUxMRUwgPSAnUEFSQUxMRUwnXG59XG5cbmV4cG9ydCBlbnVtIEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMge1xuICAgIFNJTkdMRV9VU0VSID0gJ1NJTkdMRV9VU0VSJyxcbiAgICBBTllPTkUgPSAnQU5ZT05FJyxcbiAgICBFVkVSWU9ORSA9ICdFVkVSWU9ORSdcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogQXBwcm92YWxGbG93QWRkTm9kZSBjb21wb25lbnQgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDAuNDAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1hcHByb3ZhbC1mbG93LWFkZC1ub2RlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4uL3N0eWxlcy9hcHByb3ZhbC1mbG93LWRpYWxvZy5zY3NzJywgJy4vYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkcC1hcHByb3ZhbC1mbG93LWRpYWxvZyBmZHAtYXBwcm92YWwtZmxvdy1hZGQtbm9kZSdcbiAgICB9LFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIENvbnRlbnREZW5zaXR5RGlyZWN0aXZlLFxuICAgICAgICBEaWFsb2dIZWFkZXJDb21wb25lbnQsXG4gICAgICAgIFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBJY29uQ29tcG9uZW50LFxuICAgICAgICBTZWFyY2hGaWVsZENvbXBvbmVudCxcbiAgICAgICAgQ2RrU2Nyb2xsYWJsZSxcbiAgICAgICAgU2Nyb2xsYmFyRGlyZWN0aXZlLFxuICAgICAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgICAgICBGb3JtSXRlbUNvbXBvbmVudCxcbiAgICAgICAgRm9ybUxhYmVsQ29tcG9uZW50LFxuICAgICAgICBTZWxlY3RDb21wb25lbnQsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBOZ1N3aXRjaCxcbiAgICAgICAgTmdTd2l0Y2hDYXNlLFxuICAgICAgICBPcHRpb25Db21wb25lbnQsXG4gICAgICAgIE11bHRpSW5wdXRDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICAgICAgRGF0ZVBpY2tlckNvbXBvbmVudCxcbiAgICAgICAgQXBwcm92YWxGbG93VGVhbUxpc3RDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd1VzZXJMaXN0Q29tcG9uZW50LFxuICAgICAgICBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCxcbiAgICAgICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgICAgICBCdXR0b25CYXJDb21wb25lbnQsXG4gICAgICAgIEJ1c3lJbmRpY2F0b3JDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxGbG93QWRkTm9kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZSA9IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUy5TRVJJQUw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZXMgPSBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZXNBcnJheSA9IE9iamVjdC5rZXlzKEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlclR5cGUgPSBBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTLlNJTkdMRV9VU0VSO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYXBwcm92ZXJUeXBlcyA9IEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlclR5cGVzQXJyYXkgPSBPYmplY3Qua2V5cyhBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2R1ZURhdGUgPSBGZERhdGUuZ2V0Tm93KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RNb2RlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90ZWFtczogQXBwcm92YWxUZWFtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGVkQXBwcm92ZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRUZWFtOiBOdWxsYWJsZTxBcHByb3ZhbFRlYW0+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRUZWFtQXJyYXk6IEFwcHJvdmFsVGVhbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZFRlYW1NZW1iZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZmlsdGVyZWRUZWFtTWVtYmVyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3VzZXJUb1Nob3dEZXRhaWxzPzogQXBwcm92YWxVc2VyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXNlclRvU2hvd0RldGFpbHNEYXRhJD86IE9ic2VydmFibGU8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NoZWNrRHVlRGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheVVzZXJGbiA9IGRpc3BsYXlVc2VyRm47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5VGVhbUZuID0gZGlzcGxheVRlYW1GbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrQnlGbiA9IHRyYWNrQnlGbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FkZFRvTmV4dFNlcmlhbCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92aWV3Q2hhbmdlU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RhdGFTb3VyY2VTdWI6IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IERpYWxvZ1JlZjxBZGROb2RlRGlhbG9nUmVmRGF0YT4sXG4gICAgICAgIHB1YmxpYyB2aWV3U2VydmljZTogQXBwcm92YWxGbG93QWRkTm9kZVZpZXdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2RhdGEoKTogQWRkTm9kZURpYWxvZ1JlZkRhdGEge1xuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2dSZWYuZGF0YTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaXNTaW5nbGVVc2VyTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcHJvdmVyVHlwZSA9PT0gdGhpcy5fYXBwcm92ZXJUeXBlcy5TSU5HTEVfVVNFUjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaXNNYWluU3VibWl0QnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGFwcHJvdmVycyA9IHRoaXMuX2lzU2luZ2xlVXNlck1vZGUgPyB0aGlzLl9zZWxlY3RlZEFwcHJvdmVycyA6IHRoaXMuX3NlbGVjdGVkVGVhbUFycmF5O1xuXG4gICAgICAgIHJldHVybiAhYXBwcm92ZXJzLmxlbmd0aCB8fCAodGhpcy5fY2hlY2tEdWVEYXRlICYmICF0aGlzLl9kdWVEYXRlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaGVhZGVyQXJyb3dHbHlwaCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ25hdmlnYXRpb24tJyArICh0aGlzLl9kYXRhLnJ0bCA/ICdyaWdodCcgOiAnbGVmdCcpICsgJy1hcnJvdyc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gdHJpZ2dlcmluZyBpbml0aWFsIGxvYWRpbmcgb2YgZGF0YSBpbiBkYXRhIHNvdXJjZXMuXG4gICAgICAgIHRoaXMuX2RhdGEudGVhbURhdGFTb3VyY2UubWF0Y2goKTtcbiAgICAgICAgdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5tYXRjaCgpO1xuICAgICAgICBjb25zdCB0ZWFtcyQgPSB0aGlzLl9kYXRhLnRlYW1EYXRhU291cmNlLm9wZW4oKTtcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzJCA9IHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2Uub3BlbigpO1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlU3ViID0gY29tYmluZUxhdGVzdChbdGVhbXMkLCBhcHByb3ZlcnMkXSkuc3Vic2NyaWJlKChbdGVhbXMsIGFwcHJvdmVyc10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3RlYW1zID0gdGVhbXM7XG5cbiAgICAgICAgICAgIHRoaXMuX2FwcHJvdmVycyA9IGFwcHJvdmVycztcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGEuaXNFZGl0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hlY2tEdWVEYXRlID0gISF0aGlzLl9kYXRhLmNoZWNrRHVlRGF0ZTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGVja0R1ZURhdGUgJiYgdGhpcy5fZGF0YS5ub2RlPy5kdWVEYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2R1ZURhdGUgPSBGZERhdGUuZ2V0RmREYXRlQnlEYXRlKG5ldyBEYXRlKHRoaXMuX2RhdGEubm9kZS5kdWVEYXRlKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMgPSBbLi4uKHRoaXMuX2RhdGEubm9kZT8uYXBwcm92ZXJzID8/IFtdKV07XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0ZWFtID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZhbFRlYW1JZCAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90ZWFtcy5maW5kKCh0KSA9PiB0LmlkID09PSB0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmFsVGVhbUlkKTtcbiAgICAgICAgICAgICAgICBpZiAodGVhbSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNlbGVjdFRlYW0odGVhbSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtID0gdGVhbTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtQXJyYXkgPSBbdGVhbV07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcHJvdmVyVHlwZSA9IHRoaXMuX2RhdGEubm9kZT8uaXNFdmVyeW9uZUFwcHJvdmFsTmVlZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX2FwcHJvdmVyVHlwZXMuRVZFUllPTkVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5fYXBwcm92ZXJUeXBlcy5BTllPTkU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fdmlld0NoYW5nZVN1YiA9IHRoaXMudmlld1NlcnZpY2Uub25WaWV3Q2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9vblNlYXJjaFN0cmluZ0NoYW5nZSgnJyk7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMuX2RhdGEubm9kZVRhcmdldCkge1xuICAgICAgICAgICAgY2FzZSAnZW1wdHknOlxuICAgICAgICAgICAgY2FzZSAnYmVmb3JlJzpcbiAgICAgICAgICAgIGNhc2UgJ2FmdGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9ub2RlVHlwZSA9IHRoaXMuX25vZGVUeXBlcy5TRVJJQUw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwYXJhbGxlbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fbm9kZVR5cGUgPSB0aGlzLl9ub2RlVHlwZXMuUEFSQUxMRUw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl92aWV3Q2hhbmdlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2VTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5jbG9zZSgpO1xuICAgICAgICB0aGlzLl9kYXRhLnRlYW1EYXRhU291cmNlLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZ29Ub1NlbGVjdE1vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdE1vZGUgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcodGhpcy5faXNTaW5nbGVVc2VyTW9kZSA/IFZJRVdfTU9ERVMuU0VMRUNUX1VTRVIgOiBWSUVXX01PREVTLlNFTEVDVF9URUFNKTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leGl0U2VsZWN0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzLmxlbmd0aCAmJiAhdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEFwcHJvdmVycyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhLmlzRWRpdCAmJiAhdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZhbFRlYW1JZCkge1xuICAgICAgICAgICAgdGhpcy52aWV3U2VydmljZS5yZXNldFRlYW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NlbGVjdE1vZGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5yZXNldFZpZXcoKTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRTZWxlY3RlZEFwcHJvdmVycyhhcHByb3ZlcnM6IEFwcHJvdmFsVXNlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzID0gYXBwcm92ZXJzO1xuXG4gICAgICAgIHRoaXMuX2NvbmZpcm1TZWxlY3RlZEFwcHJvdmVycygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbmZpcm1TZWxlY3RlZEFwcHJvdmVycygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhLm5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kYXRhLm5vZGUuYXBwcm92ZXJzID0gdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnM7XG4gICAgICAgIHRoaXMuX2RhdGEubm9kZS52YXJpb3VzVGVhbXMgPSB0aGlzLl9kYXRhLm5vZGUuYXBwcm92ZXJzLnNvbWUoXG4gICAgICAgICAgICAodSkgPT4gdS50ZWFtSWQgIT09IHRoaXMuX2RhdGEubm9kZSEuYXBwcm92ZXJzWzBdLnRlYW1JZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9kYXRhLm5vZGUuZGVzY3JpcHRpb24gPSB0aGlzLl9kYXRhLm5vZGUudmFyaW91c1RlYW1zID8gJycgOiB0aGlzLl9zZWxlY3RlZEFwcHJvdmVyc1swXT8uZGVzY3JpcHRpb247XG5cbiAgICAgICAgZGVsZXRlIHRoaXMuX2RhdGEubm9kZS5hcHByb3ZhbFRlYW1JZDtcbiAgICAgICAgZGVsZXRlIHRoaXMuX2RhdGEubm9kZS5pc0V2ZXJ5b25lQXBwcm92YWxOZWVkZWQ7XG5cbiAgICAgICAgdGhpcy5fZXhpdFNlbGVjdE1vZGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRTZWxlY3RlZFRlYW0odGVhbTogQXBwcm92YWxUZWFtKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2VsZWN0VGVhbSh0ZWFtKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb25maXJtU2VsZWN0ZWRUZWFtKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudmlld1NlcnZpY2UudGVhbSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbSA9IHRoaXMudmlld1NlcnZpY2UudGVhbTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtQXJyYXkgPSBbdGhpcy52aWV3U2VydmljZS50ZWFtXTtcblxuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUudmFyaW91c1RlYW1zID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuYXBwcm92YWxUZWFtSWQgPSB0aGlzLnZpZXdTZXJ2aWNlLnRlYW0uaWQ7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuZGVzY3JpcHRpb24gPSB0aGlzLnZpZXdTZXJ2aWNlLnRlYW0ubmFtZTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5pc0V2ZXJ5b25lQXBwcm92YWxOZWVkZWQgPSB0aGlzLl9hcHByb3ZlclR5cGUgPT09IEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMuRVZFUllPTkU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9leGl0U2VsZWN0TW9kZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlZVVzZXJEZXRhaWxzKHVzZXI6IEFwcHJvdmFsVXNlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KFZJRVdfTU9ERVMuVVNFUl9ERVRBSUxTKTtcblxuICAgICAgICB0aGlzLl91c2VyVG9TaG93RGV0YWlscyA9IHVzZXI7XG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSQgPSB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLmRhdGFQcm92aWRlci5nZXRPbmUobmV3IE1hcChbWydpZCcsIHVzZXIuaWRdXSkpO1xuXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhpdFVzZXJEZXRhaWxzTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50Vmlldyh0aGlzLnZpZXdTZXJ2aWNlLnRlYW0gPyBWSUVXX01PREVTLlZJRVdfVEVBTV9NRU1CRVJTIDogVklFV19NT0RFUy5TRUxFQ1RfVVNFUik7XG5cbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHMgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF92aWV3VGVhbU1lbWJlcnModGVhbTogQXBwcm92YWxUZWFtKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2VsZWN0VGVhbSh0ZWFtKTtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50VmlldyhWSUVXX01PREVTLlZJRVdfVEVBTV9NRU1CRVJTKTtcblxuICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzID0gdGVhbS5tZW1iZXJzO1xuXG4gICAgICAgIHRoaXMuX3NldEZpbHRlcmVkVGVhbU1lbWJlcnModGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycyk7IC8vIGFwcGx5aW5nIGxvY2FsIGZpbHRlcmluZ1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2V4aXRUZWFtTWVtYmVyc01vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcoVklFV19NT0RFUy5TRUxFQ1RfVEVBTSk7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2UucmVzZXRUZWFtKCk7XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycyA9IFtdO1xuXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc3VibWl0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlICYmICF0aGlzLl9pc1NpbmdsZVVzZXJNb2RlICYmIHRoaXMuX3NlbGVjdGVkVGVhbSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmFwcHJvdmVycyA9IFsuLi50aGlzLl9zZWxlY3RlZFRlYW0ubWVtYmVyc107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlICYmIHRoaXMuX2NoZWNrRHVlRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmR1ZURhdGUgPSB0aGlzLl9kdWVEYXRlLnRvRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgICAgbm9kZTogdGhpcy5fZGF0YS5ub2RlLFxuICAgICAgICAgICAgbm9kZVR5cGU6IHRoaXMuX25vZGVUeXBlLFxuICAgICAgICAgICAgdG9OZXh0U2VyaWFsOiB0aGlzLl9hZGRUb05leHRTZXJpYWxcbiAgICAgICAgfSBhcyBBZGROb2RlRGlhbG9nRm9ybURhdGEpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uU2VhcmNoU3RyaW5nQ2hhbmdlKHNlYXJjaFN0cmluZyA9ICcnKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBNYXAoW1sncXVlcnknLCBzZWFyY2hTdHJpbmddXSk7XG5cbiAgICAgICAgaWYgKHRoaXMudmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5tYXRjaChwYXJhbXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS50ZWFtRGF0YVNvdXJjZS5tYXRjaChwYXJhbXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmlld1NlcnZpY2UuaXNUZWFtTWVtYmVyc01vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEZpbHRlcmVkVGVhbU1lbWJlcnModGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycy5maWx0ZXIoKHVzZXIpID0+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+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhX3NlbGVjdE1vZGVcIj5cbiAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQWRkQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfaXNNYWluU3VibWl0QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfc3VibWl0KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQ2FuY2VsQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoKVwiXG4gICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3NlbGVjdE1vZGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlXCI+XG4gICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZVNlbGVjdEFwcHJvdmVyQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIV9zZWxlY3RlZEFwcHJvdmVycy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2NvbmZpcm1TZWxlY3RlZEFwcHJvdmVycygpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuXG4gICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQ2FuY2VsQXBwcm92ZXJTZWxlY3Rpb25BY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFNlbGVjdE1vZGUoKVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVTZWxlY3RBcHByb3ZlckFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFfc2VsZWN0ZWRUZWFtICYmICF2aWV3U2VydmljZS50ZWFtXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9jb25maXJtU2VsZWN0ZWRUZWFtKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG5cbiAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVDYW5jZWxBcHByb3ZlclNlbGVjdGlvbkFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0U2VsZWN0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUFwcHJvdmVyT3JUZWFtRGV0YWlsc0Nsb3NlQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2V4aXRUZWFtTWVtYmVyc01vZGUoKVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNVc2VyRGV0YWlsc01vZGVcIj5cbiAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVBcHByb3Zlck9yVGVhbURldGFpbHNDbG9zZUFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0VXNlckRldGFpbHNNb2RlKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxuPC9mZC1kaWFsb2c+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RwbD5cbiAgICA8ZmQtYnVzeS1pbmRpY2F0b3IgW2xvYWRpbmddPVwidHJ1ZVwiIFtibG9ja109XCJ0cnVlXCI+IDwvZmQtYnVzeS1pbmRpY2F0b3I+XG48L25nLXRlbXBsYXRlPlxuIl19