mobicloud-core 1.0.340 → 1.0.341

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.
@@ -10,5 +10,7 @@ export declare class TimeSplitSupplement extends DomainObject {
10
10
  Category?: TimeCategory | undefined;
11
11
  SplitRuleId?: string | undefined;
12
12
  SplitRule?: TimeSplitRule | undefined;
13
+ StartTime?: number | undefined;
14
+ StopTime?: number | undefined;
13
15
  get TimeUnitString(): string;
14
16
  }
@@ -15,4 +15,4 @@ export class TimeSplitSupplement extends DomainObject {
15
15
  }
16
16
  }
17
17
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1zcGxpdC1zdXBwbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBpL3R5cGVzL3RpbWUtc3BsaXQtc3VwcGxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzlDLE9BQU8sd0JBQXdCLENBQUM7QUFFaEMsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFlBQVk7SUFRakQsSUFBSSxjQUFjO1FBQ2QsUUFBTyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQzlCLEtBQUssZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO2dCQUN6QyxPQUFPLFNBQVMsQ0FBQSwyQ0FBMkMsQ0FBQztZQUNoRSxLQUFLLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztnQkFDNUMsT0FBTyxTQUFTLENBQUEsaURBQWlELENBQUM7WUFDdEUsS0FBSyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7Z0JBQzNDLE9BQU8sU0FBUyxDQUFBLCtDQUErQyxDQUFDO1lBQ3RFO2dCQUNFLE9BQU8sU0FBUyxDQUFBLHlDQUF5QyxDQUFDO1NBQzdEO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9tYWluT2JqZWN0IH0gZnJvbSBcIi4vZG9tYWluLW9iamVjdFwiO1xuaW1wb3J0IHsgVGltZUNhdGVnb3J5IH0gZnJvbSBcIi4vdGltZS1jYXRlZ29yeVwiO1xuaW1wb3J0IHsgVGltZVNwbGl0UnVsZSB9IGZyb20gXCIuL3RpbWUtc3BsaXQtcnVsZVwiO1xuaW1wb3J0IHsgVGltZVF1YW50aXR5VW5pdCB9IGZyb20gXCIuL2FsbC5lbnVtXCI7XG5pbXBvcnQgJ0Bhbmd1bGFyL2xvY2FsaXplL2luaXQnO1xuXG5leHBvcnQgY2xhc3MgVGltZVNwbGl0U3VwcGxlbWVudCBleHRlbmRzIERvbWFpbk9iamVjdCB7XG4gICAgU3VwcGxlbWVudElkPzogICAgICAgICAgICAgIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBUaW1lVW5pdD86ICAgICAgICAgICAgICAgICAgVGltZVF1YW50aXR5VW5pdCB8IHVuZGVmaW5lZDtcbiAgICBDYXRlZ29yeUlkPzogICAgICAgICAgICAgICAgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIENhdGVnb3J5PzogICAgICAgICAgICAgICAgICBUaW1lQ2F0ZWdvcnkgfCB1bmRlZmluZWQ7XG4gICAgU3BsaXRSdWxlSWQ/OiAgICAgICAgICAgICAgICBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgU3BsaXRSdWxlPzogICAgICAgICAgICAgICAgICBUaW1lU3BsaXRSdWxlIHwgdW5kZWZpbmVkO1xuICAgIFxuICAgIGdldCBUaW1lVW5pdFN0cmluZygpIDogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoKHRoaXMuVGltZVVuaXQ/LnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgIGNhc2UgVGltZVF1YW50aXR5VW5pdFtUaW1lUXVhbnRpdHlVbml0LkhvdXJzXTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJGxvY2FsaXplYDpAQEVudW1WYWx1ZS1UaW1lUXVhbnRpdHlVbml0LUhvdXJzOkhvdXJzYDtcbiAgICAgICAgICAgIGNhc2UgVGltZVF1YW50aXR5VW5pdFtUaW1lUXVhbnRpdHlVbml0LlF1YW50aXR5XTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJGxvY2FsaXplYDpAQEVudW1WYWx1ZS1UaW1lUXVhbnRpdHlVbml0LVF1YW50aXR5OlF1YW50aXR5YDsgICBcbiAgICAgICAgICAgIGNhc2UgVGltZVF1YW50aXR5VW5pdFtUaW1lUXVhbnRpdHlVbml0LlBlcmNlbnRdOlxuICAgICAgICAgICAgICAgIHJldHVybiAkbG9jYWxpemVgOkBARW51bVZhbHVlLVRpbWVRdWFudGl0eVVuaXQtUGVyY2VudDpQZXJjZW50YDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICRsb2NhbGl6ZWA6QEBFbnVtVmFsdWUtVGltZVF1YW50aXR5VW5pdC1Ob25lOk5vbmVgO1xuICAgICAgICB9XG4gICAgfSBcbn1cbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1zcGxpdC1zdXBwbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBpL3R5cGVzL3RpbWUtc3BsaXQtc3VwcGxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzlDLE9BQU8sd0JBQXdCLENBQUM7QUFFaEMsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFlBQVk7SUFTakQsSUFBSSxjQUFjO1FBQ2QsUUFBTyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQzlCLEtBQUssZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO2dCQUN6QyxPQUFPLFNBQVMsQ0FBQSwyQ0FBMkMsQ0FBQztZQUNoRSxLQUFLLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztnQkFDNUMsT0FBTyxTQUFTLENBQUEsaURBQWlELENBQUM7WUFDdEUsS0FBSyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7Z0JBQzNDLE9BQU8sU0FBUyxDQUFBLCtDQUErQyxDQUFDO1lBQ3RFO2dCQUNFLE9BQU8sU0FBUyxDQUFBLHlDQUF5QyxDQUFDO1NBQzdEO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9tYWluT2JqZWN0IH0gZnJvbSBcIi4vZG9tYWluLW9iamVjdFwiO1xuaW1wb3J0IHsgVGltZUNhdGVnb3J5IH0gZnJvbSBcIi4vdGltZS1jYXRlZ29yeVwiO1xuaW1wb3J0IHsgVGltZVNwbGl0UnVsZSB9IGZyb20gXCIuL3RpbWUtc3BsaXQtcnVsZVwiO1xuaW1wb3J0IHsgVGltZVF1YW50aXR5VW5pdCB9IGZyb20gXCIuL2FsbC5lbnVtXCI7XG5pbXBvcnQgJ0Bhbmd1bGFyL2xvY2FsaXplL2luaXQnO1xuXG5leHBvcnQgY2xhc3MgVGltZVNwbGl0U3VwcGxlbWVudCBleHRlbmRzIERvbWFpbk9iamVjdCB7XG4gICAgU3VwcGxlbWVudElkPzogICAgICAgICAgICAgIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBUaW1lVW5pdD86ICAgICAgICAgICAgICAgICAgVGltZVF1YW50aXR5VW5pdCB8IHVuZGVmaW5lZDtcbiAgICBDYXRlZ29yeUlkPzogICAgICAgICAgICAgICAgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIENhdGVnb3J5PzogICAgICAgICAgICAgICAgICBUaW1lQ2F0ZWdvcnkgfCB1bmRlZmluZWQ7XG4gICAgU3BsaXRSdWxlSWQ/OiAgICAgICAgICAgICAgICBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgU3BsaXRSdWxlPzogICAgICAgICAgICAgICAgICBUaW1lU3BsaXRSdWxlIHwgdW5kZWZpbmVkO1xuICAgIFN0YXJ0VGltZT86ICAgICAgICAgICAgICAgICBudW1iZXIgfCB1bmRlZmluZWQ7ICAgICBcbiAgICBTdG9wVGltZT86ICAgICAgICAgICAgICAgICAgbnVtYmVyIHwgdW5kZWZpbmVkOyAgIFxuICAgIGdldCBUaW1lVW5pdFN0cmluZygpIDogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoKHRoaXMuVGltZVVuaXQ/LnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgIGNhc2UgVGltZVF1YW50aXR5VW5pdFtUaW1lUXVhbnRpdHlVbml0LkhvdXJzXTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJGxvY2FsaXplYDpAQEVudW1WYWx1ZS1UaW1lUXVhbnRpdHlVbml0LUhvdXJzOkhvdXJzYDtcbiAgICAgICAgICAgIGNhc2UgVGltZVF1YW50aXR5VW5pdFtUaW1lUXVhbnRpdHlVbml0LlF1YW50aXR5XTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJGxvY2FsaXplYDpAQEVudW1WYWx1ZS1UaW1lUXVhbnRpdHlVbml0LVF1YW50aXR5OlF1YW50aXR5YDsgICBcbiAgICAgICAgICAgIGNhc2UgVGltZVF1YW50aXR5VW5pdFtUaW1lUXVhbnRpdHlVbml0LlBlcmNlbnRdOlxuICAgICAgICAgICAgICAgIHJldHVybiAkbG9jYWxpemVgOkBARW51bVZhbHVlLVRpbWVRdWFudGl0eVVuaXQtUGVyY2VudDpQZXJjZW50YDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICRsb2NhbGl6ZWA6QEBFbnVtVmFsdWUtVGltZVF1YW50aXR5VW5pdC1Ob25lOk5vbmVgO1xuICAgICAgICB9XG4gICAgfSBcbn1cbiJdfQ==
@@ -195,10 +195,10 @@ export class EmployeeUserInfoComponent {
195
195
  }
196
196
  }
197
197
  EmployeeUserInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EmployeeUserInfoComponent, deps: [{ token: i1.MobicloudCoreService }, { token: i2.MobiCloudDataService }, { token: i3.MatDialog }, { token: i1.UsernameValidator }], target: i0.ɵɵFactoryTarget.Component });
198
- EmployeeUserInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: EmployeeUserInfoComponent, selector: "mobicloud-employee-user-info", inputs: { employee: "employee", employee_expands: "employee_expands", editAllowed: "editAllowed", inEditMode: "inEditMode", width: "width", contentheight: "contentheight", isLoadingData: "isLoadingData", loadingText: "loadingText", hasErrors: "hasErrors", errorText: "errorText" }, outputs: { employeeChanged: "employeeChanged" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "datagrids", predicate: DxDataGridComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mobicloud-group-box title=\"User Info\" i18n-title=\"@@CaptionHeader-UserInfo\" [width]=\"[width]\" [contentheight]=[contentheight] class=\"employeeUserInfoForm\" [isLoadingData]=\"isLoadingData\" [loadingText]=\"loadingText\" \n [editAllowed]=\"editAllowed\" [inEditMode]=\"inEditMode\" [hasErrors]=\"hasErrors\" errorCaption=\"Error\" i18n-errorCaption=\"@@CaptionHeader-Error\" [errorText]=\"errorText\" [enableRetryOnError]=\"true\"\n (Edit_Click)=\"onEditClick()\" (Save_Click)=\"onSaveClick()\" (CancelEdit_Click)=\"onCancelEditClick()\" (Retry_Click)=\"onRetryClick()\">\n\n <form>\n <dx-form #form id=\"form\"\n [formData]=\"formEmployee\"\n [readOnly]=\"!inEditMode\"\n [showColonAfterLabel]=\"true\"\n labelLocation=\"top\"\n [showValidationSummary]=\"false\" \n [showRequiredMark] = \"false\"\n validationGroup=\"formEmployeeData_UserInfo\">\n\n <dxi-item itemType=\"group\" caption=\"\" [colCount]=\"2\">\n <dxi-item dataField=\"Active\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_Status\">\n <dxo-label text=\"Status\" i18n-text=\"@@FieldCaption-Status\"></dxo-label>\n </dxi-item> \n <dxi-item dataField=\"LoginInfo_AppLogin\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_AppLogin\">\n <dxo-label text=\"Type\" i18n-text=\"@@FieldCaption-Type\"></dxo-label>\n </dxi-item>\n\n <dxi-item dataField=\"LoginInfo_Username\" *ngIf=\"(formEmployee && formEmployee.LoginInfo_AppLogin) && !certificateLogin\">\n <dxo-label text=\"Username\" i18n-text=\"@@FieldCaption-Username\"></dxo-label>\n <dxi-validation-rule type=\"required\" message=\"Username is required\" i18n-message=\"@@ValidationText-Username-Required\" *ngIf=\"inEditMode\"></dxi-validation-rule>\n <dxi-validation-rule *ngIf=\"inEditMode\" \n type=\"async\" \n [validationCallback]=\"usernameValidation\">\n </dxi-validation-rule> \n </dxi-item>\n\n <dxi-item dataField=\"EmployeeNumber\" [editorOptions]=\"editorOptions_EmployeeNumber\">\n <dxo-label text=\"Employee no.\" i18n-text=\"@@FieldCaption-EmployeeNumber\"></dxo-label> \n </dxi-item>\n\n <dxi-item dataField=\"Substitute\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_Substitute\">\n <dxo-label text=\"Substitute\" i18n-text=\"@@FieldCaption-Substitute\"></dxo-label>\n </dxi-item> \n\n <dxi-item dataField=\"ResourceColor\" [colSpan]=\"certificateLogin ? 2 : 1\" editorType=\"dxColorBox\">\n <dxo-label text=\"Color\" i18n-text=\"@@FieldCaption-Color\"></dxo-label>\n </dxi-item> \n\n <dxi-item dataField=\"Email\" [colSpan]=\"2\" [editorOptions]=\"{ inputAttr: {'autocomplete': 'email'} }\">\n <dxo-label text=\"Email\" i18n-text=\"@@FieldCaption-Email\"></dxo-label> \n <dxi-validation-rule type=\"required\" message=\"Email is required\" i18n-message=\"@@ValidationText-Email-Required\" *ngIf=\"inEditMode && (formEmployee && formEmployee.LoginInfo_AppLogin)\"></dxi-validation-rule>\n <dxi-validation-rule type=\"email\" message=\"Email is invalid\" i18n-message=\"@@ValidationText-Email-Invalid\"></dxi-validation-rule> \n </dxi-item> \n\n <dxi-item dataField=\"RecognitionType\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_RecognitionType\">\n <dxo-label text=\"Recognitionn type\" i18n-text=\"@@FieldCaption-RecognitionType\"></dxo-label>\n </dxi-item>\n\n <dxi-item dataField=\"Pincode\" editorType=\"dxTextBox\" [editorOptions]=\"editorOptions_Pincode\">\n <dxo-label text=\"Pin code\" i18n-text=\"@@FieldCaption-Pincode\"></dxo-label>\n </dxi-item> \n\n <dxi-item dataField=\"QA_Consignment_Validation\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_QA_Consignment_Validation\">\n <dxo-label text=\"Consignment validation\" i18n-text=\"@@FieldCaption-ConsignmentValidation\"></dxo-label>\n </dxi-item>\n\n </dxi-item> \n \n </dx-form>\n </form>\n</mobicloud-group-box>", styles: [".password-button-icon{padding-bottom:6px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.DxiItemComponent, selector: "dxi-item", inputs: ["disabled", "html", "icon", "template", "text", "title", "titleTemplate", "visible", "onClick", "stylingMode", "type", "baseSize", "box", "ratio", "shrink", "elementAttr", "hint", "beginGroup", "closeMenuOnClick", "items", "selectable", "selected", "colSpan", "cssClass", "dataField", "editorOptions", "editorType", "helpText", "isRequired", "itemType", "label", "name", "validationRules", "visibleIndex", "alignItemLabels", "caption", "colCount", "colCountByScreen", "tabPanelOptions", "tabs", "badge", "tabTemplate", "buttonOptions", "horizontalAlignment", "verticalAlignment", "locateInMenu", "location", "menuItemTemplate", "options", "showText", "widget", "height", "width", "imageAlt", "imageSrc", "acceptedValues", "formatName", "formatValues", "key", "showChevron", "linkAttr", "url", "heightRatio", "widthRatio", "expanded", "hasItems", "id", "parentId"] }, { kind: "component", type: i5.DxoLabelComponent, selector: "dxo-label", inputs: ["connectorColor", "connectorWidth", "customizeText", "font", "format", "indent", "visible", "horizontalAlignment", "position", "text", "verticalAlignment", "alignment", "customizeHint", "displayMode", "indentFromAxis", "overlappingBehavior", "rotationAngle", "staggeringSpacing", "template", "textOverflow", "wordWrap", "argumentFormat", "backgroundColor", "border", "connector", "displayFormat", "horizontalOffset", "showForZeroValues", "verticalOffset", "hideFirstOrLast", "indentFromTick", "useRangeColors", "location", "showColon", "radialOffset", "topIndent", "shadow", "useNodeColors", "dataField", "enabled"] }, { kind: "component", type: i5.DxiValidationRuleComponent, selector: "dxi-validation-rule", inputs: ["message", "trim", "type", "ignoreEmptyValue", "max", "min", "reevaluate", "validationCallback", "comparisonTarget", "comparisonType", "pattern"] }, { kind: "component", type: i6.DxFormComponent, selector: "dx-form", inputs: ["accessKey", "activeStateEnabled", "alignItemLabels", "alignItemLabelsInAllGroups", "colCount", "colCountByScreen", "customizeItem", "disabled", "elementAttr", "focusStateEnabled", "formData", "height", "hint", "hoverStateEnabled", "isDirty", "items", "labelLocation", "labelMode", "minColWidth", "optionalMark", "readOnly", "requiredMark", "requiredMessage", "rtlEnabled", "screenByWidth", "scrollingEnabled", "showColonAfterLabel", "showOptionalMark", "showRequiredMark", "showValidationSummary", "tabIndex", "validationGroup", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onEditorEnterKey", "onFieldDataChanged", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "alignItemLabelsChange", "alignItemLabelsInAllGroupsChange", "colCountChange", "colCountByScreenChange", "customizeItemChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "formDataChange", "heightChange", "hintChange", "hoverStateEnabledChange", "isDirtyChange", "itemsChange", "labelLocationChange", "labelModeChange", "minColWidthChange", "optionalMarkChange", "readOnlyChange", "requiredMarkChange", "requiredMessageChange", "rtlEnabledChange", "screenByWidthChange", "scrollingEnabledChange", "showColonAfterLabelChange", "showOptionalMarkChange", "showRequiredMarkChange", "showValidationSummaryChange", "tabIndexChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i7.GroupBoxComponent, selector: "mobicloud-group-box", inputs: ["width", "contentheight", "noBackgroundHeader", "title", "isLoadingData", "loadingText", "hasErrors", "errorCaption", "errorText", "enableRetryOnError", "editAllowed", "inEditMode"], outputs: ["Edit_Click", "Save_Click", "CancelEdit_Click", "Retry_Click"] }] });
198
+ EmployeeUserInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: EmployeeUserInfoComponent, selector: "mobicloud-employee-user-info", inputs: { employee: "employee", employee_expands: "employee_expands", editAllowed: "editAllowed", inEditMode: "inEditMode", width: "width", contentheight: "contentheight", isLoadingData: "isLoadingData", loadingText: "loadingText", hasErrors: "hasErrors", errorText: "errorText" }, outputs: { employeeChanged: "employeeChanged" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "datagrids", predicate: DxDataGridComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mobicloud-group-box title=\"User Info\" i18n-title=\"@@CaptionHeader-UserInfo\" [width]=\"[width]\" [contentheight]=[contentheight] class=\"employeeUserInfoForm\" [isLoadingData]=\"isLoadingData\" [loadingText]=\"loadingText\" \n [editAllowed]=\"editAllowed\" [inEditMode]=\"inEditMode\" [hasErrors]=\"hasErrors\" errorCaption=\"Error\" i18n-errorCaption=\"@@CaptionHeader-Error\" [errorText]=\"errorText\" [enableRetryOnError]=\"true\"\n (Edit_Click)=\"onEditClick()\" (Save_Click)=\"onSaveClick()\" (CancelEdit_Click)=\"onCancelEditClick()\" (Retry_Click)=\"onRetryClick()\">\n\n <form>\n <dx-form #form id=\"form\"\n [formData]=\"formEmployee\"\n [readOnly]=\"!inEditMode\"\n [showColonAfterLabel]=\"true\"\n labelLocation=\"top\"\n [showValidationSummary]=\"false\" \n [showRequiredMark] = \"false\"\n validationGroup=\"formEmployeeData_UserInfo\">\n\n <dxi-item itemType=\"group\" caption=\"\" [colCount]=\"2\">\n <dxi-item dataField=\"Active\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_Status\">\n <dxo-label text=\"Status\" i18n-text=\"@@FieldCaption-Status\"></dxo-label>\n </dxi-item> \n <dxi-item dataField=\"LoginInfo_AppLogin\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_AppLogin\">\n <dxo-label text=\"Type\" i18n-text=\"@@FieldCaption-Type\"></dxo-label>\n </dxi-item>\n\n <dxi-item dataField=\"LoginInfo_Username\" *ngIf=\"(formEmployee && formEmployee.LoginInfo_AppLogin) && !certificateLogin\">\n <dxo-label text=\"Username\" i18n-text=\"@@FieldCaption-Username\"></dxo-label>\n <dxi-validation-rule type=\"required\" message=\"Username is required\" i18n-message=\"@@ValidationText-Username-Required\" *ngIf=\"inEditMode\"></dxi-validation-rule>\n <dxi-validation-rule *ngIf=\"inEditMode\" \n type=\"async\" \n [validationCallback]=\"usernameValidation\">\n </dxi-validation-rule> \n </dxi-item>\n\n <dxi-item dataField=\"EmployeeNumber\" [editorOptions]=\"editorOptions_EmployeeNumber\">\n <dxo-label text=\"Employee no.\" i18n-text=\"@@FieldCaption-EmployeeNumber\"></dxo-label> \n </dxi-item>\n\n <dxi-item dataField=\"Substitute\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_Substitute\">\n <dxo-label text=\"Substitute\" i18n-text=\"@@FieldCaption-Substitute\"></dxo-label>\n </dxi-item> \n\n <dxi-item dataField=\"ResourceColor\" [colSpan]=\"certificateLogin ? 2 : 1\" editorType=\"dxColorBox\">\n <dxo-label text=\"Color\" i18n-text=\"@@FieldCaption-Color\"></dxo-label>\n </dxi-item> \n\n <dxi-item dataField=\"Email\" [colSpan]=\"2\" [editorOptions]=\"{ inputAttr: {'autocomplete': 'email'} }\">\n <dxo-label text=\"Email\" i18n-text=\"@@FieldCaption-Email\"></dxo-label> \n <dxi-validation-rule type=\"required\" message=\"Email is required\" i18n-message=\"@@ValidationText-Email-Required\" *ngIf=\"inEditMode && (formEmployee && formEmployee.LoginInfo_AppLogin)\"></dxi-validation-rule>\n <dxi-validation-rule type=\"email\" message=\"Email is invalid\" i18n-message=\"@@ValidationText-Email-Invalid\"></dxi-validation-rule> \n </dxi-item> \n\n <dxi-item dataField=\"RecognitionType\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_RecognitionType\">\n <dxo-label text=\"Recognition type\" i18n-text=\"@@FieldCaption-RecognitionType\"></dxo-label>\n </dxi-item>\n\n <dxi-item dataField=\"Pincode\" editorType=\"dxTextBox\" [editorOptions]=\"editorOptions_Pincode\">\n <dxo-label text=\"Pin code\" i18n-text=\"@@FieldCaption-Pincode\"></dxo-label>\n </dxi-item> \n\n <dxi-item dataField=\"QA_Consignment_Validation\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_QA_Consignment_Validation\">\n <dxo-label text=\"Consignment validation\" i18n-text=\"@@FieldCaption-ConsignmentValidation\"></dxo-label>\n </dxi-item>\n\n </dxi-item> \n \n </dx-form>\n </form>\n</mobicloud-group-box>", styles: [".password-button-icon{padding-bottom:6px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.DxiItemComponent, selector: "dxi-item", inputs: ["disabled", "html", "icon", "template", "text", "title", "titleTemplate", "visible", "onClick", "stylingMode", "type", "baseSize", "box", "ratio", "shrink", "elementAttr", "hint", "beginGroup", "closeMenuOnClick", "items", "selectable", "selected", "colSpan", "cssClass", "dataField", "editorOptions", "editorType", "helpText", "isRequired", "itemType", "label", "name", "validationRules", "visibleIndex", "alignItemLabels", "caption", "colCount", "colCountByScreen", "tabPanelOptions", "tabs", "badge", "tabTemplate", "buttonOptions", "horizontalAlignment", "verticalAlignment", "locateInMenu", "location", "menuItemTemplate", "options", "showText", "widget", "height", "width", "imageAlt", "imageSrc", "acceptedValues", "formatName", "formatValues", "key", "showChevron", "linkAttr", "url", "heightRatio", "widthRatio", "expanded", "hasItems", "id", "parentId"] }, { kind: "component", type: i5.DxoLabelComponent, selector: "dxo-label", inputs: ["connectorColor", "connectorWidth", "customizeText", "font", "format", "indent", "visible", "horizontalAlignment", "position", "text", "verticalAlignment", "alignment", "customizeHint", "displayMode", "indentFromAxis", "overlappingBehavior", "rotationAngle", "staggeringSpacing", "template", "textOverflow", "wordWrap", "argumentFormat", "backgroundColor", "border", "connector", "displayFormat", "horizontalOffset", "showForZeroValues", "verticalOffset", "hideFirstOrLast", "indentFromTick", "useRangeColors", "location", "showColon", "radialOffset", "topIndent", "shadow", "useNodeColors", "dataField", "enabled"] }, { kind: "component", type: i5.DxiValidationRuleComponent, selector: "dxi-validation-rule", inputs: ["message", "trim", "type", "ignoreEmptyValue", "max", "min", "reevaluate", "validationCallback", "comparisonTarget", "comparisonType", "pattern"] }, { kind: "component", type: i6.DxFormComponent, selector: "dx-form", inputs: ["accessKey", "activeStateEnabled", "alignItemLabels", "alignItemLabelsInAllGroups", "colCount", "colCountByScreen", "customizeItem", "disabled", "elementAttr", "focusStateEnabled", "formData", "height", "hint", "hoverStateEnabled", "isDirty", "items", "labelLocation", "labelMode", "minColWidth", "optionalMark", "readOnly", "requiredMark", "requiredMessage", "rtlEnabled", "screenByWidth", "scrollingEnabled", "showColonAfterLabel", "showOptionalMark", "showRequiredMark", "showValidationSummary", "tabIndex", "validationGroup", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onEditorEnterKey", "onFieldDataChanged", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "alignItemLabelsChange", "alignItemLabelsInAllGroupsChange", "colCountChange", "colCountByScreenChange", "customizeItemChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "formDataChange", "heightChange", "hintChange", "hoverStateEnabledChange", "isDirtyChange", "itemsChange", "labelLocationChange", "labelModeChange", "minColWidthChange", "optionalMarkChange", "readOnlyChange", "requiredMarkChange", "requiredMessageChange", "rtlEnabledChange", "screenByWidthChange", "scrollingEnabledChange", "showColonAfterLabelChange", "showOptionalMarkChange", "showRequiredMarkChange", "showValidationSummaryChange", "tabIndexChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i7.GroupBoxComponent, selector: "mobicloud-group-box", inputs: ["width", "contentheight", "noBackgroundHeader", "title", "isLoadingData", "loadingText", "hasErrors", "errorCaption", "errorText", "enableRetryOnError", "editAllowed", "inEditMode"], outputs: ["Edit_Click", "Save_Click", "CancelEdit_Click", "Retry_Click"] }] });
199
199
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EmployeeUserInfoComponent, decorators: [{
200
200
  type: Component,
201
- args: [{ selector: 'mobicloud-employee-user-info', template: "<mobicloud-group-box title=\"User Info\" i18n-title=\"@@CaptionHeader-UserInfo\" [width]=\"[width]\" [contentheight]=[contentheight] class=\"employeeUserInfoForm\" [isLoadingData]=\"isLoadingData\" [loadingText]=\"loadingText\" \n [editAllowed]=\"editAllowed\" [inEditMode]=\"inEditMode\" [hasErrors]=\"hasErrors\" errorCaption=\"Error\" i18n-errorCaption=\"@@CaptionHeader-Error\" [errorText]=\"errorText\" [enableRetryOnError]=\"true\"\n (Edit_Click)=\"onEditClick()\" (Save_Click)=\"onSaveClick()\" (CancelEdit_Click)=\"onCancelEditClick()\" (Retry_Click)=\"onRetryClick()\">\n\n <form>\n <dx-form #form id=\"form\"\n [formData]=\"formEmployee\"\n [readOnly]=\"!inEditMode\"\n [showColonAfterLabel]=\"true\"\n labelLocation=\"top\"\n [showValidationSummary]=\"false\" \n [showRequiredMark] = \"false\"\n validationGroup=\"formEmployeeData_UserInfo\">\n\n <dxi-item itemType=\"group\" caption=\"\" [colCount]=\"2\">\n <dxi-item dataField=\"Active\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_Status\">\n <dxo-label text=\"Status\" i18n-text=\"@@FieldCaption-Status\"></dxo-label>\n </dxi-item> \n <dxi-item dataField=\"LoginInfo_AppLogin\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_AppLogin\">\n <dxo-label text=\"Type\" i18n-text=\"@@FieldCaption-Type\"></dxo-label>\n </dxi-item>\n\n <dxi-item dataField=\"LoginInfo_Username\" *ngIf=\"(formEmployee && formEmployee.LoginInfo_AppLogin) && !certificateLogin\">\n <dxo-label text=\"Username\" i18n-text=\"@@FieldCaption-Username\"></dxo-label>\n <dxi-validation-rule type=\"required\" message=\"Username is required\" i18n-message=\"@@ValidationText-Username-Required\" *ngIf=\"inEditMode\"></dxi-validation-rule>\n <dxi-validation-rule *ngIf=\"inEditMode\" \n type=\"async\" \n [validationCallback]=\"usernameValidation\">\n </dxi-validation-rule> \n </dxi-item>\n\n <dxi-item dataField=\"EmployeeNumber\" [editorOptions]=\"editorOptions_EmployeeNumber\">\n <dxo-label text=\"Employee no.\" i18n-text=\"@@FieldCaption-EmployeeNumber\"></dxo-label> \n </dxi-item>\n\n <dxi-item dataField=\"Substitute\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_Substitute\">\n <dxo-label text=\"Substitute\" i18n-text=\"@@FieldCaption-Substitute\"></dxo-label>\n </dxi-item> \n\n <dxi-item dataField=\"ResourceColor\" [colSpan]=\"certificateLogin ? 2 : 1\" editorType=\"dxColorBox\">\n <dxo-label text=\"Color\" i18n-text=\"@@FieldCaption-Color\"></dxo-label>\n </dxi-item> \n\n <dxi-item dataField=\"Email\" [colSpan]=\"2\" [editorOptions]=\"{ inputAttr: {'autocomplete': 'email'} }\">\n <dxo-label text=\"Email\" i18n-text=\"@@FieldCaption-Email\"></dxo-label> \n <dxi-validation-rule type=\"required\" message=\"Email is required\" i18n-message=\"@@ValidationText-Email-Required\" *ngIf=\"inEditMode && (formEmployee && formEmployee.LoginInfo_AppLogin)\"></dxi-validation-rule>\n <dxi-validation-rule type=\"email\" message=\"Email is invalid\" i18n-message=\"@@ValidationText-Email-Invalid\"></dxi-validation-rule> \n </dxi-item> \n\n <dxi-item dataField=\"RecognitionType\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_RecognitionType\">\n <dxo-label text=\"Recognitionn type\" i18n-text=\"@@FieldCaption-RecognitionType\"></dxo-label>\n </dxi-item>\n\n <dxi-item dataField=\"Pincode\" editorType=\"dxTextBox\" [editorOptions]=\"editorOptions_Pincode\">\n <dxo-label text=\"Pin code\" i18n-text=\"@@FieldCaption-Pincode\"></dxo-label>\n </dxi-item> \n\n <dxi-item dataField=\"QA_Consignment_Validation\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_QA_Consignment_Validation\">\n <dxo-label text=\"Consignment validation\" i18n-text=\"@@FieldCaption-ConsignmentValidation\"></dxo-label>\n </dxi-item>\n\n </dxi-item> \n \n </dx-form>\n </form>\n</mobicloud-group-box>", styles: [".password-button-icon{padding-bottom:6px}\n"] }]
201
+ args: [{ selector: 'mobicloud-employee-user-info', template: "<mobicloud-group-box title=\"User Info\" i18n-title=\"@@CaptionHeader-UserInfo\" [width]=\"[width]\" [contentheight]=[contentheight] class=\"employeeUserInfoForm\" [isLoadingData]=\"isLoadingData\" [loadingText]=\"loadingText\" \n [editAllowed]=\"editAllowed\" [inEditMode]=\"inEditMode\" [hasErrors]=\"hasErrors\" errorCaption=\"Error\" i18n-errorCaption=\"@@CaptionHeader-Error\" [errorText]=\"errorText\" [enableRetryOnError]=\"true\"\n (Edit_Click)=\"onEditClick()\" (Save_Click)=\"onSaveClick()\" (CancelEdit_Click)=\"onCancelEditClick()\" (Retry_Click)=\"onRetryClick()\">\n\n <form>\n <dx-form #form id=\"form\"\n [formData]=\"formEmployee\"\n [readOnly]=\"!inEditMode\"\n [showColonAfterLabel]=\"true\"\n labelLocation=\"top\"\n [showValidationSummary]=\"false\" \n [showRequiredMark] = \"false\"\n validationGroup=\"formEmployeeData_UserInfo\">\n\n <dxi-item itemType=\"group\" caption=\"\" [colCount]=\"2\">\n <dxi-item dataField=\"Active\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_Status\">\n <dxo-label text=\"Status\" i18n-text=\"@@FieldCaption-Status\"></dxo-label>\n </dxi-item> \n <dxi-item dataField=\"LoginInfo_AppLogin\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_AppLogin\">\n <dxo-label text=\"Type\" i18n-text=\"@@FieldCaption-Type\"></dxo-label>\n </dxi-item>\n\n <dxi-item dataField=\"LoginInfo_Username\" *ngIf=\"(formEmployee && formEmployee.LoginInfo_AppLogin) && !certificateLogin\">\n <dxo-label text=\"Username\" i18n-text=\"@@FieldCaption-Username\"></dxo-label>\n <dxi-validation-rule type=\"required\" message=\"Username is required\" i18n-message=\"@@ValidationText-Username-Required\" *ngIf=\"inEditMode\"></dxi-validation-rule>\n <dxi-validation-rule *ngIf=\"inEditMode\" \n type=\"async\" \n [validationCallback]=\"usernameValidation\">\n </dxi-validation-rule> \n </dxi-item>\n\n <dxi-item dataField=\"EmployeeNumber\" [editorOptions]=\"editorOptions_EmployeeNumber\">\n <dxo-label text=\"Employee no.\" i18n-text=\"@@FieldCaption-EmployeeNumber\"></dxo-label> \n </dxi-item>\n\n <dxi-item dataField=\"Substitute\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_Substitute\">\n <dxo-label text=\"Substitute\" i18n-text=\"@@FieldCaption-Substitute\"></dxo-label>\n </dxi-item> \n\n <dxi-item dataField=\"ResourceColor\" [colSpan]=\"certificateLogin ? 2 : 1\" editorType=\"dxColorBox\">\n <dxo-label text=\"Color\" i18n-text=\"@@FieldCaption-Color\"></dxo-label>\n </dxi-item> \n\n <dxi-item dataField=\"Email\" [colSpan]=\"2\" [editorOptions]=\"{ inputAttr: {'autocomplete': 'email'} }\">\n <dxo-label text=\"Email\" i18n-text=\"@@FieldCaption-Email\"></dxo-label> \n <dxi-validation-rule type=\"required\" message=\"Email is required\" i18n-message=\"@@ValidationText-Email-Required\" *ngIf=\"inEditMode && (formEmployee && formEmployee.LoginInfo_AppLogin)\"></dxi-validation-rule>\n <dxi-validation-rule type=\"email\" message=\"Email is invalid\" i18n-message=\"@@ValidationText-Email-Invalid\"></dxi-validation-rule> \n </dxi-item> \n\n <dxi-item dataField=\"RecognitionType\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_RecognitionType\">\n <dxo-label text=\"Recognition type\" i18n-text=\"@@FieldCaption-RecognitionType\"></dxo-label>\n </dxi-item>\n\n <dxi-item dataField=\"Pincode\" editorType=\"dxTextBox\" [editorOptions]=\"editorOptions_Pincode\">\n <dxo-label text=\"Pin code\" i18n-text=\"@@FieldCaption-Pincode\"></dxo-label>\n </dxi-item> \n\n <dxi-item dataField=\"QA_Consignment_Validation\" editorType=\"dxSelectBox\" [editorOptions]=\"editorOptions_QA_Consignment_Validation\">\n <dxo-label text=\"Consignment validation\" i18n-text=\"@@FieldCaption-ConsignmentValidation\"></dxo-label>\n </dxi-item>\n\n </dxi-item> \n \n </dx-form>\n </form>\n</mobicloud-group-box>", styles: [".password-button-icon{padding-bottom:6px}\n"] }]
202
202
  }], ctorParameters: function () { return [{ type: i1.MobicloudCoreService }, { type: i2.MobiCloudDataService }, { type: i3.MatDialog }, { type: i1.UsernameValidator }]; }, propDecorators: { employee: [{
203
203
  type: Input
204
204
  }], employee_expands: [{
@@ -228,4 +228,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
228
228
  type: ViewChildren,
229
229
  args: [DxDataGridComponent]
230
230
  }] } });
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wbG95ZWUtdXNlci1pbmZvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvZW1wbG95ZWUvZW1wbG95ZWUtdXNlci1pbmZvL2VtcGxveWVlLXVzZXItaW5mby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9jb21wb25lbnRzL2VtcGxveWVlL2VtcGxveWVlLXVzZXItaW5mby9lbXBsb3llZS11c2VyLWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQTZCLEtBQUssRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc5SSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxVQUFVLE1BQU0sNkJBQTZCLENBQUM7QUFDckQsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsNkJBQTZCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7O0FBVXRHLE1BQU0sT0FBTyx5QkFBeUI7SUFzQ3BDLFlBQW1CLFdBQWdDLEVBQVMsZ0JBQXFDLEVBQVUsU0FBb0IsRUFBUyxpQkFBb0M7UUFBekosZ0JBQVcsR0FBWCxXQUFXLENBQXFCO1FBQVMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFxQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBUyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBbENuSyxnQkFBVyxHQUFxQixLQUFLLENBQUM7UUFDdEMsZUFBVSxHQUF1QixLQUFLLENBQUM7UUFDaEQsb0JBQWUsR0FBVyxLQUFLLENBQUM7UUFJdkIsa0JBQWEsR0FBc0IsS0FBSyxDQUFDO1FBQ3pDLGdCQUFXLEdBQXNCLFNBQVMsQ0FB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Qyw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUMxRyxDQUFDOztzSEE1TlUseUJBQXlCOzBHQUF6Qix5QkFBeUIsNGZBK050QixtQkFBbUIscUVDblBuQyxrM0lBaUVzQjsyRkQ3Q1QseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLDhCQUE4QjtzTUFLL0IsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdFLEtBQUs7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUksZUFBZTtzQkFBeEIsTUFBTTtnQkFVWSxJQUFJO3NCQUF0QixTQUFTO3VCQUFDLE1BQU07Z0JBb01rQixTQUFTO3NCQUEzQyxZQUFZO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPdXRwdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyAsIElucHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xuaW1wb3J0IHsgTWVzc2FnZUJveCB9IGZyb20gXCIuLi8uLi9tZXNzYWdlLWJveC9tZXNzYWdlLWJveFwiO1xuXG5pbXBvcnQgRGF0YVNvdXJjZSBmcm9tIFwiZGV2ZXh0cmVtZS9kYXRhL2RhdGFfc291cmNlXCI7XG5pbXBvcnQgT0RhdGFTdG9yZSBmcm9tIFwiZGV2ZXh0cmVtZS9kYXRhL29kYXRhL3N0b3JlXCI7XG5pbXBvcnQgeyBEeEZvcm1Db21wb25lbnQsIER4RGF0YUdyaWRDb21wb25lbnQgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xuXG5pbXBvcnQgeyBDb3VudHJ5IH0gZnJvbSBcIm1vYmljbG91ZC1jb3JlXCI7XG5pbXBvcnQgeyBFbXBsb3llZSwgQ29uc2lnbm1lbnRFbXBsb3llZVZhbGlkYXRpb24sIEVtcGxveWVlUmVjb2duaXRpb25UeXBlIH0gZnJvbSBcIm1vYmljbG91ZC1jb3JlL2FwaVwiO1xuaW1wb3J0IHsgTW9iaWNsb3VkQ29yZVNlcnZpY2UgfSBmcm9tIFwibW9iaWNsb3VkLWNvcmVcIjtcbmltcG9ydCB7IE1vYmlDbG91ZERhdGFTZXJ2aWNlIH0gZnJvbSBcIm1vYmljbG91ZC1jb3JlL2FwaVwiO1xuaW1wb3J0IHsgVXNlcm5hbWVWYWxpZGF0b3IgfSBmcm9tIFwibW9iaWNsb3VkLWNvcmVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9iaWNsb3VkLWVtcGxveWVlLXVzZXItaW5mbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbXBsb3llZS11c2VyLWluZm8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbXBsb3llZS11c2VyLWluZm8uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBFbXBsb3llZVVzZXJJbmZvQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBlbXBsb3llZTogRW1wbG95ZWV8dW5kZWZpbmVkO1xuICBmb3JtRW1wbG95ZWU6IEVtcGxveWVlfHVuZGVmaW5lZDtcbiAgQElucHV0KCkgZW1wbG95ZWVfZXhwYW5kczogc3RyaW5nW118dW5kZWZpbmVkO1xuICBASW5wdXQoKSBlZGl0QWxsb3dlZDpib29sZWFufHVuZGVmaW5lZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpbkVkaXRNb2RlOmJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcbiAgZnVsbEVkaXRBbGxvd2VkOmJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKXdpZHRoOiAgbnVtYmVyfHVuZGVmaW5lZDtcbiAgQElucHV0KCkgY29udGVudGhlaWdodDogIG51bWJlcnx1bmRlZmluZWQ7ICBcbiAgQElucHV0KCkgaXNMb2FkaW5nRGF0YTogIGJvb2xlYW58dW5kZWZpbmVkPSBmYWxzZTtcbiAgQElucHV0KCkgbG9hZGluZ1RleHQ6ICBzdHJpbmd8dW5kZWZpbmVkID0gJGxvY2FsaXplYDpAQExvYWRpbmctVGV4dDpMb2FkaW5nLi4uYDtcbiAgQElucHV0KCkgaGFzRXJyb3JzIDogIGJvb2xlYW58dW5kZWZpbmVkPSBmYWxzZTtcbiAgQElucHV0KCkgZXJyb3JUZXh0OiAgc3RyaW5nfHVuZGVmaW5lZD0gXCJcIjtcblxuXG4gIFxuICBAT3V0cHV0KCkgZW1wbG95ZWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxFbXBsb3llZT4oKTsgIFxuXG4gIGVtcGxveWVlX3N0b3JlOiBPRGF0YVN0b3JlfHVuZGVmaW5lZDtcbiAgcGFzc3dvcmRCdXR0b25PcHRpb25zOiBhbnk7XG4gIHBhc3N3b3JkVG9nZ2xlTW9kZTogc3RyaW5nO1xuICBwYXNzd29yZFRvb2dsZUljb246IHN0cmluZztcblxuICAvLyBoYXNoZWRQYXNzd29yZHM6IGJvb2xlYW58dW5kZWZpbmVkID0gdHJ1ZTtcbiAgY2VydGlmaWNhdGVMb2dpbjogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuICBcbiAgQFZpZXdDaGlsZCgnZm9ybScpIGZvcm0hIDogIER4Rm9ybUNvbXBvbmVudDtcblxuICBlZGl0b3JPcHRpb25zX1N0YXR1czphbnl8dW5kZWZpbmVkO1xuICBlZGl0b3JPcHRpb25zX0FwcExvZ2luOmFueXx1bmRlZmluZWQ7XG4gIGVkaXRvck9wdGlvbnNfU3Vic3RpdHV0ZTphbnl8dW5kZWZpbmVkO1xuICBlZGl0b3JPcHRpb25zX0VtcGxveWVlTnVtYmVyOmFueXx1bmRlZmluZWQ7XG4gIGVkaXRvck9wdGlvbnNfUUFfQ29uc2lnbm1lbnRfVmFsaWRhdGlvbjphbnl8dW5kZWZpbmVkO1xuXG4gIGVkaXRvck9wdGlvbnNfUmVjb2duaXRpb25UeXBlOmFueXx1bmRlZmluZWQ7XG4gIGVkaXRvck9wdGlvbnNfUGluY29kZTphbnl8dW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb3JlU2VydmljZTpNb2JpY2xvdWRDb3JlU2VydmljZSwgcHVibGljIGNsb3VkRGF0YVNlcnZpY2U6TW9iaUNsb3VkRGF0YVNlcnZpY2UsIHByaXZhdGUgbWF0RGlhbG9nOiBNYXREaWFsb2csIHB1YmxpYyB1c2VybmFtZVZhbGlkYXRvcjogVXNlcm5hbWVWYWxpZGF0b3IpIHsgIFxuICAgIHRoaXMuZWRpdG9yT3B0aW9uc19TdGF0dXMgPSB7IGRhdGFTb3VyY2U6IHRoaXMuc3RhdHVzX2RzLCB2YWx1ZUV4cHI6ICdpZCcsIGRpc3BsYXlFeHByOiAnZGVzY3JpcHRpb24nLCByZWFkT25seTogdHJ1ZSB9O1xuICAgIHRoaXMuZWRpdG9yT3B0aW9uc19BcHBMb2dpbiA9IHsgZGF0YVNvdXJjZTogdGhpcy5sb2dpblR5cGVfZHMsIHZhbHVlRXhwcjogJ2lkJywgZGlzcGxheUV4cHI6ICdkZXNjcmlwdGlvbicsIHJlYWRPbmx5OiB0cnVlIH07XG4gICAgdGhpcy5lZGl0b3JPcHRpb25zX1N1YnN0aXR1dGUgPSB7IGRhdGFTb3VyY2U6IHRoaXMuYm9vbGVhbl9kcywgdmFsdWVFeHByOiAnaWQnLCBkaXNwbGF5RXhwcjogJ2Rlc2NyaXB0aW9uJywgcmVhZE9ubHk6IHRydWUgfTtcbiAgICB0aGlzLmVkaXRvck9wdGlvbnNfRW1wbG95ZWVOdW1iZXIgPSB7IHJlYWRPbmx5OiB0cnVlIH07XG4gICAgdGhpcy5lZGl0b3JPcHRpb25zX1FBX0NvbnNpZ25tZW50X1ZhbGlkYXRpb24gPSB7IGRhdGFTb3VyY2U6IHRoaXMuY29uc2lnbm1lbnRWYWxpZGF0aW9uX2RzLCB2YWx1ZUV4cHI6ICd2YWx1ZScsIGRpc3BsYXlFeHByOiAndGV4dCcsIHJlYWRPbmx5OiB0cnVlIH07XG5cbiAgICB0aGlzLmVkaXRvck9wdGlvbnNfUmVjb2duaXRpb25UeXBlID0geyBkYXRhU291cmNlOiB0aGlzLmVtcGxveWVlUmVjb2duaXRpb25UeXBlX2RzLCB2YWx1ZUV4cHI6ICd2YWx1ZScsIGRpc3BsYXlFeHByOiAndGV4dCcgfTtcbiAgICB0aGlzLmVkaXRvck9wdGlvbnNfUGluY29kZSA9IHsgbW9kZTogXCJwYXNzd29yZFwiLCBzaG93Q2xlYXJCdXR0b246XCJ0cnVlXCIgfTtcbiAgICBcbiAgICB0aGlzLnVzZXJuYW1lVmFsaWRhdGlvbiA9IHRoaXMudXNlcm5hbWVWYWxpZGF0aW9uLmJpbmQodGhpcyk7XG4gICAgXG4gICAgdGhpcy5wYXNzd29yZFRvb2dsZUljb24gPSBcIm1vYmljbG91ZF9wYXNzd29yZF92aXNpYmlsaXR5X29mZlwiO1xuICAgIHRoaXMucGFzc3dvcmRUb2dnbGVNb2RlID0gJ3Bhc3N3b3JkJztcbiAgICBcbiAgICB0aGlzLnBhc3N3b3JkQnV0dG9uT3B0aW9ucyA9IHtcbiAgICAgIHRlbXBsYXRlOiAncHdkX2J1dHRvblRlbXBsYXRlJyxcbiAgICAgIHR5cGU6IFwiYmFja1wiLFxuICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgIHRoaXMucGFzc3dvcmRUb2dnbGVNb2RlID0gdGhpcy5wYXNzd29yZFRvZ2dsZU1vZGUgPT09IFwidGV4dFwiID8gXCJwYXNzd29yZFwiIDogXCJ0ZXh0XCI7XG4gICAgICAgICAgdGhpcy5wYXNzd29yZFRvb2dsZUljb24gPSB0aGlzLnBhc3N3b3JkVG9nZ2xlTW9kZSA9PT0gXCJwYXNzd29yZFwiID8gXCJtb2JpY2xvdWRfcGFzc3dvcmRfdmlzaWJpbGl0eV9vZmZcIiA6IFwibW9iaWNsb3VkX3Bhc3N3b3JkX3Zpc2liaWxpdHlcIjtcbiAgICAgIH1cbiAgICB9OyAgIFxuXG4gIH1cblxuICBcbiAgbmdPbkluaXQoKTogdm9pZCB7ICAgICAgICBcbiAgICAvLyBjb25zb2xlLmxvZyhcIm5nT25Jbml0XCIsIFwidGVzdFwiICk7XG4gICAgLy8gdGhpcy5tb2JpTWFuYWdlbWVudFNlcnZpY2UuY29yZVNlcnZpY2Uub3JnYW5pemF0aW9uSW5mb09ic2VydmFibGUuc3Vic2NyaWJlKHAgPT4gdGhpcy5oYXNoZWRQYXNzd29yZHMgPSBwPy5IYXNoZWRQYXNzd29yZHMpO1xuICAgIHRoaXMuY29yZVNlcnZpY2UuYXBwbGljYXRpb25EZXRhaWxzT2JzZXJ2YWJsZS5zdWJzY3JpYmUocCA9PiB0aGlzLmNlcnRpZmljYXRlTG9naW4gPSBwPy5DZXJ0aWZpY2F0ZUxvZ2luKTtcbiAgICB0aGlzLmNvcmVTZXJ2aWNlLm1vYmlVc2VyUHJvZmlsZU9ic2VydmFibGUuc3Vic2NyaWJlKHAgPT4gXG4gICAgICB7XG4gICAgICAgIHRoaXMuZnVsbEVkaXRBbGxvd2VkID0gdGhpcy5jb3JlU2VydmljZS5pc01hc3Rlck9yZ2FuaXphdGlvblVzZXJBdXRoZW50aWNhdGVkKCkgPz8gZmFsc2U7XG4gICAgICAgIGlmKHRoaXMuZnVsbEVkaXRBbGxvd2VkKXtcbiAgICAgICAgICBkZWxldGUgdGhpcy5lZGl0b3JPcHRpb25zX1N0YXR1cy5yZWFkT25seTtcbiAgICAgICAgICBkZWxldGUgdGhpcy5lZGl0b3JPcHRpb25zX0FwcExvZ2luLnJlYWRPbmx5O1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLmVkaXRvck9wdGlvbnNfUUFfQ29uc2lnbm1lbnRfVmFsaWRhdGlvbi5yZWFkT25seTtcbiAgICAgICAgICBkZWxldGUgdGhpcy5lZGl0b3JPcHRpb25zX1N1YnN0aXR1dGUucmVhZE9ubHk7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuZWRpdG9yT3B0aW9uc19FbXBsb3llZU51bWJlci5yZWFkT25seTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgdGhpcy5jb3JlU2VydmljZS5tb2JpVXNlclByb2ZpbGVPYnNlcnZhYmxlLnN1YnNjcmliZShwID0+IHRoaXMuZWRpdEFsbG93ZWQgPSAodGhpcy5jb3JlU2VydmljZS5pc01hc3Rlck9yZ2FuaXphdGlvblVzZXJBdXRoZW50aWNhdGVkKCkgfHwgcD8udXNlcl9pZCA9PSB0aGlzLmVtcGxveWVlPy5JZCkpO1xuICAgIFxuICAgIHRoaXMuZW1wbG95ZWVfc3RvcmUgPSBuZXcgT0RhdGFTdG9yZSh7XG4gICAgICB1cmw6IHRoaXMuY2xvdWREYXRhU2VydmljZS5nZXRNb2JpTWFuYWdlbWVudE9EYXRhVXJsKFwiRW1wbG95ZWVcIiksXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsIFxuICAgICAga2V5OiBcIklkXCIsXG4gICAgICBrZXlUeXBlOiBcIkd1aWRcIixcbiAgICAgIHZlcnNpb246IDQsICAgICAgICBcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snZW1wbG95ZWUnXT8uY3VycmVudFZhbHVlICYmIGNoYW5nZXNbJ2VtcGxveWVlJ10uY3VycmVudFZhbHVlICE9IHRoaXMuZm9ybUVtcGxveWVlKSB7XG4gICAgICB0aGlzLmZvcm1FbXBsb3llZSA9IHRoaXMuZW1wbG95ZWU7ICAgICAgXG4gICAgICB0aGlzLm9uRW1wbG95ZWVDaGFuZ2VkKHRoaXMuZm9ybUVtcGxveWVlKTsgXG4gICAgfSAgICBcbiAgfVxuXG4gIG9uRW1wbG95ZWVDaGFuZ2VkKGN1c3Q6IEVtcGxveWVlfHVuZGVmaW5lZCl7ICAgIFxuICAgIGlmKHRoaXMuZGF0YWdyaWRzKXsgICAgICBcbiAgICAgIHRoaXMuZGF0YWdyaWRzLmZvckVhY2goZnVuY3Rpb24oZGF0YUdyaWQpIHtcbiAgICAgICAgZGF0YUdyaWQuaW5zdGFuY2U/LnJlZnJlc2goKTsgIFxuICAgICAgfSk7ICAgICAgIFxuICAgIH1cbiAgfVxuXG4gIGdldEVtcGxveWVlKCkge1xuICAgIGlmKHRoaXMuZW1wbG95ZWU/LklkICYmIHRoaXMuZW1wbG95ZWVfc3RvcmUpe1xuICAgICAgdGhpcy5pc0xvYWRpbmdEYXRhID0gdHJ1ZTtcbiAgICAgIHRoaXMubG9hZGluZ1RleHQgPSAkbG9jYWxpemVgOkBATG9hZGluZy1UZXh0LUVtcGxveWVlOkxvYWRpbmcgZW1wbG95ZWUuLi5gO1xuICAgICAgdGhpcy5lbXBsb3llZV9zdG9yZS5ieUtleSh0aGlzLmVtcGxveWVlLklkLCB7IGV4cGFuZDogdGhpcy5lbXBsb3llZV9leHBhbmRzIH0pLnRoZW4oXG4gICAgICAgIChkYXRhSXRlbSkgPT4geyBcbiAgICAgICAgICB0aGlzLmZvcm1FbXBsb3llZSA9IE9iamVjdC5hc3NpZ24obmV3IEVtcGxveWVlKCksIGRhdGFJdGVtWzBdKTtcbiAgICAgICAgICBpZih0aGlzLmZvcm1FbXBsb3llZT8uU3VwZXJ2aXNvcil7XG4gICAgICAgICAgICB0aGlzLmZvcm1FbXBsb3llZS5TdXBlcnZpc29yPU9iamVjdC5hc3NpZ24obmV3IEVtcGxveWVlKCksIHRoaXMuZm9ybUVtcGxveWVlLlN1cGVydmlzb3IpO1xuICAgICAgICAgIH0gXG4gICAgICAgICAgaWYodGhpcy5mb3JtRW1wbG95ZWUgJiYgdGhpcy5mb3JtRW1wbG95ZWUuQWN0aXZlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUVtcGxveWVlLkFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZih0aGlzLmZvcm1FbXBsb3llZSAmJiB0aGlzLmZvcm1FbXBsb3llZS5Mb2dpbkluZm9fQXBwTG9naW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtRW1wbG95ZWUuTG9naW5JbmZvX0FwcExvZ2luID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmKHRoaXMuZm9ybUVtcGxveWVlICYmIHRoaXMuZm9ybUVtcGxveWVlLlN1YnN0aXR1dGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtRW1wbG95ZWUuU3Vic3RpdHV0ZSA9IGZhbHNlO1xuICAgICAgICAgIH0gICAgICAgICAgICBcbiAgICAgICAgICB0aGlzLmVtcGxveWVlID0gdGhpcy5mb3JtRW1wbG95ZWU7XG4gICAgICAgICAgXG4gICAgICAgICAgdGhpcy5vbkVtcGxveWVlQ2hhbmdlZCh0aGlzLmVtcGxveWVlKTtcblxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nRGF0YSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaGFzRXJyb3JzID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5lcnJvclRleHQgPSBcIlwiO1xuICAgICAgICAgIHRoaXMubG9hZGluZ1RleHQgPSAkbG9jYWxpemVgOkBATG9hZGluZy1UZXh0OkxvYWRpbmcuLi5gO1xuICAgICAgICAgIHRoaXMuZW1wbG95ZWVDaGFuZ2VkLmVtaXQodGhpcy5lbXBsb3llZSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4geyBcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmdEYXRhID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5oYXNFcnJvcnMgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuZXJyb3JUZXh0ID0gZXJyb3I7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nVGV4dCA9ICRsb2NhbGl6ZWA6QEBMb2FkaW5nLVRleHQ6TG9hZGluZy4uLmA7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICB9XG4gIH1cblxuICBvblJldHJ5Q2xpY2soKXtcbiAgICB0aGlzLmdldEVtcGxveWVlKCk7XG4gICAgdGhpcy5pbkVkaXRNb2RlID0gZmFsc2U7XG4gIH0gXG5cbiAgb25FZGl0Q2xpY2soKXtcbiAgICB0aGlzLmZvcm0uaW5zdGFuY2U/LmdldEVkaXRvcihcIkFjdGl2ZVwiKT8uZm9jdXMoKTtcbiAgICB0aGlzLmluRWRpdE1vZGUgPSB0cnVlO1xuICB9XG5cbiAgb25TYXZlQ2xpY2soKXtcbiAgICBjb25zdCB2YWxpZGF0ZVJlc3VsdCA9IHRoaXMuZm9ybS5pbnN0YW5jZS52YWxpZGF0ZSgpO1xuICAgIGlmKHZhbGlkYXRlUmVzdWx0Py5pc1ZhbGlkKXtcbiAgICAgIHRoaXMuc2F2ZUVtcGxveWVlKCk7XG4gICAgfVxuICB9XG5cbiAgc2F2ZUVtcGxveWVlKCl7XG4gICAgaWYodGhpcy5lbXBsb3llZT8uSWQgJiYgdGhpcy5lbXBsb3llZV9zdG9yZSl7XG4gICAgICB0aGlzLmlzTG9hZGluZ0RhdGEgPSB0cnVlO1xuICAgICAgdGhpcy5sb2FkaW5nVGV4dCA9ICRsb2NhbGl6ZWA6QEBVcGRhdGluZy1UZXh0LUVtcGxveWVlOlVwZGF0aW5nIGVtcGxveWVlLi4uYDtcblxuICAgICAgbGV0IHVwZGF0ZV92YWx1ZXM6IGFueSA9IHsgICAgIFxuICAgICAgICBFbWFpbDogdGhpcy5mb3JtRW1wbG95ZWU/LkVtYWlsLFxuICAgICAgICBSZXNvdXJjZUNvbG9yOiB0aGlzLmZvcm1FbXBsb3llZT8uUmVzb3VyY2VDb2xvclxuICAgICAgfTtcbiAgICAgIGlmKHRoaXMuZnVsbEVkaXRBbGxvd2VkKXtcbiAgICAgICAgdXBkYXRlX3ZhbHVlcy5BY3RpdmUgPSB0aGlzLmZvcm1FbXBsb3llZT8uQWN0aXZlO1xuICAgICAgICB1cGRhdGVfdmFsdWVzLlN1YnN0aXR1dGUgPSB0aGlzLmZvcm1FbXBsb3llZT8uU3Vic3RpdHV0ZTtcbiAgICAgICAgdXBkYXRlX3ZhbHVlcy5FbXBsb3llZU51bWJlciA9IHRoaXMuZm9ybUVtcGxveWVlPy5FbXBsb3llZU51bWJlcjtcbiAgICAgICAgdXBkYXRlX3ZhbHVlcy5Mb2dpbkluZm9fQXBwTG9naW4gPSB0aGlzLmZvcm1FbXBsb3llZT8uTG9naW5JbmZvX0FwcExvZ2luO1xuICAgICAgICB1cGRhdGVfdmFsdWVzLlFBX0NvbnNpZ25tZW50X1ZhbGlkYXRpb24gPSB0aGlzLmZvcm1FbXBsb3llZT8uUUFfQ29uc2lnbm1lbnRfVmFsaWRhdGlvbjtcbiAgICAgICAgdXBkYXRlX3ZhbHVlcy5SZWNvZ25pdGlvblR5cGUgPSB0aGlzLmZvcm1FbXBsb3llZT8uUmVjb2duaXRpb25UeXBlO1xuICAgICAgICB1cGRhdGVfdmFsdWVzLlBpbmNvZGUgPSB0aGlzLmZvcm1FbXBsb3llZT8uUGluY29kZTtcbiAgICAgIH1cbiAgICAgIGlmKHRoaXMuZm9ybUVtcGxveWVlPy5Mb2dpbkluZm9fQXBwTG9naW4peyAgICAgXG4gICAgICAgIGlmKCEodGhpcy5jb3JlU2VydmljZS5hcHBsaWNhdGlvbkRldGFpbHM/LkNlcnRpZmljYXRlTG9naW4gPT09IHRydWUpKXtcbiAgICAgICAgICB1cGRhdGVfdmFsdWVzLkxvZ2luSW5mb19Vc2VybmFtZSA9IHRoaXMuZm9ybUVtcGxveWVlLkxvZ2luSW5mb19Vc2VybmFtZTtcbiAgICAgICAgfSAgICAgIFxuICAgICAgfVxuXG4gICAgICB0aGlzLmVtcGxveWVlX3N0b3JlLnVwZGF0ZSh0aGlzLmVtcGxveWVlLklkLCB1cGRhdGVfdmFsdWVzKVxuICAgICAgICAudGhlbihcbiAgICAgICAgICAgIChkYXRhT2JqKSA9PiBcbiAgICAgICAgICAgIHsgXG4gICAgICAgICAgICAgIHRoaXMuZ2V0RW1wbG95ZWUoKTtcbiAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdEYXRhID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMuaW5FZGl0TW9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdUZXh0ID0gJGxvY2FsaXplYDpAQExvYWRpbmctVGV4dDpMb2FkaW5nLi4uYDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZXJyb3IpID0+IFxuICAgICAgICAgICAgeyBcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZ0RhdGEgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nVGV4dCA9ICRsb2NhbGl6ZWA6QEBMb2FkaW5nLVRleHQ6TG9hZGluZy4uLmA7XG4gICAgICAgICAgICAgIE1lc3NhZ2VCb3guc2hvd0Vycm9yKHt0aXRsZTogJGxvY2FsaXplYDpAQEZhaWxlZC1UZXh0LUVtcGxveWVlOkVtcGxveWVlIHVwZGF0ZSBmYWlsZWRgLCBtZXNzYWdlOiBlcnJvciB9LHRoaXMubWF0RGlhbG9nKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCByZXN1bHQgPT4gXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coYERpYWxvZyByZXN1bHQgOiAke3Jlc3VsdH1gKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBvbkNhbmNlbEVkaXRDbGljaygpe1xuICAgIHRoaXMuZ2V0RW1wbG95ZWUoKTsgICAgXG4gICAgdGhpcy5pbkVkaXRNb2RlID0gZmFsc2U7XG4gIH1cbiAgXG5cbiAgdXNlcm5hbWVWYWxpZGF0aW9uKHBhcmFtczphbnkpIDogUHJvbWlzZTx2b2lkPntcbiAgICByZXR1cm4gdGhpcy51c2VybmFtZVZhbGlkYXRvci51c2VybmFtZVZhbGlkYXRpb25fZGV2ZXh0cmVtZShwYXJhbXMudmFsdWUgPz8gJycsIHRoaXMuZW1wbG95ZWU/LklkID8/ICcnKVxuICB9ICBcbiAgLy8gKioqIERhdGFTb3VyY2VzICoqKioqKioqKioqKioqKioqKlxuXG4gIEBWaWV3Q2hpbGRyZW4oRHhEYXRhR3JpZENvbXBvbmVudCkgZGF0YWdyaWRzITogUXVlcnlMaXN0PER4RGF0YUdyaWRDb21wb25lbnQ+OyBcbiAgICBzdGF0dXNfZHM6IGFueVtdID0gWyAgXG4gICAgICB7IGlkOiBmYWxzZSwgZGVzY3JpcHRpb246ICRsb2NhbGl6ZWA6QEBGaWVsZFZhbHVlLUluQWN0aXZlOkluYWN0aXZlYCB9LCBcbiAgICAgIHsgaWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAkbG9jYWxpemVgOkBARmllbGRWYWx1ZS1BY3RpdmU6QWN0aXZlYCB9XG4gICAgXVxuXG4gICAgbG9naW5UeXBlX2RzOiBhbnlbXSA9IFsgIFxuICAgICAgeyBpZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAkbG9jYWxpemVgOkBARmllbGRWYWx1ZS1BcHBMb2dpbi1SZWd1bGFyOlJlZ3VsYXJgIH0sIFxuICAgICAgeyBpZDogdHJ1ZSwgZGVzY3JpcHRpb246ICRsb2NhbGl6ZWA6QEBGaWVsZFZhbHVlLUFwcExvZ2luLUFwcFVzZXI6IEFwcCB1c2VyYCB9XG4gICAgXSAgXG5cbiAgICBib29sZWFuX2RzOiBhbnlbXSA9IFsgIFxuICAgICAgeyBpZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAkbG9jYWxpemVgOkBARmllbGRWYWx1ZS1ObzpOb2AgfSwgXG4gICAgICB7IGlkOiB0cnVlLCBkZXNjcmlwdGlvbjogJGxvY2FsaXplYDpAQEZpZWxkVmFsdWUtWWVzOlllc2AgfVxuICAgIF0gXG4gICAgXG4gICAgY29uc2lnbm1lbnRWYWxpZGF0aW9uX2RzOiBhbnlbXSA9IFsgIFxuICAgICAgeyB2YWx1ZTogQ29uc2lnbm1lbnRFbXBsb3llZVZhbGlkYXRpb24uTm9uZSwgdGV4dDogJGxvY2FsaXplYDpAQEVudW1WYWx1ZS1Db25zaWdubWVudEVtcGxveWVlVmFsaWRhdGlvbi1Ob25lOk5vbmVgIH0sIFxuICAgICAgeyB2YWx1ZTogQ29uc2lnbm1lbnRFbXBsb3llZVZhbGlkYXRpb24uQ29uZmlybUFsbCwgdGV4dDogJGxvY2FsaXplYDpAQEVudW1WYWx1ZS1Db25zaWdubWVudEVtcGxveWVlVmFsaWRhdGlvbi1Db25maXJtQWxsOiBDb25maXJtIGFsbGAgfVxuICAgIF0gIFxuXG4gICAgZW1wbG95ZWVSZWNvZ25pdGlvblR5cGVfZHM6IGFueVtdID0gWyAgXG4gICAgICB7IHZhbHVlOiBFbXBsb3llZVJlY29nbml0aW9uVHlwZS5Ob25lLCB0ZXh0OiAkbG9jYWxpemVgOkBARW51bVZhbHVlLUVtcGxveWVlUmVjb2duaXRpb25UeXBlLU5vbmU6Tm9uZWAgfSwgXG4gICAgICB7IHZhbHVlOiBFbXBsb3llZVJlY29nbml0aW9uVHlwZS5QaW5jb2RlLCB0ZXh0OiAkbG9jYWxpemVgOkBARW51bVZhbHVlLUVtcGxveWVlUmVjb2duaXRpb25UeXBlLVBpbmNvZGU6IFBpbiBjb2RlYCB9LFxuICAgICAgeyB2YWx1ZTogRW1wbG95ZWVSZWNvZ25pdGlvblR5cGUuSW1hZ2UsIHRleHQ6ICRsb2NhbGl6ZWA6QEBFbnVtVmFsdWUtRW1wbG95ZWVSZWNvZ25pdGlvblR5cGUtSW1hZ2U6IEltYWdlYCB9XG4gICAgXSAgICAgIFxufVxuXG5cblxuXG5cblxuIiwiPG1vYmljbG91ZC1ncm91cC1ib3ggdGl0bGU9XCJVc2VyIEluZm9cIiBpMThuLXRpdGxlPVwiQEBDYXB0aW9uSGVhZGVyLVVzZXJJbmZvXCIgW3dpZHRoXT1cIlt3aWR0aF1cIiBbY29udGVudGhlaWdodF09W2NvbnRlbnRoZWlnaHRdIGNsYXNzPVwiZW1wbG95ZWVVc2VySW5mb0Zvcm1cIiBbaXNMb2FkaW5nRGF0YV09XCJpc0xvYWRpbmdEYXRhXCIgW2xvYWRpbmdUZXh0XT1cImxvYWRpbmdUZXh0XCIgXG4gICBbZWRpdEFsbG93ZWRdPVwiZWRpdEFsbG93ZWRcIiBbaW5FZGl0TW9kZV09XCJpbkVkaXRNb2RlXCIgW2hhc0Vycm9yc109XCJoYXNFcnJvcnNcIiBlcnJvckNhcHRpb249XCJFcnJvclwiIGkxOG4tZXJyb3JDYXB0aW9uPVwiQEBDYXB0aW9uSGVhZGVyLUVycm9yXCIgW2Vycm9yVGV4dF09XCJlcnJvclRleHRcIiBbZW5hYmxlUmV0cnlPbkVycm9yXT1cInRydWVcIlxuICAgIChFZGl0X0NsaWNrKT1cIm9uRWRpdENsaWNrKClcIiAoU2F2ZV9DbGljayk9XCJvblNhdmVDbGljaygpXCIgKENhbmNlbEVkaXRfQ2xpY2spPVwib25DYW5jZWxFZGl0Q2xpY2soKVwiIChSZXRyeV9DbGljayk9XCJvblJldHJ5Q2xpY2soKVwiPlxuXG4gICAgPGZvcm0+XG4gICAgPGR4LWZvcm0gI2Zvcm0gaWQ9XCJmb3JtXCJcbiAgICAgICAgW2Zvcm1EYXRhXT1cImZvcm1FbXBsb3llZVwiXG4gICAgICAgIFtyZWFkT25seV09XCIhaW5FZGl0TW9kZVwiXG4gICAgICAgIFtzaG93Q29sb25BZnRlckxhYmVsXT1cInRydWVcIlxuICAgICAgICBsYWJlbExvY2F0aW9uPVwidG9wXCJcbiAgICAgICAgW3Nob3dWYWxpZGF0aW9uU3VtbWFyeV09XCJmYWxzZVwiIFxuICAgICAgICBbc2hvd1JlcXVpcmVkTWFya10gPSBcImZhbHNlXCJcbiAgICAgICAgdmFsaWRhdGlvbkdyb3VwPVwiZm9ybUVtcGxveWVlRGF0YV9Vc2VySW5mb1wiPlxuXG4gICAgICAgIDxkeGktaXRlbSBpdGVtVHlwZT1cImdyb3VwXCIgY2FwdGlvbj1cIlwiIFtjb2xDb3VudF09XCIyXCI+XG4gICAgICAgICAgICA8ZHhpLWl0ZW0gZGF0YUZpZWxkPVwiQWN0aXZlXCIgZWRpdG9yVHlwZT1cImR4U2VsZWN0Qm94XCIgW2VkaXRvck9wdGlvbnNdPVwiZWRpdG9yT3B0aW9uc19TdGF0dXNcIj5cbiAgICAgICAgICAgICAgICA8ZHhvLWxhYmVsIHRleHQ9XCJTdGF0dXNcIiBpMThuLXRleHQ9XCJAQEZpZWxkQ2FwdGlvbi1TdGF0dXNcIj48L2R4by1sYWJlbD5cbiAgICAgICAgICAgIDwvZHhpLWl0ZW0+ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgPGR4aS1pdGVtIGRhdGFGaWVsZD1cIkxvZ2luSW5mb19BcHBMb2dpblwiIGVkaXRvclR5cGU9XCJkeFNlbGVjdEJveFwiIFtlZGl0b3JPcHRpb25zXT1cImVkaXRvck9wdGlvbnNfQXBwTG9naW5cIj5cbiAgICAgICAgICAgICAgICA8ZHhvLWxhYmVsIHRleHQ9XCJUeXBlXCIgaTE4bi10ZXh0PVwiQEBGaWVsZENhcHRpb24tVHlwZVwiPjwvZHhvLWxhYmVsPlxuICAgICAgICAgICAgPC9keGktaXRlbT5cblxuICAgICAgICAgICAgPGR4aS1pdGVtIGRhdGFGaWVsZD1cIkxvZ2luSW5mb19Vc2VybmFtZVwiICpuZ0lmPVwiKGZvcm1FbXBsb3llZSAmJiBmb3JtRW1wbG95ZWUuTG9naW5JbmZvX0FwcExvZ2luKSAmJiAhY2VydGlmaWNhdGVMb2dpblwiPlxuICAgICAgICAgICAgICAgIDxkeG8tbGFiZWwgdGV4dD1cIlVzZXJuYW1lXCIgaTE4bi10ZXh0PVwiQEBGaWVsZENhcHRpb24tVXNlcm5hbWVcIj48L2R4by1sYWJlbD5cbiAgICAgICAgICAgICAgICA8ZHhpLXZhbGlkYXRpb24tcnVsZSB0eXBlPVwicmVxdWlyZWRcIiBtZXNzYWdlPVwiVXNlcm5hbWUgaXMgcmVxdWlyZWRcIiBpMThuLW1lc3NhZ2U9XCJAQFZhbGlkYXRpb25UZXh0LVVzZXJuYW1lLVJlcXVpcmVkXCIgKm5nSWY9XCJpbkVkaXRNb2RlXCI+PC9keGktdmFsaWRhdGlvbi1ydWxlPlxuICAgICAgICAgICAgICAgIDxkeGktdmFsaWRhdGlvbi1ydWxlICpuZ0lmPVwiaW5FZGl0TW9kZVwiIFxuICAgICAgICAgICAgICAgIHR5cGU9XCJhc3luY1wiIFxuICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uQ2FsbGJhY2tdPVwidXNlcm5hbWVWYWxpZGF0aW9uXCI+XG4gICAgICAgICAgICAgICAgPC9keGktdmFsaWRhdGlvbi1ydWxlPiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvZHhpLWl0ZW0+XG5cbiAgICAgICAgICAgIDxkeGktaXRlbSBkYXRhRmllbGQ9XCJFbXBsb3llZU51bWJlclwiIFtlZGl0b3JPcHRpb25zXT1cImVkaXRvck9wdGlvbnNfRW1wbG95ZWVOdW1iZXJcIj5cbiAgICAgICAgICAgICAgICA8ZHhvLWxhYmVsIHRleHQ9XCJFbXBsb3llZSBuby5cIiBpMThuLXRleHQ9XCJAQEZpZWxkQ2FwdGlvbi1FbXBsb3llZU51bWJlclwiPjwvZHhvLWxhYmVsPiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvZHhpLWl0ZW0+XG5cbiAgICAgICAgICAgIDxkeGktaXRlbSBkYXRhRmllbGQ9XCJTdWJzdGl0dXRlXCIgZWRpdG9yVHlwZT1cImR4U2VsZWN0Qm94XCIgW2VkaXRvck9wdGlvbnNdPVwiZWRpdG9yT3B0aW9uc19TdWJzdGl0dXRlXCI+XG4gICAgICAgICAgICAgICAgPGR4by1sYWJlbCB0ZXh0PVwiU3Vic3RpdHV0ZVwiIGkxOG4tdGV4dD1cIkBARmllbGRDYXB0aW9uLVN1YnN0aXR1dGVcIj48L2R4by1sYWJlbD5cbiAgICAgICAgICAgIDwvZHhpLWl0ZW0+ICBcblxuICAgICAgICAgICAgPGR4aS1pdGVtIGRhdGFGaWVsZD1cIlJlc291cmNlQ29sb3JcIiBbY29sU3Bhbl09XCJjZXJ0aWZpY2F0ZUxvZ2luID8gMiA6IDFcIiBlZGl0b3JUeXBlPVwiZHhDb2xvckJveFwiPlxuICAgICAgICAgICAgICAgIDxkeG8tbGFiZWwgdGV4dD1cIkNvbG9yXCIgaTE4bi10ZXh0PVwiQEBGaWVsZENhcHRpb24tQ29sb3JcIj48L2R4by1sYWJlbD5cbiAgICAgICAgICAgIDwvZHhpLWl0ZW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgPGR4aS1pdGVtIGRhdGFGaWVsZD1cIkVtYWlsXCIgW2NvbFNwYW5dPVwiMlwiIFtlZGl0b3JPcHRpb25zXT1cInsgaW5wdXRBdHRyOiB7J2F1dG9jb21wbGV0ZSc6ICdlbWFpbCd9IH1cIj5cbiAgICAgICAgICAgICAgICA8ZHhvLWxhYmVsIHRleHQ9XCJFbWFpbFwiIGkxOG4tdGV4dD1cIkBARmllbGRDYXB0aW9uLUVtYWlsXCI+PC9keG8tbGFiZWw+ICAgICBcbiAgICAgICAgICAgICAgICA8ZHhpLXZhbGlkYXRpb24tcnVsZSB0eXBlPVwicmVxdWlyZWRcIiBtZXNzYWdlPVwiRW1haWwgaXMgcmVxdWlyZWRcIiBpMThuLW1lc3NhZ2U9XCJAQFZhbGlkYXRpb25UZXh0LUVtYWlsLVJlcXVpcmVkXCIgKm5nSWY9XCJpbkVkaXRNb2RlICYmIChmb3JtRW1wbG95ZWUgJiYgZm9ybUVtcGxveWVlLkxvZ2luSW5mb19BcHBMb2dpbilcIj48L2R4aS12YWxpZGF0aW9uLXJ1bGU+XG4gICAgICAgICAgICAgICAgPGR4aS12YWxpZGF0aW9uLXJ1bGUgdHlwZT1cImVtYWlsXCIgbWVzc2FnZT1cIkVtYWlsIGlzIGludmFsaWRcIiBpMThuLW1lc3NhZ2U9XCJAQFZhbGlkYXRpb25UZXh0LUVtYWlsLUludmFsaWRcIj48L2R4aS12YWxpZGF0aW9uLXJ1bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICA8L2R4aS1pdGVtPiBcblxuICAgICAgICAgICAgPGR4aS1pdGVtIGRhdGFGaWVsZD1cIlJlY29nbml0aW9uVHlwZVwiIGVkaXRvclR5cGU9XCJkeFNlbGVjdEJveFwiIFtlZGl0b3JPcHRpb25zXT1cImVkaXRvck9wdGlvbnNfUmVjb2duaXRpb25UeXBlXCI+XG4gICAgICAgICAgICAgICAgPGR4by1sYWJlbCB0ZXh0PVwiUmVjb2duaXRpb25uIHR5cGVcIiBpMThuLXRleHQ9XCJAQEZpZWxkQ2FwdGlvbi1SZWNvZ25pdGlvblR5cGVcIj48L2R4by1sYWJlbD5cbiAgICAgICAgICAgIDwvZHhpLWl0ZW0+XG5cbiAgICAgICAgICAgIDxkeGktaXRlbSBkYXRhRmllbGQ9XCJQaW5jb2RlXCIgZWRpdG9yVHlwZT1cImR4VGV4dEJveFwiIFtlZGl0b3JPcHRpb25zXT1cImVkaXRvck9wdGlvbnNfUGluY29kZVwiPlxuICAgICAgICAgICAgICAgIDxkeG8tbGFiZWwgdGV4dD1cIlBpbiBjb2RlXCIgaTE4bi10ZXh0PVwiQEBGaWVsZENhcHRpb24tUGluY29kZVwiPjwvZHhvLWxhYmVsPlxuICAgICAgICAgICAgPC9keGktaXRlbT4gIFxuXG4gICAgICAgICAgICA8ZHhpLWl0ZW0gZGF0YUZpZWxkPVwiUUFfQ29uc2lnbm1lbnRfVmFsaWRhdGlvblwiIGVkaXRvclR5cGU9XCJkeFNlbGVjdEJveFwiIFtlZGl0b3JPcHRpb25zXT1cImVkaXRvck9wdGlvbnNfUUFfQ29uc2lnbm1lbnRfVmFsaWRhdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkeG8tbGFiZWwgdGV4dD1cIkNvbnNpZ25tZW50IHZhbGlkYXRpb25cIiBpMThuLXRleHQ9XCJAQEZpZWxkQ2FwdGlvbi1Db25zaWdubWVudFZhbGlkYXRpb25cIj48L2R4by1sYWJlbD5cbiAgICAgICAgICAgIDwvZHhpLWl0ZW0+XG5cbiAgICAgICAgPC9keGktaXRlbT4gICAgICAgXG4gICAgICAgIFxuICAgIDwvZHgtZm9ybT5cbiAgICA8L2Zvcm0+XG48L21vYmljbG91ZC1ncm91cC1ib3g+Il19
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wbG95ZWUtdXNlci1pbmZvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvZW1wbG95ZWUvZW1wbG95ZWUtdXNlci1pbmZvL2VtcGxveWVlLXVzZXItaW5mby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9jb21wb25lbnRzL2VtcGxveWVlL2VtcGxveWVlLXVzZXItaW5mby9lbXBsb3llZS11c2VyLWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQTZCLEtBQUssRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc5SSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxVQUFVLE1BQU0sNkJBQTZCLENBQUM7QUFDckQsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsNkJBQTZCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7O0FBVXRHLE1BQU0sT0FBTyx5QkFBeUI7SUFzQ3BDLFlBQW1CLFdBQWdDLEVBQVMsZ0JBQXFDLEVBQVUsU0FBb0IsRUFBUyxpQkFBb0M7UUFBekosZ0JBQVcsR0FBWCxXQUFXLENBQXFCO1FBQVMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFxQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBUyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBbENuSyxnQkFBVyxHQUFxQixLQUFLLENBQUM7UUFDdEMsZUFBVSxHQUF1QixLQUFLLENBQUM7UUFDaEQsb0JBQWUsR0FBVyxLQUFLLENBQUM7UUFJdkIsa0JBQWEsR0FBc0IsS0FBSyxDQUFDO1FBQ3pDLGdCQUFXLEdBQXNCLFNBQVMsQ0FB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Qyw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUMxRyxDQUFDOztzSEE1TlUseUJBQXlCOzBHQUF6Qix5QkFBeUIsNGZBK050QixtQkFBbUIscUVDblBuQyxpM0lBaUVzQjsyRkQ3Q1QseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLDhCQUE4QjtzTUFLL0IsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdFLEtBQUs7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUksZUFBZTtzQkFBeEIsTUFBTTtnQkFVWSxJQUFJO3NCQUF0QixTQUFTO3VCQUFDLE1BQU07Z0JBb01rQixTQUFTO3NCQUEzQyxZQUFZO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPdXRwdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyAsIElucHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xuaW1wb3J0IHsgTWVzc2FnZUJveCB9IGZyb20gXCIuLi8uLi9tZXNzYWdlLWJveC9tZXNzYWdlLWJveFwiO1xuXG5pbXBvcnQgRGF0YVNvdXJjZSBmcm9tIFwiZGV2ZXh0cmVtZS9kYXRhL2RhdGFfc291cmNlXCI7XG5pbXBvcnQgT0RhdGFTdG9yZSBmcm9tIFwiZGV2ZXh0cmVtZS9kYXRhL29kYXRhL3N0b3JlXCI7XG5pbXBvcnQgeyBEeEZvcm1Db21wb25lbnQsIER4RGF0YUdyaWRDb21wb25lbnQgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xuXG5pbXBvcnQgeyBDb3VudHJ5IH0gZnJvbSBcIm1vYmljbG91ZC1jb3JlXCI7XG5pbXBvcnQgeyBFbXBsb3llZSwgQ29uc2lnbm1lbnRFbXBsb3llZVZhbGlkYXRpb24sIEVtcGxveWVlUmVjb2duaXRpb25UeXBlIH0gZnJvbSBcIm1vYmljbG91ZC1jb3JlL2FwaVwiO1xuaW1wb3J0IHsgTW9iaWNsb3VkQ29yZVNlcnZpY2UgfSBmcm9tIFwibW9iaWNsb3VkLWNvcmVcIjtcbmltcG9ydCB7IE1vYmlDbG91ZERhdGFTZXJ2aWNlIH0gZnJvbSBcIm1vYmljbG91ZC1jb3JlL2FwaVwiO1xuaW1wb3J0IHsgVXNlcm5hbWVWYWxpZGF0b3IgfSBmcm9tIFwibW9iaWNsb3VkLWNvcmVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9iaWNsb3VkLWVtcGxveWVlLXVzZXItaW5mbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbXBsb3llZS11c2VyLWluZm8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbXBsb3llZS11c2VyLWluZm8uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBFbXBsb3llZVVzZXJJbmZvQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBlbXBsb3llZTogRW1wbG95ZWV8dW5kZWZpbmVkO1xuICBmb3JtRW1wbG95ZWU6IEVtcGxveWVlfHVuZGVmaW5lZDtcbiAgQElucHV0KCkgZW1wbG95ZWVfZXhwYW5kczogc3RyaW5nW118dW5kZWZpbmVkO1xuICBASW5wdXQoKSBlZGl0QWxsb3dlZDpib29sZWFufHVuZGVmaW5lZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpbkVkaXRNb2RlOmJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcbiAgZnVsbEVkaXRBbGxvd2VkOmJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKXdpZHRoOiAgbnVtYmVyfHVuZGVmaW5lZDtcbiAgQElucHV0KCkgY29udGVudGhlaWdodDogIG51bWJlcnx1bmRlZmluZWQ7ICBcbiAgQElucHV0KCkgaXNMb2FkaW5nRGF0YTogIGJvb2xlYW58dW5kZWZpbmVkPSBmYWxzZTtcbiAgQElucHV0KCkgbG9hZGluZ1RleHQ6ICBzdHJpbmd8dW5kZWZpbmVkID0gJGxvY2FsaXplYDpAQExvYWRpbmctVGV4dDpMb2FkaW5nLi4uYDtcbiAgQElucHV0KCkgaGFzRXJyb3JzIDogIGJvb2xlYW58dW5kZWZpbmVkPSBmYWxzZTtcbiAgQElucHV0KCkgZXJyb3JUZXh0OiAgc3RyaW5nfHVuZGVmaW5lZD0gXCJcIjtcblxuXG4gIFxuICBAT3V0cHV0KCkgZW1wbG95ZWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxFbXBsb3llZT4oKTsgIFxuXG4gIGVtcGxveWVlX3N0b3JlOiBPRGF0YVN0b3JlfHVuZGVmaW5lZDtcbiAgcGFzc3dvcmRCdXR0b25PcHRpb25zOiBhbnk7XG4gIHBhc3N3b3JkVG9nZ2xlTW9kZTogc3RyaW5nO1xuICBwYXNzd29yZFRvb2dsZUljb246IHN0cmluZztcblxuICAvLyBoYXNoZWRQYXNzd29yZHM6IGJvb2xlYW58dW5kZWZpbmVkID0gdHJ1ZTtcbiAgY2VydGlmaWNhdGVMb2dpbjogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuICBcbiAgQFZpZXdDaGlsZCgnZm9ybScpIGZvcm0hIDogIER4Rm9ybUNvbXBvbmVudDtcblxuICBlZGl0b3JPcHRpb25zX1N0YXR1czphbnl8dW5kZWZpbmVkO1xuICBlZGl0b3JPcHRpb25zX0FwcExvZ2luOmFueXx1bmRlZmluZWQ7XG4gIGVkaXRvck9wdGlvbnNfU3Vic3RpdHV0ZTphbnl8dW5kZWZpbmVkO1xuICBlZGl0b3JPcHRpb25zX0VtcGxveWVlTnVtYmVyOmFueXx1bmRlZmluZWQ7XG4gIGVkaXRvck9wdGlvbnNfUUFfQ29uc2lnbm1lbnRfVmFsaWRhdGlvbjphbnl8dW5kZWZpbmVkO1xuXG4gIGVkaXRvck9wdGlvbnNfUmVjb2duaXRpb25UeXBlOmFueXx1bmRlZmluZWQ7XG4gIGVkaXRvck9wdGlvbnNfUGluY29kZTphbnl8dW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb3JlU2VydmljZTpNb2JpY2xvdWRDb3JlU2VydmljZSwgcHVibGljIGNsb3VkRGF0YVNlcnZpY2U6TW9iaUNsb3VkRGF0YVNlcnZpY2UsIHByaXZhdGUgbWF0RGlhbG9nOiBNYXREaWFsb2csIHB1YmxpYyB1c2VybmFtZVZhbGlkYXRvcjogVXNlcm5hbWVWYWxpZGF0b3IpIHsgIFxuICAgIHRoaXMuZWRpdG9yT3B0aW9uc19TdGF0dXMgPSB7IGRhdGFTb3VyY2U6IHRoaXMuc3RhdHVzX2RzLCB2YWx1ZUV4cHI6ICdpZCcsIGRpc3BsYXlFeHByOiAnZGVzY3JpcHRpb24nLCByZWFkT25seTogdHJ1ZSB9O1xuICAgIHRoaXMuZWRpdG9yT3B0aW9uc19BcHBMb2dpbiA9IHsgZGF0YVNvdXJjZTogdGhpcy5sb2dpblR5cGVfZHMsIHZhbHVlRXhwcjogJ2lkJywgZGlzcGxheUV4cHI6ICdkZXNjcmlwdGlvbicsIHJlYWRPbmx5OiB0cnVlIH07XG4gICAgdGhpcy5lZGl0b3JPcHRpb25zX1N1YnN0aXR1dGUgPSB7IGRhdGFTb3VyY2U6IHRoaXMuYm9vbGVhbl9kcywgdmFsdWVFeHByOiAnaWQnLCBkaXNwbGF5RXhwcjogJ2Rlc2NyaXB0aW9uJywgcmVhZE9ubHk6IHRydWUgfTtcbiAgICB0aGlzLmVkaXRvck9wdGlvbnNfRW1wbG95ZWVOdW1iZXIgPSB7IHJlYWRPbmx5OiB0cnVlIH07XG4gICAgdGhpcy5lZGl0b3JPcHRpb25zX1FBX0NvbnNpZ25tZW50X1ZhbGlkYXRpb24gPSB7IGRhdGFTb3VyY2U6IHRoaXMuY29uc2lnbm1lbnRWYWxpZGF0aW9uX2RzLCB2YWx1ZUV4cHI6ICd2YWx1ZScsIGRpc3BsYXlFeHByOiAndGV4dCcsIHJlYWRPbmx5OiB0cnVlIH07XG5cbiAgICB0aGlzLmVkaXRvck9wdGlvbnNfUmVjb2duaXRpb25UeXBlID0geyBkYXRhU291cmNlOiB0aGlzLmVtcGxveWVlUmVjb2duaXRpb25UeXBlX2RzLCB2YWx1ZUV4cHI6ICd2YWx1ZScsIGRpc3BsYXlFeHByOiAndGV4dCcgfTtcbiAgICB0aGlzLmVkaXRvck9wdGlvbnNfUGluY29kZSA9IHsgbW9kZTogXCJwYXNzd29yZFwiLCBzaG93Q2xlYXJCdXR0b246XCJ0cnVlXCIgfTtcbiAgICBcbiAgICB0aGlzLnVzZXJuYW1lVmFsaWRhdGlvbiA9IHRoaXMudXNlcm5hbWVWYWxpZGF0aW9uLmJpbmQodGhpcyk7XG4gICAgXG4gICAgdGhpcy5wYXNzd29yZFRvb2dsZUljb24gPSBcIm1vYmljbG91ZF9wYXNzd29yZF92aXNpYmlsaXR5X29mZlwiO1xuICAgIHRoaXMucGFzc3dvcmRUb2dnbGVNb2RlID0gJ3Bhc3N3b3JkJztcbiAgICBcbiAgICB0aGlzLnBhc3N3b3JkQnV0dG9uT3B0aW9ucyA9IHtcbiAgICAgIHRlbXBsYXRlOiAncHdkX2J1dHRvblRlbXBsYXRlJyxcbiAgICAgIHR5cGU6IFwiYmFja1wiLFxuICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgIHRoaXMucGFzc3dvcmRUb2dnbGVNb2RlID0gdGhpcy5wYXNzd29yZFRvZ2dsZU1vZGUgPT09IFwidGV4dFwiID8gXCJwYXNzd29yZFwiIDogXCJ0ZXh0XCI7XG4gICAgICAgICAgdGhpcy5wYXNzd29yZFRvb2dsZUljb24gPSB0aGlzLnBhc3N3b3JkVG9nZ2xlTW9kZSA9PT0gXCJwYXNzd29yZFwiID8gXCJtb2JpY2xvdWRfcGFzc3dvcmRfdmlzaWJpbGl0eV9vZmZcIiA6IFwibW9iaWNsb3VkX3Bhc3N3b3JkX3Zpc2liaWxpdHlcIjtcbiAgICAgIH1cbiAgICB9OyAgIFxuXG4gIH1cblxuICBcbiAgbmdPbkluaXQoKTogdm9pZCB7ICAgICAgICBcbiAgICAvLyBjb25zb2xlLmxvZyhcIm5nT25Jbml0XCIsIFwidGVzdFwiICk7XG4gICAgLy8gdGhpcy5tb2JpTWFuYWdlbWVudFNlcnZpY2UuY29yZVNlcnZpY2Uub3JnYW5pemF0aW9uSW5mb09ic2VydmFibGUuc3Vic2NyaWJlKHAgPT4gdGhpcy5oYXNoZWRQYXNzd29yZHMgPSBwPy5IYXNoZWRQYXNzd29yZHMpO1xuICAgIHRoaXMuY29yZVNlcnZpY2UuYXBwbGljYXRpb25EZXRhaWxzT2JzZXJ2YWJsZS5zdWJzY3JpYmUocCA9PiB0aGlzLmNlcnRpZmljYXRlTG9naW4gPSBwPy5DZXJ0aWZpY2F0ZUxvZ2luKTtcbiAgICB0aGlzLmNvcmVTZXJ2aWNlLm1vYmlVc2VyUHJvZmlsZU9ic2VydmFibGUuc3Vic2NyaWJlKHAgPT4gXG4gICAgICB7XG4gICAgICAgIHRoaXMuZnVsbEVkaXRBbGxvd2VkID0gdGhpcy5jb3JlU2VydmljZS5pc01hc3Rlck9yZ2FuaXphdGlvblVzZXJBdXRoZW50aWNhdGVkKCkgPz8gZmFsc2U7XG4gICAgICAgIGlmKHRoaXMuZnVsbEVkaXRBbGxvd2VkKXtcbiAgICAgICAgICBkZWxldGUgdGhpcy5lZGl0b3JPcHRpb25zX1N0YXR1cy5yZWFkT25seTtcbiAgICAgICAgICBkZWxldGUgdGhpcy5lZGl0b3JPcHRpb25zX0FwcExvZ2luLnJlYWRPbmx5O1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLmVkaXRvck9wdGlvbnNfUUFfQ29uc2lnbm1lbnRfVmFsaWRhdGlvbi5yZWFkT25seTtcbiAgICAgICAgICBkZWxldGUgdGhpcy5lZGl0b3JPcHRpb25zX1N1YnN0aXR1dGUucmVhZE9ubHk7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuZWRpdG9yT3B0aW9uc19FbXBsb3llZU51bWJlci5yZWFkT25seTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgdGhpcy5jb3JlU2VydmljZS5tb2JpVXNlclByb2ZpbGVPYnNlcnZhYmxlLnN1YnNjcmliZShwID0+IHRoaXMuZWRpdEFsbG93ZWQgPSAodGhpcy5jb3JlU2VydmljZS5pc01hc3Rlck9yZ2FuaXphdGlvblVzZXJBdXRoZW50aWNhdGVkKCkgfHwgcD8udXNlcl9pZCA9PSB0aGlzLmVtcGxveWVlPy5JZCkpO1xuICAgIFxuICAgIHRoaXMuZW1wbG95ZWVfc3RvcmUgPSBuZXcgT0RhdGFTdG9yZSh7XG4gICAgICB1cmw6IHRoaXMuY2xvdWREYXRhU2VydmljZS5nZXRNb2JpTWFuYWdlbWVudE9EYXRhVXJsKFwiRW1wbG95ZWVcIiksXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsIFxuICAgICAga2V5OiBcIklkXCIsXG4gICAgICBrZXlUeXBlOiBcIkd1aWRcIixcbiAgICAgIHZlcnNpb246IDQsICAgICAgICBcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snZW1wbG95ZWUnXT8uY3VycmVudFZhbHVlICYmIGNoYW5nZXNbJ2VtcGxveWVlJ10uY3VycmVudFZhbHVlICE9IHRoaXMuZm9ybUVtcGxveWVlKSB7XG4gICAgICB0aGlzLmZvcm1FbXBsb3llZSA9IHRoaXMuZW1wbG95ZWU7ICAgICAgXG4gICAgICB0aGlzLm9uRW1wbG95ZWVDaGFuZ2VkKHRoaXMuZm9ybUVtcGxveWVlKTsgXG4gICAgfSAgICBcbiAgfVxuXG4gIG9uRW1wbG95ZWVDaGFuZ2VkKGN1c3Q6IEVtcGxveWVlfHVuZGVmaW5lZCl7ICAgIFxuICAgIGlmKHRoaXMuZGF0YWdyaWRzKXsgICAgICBcbiAgICAgIHRoaXMuZGF0YWdyaWRzLmZvckVhY2goZnVuY3Rpb24oZGF0YUdyaWQpIHtcbiAgICAgICAgZGF0YUdyaWQuaW5zdGFuY2U/LnJlZnJlc2goKTsgIFxuICAgICAgfSk7ICAgICAgIFxuICAgIH1cbiAgfVxuXG4gIGdldEVtcGxveWVlKCkge1xuICAgIGlmKHRoaXMuZW1wbG95ZWU/LklkICYmIHRoaXMuZW1wbG95ZWVfc3RvcmUpe1xuICAgICAgdGhpcy5pc0xvYWRpbmdEYXRhID0gdHJ1ZTtcbiAgICAgIHRoaXMubG9hZGluZ1RleHQgPSAkbG9jYWxpemVgOkBATG9hZGluZy1UZXh0LUVtcGxveWVlOkxvYWRpbmcgZW1wbG95ZWUuLi5gO1xuICAgICAgdGhpcy5lbXBsb3llZV9zdG9yZS5ieUtleSh0aGlzLmVtcGxveWVlLklkLCB7IGV4cGFuZDogdGhpcy5lbXBsb3llZV9leHBhbmRzIH0pLnRoZW4oXG4gICAgICAgIChkYXRhSXRlbSkgPT4geyBcbiAgICAgICAgICB0aGlzLmZvcm1FbXBsb3llZSA9IE9iamVjdC5hc3NpZ24obmV3IEVtcGxveWVlKCksIGRhdGFJdGVtWzBdKTtcbiAgICAgICAgICBpZih0aGlzLmZvcm1FbXBsb3llZT8uU3VwZXJ2aXNvcil7XG4gICAgICAgICAgICB0aGlzLmZvcm1FbXBsb3llZS5TdXBlcnZpc29yPU9iamVjdC5hc3NpZ24obmV3IEVtcGxveWVlKCksIHRoaXMuZm9ybUVtcGxveWVlLlN1cGVydmlzb3IpO1xuICAgICAgICAgIH0gXG4gICAgICAgICAgaWYodGhpcy5mb3JtRW1wbG95ZWUgJiYgdGhpcy5mb3JtRW1wbG95ZWUuQWN0aXZlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUVtcGxveWVlLkFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZih0aGlzLmZvcm1FbXBsb3llZSAmJiB0aGlzLmZvcm1FbXBsb3llZS5Mb2dpbkluZm9fQXBwTG9naW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtRW1wbG95ZWUuTG9naW5JbmZvX0FwcExvZ2luID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmKHRoaXMuZm9ybUVtcGxveWVlICYmIHRoaXMuZm9ybUVtcGxveWVlLlN1YnN0aXR1dGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtRW1wbG95ZWUuU3Vic3RpdHV0ZSA9IGZhbHNlO1xuICAgICAgICAgIH0gICAgICAgICAgICBcbiAgICAgICAgICB0aGlzLmVtcGxveWVlID0gdGhpcy5mb3JtRW1wbG95ZWU7XG4gICAgICAgICAgXG4gICAgICAgICAgdGhpcy5vbkVtcGxveWVlQ2hhbmdlZCh0aGlzLmVtcGxveWVlKTtcblxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nRGF0YSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaGFzRXJyb3JzID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5lcnJvclRleHQgPSBcIlwiO1xuICAgICAgICAgIHRoaXMubG9hZGluZ1RleHQgPSAkbG9jYWxpemVgOkBATG9hZGluZy1UZXh0OkxvYWRpbmcuLi5gO1xuICAgICAgICAgIHRoaXMuZW1wbG95ZWVDaGFuZ2VkLmVtaXQodGhpcy5lbXBsb3llZSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4geyBcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmdEYXRhID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5oYXNFcnJvcnMgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuZXJyb3JUZXh0ID0gZXJyb3I7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nVGV4dCA9ICRsb2NhbGl6ZWA6QEBMb2FkaW5nLVRleHQ6TG9hZGluZy4uLmA7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICB9XG4gIH1cblxuICBvblJldHJ5Q2xpY2soKXtcbiAgICB0aGlzLmdldEVtcGxveWVlKCk7XG4gICAgdGhpcy5pbkVkaXRNb2RlID0gZmFsc2U7XG4gIH0gXG5cbiAgb25FZGl0Q2xpY2soKXtcbiAgICB0aGlzLmZvcm0uaW5zdGFuY2U/LmdldEVkaXRvcihcIkFjdGl2ZVwiKT8uZm9jdXMoKTtcbiAgICB0aGlzLmluRWRpdE1vZGUgPSB0cnVlO1xuICB9XG5cbiAgb25TYXZlQ2xpY2soKXtcbiAgICBjb25zdCB2YWxpZGF0ZVJlc3VsdCA9IHRoaXMuZm9ybS5pbnN0YW5jZS52YWxpZGF0ZSgpO1xuICAgIGlmKHZhbGlkYXRlUmVzdWx0Py5pc1ZhbGlkKXtcbiAgICAgIHRoaXMuc2F2ZUVtcGxveWVlKCk7XG4gICAgfVxuICB9XG5cbiAgc2F2ZUVtcGxveWVlKCl7XG4gICAgaWYodGhpcy5lbXBsb3llZT8uSWQgJiYgdGhpcy5lbXBsb3llZV9zdG9yZSl7XG4gICAgICB0aGlzLmlzTG9hZGluZ0RhdGEgPSB0cnVlO1xuICAgICAgdGhpcy5sb2FkaW5nVGV4dCA9ICRsb2NhbGl6ZWA6QEBVcGRhdGluZy1UZXh0LUVtcGxveWVlOlVwZGF0aW5nIGVtcGxveWVlLi4uYDtcblxuICAgICAgbGV0IHVwZGF0ZV92YWx1ZXM6IGFueSA9IHsgICAgIFxuICAgICAgICBFbWFpbDogdGhpcy5mb3JtRW1wbG95ZWU/LkVtYWlsLFxuICAgICAgICBSZXNvdXJjZUNvbG9yOiB0aGlzLmZvcm1FbXBsb3llZT8uUmVzb3VyY2VDb2xvclxuICAgICAgfTtcbiAgICAgIGlmKHRoaXMuZnVsbEVkaXRBbGxvd2VkKXtcbiAgICAgICAgdXBkYXRlX3ZhbHVlcy5BY3RpdmUgPSB0aGlzLmZvcm1FbXBsb3llZT8uQWN0aXZlO1xuICAgICAgICB1cGRhdGVfdmFsdWVzLlN1YnN0aXR1dGUgPSB0aGlzLmZvcm1FbXBsb3llZT8uU3Vic3RpdHV0ZTtcbiAgICAgICAgdXBkYXRlX3ZhbHVlcy5FbXBsb3llZU51bWJlciA9IHRoaXMuZm9ybUVtcGxveWVlPy5FbXBsb3llZU51bWJlcjtcbiAgICAgICAgdXBkYXRlX3ZhbHVlcy5Mb2dpbkluZm9fQXBwTG9naW4gPSB0aGlzLmZvcm1FbXBsb3llZT8uTG9naW5JbmZvX0FwcExvZ2luO1xuICAgICAgICB1cGRhdGVfdmFsdWVzLlFBX0NvbnNpZ25tZW50X1ZhbGlkYXRpb24gPSB0aGlzLmZvcm1FbXBsb3llZT8uUUFfQ29uc2lnbm1lbnRfVmFsaWRhdGlvbjtcbiAgICAgICAgdXBkYXRlX3ZhbHVlcy5SZWNvZ25pdGlvblR5cGUgPSB0aGlzLmZvcm1FbXBsb3llZT8uUmVjb2duaXRpb25UeXBlO1xuICAgICAgICB1cGRhdGVfdmFsdWVzLlBpbmNvZGUgPSB0aGlzLmZvcm1FbXBsb3llZT8uUGluY29kZTtcbiAgICAgIH1cbiAgICAgIGlmKHRoaXMuZm9ybUVtcGxveWVlPy5Mb2dpbkluZm9fQXBwTG9naW4peyAgICAgXG4gICAgICAgIGlmKCEodGhpcy5jb3JlU2VydmljZS5hcHBsaWNhdGlvbkRldGFpbHM/LkNlcnRpZmljYXRlTG9naW4gPT09IHRydWUpKXtcbiAgICAgICAgICB1cGRhdGVfdmFsdWVzLkxvZ2luSW5mb19Vc2VybmFtZSA9IHRoaXMuZm9ybUVtcGxveWVlLkxvZ2luSW5mb19Vc2VybmFtZTtcbiAgICAgICAgfSAgICAgIFxuICAgICAgfVxuXG4gICAgICB0aGlzLmVtcGxveWVlX3N0b3JlLnVwZGF0ZSh0aGlzLmVtcGxveWVlLklkLCB1cGRhdGVfdmFsdWVzKVxuICAgICAgICAudGhlbihcbiAgICAgICAgICAgIChkYXRhT2JqKSA9PiBcbiAgICAgICAgICAgIHsgXG4gICAgICAgICAgICAgIHRoaXMuZ2V0RW1wbG95ZWUoKTtcbiAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdEYXRhID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMuaW5FZGl0TW9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdUZXh0ID0gJGxvY2FsaXplYDpAQExvYWRpbmctVGV4dDpMb2FkaW5nLi4uYDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZXJyb3IpID0+IFxuICAgICAgICAgICAgeyBcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZ0RhdGEgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nVGV4dCA9ICRsb2NhbGl6ZWA6QEBMb2FkaW5nLVRleHQ6TG9hZGluZy4uLmA7XG4gICAgICAgICAgICAgIE1lc3NhZ2VCb3guc2hvd0Vycm9yKHt0aXRsZTogJGxvY2FsaXplYDpAQEZhaWxlZC1UZXh0LUVtcGxveWVlOkVtcGxveWVlIHVwZGF0ZSBmYWlsZWRgLCBtZXNzYWdlOiBlcnJvciB9LHRoaXMubWF0RGlhbG9nKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCByZXN1bHQgPT4gXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coYERpYWxvZyByZXN1bHQgOiAke3Jlc3VsdH1gKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBvbkNhbmNlbEVkaXRDbGljaygpe1xuICAgIHRoaXMuZ2V0RW1wbG95ZWUoKTsgICAgXG4gICAgdGhpcy5pbkVkaXRNb2RlID0gZmFsc2U7XG4gIH1cbiAgXG5cbiAgdXNlcm5hbWVWYWxpZGF0aW9uKHBhcmFtczphbnkpIDogUHJvbWlzZTx2b2lkPntcbiAgICByZXR1cm4gdGhpcy51c2VybmFtZVZhbGlkYXRvci51c2VybmFtZVZhbGlkYXRpb25fZGV2ZXh0cmVtZShwYXJhbXMudmFsdWUgPz8gJycsIHRoaXMuZW1wbG95ZWU/LklkID8/ICcnKVxuICB9ICBcbiAgLy8gKioqIERhdGFTb3VyY2VzICoqKioqKioqKioqKioqKioqKlxuXG4gIEBWaWV3Q2hpbGRyZW4oRHhEYXRhR3JpZENvbXBvbmVudCkgZGF0YWdyaWRzITogUXVlcnlMaXN0PER4RGF0YUdyaWRDb21wb25lbnQ+OyBcbiAgICBzdGF0dXNfZHM6IGFueVtdID0gWyAgXG4gICAgICB7IGlkOiBmYWxzZSwgZGVzY3JpcHRpb246ICRsb2NhbGl6ZWA6QEBGaWVsZFZhbHVlLUluQWN0aXZlOkluYWN0aXZlYCB9LCBcbiAgICAgIHsgaWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAkbG9jYWxpemVgOkBARmllbGRWYWx1ZS1BY3RpdmU6QWN0aXZlYCB9XG4gICAgXVxuXG4gICAgbG9naW5UeXBlX2RzOiBhbnlbXSA9IFsgIFxuICAgICAgeyBpZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAkbG9jYWxpemVgOkBARmllbGRWYWx1ZS1BcHBMb2dpbi1SZWd1bGFyOlJlZ3VsYXJgIH0sIFxuICAgICAgeyBpZDogdHJ1ZSwgZGVzY3JpcHRpb246ICRsb2NhbGl6ZWA6QEBGaWVsZFZhbHVlLUFwcExvZ2luLUFwcFVzZXI6IEFwcCB1c2VyYCB9XG4gICAgXSAgXG5cbiAgICBib29sZWFuX2RzOiBhbnlbXSA9IFsgIFxuICAgICAgeyBpZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAkbG9jYWxpemVgOkBARmllbGRWYWx1ZS1ObzpOb2AgfSwgXG4gICAgICB7IGlkOiB0cnVlLCBkZXNjcmlwdGlvbjogJGxvY2FsaXplYDpAQEZpZWxkVmFsdWUtWWVzOlllc2AgfVxuICAgIF0gXG4gICAgXG4gICAgY29uc2lnbm1lbnRWYWxpZGF0aW9uX2RzOiBhbnlbXSA9IFsgIFxuICAgICAgeyB2YWx1ZTogQ29uc2lnbm1lbnRFbXBsb3llZVZhbGlkYXRpb24uTm9uZSwgdGV4dDogJGxvY2FsaXplYDpAQEVudW1WYWx1ZS1Db25zaWdubWVudEVtcGxveWVlVmFsaWRhdGlvbi1Ob25lOk5vbmVgIH0sIFxuICAgICAgeyB2YWx1ZTogQ29uc2lnbm1lbnRFbXBsb3llZVZhbGlkYXRpb24uQ29uZmlybUFsbCwgdGV4dDogJGxvY2FsaXplYDpAQEVudW1WYWx1ZS1Db25zaWdubWVudEVtcGxveWVlVmFsaWRhdGlvbi1Db25maXJtQWxsOiBDb25maXJtIGFsbGAgfVxuICAgIF0gIFxuXG4gICAgZW1wbG95ZWVSZWNvZ25pdGlvblR5cGVfZHM6IGFueVtdID0gWyAgXG4gICAgICB7IHZhbHVlOiBFbXBsb3llZVJlY29nbml0aW9uVHlwZS5Ob25lLCB0ZXh0OiAkbG9jYWxpemVgOkBARW51bVZhbHVlLUVtcGxveWVlUmVjb2duaXRpb25UeXBlLU5vbmU6Tm9uZWAgfSwgXG4gICAgICB7IHZhbHVlOiBFbXBsb3llZVJlY29nbml0aW9uVHlwZS5QaW5jb2RlLCB0ZXh0OiAkbG9jYWxpemVgOkBARW51bVZhbHVlLUVtcGxveWVlUmVjb2duaXRpb25UeXBlLVBpbmNvZGU6IFBpbiBjb2RlYCB9LFxuICAgICAgeyB2YWx1ZTogRW1wbG95ZWVSZWNvZ25pdGlvblR5cGUuSW1hZ2UsIHRleHQ6ICRsb2NhbGl6ZWA6QEBFbnVtVmFsdWUtRW1wbG95ZWVSZWNvZ25pdGlvblR5cGUtSW1hZ2U6IEltYWdlYCB9XG4gICAgXSAgICAgIFxufVxuXG5cblxuXG5cblxuIiwiPG1vYmljbG91ZC1ncm91cC1ib3ggdGl0bGU9XCJVc2VyIEluZm9cIiBpMThuLXRpdGxlPVwiQEBDYXB0aW9uSGVhZGVyLVVzZXJJbmZvXCIgW3dpZHRoXT1cIlt3aWR0aF1cIiBbY29udGVudGhlaWdodF09W2NvbnRlbnRoZWlnaHRdIGNsYXNzPVwiZW1wbG95ZWVVc2VySW5mb0Zvcm1cIiBbaXNMb2FkaW5nRGF0YV09XCJpc0xvYWRpbmdEYXRhXCIgW2xvYWRpbmdUZXh0XT1cImxvYWRpbmdUZXh0XCIgXG4gICBbZWRpdEFsbG93ZWRdPVwiZWRpdEFsbG93ZWRcIiBbaW5FZGl0TW9kZV09XCJpbkVkaXRNb2RlXCIgW2hhc0Vycm9yc109XCJoYXNFcnJvcnNcIiBlcnJvckNhcHRpb249XCJFcnJvclwiIGkxOG4tZXJyb3JDYXB0aW9uPVwiQEBDYXB0aW9uSGVhZGVyLUVycm9yXCIgW2Vycm9yVGV4dF09XCJlcnJvclRleHRcIiBbZW5hYmxlUmV0cnlPbkVycm9yXT1cInRydWVcIlxuICAgIChFZGl0X0NsaWNrKT1cIm9uRWRpdENsaWNrKClcIiAoU2F2ZV9DbGljayk9XCJvblNhdmVDbGljaygpXCIgKENhbmNlbEVkaXRfQ2xpY2spPVwib25DYW5jZWxFZGl0Q2xpY2soKVwiIChSZXRyeV9DbGljayk9XCJvblJldHJ5Q2xpY2soKVwiPlxuXG4gICAgPGZvcm0+XG4gICAgPGR4LWZvcm0gI2Zvcm0gaWQ9XCJmb3JtXCJcbiAgICAgICAgW2Zvcm1EYXRhXT1cImZvcm1FbXBsb3llZVwiXG4gICAgICAgIFtyZWFkT25seV09XCIhaW5FZGl0TW9kZVwiXG4gICAgICAgIFtzaG93Q29sb25BZnRlckxhYmVsXT1cInRydWVcIlxuICAgICAgICBsYWJlbExvY2F0aW9uPVwidG9wXCJcbiAgICAgICAgW3Nob3dWYWxpZGF0aW9uU3VtbWFyeV09XCJmYWxzZVwiIFxuICAgICAgICBbc2hvd1JlcXVpcmVkTWFya10gPSBcImZhbHNlXCJcbiAgICAgICAgdmFsaWRhdGlvbkdyb3VwPVwiZm9ybUVtcGxveWVlRGF0YV9Vc2VySW5mb1wiPlxuXG4gICAgICAgIDxkeGktaXRlbSBpdGVtVHlwZT1cImdyb3VwXCIgY2FwdGlvbj1cIlwiIFtjb2xDb3VudF09XCIyXCI+XG4gICAgICAgICAgICA8ZHhpLWl0ZW0gZGF0YUZpZWxkPVwiQWN0aXZlXCIgZWRpdG9yVHlwZT1cImR4U2VsZWN0Qm94XCIgW2VkaXRvck9wdGlvbnNdPVwiZWRpdG9yT3B0aW9uc19TdGF0dXNcIj5cbiAgICAgICAgICAgICAgICA8ZHhvLWxhYmVsIHRleHQ9XCJTdGF0dXNcIiBpMThuLXRleHQ9XCJAQEZpZWxkQ2FwdGlvbi1TdGF0dXNcIj48L2R4by1sYWJlbD5cbiAgICAgICAgICAgIDwvZHhpLWl0ZW0+ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgPGR4aS1pdGVtIGRhdGFGaWVsZD1cIkxvZ2luSW5mb19BcHBMb2dpblwiIGVkaXRvclR5cGU9XCJkeFNlbGVjdEJveFwiIFtlZGl0b3JPcHRpb25zXT1cImVkaXRvck9wdGlvbnNfQXBwTG9naW5cIj5cbiAgICAgICAgICAgICAgICA8ZHhvLWxhYmVsIHRleHQ9XCJUeXBlXCIgaTE4bi10ZXh0PVwiQEBGaWVsZENhcHRpb24tVHlwZVwiPjwvZHhvLWxhYmVsPlxuICAgICAgICAgICAgPC9keGktaXRlbT5cblxuICAgICAgICAgICAgPGR4aS1pdGVtIGRhdGFGaWVsZD1cIkxvZ2luSW5mb19Vc2VybmFtZVwiICpuZ0lmPVwiKGZvcm1FbXBsb3llZSAmJiBmb3JtRW1wbG95ZWUuTG9naW5JbmZvX0FwcExvZ2luKSAmJiAhY2VydGlmaWNhdGVMb2dpblwiPlxuICAgICAgICAgICAgICAgIDxkeG8tbGFiZWwgdGV4dD1cIlVzZXJuYW1lXCIgaTE4bi10ZXh0PVwiQEBGaWVsZENhcHRpb24tVXNlcm5hbWVcIj48L2R4by1sYWJlbD5cbiAgICAgICAgICAgICAgICA8ZHhpLXZhbGlkYXRpb24tcnVsZSB0eXBlPVwicmVxdWlyZWRcIiBtZXNzYWdlPVwiVXNlcm5hbWUgaXMgcmVxdWlyZWRcIiBpMThuLW1lc3NhZ2U9XCJAQFZhbGlkYXRpb25UZXh0LVVzZXJuYW1lLVJlcXVpcmVkXCIgKm5nSWY9XCJpbkVkaXRNb2RlXCI+PC9keGktdmFsaWRhdGlvbi1ydWxlPlxuICAgICAgICAgICAgICAgIDxkeGktdmFsaWRhdGlvbi1ydWxlICpuZ0lmPVwiaW5FZGl0TW9kZVwiIFxuICAgICAgICAgICAgICAgIHR5cGU9XCJhc3luY1wiIFxuICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uQ2FsbGJhY2tdPVwidXNlcm5hbWVWYWxpZGF0aW9uXCI+XG4gICAgICAgICAgICAgICAgPC9keGktdmFsaWRhdGlvbi1ydWxlPiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvZHhpLWl0ZW0+XG5cbiAgICAgICAgICAgIDxkeGktaXRlbSBkYXRhRmllbGQ9XCJFbXBsb3llZU51bWJlclwiIFtlZGl0b3JPcHRpb25zXT1cImVkaXRvck9wdGlvbnNfRW1wbG95ZWVOdW1iZXJcIj5cbiAgICAgICAgICAgICAgICA8ZHhvLWxhYmVsIHRleHQ9XCJFbXBsb3llZSBuby5cIiBpMThuLXRleHQ9XCJAQEZpZWxkQ2FwdGlvbi1FbXBsb3llZU51bWJlclwiPjwvZHhvLWxhYmVsPiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvZHhpLWl0ZW0+XG5cbiAgICAgICAgICAgIDxkeGktaXRlbSBkYXRhRmllbGQ9XCJTdWJzdGl0dXRlXCIgZWRpdG9yVHlwZT1cImR4U2VsZWN0Qm94XCIgW2VkaXRvck9wdGlvbnNdPVwiZWRpdG9yT3B0aW9uc19TdWJzdGl0dXRlXCI+XG4gICAgICAgICAgICAgICAgPGR4by1sYWJlbCB0ZXh0PVwiU3Vic3RpdHV0ZVwiIGkxOG4tdGV4dD1cIkBARmllbGRDYXB0aW9uLVN1YnN0aXR1dGVcIj48L2R4by1sYWJlbD5cbiAgICAgICAgICAgIDwvZHhpLWl0ZW0+ICBcblxuICAgICAgICAgICAgPGR4aS1pdGVtIGRhdGFGaWVsZD1cIlJlc291cmNlQ29sb3JcIiBbY29sU3Bhbl09XCJjZXJ0aWZpY2F0ZUxvZ2luID8gMiA6IDFcIiBlZGl0b3JUeXBlPVwiZHhDb2xvckJveFwiPlxuICAgICAgICAgICAgICAgIDxkeG8tbGFiZWwgdGV4dD1cIkNvbG9yXCIgaTE4bi10ZXh0PVwiQEBGaWVsZENhcHRpb24tQ29sb3JcIj48L2R4by1sYWJlbD5cbiAgICAgICAgICAgIDwvZHhpLWl0ZW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgPGR4aS1pdGVtIGRhdGFGaWVsZD1cIkVtYWlsXCIgW2NvbFNwYW5dPVwiMlwiIFtlZGl0b3JPcHRpb25zXT1cInsgaW5wdXRBdHRyOiB7J2F1dG9jb21wbGV0ZSc6ICdlbWFpbCd9IH1cIj5cbiAgICAgICAgICAgICAgICA8ZHhvLWxhYmVsIHRleHQ9XCJFbWFpbFwiIGkxOG4tdGV4dD1cIkBARmllbGRDYXB0aW9uLUVtYWlsXCI+PC9keG8tbGFiZWw+ICAgICBcbiAgICAgICAgICAgICAgICA8ZHhpLXZhbGlkYXRpb24tcnVsZSB0eXBlPVwicmVxdWlyZWRcIiBtZXNzYWdlPVwiRW1haWwgaXMgcmVxdWlyZWRcIiBpMThuLW1lc3NhZ2U9XCJAQFZhbGlkYXRpb25UZXh0LUVtYWlsLVJlcXVpcmVkXCIgKm5nSWY9XCJpbkVkaXRNb2RlICYmIChmb3JtRW1wbG95ZWUgJiYgZm9ybUVtcGxveWVlLkxvZ2luSW5mb19BcHBMb2dpbilcIj48L2R4aS12YWxpZGF0aW9uLXJ1bGU+XG4gICAgICAgICAgICAgICAgPGR4aS12YWxpZGF0aW9uLXJ1bGUgdHlwZT1cImVtYWlsXCIgbWVzc2FnZT1cIkVtYWlsIGlzIGludmFsaWRcIiBpMThuLW1lc3NhZ2U9XCJAQFZhbGlkYXRpb25UZXh0LUVtYWlsLUludmFsaWRcIj48L2R4aS12YWxpZGF0aW9uLXJ1bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICA8L2R4aS1pdGVtPiBcblxuICAgICAgICAgICAgPGR4aS1pdGVtIGRhdGFGaWVsZD1cIlJlY29nbml0aW9uVHlwZVwiIGVkaXRvclR5cGU9XCJkeFNlbGVjdEJveFwiIFtlZGl0b3JPcHRpb25zXT1cImVkaXRvck9wdGlvbnNfUmVjb2duaXRpb25UeXBlXCI+XG4gICAgICAgICAgICAgICAgPGR4by1sYWJlbCB0ZXh0PVwiUmVjb2duaXRpb24gdHlwZVwiIGkxOG4tdGV4dD1cIkBARmllbGRDYXB0aW9uLVJlY29nbml0aW9uVHlwZVwiPjwvZHhvLWxhYmVsPlxuICAgICAgICAgICAgPC9keGktaXRlbT5cblxuICAgICAgICAgICAgPGR4aS1pdGVtIGRhdGFGaWVsZD1cIlBpbmNvZGVcIiBlZGl0b3JUeXBlPVwiZHhUZXh0Qm94XCIgW2VkaXRvck9wdGlvbnNdPVwiZWRpdG9yT3B0aW9uc19QaW5jb2RlXCI+XG4gICAgICAgICAgICAgICAgPGR4by1sYWJlbCB0ZXh0PVwiUGluIGNvZGVcIiBpMThuLXRleHQ9XCJAQEZpZWxkQ2FwdGlvbi1QaW5jb2RlXCI+PC9keG8tbGFiZWw+XG4gICAgICAgICAgICA8L2R4aS1pdGVtPiAgXG5cbiAgICAgICAgICAgIDxkeGktaXRlbSBkYXRhRmllbGQ9XCJRQV9Db25zaWdubWVudF9WYWxpZGF0aW9uXCIgZWRpdG9yVHlwZT1cImR4U2VsZWN0Qm94XCIgW2VkaXRvck9wdGlvbnNdPVwiZWRpdG9yT3B0aW9uc19RQV9Db25zaWdubWVudF9WYWxpZGF0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGR4by1sYWJlbCB0ZXh0PVwiQ29uc2lnbm1lbnQgdmFsaWRhdGlvblwiIGkxOG4tdGV4dD1cIkBARmllbGRDYXB0aW9uLUNvbnNpZ25tZW50VmFsaWRhdGlvblwiPjwvZHhvLWxhYmVsPlxuICAgICAgICAgICAgPC9keGktaXRlbT5cblxuICAgICAgICA8L2R4aS1pdGVtPiAgICAgICBcbiAgICAgICAgXG4gICAgPC9keC1mb3JtPlxuICAgIDwvZm9ybT5cbjwvbW9iaWNsb3VkLWdyb3VwLWJveD4iXX0=