@sachin9822/reports-lib 0.0.172 → 0.0.174

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.
@@ -477,9 +477,9 @@ export class AccountingReportComponent {
477
477
  }
478
478
  }
479
479
  AccountingReportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AccountingReportComponent, deps: [{ token: i1.ReportService }, { token: i2.ExportService }], target: i0.ɵɵFactoryTarget.Component });
480
- AccountingReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AccountingReportComponent, selector: "lib-accounting-report", ngImport: i0, template: "<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\"></lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"accountingReportModel!=undefined && accountingReportModel.accountingReportByBranchGroups?.length\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\"\r\n [metaDataTwo]=\"rightData\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let group of accountingReportModel?.accountingReportByBranchGroups; let i = index\">\r\n <ngb-panel [id]=\"'panel-' + i\">\r\n <ng-template ngbPanelTitle>\r\n <label class=\"title-stack line-1\">\r\n {{ group.branchNameAndCode }}\r\n </label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <!-- Send Transactions -->\r\n <div *ngIf=\"group.sendTransactions.entries.length\">\r\n <h6 class=\"subgroupcolumn\">{{ group.sendTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.sendTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.sendTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n\r\n <!-- Receive Transactions -->\r\n <div *ngIf=\"group.receiveTransactions.entries.length\" class=\"mt-3\">\r\n <h6 class=\"subgroupcolumn\">{{ group.receiveTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.receiveTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2 + 1]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.receiveTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2 + 1)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n\r\n\r\n</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound && loadingState!=ComponentLoadingState.Loading\">\r\n No Data found matching your search criteria.\r\n</div>", styles: [".transaction-grid ::ng-deep .ag-header{background-color:#f9f9f9;font-weight:600;font-size:10px;color:#000;border-right:1px solid #e0e0e0}:host ::ng-deep .ag-header-cell{padding:2px!important;align-items:center!important;justify-content:center!important;border-right:1px solid #e0e0e0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-align:center!important;height:auto!important}::ng-deep .ag-header-cell-label{display:flex!important;justify-content:center!important;align-items:center!important;width:100%;text-align:center!important}::ng-deep .ag-header-cell-text{text-align:center!important;width:100%!important;display:flex!important;justify-content:center!important}.transaction-grid ::ng-deep .ag-row{border-bottom:1px solid #e0e0e0}.transaction-grid ::ng-deep .ag-cell{font-size:9px;white-space:normal!important;word-break:keep-all!important;overflow-wrap:anywhere;line-height:1.4;padding:4px!important;color:#000;font-weight:500;border-right:.5px solid #e0e0e0;align-content:center;user-select:text!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;cursor:text}::ng-deep .ag-cell-label-container{padding:0!important}.ag-theme-alpine{--ag-header-font-size: 10px;--ag-font-size: 10px;--ag-header-background-color: #fdfdfd;--ag-header-foreground-color: rgb(0, 0, 0)}::ng-deep .ag-paging-panel{height:30px!important}::ng-deep .compact-grid .ag-cell{cursor:default!important;border-right:1px solid #e0e0e0;padding:2px 3px!important;font-size:9px!important;display:flex!important;align-items:center!important}::ng-deep .compact-grid .ag-cell-value{cursor:text!important;font-size:9px!important;padding:0 3px 0 2px!important}::ng-deep .compact-grid .ag-right-aligned-cell{text-align:right!important;justify-content:flex-end!important;text-overflow:ellipsis}.grid-size{width:100%!important;font-weight:500!important;height:390px!important}::ng-deep .ag-root{-webkit-user-select:text!important;user-select:text!important}::ng-deep .ag-cell{-webkit-user-select:text!important;user-select:text!important}.margin-bottom-30{margin-bottom:30px}::ng-deep .accordion-button{display:flex;align-items:flex-start;width:100%;min-height:30px;background-color:#e7f1ff;border:0}.title-stack{display:flex;flex-direction:column}.line-1{font-weight:600}::ng-deep .accordion-button.collapsed{color:#0c63e4!important;background-color:#f4f7fc!important}::ng-deep .accordion-button{color:#052c65!important;background-color:#f4f7fc!important}::ng-deep .accordion-item{margin-bottom:10px}::ng-deep .accordion-item{border-radius:0!important;margin-bottom:10px}::ng-deep .accordion-button{border-radius:0!important;font-size:13px!important}::ng-deep .accordion-collapse{border-radius:0!important}::ng-deep .accordion-body{border-radius:0!important}::ng-deep .accordion-item{border:1px solid #b0bac5!important}::ng-deep .accordion-item{border:1px solid #b0bac5;border-radius:0;margin-bottom:10px}::ng-deep .accordion-button{border:none;background-color:#e7f1ff;box-shadow:none}::ng-deep .accordion-button.collapsed{border-bottom:none!important}::ng-deep .accordion-button:not(.collapsed){background-color:#fff;border-bottom:none!important}::ng-deep .accordion-body{border-top:1px solid #b0bac5}:host ::ng-deep .my-2{margin-bottom:10px!important}label{margin-bottom:0!important}::ng-deep .card-header .btn-link{font-size:13px!important;color:#0c63e4!important}.subgroupcolumn{font-family:Open Sans!important;font-size:13px!important;color:#052c65!important;font-weight:700!important}::ng-deep .accordion-button.collapsed,.card-header .btn-link{color:#0c63e4!important;padding:10px!important}::ng-deep .accordion-button:not(.collapsed),.card-header .btn-link{color:#052c65!important;padding:10px!important}\n"], dependencies: [{ kind: "component", type: i3.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "maintainColumnOrder", "suppressFieldDotNotation", "deltaColumnMode", "applyColumnDefOrder", "immutableColumns", "suppressSetColumnStateEvents", "suppressColumnStateEvents", "colWidth", "minColWidth", "maxColWidth", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "components", "frameworkComponents", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "stopEditingWhenGridLosesFocus", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "defaultExportParams", "quickFilterText", "cacheQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "chartToolPanelsDef", "loadingCellRenderer", "loadingCellRendererFramework", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererFramework", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentFramework", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentFramework", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDelay", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererFramework", "fullWidthCellRendererParams", "embedFullWidthRows", "deprecatedEmbedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "groupRowsSticky", "groupRowInnerRenderer", "groupRowInnerRendererFramework", "groupMultiAutoColumn", "groupUseEntireRow", "groupSuppressAutoColumn", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "deltaRowDataMode", "batchUpdateWaitMillis", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "serverSideStoreType", "serverSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "suppressEnterpriseResetOnNewColumns", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellSelection", "suppressCellFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "deltaSort", "treeDataDisplayType", "angularCompileRows", "angularCompileFilters", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "suppressKeyboardEvent", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "defaultGroupSortComparator", "getChildCount", "getServerSideGroupLevelParams", "getServerSideStoreParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowNodeId", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSort", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthCell", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "filterOpened", "filterChanged", "filterModified", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "cellKeyPress", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pinnedRowDataChanged", "rowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PageSizeSelectorComponent, selector: "lib-page-size-selector", inputs: ["pageSizeArray", "defaultSize", "totalEntries", "gridApi"] }, { kind: "component", type: i6.MetadataComponent, selector: "lib-metadata", inputs: ["metaDataOne", "metaDataTwo", "showmetaDataOne", "showmetaDataTwo", "reportName"], outputs: ["searchEvent", "exportEvent"] }, { kind: "component", type: i7.NgbAccordion, selector: "ngb-accordion", inputs: ["animation", "activeIds", "closeOthers", "destroyOnHide", "type"], outputs: ["panelChange", "shown", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i7.NgbPanel, selector: "ngb-panel", inputs: ["disabled", "id", "title", "type", "cardClass"], outputs: ["shown", "hidden"] }, { kind: "directive", type: i7.NgbPanelTitle, selector: "ng-template[ngbPanelTitle]" }, { kind: "directive", type: i7.NgbPanelContent, selector: "ng-template[ngbPanelContent]" }, { kind: "component", type: i8.LoaderComponent, selector: "app-loader" }, { kind: "component", type: i9.SearchFilterComponent, selector: "lib-search-filter", inputs: ["ReportName"], outputs: ["searchClicked"] }] });
480
+ AccountingReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AccountingReportComponent, selector: "lib-accounting-report", ngImport: i0, template: "<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\"></lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"accountingReportModel!=undefined && accountingReportModel.accountingReportByBranchGroups?.length\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\"\r\n [metaDataTwo]=\"rightData\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <div class=\"report-accordion\">\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let group of accountingReportModel?.accountingReportByBranchGroups; let i = index\">\r\n <ngb-panel [id]=\"'panel-' + i\">\r\n <ng-template ngbPanelTitle>\r\n <label class=\"title-stack line-1\">\r\n {{ group.branchNameAndCode }}\r\n </label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <!-- Send Transactions -->\r\n <div *ngIf=\"group.sendTransactions.entries.length\">\r\n <h6 class=\"subgroupcolumn\">{{ group.sendTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.sendTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.sendTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n\r\n <!-- Receive Transactions -->\r\n <div *ngIf=\"group.receiveTransactions.entries.length\" class=\"mt-3\">\r\n <h6 class=\"subgroupcolumn\">{{ group.receiveTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.receiveTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2 + 1]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\"\r\n [rowData]=\"group.receiveTransactions.entries\" [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\"\r\n [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event, i * 2 + 1)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n </div>\r\n\r\n</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound && loadingState!=ComponentLoadingState.Loading\">\r\n No Data found matching your search criteria.\r\n</div>", styles: [".transaction-grid ::ng-deep .ag-header{background-color:#f9f9f9;font-weight:600;font-size:10px;color:#000;border-right:1px solid #e0e0e0}:host ::ng-deep .ag-header-cell{padding:2px!important;align-items:center!important;justify-content:center!important;border-right:1px solid #e0e0e0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-align:center!important;height:auto!important}::ng-deep .ag-header-cell-label{display:flex!important;justify-content:center!important;align-items:center!important;width:100%;text-align:center!important}::ng-deep .ag-header-cell-text{text-align:center!important;width:100%!important;display:flex!important;justify-content:center!important}.transaction-grid ::ng-deep .ag-row{border-bottom:1px solid #e0e0e0}.transaction-grid ::ng-deep .ag-cell{font-size:9px;white-space:normal!important;word-break:keep-all!important;overflow-wrap:anywhere;line-height:1.4;padding:4px!important;color:#000;font-weight:500;border-right:.5px solid #e0e0e0;align-content:center;user-select:text!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;cursor:text}::ng-deep .ag-cell-label-container{padding:0!important}.ag-theme-alpine{--ag-header-font-size: 10px;--ag-font-size: 10px;--ag-header-background-color: #fdfdfd;--ag-header-foreground-color: rgb(0, 0, 0)}::ng-deep .ag-paging-panel{height:30px!important}::ng-deep .compact-grid .ag-cell{cursor:default!important;border-right:1px solid #e0e0e0;padding:2px 3px!important;font-size:9px!important;display:flex!important;align-items:center!important}::ng-deep .compact-grid .ag-cell-value{cursor:text!important;font-size:9px!important;padding:0 3px 0 2px!important}::ng-deep .compact-grid .ag-right-aligned-cell{text-align:right!important;justify-content:flex-end!important;text-overflow:ellipsis}.grid-size{width:100%!important;font-weight:500!important;height:390px!important}::ng-deep .ag-root{-webkit-user-select:text!important;user-select:text!important}::ng-deep .ag-cell{-webkit-user-select:text!important;user-select:text!important}.margin-bottom-30{margin-bottom:30px}.report-accordion ::ng-deep .accordion-button{display:flex;align-items:flex-start;width:100%;min-height:30px;background-color:#e7f1ff;border:0}.report-accordion .title-stack{display:flex;flex-direction:column}.report-accordion .line-1{font-weight:600}.report-accordion ::ng-deep .accordion-button.collapsed{color:#0c63e4!important;background-color:#f4f7fc!important}.report-accordion ::ng-deep .accordion-button{color:#052c65!important;background-color:#f4f7fc!important}.report-accordion ::ng-deep .accordion-item{margin-bottom:10px}.report-accordion ::ng-deep .accordion-item{border-radius:0!important;margin-bottom:10px}.report-accordion ::ng-deep .accordion-button{border-radius:0!important;font-size:13px!important}.report-accordion ::ng-deep .accordion-collapse{border-radius:0!important}.report-accordion ::ng-deep .accordion-body{border-radius:0!important}.report-accordion ::ng-deep .accordion-item{border:1px solid #b0bac5!important}.report-accordion ::ng-deep .accordion-item{border:1px solid #b0bac5;border-radius:0;margin-bottom:10px}.report-accordion ::ng-deep .accordion-button{border:none;background-color:#e7f1ff;box-shadow:none}.report-accordion ::ng-deep .accordion-button.collapsed{border-bottom:none!important}.report-accordion ::ng-deep .accordion-button:not(.collapsed){background-color:#fff;border-bottom:none!important}.report-accordion ::ng-deep .accordion-body{border-top:1px solid #b0bac5}.report-accordion :host ::ng-deep .my-2{margin-bottom:10px!important}.report-accordion label{margin-bottom:0!important}.report-accordion .subgroupcolumn{font-family:Open Sans!important;font-size:13px!important;color:#052c65!important;font-weight:700!important}.report-accordion ::ng-deep .accordion-button.collapsed,.report-accordion .card-header .btn-link{color:#0c63e4!important;padding:10px!important}.report-accordion ::ng-deep .accordion-button:not(.collapsed),.report-accordion .card-header .btn-link{color:#052c65!important;padding:10px!important}\n"], dependencies: [{ kind: "component", type: i3.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "maintainColumnOrder", "suppressFieldDotNotation", "deltaColumnMode", "applyColumnDefOrder", "immutableColumns", "suppressSetColumnStateEvents", "suppressColumnStateEvents", "colWidth", "minColWidth", "maxColWidth", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "components", "frameworkComponents", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "stopEditingWhenGridLosesFocus", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "defaultExportParams", "quickFilterText", "cacheQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "chartToolPanelsDef", "loadingCellRenderer", "loadingCellRendererFramework", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererFramework", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentFramework", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentFramework", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDelay", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererFramework", "fullWidthCellRendererParams", "embedFullWidthRows", "deprecatedEmbedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "groupRowsSticky", "groupRowInnerRenderer", "groupRowInnerRendererFramework", "groupMultiAutoColumn", "groupUseEntireRow", "groupSuppressAutoColumn", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "deltaRowDataMode", "batchUpdateWaitMillis", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "serverSideStoreType", "serverSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "suppressEnterpriseResetOnNewColumns", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellSelection", "suppressCellFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "deltaSort", "treeDataDisplayType", "angularCompileRows", "angularCompileFilters", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "suppressKeyboardEvent", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "defaultGroupSortComparator", "getChildCount", "getServerSideGroupLevelParams", "getServerSideStoreParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowNodeId", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSort", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthCell", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "filterOpened", "filterChanged", "filterModified", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "cellKeyPress", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pinnedRowDataChanged", "rowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PageSizeSelectorComponent, selector: "lib-page-size-selector", inputs: ["pageSizeArray", "defaultSize", "totalEntries", "gridApi"] }, { kind: "component", type: i6.MetadataComponent, selector: "lib-metadata", inputs: ["metaDataOne", "metaDataTwo", "showmetaDataOne", "showmetaDataTwo", "reportName"], outputs: ["searchEvent", "exportEvent"] }, { kind: "component", type: i7.NgbAccordion, selector: "ngb-accordion", inputs: ["animation", "activeIds", "closeOthers", "destroyOnHide", "type"], outputs: ["panelChange", "shown", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i7.NgbPanel, selector: "ngb-panel", inputs: ["disabled", "id", "title", "type", "cardClass"], outputs: ["shown", "hidden"] }, { kind: "directive", type: i7.NgbPanelTitle, selector: "ng-template[ngbPanelTitle]" }, { kind: "directive", type: i7.NgbPanelContent, selector: "ng-template[ngbPanelContent]" }, { kind: "component", type: i8.LoaderComponent, selector: "app-loader" }, { kind: "component", type: i9.SearchFilterComponent, selector: "lib-search-filter", inputs: ["ReportName"], outputs: ["searchClicked"] }] });
481
481
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AccountingReportComponent, decorators: [{
482
482
  type: Component,
483
- args: [{ selector: 'lib-accounting-report', template: "<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\"></lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"accountingReportModel!=undefined && accountingReportModel.accountingReportByBranchGroups?.length\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\"\r\n [metaDataTwo]=\"rightData\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let group of accountingReportModel?.accountingReportByBranchGroups; let i = index\">\r\n <ngb-panel [id]=\"'panel-' + i\">\r\n <ng-template ngbPanelTitle>\r\n <label class=\"title-stack line-1\">\r\n {{ group.branchNameAndCode }}\r\n </label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <!-- Send Transactions -->\r\n <div *ngIf=\"group.sendTransactions.entries.length\">\r\n <h6 class=\"subgroupcolumn\">{{ group.sendTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.sendTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.sendTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n\r\n <!-- Receive Transactions -->\r\n <div *ngIf=\"group.receiveTransactions.entries.length\" class=\"mt-3\">\r\n <h6 class=\"subgroupcolumn\">{{ group.receiveTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.receiveTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2 + 1]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.receiveTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2 + 1)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n\r\n\r\n</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound && loadingState!=ComponentLoadingState.Loading\">\r\n No Data found matching your search criteria.\r\n</div>", styles: [".transaction-grid ::ng-deep .ag-header{background-color:#f9f9f9;font-weight:600;font-size:10px;color:#000;border-right:1px solid #e0e0e0}:host ::ng-deep .ag-header-cell{padding:2px!important;align-items:center!important;justify-content:center!important;border-right:1px solid #e0e0e0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-align:center!important;height:auto!important}::ng-deep .ag-header-cell-label{display:flex!important;justify-content:center!important;align-items:center!important;width:100%;text-align:center!important}::ng-deep .ag-header-cell-text{text-align:center!important;width:100%!important;display:flex!important;justify-content:center!important}.transaction-grid ::ng-deep .ag-row{border-bottom:1px solid #e0e0e0}.transaction-grid ::ng-deep .ag-cell{font-size:9px;white-space:normal!important;word-break:keep-all!important;overflow-wrap:anywhere;line-height:1.4;padding:4px!important;color:#000;font-weight:500;border-right:.5px solid #e0e0e0;align-content:center;user-select:text!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;cursor:text}::ng-deep .ag-cell-label-container{padding:0!important}.ag-theme-alpine{--ag-header-font-size: 10px;--ag-font-size: 10px;--ag-header-background-color: #fdfdfd;--ag-header-foreground-color: rgb(0, 0, 0)}::ng-deep .ag-paging-panel{height:30px!important}::ng-deep .compact-grid .ag-cell{cursor:default!important;border-right:1px solid #e0e0e0;padding:2px 3px!important;font-size:9px!important;display:flex!important;align-items:center!important}::ng-deep .compact-grid .ag-cell-value{cursor:text!important;font-size:9px!important;padding:0 3px 0 2px!important}::ng-deep .compact-grid .ag-right-aligned-cell{text-align:right!important;justify-content:flex-end!important;text-overflow:ellipsis}.grid-size{width:100%!important;font-weight:500!important;height:390px!important}::ng-deep .ag-root{-webkit-user-select:text!important;user-select:text!important}::ng-deep .ag-cell{-webkit-user-select:text!important;user-select:text!important}.margin-bottom-30{margin-bottom:30px}::ng-deep .accordion-button{display:flex;align-items:flex-start;width:100%;min-height:30px;background-color:#e7f1ff;border:0}.title-stack{display:flex;flex-direction:column}.line-1{font-weight:600}::ng-deep .accordion-button.collapsed{color:#0c63e4!important;background-color:#f4f7fc!important}::ng-deep .accordion-button{color:#052c65!important;background-color:#f4f7fc!important}::ng-deep .accordion-item{margin-bottom:10px}::ng-deep .accordion-item{border-radius:0!important;margin-bottom:10px}::ng-deep .accordion-button{border-radius:0!important;font-size:13px!important}::ng-deep .accordion-collapse{border-radius:0!important}::ng-deep .accordion-body{border-radius:0!important}::ng-deep .accordion-item{border:1px solid #b0bac5!important}::ng-deep .accordion-item{border:1px solid #b0bac5;border-radius:0;margin-bottom:10px}::ng-deep .accordion-button{border:none;background-color:#e7f1ff;box-shadow:none}::ng-deep .accordion-button.collapsed{border-bottom:none!important}::ng-deep .accordion-button:not(.collapsed){background-color:#fff;border-bottom:none!important}::ng-deep .accordion-body{border-top:1px solid #b0bac5}:host ::ng-deep .my-2{margin-bottom:10px!important}label{margin-bottom:0!important}::ng-deep .card-header .btn-link{font-size:13px!important;color:#0c63e4!important}.subgroupcolumn{font-family:Open Sans!important;font-size:13px!important;color:#052c65!important;font-weight:700!important}::ng-deep .accordion-button.collapsed,.card-header .btn-link{color:#0c63e4!important;padding:10px!important}::ng-deep .accordion-button:not(.collapsed),.card-header .btn-link{color:#052c65!important;padding:10px!important}\n"] }]
483
+ args: [{ selector: 'lib-accounting-report', template: "<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\"></lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"accountingReportModel!=undefined && accountingReportModel.accountingReportByBranchGroups?.length\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\"\r\n [metaDataTwo]=\"rightData\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <div class=\"report-accordion\">\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let group of accountingReportModel?.accountingReportByBranchGroups; let i = index\">\r\n <ngb-panel [id]=\"'panel-' + i\">\r\n <ng-template ngbPanelTitle>\r\n <label class=\"title-stack line-1\">\r\n {{ group.branchNameAndCode }}\r\n </label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <!-- Send Transactions -->\r\n <div *ngIf=\"group.sendTransactions.entries.length\">\r\n <h6 class=\"subgroupcolumn\">{{ group.sendTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.sendTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.sendTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n\r\n <!-- Receive Transactions -->\r\n <div *ngIf=\"group.receiveTransactions.entries.length\" class=\"mt-3\">\r\n <h6 class=\"subgroupcolumn\">{{ group.receiveTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.receiveTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2 + 1]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\"\r\n [rowData]=\"group.receiveTransactions.entries\" [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\"\r\n [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event, i * 2 + 1)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n </div>\r\n\r\n</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound && loadingState!=ComponentLoadingState.Loading\">\r\n No Data found matching your search criteria.\r\n</div>", styles: [".transaction-grid ::ng-deep .ag-header{background-color:#f9f9f9;font-weight:600;font-size:10px;color:#000;border-right:1px solid #e0e0e0}:host ::ng-deep .ag-header-cell{padding:2px!important;align-items:center!important;justify-content:center!important;border-right:1px solid #e0e0e0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-align:center!important;height:auto!important}::ng-deep .ag-header-cell-label{display:flex!important;justify-content:center!important;align-items:center!important;width:100%;text-align:center!important}::ng-deep .ag-header-cell-text{text-align:center!important;width:100%!important;display:flex!important;justify-content:center!important}.transaction-grid ::ng-deep .ag-row{border-bottom:1px solid #e0e0e0}.transaction-grid ::ng-deep .ag-cell{font-size:9px;white-space:normal!important;word-break:keep-all!important;overflow-wrap:anywhere;line-height:1.4;padding:4px!important;color:#000;font-weight:500;border-right:.5px solid #e0e0e0;align-content:center;user-select:text!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;cursor:text}::ng-deep .ag-cell-label-container{padding:0!important}.ag-theme-alpine{--ag-header-font-size: 10px;--ag-font-size: 10px;--ag-header-background-color: #fdfdfd;--ag-header-foreground-color: rgb(0, 0, 0)}::ng-deep .ag-paging-panel{height:30px!important}::ng-deep .compact-grid .ag-cell{cursor:default!important;border-right:1px solid #e0e0e0;padding:2px 3px!important;font-size:9px!important;display:flex!important;align-items:center!important}::ng-deep .compact-grid .ag-cell-value{cursor:text!important;font-size:9px!important;padding:0 3px 0 2px!important}::ng-deep .compact-grid .ag-right-aligned-cell{text-align:right!important;justify-content:flex-end!important;text-overflow:ellipsis}.grid-size{width:100%!important;font-weight:500!important;height:390px!important}::ng-deep .ag-root{-webkit-user-select:text!important;user-select:text!important}::ng-deep .ag-cell{-webkit-user-select:text!important;user-select:text!important}.margin-bottom-30{margin-bottom:30px}.report-accordion ::ng-deep .accordion-button{display:flex;align-items:flex-start;width:100%;min-height:30px;background-color:#e7f1ff;border:0}.report-accordion .title-stack{display:flex;flex-direction:column}.report-accordion .line-1{font-weight:600}.report-accordion ::ng-deep .accordion-button.collapsed{color:#0c63e4!important;background-color:#f4f7fc!important}.report-accordion ::ng-deep .accordion-button{color:#052c65!important;background-color:#f4f7fc!important}.report-accordion ::ng-deep .accordion-item{margin-bottom:10px}.report-accordion ::ng-deep .accordion-item{border-radius:0!important;margin-bottom:10px}.report-accordion ::ng-deep .accordion-button{border-radius:0!important;font-size:13px!important}.report-accordion ::ng-deep .accordion-collapse{border-radius:0!important}.report-accordion ::ng-deep .accordion-body{border-radius:0!important}.report-accordion ::ng-deep .accordion-item{border:1px solid #b0bac5!important}.report-accordion ::ng-deep .accordion-item{border:1px solid #b0bac5;border-radius:0;margin-bottom:10px}.report-accordion ::ng-deep .accordion-button{border:none;background-color:#e7f1ff;box-shadow:none}.report-accordion ::ng-deep .accordion-button.collapsed{border-bottom:none!important}.report-accordion ::ng-deep .accordion-button:not(.collapsed){background-color:#fff;border-bottom:none!important}.report-accordion ::ng-deep .accordion-body{border-top:1px solid #b0bac5}.report-accordion :host ::ng-deep .my-2{margin-bottom:10px!important}.report-accordion label{margin-bottom:0!important}.report-accordion .subgroupcolumn{font-family:Open Sans!important;font-size:13px!important;color:#052c65!important;font-weight:700!important}.report-accordion ::ng-deep .accordion-button.collapsed,.report-accordion .card-header .btn-link{color:#0c63e4!important;padding:10px!important}.report-accordion ::ng-deep .accordion-button:not(.collapsed),.report-accordion .card-header .btn-link{color:#052c65!important;padding:10px!important}\n"] }]
484
484
  }], ctorParameters: function () { return [{ type: i1.ReportService }, { type: i2.ExportService }]; } });
485
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudGluZy1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2FjY291bnRpbmctcmVwb3J0L2FjY291bnRpbmctcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9hY2NvdW50aW5nLXJlcG9ydC9hY2NvdW50aW5nLXJlcG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBS2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUUvRSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEtBQUssU0FBUyxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7QUEwQnhDLE1BQU0sT0FBTyx5QkFBeUI7SUF3RXBDLFlBQW9CLGFBQTRCLEVBQVUsYUFBNEI7UUFBbEUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXRFdEYsZUFBVSxHQUFXLFlBQVksQ0FBQztRQU1sQywwQkFBcUIsR0FBRyxzQkFBc0IsQ0FBQztRQUMvQyxpQkFBWSxHQUEyQixzQkFBc0IsQ0FBQyxRQUFRLENBQUM7UUFDdkUsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFLN0IsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUV0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QUFLLENBQUMsUUFBUTtZQUN6QixPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDckIsZUFBZSxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSztZQUMzQyxlQUFlLEVBQUUsS0FBSyxDQUFDLGNBQWMsSUFBSSxLQUFLO1lBQzlDLDRCQUE0QixFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSztZQUNuRCxpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNwRCxjQUFjLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLO1lBQ3ZDLGVBQWUsRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUs7WUFDdkMsVUFBVSxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSztZQUNqQyxXQUFXLEVBQUUsS0FBSyxDQUFDLCtDQUErQztTQUNuRSxDQUFDO1FBRUYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O3NIQTFpQlUseUJBQXlCOzBHQUF6Qix5QkFBeUIsNkRDckN0Qyw0NEdBNERNOzJGRHZCTyx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWNjb3VudGluZ1JlcG9ydE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjY291bnRpbmctcmVwb3J0L2FjY291bnRpbmctcmVwb3J0LW1vZGVsJztcclxuaW1wb3J0IHsgQ29sRGVmLCBDb2x1bW5BcGksIEdyaWRBcGksIEdyaWRSZWFkeUV2ZW50IH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBSZXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVwb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2V4cG9ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudExvYWRpbmdTdGF0ZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tcG9uZW50LWxvYWRpbmctc3RhdGVzJztcclxuaW1wb3J0IHsgQWNjb3VudGluZ1JlcG9ydEJyYW5jaEdyb3VwIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjY291bnRpbmctcmVwb3J0L2FjY291bnRpbmctcmVwb3J0LWJyYW5jaC1ncm91cCc7XHJcbmltcG9ydCBqc1BERiBmcm9tICdqc3BkZic7XHJcbmltcG9ydCAnanNwZGYtYXV0b3RhYmxlJztcclxuaW1wb3J0ICogYXMgRXhjZWxKUyBmcm9tICdleGNlbGpzJztcclxuaW1wb3J0ICogYXMgRmlsZVNhdmVyIGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5cclxuZGVjbGFyZSBtb2R1bGUgJ2pzcGRmJyB7XHJcbiAgaW50ZXJmYWNlIGpzUERGIHtcclxuICAgIGF1dG9UYWJsZTogKG9wdGlvbnM6IGFueSkgPT4ganNQREY7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFjY291bnRpbmdSZXBvcnRSZXF1ZXN0IHtcclxuICBzdGFydERhdGU6IHN0cmluZztcclxuICBlbmREYXRlOiBzdHJpbmc7XHJcbiAgc2VuZENvdW50cnlDb2RlOiBzdHJpbmc7XHJcbiAgcmVjdkNvdW50cnlDb2RlOiBzdHJpbmc7XHJcbiAgYnVzaW5lc3NQYXJ0bmVyQ29ycmVsYXRpb25JRDogc3RyaW5nO1xyXG4gIHRyYW5zYWN0aW9uU3RhdHVzOiBzdHJpbmc7XHJcbiAgcGF5b3V0Q3VycmVuY3k6IHN0cmluZztcclxuICB0cmFuc2FjdGlvblR5cGU6IHN0cmluZztcclxuICBicmFuY2hDb2RlOiBzdHJpbmc7XHJcbiAgY29tcGFueUNvZGU6IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYWNjb3VudGluZy1yZXBvcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hY2NvdW50aW5nLXJlcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWNjb3VudGluZy1yZXBvcnQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWNjb3VudGluZ1JlcG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIFJlcG9ydE5hbWU6IHN0cmluZyA9IFwiQWNjb3VudGluZ1wiO1xyXG4gIHJlcG9ydFVzZXI6IGFueTtcclxuICByZXBvcnRUaW1lOiBhbnk7XHJcbiAgcmVwb3J0UGVyaW9kOiBhbnk7XHJcbiAgYnJhbmNoTmFtZUFuZENvZGU6IGFueTtcclxuICBzdWJHcm91cENvbHVtbjogYW55O1xyXG4gIENvbXBvbmVudExvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXM7XHJcbiAgbG9hZGluZ1N0YXRlOiBDb21wb25lbnRMb2FkaW5nU3RhdGVzID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICBub0RhdGFGb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBsZWZ0RGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxuICByaWdodERhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcblxyXG4gIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIHJvd0RhdGEgPSBbXTtcclxuICBhY2NvdW50aW5nUmVwb3J0TW9kZWw6IEFjY291bnRpbmdSZXBvcnRNb2RlbDtcclxuICBwYWdlU2l6ZTogbnVtYmVyID0gMTU7XHJcblxyXG4gIHNlbGVjdGVkRXhwb3J0T3B0aW9uOiBzdHJpbmcgPSAnZXhjZWwnO1xyXG4gIGV4cG9ydEZvcm1hdHMgPSBbeyBmb3JtYXROYW1lOiBcIkV4Y2VsXCIsIGNvZGU6ICdleGNlbCcgfSwgeyBmb3JtYXROYW1lOiBcIlBERlwiLCBjb2RlOiAncGRmJyB9LCB7IGZvcm1hdE5hbWU6IFwiQ1NWXCIsIGNvZGU6ICdjc3YnIH1dXHJcblxyXG4gIGRlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcclxuICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgIG1pbldpZHRoOiA0MCxcclxuICAgIHN1cHByZXNzU2l6ZVRvRml0OiBmYWxzZSxcclxuICAgIGNlbGxTdHlsZTogeyB1c2VyU2VsZWN0OiAndGV4dCcsICdsaW5lLWhlaWdodCc6ICcxLjInLCAnd2hpdGUtc3BhY2UnOiAnbm9ybWFsJywgJ3dvcmQtYnJlYWsnOiAnbm9ybWFsJywgJ292ZXJmbG93LXdyYXAnOiAnYnJlYWstd29yZCcgfSxcclxuXHJcbiAgICAvLyAgSGVhZGVyIHdyYXBwaW5nXHJcbiAgICB3cmFwSGVhZGVyVGV4dDogdHJ1ZSxcclxuICAgIGF1dG9IZWFkZXJIZWlnaHQ6IHRydWUsXHJcblxyXG4gICAgLy8gIENlbGwgd3JhcHBpbmdcclxuICAgIHdyYXBUZXh0OiB0cnVlLFxyXG4gICAgYXV0b0hlaWdodDogdHJ1ZVxyXG4gIH07XHJcblxyXG4gIGNvbHVtbkRlZnM6IENvbERlZltdID0gW1xyXG4gICAgeyBoZWFkZXJOYW1lOiAnQnVzaW5lc3NEYXRlJywgZmllbGQ6ICdidXNpbmVzc0RhdGUnLCB0b29sdGlwRmllbGQ6ICdidXNpbmVzc0RhdGUnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdUeG5EYXRlJlRpbWUnLCBmaWVsZDogJ3RyYW5zYWN0aW9uRGF0ZUFuZFRpbWUnLCB0b29sdGlwRmllbGQ6ICd0cmFuc2FjdGlvbkRhdGVBbmRUaW1lJywgbWluV2lkdGg6IDExMCwgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1RyYW5zYWN0aW9uIE51bWJlcicsIGZpZWxkOiAndHJhbnNhY3Rpb25OdW1iZXInLCB0b29sdGlwRmllbGQ6ICd0cmFuc2FjdGlvbk51bWJlcicgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NlbmRDbGllbnQnLCBmaWVsZDogJ3NlbmRDbGllbnQnLCB0b29sdGlwRmllbGQ6ICdzZW5kQ2xpZW50JyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnUHJpbmNpcGxlIFNlbmRDbGllbnQgKElmIEFwcGxpY2FibGUpJywgZmllbGQ6ICdwcmluY2lwbGVTZW5kQ2xpZW50JywgdG9vbHRpcEZpZWxkOiAncHJpbmNpcGxlU2VuZENsaWVudCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1JlY2VpdmVDbGllbnQnLCBmaWVsZDogJ3JlY2VpdmVDbGllbnQnLCB0b29sdGlwRmllbGQ6ICdyZWNlaXZlQ2xpZW50JyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnUHJpbmNpcGxlIFJlY2VpdmVDbGllbnQgKElmIEFwcGxpY2FibGUpJywgZmllbGQ6ICdwcmluY2lwbGVSZWNlaXZlQ2xpZW50JywgdG9vbHRpcEZpZWxkOiAncHJpbmNpcGxlUmVjZWl2ZUNsaWVudCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1JlY2VpdmVDY3knLCBmaWVsZDogJ3JlY2VpdmVDdXJyZW5jeScsIHRvb2x0aXBGaWVsZDogJ3JlY2VpdmVDdXJyZW5jeScgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ0Ftb3VudFBhaWQnLCBmaWVsZDogJ2Ftb3VudFBhaWQnLCB0b29sdGlwRmllbGQ6ICdhbW91bnRQYWlkJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2VuZENjeScsIGZpZWxkOiAnc2VuZEN1cnJlbmN5JywgdG9vbHRpcEZpZWxkOiAnc2VuZEN1cnJlbmN5JywgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NlcnZpY2VGZWUnLCBmaWVsZDogJ3NlcnZpY2VGZWUnLCB0b29sdGlwRmllbGQ6ICdzZXJ2aWNlRmVlJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnVGF4JywgZmllbGQ6ICd0YXgnLCB0b29sdGlwRmllbGQ6ICd0YXgnLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdQcmluY2lwbGVTZW5kIEFtb3VudCcsIGZpZWxkOiAncHJpbmNpcGxlU2VuZEFtb3VudCcsIHRvb2x0aXBGaWVsZDogJ3ByaW5jaXBsZVNlbmRBbW91bnQnLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdUcmFuc2FjdGlvbiBTdGF0dXMnLCBmaWVsZDogJ3RyYW5zYWN0aW9uU3RhdHVzJywgdG9vbHRpcEZpZWxkOiAndHJhbnNhY3Rpb25TdGF0dXMnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdTZXR0bGVtZW50Q2N5JywgZmllbGQ6ICdzZXR0bGVtZW50Q3VycmVuY3knLCB0b29sdGlwRmllbGQ6ICdzZXR0bGVtZW50Q3VycmVuY3knLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdDbGllbnRTZXR0bCAoaW4gU0NjeSknLCBmaWVsZDogJ2NsaWVudFNldHRsZW1lbnRJblNDY3knLCB0b29sdGlwRmllbGQ6ICdjbGllbnRTZXR0bGVtZW50SW5TQ2N5JywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnQ2xpZW50U2V0dGwgKGluIFVTRCknLCBmaWVsZDogJ2NsaWVudFNldHRsZW1lbnRJblVTRCcsIHRvb2x0aXBGaWVsZDogJ2NsaWVudFNldHRsZW1lbnRJblVTRCcsIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NoYXJlVHlwZScsIGZpZWxkOiAnc2hhcmVUeXBlJywgdG9vbHRpcEZpZWxkOiAnc2hhcmVUeXBlJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2hhcmVWYWx1ZScsIGZpZWxkOiAnc2hhcmVWYWx1ZScsIHRvb2x0aXBGaWVsZDogJ3NoYXJlVmFsdWUnLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdTZW5kL1JlY2VpdmUgRmVlQ2N5JywgZmllbGQ6ICdzZW5kUmVjZWl2ZUZlZUNjeScsIHRvb2x0aXBGaWVsZDogJ3NlbmRSZWNlaXZlRmVlQ2N5JyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2hhcmVBbXQgKGluIFVTRCknLCBmaWVsZDogJ3NoYXJlQW1vdW50SW5VU0QnLCB0b29sdGlwRmllbGQ6ICdzaGFyZUFtb3VudEluVVNEJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2V0dGxlbWVudCBSYXRlJywgZmllbGQ6ICdzZXR0bGVtZW50UmF0ZScsIHRvb2x0aXBGaWVsZDogJ3NldHRsZW1lbnRSYXRlJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gIF07XHJcblxyXG5cclxuICBncmlkQXBpczogR3JpZEFwaVtdID0gW107XHJcbiAgZ3JpZENvbHVtbkFwaXM6IENvbHVtbkFwaVtdID0gW107XHJcblxyXG4gIHBhZ2luYXRpb25BcnJheTogYW55W107XHJcbiAgZXpyZW1pdFVzZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBvcmlnaW5hbEdyb3VwRW50cmllczogQWNjb3VudGluZ1JlcG9ydEJyYW5jaEdyb3VwW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXBvcnRTZXJ2aWNlOiBSZXBvcnRTZXJ2aWNlLCBwcml2YXRlIGV4cG9ydFNlcnZpY2U6IEV4cG9ydFNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGV6cmVtaXR1c2VybmFtZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2V6cmVtaXR1c2VybmFtZScpO1xyXG4gICAgaWYgKGV6cmVtaXR1c2VybmFtZSkge1xyXG4gICAgICB0aGlzLmV6cmVtaXRVc2VyID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBY2NvdW50aW5nUmVwb3J0KHJlcXVlc3Q/OiBBY2NvdW50aW5nUmVwb3J0UmVxdWVzdCkge1xyXG4gICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkxvYWRpbmc7XHJcbiAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuYnJhbmNoTmFtZUFuZENvZGUgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN1Ykdyb3VwQ29sdW1uID0gdW5kZWZpbmVkO1xyXG4gICAgY29uc3QgZmluYWxSZXEgPSByZXF1ZXN0O1xyXG5cclxuICAgIHRoaXMucmVwb3J0U2VydmljZS5nZXRBY2NvdW50aW5nUmVwb3J0KGZpbmFsUmVxKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsID0gZGF0YTtcclxuICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkNvbXBsZXRlO1xyXG5cclxuICAgICAgY29uc29sZS5sb2codGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwpO1xyXG5cclxuICAgICAgdGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwuYWNjb3VudGluZ1JlcG9ydEJ5QnJhbmNoR3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xyXG4gICAgICAgIGdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllcyA9IGdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllcy5tYXAoZW50cnkgPT4gKHtcclxuICAgICAgICAgIC4uLmVudHJ5LFxyXG4gICAgICAgICAgYnVzaW5lc3NEYXRlOiBmb3JtYXREYXRlKGVudHJ5LmJ1c2luZXNzRGF0ZSwgJ2RkL01NL3l5eXknLCAnZW4tVVMnKSxcclxuICAgICAgICAgIHRyYW5zYWN0aW9uRGF0ZUFuZFRpbWU6IGZvcm1hdERhdGUoZW50cnkudHJhbnNhY3Rpb25EYXRlQW5kVGltZSwgJ2RkL01NL3l5eXkgaGg6bW0gYScsICdlbi1VUycpLFxyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzID0gZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzLm1hcChlbnRyeSA9PiAoe1xyXG4gICAgICAgICAgLi4uZW50cnksXHJcbiAgICAgICAgICBidXNpbmVzc0RhdGU6IGZvcm1hdERhdGUoZW50cnkuYnVzaW5lc3NEYXRlLCAnZGQvTU0veXl5eScsICdlbi1VUycpLFxyXG4gICAgICAgICAgdHJhbnNhY3Rpb25EYXRlQW5kVGltZTogZm9ybWF0RGF0ZShlbnRyeS50cmFuc2FjdGlvbkRhdGVBbmRUaW1lLCAnZGQvTU0veXl5eSBoaDptbSBhJywgJ2VuLVVTJyksXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9KTtcclxuXHJcblxyXG4gICAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbCA9IGRhdGE7XHJcbiAgICAgIHRoaXMubm9EYXRhRm91bmQgPSBPYmplY3Qua2V5cyh0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMpLmxlbmd0aCA9PSAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICBjb25zdCBicmFuY2hDb3VudCA9IHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5sZW5ndGg7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvbkFycmF5ID0gbmV3IEFycmF5KGJyYW5jaENvdW50ICogMikuZmlsbCgxNSk7XHJcblxyXG5cclxuICAgICAgdGhpcy5yZXBvcnRVc2VyID0gdGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwucmVwb3J0VXNlcjtcclxuICAgICAgdGhpcy5yZXBvcnRUaW1lID0gZm9ybWF0RGF0ZShuZXcgRGF0ZSgpLCAnZGQvTU0veXl5eSBoaDptbSBhJywgJ2VuLVVTJyk7XHJcbiAgICAgIHRoaXMucmVwb3J0UGVyaW9kID0gYCR7Zm9ybWF0RGF0ZShmaW5hbFJlcS5zdGFydERhdGUsICdkZC9NTS95eXl5JywgJ2VuLVVTJyl9IC0gJHtmb3JtYXREYXRlKGZpbmFsUmVxLmVuZERhdGUsICdkZC9NTS95eXl5JywgJ2VuLVVTJyl9YDtcclxuXHJcbiAgICAgIHRoaXMubGVmdERhdGEgPSB7XHJcbiAgICAgICAgJ1JlcG9ydCBVc2VyICc6IGAke3RoaXMucmVwb3J0VXNlcn1gLFxyXG4gICAgICAgICdSZXBvcnQgVGltZSc6IGAke3RoaXMucmVwb3J0VGltZX1gLFxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnJpZ2h0RGF0YSA9IHtcclxuICAgICAgICAnUmVwb3J0IFBlcmlvZCc6IGAke3RoaXMucmVwb3J0UGVyaW9kfWAsXHJcbiAgICAgICAgJ0NvbXBhbnknOiBcIlhwcmVzcyBNb25leVwiXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIERlZXAgY29weSB0byBwcmVzZXJ2ZSBvcmlnaW5hbCBkYXRhIGZvciBzZWFyY2hcclxuICAgICAgdGhpcy5vcmlnaW5hbEdyb3VwRW50cmllcyA9IHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5tYXAoZ3JvdXAgPT4gKHtcclxuICAgICAgICAuLi5ncm91cCxcclxuICAgICAgICBzZW5kVHJhbnNhY3Rpb25zOiB7XHJcbiAgICAgICAgICAuLi5ncm91cC5zZW5kVHJhbnNhY3Rpb25zLFxyXG4gICAgICAgICAgZW50cmllczogWy4uLmdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllc11cclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlY2VpdmVUcmFuc2FjdGlvbnM6IHtcclxuICAgICAgICAgIC4uLmdyb3VwLnJlY2VpdmVUcmFuc2FjdGlvbnMsXHJcbiAgICAgICAgICBlbnRyaWVzOiBbLi4uZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzXVxyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG5cclxuXHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaGFuZGxlRXhwb3J0KG9wdGlvbjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uID0gb3B0aW9uO1xyXG4gICAgc3dpdGNoICh0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uKSB7XHJcbiAgICAgIGNhc2UgJ2V4Y2VsJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvRXhjZWwoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncGRmJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvUGRmKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Nzdic6XHJcbiAgICAgICAgdGhpcy5leHBvcnRUb0NzdigpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGFsZXJ0KCdQbGVhc2Ugc2VsZWN0IGFuIGV4cG9ydCBmb3JtYXQuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaCh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZSA9IChzdHI6IGFueSk6IHN0cmluZyA9PlxyXG4gICAgICBzdHI/LnRvU3RyaW5nKClcclxuICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgIC5yZXBsYWNlKC8sL2csICcnKVxyXG4gICAgICAgIC5yZXBsYWNlKC9cXHMrL2csICcgJylcclxuICAgICAgICAucmVwbGFjZSgvW1xcdTIwMEItXFx1MjAwRFxcdUZFRkZdL2csICcnKVxyXG4gICAgICAgIC50cmltKCk7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdGV4dDtcclxuICAgIGNvbnN0IHNlYXJjaCA9IG5vcm1hbGl6ZSh0ZXh0KTtcclxuXHJcbiAgICBpZiAoIXRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsPy5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMuZm9yRWFjaCgoZ3JvdXAsIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsU2VuZEVudHJpZXMgPSB0aGlzLm9yaWdpbmFsR3JvdXBFbnRyaWVzW2luZGV4XT8uc2VuZFRyYW5zYWN0aW9ucy5lbnRyaWVzIHx8IFtdO1xyXG4gICAgICBjb25zdCBvcmlnaW5hbFJlY2VpdmVFbnRyaWVzID0gdGhpcy5vcmlnaW5hbEdyb3VwRW50cmllc1tpbmRleF0/LnJlY2VpdmVUcmFuc2FjdGlvbnMuZW50cmllcyB8fCBbXTtcclxuXHJcbiAgICAgIGlmIChzZWFyY2gpIHtcclxuICAgICAgICBncm91cC5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXMgPSBvcmlnaW5hbFNlbmRFbnRyaWVzLmZpbHRlcihlbnRyeSA9PlxyXG4gICAgICAgICAgT2JqZWN0LnZhbHVlcyhlbnRyeSkuc29tZSh2YWx1ZSA9PiBub3JtYWxpemUodmFsdWUpLmluY2x1ZGVzKHNlYXJjaCkpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zLmVudHJpZXMgPSBvcmlnaW5hbFJlY2VpdmVFbnRyaWVzLmZpbHRlcihlbnRyeSA9PlxyXG4gICAgICAgICAgT2JqZWN0LnZhbHVlcyhlbnRyeSkuc29tZSh2YWx1ZSA9PiBub3JtYWxpemUodmFsdWUpLmluY2x1ZGVzKHNlYXJjaCkpXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBncm91cC5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXMgPSBbLi4ub3JpZ2luYWxTZW5kRW50cmllc107XHJcbiAgICAgICAgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzID0gWy4uLm9yaWdpbmFsUmVjZWl2ZUVudHJpZXNdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZXNldCBib3RoIGdyaWRzXHJcbiAgICAgIFtncm91cC5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXMsIGdyb3VwLnJlY2VpdmVUcmFuc2FjdGlvbnMuZW50cmllc10uZm9yRWFjaCgoZW50cmllcywgaWR4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ3JpZEFwaSA9IHRoaXMuZ3JpZEFwaXNbaW5kZXggKiAyICsgaWR4XTsgLy8ga2VlcCBzZXBhcmF0ZSBpZHMgZm9yIGdyaWRzXHJcbiAgICAgICAgaWYgKGdyaWRBcGkpIHtcclxuICAgICAgICAgIGdyaWRBcGkuc2V0Um93RGF0YShlbnRyaWVzKTtcclxuICAgICAgICAgIGlmIChncmlkQXBpLnBhZ2luYXRpb25Hb1RvRmlyc3RQYWdlKSBncmlkQXBpLnBhZ2luYXRpb25Hb1RvRmlyc3RQYWdlKCk7XHJcbiAgICAgICAgICBpZiAoZ3JpZEFwaS5wYWdpbmF0aW9uU2V0UGFnZVNpemUpIGdyaWRBcGkucGFnaW5hdGlvblNldFBhZ2VTaXplKHRoaXMucGFnZVNpemUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBvbkdyaWRSZWFkeShwYXJhbXM6IEdyaWRSZWFkeUV2ZW50LCBpZDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmdyaWRBcGlzW2lkXSA9IHBhcmFtcy5hcGk7XHJcbiAgICB0aGlzLmdyaWRDb2x1bW5BcGlzW2lkXSA9IHBhcmFtcy5jb2x1bW5BcGk7ICAgLy8g4pyFIGtlZXAgcGVyIGdyaWRcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYXV0b1NpemVBbGxDb2x1bW5zKGlkKSwgMTAwKTtcclxuICB9XHJcblxyXG5cclxuICBvbkdyaWRTaXplQ2hhbmdlZChwYXJhbXM6IGFueSwgaWQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5hdXRvU2l6ZUFsbENvbHVtbnMoaWQpO1xyXG4gIH1cclxuXHJcblxyXG4gIGF1dG9TaXplQWxsQ29sdW1ucyhpZDogbnVtYmVyLCBza2lwSGVhZGVyOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGNvbHVtbkFwaSA9IHRoaXMuZ3JpZENvbHVtbkFwaXNbaWRdO1xyXG4gICAgaWYgKCFjb2x1bW5BcGkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBhbGxDb2x1bW5JZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBjb2x1bW5BcGkuZ2V0Q29sdW1ucygpLmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgIGFsbENvbHVtbklkcy5wdXNoKGNvbHVtbi5nZXRJZCgpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbHVtbkFwaS5hdXRvU2l6ZUNvbHVtbnMoYWxsQ29sdW1uSWRzLCBza2lwSGVhZGVyKTtcclxuICB9XHJcblxyXG5cclxuICBmb3JtYXROdW1iZXIocGFyYW1zOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKHBhcmFtcy52YWx1ZSA9PSBudWxsKSByZXR1cm4gJyc7XHJcblxyXG4gICAgY29uc3QgZmllbGQgPSBwYXJhbXMuY29sRGVmLmZpZWxkO1xyXG5cclxuICAgIGlmIChmaWVsZCA9PT0gJ3NldHRsZW1lbnRSYXRlJykge1xyXG4gICAgICByZXR1cm4gTnVtYmVyKHBhcmFtcy52YWx1ZSkudG9GaXhlZCg4KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gTnVtYmVyKHBhcmFtcy52YWx1ZSkudG9GaXhlZCgzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwb3J0VG9QZGYoKSB7XHJcbiAgICBpZiAoIXRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcz8ubGVuZ3RoKSByZXR1cm47XHJcbiAgICBjb25zdCB0aXRsZSA9ICdBY2NvdW50aW5nIFJlcG9ydCc7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9ICdBY2NvdW50aW5nLVJlcG9ydC5wZGYnO1xyXG5cclxuICAgIGNvbnN0IG1ldGFkYXRhOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXHJcbiAgICAgIFsnUmVwb3J0IFVzZXI6JywgdGhpcy5yZXBvcnRVc2VyXSxcclxuICAgICAgWydSZXBvcnQgVGltZTonLCB0aGlzLnJlcG9ydFRpbWVdLFxyXG4gICAgICBbJ1JlcG9ydCBQZXJpb2Q6JywgdGhpcy5yZXBvcnRQZXJpb2RdLFxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdCBkb2MgPSBuZXcganNQREYoeyBvcmllbnRhdGlvbjogJ2xhbmRzY2FwZScsIHVuaXQ6ICdtbScsIGZvcm1hdDogWzcwMCwgMjEwXSB9KTtcclxuXHJcbiAgICBjb25zdCBsb2dvV2lkdGggPSAzOC40LCBsb2dvSGVpZ2h0ID0gMTcuNSwgbG9nb1ggPSAxNSwgbG9nb1kgPSA4O1xyXG4gICAgY29uc3QgcGFnZVdpZHRoID0gZG9jLmludGVybmFsLnBhZ2VTaXplLndpZHRoO1xyXG4gICAgY29uc3QgdGl0bGVZID0gMTg7XHJcblxyXG4gICAgLy8gTG9nb1xyXG4gICAgaWYgKHRoaXMuZXhwb3J0U2VydmljZVsnbG9nb0Jhc2U2NCddKSB7XHJcbiAgICAgIGRvYy5hZGRJbWFnZSh0aGlzLmV4cG9ydFNlcnZpY2VbJ2xvZ29CYXNlNjQnXSwgJ1BORycsIGxvZ29YLCBsb2dvWSwgbG9nb1dpZHRoLCBsb2dvSGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaXRsZVxyXG4gICAgZG9jLnNldEZvbnRTaXplKDE1KTtcclxuICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xyXG4gICAgZG9jLnRleHQodGl0bGUsIHBhZ2VXaWR0aCAvIDIsIHRpdGxlWSwgeyBhbGlnbjogJ2NlbnRlcicgfSk7XHJcblxyXG4gICAgbGV0IGN1cnJlbnRZID0gdGl0bGVZICsgMTQ7XHJcblxyXG4gICAgLy8gTWV0YWRhdGFcclxuICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XHJcbiAgICBtZXRhZGF0YS5mb3JFYWNoKChbbGFiZWwsIHZhbHVlXSwgaSkgPT4ge1xyXG4gICAgICBjb25zdCB5ID0gY3VycmVudFkgKyBpICogNztcclxuICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdib2xkJyk7XHJcbiAgICAgIGRvYy50ZXh0KGxhYmVsLCAxNSwgeSk7XHJcbiAgICAgIGNvbnN0IGxhYmVsV2lkdGggPSBkb2MuZ2V0VGV4dFdpZHRoKGxhYmVsICsgJyAnKTtcclxuICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdub3JtYWwnKTtcclxuICAgICAgZG9jLnRleHQodmFsdWUgPz8gJycsIDE1ICsgbGFiZWxXaWR0aCwgeSk7XHJcbiAgICB9KTtcclxuICAgIGN1cnJlbnRZICs9IG1ldGFkYXRhLmxlbmd0aCAqIDcgKyA1O1xyXG5cclxuICAgIC8vIEJyYW5jaGVzXHJcbiAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XHJcbiAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xyXG5cclxuICAgICAgY29uc3QgYnJhbmNoVGV4dCA9IGBCcmFuY2ggKE5hbWUgJiBDb2RlKTogJHtncm91cC5icmFuY2hOYW1lQW5kQ29kZX1gO1xyXG4gICAgICBkb2MudGV4dChicmFuY2hUZXh0LCAxNSwgY3VycmVudFkpO1xyXG4gICAgICBjdXJyZW50WSArPSA3O1xyXG5cclxuICAgICAgLy8gTG9vcCBzdWJncm91cHMgKFNlbmQgKyBSZWNlaXZlKVxyXG4gICAgICBbZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucywgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9uc10uZm9yRWFjaChzdWJHcm91cCA9PiB7XHJcbiAgICAgICAgaWYgKCFzdWJHcm91cC5lbnRyaWVzPy5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdib2xkJyk7XHJcbiAgICAgICAgZG9jLnRleHQoYFN1YiBHcm91cDogJHtzdWJHcm91cC5zdWJHcm91cE5hbWV9YCwgMTUsIGN1cnJlbnRZKTtcclxuICAgICAgICBjdXJyZW50WSArPSA1O1xyXG5cclxuICAgICAgICBjb25zdCB7IGhlYWRlcnMsIHJvd3MgfSA9IHRoaXMucHJlcGFyZUFjY291bnRpbmdUYWJsZShzdWJHcm91cC5lbnRyaWVzKTtcclxuXHJcbiAgICAgICAgKGRvYyBhcyBhbnkpLmF1dG9UYWJsZSh7XHJcbiAgICAgICAgICBoZWFkOiBbaGVhZGVyc10sXHJcbiAgICAgICAgICBib2R5OiByb3dzLFxyXG4gICAgICAgICAgc3RhcnRZOiBjdXJyZW50WSxcclxuICAgICAgICAgIHRoZW1lOiAnZ3JpZCcsXHJcbiAgICAgICAgICBoZWFkU3R5bGVzOiB7XHJcbiAgICAgICAgICAgIGZpbGxDb2xvcjogWzIyMCwgMjIwLCAyMjBdLCB0ZXh0Q29sb3I6IDAsXHJcbiAgICAgICAgICAgIGZvbnRTdHlsZTogJ2JvbGQnLCBmb250U2l6ZTogOSwgaGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBib2R5U3R5bGVzOiB7IGZvbnRTaXplOiA4LCBmaWxsQ29sb3I6IFsyNTUsIDI1NSwgMjU1XSwgdGV4dENvbG9yOiBbMCwgMCwgMF0gfSxcclxuICAgICAgICAgIHN0eWxlczogeyBjZWxsUGFkZGluZzogMiwgb3ZlcmZsb3c6ICdsaW5lYnJlYWsnLCBtaW5DZWxsSGVpZ2h0OiA2IH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGN1cnJlbnRZID0gKGRvYyBhcyBhbnkpLmxhc3RBdXRvVGFibGUuZmluYWxZICsgMTA7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZG9jLnNhdmUoZmlsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBvcnRUb0V4Y2VsKCkge1xyXG4gICAgaWYgKCF0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM/Lmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgY29uc3QgdGl0bGUgPSAnQWNjb3VudGluZyBSZXBvcnQnO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSAnQWNjb3VudGluZy1SZXBvcnQueGxzeCc7XHJcblxyXG4gICAgY29uc3Qgd29ya2Jvb2sgPSBuZXcgRXhjZWxKUy5Xb3JrYm9vaygpO1xyXG4gICAgY29uc3Qgd29ya3NoZWV0ID0gd29ya2Jvb2suYWRkV29ya3NoZWV0KCdBY2NvdW50aW5nIFJlcG9ydCcpO1xyXG4gICAgbGV0IGN1cnJlbnRSb3cgPSAxO1xyXG5cclxuICAgIC8vIExvZ29cclxuICAgIGlmICh0aGlzLmV4cG9ydFNlcnZpY2UubG9nb0Jhc2U2NCkge1xyXG4gICAgICBjb25zdCBiYXNlNjREYXRhID0gdGhpcy5leHBvcnRTZXJ2aWNlLmxvZ29CYXNlNjQucmVwbGFjZSgvXmRhdGE6aW1hZ2VcXC9cXHcrO2Jhc2U2NCwvLCAnJyk7XHJcbiAgICAgIGNvbnN0IGltYWdlSWQgPSB3b3JrYm9vay5hZGRJbWFnZSh7XHJcbiAgICAgICAgYmFzZTY0OiBiYXNlNjREYXRhLFxyXG4gICAgICAgIGV4dGVuc2lvbjogJ3BuZycsXHJcbiAgICAgIH0pO1xyXG4gICAgICB3b3Jrc2hlZXQuYWRkSW1hZ2UoaW1hZ2VJZCwgeyB0bDogeyBjb2w6IDAsIHJvdzogMCB9LCBleHQ6IHsgd2lkdGg6IDE0NSwgaGVpZ2h0OiA2NiB9LCBlZGl0QXM6ICdvbmVDZWxsJyB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaXRsZVxyXG4gICAgY29uc3QgdGl0bGVSb3cgPSB3b3Jrc2hlZXQuZ2V0Um93KGN1cnJlbnRSb3cpO1xyXG4gICAgdGl0bGVSb3cuZ2V0Q2VsbCg2KS52YWx1ZSA9IHRpdGxlO1xyXG4gICAgdGl0bGVSb3cuZ2V0Q2VsbCg2KS5mb250ID0geyBib2xkOiB0cnVlLCBzaXplOiAxNiB9O1xyXG4gICAgdGl0bGVSb3cuZ2V0Q2VsbCg2KS5hbGlnbm1lbnQgPSB7IHZlcnRpY2FsOiAnbWlkZGxlJywgaG9yaXpvbnRhbDogJ2xlZnQnIH07XHJcbiAgICB3b3Jrc2hlZXQubWVyZ2VDZWxscyhgRiR7Y3VycmVudFJvd306SiR7Y3VycmVudFJvd31gKTtcclxuICAgIGN1cnJlbnRSb3cgKz0gMztcclxuXHJcbiAgICAvLyBNZXRhZGF0YVxyXG4gICAgY29uc3QgbWV0YWRhdGE6IFtzdHJpbmcsIHN0cmluZ11bXSA9IFtcclxuICAgICAgWydSZXBvcnQgVXNlcicsIHRoaXMucmVwb3J0VXNlcl0sXHJcbiAgICAgIFsnUmVwb3J0IFRpbWUnLCB0aGlzLnJlcG9ydFRpbWVdLFxyXG4gICAgICBbJ1JlcG9ydCBQZXJpb2QnLCB0aGlzLnJlcG9ydFBlcmlvZF0sXHJcbiAgICBdO1xyXG4gICAgbWV0YWRhdGEuZm9yRWFjaCgoW2xhYmVsLCB2YWx1ZV0pID0+IHtcclxuICAgICAgY29uc3Qgcm93ID0gd29ya3NoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICByb3cuZ2V0Q2VsbCgxKS52YWx1ZSA9IHtcclxuICAgICAgICByaWNoVGV4dDogW1xyXG4gICAgICAgICAgeyB0ZXh0OiBgJHtsYWJlbH06IGAsIGZvbnQ6IHsgYm9sZDogdHJ1ZSB9IH0sXHJcbiAgICAgICAgICB7IHRleHQ6IHZhbHVlID8/ICcnLCBmb250OiB7IGJvbGQ6IGZhbHNlIH0gfVxyXG4gICAgICAgIF1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIHdvcmtzaGVldC5hZGRSb3coW10pOyBjdXJyZW50Um93Kys7XHJcblxyXG4gICAgLy8gQnJhbmNoZXNcclxuICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgY29uc3QgYnJhbmNoUm93ID0gd29ya3NoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICBicmFuY2hSb3cuZ2V0Q2VsbCgxKS52YWx1ZSA9IHtcclxuICAgICAgICByaWNoVGV4dDogW1xyXG4gICAgICAgICAgeyB0ZXh0OiAnQnJhbmNoIChOYW1lICYgQ29kZSk6ICcsIGZvbnQ6IHsgYm9sZDogdHJ1ZSB9IH0sXHJcbiAgICAgICAgICB7IHRleHQ6IGdyb3VwLmJyYW5jaE5hbWVBbmRDb2RlID8/ICcnLCBmb250OiB7IGJvbGQ6IGZhbHNlIH0gfVxyXG4gICAgICAgIF1cclxuICAgICAgfTtcclxuICAgICAgd29ya3NoZWV0LmFkZFJvdyhbXSk7IGN1cnJlbnRSb3crKztcclxuXHJcbiAgICAgIC8vIExvb3Agc3ViZ3JvdXBzXHJcbiAgICAgIFtncm91cC5zZW5kVHJhbnNhY3Rpb25zLCBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zXS5mb3JFYWNoKHN1Ykdyb3VwID0+IHtcclxuICAgICAgICBpZiAoIXN1Ykdyb3VwLmVudHJpZXM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBzdWJHcm91cFJvdyA9IHdvcmtzaGVldC5nZXRSb3coY3VycmVudFJvdysrKTtcclxuICAgICAgICBzdWJHcm91cFJvdy5nZXRDZWxsKDEpLnZhbHVlID0ge1xyXG4gICAgICAgICAgcmljaFRleHQ6IFtcclxuICAgICAgICAgICAgeyB0ZXh0OiAnU3ViIEdyb3VwOiAnLCBmb250OiB7IGJvbGQ6IHRydWUgfSB9LFxyXG4gICAgICAgICAgICB7IHRleHQ6IHN1Ykdyb3VwLnN1Ykdyb3VwTmFtZSA/PyAnJywgZm9udDogeyBib2xkOiBmYWxzZSB9IH1cclxuICAgICAgICAgIF1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB3b3Jrc2hlZXQuYWRkUm93KFtdKTsgY3VycmVudFJvdysrO1xyXG5cclxuICAgICAgICAvLyBIZWFkZXJzXHJcbiAgICAgICAgY29uc3QgeyBoZWFkZXJzLCByb3dzIH0gPSB0aGlzLnByZXBhcmVBY2NvdW50aW5nVGFibGUoc3ViR3JvdXAuZW50cmllcyk7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyUm93ID0gd29ya3NoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICAgIGhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyLCBpKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjZWxsID0gaGVhZGVyUm93LmdldENlbGwoaSArIDEpO1xyXG4gICAgICAgICAgY2VsbC52YWx1ZSA9IGhlYWRlcjtcclxuICAgICAgICAgIGNlbGwuZm9udCA9IHsgYm9sZDogdHJ1ZSB9O1xyXG4gICAgICAgICAgY2VsbC5maWxsID0geyB0eXBlOiAncGF0dGVybicsIHBhdHRlcm46ICdzb2xpZCcsIGZnQ29sb3I6IHsgYXJnYjogJ0Q5RDlEOScgfSB9O1xyXG4gICAgICAgICAgY2VsbC5hbGlnbm1lbnQgPSB7IHZlcnRpY2FsOiAnbWlkZGxlJywgaG9yaXpvbnRhbDogJ2NlbnRlcicgfTtcclxuICAgICAgICAgIGNlbGwuYm9yZGVyID0geyB0b3A6IHsgc3R5bGU6ICd0aGluJyB9LCBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LCBsZWZ0OiB7IHN0eWxlOiAndGhpbicgfSwgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9IH07XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIFJvd3NcclxuICAgICAgICByb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgICAgICBjb25zdCByb3cgPSB3b3Jrc2hlZXQuZ2V0Um93KGN1cnJlbnRSb3crKyk7XHJcbiAgICAgICAgICByLmZvckVhY2goKHZhbCwgaSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjZWxsID0gcm93LmdldENlbGwoaSArIDEpO1xyXG4gICAgICAgICAgICBjZWxsLnZhbHVlID0gdmFsO1xyXG4gICAgICAgICAgICBjZWxsLmJvcmRlciA9IHsgdG9wOiB7IHN0eWxlOiAndGhpbicgfSwgYm90dG9tOiB7IHN0eWxlOiAndGhpbicgfSwgbGVmdDogeyBzdHlsZTogJ3RoaW4nIH0sIHJpZ2h0OiB7IHN0eWxlOiAndGhpbicgfSB9O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHdvcmtzaGVldC5hZGRSb3coW10pOyBjdXJyZW50Um93Kys7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8g8J+UuSBBdXRvLWFkanVzdCBjb2x1bW4gd2lkdGhzIChpbmNsdWRpbmcgU3IgTm8pXHJcbiAgICBjb25zdCBhbGxIZWFkZXJzID0gWydTciBObycsIC4uLnRoaXMuY29sdW1uRGVmcy5tYXAoYyA9PiBjLmhlYWRlck5hbWUpXTtcclxuICAgIGFsbEhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyLCBpKSA9PiB7XHJcbiAgICAgIGxldCBtYXhMZW5ndGggPSBoZWFkZXIubGVuZ3RoOyAvLyBzdGFydCB3aXRoIGhlYWRlciBsZW5ndGhcclxuXHJcbiAgICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgICBbZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucywgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9uc10uZm9yRWFjaChzdWJHcm91cCA9PiB7XHJcbiAgICAgICAgICBzdWJHcm91cC5lbnRyaWVzLmZvckVhY2goZW50cnkgPT4ge1xyXG4gICAgICAgICAgICAvLyBTciBObyBjb2x1bW4gKGkgPSAwKSBpcyBqdXN0IG51bWJlcnNcclxuICAgICAgICAgICAgbGV0IHZhbCA9IGkgPT09IDAgPyAoc3ViR3JvdXAuZW50cmllcy5pbmRleE9mKGVudHJ5KSArIDEpLnRvU3RyaW5nKCkgOiAoZW50cnlbdGhpcy5jb2x1bW5EZWZzW2kgLSAxXT8uZmllbGRdID8/ICcnKTtcclxuICAgICAgICAgICAgY29uc3QgbGVuID0gdmFsLnRvU3RyaW5nKCkubGVuZ3RoO1xyXG4gICAgICAgICAgICBpZiAobGVuID4gbWF4TGVuZ3RoKSBtYXhMZW5ndGggPSBsZW47XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB3b3Jrc2hlZXQuZ2V0Q29sdW1uKGkgKyAxKS53aWR0aCA9IG1heExlbmd0aCArIDU7IC8vIHBhZGRpbmdcclxuICAgIH0pO1xyXG5cclxuICAgIHdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKS50aGVuKGJ1ZmZlciA9PiB7XHJcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge1xyXG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCdcclxuICAgICAgfSk7XHJcbiAgICAgIEZpbGVTYXZlci5zYXZlQXMoYmxvYiwgZmlsZU5hbWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgcHJpdmF0ZSBwcmVwYXJlQWNjb3VudGluZ1RhYmxlKGRhdGE6IGFueVtdKTogeyBoZWFkZXJzOiBzdHJpbmdbXSwgcm93czogYW55W11bXSB9IHtcclxuICAgIGNvbnN0IGN1cnJlbmN5RmllbGRzID0gWydhbW91bnRQYWlkJywgJ3NlcnZpY2VGZWUnLCAndGF4JywgJ3ByaW5jaXBsZVNlbmRBbW91bnQnLCAnY2xpZW50U2V0dGxlbWVudEluU0NjeSddO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IFsnU3IgTm8nLCAuLi50aGlzLmNvbHVtbkRlZnMubWFwKGMgPT4gYy5oZWFkZXJOYW1lKV07XHJcblxyXG4gICAgaWYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB7IGhlYWRlcnMsIHJvd3M6IFtdIH07IC8vIOKchSByZXR1cm4gaGVhZGVycyBvbmx5LCBlbXB0eSByb3dzXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgcm93cyA9IGRhdGEubWFwKChyb3csIGkpID0+IHtcclxuICAgICAgcmV0dXJuIFtcclxuICAgICAgICBpICsgMSxcclxuICAgICAgICAuLi50aGlzLmNvbHVtbkRlZnMubWFwKGNvbCA9PiB7XHJcbiAgICAgICAgICBsZXQgdmFsID0gcm93W2NvbC5maWVsZF07XHJcbiAgICAgICAgICBpZiAodmFsID09IG51bGwpIHJldHVybiAnJztcclxuICAgICAgICAgIGlmIChjdXJyZW5jeUZpZWxkcy5pbmNsdWRlcyhjb2wuZmllbGQpKSByZXR1cm4gcGFyc2VGbG9hdCh2YWwpLnRvRml4ZWQoMyk7XHJcbiAgICAgICAgICBpZiAoY29sLmZpZWxkID09PSAnc2V0dGxlbWVudFJhdGUnKSByZXR1cm4gcGFyc2VGbG9hdCh2YWwpLnRvRml4ZWQoOCk7XHJcbiAgICAgICAgICByZXR1cm4gdmFsO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIF07XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4geyBoZWFkZXJzLCByb3dzIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4cG9ydFRvQ3N2KCkge1xyXG4gICAgaWYgKCF0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM/Lmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSAnQWNjb3VudGluZy1SZXBvcnQuY3N2JztcclxuICAgIGNvbnN0IHJvd3M6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgcm93cy5wdXNoKCdSZXBvcnQgVGl0bGU6IEFjY291bnRpbmcgUmVwb3J0Jyk7XHJcbiAgICByb3dzLnB1c2goJycpO1xyXG4gICAgcm93cy5wdXNoKGBSZXBvcnQgVXNlcjogJHt0aGlzLnJlcG9ydFVzZXJ9YCk7XHJcbiAgICByb3dzLnB1c2goYFJlcG9ydCBUaW1lOiAke3RoaXMucmVwb3J0VGltZX1gKTtcclxuICAgIHJvd3MucHVzaChgUmVwb3J0IFBlcmlvZDogJHt0aGlzLnJlcG9ydFBlcmlvZH1gKTtcclxuICAgIHJvd3MucHVzaChgQ29tcGFueTogWHByZXNzIE1vbmV5YCk7XHJcbiAgICByb3dzLnB1c2goJycpO1xyXG5cclxuICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgcm93cy5wdXNoKGBCcmFuY2ggKE5hbWUgJiBDb2RlKTogJHtncm91cC5icmFuY2hOYW1lQW5kQ29kZX1gKTtcclxuXHJcbiAgICAgIFtncm91cC5zZW5kVHJhbnNhY3Rpb25zLCBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zXS5mb3JFYWNoKHN1Ykdyb3VwID0+IHtcclxuICAgICAgICBpZiAoIXN1Ykdyb3VwLmVudHJpZXM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgICAgICByb3dzLnB1c2goYFN1YiBHcm91cDogJHtzdWJHcm91cC5zdWJHcm91cE5hbWV9YCk7XHJcblxyXG4gICAgICAgIC8vIPCflLkgQWRkIFwiU3IgTm9cIiBhdCB0aGUgYmVnaW5uaW5nIG9mIGhlYWRlcnNcclxuICAgICAgICByb3dzLnB1c2goWydcIlNyIE5vXCInLCAuLi50aGlzLmNvbHVtbkRlZnMubWFwKGNvbCA9PiBgXCIke2NvbC5oZWFkZXJOYW1lfVwiYCldLmpvaW4oJywnKSk7XHJcblxyXG4gICAgICAgIHN1Ykdyb3VwLmVudHJpZXMuZm9yRWFjaCgoZW50cnksIGlkeCkgPT4ge1xyXG4gICAgICAgICAgLy8g8J+UuSBBZGQgc2VyaWFsIG51bWJlciBhdCBzdGFydCBvZiBlYWNoIHJvd1xyXG4gICAgICAgICAgY29uc3Qgcm93ID0gW1xyXG4gICAgICAgICAgICAoaWR4ICsgMSkudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgLi4udGhpcy5jb2x1bW5EZWZzLm1hcChjb2wgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbCA9IGVudHJ5W2NvbC5maWVsZF07XHJcbiAgICAgICAgICAgICAgaWYgKHZhbCA9PSBudWxsKSByZXR1cm4gJyc7XHJcbiAgICAgICAgICAgICAgaWYgKFsnYW1vdW50UGFpZCcsICdzZXJ2aWNlRmVlJywgJ3RheCcsICdwcmluY2lwbGVTZW5kQW1vdW50JywgJ2NsaWVudFNldHRsZW1lbnRJblNDY3knXS5pbmNsdWRlcyhjb2wuZmllbGQpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWwpLnRvRml4ZWQoMyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChjb2wuZmllbGQgPT09ICdzZXR0bGVtZW50UmF0ZScpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbCkudG9GaXhlZCg4KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGBcIiR7dmFsfVwiYDtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIF0uam9pbignLCcpO1xyXG4gICAgICAgICAgcm93cy5wdXNoKHJvdyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJvd3MucHVzaCgnJyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtyb3dzLmpvaW4oJ1xcbicpXSwgeyB0eXBlOiAndGV4dC9jc3Y7Y2hhcnNldD11dGYtODsnIH0pO1xyXG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmsuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuICBnZXRSZXBvcnQocGF5bG9hZDogYW55KSB7XHJcbiAgICBjb25zdCBtb2RhbCA9IHBheWxvYWQ/Lm1vZGFsIHx8IHBheWxvYWQ7XHJcblxyXG4gICAgY29uc3QgcmVxOiBBY2NvdW50aW5nUmVwb3J0UmVxdWVzdCA9IHtcclxuICAgICAgc3RhcnREYXRlOiBtb2RhbC5mcm9tRGF0ZSwgLy8geXl5eS1NTS1kZCBmcm9tIHRoZSBmaWx0ZXJcclxuICAgICAgZW5kRGF0ZTogbW9kYWwudG9EYXRlLFxyXG4gICAgICBzZW5kQ291bnRyeUNvZGU6IG1vZGFsLnNlbmRDb3VudHJ5ID8/ICdBTEwnLFxyXG4gICAgICByZWN2Q291bnRyeUNvZGU6IG1vZGFsLnJlY2VpdmVDb3VudHJ5ID8/ICdBTEwnLFxyXG4gICAgICBidXNpbmVzc1BhcnRuZXJDb3JyZWxhdGlvbklEOiBtb2RhbC5jbGllbnQgPz8gJ0FMTCcsXHJcbiAgICAgIHRyYW5zYWN0aW9uU3RhdHVzOiBtb2RhbC50cmFuc2FjdGlvblN0YXR1cy5qb2luKFwiLFwiKSxcclxuICAgICAgcGF5b3V0Q3VycmVuY3k6IG1vZGFsLmN1cnJlbmN5ID8/ICdBTEwnLFxyXG4gICAgICB0cmFuc2FjdGlvblR5cGU6IG1vZGFsLnByb2R1Y3QgPz8gJ0FMTCcsXHJcbiAgICAgIGJyYW5jaENvZGU6IG1vZGFsLmJyYW5jaCA/PyAnQUxMJyxcclxuICAgICAgY29tcGFueUNvZGU6ICdBTEwnIC8vIG9yICdCSCcgaWYgeW91ciBBUEkgcmVxdWlyZXMgaXQgc3BlY2lmaWNhbGx5XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZ2V0QWNjb3VudGluZ1JlcG9ydChyZXEpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGxpYi1zZWFyY2gtZmlsdGVyIFtSZXBvcnROYW1lXT1cIlJlcG9ydE5hbWVcIiAoc2VhcmNoQ2xpY2tlZCk9XCJnZXRSZXBvcnQoJGV2ZW50KVwiPjwvbGliLXNlYXJjaC1maWx0ZXI+XHJcblxyXG48YXBwLWxvYWRlciBjbGFzcz1cIlwiICpuZ0lmPVwibG9hZGluZ1N0YXRlID09IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nXCI+PC9hcHAtbG9hZGVyPlxyXG5cclxuPGRpdiAqbmdJZj1cImFjY291bnRpbmdSZXBvcnRNb2RlbCE9dW5kZWZpbmVkICYmIGFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM/Lmxlbmd0aFwiPlxyXG5cclxuICA8bGliLW1ldGFkYXRhIFtyZXBvcnROYW1lXT1cIlJlcG9ydE5hbWVcIiBbc2hvd21ldGFEYXRhT25lXT1cInRydWVcIiBbc2hvd21ldGFEYXRhVHdvXT1cInRydWVcIiBbbWV0YURhdGFPbmVdPVwibGVmdERhdGFcIlxyXG4gICAgW21ldGFEYXRhVHdvXT1cInJpZ2h0RGF0YVwiIChleHBvcnRFdmVudCk9XCJoYW5kbGVFeHBvcnQoJGV2ZW50KVwiIChzZWFyY2hFdmVudCk9XCJvblNlYXJjaCgkZXZlbnQpXCI+PC9saWItbWV0YWRhdGE+XHJcblxyXG4gIDxuZ2ItYWNjb3JkaW9uICNhY2M9XCJuZ2JBY2NvcmRpb25cIiBbY2xvc2VPdGhlcnNdPVwiZmFsc2VcIiBbYWN0aXZlSWRzXT1cIidwYW5lbC0wJ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgYWNjb3VudGluZ1JlcG9ydE1vZGVsPy5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgPG5nYi1wYW5lbCBbaWRdPVwiJ3BhbmVsLScgKyBpXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhbmVsVGl0bGU+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0aXRsZS1zdGFjayBsaW5lLTFcIj5cclxuICAgICAgICAgICAge3sgZ3JvdXAuYnJhbmNoTmFtZUFuZENvZGUgfX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhbmVsQ29udGVudD5cclxuICAgICAgICAgIDwhLS0gU2VuZCBUcmFuc2FjdGlvbnMgLS0+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucy5lbnRyaWVzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICA8aDYgY2xhc3M9XCJzdWJncm91cGNvbHVtblwiPnt7IGdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuc3ViR3JvdXBOYW1lIH19PC9oNj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cclxuICAgICAgICAgICAgICA8bGliLXBhZ2Utc2l6ZS1zZWxlY3RvciBbdG90YWxFbnRyaWVzXT1cImdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllcy5sZW5ndGhcIiBbZGVmYXVsdFNpemVdPVwiJzE1J1wiXHJcbiAgICAgICAgICAgICAgICBbZ3JpZEFwaV09XCJncmlkQXBpc1tpICogMl1cIj5cclxuICAgICAgICAgICAgICA8L2xpYi1wYWdlLXNpemUtc2VsZWN0b3I+XHJcblxyXG4gICAgICAgICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgY2xhc3M9XCJhZy10aGVtZS1hbHBpbmUgY29tcGFjdC1ncmlkIGdyaWQtc2l6ZVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMzcwcHg7XCJcclxuICAgICAgICAgICAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIiBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCIgW3Jvd0RhdGFdPVwiZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucy5lbnRyaWVzXCJcclxuICAgICAgICAgICAgICAgIFtyb3dIZWlnaHRdPVwiMjBcIiBbaGVhZGVySGVpZ2h0XT1cIjI0XCIgW3BhZ2luYXRpb25dPVwidHJ1ZVwiIFtwYWdpbmF0aW9uUGFnZVNpemVdPVwicGFnaW5hdGlvbkFycmF5W2ldXCJcclxuICAgICAgICAgICAgICAgIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50LCBpICogMilcIiAoZ3JpZFNpemVDaGFuZ2VkKT1cIm9uR3JpZFNpemVDaGFuZ2VkKCRldmVudCwgaSAqIDIpXCI+XHJcbiAgICAgICAgICAgICAgPC9hZy1ncmlkLWFuZ3VsYXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBSZWNlaXZlIFRyYW5zYWN0aW9ucyAtLT5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zLmVudHJpZXMubGVuZ3RoXCIgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgIDxoNiBjbGFzcz1cInN1Ymdyb3VwY29sdW1uXCI+e3sgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5zdWJHcm91cE5hbWUgfX08L2g2PlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiPlxyXG4gICAgICAgICAgICAgIDxsaWItcGFnZS1zaXplLXNlbGVjdG9yIFt0b3RhbEVudHJpZXNdPVwiZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzLmxlbmd0aFwiIFtkZWZhdWx0U2l6ZV09XCInMTUnXCJcclxuICAgICAgICAgICAgICAgIFtncmlkQXBpXT1cImdyaWRBcGlzW2kgKiAyICsgMV1cIj5cclxuICAgICAgICAgICAgICA8L2xpYi1wYWdlLXNpemUtc2VsZWN0b3I+XHJcblxyXG4gICAgICAgICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgY2xhc3M9XCJhZy10aGVtZS1hbHBpbmUgY29tcGFjdC1ncmlkIGdyaWQtc2l6ZVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMzcwcHg7XCJcclxuICAgICAgICAgICAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIiBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCIgW3Jvd0RhdGFdPVwiZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzXCJcclxuICAgICAgICAgICAgICAgIFtyb3dIZWlnaHRdPVwiMjBcIiBbaGVhZGVySGVpZ2h0XT1cIjI0XCIgW3BhZ2luYXRpb25dPVwidHJ1ZVwiIFtwYWdpbmF0aW9uUGFnZVNpemVdPVwicGFnaW5hdGlvbkFycmF5W2ldXCJcclxuICAgICAgICAgICAgICAgIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50LCBpICogMiArIDEpXCIgKGdyaWRTaXplQ2hhbmdlZCk9XCJvbkdyaWRTaXplQ2hhbmdlZCgkZXZlbnQsIGkgKiAyKVwiPlxyXG4gICAgICAgICAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmdiLXBhbmVsPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZ2ItYWNjb3JkaW9uPlxyXG5cclxuXHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmcgbXQtM1wiICpuZ0lmPVwibm9EYXRhRm91bmQgJiYgbG9hZGluZ1N0YXRlIT1Db21wb25lbnRMb2FkaW5nU3RhdGUuTG9hZGluZ1wiPlxyXG4gIE5vIERhdGEgZm91bmQgbWF0Y2hpbmcgeW91ciBzZWFyY2ggY3JpdGVyaWEuXHJcbjwvZGl2PiJdfQ==
485
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudGluZy1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2FjY291bnRpbmctcmVwb3J0L2FjY291bnRpbmctcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9hY2NvdW50aW5nLXJlcG9ydC9hY2NvdW50aW5nLXJlcG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBS2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUUvRSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEtBQUssU0FBUyxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7QUEwQnhDLE1BQU0sT0FBTyx5QkFBeUI7SUF3RXBDLFlBQW9CLGFBQTRCLEVBQVUsYUFBNEI7UUFBbEUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXRFdEYsZUFBVSxHQUFXLFlBQVksQ0FBQztRQU1sQywwQkFBcUIsR0FBRyxzQkFBc0IsQ0FBQztRQUMvQyxpQkFBWSxHQUEyQixzQkFBc0IsQ0FBQyxRQUFRLENBQUM7UUFDdkUsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFLN0IsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUV0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QUFLLENBQUMsUUFBUTtZQUN6QixPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDckIsZUFBZSxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSztZQUMzQyxlQUFlLEVBQUUsS0FBSyxDQUFDLGNBQWMsSUFBSSxLQUFLO1lBQzlDLDRCQUE0QixFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSztZQUNuRCxpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNwRCxjQUFjLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLO1lBQ3ZDLGVBQWUsRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUs7WUFDdkMsVUFBVSxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSztZQUNqQyxXQUFXLEVBQUUsS0FBSyxDQUFDLCtDQUErQztTQUNuRSxDQUFDO1FBRUYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O3NIQTFpQlUseUJBQXlCOzBHQUF6Qix5QkFBeUIsNkRDckN0QyxpaUhBOERNOzJGRHpCTyx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWNjb3VudGluZ1JlcG9ydE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjY291bnRpbmctcmVwb3J0L2FjY291bnRpbmctcmVwb3J0LW1vZGVsJztcclxuaW1wb3J0IHsgQ29sRGVmLCBDb2x1bW5BcGksIEdyaWRBcGksIEdyaWRSZWFkeUV2ZW50IH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBSZXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVwb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2V4cG9ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudExvYWRpbmdTdGF0ZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tcG9uZW50LWxvYWRpbmctc3RhdGVzJztcclxuaW1wb3J0IHsgQWNjb3VudGluZ1JlcG9ydEJyYW5jaEdyb3VwIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjY291bnRpbmctcmVwb3J0L2FjY291bnRpbmctcmVwb3J0LWJyYW5jaC1ncm91cCc7XHJcbmltcG9ydCBqc1BERiBmcm9tICdqc3BkZic7XHJcbmltcG9ydCAnanNwZGYtYXV0b3RhYmxlJztcclxuaW1wb3J0ICogYXMgRXhjZWxKUyBmcm9tICdleGNlbGpzJztcclxuaW1wb3J0ICogYXMgRmlsZVNhdmVyIGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5cclxuZGVjbGFyZSBtb2R1bGUgJ2pzcGRmJyB7XHJcbiAgaW50ZXJmYWNlIGpzUERGIHtcclxuICAgIGF1dG9UYWJsZTogKG9wdGlvbnM6IGFueSkgPT4ganNQREY7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFjY291bnRpbmdSZXBvcnRSZXF1ZXN0IHtcclxuICBzdGFydERhdGU6IHN0cmluZztcclxuICBlbmREYXRlOiBzdHJpbmc7XHJcbiAgc2VuZENvdW50cnlDb2RlOiBzdHJpbmc7XHJcbiAgcmVjdkNvdW50cnlDb2RlOiBzdHJpbmc7XHJcbiAgYnVzaW5lc3NQYXJ0bmVyQ29ycmVsYXRpb25JRDogc3RyaW5nO1xyXG4gIHRyYW5zYWN0aW9uU3RhdHVzOiBzdHJpbmc7XHJcbiAgcGF5b3V0Q3VycmVuY3k6IHN0cmluZztcclxuICB0cmFuc2FjdGlvblR5cGU6IHN0cmluZztcclxuICBicmFuY2hDb2RlOiBzdHJpbmc7XHJcbiAgY29tcGFueUNvZGU6IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYWNjb3VudGluZy1yZXBvcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hY2NvdW50aW5nLXJlcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWNjb3VudGluZy1yZXBvcnQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWNjb3VudGluZ1JlcG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIFJlcG9ydE5hbWU6IHN0cmluZyA9IFwiQWNjb3VudGluZ1wiO1xyXG4gIHJlcG9ydFVzZXI6IGFueTtcclxuICByZXBvcnRUaW1lOiBhbnk7XHJcbiAgcmVwb3J0UGVyaW9kOiBhbnk7XHJcbiAgYnJhbmNoTmFtZUFuZENvZGU6IGFueTtcclxuICBzdWJHcm91cENvbHVtbjogYW55O1xyXG4gIENvbXBvbmVudExvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXM7XHJcbiAgbG9hZGluZ1N0YXRlOiBDb21wb25lbnRMb2FkaW5nU3RhdGVzID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICBub0RhdGFGb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBsZWZ0RGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxuICByaWdodERhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcblxyXG4gIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIHJvd0RhdGEgPSBbXTtcclxuICBhY2NvdW50aW5nUmVwb3J0TW9kZWw6IEFjY291bnRpbmdSZXBvcnRNb2RlbDtcclxuICBwYWdlU2l6ZTogbnVtYmVyID0gMTU7XHJcblxyXG4gIHNlbGVjdGVkRXhwb3J0T3B0aW9uOiBzdHJpbmcgPSAnZXhjZWwnO1xyXG4gIGV4cG9ydEZvcm1hdHMgPSBbeyBmb3JtYXROYW1lOiBcIkV4Y2VsXCIsIGNvZGU6ICdleGNlbCcgfSwgeyBmb3JtYXROYW1lOiBcIlBERlwiLCBjb2RlOiAncGRmJyB9LCB7IGZvcm1hdE5hbWU6IFwiQ1NWXCIsIGNvZGU6ICdjc3YnIH1dXHJcblxyXG4gIGRlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcclxuICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgIG1pbldpZHRoOiA0MCxcclxuICAgIHN1cHByZXNzU2l6ZVRvRml0OiBmYWxzZSxcclxuICAgIGNlbGxTdHlsZTogeyB1c2VyU2VsZWN0OiAndGV4dCcsICdsaW5lLWhlaWdodCc6ICcxLjInLCAnd2hpdGUtc3BhY2UnOiAnbm9ybWFsJywgJ3dvcmQtYnJlYWsnOiAnbm9ybWFsJywgJ292ZXJmbG93LXdyYXAnOiAnYnJlYWstd29yZCcgfSxcclxuXHJcbiAgICAvLyAgSGVhZGVyIHdyYXBwaW5nXHJcbiAgICB3cmFwSGVhZGVyVGV4dDogdHJ1ZSxcclxuICAgIGF1dG9IZWFkZXJIZWlnaHQ6IHRydWUsXHJcblxyXG4gICAgLy8gIENlbGwgd3JhcHBpbmdcclxuICAgIHdyYXBUZXh0OiB0cnVlLFxyXG4gICAgYXV0b0hlaWdodDogdHJ1ZVxyXG4gIH07XHJcblxyXG4gIGNvbHVtbkRlZnM6IENvbERlZltdID0gW1xyXG4gICAgeyBoZWFkZXJOYW1lOiAnQnVzaW5lc3NEYXRlJywgZmllbGQ6ICdidXNpbmVzc0RhdGUnLCB0b29sdGlwRmllbGQ6ICdidXNpbmVzc0RhdGUnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdUeG5EYXRlJlRpbWUnLCBmaWVsZDogJ3RyYW5zYWN0aW9uRGF0ZUFuZFRpbWUnLCB0b29sdGlwRmllbGQ6ICd0cmFuc2FjdGlvbkRhdGVBbmRUaW1lJywgbWluV2lkdGg6IDExMCwgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1RyYW5zYWN0aW9uIE51bWJlcicsIGZpZWxkOiAndHJhbnNhY3Rpb25OdW1iZXInLCB0b29sdGlwRmllbGQ6ICd0cmFuc2FjdGlvbk51bWJlcicgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NlbmRDbGllbnQnLCBmaWVsZDogJ3NlbmRDbGllbnQnLCB0b29sdGlwRmllbGQ6ICdzZW5kQ2xpZW50JyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnUHJpbmNpcGxlIFNlbmRDbGllbnQgKElmIEFwcGxpY2FibGUpJywgZmllbGQ6ICdwcmluY2lwbGVTZW5kQ2xpZW50JywgdG9vbHRpcEZpZWxkOiAncHJpbmNpcGxlU2VuZENsaWVudCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1JlY2VpdmVDbGllbnQnLCBmaWVsZDogJ3JlY2VpdmVDbGllbnQnLCB0b29sdGlwRmllbGQ6ICdyZWNlaXZlQ2xpZW50JyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnUHJpbmNpcGxlIFJlY2VpdmVDbGllbnQgKElmIEFwcGxpY2FibGUpJywgZmllbGQ6ICdwcmluY2lwbGVSZWNlaXZlQ2xpZW50JywgdG9vbHRpcEZpZWxkOiAncHJpbmNpcGxlUmVjZWl2ZUNsaWVudCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1JlY2VpdmVDY3knLCBmaWVsZDogJ3JlY2VpdmVDdXJyZW5jeScsIHRvb2x0aXBGaWVsZDogJ3JlY2VpdmVDdXJyZW5jeScgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ0Ftb3VudFBhaWQnLCBmaWVsZDogJ2Ftb3VudFBhaWQnLCB0b29sdGlwRmllbGQ6ICdhbW91bnRQYWlkJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2VuZENjeScsIGZpZWxkOiAnc2VuZEN1cnJlbmN5JywgdG9vbHRpcEZpZWxkOiAnc2VuZEN1cnJlbmN5JywgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NlcnZpY2VGZWUnLCBmaWVsZDogJ3NlcnZpY2VGZWUnLCB0b29sdGlwRmllbGQ6ICdzZXJ2aWNlRmVlJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnVGF4JywgZmllbGQ6ICd0YXgnLCB0b29sdGlwRmllbGQ6ICd0YXgnLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdQcmluY2lwbGVTZW5kIEFtb3VudCcsIGZpZWxkOiAncHJpbmNpcGxlU2VuZEFtb3VudCcsIHRvb2x0aXBGaWVsZDogJ3ByaW5jaXBsZVNlbmRBbW91bnQnLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdUcmFuc2FjdGlvbiBTdGF0dXMnLCBmaWVsZDogJ3RyYW5zYWN0aW9uU3RhdHVzJywgdG9vbHRpcEZpZWxkOiAndHJhbnNhY3Rpb25TdGF0dXMnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdTZXR0bGVtZW50Q2N5JywgZmllbGQ6ICdzZXR0bGVtZW50Q3VycmVuY3knLCB0b29sdGlwRmllbGQ6ICdzZXR0bGVtZW50Q3VycmVuY3knLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdDbGllbnRTZXR0bCAoaW4gU0NjeSknLCBmaWVsZDogJ2NsaWVudFNldHRsZW1lbnRJblNDY3knLCB0b29sdGlwRmllbGQ6ICdjbGllbnRTZXR0bGVtZW50SW5TQ2N5JywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnQ2xpZW50U2V0dGwgKGluIFVTRCknLCBmaWVsZDogJ2NsaWVudFNldHRsZW1lbnRJblVTRCcsIHRvb2x0aXBGaWVsZDogJ2NsaWVudFNldHRsZW1lbnRJblVTRCcsIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NoYXJlVHlwZScsIGZpZWxkOiAnc2hhcmVUeXBlJywgdG9vbHRpcEZpZWxkOiAnc2hhcmVUeXBlJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2hhcmVWYWx1ZScsIGZpZWxkOiAnc2hhcmVWYWx1ZScsIHRvb2x0aXBGaWVsZDogJ3NoYXJlVmFsdWUnLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdTZW5kL1JlY2VpdmUgRmVlQ2N5JywgZmllbGQ6ICdzZW5kUmVjZWl2ZUZlZUNjeScsIHRvb2x0aXBGaWVsZDogJ3NlbmRSZWNlaXZlRmVlQ2N5JyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2hhcmVBbXQgKGluIFVTRCknLCBmaWVsZDogJ3NoYXJlQW1vdW50SW5VU0QnLCB0b29sdGlwRmllbGQ6ICdzaGFyZUFtb3VudEluVVNEJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2V0dGxlbWVudCBSYXRlJywgZmllbGQ6ICdzZXR0bGVtZW50UmF0ZScsIHRvb2x0aXBGaWVsZDogJ3NldHRsZW1lbnRSYXRlJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gIF07XHJcblxyXG5cclxuICBncmlkQXBpczogR3JpZEFwaVtdID0gW107XHJcbiAgZ3JpZENvbHVtbkFwaXM6IENvbHVtbkFwaVtdID0gW107XHJcblxyXG4gIHBhZ2luYXRpb25BcnJheTogYW55W107XHJcbiAgZXpyZW1pdFVzZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBvcmlnaW5hbEdyb3VwRW50cmllczogQWNjb3VudGluZ1JlcG9ydEJyYW5jaEdyb3VwW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXBvcnRTZXJ2aWNlOiBSZXBvcnRTZXJ2aWNlLCBwcml2YXRlIGV4cG9ydFNlcnZpY2U6IEV4cG9ydFNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGV6cmVtaXR1c2VybmFtZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2V6cmVtaXR1c2VybmFtZScpO1xyXG4gICAgaWYgKGV6cmVtaXR1c2VybmFtZSkge1xyXG4gICAgICB0aGlzLmV6cmVtaXRVc2VyID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBY2NvdW50aW5nUmVwb3J0KHJlcXVlc3Q/OiBBY2NvdW50aW5nUmVwb3J0UmVxdWVzdCkge1xyXG4gICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkxvYWRpbmc7XHJcbiAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuYnJhbmNoTmFtZUFuZENvZGUgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN1Ykdyb3VwQ29sdW1uID0gdW5kZWZpbmVkO1xyXG4gICAgY29uc3QgZmluYWxSZXEgPSByZXF1ZXN0O1xyXG5cclxuICAgIHRoaXMucmVwb3J0U2VydmljZS5nZXRBY2NvdW50aW5nUmVwb3J0KGZpbmFsUmVxKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsID0gZGF0YTtcclxuICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkNvbXBsZXRlO1xyXG5cclxuICAgICAgY29uc29sZS5sb2codGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwpO1xyXG5cclxuICAgICAgdGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwuYWNjb3VudGluZ1JlcG9ydEJ5QnJhbmNoR3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xyXG4gICAgICAgIGdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllcyA9IGdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllcy5tYXAoZW50cnkgPT4gKHtcclxuICAgICAgICAgIC4uLmVudHJ5LFxyXG4gICAgICAgICAgYnVzaW5lc3NEYXRlOiBmb3JtYXREYXRlKGVudHJ5LmJ1c2luZXNzRGF0ZSwgJ2RkL01NL3l5eXknLCAnZW4tVVMnKSxcclxuICAgICAgICAgIHRyYW5zYWN0aW9uRGF0ZUFuZFRpbWU6IGZvcm1hdERhdGUoZW50cnkudHJhbnNhY3Rpb25EYXRlQW5kVGltZSwgJ2RkL01NL3l5eXkgaGg6bW0gYScsICdlbi1VUycpLFxyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzID0gZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzLm1hcChlbnRyeSA9PiAoe1xyXG4gICAgICAgICAgLi4uZW50cnksXHJcbiAgICAgICAgICBidXNpbmVzc0RhdGU6IGZvcm1hdERhdGUoZW50cnkuYnVzaW5lc3NEYXRlLCAnZGQvTU0veXl5eScsICdlbi1VUycpLFxyXG4gICAgICAgICAgdHJhbnNhY3Rpb25EYXRlQW5kVGltZTogZm9ybWF0RGF0ZShlbnRyeS50cmFuc2FjdGlvbkRhdGVBbmRUaW1lLCAnZGQvTU0veXl5eSBoaDptbSBhJywgJ2VuLVVTJyksXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9KTtcclxuXHJcblxyXG4gICAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbCA9IGRhdGE7XHJcbiAgICAgIHRoaXMubm9EYXRhRm91bmQgPSBPYmplY3Qua2V5cyh0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMpLmxlbmd0aCA9PSAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICBjb25zdCBicmFuY2hDb3VudCA9IHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5sZW5ndGg7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvbkFycmF5ID0gbmV3IEFycmF5KGJyYW5jaENvdW50ICogMikuZmlsbCgxNSk7XHJcblxyXG5cclxuICAgICAgdGhpcy5yZXBvcnRVc2VyID0gdGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwucmVwb3J0VXNlcjtcclxuICAgICAgdGhpcy5yZXBvcnRUaW1lID0gZm9ybWF0RGF0ZShuZXcgRGF0ZSgpLCAnZGQvTU0veXl5eSBoaDptbSBhJywgJ2VuLVVTJyk7XHJcbiAgICAgIHRoaXMucmVwb3J0UGVyaW9kID0gYCR7Zm9ybWF0RGF0ZShmaW5hbFJlcS5zdGFydERhdGUsICdkZC9NTS95eXl5JywgJ2VuLVVTJyl9IC0gJHtmb3JtYXREYXRlKGZpbmFsUmVxLmVuZERhdGUsICdkZC9NTS95eXl5JywgJ2VuLVVTJyl9YDtcclxuXHJcbiAgICAgIHRoaXMubGVmdERhdGEgPSB7XHJcbiAgICAgICAgJ1JlcG9ydCBVc2VyICc6IGAke3RoaXMucmVwb3J0VXNlcn1gLFxyXG4gICAgICAgICdSZXBvcnQgVGltZSc6IGAke3RoaXMucmVwb3J0VGltZX1gLFxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnJpZ2h0RGF0YSA9IHtcclxuICAgICAgICAnUmVwb3J0IFBlcmlvZCc6IGAke3RoaXMucmVwb3J0UGVyaW9kfWAsXHJcbiAgICAgICAgJ0NvbXBhbnknOiBcIlhwcmVzcyBNb25leVwiXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIERlZXAgY29weSB0byBwcmVzZXJ2ZSBvcmlnaW5hbCBkYXRhIGZvciBzZWFyY2hcclxuICAgICAgdGhpcy5vcmlnaW5hbEdyb3VwRW50cmllcyA9IHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5tYXAoZ3JvdXAgPT4gKHtcclxuICAgICAgICAuLi5ncm91cCxcclxuICAgICAgICBzZW5kVHJhbnNhY3Rpb25zOiB7XHJcbiAgICAgICAgICAuLi5ncm91cC5zZW5kVHJhbnNhY3Rpb25zLFxyXG4gICAgICAgICAgZW50cmllczogWy4uLmdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllc11cclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlY2VpdmVUcmFuc2FjdGlvbnM6IHtcclxuICAgICAgICAgIC4uLmdyb3VwLnJlY2VpdmVUcmFuc2FjdGlvbnMsXHJcbiAgICAgICAgICBlbnRyaWVzOiBbLi4uZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzXVxyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG5cclxuXHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaGFuZGxlRXhwb3J0KG9wdGlvbjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uID0gb3B0aW9uO1xyXG4gICAgc3dpdGNoICh0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uKSB7XHJcbiAgICAgIGNhc2UgJ2V4Y2VsJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvRXhjZWwoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncGRmJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvUGRmKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Nzdic6XHJcbiAgICAgICAgdGhpcy5leHBvcnRUb0NzdigpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGFsZXJ0KCdQbGVhc2Ugc2VsZWN0IGFuIGV4cG9ydCBmb3JtYXQuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaCh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZSA9IChzdHI6IGFueSk6IHN0cmluZyA9PlxyXG4gICAgICBzdHI/LnRvU3RyaW5nKClcclxuICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgIC5yZXBsYWNlKC8sL2csICcnKVxyXG4gICAgICAgIC5yZXBsYWNlKC9cXHMrL2csICcgJylcclxuICAgICAgICAucmVwbGFjZSgvW1xcdTIwMEItXFx1MjAwRFxcdUZFRkZdL2csICcnKVxyXG4gICAgICAgIC50cmltKCk7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdGV4dDtcclxuICAgIGNvbnN0IHNlYXJjaCA9IG5vcm1hbGl6ZSh0ZXh0KTtcclxuXHJcbiAgICBpZiAoIXRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsPy5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMuZm9yRWFjaCgoZ3JvdXAsIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsU2VuZEVudHJpZXMgPSB0aGlzLm9yaWdpbmFsR3JvdXBFbnRyaWVzW2luZGV4XT8uc2VuZFRyYW5zYWN0aW9ucy5lbnRyaWVzIHx8IFtdO1xyXG4gICAgICBjb25zdCBvcmlnaW5hbFJlY2VpdmVFbnRyaWVzID0gdGhpcy5vcmlnaW5hbEdyb3VwRW50cmllc1tpbmRleF0/LnJlY2VpdmVUcmFuc2FjdGlvbnMuZW50cmllcyB8fCBbXTtcclxuXHJcbiAgICAgIGlmIChzZWFyY2gpIHtcclxuICAgICAgICBncm91cC5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXMgPSBvcmlnaW5hbFNlbmRFbnRyaWVzLmZpbHRlcihlbnRyeSA9PlxyXG4gICAgICAgICAgT2JqZWN0LnZhbHVlcyhlbnRyeSkuc29tZSh2YWx1ZSA9PiBub3JtYWxpemUodmFsdWUpLmluY2x1ZGVzKHNlYXJjaCkpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zLmVudHJpZXMgPSBvcmlnaW5hbFJlY2VpdmVFbnRyaWVzLmZpbHRlcihlbnRyeSA9PlxyXG4gICAgICAgICAgT2JqZWN0LnZhbHVlcyhlbnRyeSkuc29tZSh2YWx1ZSA9PiBub3JtYWxpemUodmFsdWUpLmluY2x1ZGVzKHNlYXJjaCkpXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBncm91cC5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXMgPSBbLi4ub3JpZ2luYWxTZW5kRW50cmllc107XHJcbiAgICAgICAgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzID0gWy4uLm9yaWdpbmFsUmVjZWl2ZUVudHJpZXNdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZXNldCBib3RoIGdyaWRzXHJcbiAgICAgIFtncm91cC5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXMsIGdyb3VwLnJlY2VpdmVUcmFuc2FjdGlvbnMuZW50cmllc10uZm9yRWFjaCgoZW50cmllcywgaWR4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ3JpZEFwaSA9IHRoaXMuZ3JpZEFwaXNbaW5kZXggKiAyICsgaWR4XTsgLy8ga2VlcCBzZXBhcmF0ZSBpZHMgZm9yIGdyaWRzXHJcbiAgICAgICAgaWYgKGdyaWRBcGkpIHtcclxuICAgICAgICAgIGdyaWRBcGkuc2V0Um93RGF0YShlbnRyaWVzKTtcclxuICAgICAgICAgIGlmIChncmlkQXBpLnBhZ2luYXRpb25Hb1RvRmlyc3RQYWdlKSBncmlkQXBpLnBhZ2luYXRpb25Hb1RvRmlyc3RQYWdlKCk7XHJcbiAgICAgICAgICBpZiAoZ3JpZEFwaS5wYWdpbmF0aW9uU2V0UGFnZVNpemUpIGdyaWRBcGkucGFnaW5hdGlvblNldFBhZ2VTaXplKHRoaXMucGFnZVNpemUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBvbkdyaWRSZWFkeShwYXJhbXM6IEdyaWRSZWFkeUV2ZW50LCBpZDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmdyaWRBcGlzW2lkXSA9IHBhcmFtcy5hcGk7XHJcbiAgICB0aGlzLmdyaWRDb2x1bW5BcGlzW2lkXSA9IHBhcmFtcy5jb2x1bW5BcGk7ICAgLy8g4pyFIGtlZXAgcGVyIGdyaWRcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYXV0b1NpemVBbGxDb2x1bW5zKGlkKSwgMTAwKTtcclxuICB9XHJcblxyXG5cclxuICBvbkdyaWRTaXplQ2hhbmdlZChwYXJhbXM6IGFueSwgaWQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5hdXRvU2l6ZUFsbENvbHVtbnMoaWQpO1xyXG4gIH1cclxuXHJcblxyXG4gIGF1dG9TaXplQWxsQ29sdW1ucyhpZDogbnVtYmVyLCBza2lwSGVhZGVyOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGNvbHVtbkFwaSA9IHRoaXMuZ3JpZENvbHVtbkFwaXNbaWRdO1xyXG4gICAgaWYgKCFjb2x1bW5BcGkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBhbGxDb2x1bW5JZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBjb2x1bW5BcGkuZ2V0Q29sdW1ucygpLmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgIGFsbENvbHVtbklkcy5wdXNoKGNvbHVtbi5nZXRJZCgpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbHVtbkFwaS5hdXRvU2l6ZUNvbHVtbnMoYWxsQ29sdW1uSWRzLCBza2lwSGVhZGVyKTtcclxuICB9XHJcblxyXG5cclxuICBmb3JtYXROdW1iZXIocGFyYW1zOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKHBhcmFtcy52YWx1ZSA9PSBudWxsKSByZXR1cm4gJyc7XHJcblxyXG4gICAgY29uc3QgZmllbGQgPSBwYXJhbXMuY29sRGVmLmZpZWxkO1xyXG5cclxuICAgIGlmIChmaWVsZCA9PT0gJ3NldHRsZW1lbnRSYXRlJykge1xyXG4gICAgICByZXR1cm4gTnVtYmVyKHBhcmFtcy52YWx1ZSkudG9GaXhlZCg4KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gTnVtYmVyKHBhcmFtcy52YWx1ZSkudG9GaXhlZCgzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwb3J0VG9QZGYoKSB7XHJcbiAgICBpZiAoIXRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcz8ubGVuZ3RoKSByZXR1cm47XHJcbiAgICBjb25zdCB0aXRsZSA9ICdBY2NvdW50aW5nIFJlcG9ydCc7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9ICdBY2NvdW50aW5nLVJlcG9ydC5wZGYnO1xyXG5cclxuICAgIGNvbnN0IG1ldGFkYXRhOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXHJcbiAgICAgIFsnUmVwb3J0IFVzZXI6JywgdGhpcy5yZXBvcnRVc2VyXSxcclxuICAgICAgWydSZXBvcnQgVGltZTonLCB0aGlzLnJlcG9ydFRpbWVdLFxyXG4gICAgICBbJ1JlcG9ydCBQZXJpb2Q6JywgdGhpcy5yZXBvcnRQZXJpb2RdLFxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdCBkb2MgPSBuZXcganNQREYoeyBvcmllbnRhdGlvbjogJ2xhbmRzY2FwZScsIHVuaXQ6ICdtbScsIGZvcm1hdDogWzcwMCwgMjEwXSB9KTtcclxuXHJcbiAgICBjb25zdCBsb2dvV2lkdGggPSAzOC40LCBsb2dvSGVpZ2h0ID0gMTcuNSwgbG9nb1ggPSAxNSwgbG9nb1kgPSA4O1xyXG4gICAgY29uc3QgcGFnZVdpZHRoID0gZG9jLmludGVybmFsLnBhZ2VTaXplLndpZHRoO1xyXG4gICAgY29uc3QgdGl0bGVZID0gMTg7XHJcblxyXG4gICAgLy8gTG9nb1xyXG4gICAgaWYgKHRoaXMuZXhwb3J0U2VydmljZVsnbG9nb0Jhc2U2NCddKSB7XHJcbiAgICAgIGRvYy5hZGRJbWFnZSh0aGlzLmV4cG9ydFNlcnZpY2VbJ2xvZ29CYXNlNjQnXSwgJ1BORycsIGxvZ29YLCBsb2dvWSwgbG9nb1dpZHRoLCBsb2dvSGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaXRsZVxyXG4gICAgZG9jLnNldEZvbnRTaXplKDE1KTtcclxuICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xyXG4gICAgZG9jLnRleHQodGl0bGUsIHBhZ2VXaWR0aCAvIDIsIHRpdGxlWSwgeyBhbGlnbjogJ2NlbnRlcicgfSk7XHJcblxyXG4gICAgbGV0IGN1cnJlbnRZID0gdGl0bGVZICsgMTQ7XHJcblxyXG4gICAgLy8gTWV0YWRhdGFcclxuICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XHJcbiAgICBtZXRhZGF0YS5mb3JFYWNoKChbbGFiZWwsIHZhbHVlXSwgaSkgPT4ge1xyXG4gICAgICBjb25zdCB5ID0gY3VycmVudFkgKyBpICogNztcclxuICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdib2xkJyk7XHJcbiAgICAgIGRvYy50ZXh0KGxhYmVsLCAxNSwgeSk7XHJcbiAgICAgIGNvbnN0IGxhYmVsV2lkdGggPSBkb2MuZ2V0VGV4dFdpZHRoKGxhYmVsICsgJyAnKTtcclxuICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdub3JtYWwnKTtcclxuICAgICAgZG9jLnRleHQodmFsdWUgPz8gJycsIDE1ICsgbGFiZWxXaWR0aCwgeSk7XHJcbiAgICB9KTtcclxuICAgIGN1cnJlbnRZICs9IG1ldGFkYXRhLmxlbmd0aCAqIDcgKyA1O1xyXG5cclxuICAgIC8vIEJyYW5jaGVzXHJcbiAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XHJcbiAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xyXG5cclxuICAgICAgY29uc3QgYnJhbmNoVGV4dCA9IGBCcmFuY2ggKE5hbWUgJiBDb2RlKTogJHtncm91cC5icmFuY2hOYW1lQW5kQ29kZX1gO1xyXG4gICAgICBkb2MudGV4dChicmFuY2hUZXh0LCAxNSwgY3VycmVudFkpO1xyXG4gICAgICBjdXJyZW50WSArPSA3O1xyXG5cclxuICAgICAgLy8gTG9vcCBzdWJncm91cHMgKFNlbmQgKyBSZWNlaXZlKVxyXG4gICAgICBbZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucywgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9uc10uZm9yRWFjaChzdWJHcm91cCA9PiB7XHJcbiAgICAgICAgaWYgKCFzdWJHcm91cC5lbnRyaWVzPy5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdib2xkJyk7XHJcbiAgICAgICAgZG9jLnRleHQoYFN1YiBHcm91cDogJHtzdWJHcm91cC5zdWJHcm91cE5hbWV9YCwgMTUsIGN1cnJlbnRZKTtcclxuICAgICAgICBjdXJyZW50WSArPSA1O1xyXG5cclxuICAgICAgICBjb25zdCB7IGhlYWRlcnMsIHJvd3MgfSA9IHRoaXMucHJlcGFyZUFjY291bnRpbmdUYWJsZShzdWJHcm91cC5lbnRyaWVzKTtcclxuXHJcbiAgICAgICAgKGRvYyBhcyBhbnkpLmF1dG9UYWJsZSh7XHJcbiAgICAgICAgICBoZWFkOiBbaGVhZGVyc10sXHJcbiAgICAgICAgICBib2R5OiByb3dzLFxyXG4gICAgICAgICAgc3RhcnRZOiBjdXJyZW50WSxcclxuICAgICAgICAgIHRoZW1lOiAnZ3JpZCcsXHJcbiAgICAgICAgICBoZWFkU3R5bGVzOiB7XHJcbiAgICAgICAgICAgIGZpbGxDb2xvcjogWzIyMCwgMjIwLCAyMjBdLCB0ZXh0Q29sb3I6IDAsXHJcbiAgICAgICAgICAgIGZvbnRTdHlsZTogJ2JvbGQnLCBmb250U2l6ZTogOSwgaGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBib2R5U3R5bGVzOiB7IGZvbnRTaXplOiA4LCBmaWxsQ29sb3I6IFsyNTUsIDI1NSwgMjU1XSwgdGV4dENvbG9yOiBbMCwgMCwgMF0gfSxcclxuICAgICAgICAgIHN0eWxlczogeyBjZWxsUGFkZGluZzogMiwgb3ZlcmZsb3c6ICdsaW5lYnJlYWsnLCBtaW5DZWxsSGVpZ2h0OiA2IH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGN1cnJlbnRZID0gKGRvYyBhcyBhbnkpLmxhc3RBdXRvVGFibGUuZmluYWxZICsgMTA7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZG9jLnNhdmUoZmlsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBvcnRUb0V4Y2VsKCkge1xyXG4gICAgaWYgKCF0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM/Lmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgY29uc3QgdGl0bGUgPSAnQWNjb3VudGluZyBSZXBvcnQnO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSAnQWNjb3VudGluZy1SZXBvcnQueGxzeCc7XHJcblxyXG4gICAgY29uc3Qgd29ya2Jvb2sgPSBuZXcgRXhjZWxKUy5Xb3JrYm9vaygpO1xyXG4gICAgY29uc3Qgd29ya3NoZWV0ID0gd29ya2Jvb2suYWRkV29ya3NoZWV0KCdBY2NvdW50aW5nIFJlcG9ydCcpO1xyXG4gICAgbGV0IGN1cnJlbnRSb3cgPSAxO1xyXG5cclxuICAgIC8vIExvZ29cclxuICAgIGlmICh0aGlzLmV4cG9ydFNlcnZpY2UubG9nb0Jhc2U2NCkge1xyXG4gICAgICBjb25zdCBiYXNlNjREYXRhID0gdGhpcy5leHBvcnRTZXJ2aWNlLmxvZ29CYXNlNjQucmVwbGFjZSgvXmRhdGE6aW1hZ2VcXC9cXHcrO2Jhc2U2NCwvLCAnJyk7XHJcbiAgICAgIGNvbnN0IGltYWdlSWQgPSB3b3JrYm9vay5hZGRJbWFnZSh7XHJcbiAgICAgICAgYmFzZTY0OiBiYXNlNjREYXRhLFxyXG4gICAgICAgIGV4dGVuc2lvbjogJ3BuZycsXHJcbiAgICAgIH0pO1xyXG4gICAgICB3b3Jrc2hlZXQuYWRkSW1hZ2UoaW1hZ2VJZCwgeyB0bDogeyBjb2w6IDAsIHJvdzogMCB9LCBleHQ6IHsgd2lkdGg6IDE0NSwgaGVpZ2h0OiA2NiB9LCBlZGl0QXM6ICdvbmVDZWxsJyB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaXRsZVxyXG4gICAgY29uc3QgdGl0bGVSb3cgPSB3b3Jrc2hlZXQuZ2V0Um93KGN1cnJlbnRSb3cpO1xyXG4gICAgdGl0bGVSb3cuZ2V0Q2VsbCg2KS52YWx1ZSA9IHRpdGxlO1xyXG4gICAgdGl0bGVSb3cuZ2V0Q2VsbCg2KS5mb250ID0geyBib2xkOiB0cnVlLCBzaXplOiAxNiB9O1xyXG4gICAgdGl0bGVSb3cuZ2V0Q2VsbCg2KS5hbGlnbm1lbnQgPSB7IHZlcnRpY2FsOiAnbWlkZGxlJywgaG9yaXpvbnRhbDogJ2xlZnQnIH07XHJcbiAgICB3b3Jrc2hlZXQubWVyZ2VDZWxscyhgRiR7Y3VycmVudFJvd306SiR7Y3VycmVudFJvd31gKTtcclxuICAgIGN1cnJlbnRSb3cgKz0gMztcclxuXHJcbiAgICAvLyBNZXRhZGF0YVxyXG4gICAgY29uc3QgbWV0YWRhdGE6IFtzdHJpbmcsIHN0cmluZ11bXSA9IFtcclxuICAgICAgWydSZXBvcnQgVXNlcicsIHRoaXMucmVwb3J0VXNlcl0sXHJcbiAgICAgIFsnUmVwb3J0IFRpbWUnLCB0aGlzLnJlcG9ydFRpbWVdLFxyXG4gICAgICBbJ1JlcG9ydCBQZXJpb2QnLCB0aGlzLnJlcG9ydFBlcmlvZF0sXHJcbiAgICBdO1xyXG4gICAgbWV0YWRhdGEuZm9yRWFjaCgoW2xhYmVsLCB2YWx1ZV0pID0+IHtcclxuICAgICAgY29uc3Qgcm93ID0gd29ya3NoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICByb3cuZ2V0Q2VsbCgxKS52YWx1ZSA9IHtcclxuICAgICAgICByaWNoVGV4dDogW1xyXG4gICAgICAgICAgeyB0ZXh0OiBgJHtsYWJlbH06IGAsIGZvbnQ6IHsgYm9sZDogdHJ1ZSB9IH0sXHJcbiAgICAgICAgICB7IHRleHQ6IHZhbHVlID8/ICcnLCBmb250OiB7IGJvbGQ6IGZhbHNlIH0gfVxyXG4gICAgICAgIF1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIHdvcmtzaGVldC5hZGRSb3coW10pOyBjdXJyZW50Um93Kys7XHJcblxyXG4gICAgLy8gQnJhbmNoZXNcclxuICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgY29uc3QgYnJhbmNoUm93ID0gd29ya3NoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICBicmFuY2hSb3cuZ2V0Q2VsbCgxKS52YWx1ZSA9IHtcclxuICAgICAgICByaWNoVGV4dDogW1xyXG4gICAgICAgICAgeyB0ZXh0OiAnQnJhbmNoIChOYW1lICYgQ29kZSk6ICcsIGZvbnQ6IHsgYm9sZDogdHJ1ZSB9IH0sXHJcbiAgICAgICAgICB7IHRleHQ6IGdyb3VwLmJyYW5jaE5hbWVBbmRDb2RlID8/ICcnLCBmb250OiB7IGJvbGQ6IGZhbHNlIH0gfVxyXG4gICAgICAgIF1cclxuICAgICAgfTtcclxuICAgICAgd29ya3NoZWV0LmFkZFJvdyhbXSk7IGN1cnJlbnRSb3crKztcclxuXHJcbiAgICAgIC8vIExvb3Agc3ViZ3JvdXBzXHJcbiAgICAgIFtncm91cC5zZW5kVHJhbnNhY3Rpb25zLCBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zXS5mb3JFYWNoKHN1Ykdyb3VwID0+IHtcclxuICAgICAgICBpZiAoIXN1Ykdyb3VwLmVudHJpZXM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBzdWJHcm91cFJvdyA9IHdvcmtzaGVldC5nZXRSb3coY3VycmVudFJvdysrKTtcclxuICAgICAgICBzdWJHcm91cFJvdy5nZXRDZWxsKDEpLnZhbHVlID0ge1xyXG4gICAgICAgICAgcmljaFRleHQ6IFtcclxuICAgICAgICAgICAgeyB0ZXh0OiAnU3ViIEdyb3VwOiAnLCBmb250OiB7IGJvbGQ6IHRydWUgfSB9LFxyXG4gICAgICAgICAgICB7IHRleHQ6IHN1Ykdyb3VwLnN1Ykdyb3VwTmFtZSA/PyAnJywgZm9udDogeyBib2xkOiBmYWxzZSB9IH1cclxuICAgICAgICAgIF1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB3b3Jrc2hlZXQuYWRkUm93KFtdKTsgY3VycmVudFJvdysrO1xyXG5cclxuICAgICAgICAvLyBIZWFkZXJzXHJcbiAgICAgICAgY29uc3QgeyBoZWFkZXJzLCByb3dzIH0gPSB0aGlzLnByZXBhcmVBY2NvdW50aW5nVGFibGUoc3ViR3JvdXAuZW50cmllcyk7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyUm93ID0gd29ya3NoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICAgIGhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyLCBpKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjZWxsID0gaGVhZGVyUm93LmdldENlbGwoaSArIDEpO1xyXG4gICAgICAgICAgY2VsbC52YWx1ZSA9IGhlYWRlcjtcclxuICAgICAgICAgIGNlbGwuZm9udCA9IHsgYm9sZDogdHJ1ZSB9O1xyXG4gICAgICAgICAgY2VsbC5maWxsID0geyB0eXBlOiAncGF0dGVybicsIHBhdHRlcm46ICdzb2xpZCcsIGZnQ29sb3I6IHsgYXJnYjogJ0Q5RDlEOScgfSB9O1xyXG4gICAgICAgICAgY2VsbC5hbGlnbm1lbnQgPSB7IHZlcnRpY2FsOiAnbWlkZGxlJywgaG9yaXpvbnRhbDogJ2NlbnRlcicgfTtcclxuICAgICAgICAgIGNlbGwuYm9yZGVyID0geyB0b3A6IHsgc3R5bGU6ICd0aGluJyB9LCBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LCBsZWZ0OiB7IHN0eWxlOiAndGhpbicgfSwgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9IH07XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIFJvd3NcclxuICAgICAgICByb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgICAgICBjb25zdCByb3cgPSB3b3Jrc2hlZXQuZ2V0Um93KGN1cnJlbnRSb3crKyk7XHJcbiAgICAgICAgICByLmZvckVhY2goKHZhbCwgaSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjZWxsID0gcm93LmdldENlbGwoaSArIDEpO1xyXG4gICAgICAgICAgICBjZWxsLnZhbHVlID0gdmFsO1xyXG4gICAgICAgICAgICBjZWxsLmJvcmRlciA9IHsgdG9wOiB7IHN0eWxlOiAndGhpbicgfSwgYm90dG9tOiB7IHN0eWxlOiAndGhpbicgfSwgbGVmdDogeyBzdHlsZTogJ3RoaW4nIH0sIHJpZ2h0OiB7IHN0eWxlOiAndGhpbicgfSB9O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHdvcmtzaGVldC5hZGRSb3coW10pOyBjdXJyZW50Um93Kys7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8g8J+UuSBBdXRvLWFkanVzdCBjb2x1bW4gd2lkdGhzIChpbmNsdWRpbmcgU3IgTm8pXHJcbiAgICBjb25zdCBhbGxIZWFkZXJzID0gWydTciBObycsIC4uLnRoaXMuY29sdW1uRGVmcy5tYXAoYyA9PiBjLmhlYWRlck5hbWUpXTtcclxuICAgIGFsbEhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyLCBpKSA9PiB7XHJcbiAgICAgIGxldCBtYXhMZW5ndGggPSBoZWFkZXIubGVuZ3RoOyAvLyBzdGFydCB3aXRoIGhlYWRlciBsZW5ndGhcclxuXHJcbiAgICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgICBbZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucywgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9uc10uZm9yRWFjaChzdWJHcm91cCA9PiB7XHJcbiAgICAgICAgICBzdWJHcm91cC5lbnRyaWVzLmZvckVhY2goZW50cnkgPT4ge1xyXG4gICAgICAgICAgICAvLyBTciBObyBjb2x1bW4gKGkgPSAwKSBpcyBqdXN0IG51bWJlcnNcclxuICAgICAgICAgICAgbGV0IHZhbCA9IGkgPT09IDAgPyAoc3ViR3JvdXAuZW50cmllcy5pbmRleE9mKGVudHJ5KSArIDEpLnRvU3RyaW5nKCkgOiAoZW50cnlbdGhpcy5jb2x1bW5EZWZzW2kgLSAxXT8uZmllbGRdID8/ICcnKTtcclxuICAgICAgICAgICAgY29uc3QgbGVuID0gdmFsLnRvU3RyaW5nKCkubGVuZ3RoO1xyXG4gICAgICAgICAgICBpZiAobGVuID4gbWF4TGVuZ3RoKSBtYXhMZW5ndGggPSBsZW47XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB3b3Jrc2hlZXQuZ2V0Q29sdW1uKGkgKyAxKS53aWR0aCA9IG1heExlbmd0aCArIDU7IC8vIHBhZGRpbmdcclxuICAgIH0pO1xyXG5cclxuICAgIHdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKS50aGVuKGJ1ZmZlciA9PiB7XHJcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge1xyXG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCdcclxuICAgICAgfSk7XHJcbiAgICAgIEZpbGVTYXZlci5zYXZlQXMoYmxvYiwgZmlsZU5hbWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgcHJpdmF0ZSBwcmVwYXJlQWNjb3VudGluZ1RhYmxlKGRhdGE6IGFueVtdKTogeyBoZWFkZXJzOiBzdHJpbmdbXSwgcm93czogYW55W11bXSB9IHtcclxuICAgIGNvbnN0IGN1cnJlbmN5RmllbGRzID0gWydhbW91bnRQYWlkJywgJ3NlcnZpY2VGZWUnLCAndGF4JywgJ3ByaW5jaXBsZVNlbmRBbW91bnQnLCAnY2xpZW50U2V0dGxlbWVudEluU0NjeSddO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IFsnU3IgTm8nLCAuLi50aGlzLmNvbHVtbkRlZnMubWFwKGMgPT4gYy5oZWFkZXJOYW1lKV07XHJcblxyXG4gICAgaWYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB7IGhlYWRlcnMsIHJvd3M6IFtdIH07IC8vIOKchSByZXR1cm4gaGVhZGVycyBvbmx5LCBlbXB0eSByb3dzXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgcm93cyA9IGRhdGEubWFwKChyb3csIGkpID0+IHtcclxuICAgICAgcmV0dXJuIFtcclxuICAgICAgICBpICsgMSxcclxuICAgICAgICAuLi50aGlzLmNvbHVtbkRlZnMubWFwKGNvbCA9PiB7XHJcbiAgICAgICAgICBsZXQgdmFsID0gcm93W2NvbC5maWVsZF07XHJcbiAgICAgICAgICBpZiAodmFsID09IG51bGwpIHJldHVybiAnJztcclxuICAgICAgICAgIGlmIChjdXJyZW5jeUZpZWxkcy5pbmNsdWRlcyhjb2wuZmllbGQpKSByZXR1cm4gcGFyc2VGbG9hdCh2YWwpLnRvRml4ZWQoMyk7XHJcbiAgICAgICAgICBpZiAoY29sLmZpZWxkID09PSAnc2V0dGxlbWVudFJhdGUnKSByZXR1cm4gcGFyc2VGbG9hdCh2YWwpLnRvRml4ZWQoOCk7XHJcbiAgICAgICAgICByZXR1cm4gdmFsO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIF07XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4geyBoZWFkZXJzLCByb3dzIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4cG9ydFRvQ3N2KCkge1xyXG4gICAgaWYgKCF0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM/Lmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSAnQWNjb3VudGluZy1SZXBvcnQuY3N2JztcclxuICAgIGNvbnN0IHJvd3M6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgcm93cy5wdXNoKCdSZXBvcnQgVGl0bGU6IEFjY291bnRpbmcgUmVwb3J0Jyk7XHJcbiAgICByb3dzLnB1c2goJycpO1xyXG4gICAgcm93cy5wdXNoKGBSZXBvcnQgVXNlcjogJHt0aGlzLnJlcG9ydFVzZXJ9YCk7XHJcbiAgICByb3dzLnB1c2goYFJlcG9ydCBUaW1lOiAke3RoaXMucmVwb3J0VGltZX1gKTtcclxuICAgIHJvd3MucHVzaChgUmVwb3J0IFBlcmlvZDogJHt0aGlzLnJlcG9ydFBlcmlvZH1gKTtcclxuICAgIHJvd3MucHVzaChgQ29tcGFueTogWHByZXNzIE1vbmV5YCk7XHJcbiAgICByb3dzLnB1c2goJycpO1xyXG5cclxuICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgcm93cy5wdXNoKGBCcmFuY2ggKE5hbWUgJiBDb2RlKTogJHtncm91cC5icmFuY2hOYW1lQW5kQ29kZX1gKTtcclxuXHJcbiAgICAgIFtncm91cC5zZW5kVHJhbnNhY3Rpb25zLCBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zXS5mb3JFYWNoKHN1Ykdyb3VwID0+IHtcclxuICAgICAgICBpZiAoIXN1Ykdyb3VwLmVudHJpZXM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgICAgICByb3dzLnB1c2goYFN1YiBHcm91cDogJHtzdWJHcm91cC5zdWJHcm91cE5hbWV9YCk7XHJcblxyXG4gICAgICAgIC8vIPCflLkgQWRkIFwiU3IgTm9cIiBhdCB0aGUgYmVnaW5uaW5nIG9mIGhlYWRlcnNcclxuICAgICAgICByb3dzLnB1c2goWydcIlNyIE5vXCInLCAuLi50aGlzLmNvbHVtbkRlZnMubWFwKGNvbCA9PiBgXCIke2NvbC5oZWFkZXJOYW1lfVwiYCldLmpvaW4oJywnKSk7XHJcblxyXG4gICAgICAgIHN1Ykdyb3VwLmVudHJpZXMuZm9yRWFjaCgoZW50cnksIGlkeCkgPT4ge1xyXG4gICAgICAgICAgLy8g8J+UuSBBZGQgc2VyaWFsIG51bWJlciBhdCBzdGFydCBvZiBlYWNoIHJvd1xyXG4gICAgICAgICAgY29uc3Qgcm93ID0gW1xyXG4gICAgICAgICAgICAoaWR4ICsgMSkudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgLi4udGhpcy5jb2x1bW5EZWZzLm1hcChjb2wgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbCA9IGVudHJ5W2NvbC5maWVsZF07XHJcbiAgICAgICAgICAgICAgaWYgKHZhbCA9PSBudWxsKSByZXR1cm4gJyc7XHJcbiAgICAgICAgICAgICAgaWYgKFsnYW1vdW50UGFpZCcsICdzZXJ2aWNlRmVlJywgJ3RheCcsICdwcmluY2lwbGVTZW5kQW1vdW50JywgJ2NsaWVudFNldHRsZW1lbnRJblNDY3knXS5pbmNsdWRlcyhjb2wuZmllbGQpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWwpLnRvRml4ZWQoMyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChjb2wuZmllbGQgPT09ICdzZXR0bGVtZW50UmF0ZScpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbCkudG9GaXhlZCg4KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGBcIiR7dmFsfVwiYDtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIF0uam9pbignLCcpO1xyXG4gICAgICAgICAgcm93cy5wdXNoKHJvdyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJvd3MucHVzaCgnJyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtyb3dzLmpvaW4oJ1xcbicpXSwgeyB0eXBlOiAndGV4dC9jc3Y7Y2hhcnNldD11dGYtODsnIH0pO1xyXG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmsuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuICBnZXRSZXBvcnQocGF5bG9hZDogYW55KSB7XHJcbiAgICBjb25zdCBtb2RhbCA9IHBheWxvYWQ/Lm1vZGFsIHx8IHBheWxvYWQ7XHJcblxyXG4gICAgY29uc3QgcmVxOiBBY2NvdW50aW5nUmVwb3J0UmVxdWVzdCA9IHtcclxuICAgICAgc3RhcnREYXRlOiBtb2RhbC5mcm9tRGF0ZSwgLy8geXl5eS1NTS1kZCBmcm9tIHRoZSBmaWx0ZXJcclxuICAgICAgZW5kRGF0ZTogbW9kYWwudG9EYXRlLFxyXG4gICAgICBzZW5kQ291bnRyeUNvZGU6IG1vZGFsLnNlbmRDb3VudHJ5ID8/ICdBTEwnLFxyXG4gICAgICByZWN2Q291bnRyeUNvZGU6IG1vZGFsLnJlY2VpdmVDb3VudHJ5ID8/ICdBTEwnLFxyXG4gICAgICBidXNpbmVzc1BhcnRuZXJDb3JyZWxhdGlvbklEOiBtb2RhbC5jbGllbnQgPz8gJ0FMTCcsXHJcbiAgICAgIHRyYW5zYWN0aW9uU3RhdHVzOiBtb2RhbC50cmFuc2FjdGlvblN0YXR1cy5qb2luKFwiLFwiKSxcclxuICAgICAgcGF5b3V0Q3VycmVuY3k6IG1vZGFsLmN1cnJlbmN5ID8/ICdBTEwnLFxyXG4gICAgICB0cmFuc2FjdGlvblR5cGU6IG1vZGFsLnByb2R1Y3QgPz8gJ0FMTCcsXHJcbiAgICAgIGJyYW5jaENvZGU6IG1vZGFsLmJyYW5jaCA/PyAnQUxMJyxcclxuICAgICAgY29tcGFueUNvZGU6ICdBTEwnIC8vIG9yICdCSCcgaWYgeW91ciBBUEkgcmVxdWlyZXMgaXQgc3BlY2lmaWNhbGx5XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZ2V0QWNjb3VudGluZ1JlcG9ydChyZXEpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGxpYi1zZWFyY2gtZmlsdGVyIFtSZXBvcnROYW1lXT1cIlJlcG9ydE5hbWVcIiAoc2VhcmNoQ2xpY2tlZCk9XCJnZXRSZXBvcnQoJGV2ZW50KVwiPjwvbGliLXNlYXJjaC1maWx0ZXI+XHJcblxyXG48YXBwLWxvYWRlciBjbGFzcz1cIlwiICpuZ0lmPVwibG9hZGluZ1N0YXRlID09IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nXCI+PC9hcHAtbG9hZGVyPlxyXG5cclxuPGRpdiAqbmdJZj1cImFjY291bnRpbmdSZXBvcnRNb2RlbCE9dW5kZWZpbmVkICYmIGFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM/Lmxlbmd0aFwiPlxyXG5cclxuICA8bGliLW1ldGFkYXRhIFtyZXBvcnROYW1lXT1cIlJlcG9ydE5hbWVcIiBbc2hvd21ldGFEYXRhT25lXT1cInRydWVcIiBbc2hvd21ldGFEYXRhVHdvXT1cInRydWVcIiBbbWV0YURhdGFPbmVdPVwibGVmdERhdGFcIlxyXG4gICAgW21ldGFEYXRhVHdvXT1cInJpZ2h0RGF0YVwiIChleHBvcnRFdmVudCk9XCJoYW5kbGVFeHBvcnQoJGV2ZW50KVwiIChzZWFyY2hFdmVudCk9XCJvblNlYXJjaCgkZXZlbnQpXCI+PC9saWItbWV0YWRhdGE+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJyZXBvcnQtYWNjb3JkaW9uXCI+XHJcbiAgICA8bmdiLWFjY29yZGlvbiAjYWNjPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cImZhbHNlXCIgW2FjdGl2ZUlkc109XCIncGFuZWwtMCdcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgYWNjb3VudGluZ1JlcG9ydE1vZGVsPy5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8bmdiLXBhbmVsIFtpZF09XCIncGFuZWwtJyArIGlcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JQYW5lbFRpdGxlPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0aXRsZS1zdGFjayBsaW5lLTFcIj5cclxuICAgICAgICAgICAgICB7eyBncm91cC5icmFuY2hOYW1lQW5kQ29kZSB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFuZWxDb250ZW50PlxyXG4gICAgICAgICAgICA8IS0tIFNlbmQgVHJhbnNhY3Rpb25zIC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucy5lbnRyaWVzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgIDxoNiBjbGFzcz1cInN1Ymdyb3VwY29sdW1uXCI+e3sgZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucy5zdWJHcm91cE5hbWUgfX08L2g2PlxyXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLXBhZ2Utc2l6ZS1zZWxlY3RvciBbdG90YWxFbnRyaWVzXT1cImdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllcy5sZW5ndGhcIiBbZGVmYXVsdFNpemVdPVwiJzE1J1wiXHJcbiAgICAgICAgICAgICAgICAgIFtncmlkQXBpXT1cImdyaWRBcGlzW2kgKiAyXVwiPlxyXG4gICAgICAgICAgICAgICAgPC9saWItcGFnZS1zaXplLXNlbGVjdG9yPlxyXG5cclxuICAgICAgICAgICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgY2xhc3M9XCJhZy10aGVtZS1hbHBpbmUgY29tcGFjdC1ncmlkIGdyaWQtc2l6ZVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMzcwcHg7XCJcclxuICAgICAgICAgICAgICAgICAgW2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc1wiIFtkZWZhdWx0Q29sRGVmXT1cImRlZmF1bHRDb2xEZWZcIiBbcm93RGF0YV09XCJncm91cC5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXNcIlxyXG4gICAgICAgICAgICAgICAgICBbcm93SGVpZ2h0XT1cIjIwXCIgW2hlYWRlckhlaWdodF09XCIyNFwiIFtwYWdpbmF0aW9uXT1cInRydWVcIiBbcGFnaW5hdGlvblBhZ2VTaXplXT1cInBhZ2luYXRpb25BcnJheVtpXVwiXHJcbiAgICAgICAgICAgICAgICAgIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50LCBpICogMilcIiAoZ3JpZFNpemVDaGFuZ2VkKT1cIm9uR3JpZFNpemVDaGFuZ2VkKCRldmVudCwgaSAqIDIpXCI+XHJcbiAgICAgICAgICAgICAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFJlY2VpdmUgVHJhbnNhY3Rpb25zIC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzLmxlbmd0aFwiIGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgICAgIDxoNiBjbGFzcz1cInN1Ymdyb3VwY29sdW1uXCI+e3sgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5zdWJHcm91cE5hbWUgfX08L2g2PlxyXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLXBhZ2Utc2l6ZS1zZWxlY3RvciBbdG90YWxFbnRyaWVzXT1cImdyb3VwLnJlY2VpdmVUcmFuc2FjdGlvbnMuZW50cmllcy5sZW5ndGhcIiBbZGVmYXVsdFNpemVdPVwiJzE1J1wiXHJcbiAgICAgICAgICAgICAgICAgIFtncmlkQXBpXT1cImdyaWRBcGlzW2kgKiAyICsgMV1cIj5cclxuICAgICAgICAgICAgICAgIDwvbGliLXBhZ2Utc2l6ZS1zZWxlY3Rvcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8YWctZ3JpZC1hbmd1bGFyIGNsYXNzPVwiYWctdGhlbWUtYWxwaW5lIGNvbXBhY3QtZ3JpZCBncmlkLXNpemVcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDM3MHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIiBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCJcclxuICAgICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwiZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzXCIgW3Jvd0hlaWdodF09XCIyMFwiIFtoZWFkZXJIZWlnaHRdPVwiMjRcIiBbcGFnaW5hdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3BhZ2luYXRpb25QYWdlU2l6ZV09XCJwYWdpbmF0aW9uQXJyYXlbaV1cIiAoZ3JpZFJlYWR5KT1cIm9uR3JpZFJlYWR5KCRldmVudCwgaSAqIDIgKyAxKVwiXHJcbiAgICAgICAgICAgICAgICAgIChncmlkU2l6ZUNoYW5nZWQpPVwib25HcmlkU2l6ZUNoYW5nZWQoJGV2ZW50LCBpICogMilcIj5cclxuICAgICAgICAgICAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZ2ItcGFuZWw+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZ2ItYWNjb3JkaW9uPlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBtdC0zXCIgKm5nSWY9XCJub0RhdGFGb3VuZCAmJiBsb2FkaW5nU3RhdGUhPUNvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nXCI+XHJcbiAgTm8gRGF0YSBmb3VuZCBtYXRjaGluZyB5b3VyIHNlYXJjaCBjcml0ZXJpYS5cclxuPC9kaXY+Il19