@ng-matero/extensions 10.16.5 → 10.16.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/bundles/mtxCheckboxGroup.umd.js +18 -7
  2. package/bundles/mtxCheckboxGroup.umd.js.map +1 -1
  3. package/bundles/mtxCheckboxGroup.umd.min.js +1 -1
  4. package/bundles/mtxCheckboxGroup.umd.min.js.map +1 -1
  5. package/bundles/mtxGrid.umd.js +34 -61
  6. package/bundles/mtxGrid.umd.js.map +1 -1
  7. package/bundles/mtxGrid.umd.min.js +2 -2
  8. package/bundles/mtxGrid.umd.min.js.map +1 -1
  9. package/bundles/mtxPopover.umd.js +7 -2
  10. package/bundles/mtxPopover.umd.js.map +1 -1
  11. package/bundles/mtxPopover.umd.min.js +1 -1
  12. package/bundles/mtxPopover.umd.min.js.map +1 -1
  13. package/bundles/mtxSelect.umd.js +1 -0
  14. package/bundles/mtxSelect.umd.js.map +1 -1
  15. package/bundles/mtxSelect.umd.min.js +1 -1
  16. package/bundles/mtxSelect.umd.min.js.map +1 -1
  17. package/bundles/mtxSplit.umd.js +1 -1
  18. package/bundles/mtxSplit.umd.js.map +1 -1
  19. package/bundles/mtxSplit.umd.min.js +1 -1
  20. package/bundles/mtxSplit.umd.min.js.map +1 -1
  21. package/checkbox-group/checkbox-group.component.d.ts +4 -4
  22. package/checkbox-group/mtxCheckboxGroup.metadata.json +1 -1
  23. package/data-grid/cell.component.d.ts +3 -8
  24. package/data-grid/mtxGrid.metadata.json +1 -1
  25. package/esm2015/checkbox-group/checkbox-group.component.js +16 -10
  26. package/esm2015/data-grid/cell.component.js +34 -57
  27. package/esm2015/data-grid/column-menu.component.js +2 -2
  28. package/esm2015/data-grid/grid.component.js +3 -3
  29. package/esm2015/popover/popover.js +8 -3
  30. package/esm2015/select/select.component.js +2 -1
  31. package/esm2015/split-pane/split.component.js +2 -2
  32. package/fesm2015/mtxCheckboxGroup.js +13 -7
  33. package/fesm2015/mtxCheckboxGroup.js.map +1 -1
  34. package/fesm2015/mtxGrid.js +36 -59
  35. package/fesm2015/mtxGrid.js.map +1 -1
  36. package/fesm2015/mtxPopover.js +7 -2
  37. package/fesm2015/mtxPopover.js.map +1 -1
  38. package/fesm2015/mtxSelect.js +1 -0
  39. package/fesm2015/mtxSelect.js.map +1 -1
  40. package/fesm2015/mtxSplit.js +1 -1
  41. package/fesm2015/mtxSplit.js.map +1 -1
  42. package/package.json +1 -1
  43. package/select/mtxSelect.metadata.json +1 -1
@@ -470,7 +470,7 @@ MtxGridComponent.decorators = [
470
470
  { type: Component, args: [{
471
471
  selector: 'mtx-grid',
472
472
  exportAs: 'mtxGrid',
473
- template: "<!-- Progress bar-->\r\n<div class=\"mtx-grid-progress\" *ngIf=\"loading\">\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n</div>\r\n\r\n<!-- Toolbar -->\r\n<div class=\"mtx-grid-toolbar\" *ngIf=\"showToolbar\">\r\n <div class=\"mtx-grid-toolbar-content\">\r\n <ng-template [ngIf]=\"_isTemplateRef(toolbarTemplate)\" [ngIfElse]=\"defaultToolbarTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"toolbarTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultToolbarTemplate>\r\n <div class=\"mtx-grid-toolbar-title\" *ngIf=\"toolbarTitle\">{{toolbarTitle}}</div>\r\n </ng-template>\r\n </div>\r\n <div class=\"mtx-grid-toolbar-actions\">\r\n <mtx-grid-column-menu *ngIf=\"showColumnMenuButton\" #columnMenu\r\n [columns]=\"columnMenuData\"\r\n [buttonText]=\"columnMenuButtonText\"\r\n [buttonType]=\"columnMenuButtonType\"\r\n [buttonColor]=\"columnMenuButtonColor\"\r\n [buttonClass]=\"columnMenuButtonClass\"\r\n [buttonIcon]=\"columnMenuButtonIcon\"\r\n [selectable]=\"columnHideable\"\r\n [selectableChecked]=\"columnHideableChecked\"\r\n [sortable]=\"columnMovable\"\r\n (selectionChange)=\"_handleColumnChange($event)\"\r\n (sortChange)=\"_handleColumnChange($event)\"\r\n [showHeader]=\"showColumnMenuHeader\"\r\n [headerText]=\"columnMenuHeaderText\"\r\n [headerTemplate]=\"columnMenuHeaderTemplate\"\r\n [showFooter]=\"showColumnMenuFooter\"\r\n [footerText]=\"columnMenuFooterText\"\r\n [footerTemplate]=\"columnMenuFooterTemplate\">\r\n </mtx-grid-column-menu>\r\n </div>\r\n</div>\r\n\r\n<div class=\"mtx-grid-main mtx-grid-layout\">\r\n <!-- Table content -->\r\n <div class=\"mtx-grid-content mtx-grid-layout\">\r\n <div #tableContainer class=\"mat-table-container\"\r\n [ngClass]=\"{'mat-table-with-data': !_hasNoResult}\">\r\n <table mat-table *ngIf=\"!columnResizable\"\r\n [ngClass]=\"{'mat-table-hover': rowHover, 'mat-table-striped': rowStriped, 'mat-table-expandable': expandable}\"\r\n [dataSource]=\"dataSource\" [multiTemplateDataRows]=\"expandable\"\r\n matSort\r\n [matSortActive]=\"sortActive\"\r\n [matSortDirection]=\"sortDirection\"\r\n [matSortDisableClear]=\"sortDisableClear\"\r\n [matSortDisabled]=\"sortDisabled\"\r\n [matSortStart]=\"sortStart\"\r\n (matSortChange)=\"_handleSortChange($event)\"\r\n [trackBy]=\"trackBy\">\r\n\r\n <ng-container *ngIf=\"rowSelectable && !hideRowSelectionCheckbox\"\r\n matColumnDef=\"MtxGridCheckboxColumnDef\">\r\n <th mat-header-cell *matHeaderCellDef class=\"mtx-grid-checkbox-cell\">\r\n <mat-checkbox *ngIf=\"multiSelectable\"\r\n [checked]=\"rowSelection.hasValue() && _isAllSelected()\"\r\n [indeterminate]=\"rowSelection.hasValue() && !_isAllSelected()\"\r\n (change)=\"$event ? _toggleMasterCheckbox() : null\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\r\n class=\"mtx-grid-checkbox-cell\">\r\n <mat-checkbox *ngIf=\"!(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox!(row, _getIndex(index, dataIndex)))\"\r\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled!(row, _getIndex(index, dataIndex))\"\r\n [checked]=\"rowSelection.isSelected(row)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? _toggleNormalCheckbox(row) : null\">\r\n </mat-checkbox>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef class=\"mtx-grid-checkbox-cell\"></td>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let col of columns;\">\r\n <ng-container [matColumnDef]=\"col.field\"\r\n [sticky]=\"col.pinned==='left'\" [stickyEnd]=\"col.pinned==='right'\">\r\n <th mat-header-cell *matHeaderCellDef\r\n [class]=\"col.class\"\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'min-width': col.width, 'left': col.left, 'right': col.right}\">\r\n <div class=\"mat-header-cell-inner\">\r\n <ng-template [ngIf]=\"_isTemplateRef(headerTemplate)\" [ngIfElse]=\"headerTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #headerTpl>\r\n <ng-template [ngIf]=\"headerTemplate && _isTemplateRef(headerTemplate[col.field])\"\r\n [ngIfElse]=\"defaultHeaderTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultHeaderTpl>\r\n <div [mat-sort-header]=\"col.sortProp?.id || col.field\"\r\n [disabled]=\"!col.sortable\"\r\n [arrowPosition]=\"col.sortProp?.arrowPosition\"\r\n [disableClear]=\"col.sortProp?.disableClear\"\r\n [start]=\"col.sortProp?.start\">\r\n <span class=\"mtx-grid-expansion-placeholder\" *ngIf=\"col.showExpand\"></span>\r\n <span>{{col.header | toObservable | async}}</span>\r\n <mat-icon class=\"mat-sort-header-icon\" *ngIf=\"col.sortable\">sort</mat-icon>\r\n </div>\r\n <ng-template [ngTemplateOutlet]=\"headerExtraTplBase\"\r\n [ngTemplateOutletContext]=\"{ $implicit: headerExtraTemplate, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\r\n [class]=\"col.class\"\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'min-width': col.width, 'left': col.left, 'right': col.right}\"\r\n mtx-grid-selectable-cell (cellSelectionChange)=\"_selectCell($event, row, col)\">\r\n <ng-template [ngIf]=\"_isTemplateRef(cellTemplate)\" [ngIfElse]=\"cellTpl\">\r\n <ng-template [ngTemplateOutlet]=\"cellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #cellTpl>\r\n <ng-template [ngIf]=\"cellTemplate && _isTemplateRef(cellTemplate[col.field])\"\r\n [ngIfElse]=\"colDefCellTpl\">\r\n <ng-template [ngTemplateOutlet]=\"cellTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #colDefCellTpl>\r\n <ng-template [ngIf]=\"col.cellTemplate\" [ngIfElse]=\"defaultCellTpl\"\r\n [ngTemplateOutlet]=\"col.cellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultCellTpl>\r\n <button *ngIf=\"col.showExpand\" mat-icon-button mtx-grid-expansion-toggle\r\n [(opened)]=\"expansionRowStates[dataIndex].expanded\"\r\n (toggleChange)=\"_handleExpansionChange($event, row, col, dataIndex);\">\r\n <mat-icon>keyboard_arrow_right</mat-icon>\r\n </button>\r\n\r\n <mtx-grid-cell [rowData]=\"row\" [colDef]=\"col\"></mtx-grid-cell>\r\n </ng-template>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'min-width': col.width, 'left': col.left, 'right': col.right}\">\r\n <span class=\"mtx-grid-expansion-placeholder\" *ngIf=\"col.showExpand\"></span>\r\n\r\n <ng-template [ngIf]=\"_isTemplateRef(summaryTemplate)\" [ngIfElse]=\"summaryTpl\">\r\n <ng-template [ngTemplateOutlet]=\"summaryTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col, data: data }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #summaryTpl>\r\n <ng-template [ngIf]=\"summaryTemplate && _isTemplateRef(summaryTemplate[col.field])\"\r\n [ngIfElse]=\"defaultSummaryTpl\">\r\n <ng-template [ngTemplateOutlet]=\"summaryTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: _getColData(data, col), colData: _getColData(data, col), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultSummaryTpl>\r\n <mtx-grid-cell [summary]=\"true\" [data]=\"data\" [colDef]=\"col\">\r\n </mtx-grid-cell>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row\r\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns;\"\r\n [ngClass]=\"_getRowClassList(row, _getIndex(index, dataIndex))\"\r\n (click)=\"_selectRow($event, row, _getIndex(index, dataIndex))\">\r\n </tr>\r\n <ng-container *ngIf=\"_whetherShowSummary\">\r\n <tr mat-footer-row *matFooterRowDef=\"displayedColumns; sticky: true\"></tr>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"expandable\">\r\n <!-- Expanded Content Column - The expandable row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"MtxGridExpansionColumnDef\">\r\n <td mat-cell *matCellDef=\"let row; let dataIndex = dataIndex\"\r\n [attr.colspan]=\"displayedColumns.length\">\r\n <div class=\"mtx-grid-expansion-detail\"\r\n [@expansion]=\"expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed'\">\r\n <ng-template [ngTemplateOutlet]=\"expansionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: dataIndex, expanded: expansionRowStates[dataIndex].expanded }\">\r\n </ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-row\r\n *matRowDef=\"let row; columns: ['MtxGridExpansionColumnDef']; let dataIndex = dataIndex\"\r\n [ngClass]=\"['mtx-grid-expansion', expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed']\">\r\n </tr>\r\n </ng-container>\r\n </table>\r\n\r\n <!-- TODO: Use flexbox-based mat-table -->\r\n <table mat-table *ngIf=\"columnResizable\"\r\n columnResize\r\n [ngClass]=\"{'mat-table-hover': rowHover, 'mat-table-striped': rowStriped, 'mat-table-expandable': expandable}\"\r\n [dataSource]=\"dataSource\" [multiTemplateDataRows]=\"expandable\"\r\n matSort\r\n [matSortActive]=\"sortActive\"\r\n [matSortDirection]=\"sortDirection\"\r\n [matSortDisableClear]=\"sortDisableClear\"\r\n [matSortDisabled]=\"sortDisabled\"\r\n [matSortStart]=\"sortStart\"\r\n (matSortChange)=\"_handleSortChange($event)\"\r\n [trackBy]=\"trackBy\">\r\n\r\n <ng-container *ngIf=\"rowSelectable && !hideRowSelectionCheckbox\"\r\n matColumnDef=\"MtxGridCheckboxColumnDef\">\r\n <th mat-header-cell *matHeaderCellDef class=\"mtx-grid-checkbox-cell\">\r\n <mat-checkbox *ngIf=\"multiSelectable\"\r\n [checked]=\"rowSelection.hasValue() && _isAllSelected()\"\r\n [indeterminate]=\"rowSelection.hasValue() && !_isAllSelected()\"\r\n (change)=\"$event ? _toggleMasterCheckbox() : null\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\r\n class=\"mtx-grid-checkbox-cell\">\r\n <mat-checkbox *ngIf=\"!(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox!(row, _getIndex(index, dataIndex)))\"\r\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled!(row, _getIndex(index, dataIndex))\"\r\n [checked]=\"rowSelection.isSelected(row)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? _toggleNormalCheckbox(row) : null\">\r\n </mat-checkbox>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef class=\"mtx-grid-checkbox-cell\"></td>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let col of columns;\">\r\n <ng-container [matColumnDef]=\"col.field\"\r\n [sticky]=\"col.pinned==='left'\" [stickyEnd]=\"col.pinned==='right'\">\r\n <th mat-header-cell *matHeaderCellDef\r\n [class]=\"col.class\"\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'left': col.left, 'right': col.right}\"\r\n [resizable]=\"col.resizable\"\r\n [matResizableMinWidthPx]=\"col.minWidth\" [matResizableMaxWidthPx]=\"col.maxWidth\">\r\n <div class=\"mat-header-cell-inner\">\r\n <ng-template [ngIf]=\"_isTemplateRef(headerTemplate)\" [ngIfElse]=\"headerTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #headerTpl>\r\n <ng-template [ngIf]=\"headerTemplate && _isTemplateRef(headerTemplate[col.field])\"\r\n [ngIfElse]=\"defaultHeaderTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultHeaderTpl>\r\n <div [mat-sort-header]=\"col.sortProp?.id || col.field\"\r\n [disabled]=\"!col.sortable\"\r\n [arrowPosition]=\"col.sortProp?.arrowPosition\"\r\n [disableClear]=\"col.sortProp?.disableClear\"\r\n [start]=\"col.sortProp?.start\">\r\n <span class=\"mtx-grid-expansion-placeholder\" *ngIf=\"col.showExpand\"></span>\r\n <span>{{col.header | toObservable | async}}</span>\r\n <mat-icon class=\"mat-sort-header-icon\" *ngIf=\"col.sortable\">sort</mat-icon>\r\n </div>\r\n <ng-template [ngTemplateOutlet]=\"headerExtraTplBase\"\r\n [ngTemplateOutletContext]=\"{ $implicit: headerExtraTemplate, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\r\n [class]=\"col.class\"\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'left': col.left, 'right': col.right}\"\r\n mtx-grid-selectable-cell (cellSelectionChange)=\"_selectCell($event, row, col)\">\r\n <ng-template [ngIf]=\"_isTemplateRef(cellTemplate)\" [ngIfElse]=\"cellTpl\">\r\n <ng-template [ngTemplateOutlet]=\"cellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #cellTpl>\r\n <ng-template [ngIf]=\"cellTemplate && _isTemplateRef(cellTemplate[col.field])\"\r\n [ngIfElse]=\"colDefCellTpl\">\r\n <ng-template [ngTemplateOutlet]=\"cellTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #colDefCellTpl>\r\n <ng-template [ngIf]=\"col.cellTemplate\" [ngIfElse]=\"defaultCellTpl\"\r\n [ngTemplateOutlet]=\"col.cellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultCellTpl>\r\n <button *ngIf=\"col.showExpand\" mat-icon-button mtx-grid-expansion-toggle\r\n [(opened)]=\"expansionRowStates[dataIndex].expanded\"\r\n (toggleChange)=\"_handleExpansionChange($event, row, col, dataIndex);\">\r\n <mat-icon>keyboard_arrow_right</mat-icon>\r\n </button>\r\n\r\n <mtx-grid-cell [rowData]=\"row\" [colDef]=\"col\"></mtx-grid-cell>\r\n </ng-template>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'left': col.left, 'right': col.right}\">\r\n <span class=\"mtx-grid-expansion-placeholder\" *ngIf=\"col.showExpand\"></span>\r\n\r\n <ng-template [ngIf]=\"_isTemplateRef(summaryTemplate)\" [ngIfElse]=\"summaryTpl\">\r\n <ng-template [ngTemplateOutlet]=\"summaryTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col, data: data }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #summaryTpl>\r\n <ng-template [ngIf]=\"summaryTemplate && _isTemplateRef(summaryTemplate[col.field])\"\r\n [ngIfElse]=\"defaultSummaryTpl\">\r\n <ng-template [ngTemplateOutlet]=\"summaryTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: _getColData(data, col), colData: _getColData(data, col), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultSummaryTpl>\r\n <mtx-grid-cell [summary]=\"true\" [data]=\"data\" [colDef]=\"col\">\r\n </mtx-grid-cell>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row\r\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns;\"\r\n [ngClass]=\"_getRowClassList(row, _getIndex(index, dataIndex))\"\r\n (click)=\"_selectRow($event, row, _getIndex(index, dataIndex))\">\r\n </tr>\r\n <ng-container *ngIf=\"_whetherShowSummary\">\r\n <tr mat-footer-row *matFooterRowDef=\"displayedColumns; sticky: true\"></tr>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"expandable\">\r\n <!-- Expanded Content Column - The expandable row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"MtxGridExpansionColumnDef\">\r\n <td mat-cell *matCellDef=\"let row; let dataIndex = dataIndex\"\r\n [attr.colspan]=\"displayedColumns.length\">\r\n <div class=\"mtx-grid-expansion-detail\"\r\n [@expansion]=\"expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed'\">\r\n <ng-template [ngTemplateOutlet]=\"expansionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: dataIndex, expanded: expansionRowStates[dataIndex].expanded }\">\r\n </ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-row\r\n *matRowDef=\"let row; columns: ['MtxGridExpansionColumnDef']; let dataIndex = dataIndex\"\r\n [ngClass]=\"['mtx-grid-expansion', expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed']\">\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n\r\n <!-- No result -->\r\n <div class=\"mtx-grid-no-result\" *ngIf=\"_hasNoResult\">\r\n <ng-template [ngIf]=\"_isTemplateRef(noResultTemplate)\" [ngIfElse]=\"defaultNoResultTpl\">\r\n <ng-template [ngTemplateOutlet]=\"noResultTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultNoResultTpl>{{noResultText}}</ng-template>\r\n </div>\r\n </div>\r\n\r\n <!-- Tool sidebar -->\r\n <div class=\"mtx-grid-sidebar\" *ngIf=\"showSidebar\">\r\n <ng-template [ngIf]=\"_isTemplateRef(sidebarTemplate)\">\r\n <ng-template [ngTemplateOutlet]=\"sidebarTemplate\"></ng-template>\r\n </ng-template>\r\n </div>\r\n</div>\r\n\r\n<!-- Paginator -->\r\n<mat-paginator [class.mat-paginator-hidden]=\"!showPaginator || _hasNoResult\"\r\n [showFirstLastButtons]=\"showFirstLastButtons\"\r\n [length]=\"length\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n [hidePageSize]=\"hidePageSize\"\r\n (page)=\"_handlePage($event)\"\r\n [disabled]=\"pageDisabled\">\r\n</mat-paginator>\r\n\r\n<!-- Header template for extra content -->\r\n<ng-template #headerExtraTplBase let-headerExtraTemplate let-col=\"colDef\">\r\n <ng-template [ngIf]=\"_isTemplateRef(headerExtraTemplate)\" [ngIfElse]=\"headerExtraTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerExtraTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #headerExtraTpl>\r\n <ng-template [ngIf]=\"headerExtraTemplate && _isTemplateRef(headerExtraTemplate[col.field])\">\r\n <ng-template [ngTemplateOutlet]=\"headerExtraTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n</ng-template>\r\n",
473
+ template: "<!-- Progress bar-->\r\n<div class=\"mtx-grid-progress\" *ngIf=\"loading\">\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n</div>\r\n\r\n<!-- Toolbar -->\r\n<div class=\"mtx-grid-toolbar\" *ngIf=\"showToolbar\">\r\n <div class=\"mtx-grid-toolbar-content\">\r\n <ng-template [ngIf]=\"_isTemplateRef(toolbarTemplate)\" [ngIfElse]=\"defaultToolbarTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"toolbarTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultToolbarTemplate>\r\n <div class=\"mtx-grid-toolbar-title\" *ngIf=\"toolbarTitle\">{{toolbarTitle}}</div>\r\n </ng-template>\r\n </div>\r\n <div class=\"mtx-grid-toolbar-actions\">\r\n <mtx-grid-column-menu *ngIf=\"showColumnMenuButton\" #columnMenu\r\n [columns]=\"columnMenuData\"\r\n [buttonText]=\"columnMenuButtonText\"\r\n [buttonType]=\"columnMenuButtonType\"\r\n [buttonColor]=\"columnMenuButtonColor\"\r\n [buttonClass]=\"columnMenuButtonClass\"\r\n [buttonIcon]=\"columnMenuButtonIcon\"\r\n [selectable]=\"columnHideable\"\r\n [selectableChecked]=\"columnHideableChecked\"\r\n [sortable]=\"columnMovable\"\r\n (selectionChange)=\"_handleColumnChange($event)\"\r\n (sortChange)=\"_handleColumnChange($event)\"\r\n [showHeader]=\"showColumnMenuHeader\"\r\n [headerText]=\"columnMenuHeaderText\"\r\n [headerTemplate]=\"columnMenuHeaderTemplate\"\r\n [showFooter]=\"showColumnMenuFooter\"\r\n [footerText]=\"columnMenuFooterText\"\r\n [footerTemplate]=\"columnMenuFooterTemplate\">\r\n </mtx-grid-column-menu>\r\n </div>\r\n</div>\r\n\r\n<div class=\"mtx-grid-main mtx-grid-layout\">\r\n <!-- Table content -->\r\n <div class=\"mtx-grid-content mtx-grid-layout\">\r\n <div #tableContainer class=\"mat-table-container\"\r\n [ngClass]=\"{'mat-table-with-data': !_hasNoResult}\">\r\n <table mat-table *ngIf=\"!columnResizable\"\r\n [ngClass]=\"{'mat-table-hover': rowHover, 'mat-table-striped': rowStriped, 'mat-table-expandable': expandable}\"\r\n [dataSource]=\"dataSource\" [multiTemplateDataRows]=\"expandable\"\r\n matSort\r\n [matSortActive]=\"sortActive\"\r\n [matSortDirection]=\"sortDirection\"\r\n [matSortDisableClear]=\"sortDisableClear\"\r\n [matSortDisabled]=\"sortDisabled\"\r\n [matSortStart]=\"sortStart\"\r\n (matSortChange)=\"_handleSortChange($event)\"\r\n [trackBy]=\"trackBy\">\r\n\r\n <ng-container *ngIf=\"rowSelectable && !hideRowSelectionCheckbox\"\r\n matColumnDef=\"MtxGridCheckboxColumnDef\">\r\n <th mat-header-cell *matHeaderCellDef class=\"mtx-grid-checkbox-cell\">\r\n <mat-checkbox *ngIf=\"multiSelectable\"\r\n [checked]=\"rowSelection.hasValue() && _isAllSelected()\"\r\n [indeterminate]=\"rowSelection.hasValue() && !_isAllSelected()\"\r\n (change)=\"$event ? _toggleMasterCheckbox() : null\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\r\n class=\"mtx-grid-checkbox-cell\">\r\n <mat-checkbox *ngIf=\"!(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox!(row, _getIndex(index, dataIndex)))\"\r\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled!(row, _getIndex(index, dataIndex))\"\r\n [checked]=\"rowSelection.isSelected(row)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? _toggleNormalCheckbox(row) : null\">\r\n </mat-checkbox>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef class=\"mtx-grid-checkbox-cell\"></td>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let col of columns;\">\r\n <ng-container [matColumnDef]=\"col.field\"\r\n [sticky]=\"col.pinned==='left'\" [stickyEnd]=\"col.pinned==='right'\">\r\n <th mat-header-cell *matHeaderCellDef\r\n [class]=\"col.class\"\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'min-width': col.width, 'left': col.left, 'right': col.right}\">\r\n <div class=\"mat-header-cell-inner\">\r\n <ng-template [ngIf]=\"_isTemplateRef(headerTemplate)\" [ngIfElse]=\"headerTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #headerTpl>\r\n <ng-template [ngIf]=\"headerTemplate && _isTemplateRef(headerTemplate[col.field])\"\r\n [ngIfElse]=\"defaultHeaderTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultHeaderTpl>\r\n <div [mat-sort-header]=\"col.sortProp?.id || col.field\"\r\n [disabled]=\"!col.sortable\"\r\n [arrowPosition]=\"col.sortProp?.arrowPosition\"\r\n [disableClear]=\"col.sortProp?.disableClear == null ? sortDisableClear : col.sortProp?.disableClear\"\r\n [start]=\"col.sortProp?.start\">\r\n <span class=\"mtx-grid-expansion-placeholder\" *ngIf=\"col.showExpand\"></span>\r\n <span>{{col.header | toObservable | async}}</span>\r\n <mat-icon class=\"mat-sort-header-icon\" *ngIf=\"col.sortable\">sort</mat-icon>\r\n </div>\r\n <ng-template [ngTemplateOutlet]=\"headerExtraTplBase\"\r\n [ngTemplateOutletContext]=\"{ $implicit: headerExtraTemplate, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\r\n [class]=\"col.class\"\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'min-width': col.width, 'left': col.left, 'right': col.right}\"\r\n mtx-grid-selectable-cell (cellSelectionChange)=\"_selectCell($event, row, col)\">\r\n <ng-template [ngIf]=\"_isTemplateRef(cellTemplate)\" [ngIfElse]=\"cellTpl\">\r\n <ng-template [ngTemplateOutlet]=\"cellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #cellTpl>\r\n <ng-template [ngIf]=\"cellTemplate && _isTemplateRef(cellTemplate[col.field])\"\r\n [ngIfElse]=\"colDefCellTpl\">\r\n <ng-template [ngTemplateOutlet]=\"cellTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #colDefCellTpl>\r\n <ng-template [ngIf]=\"col.cellTemplate\" [ngIfElse]=\"defaultCellTpl\"\r\n [ngTemplateOutlet]=\"col.cellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultCellTpl>\r\n <button *ngIf=\"col.showExpand\" mat-icon-button type=\"button\"\r\n mtx-grid-expansion-toggle\r\n [(opened)]=\"expansionRowStates[dataIndex].expanded\"\r\n (toggleChange)=\"_handleExpansionChange($event, row, col, dataIndex);\">\r\n <mat-icon>keyboard_arrow_right</mat-icon>\r\n </button>\r\n\r\n <mtx-grid-cell [rowData]=\"row\" [colDef]=\"col\"></mtx-grid-cell>\r\n </ng-template>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'min-width': col.width, 'left': col.left, 'right': col.right}\">\r\n <span class=\"mtx-grid-expansion-placeholder\" *ngIf=\"col.showExpand\"></span>\r\n\r\n <ng-template [ngIf]=\"_isTemplateRef(summaryTemplate)\" [ngIfElse]=\"summaryTpl\">\r\n <ng-template [ngTemplateOutlet]=\"summaryTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col, data: data }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #summaryTpl>\r\n <ng-template [ngIf]=\"summaryTemplate && _isTemplateRef(summaryTemplate[col.field])\"\r\n [ngIfElse]=\"defaultSummaryTpl\">\r\n <ng-template [ngTemplateOutlet]=\"summaryTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: _getColData(data, col), colData: _getColData(data, col), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultSummaryTpl>\r\n <mtx-grid-cell [summary]=\"true\" [data]=\"data\" [colDef]=\"col\">\r\n </mtx-grid-cell>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row\r\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns;\"\r\n [ngClass]=\"_getRowClassList(row, _getIndex(index, dataIndex))\"\r\n (click)=\"_selectRow($event, row, _getIndex(index, dataIndex))\">\r\n </tr>\r\n <ng-container *ngIf=\"_whetherShowSummary\">\r\n <tr mat-footer-row *matFooterRowDef=\"displayedColumns; sticky: true\"></tr>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"expandable\">\r\n <!-- Expanded Content Column - The expandable row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"MtxGridExpansionColumnDef\">\r\n <td mat-cell *matCellDef=\"let row; let dataIndex = dataIndex\"\r\n [attr.colspan]=\"displayedColumns.length\">\r\n <div class=\"mtx-grid-expansion-detail\"\r\n [@expansion]=\"expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed'\">\r\n <ng-template [ngTemplateOutlet]=\"expansionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: dataIndex, expanded: expansionRowStates[dataIndex].expanded }\">\r\n </ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-row\r\n *matRowDef=\"let row; columns: ['MtxGridExpansionColumnDef']; let dataIndex = dataIndex\"\r\n [ngClass]=\"['mtx-grid-expansion', expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed']\">\r\n </tr>\r\n </ng-container>\r\n </table>\r\n\r\n <!-- TODO: Use flexbox-based mat-table -->\r\n <table mat-table *ngIf=\"columnResizable\"\r\n columnResize\r\n [ngClass]=\"{'mat-table-hover': rowHover, 'mat-table-striped': rowStriped, 'mat-table-expandable': expandable}\"\r\n [dataSource]=\"dataSource\" [multiTemplateDataRows]=\"expandable\"\r\n matSort\r\n [matSortActive]=\"sortActive\"\r\n [matSortDirection]=\"sortDirection\"\r\n [matSortDisableClear]=\"sortDisableClear\"\r\n [matSortDisabled]=\"sortDisabled\"\r\n [matSortStart]=\"sortStart\"\r\n (matSortChange)=\"_handleSortChange($event)\"\r\n [trackBy]=\"trackBy\">\r\n\r\n <ng-container *ngIf=\"rowSelectable && !hideRowSelectionCheckbox\"\r\n matColumnDef=\"MtxGridCheckboxColumnDef\">\r\n <th mat-header-cell *matHeaderCellDef class=\"mtx-grid-checkbox-cell\">\r\n <mat-checkbox *ngIf=\"multiSelectable\"\r\n [checked]=\"rowSelection.hasValue() && _isAllSelected()\"\r\n [indeterminate]=\"rowSelection.hasValue() && !_isAllSelected()\"\r\n (change)=\"$event ? _toggleMasterCheckbox() : null\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\r\n class=\"mtx-grid-checkbox-cell\">\r\n <mat-checkbox *ngIf=\"!(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox!(row, _getIndex(index, dataIndex)))\"\r\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled!(row, _getIndex(index, dataIndex))\"\r\n [checked]=\"rowSelection.isSelected(row)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? _toggleNormalCheckbox(row) : null\">\r\n </mat-checkbox>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef class=\"mtx-grid-checkbox-cell\"></td>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let col of columns;\">\r\n <ng-container [matColumnDef]=\"col.field\"\r\n [sticky]=\"col.pinned==='left'\" [stickyEnd]=\"col.pinned==='right'\">\r\n <th mat-header-cell *matHeaderCellDef\r\n [class]=\"col.class\"\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'left': col.left, 'right': col.right}\"\r\n [resizable]=\"col.resizable\"\r\n [matResizableMinWidthPx]=\"col.minWidth\" [matResizableMaxWidthPx]=\"col.maxWidth\">\r\n <div class=\"mat-header-cell-inner\">\r\n <ng-template [ngIf]=\"_isTemplateRef(headerTemplate)\" [ngIfElse]=\"headerTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #headerTpl>\r\n <ng-template [ngIf]=\"headerTemplate && _isTemplateRef(headerTemplate[col.field])\"\r\n [ngIfElse]=\"defaultHeaderTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultHeaderTpl>\r\n <div [mat-sort-header]=\"col.sortProp?.id || col.field\"\r\n [disabled]=\"!col.sortable\"\r\n [arrowPosition]=\"col.sortProp?.arrowPosition\"\r\n [disableClear]=\"col.sortProp?.disableClear == null ? sortDisableClear : col.sortProp?.disableClear\"\r\n [start]=\"col.sortProp?.start\">\r\n <span class=\"mtx-grid-expansion-placeholder\" *ngIf=\"col.showExpand\"></span>\r\n <span>{{col.header | toObservable | async}}</span>\r\n <mat-icon class=\"mat-sort-header-icon\" *ngIf=\"col.sortable\">sort</mat-icon>\r\n </div>\r\n <ng-template [ngTemplateOutlet]=\"headerExtraTplBase\"\r\n [ngTemplateOutletContext]=\"{ $implicit: headerExtraTemplate, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\r\n [class]=\"col.class\"\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'left': col.left, 'right': col.right}\"\r\n mtx-grid-selectable-cell (cellSelectionChange)=\"_selectCell($event, row, col)\">\r\n <ng-template [ngIf]=\"_isTemplateRef(cellTemplate)\" [ngIfElse]=\"cellTpl\">\r\n <ng-template [ngTemplateOutlet]=\"cellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #cellTpl>\r\n <ng-template [ngIf]=\"cellTemplate && _isTemplateRef(cellTemplate[col.field])\"\r\n [ngIfElse]=\"colDefCellTpl\">\r\n <ng-template [ngTemplateOutlet]=\"cellTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #colDefCellTpl>\r\n <ng-template [ngIf]=\"col.cellTemplate\" [ngIfElse]=\"defaultCellTpl\"\r\n [ngTemplateOutlet]=\"col.cellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultCellTpl>\r\n <button *ngIf=\"col.showExpand\" mat-icon-button type=\"button\"\r\n mtx-grid-expansion-toggle\r\n [(opened)]=\"expansionRowStates[dataIndex].expanded\"\r\n (toggleChange)=\"_handleExpansionChange($event, row, col, dataIndex);\">\r\n <mat-icon>keyboard_arrow_right</mat-icon>\r\n </button>\r\n\r\n <mtx-grid-cell [rowData]=\"row\" [colDef]=\"col\"></mtx-grid-cell>\r\n </ng-template>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef\r\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\r\n [ngStyle]=\"{'width': col.width, 'left': col.left, 'right': col.right}\">\r\n <span class=\"mtx-grid-expansion-placeholder\" *ngIf=\"col.showExpand\"></span>\r\n\r\n <ng-template [ngIf]=\"_isTemplateRef(summaryTemplate)\" [ngIfElse]=\"summaryTpl\">\r\n <ng-template [ngTemplateOutlet]=\"summaryTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col, data: data }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #summaryTpl>\r\n <ng-template [ngIf]=\"summaryTemplate && _isTemplateRef(summaryTemplate[col.field])\"\r\n [ngIfElse]=\"defaultSummaryTpl\">\r\n <ng-template [ngTemplateOutlet]=\"summaryTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: _getColData(data, col), colData: _getColData(data, col), colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #defaultSummaryTpl>\r\n <mtx-grid-cell [summary]=\"true\" [data]=\"data\" [colDef]=\"col\">\r\n </mtx-grid-cell>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row\r\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns;\"\r\n [ngClass]=\"_getRowClassList(row, _getIndex(index, dataIndex))\"\r\n (click)=\"_selectRow($event, row, _getIndex(index, dataIndex))\">\r\n </tr>\r\n <ng-container *ngIf=\"_whetherShowSummary\">\r\n <tr mat-footer-row *matFooterRowDef=\"displayedColumns; sticky: true\"></tr>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"expandable\">\r\n <!-- Expanded Content Column - The expandable row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"MtxGridExpansionColumnDef\">\r\n <td mat-cell *matCellDef=\"let row; let dataIndex = dataIndex\"\r\n [attr.colspan]=\"displayedColumns.length\">\r\n <div class=\"mtx-grid-expansion-detail\"\r\n [@expansion]=\"expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed'\">\r\n <ng-template [ngTemplateOutlet]=\"expansionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: dataIndex, expanded: expansionRowStates[dataIndex].expanded }\">\r\n </ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-row\r\n *matRowDef=\"let row; columns: ['MtxGridExpansionColumnDef']; let dataIndex = dataIndex\"\r\n [ngClass]=\"['mtx-grid-expansion', expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed']\">\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n\r\n <!-- No result -->\r\n <div class=\"mtx-grid-no-result\" *ngIf=\"_hasNoResult\">\r\n <ng-template [ngIf]=\"_isTemplateRef(noResultTemplate)\" [ngIfElse]=\"defaultNoResultTpl\">\r\n <ng-template [ngTemplateOutlet]=\"noResultTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultNoResultTpl>{{noResultText}}</ng-template>\r\n </div>\r\n </div>\r\n\r\n <!-- Tool sidebar -->\r\n <div class=\"mtx-grid-sidebar\" *ngIf=\"showSidebar\">\r\n <ng-template [ngIf]=\"_isTemplateRef(sidebarTemplate)\">\r\n <ng-template [ngTemplateOutlet]=\"sidebarTemplate\"></ng-template>\r\n </ng-template>\r\n </div>\r\n</div>\r\n\r\n<!-- Paginator -->\r\n<mat-paginator [class.mat-paginator-hidden]=\"!showPaginator\"\r\n [showFirstLastButtons]=\"showFirstLastButtons\"\r\n [length]=\"length\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n [hidePageSize]=\"hidePageSize\"\r\n (page)=\"_handlePage($event)\"\r\n [disabled]=\"pageDisabled\">\r\n</mat-paginator>\r\n\r\n<!-- Header template for extra content -->\r\n<ng-template #headerExtraTplBase let-headerExtraTemplate let-col=\"colDef\">\r\n <ng-template [ngIf]=\"_isTemplateRef(headerExtraTemplate)\" [ngIfElse]=\"headerExtraTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerExtraTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #headerExtraTpl>\r\n <ng-template [ngIf]=\"headerExtraTemplate && _isTemplateRef(headerExtraTemplate[col.field])\">\r\n <ng-template [ngTemplateOutlet]=\"headerExtraTemplate[col.field]\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n</ng-template>\r\n",
474
474
  host: {
475
475
  class: 'mtx-grid',
476
476
  },
@@ -478,7 +478,7 @@ MtxGridComponent.decorators = [
478
478
  changeDetection: ChangeDetectionStrategy.OnPush,
479
479
  animations: [
480
480
  trigger('expansion', [
481
- state('collapsed', style({ height: '0', minHeight: '0', visibility: 'hidden' })),
481
+ state('collapsed, void', style({ height: '0', minHeight: '0', visibility: 'hidden' })),
482
482
  state('expanded', style({ height: '*', visibility: 'visible' })),
483
483
  transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
484
484
  ]),
@@ -736,4 +736,4 @@ if (false) {
736
736
  */
737
737
  MtxGridComponent.prototype._changeDetectorRef;
738
738
  }
739
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL25pdXpvbmdiaW4vUHJvamVjdHMvQG5nLW1hdGVyby9leHRlbnNpb25zL3Byb2plY3RzL2V4dGVuc2lvbnMvZGF0YS1ncmlkLyIsInNvdXJjZXMiOlsiZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFdBQVcsRUFJWCxpQkFBaUIsRUFDakIsVUFBVSxHQUVYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQWEsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQVEsT0FBTyxFQUFpQixNQUFNLHdCQUF3QixDQUFDO0FBYXRFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBcUJwQyxNQUFNLE9BQU8sZ0JBQWdCOzs7OztJQTBJM0IsWUFDVSxZQUE0QixFQUM1QixrQkFBcUM7UUFEckMsaUJBQVksR0FBWixZQUFZLENBQWdCO1FBQzVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUF0SS9DLGVBQVUsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFHN0IsWUFBTyxHQUFvQixFQUFFLENBQUM7UUFDOUIsU0FBSSxHQUFVLEVBQUUsQ0FBQztRQUNqQixXQUFNLEdB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SUFHcEQsMkNBQWdDOztJQUloQyx3Q0FBc0U7O0lBRXRFLHVDQUEwQjs7SUFDMUIseUNBQStCOztJQUMvQixvREFBMEM7O0lBQzFDLGlEQUFrRTs7SUFDbEUsNkNBQXFEOztJQUNyRCw4Q0FBeUQ7O0lBSXpELHlDQUEwQjs7SUFFMUIsMENBQStCOztJQUMvQiwrQ0FBMEQ7Ozs7O0lBRTFELHlDQUFpRTs7SUFJakUsdUNBQTZCOztJQUM3Qix3Q0FBMkI7O0lBQzNCLDJDQUEyQzs7SUFJM0MsMENBQWtEOztJQUVsRCxnREFBcUM7O0lBQ3JDLGdEQUFtQzs7SUFDbkMsZ0RBQTZEOztJQUM3RCxpREFBNkM7O0lBQzdDLGlEQUFvQzs7SUFDcEMsZ0RBQW1DOztJQUVuQywwQ0FBK0I7O0lBQy9CLGlEQUF5RDs7SUFDekQseUNBQThCOztJQUM5QiwwQ0FBK0I7O0lBQy9CLHdDQUEwRTs7SUFFMUUsZ0RBQXNDOztJQUN0QyxnREFBaUQ7O0lBQ2pELG9EQUFvRDs7SUFDcEQsZ0RBQXNDOztJQUN0QyxnREFBaUQ7O0lBQ2pELG9EQUFvRDs7SUFJcEQsd0NBQTJDOztJQUMzQyw0Q0FBNEM7O0lBUTVDLDBDQUFzRTs7SUFDdEUsK0NBQTJFOztJQUUzRSx3Q0FBb0U7O0lBSXBFLHVDQUE2Qjs7SUFDN0IsMkNBQXVFOztJQVN2RSx1Q0FBNkI7O0lBQzdCLDJDQUEyQzs7Ozs7SUFHekMsd0NBQW9DOzs7OztJQUNwQyw4Q0FBNkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBWaWV3Q2hpbGQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFRyYWNrQnlGdW5jdGlvbixcclxuICBPbkRlc3Ryb3ksXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBFbGVtZW50UmVmLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRyaWdnZXIsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgYW5pbWF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yLCBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBTb3J0LCBNYXRTb3J0LCBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIE10eEdyaWRDb2x1bW4sXHJcbiAgTXR4R3JpZENvbHVtblNlbGVjdGlvbkl0ZW0sXHJcbiAgTXR4R3JpZENlbGxUZW1wbGF0ZSxcclxuICBNdHhHcmlkUm93U2VsZWN0aW9uRm9ybWF0dGVyLFxyXG4gIE10eEdyaWRSb3dDbGFzc0Zvcm1hdHRlcixcclxuICBNdHhHcmlkQ29sdW1uTWVudSxcclxuICBNdHhHcmlkQnV0dG9uVHlwZSxcclxufSBmcm9tICcuL2dyaWQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgTXR4R3JpZENlbGxTZWxlY3Rpb25EaXJlY3RpdmUgfSBmcm9tICcuL2NlbGwtc2VsZWN0aW9uLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE10eEdyaWRFeHBhbnNpb25Ub2dnbGVEaXJlY3RpdmUgfSBmcm9tICcuL2V4cGFuc2lvbi10b2dnbGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTXR4R3JpZFNlcnZpY2UgfSBmcm9tICcuL2dyaWQuc2VydmljZSc7XHJcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXR4LWdyaWQnLFxyXG4gIGV4cG9ydEFzOiAnbXR4R3JpZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dyaWQuY29tcG9uZW50LnNjc3MnXSxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ210eC1ncmlkJyxcclxuICB9LFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZXhwYW5zaW9uJywgW1xyXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkJywgc3R5bGUoeyBoZWlnaHQ6ICcwJywgbWluSGVpZ2h0OiAnMCcsIHZpc2liaWxpdHk6ICdoaWRkZW4nIH0pKSxcclxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdHhHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc29ydDogTWF0U29ydDtcclxuICBAVmlld0NoaWxkKCdjb2x1bW5NZW51JykgY29sdW1uTWVudTogTXR4R3JpZENvbHVtbk1lbnU7XHJcbiAgQFZpZXdDaGlsZCgndGFibGVDb250YWluZXInKSB0YWJsZUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIGRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKCk7XHJcblxyXG4gIEBJbnB1dCgpIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIGNvbHVtbnM6IE10eEdyaWRDb2x1bW5bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGRhdGE6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgbGVuZ3RoID0gMDtcclxuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHRyYWNrQnk6IFRyYWNrQnlGdW5jdGlvbjxhbnk+O1xyXG5cclxuICBASW5wdXQoKSBjb2x1bW5SZXNpemFibGUgPSBmYWxzZTtcclxuXHJcbiAgLy8gUGFnZVxyXG5cclxuICBASW5wdXQoKSBwYWdlT25Gcm9udCA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd1BhZ2luYXRvciA9IHRydWU7XHJcbiAgQElucHV0KCkgcGFnZURpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0ZpcnN0TGFzdEJ1dHRvbnMgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHBhZ2VJbmRleCA9IDA7XHJcbiAgQElucHV0KCkgcGFnZVNpemUgPSAxMDtcclxuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnMgPSBbMTAsIDUwLCAxMDBdO1xyXG4gIEBJbnB1dCgpIGhpZGVQYWdlU2l6ZSA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBwYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlRXZlbnQ+KCk7XHJcblxyXG4gIC8vIFNvcnRcclxuXHJcbiAgQElucHV0KCkgc29ydE9uRnJvbnQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNvcnRBY3RpdmU6IHN0cmluZztcclxuICBASW5wdXQoKSBzb3J0RGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xyXG4gIEBJbnB1dCgpIHNvcnREaXNhYmxlQ2xlYXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzb3J0RGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzb3J0U3RhcnQ6ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYyc7XHJcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnQ+KCk7XHJcblxyXG4gIC8vIFJvd1xyXG5cclxuICBASW5wdXQoKSByb3dIb3ZlciA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHJvd1N0cmlwZWQgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgLy8gRXhwYW5zaW9uXHJcblxyXG4gIGV4cGFuc2lvblJvd1N0YXRlczogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgZXhwYW5kYWJsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGV4cGFuc2lvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBPdXRwdXQoKSBleHBhbnNpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgLyoqIFdoZXRoZXIgc3VwcG9ydCBtdWx0aXBsZSByb3cvY2VsbCBzZWxlY3Rpb24gKi9cclxuICBASW5wdXQoKSBtdWx0aVNlbGVjdGFibGUgPSB0cnVlO1xyXG5cclxuICAvLyBSb3cgc2VsZWN0aW9uXHJcblxyXG4gIHJvd1NlbGVjdGlvbjogU2VsZWN0aW9uTW9kZWw8YW55PiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRydWUsIFtdKTtcclxuXHJcbiAgQElucHV0KCkgcm93U2VsZWN0ZWQgPSBbXTtcclxuICBASW5wdXQoKSByb3dTZWxlY3RhYmxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGlkZVJvd1NlbGVjdGlvbkNoZWNrYm94ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcm93U2VsZWN0aW9uRm9ybWF0dGVyOiBNdHhHcmlkUm93U2VsZWN0aW9uRm9ybWF0dGVyID0ge307XHJcbiAgQElucHV0KCkgcm93Q2xhc3NGb3JtYXR0ZXI6IE10eEdyaWRSb3dDbGFzc0Zvcm1hdHRlcjtcclxuICBAT3V0cHV0KCkgcm93U2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuXHJcbiAgLy8gQ2VsbCBzZWxlY3Rpb25cclxuXHJcbiAgY2VsbFNlbGVjdGlvbjogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgY2VsbFNlbGVjdGFibGUgPSB0cnVlO1xyXG4gIEBPdXRwdXQoKSBjZWxsU2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRDZWxsOiBNdHhHcmlkQ2VsbFNlbGVjdGlvbkRpcmVjdGl2ZSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLy8gVG9vbGJhclxyXG5cclxuICBASW5wdXQoKSBzaG93VG9vbGJhciA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRvb2xiYXJUaXRsZSA9ICcnO1xyXG4gIEBJbnB1dCgpIHRvb2xiYXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLy8gQ29sdW1uIG1lbnVcclxuXHJcbiAgY29sdW1uTWVudURhdGE6IE10eEdyaWRDb2x1bW5TZWxlY3Rpb25JdGVtW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgc2hvd0NvbHVtbk1lbnVCdXR0b24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVCdXR0b25UZXh0ID0gJyc7XHJcbiAgQElucHV0KCkgY29sdW1uTWVudUJ1dHRvblR5cGU6IE10eEdyaWRCdXR0b25UeXBlID0gJ3N0cm9rZWQnO1xyXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVCdXR0b25Db2xvcjogVGhlbWVQYWxldHRlO1xyXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVCdXR0b25DbGFzcyA9ICcnO1xyXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVCdXR0b25JY29uID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpIGNvbHVtbkhpZGVhYmxlID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjb2x1bW5IaWRlYWJsZUNoZWNrZWQ6ICdzaG93JyB8ICdoaWRlJyA9ICdzaG93JztcclxuICBASW5wdXQoKSBjb2x1bW5Nb3ZhYmxlID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjb2x1bW5QaW5uYWJsZSA9IHRydWU7XHJcbiAgQE91dHB1dCgpIGNvbHVtbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TXR4R3JpZENvbHVtblNlbGVjdGlvbkl0ZW1bXT4oKTtcclxuXHJcbiAgQElucHV0KCkgc2hvd0NvbHVtbk1lbnVIZWFkZXIgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjb2x1bW5NZW51SGVhZGVyVGV4dCA9ICdDb2x1bW5zIEhlYWRlcic7XHJcbiAgQElucHV0KCkgY29sdW1uTWVudUhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBJbnB1dCgpIHNob3dDb2x1bW5NZW51Rm9vdGVyID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY29sdW1uTWVudUZvb3RlclRleHQgPSAnQ29sdW1ucyBGb290ZXInO1xyXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLy8gTm8gUmVzdWx0XHJcblxyXG4gIEBJbnB1dCgpIG5vUmVzdWx0VGV4dCA9ICdObyByZWNvcmRzIGZvdW5kJztcclxuICBASW5wdXQoKSBub1Jlc3VsdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBnZXQgX2hhc05vUmVzdWx0KCkge1xyXG4gICAgcmV0dXJuICghdGhpcy5kYXRhIHx8IHRoaXMuZGF0YS5sZW5ndGggPT09IDApICYmICF0aGlzLmxvYWRpbmc7XHJcbiAgfVxyXG5cclxuICAvLyBDZWxsIHRlbXBsYXRlc1xyXG5cclxuICBASW5wdXQoKSBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IE10eEdyaWRDZWxsVGVtcGxhdGUgfCBhbnk7XHJcbiAgQElucHV0KCkgaGVhZGVyRXh0cmFUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IE10eEdyaWRDZWxsVGVtcGxhdGUgfCBhbnk7XHJcblxyXG4gIEBJbnB1dCgpIGNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IE10eEdyaWRDZWxsVGVtcGxhdGUgfCBhbnk7XHJcblxyXG4gIC8vIFN1bW1hcnlcclxuXHJcbiAgQElucHV0KCkgc2hvd1N1bW1hcnkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzdW1tYXJ5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBNdHhHcmlkQ2VsbFRlbXBsYXRlIHwgYW55O1xyXG5cclxuICAvLyBUT0RPOiBTdW1tYXJ5IGRpc3BsYXkgY29uZGl0aW9uc1xyXG4gIGdldCBfd2hldGhlclNob3dTdW1tYXJ5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hvd1N1bW1hcnk7XHJcbiAgfVxyXG5cclxuICAvLyBTaWRlYmFyXHJcblxyXG4gIEBJbnB1dCgpIHNob3dTaWRlYmFyID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2lkZWJhclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2RhdGFHcmlkU3J2OiBNdHhHcmlkU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge31cclxuXHJcbiAgZGV0ZWN0Q2hhbmdlcygpIHtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIF9pc1RlbXBsYXRlUmVmKG9iajogYW55KSB7XHJcbiAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XHJcbiAgfVxyXG5cclxuICBfaXNPYnNlcnZhYmxlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIGlzT2JzZXJ2YWJsZShkYXRhKTtcclxuICB9XHJcblxyXG4gIF9nZXRDb2xEYXRhKGRhdGE6IGFueVtdLCBjb2xEZWY6IE10eEdyaWRDb2x1bW4pIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhR3JpZFNydi5nZXRDb2xEYXRhKGRhdGEsIGNvbERlZik7XHJcbiAgfVxyXG5cclxuICBfZ2V0Um93Q2xhc3NMaXN0KHJvd0RhdGE6IGFueSwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgY2xhc3NMaXN0OiBhbnkgPSB7XHJcbiAgICAgICdzZWxlY3RlZCc6IHRoaXMucm93U2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93RGF0YSksXHJcbiAgICAgICdtYXQtcm93LW9kZCc6IGluZGV4ICUgMixcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5yb3dDbGFzc0Zvcm1hdHRlcikge1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLnJvd0NsYXNzRm9ybWF0dGVyKSkge1xyXG4gICAgICAgIGNsYXNzTGlzdFtrZXldID0gdGhpcy5yb3dDbGFzc0Zvcm1hdHRlcltrZXldKHJvd0RhdGEsIGluZGV4KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNsYXNzTGlzdDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgLy8gV2FpdGluZyBmb3IgYXN5bmMgZGF0YVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIHRoaXMuX2NvdW50UGlubmVkUG9zaXRpb24oKTtcclxuXHJcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uaGlkZSkubWFwKGl0ZW0gPT4gaXRlbS5maWVsZCk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0NvbHVtbk1lbnVCdXR0b24pIHtcclxuICAgICAgdGhpcy5jb2x1bW5NZW51RGF0YSA9ICh0aGlzLmNvbHVtbnMgYXMgYW55W10pLm1hcChpdGVtID0+IHtcclxuICAgICAgICBjb25zdCBuZXdJdGVtOiBNdHhHcmlkQ29sdW1uU2VsZWN0aW9uSXRlbSA9IHtcclxuICAgICAgICAgIGxhYmVsOiBpdGVtLmhlYWRlcixcclxuICAgICAgICAgIGZpZWxkOiBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGl0ZW0uZGlzYWJsZWQsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAodGhpcy5jb2x1bW5IaWRlYWJsZUNoZWNrZWQgPT09ICdzaG93Jykge1xyXG4gICAgICAgICAgbmV3SXRlbS5zaG93ID0gIWl0ZW0uaGlkZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbmV3SXRlbS5oaWRlID0gaXRlbS5oaWRlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3SXRlbTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucm93U2VsZWN0YWJsZSAmJiAhdGhpcy5oaWRlUm93U2VsZWN0aW9uQ2hlY2tib3gpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnVuc2hpZnQoJ010eEdyaWRDaGVja2JveENvbHVtbkRlZicpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFdlIHNob3VsZCBjb3B5IGVhY2ggaXRlbSBvZiBkYXRhIGZvciBleHBhbnNpb24gZGF0YVxyXG4gICAgaWYgKHRoaXMuZXhwYW5kYWJsZSkge1xyXG4gICAgICB0aGlzLmV4cGFuc2lvblJvd1N0YXRlcyA9IFtdOyAvLyByZXNldFxyXG5cclxuICAgICAgdGhpcy5kYXRhPy5mb3JFYWNoKF8gPT4ge1xyXG4gICAgICAgIHRoaXMuZXhwYW5zaW9uUm93U3RhdGVzLnB1c2goeyBleHBhbmRlZDogZmFsc2UgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJvd1NlbGVjdGFibGUpIHtcclxuICAgICAgdGhpcy5yb3dTZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0aGlzLm11bHRpU2VsZWN0YWJsZSwgdGhpcy5yb3dTZWxlY3RlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSh0aGlzLmRhdGEpO1xyXG5cclxuICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2VPbkZyb250ID8gdGhpcy5wYWdpbmF0b3IgOiBudWxsO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnRPbkZyb250ID8gdGhpcy5zb3J0IDogbnVsbDtcclxuXHJcbiAgICAvLyBPbmx5IHNjcm9sbCB0b3Agd2hlbiBkYXRhIGNoYW5nZVxyXG4gICAgaWYgKGNoYW5nZXMuZGF0YSkge1xyXG4gICAgICB0aGlzLnNjcm9sbFRvcCgwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLnBhZ2VPbkZyb250KSB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zb3J0T25Gcm9udCkge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge31cclxuXHJcbiAgX2NvdW50UGlubmVkUG9zaXRpb24oKSB7XHJcbiAgICBjb25zdCBjb3VudCA9IChhY2M6IG51bWJlciwgY3VyOiBNdHhHcmlkQ29sdW1uKSA9PiBhY2MgKyBwYXJzZUZsb2F0KGN1ci53aWR0aCB8fCAnODBweCcpO1xyXG5cclxuICAgIGNvbnN0IHBpbm5lZExlZnRDb2xzID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2wgPT4gY29sLnBpbm5lZCAmJiBjb2wucGlubmVkID09PSAnbGVmdCcpO1xyXG4gICAgcGlubmVkTGVmdENvbHMuZm9yRWFjaCgoaXRlbSwgaWR4KSA9PiB7XHJcbiAgICAgIGl0ZW0ubGVmdCA9IHBpbm5lZExlZnRDb2xzLnNsaWNlKDAsIGlkeCkucmVkdWNlKGNvdW50LCAwKSArICdweCc7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBwaW5uZWRSaWdodENvbHMgPSB0aGlzLmNvbHVtbnNcclxuICAgICAgLmZpbHRlcihjb2wgPT4gY29sLnBpbm5lZCAmJiBjb2wucGlubmVkID09PSAncmlnaHQnKVxyXG4gICAgICAucmV2ZXJzZSgpO1xyXG4gICAgcGlubmVkUmlnaHRDb2xzLmZvckVhY2goKGl0ZW0sIGlkeCkgPT4ge1xyXG4gICAgICBpdGVtLnJpZ2h0ID0gcGlubmVkUmlnaHRDb2xzLnNsaWNlKDAsIGlkeCkucmVkdWNlKGNvdW50LCAwKSArICdweCc7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIF9nZXRJbmRleChpbmRleDogbnVtYmVyLCBkYXRhSW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHR5cGVvZiBpbmRleCA9PT0gJ3VuZGVmaW5lZCcgPyBkYXRhSW5kZXggOiBpbmRleDtcclxuICB9XHJcblxyXG4gIF9oYW5kbGVTb3J0Q2hhbmdlKHNvcnQ6IFNvcnQpIHtcclxuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEV4cGFuc2lvbiBjaGFuZ2UgZXZlbnQgKi9cclxuICBfaGFuZGxlRXhwYW5zaW9uQ2hhbmdlKFxyXG4gICAgZXhwYW5zaW9uUmVmOiBNdHhHcmlkRXhwYW5zaW9uVG9nZ2xlRGlyZWN0aXZlLFxyXG4gICAgcm93RGF0YTogYW55LFxyXG4gICAgY29sdW1uOiBhbnksXHJcbiAgICBpbmRleDogbnVtYmVyXHJcbiAgKSB7XHJcbiAgICB0aGlzLmV4cGFuc2lvbkNoYW5nZS5lbWl0KHsgZXhwYW5kZWQ6IGV4cGFuc2lvblJlZi5leHBhbmRlZCwgZGF0YTogcm93RGF0YSwgaW5kZXgsIGNvbHVtbiB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBDZWxsIHNlbGVjdCBldmVudCAqL1xyXG4gIF9zZWxlY3RDZWxsKGNlbGxSZWY6IE10eEdyaWRDZWxsU2VsZWN0aW9uRGlyZWN0aXZlLCByb3dEYXRhOiBhbnksIGNvbERlZjogYW55KTogdm9pZCB7XHJcbiAgICAvLyBJZiBub3QgdGhlIHNhbWUgY2VsbFxyXG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkQ2VsbCAhPT0gY2VsbFJlZikge1xyXG4gICAgICBjb25zdCBjb2xWYWx1ZSA9IHRoaXMuX2RhdGFHcmlkU3J2LmdldENlbGxWYWx1ZShyb3dEYXRhLCBjb2xEZWYpO1xyXG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb24gPSBbXTsgLy8gcmVzZXRcclxuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uLnB1c2goeyBjZWxsRGF0YTogY29sVmFsdWUsIHJvd0RhdGEsIGNvbERlZiB9KTtcclxuXHJcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuY2VsbFNlbGVjdGlvbik7XHJcblxyXG4gICAgICBpZiAodGhpcy5fc2VsZWN0ZWRDZWxsKSB7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRDZWxsLmRlc2VsZWN0KCk7IC8vIHRoZSBzZWxlY3RlZENlbGwgd2lsbCBiZSB1bmRlZmluZWRcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3NlbGVjdGVkQ2VsbCA9IGNlbGxSZWYuc2VsZWN0ZWQgPyBjZWxsUmVmIDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJvdyBzZWxlY3QgZXZlbnQgKi9cclxuICBfc2VsZWN0Um93KGV2ZW50OiBNb3VzZUV2ZW50LCByb3dEYXRhOiBhbnksIGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yb3dTZWxlY3RhYmxlICYmXHJcbiAgICAgICF0aGlzLnJvd1NlbGVjdGlvbkZvcm1hdHRlci5kaXNhYmxlZD8uKHJvd0RhdGEsIGluZGV4KSAmJlxyXG4gICAgICAhdGhpcy5yb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuaGlkZUNoZWNrYm94Py4ocm93RGF0YSwgaW5kZXgpXHJcbiAgICApIHtcclxuICAgICAgLy8gbWV0YUtleSAtPiBjb21tYW5kIGtleVxyXG4gICAgICBpZiAoIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXkpIHtcclxuICAgICAgICB0aGlzLnJvd1NlbGVjdGlvbi5jbGVhcigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLl90b2dnbGVOb3JtYWxDaGVja2JveChyb3dEYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJvd0NsaWNrLmVtaXQoeyByb3dEYXRhLCBpbmRleCB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBXaGV0aGVyIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgZWxlbWVudHMgbWF0Y2hlcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MuICovXHJcbiAgX2lzQWxsU2VsZWN0ZWQoKSB7XHJcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMucm93U2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aDtcclxuICAgIGNvbnN0IG51bVJvd3MgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5maWx0ZXIoXHJcbiAgICAgIChyb3csIGluZGV4KSA9PiAhdGhpcy5yb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuZGlzYWJsZWQ/Lihyb3csIGluZGV4KVxyXG4gICAgKS5sZW5ndGg7XHJcbiAgICByZXR1cm4gbnVtU2VsZWN0ZWQgPT09IG51bVJvd3M7XHJcbiAgfVxyXG5cclxuICAvKiogU2VsZWN0IGFsbCByb3dzIGlmIHRoZXkgYXJlIG5vdCBhbGwgc2VsZWN0ZWQ7IG90aGVyd2lzZSBjbGVhciBzZWxlY3Rpb24uICovXHJcbiAgX3RvZ2dsZU1hc3RlckNoZWNrYm94KCkge1xyXG4gICAgdGhpcy5faXNBbGxTZWxlY3RlZCgpXHJcbiAgICAgID8gdGhpcy5yb3dTZWxlY3Rpb24uY2xlYXIoKVxyXG4gICAgICA6IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZvckVhY2goKHJvdywgaW5kZXgpID0+IHtcclxuICAgICAgICAgIGlmICghdGhpcy5yb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuZGlzYWJsZWQ/Lihyb3csIGluZGV4KSkge1xyXG4gICAgICAgICAgICB0aGlzLnJvd1NlbGVjdGlvbi5zZWxlY3Qocm93KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIHRoaXMucm93U2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5yb3dTZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNlbGVjdCBub3JtYWwgcm93ICovXHJcbiAgX3RvZ2dsZU5vcm1hbENoZWNrYm94KHJvdzogYW55KSB7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGlvbi50b2dnbGUocm93KTtcclxuICAgIHRoaXMucm93U2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5yb3dTZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqIENvbHVtbiBjaGFuZ2UgZXZlbnQgKi9cclxuXHJcbiAgX2hhbmRsZUNvbHVtbkNoYW5nZShjb2x1bW5zOiBhbnlbXSkge1xyXG4gICAgdGhpcy5jb2x1bW5DaGFuZ2UuZW1pdChjb2x1bW5zKTtcclxuXHJcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBPYmplY3QuYXNzaWduKFtdLCB0aGlzLmdldERpc3BsYXllZENvbHVtbkZpZWxkcyhjb2x1bW5zKSk7XHJcblxyXG4gICAgaWYgKHRoaXMucm93U2VsZWN0YWJsZSAmJiAhdGhpcy5oaWRlUm93U2VsZWN0aW9uQ2hlY2tib3gpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnVuc2hpZnQoJ010eEdyaWRDaGVja2JveENvbHVtbkRlZicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RGlzcGxheWVkQ29sdW1uRmllbGRzKGNvbHVtbnM6IGFueVtdKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgZmllbGRzID0gY29sdW1uc1xyXG4gICAgICAuZmlsdGVyKChpdGVtOiBNdHhHcmlkQ29sdW1uU2VsZWN0aW9uSXRlbSkgPT5cclxuICAgICAgICB0aGlzLmNvbHVtbkhpZGVhYmxlQ2hlY2tlZCA9PT0gJ3Nob3cnID8gaXRlbS5zaG93IDogIWl0ZW0uaGlkZVxyXG4gICAgICApXHJcbiAgICAgIC5tYXAoKGl0ZW06IE10eEdyaWRDb2x1bW5TZWxlY3Rpb25JdGVtKSA9PiBpdGVtLmZpZWxkKTtcclxuICAgIHJldHVybiBmaWVsZHM7XHJcbiAgfVxyXG5cclxuICAvKiogQ3VzdG9taXplIGV4cGFuc2lvbiBldmVudCAqL1xyXG4gIHRvZ2dsZUV4cGFuc2lvbihpbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAoIXRoaXMuZXhwYW5kYWJsZSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBgZXhwYW5kYWJsZWAgc2hvdWxkIGJlIHNldCB0cnVlLicpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5leHBhbnNpb25Sb3dTdGF0ZXNbaW5kZXhdLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5zaW9uUm93U3RhdGVzW2luZGV4XS5leHBhbmRlZDtcclxuICAgIHJldHVybiB0aGlzLmV4cGFuc2lvblJvd1N0YXRlc1tpbmRleF0uZXhwYW5kZWQ7XHJcbiAgfVxyXG5cclxuICAvKiogU2Nyb2xsIHRvIHRvcCB3aGVuIHR1cm4gdG8gdGhlIG5leHQgcGFnZSAqL1xyXG4gIF9oYW5kbGVQYWdlKGU6IFBhZ2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMucGFnZU9uRnJvbnQpIHtcclxuICAgICAgdGhpcy5zY3JvbGxUb3AoMCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBhZ2UuZW1pdChlKTtcclxuICB9XHJcblxyXG4gIHNjcm9sbFRvcCh2YWx1ZT86IG51bWJlcik6IG51bWJlciB8IHZvaWQge1xyXG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudGFibGVDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudGFibGVDb250YWluZXIgJiYgIXRoaXMubG9hZGluZykge1xyXG4gICAgICB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzY3JvbGxMZWZ0KHZhbHVlPzogbnVtYmVyKTogbnVtYmVyIHwgdm9pZCB7XHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy50YWJsZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudGFibGVDb250YWluZXIgJiYgIXRoaXMubG9hZGluZykge1xyXG4gICAgICB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
739
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL25pdXpvbmdiaW4vUHJvamVjdHMvQG5nLW1hdGVyby9leHRlbnNpb25zL3Byb2plY3RzL2V4dGVuc2lvbnMvZGF0YS1ncmlkLyIsInNvdXJjZXMiOlsiZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFdBQVcsRUFJWCxpQkFBaUIsRUFDakIsVUFBVSxHQUVYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQWEsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQVEsT0FBTyxFQUFpQixNQUFNLHdCQUF3QixDQUFDO0FBYXRFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBcUJwQyxNQUFNLE9BQU8sZ0JBQWdCOzs7OztJQTBJM0IsWUFDVSxZQUE0QixFQUM1QixrQkFBcUM7UUFEckMsaUJBQVksR0FBWixZQUFZLENBQWdCO1FBQzVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUF0SS9DLGVBQVUsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFHN0IsWUFBTyxHQUFvQixFQUFFLENBQUM7UUFDOUIsU0FBSSxHQUFVLEVBQUUsQ0FBQztRQUNqQixXQUFNLEdB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OztJQUdwRCwyQ0FBZ0M7O0lBSWhDLHdDQUFzRTs7SUFFdEUsdUNBQTBCOztJQUMxQix5Q0FBK0I7O0lBQy9CLG9EQUEwQzs7SUFDMUMsaURBQWtFOztJQUNsRSw2Q0FBcUQ7O0lBQ3JELDhDQUF5RDs7SUFJekQseUNBQTBCOztJQUUxQiwwQ0FBK0I7O0lBQy9CLCtDQUEwRDs7Ozs7SUFFMUQseUNBQWlFOztJQUlqRSx1Q0FBNkI7O0lBQzdCLHdDQUEyQjs7SUFDM0IsMkNBQTJDOztJQUkzQywwQ0FBa0Q7O0lBRWxELGdEQUFxQzs7SUFDckMsZ0RBQW1DOztJQUNuQyxnREFBNkQ7O0lBQzdELGlEQUE2Qzs7SUFDN0MsaURBQW9DOztJQUNwQyxnREFBbUM7O0lBRW5DLDBDQUErQjs7SUFDL0IsaURBQXlEOztJQUN6RCx5Q0FBOEI7O0lBQzlCLDBDQUErQjs7SUFDL0Isd0NBQTBFOztJQUUxRSxnREFBc0M7O0lBQ3RDLGdEQUFpRDs7SUFDakQsb0RBQW9EOztJQUNwRCxnREFBc0M7O0lBQ3RDLGdEQUFpRDs7SUFDakQsb0RBQW9EOztJQUlwRCx3Q0FBMkM7O0lBQzNDLDRDQUE0Qzs7SUFRNUMsMENBQXNFOztJQUN0RSwrQ0FBMkU7O0lBRTNFLHdDQUFvRTs7SUFJcEUsdUNBQTZCOztJQUM3QiwyQ0FBdUU7O0lBU3ZFLHVDQUE2Qjs7SUFDN0IsMkNBQTJDOzs7OztJQUd6Qyx3Q0FBb0M7Ozs7O0lBQ3BDLDhDQUE2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIFZpZXdDaGlsZCxcclxuICBPbkNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVHJhY2tCeUZ1bmN0aW9uLFxyXG4gIE9uRGVzdHJveSxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdHJpZ2dlciwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCBhbmltYXRlIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IsIFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IFNvcnQsIE1hdFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuXHJcbmltcG9ydCB7XHJcbiAgTXR4R3JpZENvbHVtbixcclxuICBNdHhHcmlkQ29sdW1uU2VsZWN0aW9uSXRlbSxcclxuICBNdHhHcmlkQ2VsbFRlbXBsYXRlLFxyXG4gIE10eEdyaWRSb3dTZWxlY3Rpb25Gb3JtYXR0ZXIsXHJcbiAgTXR4R3JpZFJvd0NsYXNzRm9ybWF0dGVyLFxyXG4gIE10eEdyaWRDb2x1bW5NZW51LFxyXG4gIE10eEdyaWRCdXR0b25UeXBlLFxyXG59IGZyb20gJy4vZ3JpZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBNdHhHcmlkQ2VsbFNlbGVjdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vY2VsbC1zZWxlY3Rpb24uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTXR4R3JpZEV4cGFuc2lvblRvZ2dsZURpcmVjdGl2ZSB9IGZyb20gJy4vZXhwYW5zaW9uLXRvZ2dsZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNdHhHcmlkU2VydmljZSB9IGZyb20gJy4vZ3JpZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgaXNPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtdHgtZ3JpZCcsXHJcbiAgZXhwb3J0QXM6ICdtdHhHcmlkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAnbXR4LWdyaWQnLFxyXG4gIH0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdleHBhbnNpb24nLCBbXHJcbiAgICAgIHN0YXRlKCdjb2xsYXBzZWQsIHZvaWQnLCBzdHlsZSh7IGhlaWdodDogJzAnLCBtaW5IZWlnaHQ6ICcwJywgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxyXG4gICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IGhlaWdodDogJyonLCB2aXNpYmlsaXR5OiAndmlzaWJsZScgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxyXG4gICAgXSksXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE10eEdyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XHJcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0OiBNYXRTb3J0O1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbk1lbnUnKSBjb2x1bW5NZW51OiBNdHhHcmlkQ29sdW1uTWVudTtcclxuICBAVmlld0NoaWxkKCd0YWJsZUNvbnRhaW5lcicpIHRhYmxlQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UoKTtcclxuXHJcbiAgQElucHV0KCkgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW107XHJcbiAgQElucHV0KCkgY29sdW1uczogTXR4R3JpZENvbHVtbltdID0gW107XHJcbiAgQElucHV0KCkgZGF0YTogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBsZW5ndGggPSAwO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgdHJhY2tCeTogVHJhY2tCeUZ1bmN0aW9uPGFueT47XHJcblxyXG4gIEBJbnB1dCgpIGNvbHVtblJlc2l6YWJsZSA9IGZhbHNlO1xyXG5cclxuICAvLyBQYWdlXHJcblxyXG4gIEBJbnB1dCgpIHBhZ2VPbkZyb250ID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93UGFnaW5hdG9yID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwYWdlRGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93Rmlyc3RMYXN0QnV0dG9ucyA9IHRydWU7XHJcbiAgQElucHV0KCkgcGFnZUluZGV4ID0gMDtcclxuICBASW5wdXQoKSBwYWdlU2l6ZSA9IDEwO1xyXG4gIEBJbnB1dCgpIHBhZ2VTaXplT3B0aW9ucyA9IFsxMCwgNTAsIDEwMF07XHJcbiAgQElucHV0KCkgaGlkZVBhZ2VTaXplID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIHBhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4oKTtcclxuXHJcbiAgLy8gU29ydFxyXG5cclxuICBASW5wdXQoKSBzb3J0T25Gcm9udCA9IHRydWU7XHJcbiAgQElucHV0KCkgc29ydEFjdGl2ZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XHJcbiAgQElucHV0KCkgc29ydERpc2FibGVDbGVhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNvcnREaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNvcnRTdGFydDogJ2FzYycgfCAnZGVzYycgPSAnYXNjJztcclxuICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydD4oKTtcclxuXHJcbiAgLy8gUm93XHJcblxyXG4gIEBJbnB1dCgpIHJvd0hvdmVyID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcm93U3RyaXBlZCA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSByb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAvLyBFeHBhbnNpb25cclxuXHJcbiAgZXhwYW5zaW9uUm93U3RhdGVzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBleHBhbmRhYmxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZXhwYW5zaW9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQE91dHB1dCgpIGV4cGFuc2lvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAvKiogV2hldGhlciBzdXBwb3J0IG11bHRpcGxlIHJvdy9jZWxsIHNlbGVjdGlvbiAqL1xyXG4gIEBJbnB1dCgpIG11bHRpU2VsZWN0YWJsZSA9IHRydWU7XHJcblxyXG4gIC8vIFJvdyBzZWxlY3Rpb25cclxuXHJcbiAgcm93U2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxhbnk+ID0gbmV3IFNlbGVjdGlvbk1vZGVsPGFueT4odHJ1ZSwgW10pO1xyXG5cclxuICBASW5wdXQoKSByb3dTZWxlY3RlZCA9IFtdO1xyXG4gIEBJbnB1dCgpIHJvd1NlbGVjdGFibGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBoaWRlUm93U2VsZWN0aW9uQ2hlY2tib3ggPSBmYWxzZTtcclxuICBASW5wdXQoKSByb3dTZWxlY3Rpb25Gb3JtYXR0ZXI6IE10eEdyaWRSb3dTZWxlY3Rpb25Gb3JtYXR0ZXIgPSB7fTtcclxuICBASW5wdXQoKSByb3dDbGFzc0Zvcm1hdHRlcjogTXR4R3JpZFJvd0NsYXNzRm9ybWF0dGVyO1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xyXG5cclxuICAvLyBDZWxsIHNlbGVjdGlvblxyXG5cclxuICBjZWxsU2VsZWN0aW9uOiBhbnlbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBjZWxsU2VsZWN0YWJsZSA9IHRydWU7XHJcbiAgQE91dHB1dCgpIGNlbGxTZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xyXG5cclxuICBwcml2YXRlIF9zZWxlY3RlZENlbGw6IE10eEdyaWRDZWxsU2VsZWN0aW9uRGlyZWN0aXZlIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvLyBUb29sYmFyXHJcblxyXG4gIEBJbnB1dCgpIHNob3dUb29sYmFyID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdG9vbGJhclRpdGxlID0gJyc7XHJcbiAgQElucHV0KCkgdG9vbGJhclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvLyBDb2x1bW4gbWVudVxyXG5cclxuICBjb2x1bW5NZW51RGF0YTogTXR4R3JpZENvbHVtblNlbGVjdGlvbkl0ZW1bXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBzaG93Q29sdW1uTWVudUJ1dHRvbiA9IHRydWU7XHJcbiAgQElucHV0KCkgY29sdW1uTWVudUJ1dHRvblRleHQgPSAnJztcclxuICBASW5wdXQoKSBjb2x1bW5NZW51QnV0dG9uVHlwZTogTXR4R3JpZEJ1dHRvblR5cGUgPSAnc3Ryb2tlZCc7XHJcbiAgQElucHV0KCkgY29sdW1uTWVudUJ1dHRvbkNvbG9yOiBUaGVtZVBhbGV0dGU7XHJcbiAgQElucHV0KCkgY29sdW1uTWVudUJ1dHRvbkNsYXNzID0gJyc7XHJcbiAgQElucHV0KCkgY29sdW1uTWVudUJ1dHRvbkljb24gPSAnJztcclxuXHJcbiAgQElucHV0KCkgY29sdW1uSGlkZWFibGUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGNvbHVtbkhpZGVhYmxlQ2hlY2tlZDogJ3Nob3cnIHwgJ2hpZGUnID0gJ3Nob3cnO1xyXG4gIEBJbnB1dCgpIGNvbHVtbk1vdmFibGUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGNvbHVtblBpbm5hYmxlID0gdHJ1ZTtcclxuICBAT3V0cHV0KCkgY29sdW1uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdHhHcmlkQ29sdW1uU2VsZWN0aW9uSXRlbVtdPigpO1xyXG5cclxuICBASW5wdXQoKSBzaG93Q29sdW1uTWVudUhlYWRlciA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVIZWFkZXJUZXh0ID0gJ0NvbHVtbnMgSGVhZGVyJztcclxuICBASW5wdXQoKSBjb2x1bW5NZW51SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgc2hvd0NvbHVtbk1lbnVGb290ZXIgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjb2x1bW5NZW51Rm9vdGVyVGV4dCA9ICdDb2x1bW5zIEZvb3Rlcic7XHJcbiAgQElucHV0KCkgY29sdW1uTWVudUZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvLyBObyBSZXN1bHRcclxuXHJcbiAgQElucHV0KCkgbm9SZXN1bHRUZXh0ID0gJ05vIHJlY29yZHMgZm91bmQnO1xyXG4gIEBJbnB1dCgpIG5vUmVzdWx0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIGdldCBfaGFzTm9SZXN1bHQoKSB7XHJcbiAgICByZXR1cm4gKCF0aGlzLmRhdGEgfHwgdGhpcy5kYXRhLmxlbmd0aCA9PT0gMCkgJiYgIXRoaXMubG9hZGluZztcclxuICB9XHJcblxyXG4gIC8vIENlbGwgdGVtcGxhdGVzXHJcblxyXG4gIEBJbnB1dCgpIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgTXR4R3JpZENlbGxUZW1wbGF0ZSB8IGFueTtcclxuICBASW5wdXQoKSBoZWFkZXJFeHRyYVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgTXR4R3JpZENlbGxUZW1wbGF0ZSB8IGFueTtcclxuXHJcbiAgQElucHV0KCkgY2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgTXR4R3JpZENlbGxUZW1wbGF0ZSB8IGFueTtcclxuXHJcbiAgLy8gU3VtbWFyeVxyXG5cclxuICBASW5wdXQoKSBzaG93U3VtbWFyeSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHN1bW1hcnlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IE10eEdyaWRDZWxsVGVtcGxhdGUgfCBhbnk7XHJcblxyXG4gIC8vIFRPRE86IFN1bW1hcnkgZGlzcGxheSBjb25kaXRpb25zXHJcbiAgZ2V0IF93aGV0aGVyU2hvd1N1bW1hcnkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaG93U3VtbWFyeTtcclxuICB9XHJcblxyXG4gIC8vIFNpZGViYXJcclxuXHJcbiAgQElucHV0KCkgc2hvd1NpZGViYXIgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaWRlYmFyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZGF0YUdyaWRTcnY6IE10eEdyaWRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7fVxyXG5cclxuICBkZXRlY3RDaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgX2lzVGVtcGxhdGVSZWYob2JqOiBhbnkpIHtcclxuICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcclxuICB9XHJcblxyXG4gIF9pc09ic2VydmFibGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gaXNPYnNlcnZhYmxlKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgX2dldENvbERhdGEoZGF0YTogYW55W10sIGNvbERlZjogTXR4R3JpZENvbHVtbikge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGFHcmlkU3J2LmdldENvbERhdGEoZGF0YSwgY29sRGVmKTtcclxuICB9XHJcblxyXG4gIF9nZXRSb3dDbGFzc0xpc3Qocm93RGF0YTogYW55LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBjbGFzc0xpc3Q6IGFueSA9IHtcclxuICAgICAgJ3NlbGVjdGVkJzogdGhpcy5yb3dTZWxlY3Rpb24uaXNTZWxlY3RlZChyb3dEYXRhKSxcclxuICAgICAgJ21hdC1yb3ctb2RkJzogaW5kZXggJSAyLFxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLnJvd0NsYXNzRm9ybWF0dGVyKSB7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMucm93Q2xhc3NGb3JtYXR0ZXIpKSB7XHJcbiAgICAgICAgY2xhc3NMaXN0W2tleV0gPSB0aGlzLnJvd0NsYXNzRm9ybWF0dGVyW2tleV0ocm93RGF0YSwgaW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2xhc3NMaXN0O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7fVxyXG5cclxuICAvLyBXYWl0aW5nIGZvciBhc3luYyBkYXRhXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgdGhpcy5fY291bnRQaW5uZWRQb3NpdGlvbigpO1xyXG5cclxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5oaWRlKS5tYXAoaXRlbSA9PiBpdGVtLmZpZWxkKTtcclxuXHJcbiAgICBpZiAodGhpcy5zaG93Q29sdW1uTWVudUJ1dHRvbikge1xyXG4gICAgICB0aGlzLmNvbHVtbk1lbnVEYXRhID0gKHRoaXMuY29sdW1ucyBhcyBhbnlbXSkubWFwKGl0ZW0gPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0l0ZW06IE10eEdyaWRDb2x1bW5TZWxlY3Rpb25JdGVtID0ge1xyXG4gICAgICAgICAgbGFiZWw6IGl0ZW0uaGVhZGVyLFxyXG4gICAgICAgICAgZmllbGQ6IGl0ZW0uZmllbGQsXHJcbiAgICAgICAgICBkaXNhYmxlZDogaXRlbS5kaXNhYmxlZCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICh0aGlzLmNvbHVtbkhpZGVhYmxlQ2hlY2tlZCA9PT0gJ3Nob3cnKSB7XHJcbiAgICAgICAgICBuZXdJdGVtLnNob3cgPSAhaXRlbS5oaWRlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBuZXdJdGVtLmhpZGUgPSBpdGVtLmhpZGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXdJdGVtO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yb3dTZWxlY3RhYmxlICYmICF0aGlzLmhpZGVSb3dTZWxlY3Rpb25DaGVja2JveCkge1xyXG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMudW5zaGlmdCgnTXR4R3JpZENoZWNrYm94Q29sdW1uRGVmJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gV2Ugc2hvdWxkIGNvcHkgZWFjaCBpdGVtIG9mIGRhdGEgZm9yIGV4cGFuc2lvbiBkYXRhXHJcbiAgICBpZiAodGhpcy5leHBhbmRhYmxlKSB7XHJcbiAgICAgIHRoaXMuZXhwYW5zaW9uUm93U3RhdGVzID0gW107IC8vIHJlc2V0XHJcblxyXG4gICAgICB0aGlzLmRhdGE/LmZvckVhY2goXyA9PiB7XHJcbiAgICAgICAgdGhpcy5leHBhbnNpb25Sb3dTdGF0ZXMucHVzaCh7IGV4cGFuZGVkOiBmYWxzZSB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucm93U2VsZWN0YWJsZSkge1xyXG4gICAgICB0aGlzLnJvd1NlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRoaXMubXVsdGlTZWxlY3RhYmxlLCB0aGlzLnJvd1NlbGVjdGVkKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKHRoaXMuZGF0YSk7XHJcblxyXG4gICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnZU9uRnJvbnQgPyB0aGlzLnBhZ2luYXRvciA6IG51bGw7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydE9uRnJvbnQgPyB0aGlzLnNvcnQgOiBudWxsO1xyXG5cclxuICAgIC8vIE9ubHkgc2Nyb2xsIHRvcCB3aGVuIGRhdGEgY2hhbmdlXHJcbiAgICBpZiAoY2hhbmdlcy5kYXRhKSB7XHJcbiAgICAgIHRoaXMuc2Nyb2xsVG9wKDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMucGFnZU9uRnJvbnQpIHtcclxuICAgICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNvcnRPbkZyb250KSB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7fVxyXG5cclxuICBfY291bnRQaW5uZWRQb3NpdGlvbigpIHtcclxuICAgIGNvbnN0IGNvdW50ID0gKGFjYzogbnVtYmVyLCBjdXI6IE10eEdyaWRDb2x1bW4pID0+IGFjYyArIHBhcnNlRmxvYXQoY3VyLndpZHRoIHx8ICc4MHB4Jyk7XHJcblxyXG4gICAgY29uc3QgcGlubmVkTGVmdENvbHMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wucGlubmVkICYmIGNvbC5waW5uZWQgPT09ICdsZWZ0Jyk7XHJcbiAgICBwaW5uZWRMZWZ0Q29scy5mb3JFYWNoKChpdGVtLCBpZHgpID0+IHtcclxuICAgICAgaXRlbS5sZWZ0ID0gcGlubmVkTGVmdENvbHMuc2xpY2UoMCwgaWR4KS5yZWR1Y2UoY291bnQsIDApICsgJ3B4JztcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHBpbm5lZFJpZ2h0Q29scyA9IHRoaXMuY29sdW1uc1xyXG4gICAgICAuZmlsdGVyKGNvbCA9PiBjb2wucGlubmVkICYmIGNvbC5waW5uZWQgPT09ICdyaWdodCcpXHJcbiAgICAgIC5yZXZlcnNlKCk7XHJcbiAgICBwaW5uZWRSaWdodENvbHMuZm9yRWFjaCgoaXRlbSwgaWR4KSA9PiB7XHJcbiAgICAgIGl0ZW0ucmlnaHQgPSBwaW5uZWRSaWdodENvbHMuc2xpY2UoMCwgaWR4KS5yZWR1Y2UoY291bnQsIDApICsgJ3B4JztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgX2dldEluZGV4KGluZGV4OiBudW1iZXIsIGRhdGFJbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIGluZGV4ID09PSAndW5kZWZpbmVkJyA/IGRhdGFJbmRleCA6IGluZGV4O1xyXG4gIH1cclxuXHJcbiAgX2hhbmRsZVNvcnRDaGFuZ2Uoc29ydDogU29ydCkge1xyXG4gICAgdGhpcy5zb3J0Q2hhbmdlLmVtaXQoc29ydCk7XHJcbiAgfVxyXG5cclxuICAvKiogRXhwYW5zaW9uIGNoYW5nZSBldmVudCAqL1xyXG4gIF9oYW5kbGVFeHBhbnNpb25DaGFuZ2UoXHJcbiAgICBleHBhbnNpb25SZWY6IE10eEdyaWRFeHBhbnNpb25Ub2dnbGVEaXJlY3RpdmUsXHJcbiAgICByb3dEYXRhOiBhbnksXHJcbiAgICBjb2x1bW46IGFueSxcclxuICAgIGluZGV4OiBudW1iZXJcclxuICApIHtcclxuICAgIHRoaXMuZXhwYW5zaW9uQ2hhbmdlLmVtaXQoeyBleHBhbmRlZDogZXhwYW5zaW9uUmVmLmV4cGFuZGVkLCBkYXRhOiByb3dEYXRhLCBpbmRleCwgY29sdW1uIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIENlbGwgc2VsZWN0IGV2ZW50ICovXHJcbiAgX3NlbGVjdENlbGwoY2VsbFJlZjogTXR4R3JpZENlbGxTZWxlY3Rpb25EaXJlY3RpdmUsIHJvd0RhdGE6IGFueSwgY29sRGVmOiBhbnkpOiB2b2lkIHtcclxuICAgIC8vIElmIG5vdCB0aGUgc2FtZSBjZWxsXHJcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRDZWxsICE9PSBjZWxsUmVmKSB7XHJcbiAgICAgIGNvbnN0IGNvbFZhbHVlID0gdGhpcy5fZGF0YUdyaWRTcnYuZ2V0Q2VsbFZhbHVlKHJvd0RhdGEsIGNvbERlZik7XHJcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvbiA9IFtdOyAvLyByZXNldFxyXG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb24ucHVzaCh7IGNlbGxEYXRhOiBjb2xWYWx1ZSwgcm93RGF0YSwgY29sRGVmIH0pO1xyXG5cclxuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5jZWxsU2VsZWN0aW9uKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLl9zZWxlY3RlZENlbGwpIHtcclxuICAgICAgICB0aGlzLl9zZWxlY3RlZENlbGwuZGVzZWxlY3QoKTsgLy8gdGhlIHNlbGVjdGVkQ2VsbCB3aWxsIGJlIHVuZGVmaW5lZFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fc2VsZWN0ZWRDZWxsID0gY2VsbFJlZi5zZWxlY3RlZCA/IGNlbGxSZWYgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvKiogUm93IHNlbGVjdCBldmVudCAqL1xyXG4gIF9zZWxlY3RSb3coZXZlbnQ6IE1vdXNlRXZlbnQsIHJvd0RhdGE6IGFueSwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJvd1NlbGVjdGFibGUgJiZcclxuICAgICAgIXRoaXMucm93U2VsZWN0aW9uRm9ybWF0dGVyLmRpc2FibGVkPy4ocm93RGF0YSwgaW5kZXgpICYmXHJcbiAgICAgICF0aGlzLnJvd1NlbGVjdGlvbkZvcm1hdHRlci5oaWRlQ2hlY2tib3g/Lihyb3dEYXRhLCBpbmRleClcclxuICAgICkge1xyXG4gICAgICAvLyBtZXRhS2V5IC0+IGNvbW1hbmQga2V5XHJcbiAgICAgIGlmICghZXZlbnQuY3RybEtleSAmJiAhZXZlbnQubWV0YUtleSkge1xyXG4gICAgICAgIHRoaXMucm93U2VsZWN0aW9uLmNsZWFyKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuX3RvZ2dsZU5vcm1hbENoZWNrYm94KHJvd0RhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucm93Q2xpY2suZW1pdCh7IHJvd0RhdGEsIGluZGV4IH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFdoZXRoZXIgdGhlIG51bWJlciBvZiBzZWxlY3RlZCBlbGVtZW50cyBtYXRjaGVzIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cy4gKi9cclxuICBfaXNBbGxTZWxlY3RlZCgpIHtcclxuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5yb3dTZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoO1xyXG4gICAgY29uc3QgbnVtUm93cyA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZpbHRlcihcclxuICAgICAgKHJvdywgaW5kZXgpID0+ICF0aGlzLnJvd1NlbGVjdGlvbkZvcm1hdHRlci5kaXNhYmxlZD8uKHJvdywgaW5kZXgpXHJcbiAgICApLmxlbmd0aDtcclxuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcclxuICB9XHJcblxyXG4gIC8qKiBTZWxlY3QgYWxsIHJvd3MgaWYgdGhleSBhcmUgbm90IGFsbCBzZWxlY3RlZDsgb3RoZXJ3aXNlIGNsZWFyIHNlbGVjdGlvbi4gKi9cclxuICBfdG9nZ2xlTWFzdGVyQ2hlY2tib3goKSB7XHJcbiAgICB0aGlzLl9pc0FsbFNlbGVjdGVkKClcclxuICAgICAgPyB0aGlzLnJvd1NlbGVjdGlvbi5jbGVhcigpXHJcbiAgICAgIDogdGhpcy5kYXRhU291cmNlLmRhdGEuZm9yRWFjaCgocm93LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLnJvd1NlbGVjdGlvbkZvcm1hdHRlci5kaXNhYmxlZD8uKHJvdywgaW5kZXgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm93U2VsZWN0aW9uLnNlbGVjdChyb3cpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgdGhpcy5yb3dTZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnJvd1NlbGVjdGlvbi5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICAvKiogU2VsZWN0IG5vcm1hbCByb3cgKi9cclxuICBfdG9nZ2xlTm9ybWFsQ2hlY2tib3gocm93OiBhbnkpIHtcclxuICAgIHRoaXMucm93U2VsZWN0aW9uLnRvZ2dsZShyb3cpO1xyXG4gICAgdGhpcy5yb3dTZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnJvd1NlbGVjdGlvbi5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICAvKiogQ29sdW1uIGNoYW5nZSBldmVudCAqL1xyXG5cclxuICBfaGFuZGxlQ29sdW1uQ2hhbmdlKGNvbHVtbnM6IGFueVtdKSB7XHJcbiAgICB0aGlzLmNvbHVtbkNoYW5nZS5lbWl0KGNvbHVtbnMpO1xyXG5cclxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMuZ2V0RGlzcGxheWVkQ29sdW1uRmllbGRzKGNvbHVtbnMpKTtcclxuXHJcbiAgICBpZiAodGhpcy5yb3dTZWxlY3RhYmxlICYmICF0aGlzLmhpZGVSb3dTZWxlY3Rpb25DaGVja2JveCkge1xyXG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMudW5zaGlmdCgnTXR4R3JpZENoZWNrYm94Q29sdW1uRGVmJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREaXNwbGF5ZWRDb2x1bW5GaWVsZHMoY29sdW1uczogYW55W10pOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBmaWVsZHMgPSBjb2x1bW5zXHJcbiAgICAgIC5maWx0ZXIoKGl0ZW06IE10eEdyaWRDb2x1bW5TZWxlY3Rpb25JdGVtKSA9PlxyXG4gICAgICAgIHRoaXMuY29sdW1uSGlkZWFibGVDaGVja2VkID09PSAnc2hvdycgPyBpdGVtLnNob3cgOiAhaXRlbS5oaWRlXHJcbiAgICAgIClcclxuICAgICAgLm1hcCgoaXRlbTogTXR4R3JpZENvbHVtblNlbGVjdGlvbkl0ZW0pID0+IGl0ZW0uZmllbGQpO1xyXG4gICAgcmV0dXJuIGZpZWxkcztcclxuICB9XHJcblxyXG4gIC8qKiBDdXN0b21pemUgZXhwYW5zaW9uIGV2ZW50ICovXHJcbiAgdG9nZ2xlRXhwYW5zaW9uKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmICghdGhpcy5leHBhbmRhYmxlKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGBleHBhbmRhYmxlYCBzaG91bGQgYmUgc2V0IHRydWUuJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cGFuc2lvblJvd1N0YXRlc1tpbmRleF0uZXhwYW5kZWQgPSAhdGhpcy5leHBhbnNpb25Sb3dTdGF0ZXNbaW5kZXhdLmV4cGFuZGVkO1xyXG4gICAgcmV0dXJuIHRoaXMuZXhwYW5zaW9uUm93U3RhdGVzW2luZGV4XS5leHBhbmRlZDtcclxuICB9XHJcblxyXG4gIC8qKiBTY3JvbGwgdG8gdG9wIHdoZW4gdHVybiB0byB0aGUgbmV4dCBwYWdlICovXHJcbiAgX2hhbmRsZVBhZ2UoZTogUGFnZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5wYWdlT25Gcm9udCkge1xyXG4gICAgICB0aGlzLnNjcm9sbFRvcCgwKTtcclxuICAgIH1cclxuICAgIHRoaXMucGFnZS5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9wKHZhbHVlPzogbnVtYmVyKTogbnVtYmVyIHwgdm9pZCB7XHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy50YWJsZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50YWJsZUNvbnRhaW5lciAmJiAhdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNjcm9sbExlZnQodmFsdWU/OiBudW1iZXIpOiBudW1iZXIgfCB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRhYmxlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50YWJsZUNvbnRhaW5lciAmJiAhdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -389,8 +389,13 @@ export class MtxPopover {
389
389
  */
390
390
  onMouseLeave() {
391
391
  if (this.triggerEvent === 'hover') {
392
- this.closeDisabled = false;
393
- this._emitCloseEvent();
392
+ setTimeout((/**
393
+ * @return {?}
394
+ */
395
+ () => {
396
+ this.closeDisabled = false;
397
+ this._emitCloseEvent();
398
+ }), this.leaveDelay);
394
399
  }
395
400
  }
396
401
  // TODO: Refactor how styles are set and updated on the component, use best practices.
@@ -607,4 +612,4 @@ if (false) {
607
612
  /** @type {?} */
608
613
  MtxPopover.prototype.zone;
609
614
  }
610
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvbml1em9uZ2Jpbi9Qcm9qZWN0cy9AbmctbWF0ZXJvL2V4dGVuc2lvbnMvcHJvamVjdHMvZXh0ZW5zaW9ucy9wb3BvdmVyLyIsInNvdXJjZXMiOlsicG9wb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLHVCQUF1QixFQUN2QixXQUFXLEVBQ1gsTUFBTSxFQUNOLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBUW5ELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBV3hELE1BQU0sT0FBTyxVQUFVOzs7Ozs7SUEwT3JCLFlBQ3NCLElBQW9CLEVBQ2hDLFdBQXVCLEVBQ3hCLElBQVk7UUFGQyxTQUFJLEdBQUosSUFBSSxDQUFnQjtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFRO1FBNU9LLFNBQUksR0FBRyxRQUFRLENBQUM7Ozs7UUFHbEMsZUFBVSxHQUF3QixPQUFPLENBQUM7UUFDMUMsZUFBVSxHQUF3QixPQUFPLENBQUM7UUFDMUMsa0JBQWEsR0FBMkIsT0FBTyxDQUFDO1FBQ2hELG9CQUFlLEdBQTZCLFlBQVksQ0FBQztRQUN6RCxnQkFBVyxHQUFHLEdBQUcsQ0FBQztRQUNsQixnQkFBVyxHQUFHLEdB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Q3ZCOzs7O1lBcEJRLGNBQWMsdUJBZ1FsQixRQUFRO1lBelFYLFVBQVU7WUFHVixNQUFNOzs7bUJBNEJMLFdBQVcsU0FBQyxXQUFXO3dCQTJDdkIsS0FBSzt3QkFhTCxLQUFLOzJCQWFMLEtBQUs7NkJBU0wsS0FBSzt5QkFTTCxLQUFLO3lCQVNMLEtBQUs7NkJBU0wsS0FBSztzQkFTTCxLQUFLO3NCQVNMLEtBQUs7MkJBU0wsS0FBSzt5QkFTTCxLQUFLO2dDQVNMLEtBQUs7bUNBU0wsS0FBSzsrQkFTTCxLQUFLOytCQVNMLEtBQUs7MENBU0wsS0FBSzt5QkFjTCxLQUFLLFNBQUMsT0FBTzt3QkFvQmIsS0FBSztxQkFTTCxNQUFNOzBCQUVOLFNBQVMsU0FBQyxXQUFXOzs7O0lBdk90QiwwQkFBMEM7Ozs7OztJQUcxQyxnQ0FBa0Q7Ozs7O0lBQ2xELGdDQUFrRDs7Ozs7SUFDbEQsbUNBQXdEOzs7OztJQUN4RCxxQ0FBaUU7Ozs7O0lBQ2pFLGlDQUEwQjs7Ozs7SUFDMUIsaUNBQTBCOzs7OztJQUMxQixxQ0FBZ0M7Ozs7O0lBQ2hDLHVDQUFrQzs7Ozs7SUFDbEMsbUNBQTBCOzs7OztJQUMxQixtQ0FBMEI7Ozs7O0lBQzFCLHdDQUFtQzs7Ozs7SUFDbkMsMkNBQXFDOzs7OztJQUNyQyx1Q0FBaUM7Ozs7O0lBQ2pDLGtEQUE0Qzs7Ozs7SUFDNUMsbUNBQTJCOzs7OztJQUMzQixpQ0FBeUI7Ozs7O0lBR3pCLGdDQUE0Qzs7Ozs7SUFJNUMsMENBQW9DOzs7OztJQUdwQyxtQ0FBNkI7Ozs7O0lBRzdCLHdDQUE4Qjs7Ozs7SUFHOUIsd0NBQThCOzs7OztJQUc5QiwwQ0FBZ0M7Ozs7O0lBR2hDLDZDQUE2RDs7Ozs7SUE2TDdELDRCQUE0Qzs7SUFFNUMsaUNBQXNEOzs7OztJQUdwRCwwQkFBd0M7Ozs7O0lBQ3hDLGlDQUErQjs7SUFDL0IsMEJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgTmdab25lLFxyXG4gIE9wdGlvbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBbmltYXRpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBFU0NBUEUgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuXHJcbmltcG9ydCB7XHJcbiAgTXR4UG9wb3ZlclBvc2l0aW9uWCxcclxuICBNdHhQb3BvdmVyUG9zaXRpb25ZLFxyXG4gIE10eFBvcG92ZXJUcmlnZ2VyRXZlbnQsXHJcbiAgTXR4UG9wb3ZlclNjcm9sbFN0cmF0ZWd5LFxyXG59IGZyb20gJy4vcG9wb3Zlci10eXBlcyc7XHJcbmltcG9ydCB7IHRocm93TXR4UG9wb3ZlckludmFsaWRQb3NpdGlvblgsIHRocm93TXR4UG9wb3ZlckludmFsaWRQb3NpdGlvblkgfSBmcm9tICcuL3BvcG92ZXItZXJyb3JzJztcclxuaW1wb3J0IHsgTXR4UG9wb3ZlclBhbmVsIH0gZnJvbSAnLi9wb3BvdmVyLWludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyB0cmFuc2Zvcm1Qb3BvdmVyIH0gZnJvbSAnLi9wb3BvdmVyLWFuaW1hdGlvbnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtdHgtcG9wb3ZlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXIuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcG9wb3Zlci5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBhbmltYXRpb25zOiBbdHJhbnNmb3JtUG9wb3Zlcl0sXHJcbiAgZXhwb3J0QXM6ICdtdHhQb3BvdmVyJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE10eFBvcG92ZXIgaW1wbGVtZW50cyBNdHhQb3BvdmVyUGFuZWwsIE9uRGVzdHJveSB7XHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKSByb2xlID0gJ2RpYWxvZyc7XHJcblxyXG4gIC8qKiBTZXR0aW5ncyBmb3IgcG9wb3ZlciwgdmlldyBzZXR0ZXJzIGFuZCBnZXR0ZXJzIGZvciBtb3JlIGRldGFpbCAqL1xyXG4gIHByaXZhdGUgX3hQb3NpdGlvbjogTXR4UG9wb3ZlclBvc2l0aW9uWCA9ICdhZnRlcic7XHJcbiAgcHJpdmF0ZSBfeVBvc2l0aW9uOiBNdHhQb3BvdmVyUG9zaXRpb25ZID0gJ2JlbG93JztcclxuICBwcml2YXRlIF90cmlnZ2VyRXZlbnQ6IE10eFBvcG92ZXJUcmlnZ2VyRXZlbnQgPSAnaG92ZXInO1xyXG4gIHByaXZhdGUgX3Njcm9sbFN0cmF0ZWd5OiBNdHhQb3BvdmVyU2Nyb2xsU3RyYXRlZ3kgPSAncmVwb3NpdGlvbic7XHJcbiAgcHJpdmF0ZSBfZW50ZXJEZWxheSA9IDEwMDtcclxuICBwcml2YXRlIF9sZWF2ZURlbGF5ID0gMTAwO1xyXG4gIHByaXZhdGUgX292ZXJsYXBUcmlnZ2VyID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZGlzYWJsZUFuaW1hdGlvbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3BhbmVsT2Zmc2V0WCA9IDA7XHJcbiAgcHJpdmF0ZSBfcGFuZWxPZmZzZXRZID0gMDtcclxuICBwcml2YXRlIF9jbG9zZU9uUGFuZWxDbGljayA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gdHJ1ZTtcclxuICBwcml2YXRlIF9mb2N1c1RyYXBFbmFibGVkID0gdHJ1ZTtcclxuICBwcml2YXRlIF9mb2N1c1RyYXBBdXRvQ2FwdHVyZUVuYWJsZWQgPSB0cnVlO1xyXG4gIHByaXZhdGUgX2Fycm93T2Zmc2V0WCA9IDIwO1xyXG4gIHByaXZhdGUgX2Fycm93V2lkdGggPSAxNjtcclxuXHJcbiAgLyoqIENvbmZpZyBvYmplY3QgdG8gYmUgcGFzc2VkIGludG8gdGhlIHBvcG92ZXIncyBuZ0NsYXNzICovXHJcbiAgX2NsYXNzTGlzdDogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcclxuXHJcbiAgLy8gVE9ETzogV3JpdGUgY29tbWVudCBkZXNjcmlwdGlvblxyXG4gIC8qKiAqL1xyXG4gIHB1YmxpYyBjb250YWluZXJQb3NpdGlvbmluZyA9IGZhbHNlO1xyXG5cclxuICAvKiogQ2xvc2luZyBkaXNhYmxlZCBvbiBwb3BvdmVyICovXHJcbiAgcHVibGljIGNsb3NlRGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgLyoqIENvbmZpZyBvYmplY3QgdG8gYmUgcGFzc2VkIGludG8gdGhlIHBvcG92ZXIncyBhcnJvdyBuZ1N0eWxlICovXHJcbiAgcHVibGljIHBvcG92ZXJQYW5lbFN0eWxlczoge307XHJcblxyXG4gIC8qKiBDb25maWcgb2JqZWN0IHRvIGJlIHBhc3NlZCBpbnRvIHRoZSBwb3BvdmVyJ3MgYXJyb3cgbmdTdHlsZSAqL1xyXG4gIHB1YmxpYyBwb3BvdmVyQXJyb3dTdHlsZXM6IHt9O1xyXG5cclxuICAvKiogQ29uZmlnIG9iamVjdCB0byBiZSBwYXNzZWQgaW50byB0aGUgcG9wb3ZlcidzIGNvbnRlbnQgbmdTdHlsZSAqL1xyXG4gIHB1YmxpYyBwb3BvdmVyQ29udGVudFN0eWxlczoge307XHJcblxyXG4gIC8qKiBFbWl0cyB0aGUgY3VycmVudCBhbmltYXRpb24gc3RhdGUgd2hlbmV2ZXIgaXQgY2hhbmdlcy4gKi9cclxuICBfb25BbmltYXRpb25TdGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QW5pbWF0aW9uRXZlbnQ+KCk7XHJcblxyXG4gIC8qKiBQb3NpdGlvbiBvZiB0aGUgcG9wb3ZlciBpbiB0aGUgWCBheGlzLiAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHhQb3NpdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLl94UG9zaXRpb247XHJcbiAgfVxyXG4gIHNldCB4UG9zaXRpb24odmFsdWU6IE10eFBvcG92ZXJQb3NpdGlvblgpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gJ2JlZm9yZScgJiYgdmFsdWUgIT09ICdhZnRlcicgJiYgdmFsdWUgIT09ICdjZW50ZXInKSB7XHJcbiAgICAgIHRocm93TXR4UG9wb3ZlckludmFsaWRQb3NpdGlvblgoKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3hQb3NpdGlvbiA9IHZhbHVlO1xyXG4gICAgdGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKiBQb3NpdGlvbiBvZiB0aGUgcG9wb3ZlciBpbiB0aGUgWSBheGlzLiAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHlQb3NpdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLl95UG9zaXRpb247XHJcbiAgfVxyXG4gIHNldCB5UG9zaXRpb24odmFsdWU6IE10eFBvcG92ZXJQb3NpdGlvblkpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gJ2Fib3ZlJyAmJiB2YWx1ZSAhPT0gJ2JlbG93Jykge1xyXG4gICAgICB0aHJvd010eFBvcG92ZXJJbnZhbGlkUG9zaXRpb25ZKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl95UG9zaXRpb24gPSB2YWx1ZTtcclxuICAgIHRoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCk7XHJcbiAgfVxyXG5cclxuICAvKiogUG9wb3ZlciB0cmlnZ2VyIGV2ZW50ICovXHJcbiAgQElucHV0KClcclxuICBnZXQgdHJpZ2dlckV2ZW50KCk6IE10eFBvcG92ZXJUcmlnZ2VyRXZlbnQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RyaWdnZXJFdmVudDtcclxuICB9XHJcbiAgc2V0IHRyaWdnZXJFdmVudCh2YWx1ZTogTXR4UG9wb3ZlclRyaWdnZXJFdmVudCkge1xyXG4gICAgdGhpcy5fdHJpZ2dlckV2ZW50ID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogUG9wb3ZlciBzY3JvbGwgc3RyYXRlZ3kgKi9cclxuICBASW5wdXQoKVxyXG4gIGdldCBzY3JvbGxTdHJhdGVneSgpOiBNdHhQb3BvdmVyU2Nyb2xsU3RyYXRlZ3kge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Njcm9sbFN0cmF0ZWd5O1xyXG4gIH1cclxuICBzZXQgc2Nyb2xsU3RyYXRlZ3kodmFsdWU6IE10eFBvcG92ZXJTY3JvbGxTdHJhdGVneSkge1xyXG4gICAgdGhpcy5fc2Nyb2xsU3RyYXRlZ3kgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKiBQb3BvdmVyIGVudGVyIGRlbGF5ICovXHJcbiAgQElucHV0KClcclxuICBnZXQgZW50ZXJEZWxheSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VudGVyRGVsYXk7XHJcbiAgfVxyXG4gIHNldCBlbnRlckRlbGF5KHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2VudGVyRGVsYXkgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKiBQb3BvdmVyIGxlYXZlIGRlbGF5ICovXHJcbiAgQElucHV0KClcclxuICBnZXQgbGVhdmVEZWxheSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xlYXZlRGVsYXk7XHJcbiAgfVxyXG4gIHNldCBsZWF2ZURlbGF5KHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2xlYXZlRGVsYXkgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKiBQb3BvdmVyIG92ZXJsYXAgdHJpZ2dlciAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IG92ZXJsYXBUcmlnZ2VyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX292ZXJsYXBUcmlnZ2VyO1xyXG4gIH1cclxuICBzZXQgb3ZlcmxhcFRyaWdnZXIodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX292ZXJsYXBUcmlnZ2VyID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogUG9wb3ZlciB0YXJnZXQgb2Zmc2V0IHggKi9cclxuICBASW5wdXQoKVxyXG4gIGdldCB4T2Zmc2V0KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFuZWxPZmZzZXRYO1xyXG4gIH1cclxuICBzZXQgeE9mZnNldCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9wYW5lbE9mZnNldFggPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKiBQb3BvdmVyIHRhcmdldCBvZmZzZXQgeSAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHlPZmZzZXQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9wYW5lbE9mZnNldFk7XHJcbiAgfVxyXG4gIHNldCB5T2Zmc2V0KHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3BhbmVsT2Zmc2V0WSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqIFBvcG92ZXIgYXJyb3cgb2Zmc2V0IHggKi9cclxuICBASW5wdXQoKVxyXG4gIGdldCBhcnJvd09mZnNldFgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9hcnJvd09mZnNldFg7XHJcbiAgfVxyXG4gIHNldCBhcnJvd09mZnNldFgodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fYXJyb3dPZmZzZXRYID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogUG9wb3ZlciBhcnJvdyB3aWR0aCAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGFycm93V2lkdGgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9hcnJvd1dpZHRoO1xyXG4gIH1cclxuICBzZXQgYXJyb3dXaWR0aCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9hcnJvd1dpZHRoID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogUG9wb3ZlciBjbG9zZSBvbiBjb250YWluZXIgY2xpY2sgKi9cclxuICBASW5wdXQoKVxyXG4gIGdldCBjbG9zZU9uUGFuZWxDbGljaygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jbG9zZU9uUGFuZWxDbGljaztcclxuICB9XHJcbiAgc2V0IGNsb3NlT25QYW5lbENsaWNrKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9jbG9zZU9uUGFuZWxDbGljayA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKiogUG9wb3ZlciBjbG9zZSBvbiBiYWNrZHJvcCBjbGljayAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGNsb3NlT25CYWNrZHJvcENsaWNrKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrO1xyXG4gIH1cclxuICBzZXQgY2xvc2VPbkJhY2tkcm9wQ2xpY2sodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKiBEaXNhYmxlIGFuaW1hdGlvbnMgb2YgcG9wb3ZlciBhbmQgYWxsIGNoaWxkIGVsZW1lbnRzICovXHJcbiAgQElucHV0KClcclxuICBnZXQgZGlzYWJsZUFuaW1hdGlvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlQW5pbWF0aW9uO1xyXG4gIH1cclxuICBzZXQgZGlzYWJsZUFuaW1hdGlvbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZGlzYWJsZUFuaW1hdGlvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKiogUG9wb3ZlciBmb2N1cyB0cmFwIHVzaW5nIGNka1RyYXBGb2N1cyAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGZvY3VzVHJhcEVuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9jdXNUcmFwRW5hYmxlZDtcclxuICB9XHJcbiAgc2V0IGZvY3VzVHJhcEVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2ZvY3VzVHJhcEVuYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFBvcG92ZXIgZm9jdXMgdHJhcCBhdXRvIGNhcHR1cmUgdXNpbmcgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmUgKi9cclxuICBASW5wdXQoKVxyXG4gIGdldCBmb2N1c1RyYXBBdXRvQ2FwdHVyZUVuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9jdXNUcmFwQXV0b0NhcHR1cmVFbmFibGVkO1xyXG4gIH1cclxuICBzZXQgZm9jdXNUcmFwQXV0b0NhcHR1cmVFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9mb2N1c1RyYXBBdXRvQ2FwdHVyZUVuYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBtZXRob2QgdGFrZXMgY2xhc3NlcyBzZXQgb24gdGhlIGhvc3QgbWQtcG9wb3ZlciBlbGVtZW50IGFuZCBhcHBsaWVzIHRoZW0gb24gdGhlXHJcbiAgICogcG9wb3ZlciB0ZW1wbGF0ZSB0aGF0IGRpc3BsYXlzIGluIHRoZSBvdmVybGF5IGNvbnRhaW5lci4gIE90aGVyd2lzZSwgaXQncyBkaWZmaWN1bHRcclxuICAgKiB0byBzdHlsZSB0aGUgY29udGFpbmluZyBwb3BvdmVyIGZyb20gb3V0c2lkZSB0aGUgY29tcG9uZW50LlxyXG4gICAqIEBwYXJhbSBjbGFzc2VzIGxpc3Qgb2YgY2xhc3MgbmFtZXNcclxuICAgKi9cclxuICBASW5wdXQoJ2NsYXNzJylcclxuICBzZXQgcGFuZWxDbGFzcyhjbGFzc2VzOiBzdHJpbmcpIHtcclxuICAgIGlmIChjbGFzc2VzICYmIGNsYXNzZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuX2NsYXNzTGlzdCA9IGNsYXNzZXMuc3BsaXQoJyAnKS5yZWR1Y2UoKG9iajogYW55LCBjbGFzc05hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIG9ialtjbGFzc05hbWVdID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgICB9LCB7fSk7XHJcblxyXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID0gJyc7XHJcbiAgICAgIHRoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGlzIG1ldGhvZCB0YWtlcyBjbGFzc2VzIHNldCBvbiB0aGUgaG9zdCBtZC1wb3BvdmVyIGVsZW1lbnQgYW5kIGFwcGxpZXMgdGhlbSBvbiB0aGVcclxuICAgKiBwb3BvdmVyIHRlbXBsYXRlIHRoYXQgZGlzcGxheXMgaW4gdGhlIG92ZXJsYXkgY29udGFpbmVyLiAgT3RoZXJ3aXNlLCBpdCdzIGRpZmZpY3VsdFxyXG4gICAqIHRvIHN0eWxlIHRoZSBjb250YWluaW5nIHBvcG92ZXIgZnJvbSBvdXRzaWRlIHRoZSBjb21wb25lbnQuXHJcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBwYW5lbENsYXNzYCBpbnN0ZWFkLlxyXG4gICAqIEBicmVha2luZy1jaGFuZ2UgOC4wLjBcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIGdldCBjbGFzc0xpc3QoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnBhbmVsQ2xhc3M7XHJcbiAgfVxyXG4gIHNldCBjbGFzc0xpc3QoY2xhc3Nlczogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnBhbmVsQ2xhc3MgPSBjbGFzc2VzO1xyXG4gIH1cclxuXHJcbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgcG9wb3ZlciBpcyBjbG9zZWQuICovXHJcbiAgQE91dHB1dCgpIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZikgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcclxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwdWJsaWMgem9uZTogTmdab25lXHJcbiAgKSB7XHJcbiAgICB0aGlzLnNldFBvc2l0aW9uQ2xhc3NlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl9lbWl0Q2xvc2VFdmVudCgpO1xyXG4gICAgdGhpcy5jbG9zZWQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIC8qKiBIYW5kbGUgYSBrZXlib2FyZCBldmVudCBmcm9tIHRoZSBwb3BvdmVyLCBkZWxlZ2F0aW5nIHRvIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24uICovXHJcbiAgX2hhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xyXG4gICAgICBjYXNlIEVTQ0FQRTpcclxuICAgICAgICB0aGlzLl9lbWl0Q2xvc2VFdmVudCgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgZW1pdHMgYSBjbG9zZSBldmVudCB0byB3aGljaCB0aGUgdHJpZ2dlciBpcyBzdWJzY3JpYmVkLiBXaGVuIGVtaXR0ZWQsIHRoZVxyXG4gICAqIHRyaWdnZXIgd2lsbCBjbG9zZSB0aGUgcG9wb3Zlci5cclxuICAgKi9cclxuICBfZW1pdENsb3NlRXZlbnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICAvKiogQ2xvc2UgcG9wb3ZlciBvbiBjbGljayBpZiBjbG9zZU9uUGFuZWxDbGljayBpcyB0cnVlICovXHJcbiAgb25DbGljaygpIHtcclxuICAgIGlmICh0aGlzLmNsb3NlT25QYW5lbENsaWNrKSB7XHJcbiAgICAgIHRoaXMuX2VtaXRDbG9zZUV2ZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUT0RPOiBSZWZhY3RvciB3aGVuIEBhbmd1bGFyL2NkayBpbmNsdWRlcyBmZWF0dXJlIEkgbWVudGlvbmVkIG9uIGdpdGh1YiBzZWUgbGluayBiZWxvdy5cclxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9tYXRlcmlhbDIvcHVsbC81NDkzI2lzc3VlY29tbWVudC0zMTMwODUzMjNcclxuICAgKi9cclxuICAvKiogRGlzYWJsZXMgY2xvc2Ugb2YgcG9wb3ZlciB3aGVuIGxlYXZpbmcgdHJpZ2dlciBlbGVtZW50IGFuZCBtb3VzZSBvdmVyIHRoZSBwb3BvdmVyICovXHJcbiAgb25Nb3VzZU92ZXIoKSB7XHJcbiAgICBpZiAodGhpcy50cmlnZ2VyRXZlbnQgPT09ICdob3ZlcicpIHtcclxuICAgICAgdGhpcy5jbG9zZURpc2FibGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqIEVuYWJsZXMgY2xvc2Ugb2YgcG9wb3ZlciB3aGVuIG1vdXNlIGxlYXZpbmcgcG9wb3ZlciBlbGVtZW50ICovXHJcbiAgb25Nb3VzZUxlYXZlKCkge1xyXG4gICAgaWYgKHRoaXMudHJpZ2dlckV2ZW50ID09PSAnaG92ZXInKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLl9lbWl0Q2xvc2VFdmVudCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gVE9ETzogUmVmYWN0b3IgaG93IHN0eWxlcyBhcmUgc2V0IGFuZCB1cGRhdGVkIG9uIHRoZSBjb21wb25lbnQsIHVzZSBiZXN0IHByYWN0aWNlcy5cclxuICAvLyBUT0RPOiBJZiBhcnJvdyBsZWZ0IGFuZCByaWdodCBwb3NpdGlvbmluZyBpcyByZXF1ZXN0ZWQsIHNlZSBpZiBmbGV4IGRpcmVjdGlvbiBjYW4gYmUgdXNlZCB0byB3b3JrIHdpdGggb3JkZXIuXHJcbiAgLyoqIFNldHMgdGhlIGN1cnJlbnQgc3R5bGVzIGZvciB0aGUgcG9wb3ZlciB0byBhbGxvdyBmb3IgZHluYW1pY2FsbHkgY2hhbmdpbmcgc2V0dGluZ3MgKi9cclxuICBzZXRDdXJyZW50U3R5bGVzKCkge1xyXG4gICAgY29uc3QgbGVmdCA9XHJcbiAgICAgIHRoaXMueFBvc2l0aW9uID09PSAnYWZ0ZXInXHJcbiAgICAgICAgPyBgJHt0aGlzLmFycm93T2Zmc2V0WCAtIHRoaXMuYXJyb3dXaWR0aCAvIDJ9cHhgXHJcbiAgICAgICAgOiB0aGlzLnhQb3NpdGlvbiA9PT0gJ2NlbnRlcidcclxuICAgICAgICA/IGBjYWxjKDUwJSAtICR7dGhpcy5hcnJvd1dpZHRoIC8gMn1weClgXHJcbiAgICAgICAgOiAnJztcclxuICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy54UG9zaXRpb24gPT09ICdiZWZvcmUnID8gYCR7dGhpcy5hcnJvd09mZnNldFggLSB0aGlzLmFycm93V2lkdGggLyAyfXB4YCA6ICcnO1xyXG5cclxuICAgIHRoaXMucG9wb3ZlckFycm93U3R5bGVzID0ge1xyXG4gICAgICBsZWZ0OiB0aGlzLl9kaXIudmFsdWUgPT09ICdsdHInID8gbGVmdCA6IHJpZ2h0LFxyXG4gICAgICByaWdodDogdGhpcy5fZGlyLnZhbHVlID09PSAnbHRyJyA/IHJpZ2h0IDogbGVmdCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCdzIG5lY2Vzc2FyeSB0byBzZXQgcG9zaXRpb24tYmFzZWQgY2xhc3NlcyB0byBlbnN1cmUgdGhlIHBvcG92ZXIgcGFuZWwgYW5pbWF0aW9uXHJcbiAgICogZm9sZHMgb3V0IGZyb20gdGhlIGNvcnJlY3QgZGlyZWN0aW9uLlxyXG4gICAqL1xyXG4gIHNldFBvc2l0aW9uQ2xhc3Nlcyhwb3NYID0gdGhpcy54UG9zaXRpb24sIHBvc1kgPSB0aGlzLnlQb3NpdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5fY2xhc3NMaXN0WydtdHgtcG9wb3Zlci1iZWZvcmUnXSA9IHBvc1ggPT09ICdiZWZvcmUnO1xyXG4gICAgdGhpcy5fY2xhc3NMaXN0WydtdHgtcG9wb3Zlci1jZW50ZXInXSA9IHBvc1ggPT09ICdjZW50ZXInO1xyXG4gICAgdGhpcy5fY2xhc3NMaXN0WydtdHgtcG9wb3Zlci1hZnRlciddID0gcG9zWCA9PT0gJ2FmdGVyJztcclxuICAgIHRoaXMuX2NsYXNzTGlzdFsnbXR4LXBvcG92ZXItYWJvdmUnXSA9IHBvc1kgPT09ICdhYm92ZSc7XHJcbiAgICB0aGlzLl9jbGFzc0xpc3RbJ210eC1wb3BvdmVyLWJlbG93J10gPSBwb3NZID09PSAnYmVsb3cnO1xyXG4gIH1cclxufVxyXG4iXX0=
615
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvbml1em9uZ2Jpbi9Qcm9qZWN0cy9AbmctbWF0ZXJvL2V4dGVuc2lvbnMvcHJvamVjdHMvZXh0ZW5zaW9ucy9wb3BvdmVyLyIsInNvdXJjZXMiOlsicG9wb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLHVCQUF1QixFQUN2QixXQUFXLEVBQ1gsTUFBTSxFQUNOLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBUW5ELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBV3hELE1BQU0sT0FBTyxVQUFVOzs7Ozs7SUEwT3JCLFlBQ3NCLElBQW9CLEVBQ2hDLFdBQXVCLEVBQ3hCLElBQVk7UUFGQyxTQUFJLEdBQUosSUFBSSxDQUFnQjtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFRO1FBNU9LLFNBQUksR0FBRyxRQUFRLENBQUM7Ozs7UUFHbEMsZUFBVSxHQUF3QixPQUFPLENBQUM7UUFDMUMsZUFBVSxHQUF3QixPQUFPLENBQUM7UUFDMUMsa0JBQWEsR0FBMkIsT0FBTyxDQUFDO1FBQ2hELG9CQUFlLEdBQTZCLFlBQVksQ0FBQztRQUN6RCxnQkFBVyxHQUFHLEdBQUcsQ0FBQztRQUNsQixnQkFBVyxHQUFHLEdBQUcsQ0FBQztRQUNsQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLDBCQUFxQixHQUFHLElBQUksQ0FBQztRQUM3QixzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDekIsaUNBQTRCLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGdCQUFXLEdBQUcsRUFBRSxDQUFDOzs7O1FBR3pCLGVBQVUsR0FBK0IsRUFBRSxDQUFDOzs7OztRQUlyQyx5QkFBb0IsR0FBRyxLQUFLLENBQUM7Ozs7UUFHN0Isa0JBQWEsR0FBRyxLQUFLLENBQUM7Ozs7UUFZN0IsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7Ozs7UUE2TG5ELFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBUzFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7Ozs7O0lBcE1ELElBQ0ksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDOzs7OztJQUNELElBQUksU0FBUyxDQUFDLEtBQTBCO1FBQ3RDLElBQUksS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssT0FBTyxJQUFJLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDakUsK0JBQStCLEVBQUUsQ0FBQztTQUNuQztRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7Ozs7O0lBR0QsSUFDSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7Ozs7O0lBQ0QsSUFBSSxTQUFTLENBQUMsS0FBMEI7UUFDdEMsSUFBSSxLQUFLLEtBQUssT0FBTyxJQUFJLEtBQUssS0FBSyxPQUFPLEVBQUU7WUFDMUMsK0JBQStCLEVBQUUsQ0FBQztTQUNuQztRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7Ozs7O0lBR0QsSUFDSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7Ozs7O0lBQ0QsSUFBSSxZQUFZLENBQUMsS0FBNkI7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQzs7Ozs7SUFHRCxJQUNJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7Ozs7O0lBQ0QsSUFBSSxjQUFjLENBQUMsS0FBK0I7UUFDaEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQzs7Ozs7SUFHRCxJQUNJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQzs7Ozs7SUFDRCxJQUFJLFVBQVUsQ0FBQyxLQUFhO1FBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7Ozs7O0lBR0QsSUFDSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7Ozs7O0lBQ0QsSUFBSSxVQUFVLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDOzs7OztJQUdELElBQ0ksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQzs7Ozs7SUFDRCxJQUFJLGNBQWMsQ0FBQyxLQUFjO1FBQy9CLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7Ozs7O0lBR0QsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7Ozs7O0lBQ0QsSUFBSSxPQUFPLENBQUMsS0FBYTtRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDOzs7OztJQUdELElBQ0ksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDOzs7OztJQUNELElBQUksT0FBTyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQzs7Ozs7SUFHRCxJQUNJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQzs7Ozs7SUFDRCxJQUFJLFlBQVksQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7Ozs7O0lBR0QsSUFDSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7Ozs7O0lBQ0QsSUFBSSxVQUFVLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDOzs7OztJQUdELElBQ0ksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7Ozs7O0lBQ0QsSUFBSSxpQkFBaUIsQ0FBQyxLQUFjO1FBQ2xDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDOzs7OztJQUdELElBQ0ksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3BDLENBQUM7Ozs7O0lBQ0QsSUFBSSxvQkFBb0IsQ0FBQyxLQUFjO1FBQ3JDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDOzs7OztJQUdELElBQ0ksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7Ozs7O0lBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFjO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDOzs7OztJQUdELElBQ0ksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7Ozs7O0lBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFjO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDOzs7OztJQUdELElBQ0ksMkJBQTJCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLDRCQUE0QixDQUFDO0lBQzNDLENBQUM7Ozs7O0lBQ0QsSUFBSSwyQkFBMkIsQ0FBQyxLQUFjO1FBQzVDLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRSxDQUFDOzs7Ozs7OztJQVFELElBQ0ksVUFBVSxDQUFDLE9BQWU7UUFDNUIsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTTs7Ozs7WUFBQyxDQUFDLEdBQVEsRUFBRSxTQUFpQixFQUFFLEVBQUU7Z0JBQzFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRVAsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUMzQjtJQUNILENBQUM7Ozs7Ozs7OztJQVNELElBQ0ksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDOzs7OztJQUNELElBQUksU0FBUyxDQUFDLE9BQWU7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQzs7OztJQWVELFdBQVc7UUFDVCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7Ozs7SUFHRCxjQUFjLENBQUMsS0FBb0I7UUFDakMsUUFBUSxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ3JCLEtBQUssTUFBTTtnQkFDVCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU87U0FDVjtJQUNILENBQUM7Ozs7OztJQU1ELGVBQWU7UUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7Ozs7O0lBR0QsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7Ozs7Ozs7OztJQU9ELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssT0FBTyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQzs7Ozs7SUFFRCxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE9BQU8sRUFBRTtZQUNqQyxVQUFVOzs7WUFBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixDQUFDLEdBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQzs7Ozs7OztJQUtELGdCQUFnQjs7Y0FDUixJQUFJLEdBQ1IsSUFBSSxDQUFDLFNBQVMsS0FBSyxPQUFPO1lBQ3hCLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUk7WUFDaEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUTtnQkFDN0IsQ0FBQyxDQUFDLGNBQWMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEtBQUs7Z0JBQ3hDLENBQUMsQ0FBQyxFQUFFOztjQUNGLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFFL0YsSUFBSSxDQUFDLGtCQUFrQixHQUFHO1lBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSztZQUM5QyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7U0FDaEQsQ0FBQztJQUNKLENBQUM7Ozs7Ozs7O0lBTUQsa0JBQWtCLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTO1FBQzdELElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsR0FBRyxJQUFJLEtBQUssUUFBUSxDQUFDO1FBQzFELElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsR0FBRyxJQUFJLEtBQUssUUFBUSxDQUFDO1FBQzFELElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsR0FBRyxJQUFJLEtBQUssT0FBTyxDQUFDO1FBQ3hELElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsR0FBRyxJQUFJLEtBQUssT0FBTyxDQUFDO1FBQ3hELElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsR0FBRyxJQUFJLEtBQUssT0FBTyxDQUFDO0lBQzFELENBQUM7OztZQXhVRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLDgzQkFBNkI7Z0JBRTdCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsVUFBVSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzlCLFFBQVEsRUFBRSxZQUFZOzthQUN2Qjs7OztZQXBCUSxjQUFjLHVCQWdRbEIsUUFBUTtZQXpRWCxVQUFVO1lBR1YsTUFBTTs7O21CQTRCTCxXQUFXLFNBQUMsV0FBVzt3QkEyQ3ZCLEtBQUs7d0JBYUwsS0FBSzsyQkFhTCxLQUFLOzZCQVNMLEtBQUs7eUJBU0wsS0FBSzt5QkFTTCxLQUFLOzZCQVNMLEtBQUs7c0JBU0wsS0FBSztzQkFTTCxLQUFLOzJCQVNMLEtBQUs7eUJBU0wsS0FBSztnQ0FTTCxLQUFLO21DQVNMLEtBQUs7K0JBU0wsS0FBSzsrQkFTTCxLQUFLOzBDQVNMLEtBQUs7eUJBY0wsS0FBSyxTQUFDLE9BQU87d0JBb0JiLEtBQUs7cUJBU0wsTUFBTTswQkFFTixTQUFTLFNBQUMsV0FBVzs7OztJQXZPdEIsMEJBQTBDOzs7Ozs7SUFHMUMsZ0NBQWtEOzs7OztJQUNsRCxnQ0FBa0Q7Ozs7O0lBQ2xELG1DQUF3RDs7Ozs7SUFDeEQscUNBQWlFOzs7OztJQUNqRSxpQ0FBMEI7Ozs7O0lBQzFCLGlDQUEwQjs7Ozs7SUFDMUIscUNBQWdDOzs7OztJQUNoQyx1Q0FBa0M7Ozs7O0lBQ2xDLG1DQUEwQjs7Ozs7SUFDMUIsbUNBQTBCOzs7OztJQUMxQix3Q0FBbUM7Ozs7O0lBQ25DLDJDQUFxQzs7Ozs7SUFDckMsdUNBQWlDOzs7OztJQUNqQyxrREFBNEM7Ozs7O0lBQzVDLG1DQUEyQjs7Ozs7SUFDM0IsaUNBQXlCOzs7OztJQUd6QixnQ0FBNEM7Ozs7O0lBSTVDLDBDQUFvQzs7Ozs7SUFHcEMsbUNBQTZCOzs7OztJQUc3Qix3Q0FBOEI7Ozs7O0lBRzlCLHdDQUE4Qjs7Ozs7SUFHOUIsMENBQWdDOzs7OztJQUdoQyw2Q0FBNkQ7Ozs7O0lBNkw3RCw0QkFBNEM7O0lBRTVDLGlDQUFzRDs7Ozs7SUFHcEQsMEJBQXdDOzs7OztJQUN4QyxpQ0FBK0I7O0lBQy9CLDBCQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIE5nWm9uZSxcclxuICBPcHRpb25hbCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQW5pbWF0aW9uRXZlbnQgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgRVNDQVBFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIE10eFBvcG92ZXJQb3NpdGlvblgsXHJcbiAgTXR4UG9wb3ZlclBvc2l0aW9uWSxcclxuICBNdHhQb3BvdmVyVHJpZ2dlckV2ZW50LFxyXG4gIE10eFBvcG92ZXJTY3JvbGxTdHJhdGVneSxcclxufSBmcm9tICcuL3BvcG92ZXItdHlwZXMnO1xyXG5pbXBvcnQgeyB0aHJvd010eFBvcG92ZXJJbnZhbGlkUG9zaXRpb25YLCB0aHJvd010eFBvcG92ZXJJbnZhbGlkUG9zaXRpb25ZIH0gZnJvbSAnLi9wb3BvdmVyLWVycm9ycyc7XHJcbmltcG9ydCB7IE10eFBvcG92ZXJQYW5lbCB9IGZyb20gJy4vcG9wb3Zlci1pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgdHJhbnNmb3JtUG9wb3ZlciB9IGZyb20gJy4vcG9wb3Zlci1hbmltYXRpb25zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXR4LXBvcG92ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wb3BvdmVyLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3BvcG92ZXIuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgYW5pbWF0aW9uczogW3RyYW5zZm9ybVBvcG92ZXJdLFxyXG4gIGV4cG9ydEFzOiAnbXR4UG9wb3ZlcicsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdHhQb3BvdmVyIGltcGxlbWVudHMgTXR4UG9wb3ZlclBhbmVsLCBPbkRlc3Ryb3kge1xyXG4gIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcm9sZSA9ICdkaWFsb2cnO1xyXG5cclxuICAvKiogU2V0dGluZ3MgZm9yIHBvcG92ZXIsIHZpZXcgc2V0dGVycyBhbmQgZ2V0dGVycyBmb3IgbW9yZSBkZXRhaWwgKi9cclxuICBwcml2YXRlIF94UG9zaXRpb246IE10eFBvcG92ZXJQb3NpdGlvblggPSAnYWZ0ZXInO1xyXG4gIHByaXZhdGUgX3lQb3NpdGlvbjogTXR4UG9wb3ZlclBvc2l0aW9uWSA9ICdiZWxvdyc7XHJcbiAgcHJpdmF0ZSBfdHJpZ2dlckV2ZW50OiBNdHhQb3BvdmVyVHJpZ2dlckV2ZW50ID0gJ2hvdmVyJztcclxuICBwcml2YXRlIF9zY3JvbGxTdHJhdGVneTogTXR4UG9wb3ZlclNjcm9sbFN0cmF0ZWd5ID0gJ3JlcG9zaXRpb24nO1xyXG4gIHByaXZhdGUgX2VudGVyRGVsYXkgPSAxMDA7XHJcbiAgcHJpdmF0ZSBfbGVhdmVEZWxheSA9IDEwMDtcclxuICBwcml2YXRlIF9vdmVybGFwVHJpZ2dlciA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2Rpc2FibGVBbmltYXRpb24gPSBmYWxzZTtcclxuICBwcml2YXRlIF9wYW5lbE9mZnNldFggPSAwO1xyXG4gIHByaXZhdGUgX3BhbmVsT2Zmc2V0WSA9IDA7XHJcbiAgcHJpdmF0ZSBfY2xvc2VPblBhbmVsQ2xpY2sgPSBmYWxzZTtcclxuICBwcml2YXRlIF9jbG9zZU9uQmFja2Ryb3BDbGljayA9IHRydWU7XHJcbiAgcHJpdmF0ZSBfZm9jdXNUcmFwRW5hYmxlZCA9IHRydWU7XHJcbiAgcHJpdmF0ZSBfZm9jdXNUcmFwQXV0b0NhcHR1cmVFbmFibGVkID0gdHJ1ZTtcclxuICBwcml2YXRlIF9hcnJvd09mZnNldFggPSAyMDtcclxuICBwcml2YXRlIF9hcnJvd1dpZHRoID0gMTY7XHJcblxyXG4gIC8qKiBDb25maWcgb2JqZWN0IHRvIGJlIHBhc3NlZCBpbnRvIHRoZSBwb3BvdmVyJ3MgbmdDbGFzcyAqL1xyXG4gIF9jbGFzc0xpc3Q6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XHJcblxyXG4gIC8vIFRPRE86IFdyaXRlIGNvbW1lbnQgZGVzY3JpcHRpb25cclxuICAvKiogKi9cclxuICBwdWJsaWMgY29udGFpbmVyUG9zaXRpb25pbmcgPSBmYWxzZTtcclxuXHJcbiAgLyoqIENsb3NpbmcgZGlzYWJsZWQgb24gcG9wb3ZlciAqL1xyXG4gIHB1YmxpYyBjbG9zZURpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIC8qKiBDb25maWcgb2JqZWN0IHRvIGJlIHBhc3NlZCBpbnRvIHRoZSBwb3BvdmVyJ3MgYXJyb3cgbmdTdHlsZSAqL1xyXG4gIHB1YmxpYyBwb3BvdmVyUGFuZWxTdHlsZXM6IHt9O1xyXG5cclxuICAvKiogQ29uZmlnIG9iamVjdCB0byBiZSBwYXNzZWQgaW50byB0aGUgcG9wb3ZlcidzIGFycm93IG5nU3R5bGUgKi9cclxuICBwdWJsaWMgcG9wb3ZlckFycm93U3R5bGVzOiB7fTtcclxuXHJcbiAgLyoqIENvbmZpZyBvYmplY3QgdG8gYmUgcGFzc2VkIGludG8gdGhlIHBvcG92ZXIncyBjb250ZW50IG5nU3R5bGUgKi9cclxuICBwdWJsaWMgcG9wb3ZlckNvbnRlbnRTdHlsZXM6IHt9O1xyXG5cclxuICAvKiogRW1pdHMgdGhlIGN1cnJlbnQgYW5pbWF0aW9uIHN0YXRlIHdoZW5ldmVyIGl0IGNoYW5nZXMuICovXHJcbiAgX29uQW5pbWF0aW9uU3RhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFuaW1hdGlvbkV2ZW50PigpO1xyXG5cclxuICAvKiogUG9zaXRpb24gb2YgdGhlIHBvcG92ZXIgaW4gdGhlIFggYXhpcy4gKi9cclxuICBASW5wdXQoKVxyXG4gIGdldCB4UG9zaXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5feFBvc2l0aW9uO1xyXG4gIH1cclxuICBzZXQgeFBvc2l0aW9uKHZhbHVlOiBNdHhQb3BvdmVyUG9zaXRpb25YKSB7XHJcbiAgICBpZiAodmFsdWUgIT09ICdiZWZvcmUnICYmIHZhbHVlICE9PSAnYWZ0ZXInICYmIHZhbHVlICE9PSAnY2VudGVyJykge1xyXG4gICAgICB0aHJvd010eFBvcG92ZXJJbnZhbGlkUG9zaXRpb25YKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl94UG9zaXRpb24gPSB2YWx1ZTtcclxuICAgIHRoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCk7XHJcbiAgfVxyXG5cclxuICAvKiogUG9zaXRpb24gb2YgdGhlIHBvcG92ZXIgaW4gdGhlIFkgYXhpcy4gKi9cclxuICBASW5wdXQoKVxyXG4gIGdldCB5UG9zaXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5feVBvc2l0aW9uO1xyXG4gIH1cclxuICBzZXQgeVBvc2l0aW9uKHZhbHVlOiBNdHhQb3BvdmVyUG9zaXRpb25ZKSB7XHJcbiAgICBpZiAodmFsdWUgIT09ICdhYm92ZScgJiYgdmFsdWUgIT09ICdiZWxvdycpIHtcclxuICAgICAgdGhyb3dNdHhQb3BvdmVySW52YWxpZFBvc2l0aW9uWSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5feVBvc2l0aW9uID0gdmFsdWU7XHJcbiAgICB0aGlzLnNldFBvc2l0aW9uQ2xhc3NlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFBvcG92ZXIgdHJpZ2dlciBldmVudCAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHRyaWdnZXJFdmVudCgpOiBNdHhQb3BvdmVyVHJpZ2dlckV2ZW50IHtcclxuICAgIHJldHVybiB0aGlzLl90cmlnZ2VyRXZlbnQ7XHJcbiAgfVxyXG4gIHNldCB0cmlnZ2VyRXZlbnQodmFsdWU6IE10eFBvcG92ZXJUcmlnZ2VyRXZlbnQpIHtcclxuICAgIHRoaXMuX3RyaWdnZXJFdmVudCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqIFBvcG92ZXIgc2Nyb2xsIHN0cmF0ZWd5ICovXHJcbiAgQElucHV0KClcclxuICBnZXQgc2Nyb2xsU3RyYXRlZ3koKTogTXR4UG9wb3ZlclNjcm9sbFN0cmF0ZWd5IHtcclxuICAgIHJldHVybiB0aGlzLl9zY3JvbGxTdHJhdGVneTtcclxuICB9XHJcbiAgc2V0IHNjcm9sbFN0cmF0ZWd5KHZhbHVlOiBNdHhQb3BvdmVyU2Nyb2xsU3RyYXRlZ3kpIHtcclxuICAgIHRoaXMuX3Njcm9sbFN0cmF0ZWd5ID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogUG9wb3ZlciBlbnRlciBkZWxheSAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGVudGVyRGVsYXkoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9lbnRlckRlbGF5O1xyXG4gIH1cclxuICBzZXQgZW50ZXJEZWxheSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9lbnRlckRlbGF5ID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogUG9wb3ZlciBsZWF2ZSBkZWxheSAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGxlYXZlRGVsYXkoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9sZWF2ZURlbGF5O1xyXG4gIH1cclxuICBzZXQgbGVhdmVEZWxheSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9sZWF2ZURlbGF5ID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogUG9wb3ZlciBvdmVybGFwIHRyaWdnZXIgKi9cclxuICBASW5wdXQoKVxyXG4gIGdldCBvdmVybGFwVHJpZ2dlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9vdmVybGFwVHJpZ2dlcjtcclxuICB9XHJcbiAgc2V0IG92ZXJsYXBUcmlnZ2VyKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9vdmVybGFwVHJpZ2dlciA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqIFBvcG92ZXIgdGFyZ2V0IG9mZnNldCB4ICovXHJcbiAgQElucHV0KClcclxuICBnZXQgeE9mZnNldCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhbmVsT2Zmc2V0WDtcclxuICB9XHJcbiAgc2V0IHhPZmZzZXQodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fcGFuZWxPZmZzZXRYID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogUG9wb3ZlciB0YXJnZXQgb2Zmc2V0IHkgKi9cclxuICBASW5wdXQoKVxyXG4gIGdldCB5T2Zmc2V0KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFuZWxPZmZzZXRZO1xyXG4gIH1cclxuICBzZXQgeU9mZnNldCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9wYW5lbE9mZnNldFkgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKiBQb3BvdmVyIGFycm93IG9mZnNldCB4ICovXHJcbiAgQElucHV0KClcclxuICBnZXQgYXJyb3dPZmZzZXRYKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXJyb3dPZmZzZXRYO1xyXG4gIH1cclxuICBzZXQgYXJyb3dPZmZzZXRYKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2Fycm93T2Zmc2V0WCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqIFBvcG92ZXIgYXJyb3cgd2lkdGggKi9cclxuICBASW5wdXQoKVxyXG4gIGdldCBhcnJvd1dpZHRoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXJyb3dXaWR0aDtcclxuICB9XHJcbiAgc2V0IGFycm93V2lkdGgodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fYXJyb3dXaWR0aCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqIFBvcG92ZXIgY2xvc2Ugb24gY29udGFpbmVyIGNsaWNrICovXHJcbiAgQElucHV0KClcclxuICBnZXQgY2xvc2VPblBhbmVsQ2xpY2soKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2xvc2VPblBhbmVsQ2xpY2s7XHJcbiAgfVxyXG4gIHNldCBjbG9zZU9uUGFuZWxDbGljayh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fY2xvc2VPblBhbmVsQ2xpY2sgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFBvcG92ZXIgY2xvc2Ugb24gYmFja2Ryb3AgY2xpY2sgKi9cclxuICBASW5wdXQoKVxyXG4gIGdldCBjbG9zZU9uQmFja2Ryb3BDbGljaygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jbG9zZU9uQmFja2Ryb3BDbGljaztcclxuICB9XHJcbiAgc2V0IGNsb3NlT25CYWNrZHJvcENsaWNrKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9jbG9zZU9uQmFja2Ryb3BDbGljayA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKiogRGlzYWJsZSBhbmltYXRpb25zIG9mIHBvcG92ZXIgYW5kIGFsbCBjaGlsZCBlbGVtZW50cyAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRpc2FibGVBbmltYXRpb24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZUFuaW1hdGlvbjtcclxuICB9XHJcbiAgc2V0IGRpc2FibGVBbmltYXRpb24odmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVBbmltYXRpb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFBvcG92ZXIgZm9jdXMgdHJhcCB1c2luZyBjZGtUcmFwRm9jdXMgKi9cclxuICBASW5wdXQoKVxyXG4gIGdldCBmb2N1c1RyYXBFbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZvY3VzVHJhcEVuYWJsZWQ7XHJcbiAgfVxyXG4gIHNldCBmb2N1c1RyYXBFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9mb2N1c1RyYXBFbmFibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKiBQb3BvdmVyIGZvY3VzIHRyYXAgYXV0byBjYXB0dXJlIHVzaW5nIGNka1RyYXBGb2N1c0F1dG9DYXB0dXJlICovXHJcbiAgQElucHV0KClcclxuICBnZXQgZm9jdXNUcmFwQXV0b0NhcHR1cmVFbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZvY3VzVHJhcEF1dG9DYXB0dXJlRW5hYmxlZDtcclxuICB9XHJcbiAgc2V0IGZvY3VzVHJhcEF1dG9DYXB0dXJlRW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZm9jdXNUcmFwQXV0b0NhcHR1cmVFbmFibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgbWV0aG9kIHRha2VzIGNsYXNzZXMgc2V0IG9uIHRoZSBob3N0IG1kLXBvcG92ZXIgZWxlbWVudCBhbmQgYXBwbGllcyB0aGVtIG9uIHRoZVxyXG4gICAqIHBvcG92ZXIgdGVtcGxhdGUgdGhhdCBkaXNwbGF5cyBpbiB0aGUgb3ZlcmxheSBjb250YWluZXIuICBPdGhlcndpc2UsIGl0J3MgZGlmZmljdWx0XHJcbiAgICogdG8gc3R5bGUgdGhlIGNvbnRhaW5pbmcgcG9wb3ZlciBmcm9tIG91dHNpZGUgdGhlIGNvbXBvbmVudC5cclxuICAgKiBAcGFyYW0gY2xhc3NlcyBsaXN0IG9mIGNsYXNzIG5hbWVzXHJcbiAgICovXHJcbiAgQElucHV0KCdjbGFzcycpXHJcbiAgc2V0IHBhbmVsQ2xhc3MoY2xhc3Nlczogc3RyaW5nKSB7XHJcbiAgICBpZiAoY2xhc3NlcyAmJiBjbGFzc2VzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLl9jbGFzc0xpc3QgPSBjbGFzc2VzLnNwbGl0KCcgJykucmVkdWNlKChvYmo6IGFueSwgY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBvYmpbY2xhc3NOYW1lXSA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIG9iajtcclxuICAgICAgfSwge30pO1xyXG5cclxuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZSA9ICcnO1xyXG4gICAgICB0aGlzLnNldFBvc2l0aW9uQ2xhc3NlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBtZXRob2QgdGFrZXMgY2xhc3NlcyBzZXQgb24gdGhlIGhvc3QgbWQtcG9wb3ZlciBlbGVtZW50IGFuZCBhcHBsaWVzIHRoZW0gb24gdGhlXHJcbiAgICogcG9wb3ZlciB0ZW1wbGF0ZSB0aGF0IGRpc3BsYXlzIGluIHRoZSBvdmVybGF5IGNvbnRhaW5lci4gIE90aGVyd2lzZSwgaXQncyBkaWZmaWN1bHRcclxuICAgKiB0byBzdHlsZSB0aGUgY29udGFpbmluZyBwb3BvdmVyIGZyb20gb3V0c2lkZSB0aGUgY29tcG9uZW50LlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgcGFuZWxDbGFzc2AgaW5zdGVhZC5cclxuICAgKiBAYnJlYWtpbmctY2hhbmdlIDguMC4wXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBnZXQgY2xhc3NMaXN0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5wYW5lbENsYXNzO1xyXG4gIH1cclxuICBzZXQgY2xhc3NMaXN0KGNsYXNzZXM6IHN0cmluZykge1xyXG4gICAgdGhpcy5wYW5lbENsYXNzID0gY2xhc3NlcztcclxuICB9XHJcblxyXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHBvcG92ZXIgaXMgY2xvc2VkLiAqL1xyXG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYpIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RpcjogRGlyZWN0aW9uYWxpdHksXHJcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHVibGljIHpvbmU6IE5nWm9uZVxyXG4gICkge1xyXG4gICAgdGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fZW1pdENsb3NlRXZlbnQoKTtcclxuICAgIHRoaXMuY2xvc2VkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICAvKiogSGFuZGxlIGEga2V5Ym9hcmQgZXZlbnQgZnJvbSB0aGUgcG9wb3ZlciwgZGVsZWdhdGluZyB0byB0aGUgYXBwcm9wcmlhdGUgYWN0aW9uLiAqL1xyXG4gIF9oYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcclxuICAgICAgY2FzZSBFU0NBUEU6XHJcbiAgICAgICAgdGhpcy5fZW1pdENsb3NlRXZlbnQoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGlzIGVtaXRzIGEgY2xvc2UgZXZlbnQgdG8gd2hpY2ggdGhlIHRyaWdnZXIgaXMgc3Vic2NyaWJlZC4gV2hlbiBlbWl0dGVkLCB0aGVcclxuICAgKiB0cmlnZ2VyIHdpbGwgY2xvc2UgdGhlIHBvcG92ZXIuXHJcbiAgICovXHJcbiAgX2VtaXRDbG9zZUV2ZW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqIENsb3NlIHBvcG92ZXIgb24gY2xpY2sgaWYgY2xvc2VPblBhbmVsQ2xpY2sgaXMgdHJ1ZSAqL1xyXG4gIG9uQ2xpY2soKSB7XHJcbiAgICBpZiAodGhpcy5jbG9zZU9uUGFuZWxDbGljaykge1xyXG4gICAgICB0aGlzLl9lbWl0Q2xvc2VFdmVudCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVE9ETzogUmVmYWN0b3Igd2hlbiBAYW5ndWxhci9jZGsgaW5jbHVkZXMgZmVhdHVyZSBJIG1lbnRpb25lZCBvbiBnaXRodWIgc2VlIGxpbmsgYmVsb3cuXHJcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvbWF0ZXJpYWwyL3B1bGwvNTQ5MyNpc3N1ZWNvbW1lbnQtMzEzMDg1MzIzXHJcbiAgICovXHJcbiAgLyoqIERpc2FibGVzIGNsb3NlIG9mIHBvcG92ZXIgd2hlbiBsZWF2aW5nIHRyaWdnZXIgZWxlbWVudCBhbmQgbW91c2Ugb3ZlciB0aGUgcG9wb3ZlciAqL1xyXG4gIG9uTW91c2VPdmVyKCkge1xyXG4gICAgaWYgKHRoaXMudHJpZ2dlckV2ZW50ID09PSAnaG92ZXInKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VEaXNhYmxlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKiBFbmFibGVzIGNsb3NlIG9mIHBvcG92ZXIgd2hlbiBtb3VzZSBsZWF2aW5nIHBvcG92ZXIgZWxlbWVudCAqL1xyXG4gIG9uTW91c2VMZWF2ZSgpIHtcclxuICAgIGlmICh0aGlzLnRyaWdnZXJFdmVudCA9PT0gJ2hvdmVyJykge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNsb3NlRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9lbWl0Q2xvc2VFdmVudCgpO1xyXG4gICAgICB9LCB0aGlzLmxlYXZlRGVsYXkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gVE9ETzogUmVmYWN0b3IgaG93IHN0eWxlcyBhcmUgc2V0IGFuZCB1cGRhdGVkIG9uIHRoZSBjb21wb25lbnQsIHVzZSBiZXN0IHByYWN0aWNlcy5cclxuICAvLyBUT0RPOiBJZiBhcnJvdyBsZWZ0IGFuZCByaWdodCBwb3NpdGlvbmluZyBpcyByZXF1ZXN0ZWQsIHNlZSBpZiBmbGV4IGRpcmVjdGlvbiBjYW4gYmUgdXNlZCB0byB3b3JrIHdpdGggb3JkZXIuXHJcbiAgLyoqIFNldHMgdGhlIGN1cnJlbnQgc3R5bGVzIGZvciB0aGUgcG9wb3ZlciB0byBhbGxvdyBmb3IgZHluYW1pY2FsbHkgY2hhbmdpbmcgc2V0dGluZ3MgKi9cclxuICBzZXRDdXJyZW50U3R5bGVzKCkge1xyXG4gICAgY29uc3QgbGVmdCA9XHJcbiAgICAgIHRoaXMueFBvc2l0aW9uID09PSAnYWZ0ZXInXHJcbiAgICAgICAgPyBgJHt0aGlzLmFycm93T2Zmc2V0WCAtIHRoaXMuYXJyb3dXaWR0aCAvIDJ9cHhgXHJcbiAgICAgICAgOiB0aGlzLnhQb3NpdGlvbiA9PT0gJ2NlbnRlcidcclxuICAgICAgICA/IGBjYWxjKDUwJSAtICR7dGhpcy5hcnJvd1dpZHRoIC8gMn1weClgXHJcbiAgICAgICAgOiAnJztcclxuICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy54UG9zaXRpb24gPT09ICdiZWZvcmUnID8gYCR7dGhpcy5hcnJvd09mZnNldFggLSB0aGlzLmFycm93V2lkdGggLyAyfXB4YCA6ICcnO1xyXG5cclxuICAgIHRoaXMucG9wb3ZlckFycm93U3R5bGVzID0ge1xyXG4gICAgICBsZWZ0OiB0aGlzLl9kaXIudmFsdWUgPT09ICdsdHInID8gbGVmdCA6IHJpZ2h0LFxyXG4gICAgICByaWdodDogdGhpcy5fZGlyLnZhbHVlID09PSAnbHRyJyA/IHJpZ2h0IDogbGVmdCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCdzIG5lY2Vzc2FyeSB0byBzZXQgcG9zaXRpb24tYmFzZWQgY2xhc3NlcyB0byBlbnN1cmUgdGhlIHBvcG92ZXIgcGFuZWwgYW5pbWF0aW9uXHJcbiAgICogZm9sZHMgb3V0IGZyb20gdGhlIGNvcnJlY3QgZGlyZWN0aW9uLlxyXG4gICAqL1xyXG4gIHNldFBvc2l0aW9uQ2xhc3Nlcyhwb3NYID0gdGhpcy54UG9zaXRpb24sIHBvc1kgPSB0aGlzLnlQb3NpdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5fY2xhc3NMaXN0WydtdHgtcG9wb3Zlci1iZWZvcmUnXSA9IHBvc1ggPT09ICdiZWZvcmUnO1xyXG4gICAgdGhpcy5fY2xhc3NMaXN0WydtdHgtcG9wb3Zlci1jZW50ZXInXSA9IHBvc1ggPT09ICdjZW50ZXInO1xyXG4gICAgdGhpcy5fY2xhc3NMaXN0WydtdHgtcG9wb3Zlci1hZnRlciddID0gcG9zWCA9PT0gJ2FmdGVyJztcclxuICAgIHRoaXMuX2NsYXNzTGlzdFsnbXR4LXBvcG92ZXItYWJvdmUnXSA9IHBvc1kgPT09ICdhYm92ZSc7XHJcbiAgICB0aGlzLl9jbGFzc0xpc3RbJ210eC1wb3BvdmVyLWJlbG93J10gPSBwb3NZID09PSAnYmVsb3cnO1xyXG4gIH1cclxufVxyXG4iXX0=