@valtimo/components 5.15.0 → 10.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/css/carbon-beagle-compatibility.scss +118 -0
- package/assets/css/carbon.scss +82 -0
- package/esm2020/lib/components/alert/alert.component.mjs +3 -3
- package/esm2020/lib/components/alert/alert.module.mjs +5 -5
- package/esm2020/lib/components/alert/alert.service.mjs +3 -3
- package/esm2020/lib/components/bpmn-js-diagram/bpmn-js-diagram.component.mjs +4 -4
- package/esm2020/lib/components/bpmn-js-diagram/bpmn-js-diagram.module.mjs +5 -5
- package/esm2020/lib/components/breadcrumb-navigation/breadcrumb-navigation.component.mjs +12 -10
- package/esm2020/lib/components/breadcrumb-navigation/breadcrumb-navigation.module.mjs +5 -5
- package/esm2020/lib/components/camunda/form/camunda-form.components.mjs +6 -6
- package/esm2020/lib/components/camunda/form/camunda-form.module.mjs +5 -5
- package/esm2020/lib/components/camunda/form/custom/camunda-custom-form.component.mjs +4 -4
- package/esm2020/lib/components/camunda/form/custom/camunda-custom-form.module.mjs +5 -5
- package/esm2020/lib/components/camunda/form/generated/camunda-generated-form.component.mjs +7 -7
- package/esm2020/lib/components/camunda/form/generated/camunda-generated-form.module.mjs +5 -5
- package/esm2020/lib/components/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component.mjs +7 -7
- package/esm2020/lib/components/camunda/form/generated/formfield/camunda-formfield-generator.directive.mjs +3 -3
- package/esm2020/lib/components/camunda/form/generated/formfield/camunda-formfield.service.mjs +3 -3
- package/esm2020/lib/components/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.mjs +6 -6
- package/esm2020/lib/components/camunda/form/generated/formfield/date/camunda-date-formfield.component.mjs +7 -7
- package/esm2020/lib/components/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.mjs +6 -6
- package/esm2020/lib/components/camunda/form/generated/formfield/long/camunda-long-formfield.component.mjs +7 -7
- package/esm2020/lib/components/camunda/form/generated/formfield/string/camunda-string-formfield.component.mjs +7 -7
- package/esm2020/lib/components/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component.mjs +7 -7
- package/esm2020/lib/components/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.mjs +4 -4
- package/esm2020/lib/components/card/card.component.mjs +4 -4
- package/esm2020/lib/components/card/card.module.mjs +5 -5
- package/esm2020/lib/components/components.module.mjs +4 -4
- package/esm2020/lib/components/data-list/data-list.component.mjs +4 -4
- package/esm2020/lib/components/data-list/data-list.module.mjs +5 -5
- package/esm2020/lib/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.mjs +3 -3
- package/esm2020/lib/components/documenten-api-metadata-modal/documenten-api-metadata-modal.module.mjs +15 -17
- package/esm2020/lib/components/dropzone/dropzone.component.mjs +8 -8
- package/esm2020/lib/components/dropzone/dropzone.module.mjs +5 -5
- package/esm2020/lib/components/field-auto-focus/field-auto-focus.directive.mjs +3 -3
- package/esm2020/lib/components/field-auto-focus/field-auto-focus.module.mjs +5 -5
- package/esm2020/lib/components/file-size/file-size.module.mjs +5 -5
- package/esm2020/lib/components/file-size/file-size.pipe.mjs +3 -3
- package/esm2020/lib/components/filter-sidebar/filter-sidebar.component.mjs +3 -3
- package/esm2020/lib/components/filter-sidebar/filter-sidebar.module.mjs +5 -5
- package/esm2020/lib/components/form-io/documenten-api-uploader/documenten-api-uploader.component.mjs +7 -7
- package/esm2020/lib/components/form-io/form-io-builder.component.mjs +4 -4
- package/esm2020/lib/components/form-io/form-io-uploader/form-io-uploader.component.mjs +5 -5
- package/esm2020/lib/components/form-io/form-io.component.mjs +6 -6
- package/esm2020/lib/components/form-io/form-io.module.mjs +13 -15
- package/esm2020/lib/components/form-io/services/form-io-dom.service.mjs +3 -3
- package/esm2020/lib/components/form-io/services/form-io-state.service.mjs +3 -3
- package/esm2020/lib/components/left-sidebar/left-sidebar.component.mjs +79 -87
- package/esm2020/lib/components/left-sidebar/left-sidebar.module.mjs +26 -7
- package/esm2020/lib/components/list/ListFilterPipe.directive.mjs +3 -3
- package/esm2020/lib/components/list/list.component.mjs +7 -7
- package/esm2020/lib/components/list/list.module.mjs +5 -5
- package/esm2020/lib/components/menu/menu-item-text.component.mjs +12 -55
- package/esm2020/lib/components/menu/menu-routing.module.mjs +5 -5
- package/esm2020/lib/components/menu/menu.module.mjs +27 -11
- package/esm2020/lib/components/menu/menu.service.mjs +49 -6
- package/esm2020/lib/components/modal/modal.component.mjs +3 -3
- package/esm2020/lib/components/modal/modal.module.mjs +5 -5
- package/esm2020/lib/components/multiselect-dropdown/multiselect-dropdown.component.mjs +6 -6
- package/esm2020/lib/components/multiselect-dropdown/multiselect-dropdown.module.mjs +5 -5
- package/esm2020/lib/components/page-header/page-header.component.mjs +6 -6
- package/esm2020/lib/components/page-header/page-header.module.mjs +5 -5
- package/esm2020/lib/components/page-title/page-title.component.mjs +11 -9
- package/esm2020/lib/components/page-title/page-title.module.mjs +5 -5
- package/esm2020/lib/components/progress-bar/progress-bar.component.mjs +3 -3
- package/esm2020/lib/components/progress-bar/progress-bar.module.mjs +5 -5
- package/esm2020/lib/components/right-sidebar/right-sidebar.component.mjs +103 -63
- package/esm2020/lib/components/right-sidebar/right-sidebar.module.mjs +45 -19
- package/esm2020/lib/components/search-fields/search-fields.component.mjs +7 -7
- package/esm2020/lib/components/search-fields/search-fields.module.mjs +15 -17
- package/esm2020/lib/components/searchable-dropdown/searchable-dropdown.component.mjs +3 -3
- package/esm2020/lib/components/searchable-dropdown/searchable-dropdown.module.mjs +5 -5
- package/esm2020/lib/components/searchable-dropdown-select/searchable-dropdown-select.component.mjs +5 -5
- package/esm2020/lib/components/searchable-dropdown-select/searchable-dropdown-select.module.mjs +5 -5
- package/esm2020/lib/components/spinner/spinner.component.mjs +5 -5
- package/esm2020/lib/components/spinner/spinner.module.mjs +5 -5
- package/esm2020/lib/components/timeline/timeline.component.mjs +5 -5
- package/esm2020/lib/components/timeline/timeline.module.mjs +5 -5
- package/esm2020/lib/components/topbar/topbar.component.mjs +50 -12
- package/esm2020/lib/components/topbar/topbar.module.mjs +7 -6
- package/esm2020/lib/components/uploader/uploader-drag-drop.directive.mjs +3 -3
- package/esm2020/lib/components/uploader/uploader.component.mjs +5 -5
- package/esm2020/lib/components/uploader/uploader.module.mjs +5 -5
- package/esm2020/lib/components/version/version.service.mjs +10 -8
- package/esm2020/lib/components/view-content/view-content.service.mjs +3 -3
- package/esm2020/lib/components/webcam/webcam.component.mjs +3 -3
- package/esm2020/lib/components/webcam/webcam.module.mjs +5 -5
- package/esm2020/lib/components/widget/widget.component.mjs +3 -3
- package/esm2020/lib/components/widget/widget.module.mjs +5 -5
- package/esm2020/lib/pipes/case-count.pipe.mjs +22 -0
- package/esm2020/lib/pipes/components-pipes.module.mjs +16 -0
- package/esm2020/lib/pipes/index.mjs +4 -0
- package/esm2020/lib/pipes/menu-item-translation.pipe.mjs +34 -0
- package/esm2020/lib/services/shell.service.mjs +52 -0
- package/esm2020/lib/services/valtimo-modal.service.mjs +3 -3
- package/esm2020/public_api.mjs +4 -2
- package/fesm2015/valtimo-components.mjs +861 -762
- package/fesm2015/valtimo-components.mjs.map +1 -1
- package/fesm2020/valtimo-components.mjs +859 -762
- package/fesm2020/valtimo-components.mjs.map +1 -1
- package/{valtimo-components.d.ts → index.d.ts} +0 -0
- package/lib/components/alert/alert.component.d.ts +1 -1
- package/lib/components/bpmn-js-diagram/bpmn-js-diagram.component.d.ts +1 -1
- package/lib/components/breadcrumb-navigation/breadcrumb-navigation.component.d.ts +4 -2
- package/lib/components/breadcrumb-navigation/breadcrumb-navigation.component.d.ts.map +1 -1
- package/lib/components/camunda/form/camunda-form.components.d.ts +1 -1
- package/lib/components/camunda/form/custom/camunda-custom-form.component.d.ts +1 -1
- package/lib/components/camunda/form/generated/camunda-generated-form.component.d.ts +4 -4
- package/lib/components/camunda/form/generated/camunda-generated-form.component.d.ts.map +1 -1
- package/lib/components/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component.d.ts +3 -3
- package/lib/components/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component.d.ts.map +1 -1
- package/lib/components/camunda/form/generated/formfield/camunda-formfield-generator.directive.d.ts +1 -1
- package/lib/components/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.d.ts +3 -3
- package/lib/components/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.d.ts.map +1 -1
- package/lib/components/camunda/form/generated/formfield/date/camunda-date-formfield.component.d.ts +3 -3
- package/lib/components/camunda/form/generated/formfield/date/camunda-date-formfield.component.d.ts.map +1 -1
- package/lib/components/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.d.ts +3 -3
- package/lib/components/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.d.ts.map +1 -1
- package/lib/components/camunda/form/generated/formfield/long/camunda-long-formfield.component.d.ts +3 -3
- package/lib/components/camunda/form/generated/formfield/long/camunda-long-formfield.component.d.ts.map +1 -1
- package/lib/components/camunda/form/generated/formfield/string/camunda-string-formfield.component.d.ts +3 -3
- package/lib/components/camunda/form/generated/formfield/string/camunda-string-formfield.component.d.ts.map +1 -1
- package/lib/components/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component.d.ts +3 -3
- package/lib/components/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component.d.ts.map +1 -1
- package/lib/components/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.d.ts +3 -3
- package/lib/components/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.d.ts.map +1 -1
- package/lib/components/card/card.component.d.ts +1 -1
- package/lib/components/data-list/data-list.component.d.ts +1 -1
- package/lib/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.d.ts +1 -1
- package/lib/components/dropzone/dropzone.component.d.ts +1 -1
- package/lib/components/field-auto-focus/field-auto-focus.directive.d.ts +1 -1
- package/lib/components/file-size/file-size.pipe.d.ts +1 -1
- package/lib/components/filter-sidebar/filter-sidebar.component.d.ts +1 -1
- package/lib/components/form-io/documenten-api-uploader/documenten-api-uploader.component.d.ts +1 -1
- package/lib/components/form-io/form-io-builder.component.d.ts +1 -1
- package/lib/components/form-io/form-io-uploader/form-io-uploader.component.d.ts +1 -1
- package/lib/components/form-io/form-io.component.d.ts +1 -1
- package/lib/components/left-sidebar/left-sidebar.component.d.ts +28 -31
- package/lib/components/left-sidebar/left-sidebar.component.d.ts.map +1 -1
- package/lib/components/left-sidebar/left-sidebar.module.d.ts +7 -4
- package/lib/components/left-sidebar/left-sidebar.module.d.ts.map +1 -1
- package/lib/components/list/ListFilterPipe.directive.d.ts +1 -1
- package/lib/components/list/list.component.d.ts +1 -1
- package/lib/components/menu/menu-item-text.component.d.ts +2 -1
- package/lib/components/menu/menu-item-text.component.d.ts.map +1 -1
- package/lib/components/menu/menu.module.d.ts +8 -8
- package/lib/components/menu/menu.module.d.ts.map +1 -1
- package/lib/components/menu/menu.service.d.ts +6 -1
- package/lib/components/menu/menu.service.d.ts.map +1 -1
- package/lib/components/modal/modal.component.d.ts +1 -1
- package/lib/components/multiselect-dropdown/multiselect-dropdown.component.d.ts +1 -1
- package/lib/components/page-header/page-header.component.d.ts +1 -1
- package/lib/components/page-title/page-title.component.d.ts +9 -7
- package/lib/components/page-title/page-title.component.d.ts.map +1 -1
- package/lib/components/progress-bar/progress-bar.component.d.ts +1 -1
- package/lib/components/right-sidebar/right-sidebar.component.d.ts +32 -20
- package/lib/components/right-sidebar/right-sidebar.component.d.ts.map +1 -1
- package/lib/components/right-sidebar/right-sidebar.module.d.ts +2 -1
- package/lib/components/right-sidebar/right-sidebar.module.d.ts.map +1 -1
- package/lib/components/search-fields/search-fields.component.d.ts +1 -1
- package/lib/components/searchable-dropdown/searchable-dropdown.component.d.ts +2 -2
- package/lib/components/searchable-dropdown/searchable-dropdown.component.d.ts.map +1 -1
- package/lib/components/searchable-dropdown-select/searchable-dropdown-select.component.d.ts +1 -1
- package/lib/components/spinner/spinner.component.d.ts +1 -1
- package/lib/components/timeline/timeline.component.d.ts +1 -1
- package/lib/components/topbar/topbar.component.d.ts +19 -2
- package/lib/components/topbar/topbar.component.d.ts.map +1 -1
- package/lib/components/topbar/topbar.module.d.ts +2 -1
- package/lib/components/topbar/topbar.module.d.ts.map +1 -1
- package/lib/components/uploader/uploader-drag-drop.directive.d.ts +1 -1
- package/lib/components/uploader/uploader.component.d.ts +1 -1
- package/lib/components/version/version.service.d.ts +5 -2
- package/lib/components/version/version.service.d.ts.map +1 -1
- package/lib/components/webcam/webcam.component.d.ts +1 -1
- package/lib/components/widget/widget.component.d.ts +1 -1
- package/lib/pipes/case-count.pipe.d.ts +8 -0
- package/lib/pipes/case-count.pipe.d.ts.map +1 -0
- package/lib/pipes/components-pipes.module.d.ts +8 -0
- package/lib/pipes/components-pipes.module.d.ts.map +1 -0
- package/lib/pipes/index.d.ts +4 -0
- package/lib/pipes/index.d.ts.map +1 -0
- package/lib/pipes/menu-item-translation.pipe.d.ts +13 -0
- package/lib/pipes/menu-item-translation.pipe.d.ts.map +1 -0
- package/lib/services/shell.service.d.ts +21 -0
- package/lib/services/shell.service.d.ts.map +1 -0
- package/package.json +14 -11
- package/public_api.d.ts +3 -1
- package/public_api.d.ts.map +1 -1
- package/esm2020/lib/components/menu/menu.component.mjs +0 -66
- package/esm2020/lib/components/menu/submenu-item-text.component.mjs +0 -77
- package/lib/components/menu/menu.component.d.ts +0 -26
- package/lib/components/menu/menu.component.d.ts.map +0 -1
- package/lib/components/menu/submenu-item-text.component.d.ts +0 -8
- package/lib/components/menu/submenu-item-text.component.d.ts.map +0 -1
|
@@ -19,8 +19,8 @@ import { debounceTime, take } from 'rxjs/operators';
|
|
|
19
19
|
import * as i0 from "@angular/core";
|
|
20
20
|
import * as i1 from "../view-content/view-content.service";
|
|
21
21
|
import * as i2 from "ngx-logger";
|
|
22
|
-
import * as i3 from "@
|
|
23
|
-
import * as i4 from "@
|
|
22
|
+
import * as i3 from "@angular/common";
|
|
23
|
+
import * as i4 from "@ng-bootstrap/ng-bootstrap";
|
|
24
24
|
import * as i5 from "@angular/forms";
|
|
25
25
|
import * as i6 from "@ngx-translate/core";
|
|
26
26
|
import * as i7 from "./ListFilterPipe.directive";
|
|
@@ -158,11 +158,11 @@ export class ListComponent {
|
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
160
|
ListComponent.PAGINATION_SIZE = 'PaginationSize';
|
|
161
|
-
ListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
162
|
-
ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ListComponent, selector: "valtimo-list", inputs: { items: "items", fields: "fields", pagination: "pagination", viewMode: "viewMode", isSearchable: "isSearchable", header: "header", actions: "actions", paginationIdentifier: "paginationIdentifier", initialSortState: "initialSortState", lastColumnTemplate: "lastColumnTemplate" }, outputs: { rowClicked: "rowClicked", paginationClicked: "paginationClicked", paginationSet: "paginationSet", search: "search", sortChanged: "sortChanged" }, viewQueries: [{ propertyName: "searchBox", first: true, predicate: ["searchBox"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div>\n <div *ngIf=\"(items?.length > 0 && fields?.length > 0) || header\">\n <div\n class=\"d-flex align-items-center search-holder bg-light\"\n [ngClass]=\"{'pb-4 pt-4': !header}\"\n *ngIf=\"isSearchable || viewMode || header\"\n >\n <div class=\"align-self-start\">\n <ng-content select=\"[header]\"></ng-content>\n </div>\n\n <div class=\"ml-auto row\">\n <input\n *ngIf=\"isSearchable\"\n class=\"form-control col-sm-8\"\n type=\"text\"\n placeholder=\"{{ 'list.search' | translate }}\"\n #searchBox\n />\n\n <div\n class=\"switch-view-holder btn-group col-sm-4 mt-1 mt-sm-0\"\n role=\"group\"\n *ngIf=\"viewMode\"\n >\n <button\n class=\"btn\"\n [ngClass]=\"viewListAs === 'table' ? 'btn-primary' : 'btn-default'\"\n (click)=\"switchView('table')\"\n >\n <i class=\"icon mdi mdi-view-headline view-icon\"></i>\n </button>\n <button\n class=\"btn\"\n [ngClass]=\"viewListAs === 'tile' ? 'btn-primary' : 'btn-default'\"\n (click)=\"switchView('tile')\"\n >\n <i class=\"icon mdi mdi-view-module view-icon\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <ng-content select=\"[tabs]\"></ng-content>\n\n <div *ngIf=\"items?.length > 0 && fields?.length > 0\">\n <div class=\"table-responsive noSwipe\" *ngIf=\"!viewMode || viewListAs === 'table'\">\n <table class=\"table table-striped table-hover m-0\" *ngIf=\"sort$ | async as sort\">\n <thead>\n <tr>\n <th\n *ngFor=\"let field of fields\"\n (click)=\"handleFieldClick(field.key, field.sortable)\"\n [ngClass]=\"{\n sortable: field.sortable,\n 'is-being-sorted': field.key === sort.state.name && sort.isSorting,\n ascending: sort.state.direction === 'ASC'\n }\"\n >\n {{ field.label }}\n </th>\n <th *ngFor=\"let action of actions\">\n {{ action.columnName }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n [ngClass]=\"{'click-able': this.rowClicked.observers.length > 0}\"\n *ngFor=\"let item of items | listFilter: searchModel; let i = index\"\n (click)=\"onClickRow(item)\"\n >\n <td class=\"align-top\" *ngFor=\"let listItemField of item.listItemFields\">\n <ng-container *ngIf=\"listItemField.type === ''\">\n {{ listItemField.value || '-' }}\n </ng-container>\n\n <ng-container\n *ngIf=\"listItemField.type === 'dropdownActions'\"\n [ngTemplateOutlet]=\"dropdownActions\"\n [ngTemplateOutletContext]=\"{listItemField: listItemField, item: item}\"\n ></ng-container>\n </td>\n <td class=\"align-top\" *ngFor=\"let action of actions\">\n <i\n class=\"action-icon\"\n style=\"cursor: pointer\"\n [ngClass]=\"action.iconClass\"\n (click)=\"action.callback(item, $event)\"\n ></i>\n </td>\n <td *ngIf=\"lastColumnTemplate\">\n <ng-container\n *ngTemplateOutlet=\"lastColumnTemplate; context: {index: i, length: items.length}\"\n ></ng-container>\n </td>\n </tr>\n <tr>\n <td *ngIf=\"(items | listFilter: searchModel).length === 0\" [colSpan]=\"fields.length\">\n {{ 'list.noMatchingItems' | translate }}<i>\"{{ searchModel }}\"</i>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div class=\"container-fluid\" *ngIf=\"viewMode && viewListAs === 'tile'\">\n <div class=\"row p-2\">\n <div\n class=\"col-12 col-sm-6 col-xl-4 p-2\"\n *ngFor=\"let item of items | listFilter: searchModel\"\n (click)=\"onClickRow(item)\"\n >\n <div class=\"click-able tile-holder p-4\">\n <dl class=\"row mb-0\" *ngFor=\"let listItemField of item.listItemFields\">\n <dt class=\"col-12 col-md-5 text-xl-right\">{{ listItemField.label }}</dt>\n <dd class=\"col-12 col-md-7\">{{ listItemField.value || '-' }}</dd>\n </dl>\n </div>\n </div>\n <div class=\"col-12\" *ngIf=\"(items | listFilter: searchModel).length === 0\">\n {{ 'list.noMatchingItems' | translate }}<i>\"{{ searchModel }}\"</i>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"pagination-holder bg-light px-4 pt-4 pb-2 overflow-auto row mr-0 ml-0\"\n *ngIf=\"pagination && items?.length > 0 && fields?.length > 0\"\n >\n <div class=\"float-left page-count col-4\">\n <strong>{{\n 'list.currentPage' | translate: {current: pagination.page, total: getTotalPageCount()}\n }}</strong>\n <br />\n {{\n pagination.collectionSize === 1\n ? ('list.showingResult' | translate: {number: (items | listFilter: searchModel).length})\n : ('list.showingResults'\n | translate\n : {\n number: (items | listFilter: searchModel).length,\n total: pagination.collectionSize\n })\n }}\n </div>\n <div class=\"col-4 text-center\">\n {{ 'list.show' | translate }}\n <select [(ngModel)]=\"pagination.size\" (ngModelChange)=\"setPaginationSize($event)\">\n <option [ngValue]=\"10\">10</option>\n <option [ngValue]=\"25\">25</option>\n <option [ngValue]=\"50\">50</option>\n <option [ngValue]=\"100\">100</option>\n </select>\n {{ 'list.entries' | translate }}\n </div>\n <div class=\"col-4\">\n <ngb-pagination\n *ngIf=\"pagination.collectionSize > pagination.size\"\n class=\"float-right\"\n [collectionSize]=\"pagination.collectionSize\"\n [(page)]=\"pagination.page\"\n [pageSize]=\"pagination.size\"\n [maxSize]=\"pagination.maxPaginationItemSize\"\n [rotate]=\"true\"\n (pageChange)=\"onClickPagination(pagination.page)\"\n ></ngb-pagination>\n </div>\n </div>\n\n <div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\">\n {{ 'list.noResults' | translate }}\n </div>\n\n <div id=\"no-field-definitions\" class=\"p-5\" *ngIf=\"items?.length > 0 && fields?.length === 0\">\n {{ 'list.noFieldDefinitions' | translate }}\n </div>\n</div>\n\n<ng-template #dropdownActions let-listItemField=\"listItemField\" let-item=\"item\">\n <div class=\"dropdown\" *ngIf=\"listItemField?.value.length > 0\">\n <a\n style=\"cursor: pointer\"\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n *ngFor=\"let action of listItemField.value\"\n >\n <ng-container *ngIf=\"action.iconClass !== null\">\n <i [ngClass]=\"action.iconClass\"></i>\n </ng-container>\n {{ action?.label || '-' }}\n </a>\n </div>\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.table{table-layout:fixed}.table-responsive{overflow-x:visible}.click-able{cursor:pointer}.pagination-holder{border-top:1px solid #dee2e6}.search-holder{border-bottom:1px solid #dee2e6;padding-left:18px;padding-right:18px;height:80px}.switch-view-holder i{font-size:1.8rem;line-height:1.2rem;margin-top:9px}.tile-holder{background-color:#f5f5f5;border:1px solid transparent}.tile-holder:hover{background-color:#eee;border:1px solid #dee2e6}.page-count{margin-bottom:1rem}th:first-child,td:first-child{padding-left:25px}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:after{font-family:\"Font Awesome 5 Free\";content:\" \\f0dd\";position:absolute;margin:auto 0 auto 5px;opacity:0;transition:all .15s ease}th.sortable.is-being-sorted.ascending:after{transform:rotate(-180deg)}th.sortable:hover:after{opacity:.5}th.sortable.is-being-sorted:after{opacity:1}.action-icon,.view-icon{font-size:16px!important}\n"], components: [{ type: i3.NgbPagination, selector: "ngb-pagination", inputs: ["disabled", "boundaryLinks", "directionLinks", "ellipses", "rotate", "collectionSize", "maxSize", "page", "pageSize", "size"], outputs: ["pageChange"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "translate": i6.TranslatePipe, "async": i4.AsyncPipe, "listFilter": i7.ListFilterPipe } });
|
|
163
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
161
|
+
ListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ListComponent, deps: [{ token: i1.ViewContentService }, { token: i2.NGXLogger }], target: i0.ɵɵFactoryTarget.Component });
|
|
162
|
+
ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ListComponent, selector: "valtimo-list", inputs: { items: "items", fields: "fields", pagination: "pagination", viewMode: "viewMode", isSearchable: "isSearchable", header: "header", actions: "actions", paginationIdentifier: "paginationIdentifier", initialSortState: "initialSortState", lastColumnTemplate: "lastColumnTemplate" }, outputs: { rowClicked: "rowClicked", paginationClicked: "paginationClicked", paginationSet: "paginationSet", search: "search", sortChanged: "sortChanged" }, viewQueries: [{ propertyName: "searchBox", first: true, predicate: ["searchBox"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div>\n <div *ngIf=\"(items?.length > 0 && fields?.length > 0) || header\">\n <div\n class=\"d-flex align-items-center search-holder bg-light\"\n [ngClass]=\"{'pb-4 pt-4': !header}\"\n *ngIf=\"isSearchable || viewMode || header\"\n >\n <div class=\"align-self-start\">\n <ng-content select=\"[header]\"></ng-content>\n </div>\n\n <div class=\"ml-auto row\">\n <input\n *ngIf=\"isSearchable\"\n class=\"form-control col-sm-8\"\n type=\"text\"\n placeholder=\"{{ 'list.search' | translate }}\"\n #searchBox\n />\n\n <div\n class=\"switch-view-holder btn-group col-sm-4 mt-1 mt-sm-0\"\n role=\"group\"\n *ngIf=\"viewMode\"\n >\n <button\n class=\"btn\"\n [ngClass]=\"viewListAs === 'table' ? 'btn-primary' : 'btn-default'\"\n (click)=\"switchView('table')\"\n >\n <i class=\"icon mdi mdi-view-headline view-icon\"></i>\n </button>\n <button\n class=\"btn\"\n [ngClass]=\"viewListAs === 'tile' ? 'btn-primary' : 'btn-default'\"\n (click)=\"switchView('tile')\"\n >\n <i class=\"icon mdi mdi-view-module view-icon\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <ng-content select=\"[tabs]\"></ng-content>\n\n <div *ngIf=\"items?.length > 0 && fields?.length > 0\">\n <div class=\"table-responsive noSwipe\" *ngIf=\"!viewMode || viewListAs === 'table'\">\n <table class=\"table table-striped table-hover m-0\" *ngIf=\"sort$ | async as sort\">\n <thead>\n <tr>\n <th\n *ngFor=\"let field of fields\"\n (click)=\"handleFieldClick(field.key, field.sortable)\"\n [ngClass]=\"{\n sortable: field.sortable,\n 'is-being-sorted': field.key === sort.state.name && sort.isSorting,\n ascending: sort.state.direction === 'ASC'\n }\"\n >\n {{ field.label }}\n </th>\n <th *ngFor=\"let action of actions\">\n {{ action.columnName }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n [ngClass]=\"{'click-able': this.rowClicked.observers.length > 0}\"\n *ngFor=\"let item of items | listFilter: searchModel; let i = index\"\n (click)=\"onClickRow(item)\"\n >\n <td class=\"align-top\" *ngFor=\"let listItemField of item.listItemFields\">\n <ng-container *ngIf=\"listItemField.type === ''\">\n {{ listItemField.value || '-' }}\n </ng-container>\n\n <ng-container\n *ngIf=\"listItemField.type === 'dropdownActions'\"\n [ngTemplateOutlet]=\"dropdownActions\"\n [ngTemplateOutletContext]=\"{listItemField: listItemField, item: item}\"\n ></ng-container>\n </td>\n <td class=\"align-top\" *ngFor=\"let action of actions\">\n <i\n class=\"action-icon\"\n style=\"cursor: pointer\"\n [ngClass]=\"action.iconClass\"\n (click)=\"action.callback(item, $event)\"\n ></i>\n </td>\n <td *ngIf=\"lastColumnTemplate\">\n <ng-container\n *ngTemplateOutlet=\"lastColumnTemplate; context: {index: i, length: items.length}\"\n ></ng-container>\n </td>\n </tr>\n <tr>\n <td *ngIf=\"(items | listFilter: searchModel).length === 0\" [colSpan]=\"fields.length\">\n {{ 'list.noMatchingItems' | translate }}<i>\"{{ searchModel }}\"</i>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div class=\"container-fluid\" *ngIf=\"viewMode && viewListAs === 'tile'\">\n <div class=\"row p-2\">\n <div\n class=\"col-12 col-sm-6 col-xl-4 p-2\"\n *ngFor=\"let item of items | listFilter: searchModel\"\n (click)=\"onClickRow(item)\"\n >\n <div class=\"click-able tile-holder p-4\">\n <dl class=\"row mb-0\" *ngFor=\"let listItemField of item.listItemFields\">\n <dt class=\"col-12 col-md-5 text-xl-right\">{{ listItemField.label }}</dt>\n <dd class=\"col-12 col-md-7\">{{ listItemField.value || '-' }}</dd>\n </dl>\n </div>\n </div>\n <div class=\"col-12\" *ngIf=\"(items | listFilter: searchModel).length === 0\">\n {{ 'list.noMatchingItems' | translate }}<i>\"{{ searchModel }}\"</i>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"pagination-holder bg-light px-4 pt-4 pb-2 overflow-auto row mr-0 ml-0\"\n *ngIf=\"pagination && items?.length > 0 && fields?.length > 0\"\n >\n <div class=\"float-left page-count col-4\">\n <strong>{{\n 'list.currentPage' | translate: {current: pagination.page, total: getTotalPageCount()}\n }}</strong>\n {{\n pagination.collectionSize === 1\n ? ('list.showingResult' | translate: {number: (items | listFilter: searchModel).length})\n : ('list.showingResults'\n | translate\n : {\n number: (items | listFilter: searchModel).length,\n total: pagination.collectionSize\n })\n }}\n </div>\n <div class=\"col-4 text-center\">\n {{ 'list.show' | translate }}\n <select [(ngModel)]=\"pagination.size\" (ngModelChange)=\"setPaginationSize($event)\">\n <option [ngValue]=\"10\">10</option>\n <option [ngValue]=\"25\">25</option>\n <option [ngValue]=\"50\">50</option>\n <option [ngValue]=\"100\">100</option>\n </select>\n {{ 'list.entries' | translate }}\n </div>\n <div class=\"col-4\">\n <ngb-pagination\n *ngIf=\"pagination.collectionSize > pagination.size\"\n class=\"float-right\"\n [collectionSize]=\"pagination.collectionSize\"\n [(page)]=\"pagination.page\"\n [pageSize]=\"pagination.size\"\n [maxSize]=\"pagination.maxPaginationItemSize\"\n [rotate]=\"true\"\n (pageChange)=\"onClickPagination(pagination.page)\"\n ></ngb-pagination>\n </div>\n </div>\n\n <div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\">\n {{ 'list.noResults' | translate }}\n </div>\n\n <div id=\"no-field-definitions\" class=\"p-5\" *ngIf=\"items?.length > 0 && fields?.length === 0\">\n {{ 'list.noFieldDefinitions' | translate }}\n </div>\n</div>\n\n<ng-template #dropdownActions let-listItemField=\"listItemField\" let-item=\"item\">\n <div class=\"dropdown\" *ngIf=\"listItemField?.value.length > 0\">\n <a\n style=\"cursor: pointer\"\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n *ngFor=\"let action of listItemField.value\"\n >\n <ng-container *ngIf=\"action.iconClass !== null\">\n <i [ngClass]=\"action.iconClass\"></i>\n </ng-container>\n {{ action?.label || '-' }}\n </a>\n </div>\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.table{table-layout:fixed}.table-responsive{overflow-x:visible}.click-able{cursor:pointer}.pagination-holder{border-top:1px solid #dee2e6}.search-holder{border-bottom:1px solid #dee2e6;padding-left:18px;padding-right:18px;height:80px}.switch-view-holder i{font-size:1.8rem;line-height:1.2rem;margin-top:9px}.tile-holder{background-color:#f5f5f5;border:1px solid transparent}.tile-holder:hover{background-color:#eee;border:1px solid #dee2e6}.page-count{margin-bottom:1rem;display:flex;flex-direction:column}.page-count strong:first-child{margin-bottom:6px}th:first-child,td:first-child{padding-left:25px}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:after{font-family:\"Font Awesome 5 Free\";content:\" \\f0dd\";position:absolute;margin:auto 0 auto 5px;opacity:0;transition:all .15s ease}th.sortable.is-being-sorted.ascending:after{transform:rotate(-180deg)}th.sortable:hover:after{opacity:.5}th.sortable.is-being-sorted:after{opacity:1}.action-icon,.view-icon{font-size:16px!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.NgbPagination, selector: "ngb-pagination", inputs: ["disabled", "boundaryLinks", "directionLinks", "ellipses", "rotate", "collectionSize", "maxSize", "page", "pageSize", "size"], outputs: ["pageChange"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i7.ListFilterPipe, name: "listFilter" }] });
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ListComponent, decorators: [{
|
|
164
164
|
type: Component,
|
|
165
|
-
args: [{ selector: 'valtimo-list', template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div>\n <div *ngIf=\"(items?.length > 0 && fields?.length > 0) || header\">\n <div\n class=\"d-flex align-items-center search-holder bg-light\"\n [ngClass]=\"{'pb-4 pt-4': !header}\"\n *ngIf=\"isSearchable || viewMode || header\"\n >\n <div class=\"align-self-start\">\n <ng-content select=\"[header]\"></ng-content>\n </div>\n\n <div class=\"ml-auto row\">\n <input\n *ngIf=\"isSearchable\"\n class=\"form-control col-sm-8\"\n type=\"text\"\n placeholder=\"{{ 'list.search' | translate }}\"\n #searchBox\n />\n\n <div\n class=\"switch-view-holder btn-group col-sm-4 mt-1 mt-sm-0\"\n role=\"group\"\n *ngIf=\"viewMode\"\n >\n <button\n class=\"btn\"\n [ngClass]=\"viewListAs === 'table' ? 'btn-primary' : 'btn-default'\"\n (click)=\"switchView('table')\"\n >\n <i class=\"icon mdi mdi-view-headline view-icon\"></i>\n </button>\n <button\n class=\"btn\"\n [ngClass]=\"viewListAs === 'tile' ? 'btn-primary' : 'btn-default'\"\n (click)=\"switchView('tile')\"\n >\n <i class=\"icon mdi mdi-view-module view-icon\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <ng-content select=\"[tabs]\"></ng-content>\n\n <div *ngIf=\"items?.length > 0 && fields?.length > 0\">\n <div class=\"table-responsive noSwipe\" *ngIf=\"!viewMode || viewListAs === 'table'\">\n <table class=\"table table-striped table-hover m-0\" *ngIf=\"sort$ | async as sort\">\n <thead>\n <tr>\n <th\n *ngFor=\"let field of fields\"\n (click)=\"handleFieldClick(field.key, field.sortable)\"\n [ngClass]=\"{\n sortable: field.sortable,\n 'is-being-sorted': field.key === sort.state.name && sort.isSorting,\n ascending: sort.state.direction === 'ASC'\n }\"\n >\n {{ field.label }}\n </th>\n <th *ngFor=\"let action of actions\">\n {{ action.columnName }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n [ngClass]=\"{'click-able': this.rowClicked.observers.length > 0}\"\n *ngFor=\"let item of items | listFilter: searchModel; let i = index\"\n (click)=\"onClickRow(item)\"\n >\n <td class=\"align-top\" *ngFor=\"let listItemField of item.listItemFields\">\n <ng-container *ngIf=\"listItemField.type === ''\">\n {{ listItemField.value || '-' }}\n </ng-container>\n\n <ng-container\n *ngIf=\"listItemField.type === 'dropdownActions'\"\n [ngTemplateOutlet]=\"dropdownActions\"\n [ngTemplateOutletContext]=\"{listItemField: listItemField, item: item}\"\n ></ng-container>\n </td>\n <td class=\"align-top\" *ngFor=\"let action of actions\">\n <i\n class=\"action-icon\"\n style=\"cursor: pointer\"\n [ngClass]=\"action.iconClass\"\n (click)=\"action.callback(item, $event)\"\n ></i>\n </td>\n <td *ngIf=\"lastColumnTemplate\">\n <ng-container\n *ngTemplateOutlet=\"lastColumnTemplate; context: {index: i, length: items.length}\"\n ></ng-container>\n </td>\n </tr>\n <tr>\n <td *ngIf=\"(items | listFilter: searchModel).length === 0\" [colSpan]=\"fields.length\">\n {{ 'list.noMatchingItems' | translate }}<i>\"{{ searchModel }}\"</i>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div class=\"container-fluid\" *ngIf=\"viewMode && viewListAs === 'tile'\">\n <div class=\"row p-2\">\n <div\n class=\"col-12 col-sm-6 col-xl-4 p-2\"\n *ngFor=\"let item of items | listFilter: searchModel\"\n (click)=\"onClickRow(item)\"\n >\n <div class=\"click-able tile-holder p-4\">\n <dl class=\"row mb-0\" *ngFor=\"let listItemField of item.listItemFields\">\n <dt class=\"col-12 col-md-5 text-xl-right\">{{ listItemField.label }}</dt>\n <dd class=\"col-12 col-md-7\">{{ listItemField.value || '-' }}</dd>\n </dl>\n </div>\n </div>\n <div class=\"col-12\" *ngIf=\"(items | listFilter: searchModel).length === 0\">\n {{ 'list.noMatchingItems' | translate }}<i>\"{{ searchModel }}\"</i>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"pagination-holder bg-light px-4 pt-4 pb-2 overflow-auto row mr-0 ml-0\"\n *ngIf=\"pagination && items?.length > 0 && fields?.length > 0\"\n >\n <div class=\"float-left page-count col-4\">\n <strong>{{\n 'list.currentPage' | translate: {current: pagination.page, total: getTotalPageCount()}\n }}</strong>\n <br />\n {{\n pagination.collectionSize === 1\n ? ('list.showingResult' | translate: {number: (items | listFilter: searchModel).length})\n : ('list.showingResults'\n | translate\n : {\n number: (items | listFilter: searchModel).length,\n total: pagination.collectionSize\n })\n }}\n </div>\n <div class=\"col-4 text-center\">\n {{ 'list.show' | translate }}\n <select [(ngModel)]=\"pagination.size\" (ngModelChange)=\"setPaginationSize($event)\">\n <option [ngValue]=\"10\">10</option>\n <option [ngValue]=\"25\">25</option>\n <option [ngValue]=\"50\">50</option>\n <option [ngValue]=\"100\">100</option>\n </select>\n {{ 'list.entries' | translate }}\n </div>\n <div class=\"col-4\">\n <ngb-pagination\n *ngIf=\"pagination.collectionSize > pagination.size\"\n class=\"float-right\"\n [collectionSize]=\"pagination.collectionSize\"\n [(page)]=\"pagination.page\"\n [pageSize]=\"pagination.size\"\n [maxSize]=\"pagination.maxPaginationItemSize\"\n [rotate]=\"true\"\n (pageChange)=\"onClickPagination(pagination.page)\"\n ></ngb-pagination>\n </div>\n </div>\n\n <div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\">\n {{ 'list.noResults' | translate }}\n </div>\n\n <div id=\"no-field-definitions\" class=\"p-5\" *ngIf=\"items?.length > 0 && fields?.length === 0\">\n {{ 'list.noFieldDefinitions' | translate }}\n </div>\n</div>\n\n<ng-template #dropdownActions let-listItemField=\"listItemField\" let-item=\"item\">\n <div class=\"dropdown\" *ngIf=\"listItemField?.value.length > 0\">\n <a\n style=\"cursor: pointer\"\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n *ngFor=\"let action of listItemField.value\"\n >\n <ng-container *ngIf=\"action.iconClass !== null\">\n <i [ngClass]=\"action.iconClass\"></i>\n </ng-container>\n {{ action?.label || '-' }}\n </a>\n </div>\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.table{table-layout:fixed}.table-responsive{overflow-x:visible}.click-able{cursor:pointer}.pagination-holder{border-top:1px solid #dee2e6}.search-holder{border-bottom:1px solid #dee2e6;padding-left:18px;padding-right:18px;height:80px}.switch-view-holder i{font-size:1.8rem;line-height:1.2rem;margin-top:9px}.tile-holder{background-color:#f5f5f5;border:1px solid transparent}.tile-holder:hover{background-color:#eee;border:1px solid #dee2e6}.page-count{margin-bottom:1rem}th:first-child,td:first-child{padding-left:25px}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:after{font-family:\"Font Awesome 5 Free\";content:\" \\f0dd\";position:absolute;margin:auto 0 auto 5px;opacity:0;transition:all .15s ease}th.sortable.is-being-sorted.ascending:after{transform:rotate(-180deg)}th.sortable:hover:after{opacity:.5}th.sortable.is-being-sorted:after{opacity:1}.action-icon,.view-icon{font-size:16px!important}\n"] }]
|
|
165
|
+
args: [{ selector: 'valtimo-list', template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div>\n <div *ngIf=\"(items?.length > 0 && fields?.length > 0) || header\">\n <div\n class=\"d-flex align-items-center search-holder bg-light\"\n [ngClass]=\"{'pb-4 pt-4': !header}\"\n *ngIf=\"isSearchable || viewMode || header\"\n >\n <div class=\"align-self-start\">\n <ng-content select=\"[header]\"></ng-content>\n </div>\n\n <div class=\"ml-auto row\">\n <input\n *ngIf=\"isSearchable\"\n class=\"form-control col-sm-8\"\n type=\"text\"\n placeholder=\"{{ 'list.search' | translate }}\"\n #searchBox\n />\n\n <div\n class=\"switch-view-holder btn-group col-sm-4 mt-1 mt-sm-0\"\n role=\"group\"\n *ngIf=\"viewMode\"\n >\n <button\n class=\"btn\"\n [ngClass]=\"viewListAs === 'table' ? 'btn-primary' : 'btn-default'\"\n (click)=\"switchView('table')\"\n >\n <i class=\"icon mdi mdi-view-headline view-icon\"></i>\n </button>\n <button\n class=\"btn\"\n [ngClass]=\"viewListAs === 'tile' ? 'btn-primary' : 'btn-default'\"\n (click)=\"switchView('tile')\"\n >\n <i class=\"icon mdi mdi-view-module view-icon\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <ng-content select=\"[tabs]\"></ng-content>\n\n <div *ngIf=\"items?.length > 0 && fields?.length > 0\">\n <div class=\"table-responsive noSwipe\" *ngIf=\"!viewMode || viewListAs === 'table'\">\n <table class=\"table table-striped table-hover m-0\" *ngIf=\"sort$ | async as sort\">\n <thead>\n <tr>\n <th\n *ngFor=\"let field of fields\"\n (click)=\"handleFieldClick(field.key, field.sortable)\"\n [ngClass]=\"{\n sortable: field.sortable,\n 'is-being-sorted': field.key === sort.state.name && sort.isSorting,\n ascending: sort.state.direction === 'ASC'\n }\"\n >\n {{ field.label }}\n </th>\n <th *ngFor=\"let action of actions\">\n {{ action.columnName }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n [ngClass]=\"{'click-able': this.rowClicked.observers.length > 0}\"\n *ngFor=\"let item of items | listFilter: searchModel; let i = index\"\n (click)=\"onClickRow(item)\"\n >\n <td class=\"align-top\" *ngFor=\"let listItemField of item.listItemFields\">\n <ng-container *ngIf=\"listItemField.type === ''\">\n {{ listItemField.value || '-' }}\n </ng-container>\n\n <ng-container\n *ngIf=\"listItemField.type === 'dropdownActions'\"\n [ngTemplateOutlet]=\"dropdownActions\"\n [ngTemplateOutletContext]=\"{listItemField: listItemField, item: item}\"\n ></ng-container>\n </td>\n <td class=\"align-top\" *ngFor=\"let action of actions\">\n <i\n class=\"action-icon\"\n style=\"cursor: pointer\"\n [ngClass]=\"action.iconClass\"\n (click)=\"action.callback(item, $event)\"\n ></i>\n </td>\n <td *ngIf=\"lastColumnTemplate\">\n <ng-container\n *ngTemplateOutlet=\"lastColumnTemplate; context: {index: i, length: items.length}\"\n ></ng-container>\n </td>\n </tr>\n <tr>\n <td *ngIf=\"(items | listFilter: searchModel).length === 0\" [colSpan]=\"fields.length\">\n {{ 'list.noMatchingItems' | translate }}<i>\"{{ searchModel }}\"</i>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div class=\"container-fluid\" *ngIf=\"viewMode && viewListAs === 'tile'\">\n <div class=\"row p-2\">\n <div\n class=\"col-12 col-sm-6 col-xl-4 p-2\"\n *ngFor=\"let item of items | listFilter: searchModel\"\n (click)=\"onClickRow(item)\"\n >\n <div class=\"click-able tile-holder p-4\">\n <dl class=\"row mb-0\" *ngFor=\"let listItemField of item.listItemFields\">\n <dt class=\"col-12 col-md-5 text-xl-right\">{{ listItemField.label }}</dt>\n <dd class=\"col-12 col-md-7\">{{ listItemField.value || '-' }}</dd>\n </dl>\n </div>\n </div>\n <div class=\"col-12\" *ngIf=\"(items | listFilter: searchModel).length === 0\">\n {{ 'list.noMatchingItems' | translate }}<i>\"{{ searchModel }}\"</i>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"pagination-holder bg-light px-4 pt-4 pb-2 overflow-auto row mr-0 ml-0\"\n *ngIf=\"pagination && items?.length > 0 && fields?.length > 0\"\n >\n <div class=\"float-left page-count col-4\">\n <strong>{{\n 'list.currentPage' | translate: {current: pagination.page, total: getTotalPageCount()}\n }}</strong>\n {{\n pagination.collectionSize === 1\n ? ('list.showingResult' | translate: {number: (items | listFilter: searchModel).length})\n : ('list.showingResults'\n | translate\n : {\n number: (items | listFilter: searchModel).length,\n total: pagination.collectionSize\n })\n }}\n </div>\n <div class=\"col-4 text-center\">\n {{ 'list.show' | translate }}\n <select [(ngModel)]=\"pagination.size\" (ngModelChange)=\"setPaginationSize($event)\">\n <option [ngValue]=\"10\">10</option>\n <option [ngValue]=\"25\">25</option>\n <option [ngValue]=\"50\">50</option>\n <option [ngValue]=\"100\">100</option>\n </select>\n {{ 'list.entries' | translate }}\n </div>\n <div class=\"col-4\">\n <ngb-pagination\n *ngIf=\"pagination.collectionSize > pagination.size\"\n class=\"float-right\"\n [collectionSize]=\"pagination.collectionSize\"\n [(page)]=\"pagination.page\"\n [pageSize]=\"pagination.size\"\n [maxSize]=\"pagination.maxPaginationItemSize\"\n [rotate]=\"true\"\n (pageChange)=\"onClickPagination(pagination.page)\"\n ></ngb-pagination>\n </div>\n </div>\n\n <div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\">\n {{ 'list.noResults' | translate }}\n </div>\n\n <div id=\"no-field-definitions\" class=\"p-5\" *ngIf=\"items?.length > 0 && fields?.length === 0\">\n {{ 'list.noFieldDefinitions' | translate }}\n </div>\n</div>\n\n<ng-template #dropdownActions let-listItemField=\"listItemField\" let-item=\"item\">\n <div class=\"dropdown\" *ngIf=\"listItemField?.value.length > 0\">\n <a\n style=\"cursor: pointer\"\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n *ngFor=\"let action of listItemField.value\"\n >\n <ng-container *ngIf=\"action.iconClass !== null\">\n <i [ngClass]=\"action.iconClass\"></i>\n </ng-container>\n {{ action?.label || '-' }}\n </a>\n </div>\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.table{table-layout:fixed}.table-responsive{overflow-x:visible}.click-able{cursor:pointer}.pagination-holder{border-top:1px solid #dee2e6}.search-holder{border-bottom:1px solid #dee2e6;padding-left:18px;padding-right:18px;height:80px}.switch-view-holder i{font-size:1.8rem;line-height:1.2rem;margin-top:9px}.tile-holder{background-color:#f5f5f5;border:1px solid transparent}.tile-holder:hover{background-color:#eee;border:1px solid #dee2e6}.page-count{margin-bottom:1rem;display:flex;flex-direction:column}.page-count strong:first-child{margin-bottom:6px}th:first-child,td:first-child{padding-left:25px}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:after{font-family:\"Font Awesome 5 Free\";content:\" \\f0dd\";position:absolute;margin:auto 0 auto 5px;opacity:0;transition:all .15s ease}th.sortable.is-being-sorted.ascending:after{transform:rotate(-180deg)}th.sortable:hover:after{opacity:.5}th.sortable.is-being-sorted:after{opacity:1}.action-icon,.view-icon{font-size:16px!important}\n"] }]
|
|
166
166
|
}], ctorParameters: function () { return [{ type: i1.ViewContentService }, { type: i2.NGXLogger }]; }, propDecorators: { items: [{
|
|
167
167
|
type: Input
|
|
168
168
|
}], fields: [{
|
|
@@ -197,4 +197,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
197
197
|
type: ViewChild,
|
|
198
198
|
args: ['searchBox']
|
|
199
199
|
}] } });
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxZQUFZLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQVFsRCxNQUFNLE9BQU8sYUFBYTtJQStCeEIsWUFBb0Isa0JBQXNDLEVBQVUsTUFBaUI7UUFBakUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVc7UUF0QjVFLFlBQU8sR0FBVSxFQUFFLENBQUM7UUFLbkIsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25ELHNCQUFpQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFELGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdEQsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQy9DLGdCQUFXLEdBQTRCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFN0QsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFHdkIsaUNBQTRCLEdBQUcsSUFBSSxDQUFDO1FBR2xDLFVBQUssR0FBRyxJQUFJLGVBQWUs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SztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQU1pQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEaXJlY3Rpb24sIFNvcnRTdGF0ZX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtOR1hMb2dnZXJ9IGZyb20gJ25neC1sb2dnZXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtWaWV3Q29udGVudFNlcnZpY2V9IGZyb20gJy4uL3ZpZXctY29udGVudC92aWV3LWNvbnRlbnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIHN0YXRpYyBQQUdJTkFUSU9OX1NJWkUgPSAnUGFnaW5hdGlvblNpemUnO1xuXG4gIEBJbnB1dCgpIGl0ZW1zOiBBcnJheTxhbnk+O1xuICBASW5wdXQoKSBmaWVsZHM6IEFycmF5PGFueT47XG4gIEBJbnB1dCgpIHBhZ2luYXRpb24/OiBhbnk7XG4gIEBJbnB1dCgpIHZpZXdNb2RlPzogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNTZWFyY2hhYmxlPzogYm9vbGVhbjtcbiAgQElucHV0KCkgaGVhZGVyPzogYm9vbGVhbjtcbiAgQElucHV0KCkgYWN0aW9uczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgcGFnaW5hdGlvbklkZW50aWZpZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGluaXRpYWxTb3J0U3RhdGU6IFNvcnRTdGF0ZTtcbiAgQElucHV0KCkgbGFzdENvbHVtblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAT3V0cHV0KCkgcm93Q2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwYWdpbmF0aW9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwYWdpbmF0aW9uU2V0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNlYXJjaDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlZDogRXZlbnRFbWl0dGVyPFNvcnRTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIGhlYWRlclByb3ZpZGVkID0gZmFsc2U7XG4gIHB1YmxpYyB2aWV3TGlzdEFzOiBzdHJpbmc7XG4gIHB1YmxpYyBzZWFyY2hNb2RlbDogc3RyaW5nO1xuICBwdWJsaWMgcmVnRXhwU3RyaW5nUmVtb3ZlVW5kZXJzY29yZSA9IC9fL2c7XG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaEJveCcpIHNlYXJjaEJveDogRWxlbWVudFJlZjtcblxuICByZWFkb25seSBzb3J0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U29ydFN0YXRlPih7XG4gICAgc3RhdGU6IHtuYW1lOiAnJywgZGlyZWN0aW9uOiAnREVTQyd9LFxuICAgIGlzU29ydGluZzogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlld0NvbnRlbnRTZXJ2aWNlOiBWaWV3Q29udGVudFNlcnZpY2UsIHByaXZhdGUgbG9nZ2VyOiBOR1hMb2dnZXIpIHtcbiAgICB0aGlzLnZpZXdMaXN0QXMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndmlld0xpc3RBcycpIHx8ICd0YWJsZSc7XG4gIH1cblxuICBsb2FkUGFnaW5hdGlvblNpemUoKTogdm9pZCB7XG4gICAgY29uc3QgZW50cmllcyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFxuICAgICAgYCR7dGhpcy5wYWdpbmF0aW9uSWRlbnRpZmllcn0ke0xpc3RDb21wb25lbnQuUEFHSU5BVElPTl9TSVpFfWBcbiAgICApO1xuICAgIGlmIChlbnRyaWVzICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnBhZ2luYXRpb24uc2l6ZSA9ICtlbnRyaWVzO1xuICAgICAgdGhpcy5wYWdpbmF0aW9uU2V0LmVtaXQoK2VudHJpZXMpO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1BhZ2luYXRpb24gbG9hZGVkIGZyb20gbG9jYWwgc3RvcmFnZSBmb3IgdGhpcyBsaXN0LiBDdXJyZW50OiAnLCBlbnRyaWVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICdQYWdpbmF0aW9uIGRvZXMgTk9UIGV4aXN0IGluIGxvY2FsIHN0b3JhZ2UgZm9yIHRoaXMgbGlzdC4gV2lsbCB1c2UgZGVmYXVsdC4gQ2hhbmdlIGl0IHRvIGNyZWF0ZSBhbiBlbnRyeS4nXG4gICAgICApO1xuICAgICAgdGhpcy5wYWdpbmF0aW9uU2V0LmVtaXQoMTApO1xuICAgIH1cbiAgfVxuXG4gIHNldFBhZ2luYXRpb25TaXplKG51bWJlck9mRW50cmllczogc3RyaW5nKSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICBgJHt0aGlzLnBhZ2luYXRpb25JZGVudGlmaWVyfSR7TGlzdENvbXBvbmVudC5QQUdJTkFUSU9OX1NJWkV9YCxcbiAgICAgIG51bWJlck9mRW50cmllc1xuICAgICk7XG4gICAgdGhpcy5wYWdpbmF0aW9uLnNpemUgPSBudW1iZXJPZkVudHJpZXM7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ1BhZ2luYXRpb24gc2V0IGluIGxvY2FsIHN0b3JhZ2UgZm9yIHRoaXMgbGlzdDogJywgbnVtYmVyT2ZFbnRyaWVzKTtcbiAgICB0aGlzLnBhZ2luYXRpb25TZXQuZW1pdChudW1iZXJPZkVudHJpZXMpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbikge1xuICAgICAgdGhpcy5sb2FkUGFnaW5hdGlvblNpemUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbml0aWFsU29ydFN0YXRlKSB7XG4gICAgICB0aGlzLnNvcnQkLm5leHQodGhpcy5pbml0aWFsU29ydFN0YXRlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuaXRlbXMgJiYgY2hhbmdlcy5pdGVtcy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMudHJhbnNmb3JtTGlzdEl0ZW1zTWF0Y2hGaWVsZHMoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcz8uaW5pdGlhbFNvcnRTdGF0ZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnNvcnQkLm5leHQoY2hhbmdlcz8uaW5pdGlhbFNvcnRTdGF0ZT8uY3VycmVudFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuaXNTZWFyY2hhYmxlKSB7XG4gICAgICBmcm9tRXZlbnQodGhpcy5zZWFyY2hCb3gubmF0aXZlRWxlbWVudCwgJ2tleXVwJylcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5zZWFyY2hCb3gubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2gub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIGN1c3RvbSBzZWFyY2ggY2FsbGJhayBpcyBzcGVjaWZpZWQsIHBlcmhhcHMgdG8gcXVlcnkgb24gdGhlIHNlcnZlciBzaWRlXG4gICAgICAgICAgICB0aGlzLnNlYXJjaC5lbWl0KHZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hNb2RlbCA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRyYW5zZm9ybUxpc3RJdGVtc01hdGNoRmllbGRzKCkge1xuICAgIGlmICh0aGlzLml0ZW1zICYmIHRoaXMuZmllbGRzKSB7XG4gICAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGl0ZW0ubGlzdEl0ZW1GaWVsZHMgPSB0aGlzLmZpZWxkcy5tYXAoZmllbGQgPT4gKHtcbiAgICAgICAgICBrZXk6IGZpZWxkLmtleSxcbiAgICAgICAgICBsYWJlbDogZmllbGQubGFiZWwsXG4gICAgICAgICAgdHlwZTogZmllbGQudHlwZSB8fCAnJyxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5yZXNvbHZlT2JqZWN0KGZpZWxkLCBpdGVtKSxcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQ2xpY2tSb3coaXRlbSkge1xuICAgIHRoaXMucm93Q2xpY2tlZC5lbWl0KGl0ZW0pO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmVPYmplY3QoZGVmaW5pdGlvbjogYW55LCBvYmo6IGFueSkge1xuICAgIGNvbnN0IGRlZmluaXRpb25LZXkgPSBkZWZpbml0aW9uLmtleTtcbiAgICBjb25zdCBjdXN0b21Qcm9wU3RyaW5nID0gJyQuJztcbiAgICBjb25zdCBrZXkgPSBkZWZpbml0aW9uS2V5LmluY2x1ZGVzKGN1c3RvbVByb3BTdHJpbmcpXG4gICAgICA/IGRlZmluaXRpb25LZXkuc3BsaXQoY3VzdG9tUHJvcFN0cmluZylbMV1cbiAgICAgIDogZGVmaW5pdGlvbktleTtcbiAgICBjb25zdCByZXNvbHZlZE9ialZhbHVlID0ga2V5LnNwbGl0KCcuJykucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXJyKSB7XG4gICAgICByZXR1cm4gcHJldiA/IHByZXZbY3Vycl0gOiBudWxsO1xuICAgIH0sIG9iaiB8fCBzZWxmKTtcbiAgICByZXR1cm4gdGhpcy52aWV3Q29udGVudFNlcnZpY2UuZ2V0KHJlc29sdmVkT2JqVmFsdWUsIGRlZmluaXRpb24pO1xuICB9XG5cbiAgcHVibGljIHN3aXRjaFZpZXcodHlwZSkge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd2aWV3TGlzdEFzJywgdHlwZSk7XG4gICAgdGhpcy52aWV3TGlzdEFzID0gdHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUb3RhbFBhZ2VDb3VudCgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMucGFnaW5hdGlvbi5jb2xsZWN0aW9uU2l6ZSAvIHRoaXMucGFnaW5hdGlvbi5zaXplKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsaWNrUGFnaW5hdGlvbihwYWdlKSB7XG4gICAgdGhpcy5wYWdpbmF0aW9uQ2xpY2tlZC5lbWl0KHBhZ2UpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUZpZWxkQ2xpY2soa2V5OiBzdHJpbmcsIHNvcnRhYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgZGVzYzogRGlyZWN0aW9uID0gJ0RFU0MnO1xuICAgIGNvbnN0IGFzYzogRGlyZWN0aW9uID0gJ0FTQyc7XG5cbiAgICBpZiAoIXNvcnRhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zb3J0JC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShzb3J0ID0+IHtcbiAgICAgIGxldCBuZXdTdGF0ZTogU29ydFN0YXRlO1xuXG4gICAgICBpZiAoc29ydC5zdGF0ZS5uYW1lID09PSBrZXkpIHtcbiAgICAgICAgaWYgKCFzb3J0LmlzU29ydGluZykge1xuICAgICAgICAgIG5ld1N0YXRlID0ge3N0YXRlOiB7Li4uc29ydC5zdGF0ZSwgZGlyZWN0aW9uOiBkZXNjfSwgaXNTb3J0aW5nOiB0cnVlfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoc29ydC5zdGF0ZS5kaXJlY3Rpb24gPT09IGRlc2MpIHtcbiAgICAgICAgICAgIG5ld1N0YXRlID0gey4uLnNvcnQsIHN0YXRlOiB7Li4uc29ydC5zdGF0ZSwgZGlyZWN0aW9uOiBhc2N9fTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB7c3RhdGU6IHsuLi5zb3J0LnN0YXRlLCBkaXJlY3Rpb246IGRlc2N9LCBpc1NvcnRpbmc6IGZhbHNlfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1N0YXRlID0ge3N0YXRlOiB7bmFtZToga2V5LCBkaXJlY3Rpb246IGRlc2N9LCBpc1NvcnRpbmc6IHRydWV9O1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNvcnQkLm5leHQobmV3U3RhdGUpO1xuICAgICAgdGhpcy5zb3J0Q2hhbmdlZC5lbWl0KG5ld1N0YXRlKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2PlxuICA8ZGl2ICpuZ0lmPVwiKGl0ZW1zPy5sZW5ndGggPiAwICYmIGZpZWxkcz8ubGVuZ3RoID4gMCkgfHwgaGVhZGVyXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHNlYXJjaC1ob2xkZXIgYmctbGlnaHRcIlxuICAgICAgW25nQ2xhc3NdPVwieydwYi00IHB0LTQnOiAhaGVhZGVyfVwiXG4gICAgICAqbmdJZj1cImlzU2VhcmNoYWJsZSB8fCB2aWV3TW9kZSB8fCBoZWFkZXJcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJhbGlnbi1zZWxmLXN0YXJ0XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltoZWFkZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtbC1hdXRvIHJvd1wiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAqbmdJZj1cImlzU2VhcmNoYWJsZVwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY29sLXNtLThcIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdsaXN0LnNlYXJjaCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICNzZWFyY2hCb3hcbiAgICAgICAgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzd2l0Y2gtdmlldy1ob2xkZXIgYnRuLWdyb3VwIGNvbC1zbS00IG10LTEgbXQtc20tMFwiXG4gICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAqbmdJZj1cInZpZXdNb2RlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInZpZXdMaXN0QXMgPT09ICd0YWJsZScgPyAnYnRuLXByaW1hcnknIDogJ2J0bi1kZWZhdWx0J1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic3dpdGNoVmlldygndGFibGUnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktdmlldy1oZWFkbGluZSB2aWV3LWljb25cIj48L2k+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwidmlld0xpc3RBcyA9PT0gJ3RpbGUnID8gJ2J0bi1wcmltYXJ5JyA6ICdidG4tZGVmYXVsdCdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInN3aXRjaFZpZXcoJ3RpbGUnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktdmlldy1tb2R1bGUgdmlldy1pY29uXCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbdGFic11cIj48L25nLWNvbnRlbnQ+XG5cbiAgPGRpdiAqbmdJZj1cIml0ZW1zPy5sZW5ndGggPiAwICYmIGZpZWxkcz8ubGVuZ3RoID4gMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlIG5vU3dpcGVcIiAqbmdJZj1cIiF2aWV3TW9kZSB8fCB2aWV3TGlzdEFzID09PSAndGFibGUnXCI+XG4gICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWhvdmVyIG0tMFwiICpuZ0lmPVwic29ydCQgfCBhc3luYyBhcyBzb3J0XCI+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkc1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVGaWVsZENsaWNrKGZpZWxkLmtleSwgZmllbGQuc29ydGFibGUpXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmaWVsZC5zb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAnaXMtYmVpbmctc29ydGVkJzogZmllbGQua2V5ID09PSBzb3J0LnN0YXRlLm5hbWUgJiYgc29ydC5pc1NvcnRpbmcsXG4gICAgICAgICAgICAgICAgYXNjZW5kaW5nOiBzb3J0LnN0YXRlLmRpcmVjdGlvbiA9PT0gJ0FTQydcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsIH19XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiPlxuICAgICAgICAgICAgICB7eyBhY3Rpb24uY29sdW1uTmFtZSB9fVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2NsaWNrLWFibGUnOiB0aGlzLnJvd0NsaWNrZWQub2JzZXJ2ZXJzLmxlbmd0aCA+IDB9XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zIHwgbGlzdEZpbHRlcjogc2VhcmNoTW9kZWw7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tSb3coaXRlbSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFsaWduLXRvcFwiICpuZ0Zvcj1cImxldCBsaXN0SXRlbUZpZWxkIG9mIGl0ZW0ubGlzdEl0ZW1GaWVsZHNcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3RJdGVtRmllbGQudHlwZSA9PT0gJydcIj5cbiAgICAgICAgICAgICAgICB7eyBsaXN0SXRlbUZpZWxkLnZhbHVlIHx8ICctJyB9fVxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJsaXN0SXRlbUZpZWxkLnR5cGUgPT09ICdkcm9wZG93bkFjdGlvbnMnXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkcm9wZG93bkFjdGlvbnNcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7bGlzdEl0ZW1GaWVsZDogbGlzdEl0ZW1GaWVsZCwgaXRlbTogaXRlbX1cIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWxpZ24tdG9wXCIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24taWNvblwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImFjdGlvbi5pY29uQ2xhc3NcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb24uY2FsbGJhY2soaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkICpuZ0lmPVwibGFzdENvbHVtblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImxhc3RDb2x1bW5UZW1wbGF0ZTsgY29udGV4dDoge2luZGV4OiBpLCBsZW5ndGg6IGl0ZW1zLmxlbmd0aH1cIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRkICpuZ0lmPVwiKGl0ZW1zIHwgbGlzdEZpbHRlcjogc2VhcmNoTW9kZWwpLmxlbmd0aCA9PT0gMFwiIFtjb2xTcGFuXT1cImZpZWxkcy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAge3sgJ2xpc3Qubm9NYXRjaGluZ0l0ZW1zJyB8IHRyYW5zbGF0ZSB9fTxpPlwie3sgc2VhcmNoTW9kZWwgfX1cIjwvaT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCIgKm5nSWY9XCJ2aWV3TW9kZSAmJiB2aWV3TGlzdEFzID09PSAndGlsZSdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcC0yXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNvbC0xMiBjb2wtc20tNiBjb2wteGwtNCBwLTJcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zIHwgbGlzdEZpbHRlcjogc2VhcmNoTW9kZWxcIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrUm93KGl0ZW0pXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGljay1hYmxlIHRpbGUtaG9sZGVyIHAtNFwiPlxuICAgICAgICAgICAgPGRsIGNsYXNzPVwicm93IG1iLTBcIiAqbmdGb3I9XCJsZXQgbGlzdEl0ZW1GaWVsZCBvZiBpdGVtLmxpc3RJdGVtRmllbGRzXCI+XG4gICAgICAgICAgICAgIDxkdCBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNSB0ZXh0LXhsLXJpZ2h0XCI+e3sgbGlzdEl0ZW1GaWVsZC5sYWJlbCB9fTwvZHQ+XG4gICAgICAgICAgICAgIDxkZCBjbGFzcz1cImNvbC0xMiBjb2wtbWQtN1wiPnt7IGxpc3RJdGVtRmllbGQudmFsdWUgfHwgJy0nIH19PC9kZD5cbiAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgKm5nSWY9XCIoaXRlbXMgfCBsaXN0RmlsdGVyOiBzZWFyY2hNb2RlbCkubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAge3sgJ2xpc3Qubm9NYXRjaGluZ0l0ZW1zJyB8IHRyYW5zbGF0ZSB9fTxpPlwie3sgc2VhcmNoTW9kZWwgfX1cIjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwicGFnaW5hdGlvbi1ob2xkZXIgYmctbGlnaHQgcHgtNCBwdC00IHBiLTIgb3ZlcmZsb3ctYXV0byByb3cgbXItMCBtbC0wXCJcbiAgICAqbmdJZj1cInBhZ2luYXRpb24gJiYgaXRlbXM/Lmxlbmd0aCA+IDAgJiYgZmllbGRzPy5sZW5ndGggPiAwXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJmbG9hdC1sZWZ0IHBhZ2UtY291bnQgY29sLTRcIj5cbiAgICAgIDxzdHJvbmc+e3tcbiAgICAgICAgJ2xpc3QuY3VycmVudFBhZ2UnIHwgdHJhbnNsYXRlOiB7Y3VycmVudDogcGFnaW5hdGlvbi5wYWdlLCB0b3RhbDogZ2V0VG90YWxQYWdlQ291bnQoKX1cbiAgICAgIH19PC9zdHJvbmc+XG4gICAgICA8YnIgLz5cbiAgICAgIHt7XG4gICAgICAgIHBhZ2luYXRpb24uY29sbGVjdGlvblNpemUgPT09IDFcbiAgICAgICAgICA/ICgnbGlzdC5zaG93aW5nUmVzdWx0JyB8IHRyYW5zbGF0ZToge251bWJlcjogKGl0ZW1zIHwgbGlzdEZpbHRlcjogc2VhcmNoTW9kZWwpLmxlbmd0aH0pXG4gICAgICAgICAgOiAoJ2xpc3Quc2hvd2luZ1Jlc3VsdHMnXG4gICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgIG51bWJlcjogKGl0ZW1zIHwgbGlzdEZpbHRlcjogc2VhcmNoTW9kZWwpLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgIHRvdGFsOiBwYWdpbmF0aW9uLmNvbGxlY3Rpb25TaXplXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC00IHRleHQtY2VudGVyXCI+XG4gICAgICB7eyAnbGlzdC5zaG93JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cInBhZ2luYXRpb24uc2l6ZVwiIChuZ01vZGVsQ2hhbmdlKT1cInNldFBhZ2luYXRpb25TaXplKCRldmVudClcIj5cbiAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCIxMFwiPjEwPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiMjVcIj4yNTwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIjUwXCI+NTA8L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCIxMDBcIj4xMDA8L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgICAge3sgJ2xpc3QuZW50cmllcycgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cbiAgICAgIDxuZ2ItcGFnaW5hdGlvblxuICAgICAgICAqbmdJZj1cInBhZ2luYXRpb24uY29sbGVjdGlvblNpemUgPiBwYWdpbmF0aW9uLnNpemVcIlxuICAgICAgICBjbGFzcz1cImZsb2F0LXJpZ2h0XCJcbiAgICAgICAgW2NvbGxlY3Rpb25TaXplXT1cInBhZ2luYXRpb24uY29sbGVjdGlvblNpemVcIlxuICAgICAgICBbKHBhZ2UpXT1cInBhZ2luYXRpb24ucGFnZVwiXG4gICAgICAgIFtwYWdlU2l6ZV09XCJwYWdpbmF0aW9uLnNpemVcIlxuICAgICAgICBbbWF4U2l6ZV09XCJwYWdpbmF0aW9uLm1heFBhZ2luYXRpb25JdGVtU2l6ZVwiXG4gICAgICAgIFtyb3RhdGVdPVwidHJ1ZVwiXG4gICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uQ2xpY2tQYWdpbmF0aW9uKHBhZ2luYXRpb24ucGFnZSlcIlxuICAgICAgPjwvbmdiLXBhZ2luYXRpb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgaWQ9XCJuby1yZXN1bHRzXCIgY2xhc3M9XCJwLTVcIiAqbmdJZj1cIml0ZW1zPy5sZW5ndGggPT09IDBcIj5cbiAgICB7eyAnbGlzdC5ub1Jlc3VsdHMnIHwgdHJhbnNsYXRlIH19XG4gIDwvZGl2PlxuXG4gIDxkaXYgaWQ9XCJuby1maWVsZC1kZWZpbml0aW9uc1wiIGNsYXNzPVwicC01XCIgKm5nSWY9XCJpdGVtcz8ubGVuZ3RoID4gMCAmJiBmaWVsZHM/Lmxlbmd0aCA9PT0gMFwiPlxuICAgIHt7ICdsaXN0Lm5vRmllbGREZWZpbml0aW9ucycgfCB0cmFuc2xhdGUgfX1cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNkcm9wZG93bkFjdGlvbnMgbGV0LWxpc3RJdGVtRmllbGQ9XCJsaXN0SXRlbUZpZWxkXCIgbGV0LWl0ZW09XCJpdGVtXCI+XG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiICpuZ0lmPVwibGlzdEl0ZW1GaWVsZD8udmFsdWUubGVuZ3RoID4gMFwiPlxuICAgIDxhXG4gICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZSBkLWJsb2NrXCJcbiAgICAgIGlkPVwiZHJvcGRvd25NZW51XCJcbiAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIlxuICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cImFjdGlvbi1pY29uIGljb24gbWRpIG1kaS1kb3RzLXZlcnRpY2FsXCI+PC9pPlxuICAgIDwvYT5cbiAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duTWVudVwiPlxuICAgICAgPGFcbiAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5jYWxsYmFjayhpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIHAtMlwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgbGlzdEl0ZW1GaWVsZC52YWx1ZVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24uaWNvbkNsYXNzICE9PSBudWxsXCI+XG4gICAgICAgICAgPGkgW25nQ2xhc3NdPVwiYWN0aW9uLmljb25DbGFzc1wiPjwvaT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIHt7IGFjdGlvbj8ubGFiZWwgfHwgJy0nIH19XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxZQUFZLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQVFsRCxNQUFNLE9BQU8sYUFBYTtJQStCeEIsWUFBb0Isa0JBQXNDLEVBQVUsTUFBaUI7UUFBakUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVc7UUF0QjVFLFlBQU8sR0FBVSxFQUFFLENBQUM7UUFLbkIsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25ELHNCQUFpQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFELGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdEQsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQy9DLGdCQUFXLEdBQTRCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFN0QsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFHdkIsaUNBQTRCLEdBQUcsSUFBSSxDQUFDO1FBR2xDLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBWTtZQUM5QyxLQUFLLEVBQUUsRUFBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUM7WUFDcEMsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQyxDQUFDO1FBR0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLE9BQU8sQ0FBQztJQUNsRSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQ2xDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGFBQWEsQ0FBQyxlQUFlLEVBQUUsQ0FDL0QsQ0FBQztRQUNGLElBQUksT0FBTyxLQUFLLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLCtEQUErRCxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQzdGO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiwyR0FBMkcsQ0FDNUcsQ0FBQztZQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLGVBQXVCO1FBQ3ZDLFlBQVksQ0FBQyxPQUFPLENBQ2xCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGFBQWEsQ0FBQyxlQUFlLEVBQUUsRUFDOUQsZUFBZSxDQUNoQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGlEQUFpRCxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzNCO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRTtZQUMvQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztTQUN0QztRQUVELElBQUksT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRTtZQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDMUQ7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDO2lCQUM3QyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN2QixTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztnQkFDakQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNwQywwRUFBMEU7b0JBQzFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUN6QjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztpQkFDMUI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVNLDZCQUE2QjtRQUNsQyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzlDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztvQkFDZCxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7b0JBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUU7b0JBQ3RCLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7aUJBQ3ZDLENBQUMsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTSxVQUFVLENBQUMsSUFBSTtRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sYUFBYSxDQUFDLFVBQWUsRUFBRSxHQUFRO1FBQzVDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFDckMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDOUIsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNsRCxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQ2xCLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUUsSUFBSTtZQUNqRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUNoQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFJO1FBQ3BCLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVNLGlCQUFpQixDQUFDLElBQUk7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsR0FBVyxFQUFFLFFBQWlCO1FBQ3BELE1BQU0sSUFBSSxHQUFjLE1BQU0sQ0FBQztRQUMvQixNQUFNLEdBQUcsR0FBYyxLQUFLLENBQUM7UUFFN0IsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN4QyxJQUFJLFFBQW1CLENBQUM7WUFFeEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUNuQixRQUFRLEdBQUcsRUFBQyxLQUFLLEVBQUUsRUFBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQztpQkFDdkU7cUJBQU07b0JBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUU7d0JBQ2pDLFFBQVEsR0FBRyxFQUFDLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLEVBQUMsQ0FBQztxQkFDOUQ7eUJBQU07d0JBQ0wsUUFBUSxHQUFHLEVBQUMsS0FBSyxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUM7cUJBQ3hFO2lCQUNGO2FBQ0Y7aUJBQU07Z0JBQ0wsUUFBUSxHQUFHLEVBQUMsS0FBSyxFQUFFLEVBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDO2FBQ25FO1lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQXRLYyw2QkFBZSxHQUFHLGdCQUFnQixDQUFDOzJHQUR2QyxhQUFhOytGQUFiLGFBQWEsOG1CQ3hDMUIsbWxRQThOQTs0RkR0TGEsYUFBYTtrQkFMekIsU0FBUzsrQkFDRSxjQUFjO2lJQU9mLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQU1pQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEaXJlY3Rpb24sIFNvcnRTdGF0ZX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtOR1hMb2dnZXJ9IGZyb20gJ25neC1sb2dnZXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtWaWV3Q29udGVudFNlcnZpY2V9IGZyb20gJy4uL3ZpZXctY29udGVudC92aWV3LWNvbnRlbnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIHN0YXRpYyBQQUdJTkFUSU9OX1NJWkUgPSAnUGFnaW5hdGlvblNpemUnO1xuXG4gIEBJbnB1dCgpIGl0ZW1zOiBBcnJheTxhbnk+O1xuICBASW5wdXQoKSBmaWVsZHM6IEFycmF5PGFueT47XG4gIEBJbnB1dCgpIHBhZ2luYXRpb24/OiBhbnk7XG4gIEBJbnB1dCgpIHZpZXdNb2RlPzogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNTZWFyY2hhYmxlPzogYm9vbGVhbjtcbiAgQElucHV0KCkgaGVhZGVyPzogYm9vbGVhbjtcbiAgQElucHV0KCkgYWN0aW9uczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgcGFnaW5hdGlvbklkZW50aWZpZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGluaXRpYWxTb3J0U3RhdGU6IFNvcnRTdGF0ZTtcbiAgQElucHV0KCkgbGFzdENvbHVtblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAT3V0cHV0KCkgcm93Q2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwYWdpbmF0aW9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwYWdpbmF0aW9uU2V0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNlYXJjaDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlZDogRXZlbnRFbWl0dGVyPFNvcnRTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIGhlYWRlclByb3ZpZGVkID0gZmFsc2U7XG4gIHB1YmxpYyB2aWV3TGlzdEFzOiBzdHJpbmc7XG4gIHB1YmxpYyBzZWFyY2hNb2RlbDogc3RyaW5nO1xuICBwdWJsaWMgcmVnRXhwU3RyaW5nUmVtb3ZlVW5kZXJzY29yZSA9IC9fL2c7XG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaEJveCcpIHNlYXJjaEJveDogRWxlbWVudFJlZjtcblxuICByZWFkb25seSBzb3J0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U29ydFN0YXRlPih7XG4gICAgc3RhdGU6IHtuYW1lOiAnJywgZGlyZWN0aW9uOiAnREVTQyd9LFxuICAgIGlzU29ydGluZzogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlld0NvbnRlbnRTZXJ2aWNlOiBWaWV3Q29udGVudFNlcnZpY2UsIHByaXZhdGUgbG9nZ2VyOiBOR1hMb2dnZXIpIHtcbiAgICB0aGlzLnZpZXdMaXN0QXMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndmlld0xpc3RBcycpIHx8ICd0YWJsZSc7XG4gIH1cblxuICBsb2FkUGFnaW5hdGlvblNpemUoKTogdm9pZCB7XG4gICAgY29uc3QgZW50cmllcyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFxuICAgICAgYCR7dGhpcy5wYWdpbmF0aW9uSWRlbnRpZmllcn0ke0xpc3RDb21wb25lbnQuUEFHSU5BVElPTl9TSVpFfWBcbiAgICApO1xuICAgIGlmIChlbnRyaWVzICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnBhZ2luYXRpb24uc2l6ZSA9ICtlbnRyaWVzO1xuICAgICAgdGhpcy5wYWdpbmF0aW9uU2V0LmVtaXQoK2VudHJpZXMpO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1BhZ2luYXRpb24gbG9hZGVkIGZyb20gbG9jYWwgc3RvcmFnZSBmb3IgdGhpcyBsaXN0LiBDdXJyZW50OiAnLCBlbnRyaWVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICdQYWdpbmF0aW9uIGRvZXMgTk9UIGV4aXN0IGluIGxvY2FsIHN0b3JhZ2UgZm9yIHRoaXMgbGlzdC4gV2lsbCB1c2UgZGVmYXVsdC4gQ2hhbmdlIGl0IHRvIGNyZWF0ZSBhbiBlbnRyeS4nXG4gICAgICApO1xuICAgICAgdGhpcy5wYWdpbmF0aW9uU2V0LmVtaXQoMTApO1xuICAgIH1cbiAgfVxuXG4gIHNldFBhZ2luYXRpb25TaXplKG51bWJlck9mRW50cmllczogc3RyaW5nKSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICBgJHt0aGlzLnBhZ2luYXRpb25JZGVudGlmaWVyfSR7TGlzdENvbXBvbmVudC5QQUdJTkFUSU9OX1NJWkV9YCxcbiAgICAgIG51bWJlck9mRW50cmllc1xuICAgICk7XG4gICAgdGhpcy5wYWdpbmF0aW9uLnNpemUgPSBudW1iZXJPZkVudHJpZXM7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ1BhZ2luYXRpb24gc2V0IGluIGxvY2FsIHN0b3JhZ2UgZm9yIHRoaXMgbGlzdDogJywgbnVtYmVyT2ZFbnRyaWVzKTtcbiAgICB0aGlzLnBhZ2luYXRpb25TZXQuZW1pdChudW1iZXJPZkVudHJpZXMpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbikge1xuICAgICAgdGhpcy5sb2FkUGFnaW5hdGlvblNpemUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbml0aWFsU29ydFN0YXRlKSB7XG4gICAgICB0aGlzLnNvcnQkLm5leHQodGhpcy5pbml0aWFsU29ydFN0YXRlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuaXRlbXMgJiYgY2hhbmdlcy5pdGVtcy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMudHJhbnNmb3JtTGlzdEl0ZW1zTWF0Y2hGaWVsZHMoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcz8uaW5pdGlhbFNvcnRTdGF0ZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnNvcnQkLm5leHQoY2hhbmdlcz8uaW5pdGlhbFNvcnRTdGF0ZT8uY3VycmVudFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuaXNTZWFyY2hhYmxlKSB7XG4gICAgICBmcm9tRXZlbnQodGhpcy5zZWFyY2hCb3gubmF0aXZlRWxlbWVudCwgJ2tleXVwJylcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5zZWFyY2hCb3gubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2gub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIGN1c3RvbSBzZWFyY2ggY2FsbGJhayBpcyBzcGVjaWZpZWQsIHBlcmhhcHMgdG8gcXVlcnkgb24gdGhlIHNlcnZlciBzaWRlXG4gICAgICAgICAgICB0aGlzLnNlYXJjaC5lbWl0KHZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hNb2RlbCA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRyYW5zZm9ybUxpc3RJdGVtc01hdGNoRmllbGRzKCkge1xuICAgIGlmICh0aGlzLml0ZW1zICYmIHRoaXMuZmllbGRzKSB7XG4gICAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGl0ZW0ubGlzdEl0ZW1GaWVsZHMgPSB0aGlzLmZpZWxkcy5tYXAoZmllbGQgPT4gKHtcbiAgICAgICAgICBrZXk6IGZpZWxkLmtleSxcbiAgICAgICAgICBsYWJlbDogZmllbGQubGFiZWwsXG4gICAgICAgICAgdHlwZTogZmllbGQudHlwZSB8fCAnJyxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5yZXNvbHZlT2JqZWN0KGZpZWxkLCBpdGVtKSxcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQ2xpY2tSb3coaXRlbSkge1xuICAgIHRoaXMucm93Q2xpY2tlZC5lbWl0KGl0ZW0pO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmVPYmplY3QoZGVmaW5pdGlvbjogYW55LCBvYmo6IGFueSkge1xuICAgIGNvbnN0IGRlZmluaXRpb25LZXkgPSBkZWZpbml0aW9uLmtleTtcbiAgICBjb25zdCBjdXN0b21Qcm9wU3RyaW5nID0gJyQuJztcbiAgICBjb25zdCBrZXkgPSBkZWZpbml0aW9uS2V5LmluY2x1ZGVzKGN1c3RvbVByb3BTdHJpbmcpXG4gICAgICA/IGRlZmluaXRpb25LZXkuc3BsaXQoY3VzdG9tUHJvcFN0cmluZylbMV1cbiAgICAgIDogZGVmaW5pdGlvbktleTtcbiAgICBjb25zdCByZXNvbHZlZE9ialZhbHVlID0ga2V5LnNwbGl0KCcuJykucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXJyKSB7XG4gICAgICByZXR1cm4gcHJldiA/IHByZXZbY3Vycl0gOiBudWxsO1xuICAgIH0sIG9iaiB8fCBzZWxmKTtcbiAgICByZXR1cm4gdGhpcy52aWV3Q29udGVudFNlcnZpY2UuZ2V0KHJlc29sdmVkT2JqVmFsdWUsIGRlZmluaXRpb24pO1xuICB9XG5cbiAgcHVibGljIHN3aXRjaFZpZXcodHlwZSkge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd2aWV3TGlzdEFzJywgdHlwZSk7XG4gICAgdGhpcy52aWV3TGlzdEFzID0gdHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUb3RhbFBhZ2VDb3VudCgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMucGFnaW5hdGlvbi5jb2xsZWN0aW9uU2l6ZSAvIHRoaXMucGFnaW5hdGlvbi5zaXplKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsaWNrUGFnaW5hdGlvbihwYWdlKSB7XG4gICAgdGhpcy5wYWdpbmF0aW9uQ2xpY2tlZC5lbWl0KHBhZ2UpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUZpZWxkQ2xpY2soa2V5OiBzdHJpbmcsIHNvcnRhYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgZGVzYzogRGlyZWN0aW9uID0gJ0RFU0MnO1xuICAgIGNvbnN0IGFzYzogRGlyZWN0aW9uID0gJ0FTQyc7XG5cbiAgICBpZiAoIXNvcnRhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zb3J0JC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShzb3J0ID0+IHtcbiAgICAgIGxldCBuZXdTdGF0ZTogU29ydFN0YXRlO1xuXG4gICAgICBpZiAoc29ydC5zdGF0ZS5uYW1lID09PSBrZXkpIHtcbiAgICAgICAgaWYgKCFzb3J0LmlzU29ydGluZykge1xuICAgICAgICAgIG5ld1N0YXRlID0ge3N0YXRlOiB7Li4uc29ydC5zdGF0ZSwgZGlyZWN0aW9uOiBkZXNjfSwgaXNTb3J0aW5nOiB0cnVlfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoc29ydC5zdGF0ZS5kaXJlY3Rpb24gPT09IGRlc2MpIHtcbiAgICAgICAgICAgIG5ld1N0YXRlID0gey4uLnNvcnQsIHN0YXRlOiB7Li4uc29ydC5zdGF0ZSwgZGlyZWN0aW9uOiBhc2N9fTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB7c3RhdGU6IHsuLi5zb3J0LnN0YXRlLCBkaXJlY3Rpb246IGRlc2N9LCBpc1NvcnRpbmc6IGZhbHNlfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1N0YXRlID0ge3N0YXRlOiB7bmFtZToga2V5LCBkaXJlY3Rpb246IGRlc2N9LCBpc1NvcnRpbmc6IHRydWV9O1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNvcnQkLm5leHQobmV3U3RhdGUpO1xuICAgICAgdGhpcy5zb3J0Q2hhbmdlZC5lbWl0KG5ld1N0YXRlKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2PlxuICA8ZGl2ICpuZ0lmPVwiKGl0ZW1zPy5sZW5ndGggPiAwICYmIGZpZWxkcz8ubGVuZ3RoID4gMCkgfHwgaGVhZGVyXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHNlYXJjaC1ob2xkZXIgYmctbGlnaHRcIlxuICAgICAgW25nQ2xhc3NdPVwieydwYi00IHB0LTQnOiAhaGVhZGVyfVwiXG4gICAgICAqbmdJZj1cImlzU2VhcmNoYWJsZSB8fCB2aWV3TW9kZSB8fCBoZWFkZXJcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJhbGlnbi1zZWxmLXN0YXJ0XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltoZWFkZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtbC1hdXRvIHJvd1wiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAqbmdJZj1cImlzU2VhcmNoYWJsZVwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY29sLXNtLThcIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdsaXN0LnNlYXJjaCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICNzZWFyY2hCb3hcbiAgICAgICAgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzd2l0Y2gtdmlldy1ob2xkZXIgYnRuLWdyb3VwIGNvbC1zbS00IG10LTEgbXQtc20tMFwiXG4gICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAqbmdJZj1cInZpZXdNb2RlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInZpZXdMaXN0QXMgPT09ICd0YWJsZScgPyAnYnRuLXByaW1hcnknIDogJ2J0bi1kZWZhdWx0J1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic3dpdGNoVmlldygndGFibGUnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktdmlldy1oZWFkbGluZSB2aWV3LWljb25cIj48L2k+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwidmlld0xpc3RBcyA9PT0gJ3RpbGUnID8gJ2J0bi1wcmltYXJ5JyA6ICdidG4tZGVmYXVsdCdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInN3aXRjaFZpZXcoJ3RpbGUnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktdmlldy1tb2R1bGUgdmlldy1pY29uXCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbdGFic11cIj48L25nLWNvbnRlbnQ+XG5cbiAgPGRpdiAqbmdJZj1cIml0ZW1zPy5sZW5ndGggPiAwICYmIGZpZWxkcz8ubGVuZ3RoID4gMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlIG5vU3dpcGVcIiAqbmdJZj1cIiF2aWV3TW9kZSB8fCB2aWV3TGlzdEFzID09PSAndGFibGUnXCI+XG4gICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWhvdmVyIG0tMFwiICpuZ0lmPVwic29ydCQgfCBhc3luYyBhcyBzb3J0XCI+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkc1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVGaWVsZENsaWNrKGZpZWxkLmtleSwgZmllbGQuc29ydGFibGUpXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmaWVsZC5zb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAnaXMtYmVpbmctc29ydGVkJzogZmllbGQua2V5ID09PSBzb3J0LnN0YXRlLm5hbWUgJiYgc29ydC5pc1NvcnRpbmcsXG4gICAgICAgICAgICAgICAgYXNjZW5kaW5nOiBzb3J0LnN0YXRlLmRpcmVjdGlvbiA9PT0gJ0FTQydcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsIH19XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiPlxuICAgICAgICAgICAgICB7eyBhY3Rpb24uY29sdW1uTmFtZSB9fVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2NsaWNrLWFibGUnOiB0aGlzLnJvd0NsaWNrZWQub2JzZXJ2ZXJzLmxlbmd0aCA+IDB9XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zIHwgbGlzdEZpbHRlcjogc2VhcmNoTW9kZWw7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tSb3coaXRlbSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFsaWduLXRvcFwiICpuZ0Zvcj1cImxldCBsaXN0SXRlbUZpZWxkIG9mIGl0ZW0ubGlzdEl0ZW1GaWVsZHNcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3RJdGVtRmllbGQudHlwZSA9PT0gJydcIj5cbiAgICAgICAgICAgICAgICB7eyBsaXN0SXRlbUZpZWxkLnZhbHVlIHx8ICctJyB9fVxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJsaXN0SXRlbUZpZWxkLnR5cGUgPT09ICdkcm9wZG93bkFjdGlvbnMnXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkcm9wZG93bkFjdGlvbnNcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7bGlzdEl0ZW1GaWVsZDogbGlzdEl0ZW1GaWVsZCwgaXRlbTogaXRlbX1cIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWxpZ24tdG9wXCIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24taWNvblwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImFjdGlvbi5pY29uQ2xhc3NcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb24uY2FsbGJhY2soaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkICpuZ0lmPVwibGFzdENvbHVtblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImxhc3RDb2x1bW5UZW1wbGF0ZTsgY29udGV4dDoge2luZGV4OiBpLCBsZW5ndGg6IGl0ZW1zLmxlbmd0aH1cIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRkICpuZ0lmPVwiKGl0ZW1zIHwgbGlzdEZpbHRlcjogc2VhcmNoTW9kZWwpLmxlbmd0aCA9PT0gMFwiIFtjb2xTcGFuXT1cImZpZWxkcy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAge3sgJ2xpc3Qubm9NYXRjaGluZ0l0ZW1zJyB8IHRyYW5zbGF0ZSB9fTxpPlwie3sgc2VhcmNoTW9kZWwgfX1cIjwvaT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCIgKm5nSWY9XCJ2aWV3TW9kZSAmJiB2aWV3TGlzdEFzID09PSAndGlsZSdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcC0yXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNvbC0xMiBjb2wtc20tNiBjb2wteGwtNCBwLTJcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zIHwgbGlzdEZpbHRlcjogc2VhcmNoTW9kZWxcIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrUm93KGl0ZW0pXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGljay1hYmxlIHRpbGUtaG9sZGVyIHAtNFwiPlxuICAgICAgICAgICAgPGRsIGNsYXNzPVwicm93IG1iLTBcIiAqbmdGb3I9XCJsZXQgbGlzdEl0ZW1GaWVsZCBvZiBpdGVtLmxpc3RJdGVtRmllbGRzXCI+XG4gICAgICAgICAgICAgIDxkdCBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNSB0ZXh0LXhsLXJpZ2h0XCI+e3sgbGlzdEl0ZW1GaWVsZC5sYWJlbCB9fTwvZHQ+XG4gICAgICAgICAgICAgIDxkZCBjbGFzcz1cImNvbC0xMiBjb2wtbWQtN1wiPnt7IGxpc3RJdGVtRmllbGQudmFsdWUgfHwgJy0nIH19PC9kZD5cbiAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgKm5nSWY9XCIoaXRlbXMgfCBsaXN0RmlsdGVyOiBzZWFyY2hNb2RlbCkubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAge3sgJ2xpc3Qubm9NYXRjaGluZ0l0ZW1zJyB8IHRyYW5zbGF0ZSB9fTxpPlwie3sgc2VhcmNoTW9kZWwgfX1cIjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwicGFnaW5hdGlvbi1ob2xkZXIgYmctbGlnaHQgcHgtNCBwdC00IHBiLTIgb3ZlcmZsb3ctYXV0byByb3cgbXItMCBtbC0wXCJcbiAgICAqbmdJZj1cInBhZ2luYXRpb24gJiYgaXRlbXM/Lmxlbmd0aCA+IDAgJiYgZmllbGRzPy5sZW5ndGggPiAwXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJmbG9hdC1sZWZ0IHBhZ2UtY291bnQgY29sLTRcIj5cbiAgICAgIDxzdHJvbmc+e3tcbiAgICAgICAgJ2xpc3QuY3VycmVudFBhZ2UnIHwgdHJhbnNsYXRlOiB7Y3VycmVudDogcGFnaW5hdGlvbi5wYWdlLCB0b3RhbDogZ2V0VG90YWxQYWdlQ291bnQoKX1cbiAgICAgIH19PC9zdHJvbmc+XG4gICAgICB7e1xuICAgICAgICBwYWdpbmF0aW9uLmNvbGxlY3Rpb25TaXplID09PSAxXG4gICAgICAgICAgPyAoJ2xpc3Quc2hvd2luZ1Jlc3VsdCcgfCB0cmFuc2xhdGU6IHtudW1iZXI6IChpdGVtcyB8IGxpc3RGaWx0ZXI6IHNlYXJjaE1vZGVsKS5sZW5ndGh9KVxuICAgICAgICAgIDogKCdsaXN0LnNob3dpbmdSZXN1bHRzJ1xuICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICBudW1iZXI6IChpdGVtcyB8IGxpc3RGaWx0ZXI6IHNlYXJjaE1vZGVsKS5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICB0b3RhbDogcGFnaW5hdGlvbi5jb2xsZWN0aW9uU2l6ZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICB9fVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtNCB0ZXh0LWNlbnRlclwiPlxuICAgICAge3sgJ2xpc3Quc2hvdycgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJwYWdpbmF0aW9uLnNpemVcIiAobmdNb2RlbENoYW5nZSk9XCJzZXRQYWdpbmF0aW9uU2l6ZSgkZXZlbnQpXCI+XG4gICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiMTBcIj4xMDwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIjI1XCI+MjU8L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCI1MFwiPjUwPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiMTAwXCI+MTAwPC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIHt7ICdsaXN0LmVudHJpZXMnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICA8bmdiLXBhZ2luYXRpb25cbiAgICAgICAgKm5nSWY9XCJwYWdpbmF0aW9uLmNvbGxlY3Rpb25TaXplID4gcGFnaW5hdGlvbi5zaXplXCJcbiAgICAgICAgY2xhc3M9XCJmbG9hdC1yaWdodFwiXG4gICAgICAgIFtjb2xsZWN0aW9uU2l6ZV09XCJwYWdpbmF0aW9uLmNvbGxlY3Rpb25TaXplXCJcbiAgICAgICAgWyhwYWdlKV09XCJwYWdpbmF0aW9uLnBhZ2VcIlxuICAgICAgICBbcGFnZVNpemVdPVwicGFnaW5hdGlvbi5zaXplXCJcbiAgICAgICAgW21heFNpemVdPVwicGFnaW5hdGlvbi5tYXhQYWdpbmF0aW9uSXRlbVNpemVcIlxuICAgICAgICBbcm90YXRlXT1cInRydWVcIlxuICAgICAgICAocGFnZUNoYW5nZSk9XCJvbkNsaWNrUGFnaW5hdGlvbihwYWdpbmF0aW9uLnBhZ2UpXCJcbiAgICAgID48L25nYi1wYWdpbmF0aW9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGlkPVwibm8tcmVzdWx0c1wiIGNsYXNzPVwicC01XCIgKm5nSWY9XCJpdGVtcz8ubGVuZ3RoID09PSAwXCI+XG4gICAge3sgJ2xpc3Qubm9SZXN1bHRzJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2Rpdj5cblxuICA8ZGl2IGlkPVwibm8tZmllbGQtZGVmaW5pdGlvbnNcIiBjbGFzcz1cInAtNVwiICpuZ0lmPVwiaXRlbXM/Lmxlbmd0aCA+IDAgJiYgZmllbGRzPy5sZW5ndGggPT09IDBcIj5cbiAgICB7eyAnbGlzdC5ub0ZpZWxkRGVmaW5pdGlvbnMnIHwgdHJhbnNsYXRlIH19XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZHJvcGRvd25BY3Rpb25zIGxldC1saXN0SXRlbUZpZWxkPVwibGlzdEl0ZW1GaWVsZFwiIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiAqbmdJZj1cImxpc3RJdGVtRmllbGQ/LnZhbHVlLmxlbmd0aCA+IDBcIj5cbiAgICA8YVxuICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgY2xhc3M9XCJkcm9wZG93bi10b2dnbGUgZC1ibG9ja1wiXG4gICAgICBpZD1cImRyb3Bkb3duTWVudVwiXG4gICAgICBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCJcbiAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJhY3Rpb24taWNvbiBpY29uIG1kaSBtZGktZG90cy12ZXJ0aWNhbFwiPjwvaT5cbiAgICA8L2E+XG4gICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bk1lbnVcIj5cbiAgICAgIDxhXG4gICAgICAgIChjbGljayk9XCJhY3Rpb24uY2FsbGJhY2soaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBwLTJcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGxpc3RJdGVtRmllbGQudmFsdWVcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uLmljb25DbGFzcyAhPT0gbnVsbFwiPlxuICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cImFjdGlvbi5pY29uQ2xhc3NcIj48L2k+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICB7eyBhY3Rpb24/LmxhYmVsIHx8ICctJyB9fVxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -24,10 +24,10 @@ import { ListFilterPipe } from './ListFilterPipe.directive';
|
|
|
24
24
|
import * as i0 from "@angular/core";
|
|
25
25
|
export class ListModule {
|
|
26
26
|
}
|
|
27
|
-
ListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
28
|
-
ListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "
|
|
29
|
-
ListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
27
|
+
ListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
28
|
+
ListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: ListModule, declarations: [ListComponent, ListFilterPipe], imports: [CommonModule, CardModule, NgbPaginationModule, FormsModule, TranslateModule], exports: [ListComponent, ListFilterPipe] });
|
|
29
|
+
ListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ListModule, imports: [CommonModule, CardModule, NgbPaginationModule, FormsModule, TranslateModule] });
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ListModule, decorators: [{
|
|
31
31
|
type: NgModule,
|
|
32
32
|
args: [{
|
|
33
33
|
declarations: [ListComponent, ListFilterPipe],
|
|
@@ -35,4 +35,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
35
35
|
exports: [ListComponent, ListFilterPipe],
|
|
36
36
|
}]
|
|
37
37
|
}] });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QvbGlzdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDOztBQU8xRCxNQUFNLE9BQU8sVUFBVTs7d0dBQVYsVUFBVTt5R0FBVixVQUFVLGlCQUpOLGFBQWEsRUFBRSxjQUFjLGFBQ2xDLFlBQVksRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLGVBQWUsYUFDM0UsYUFBYSxFQUFFLGNBQWM7eUdBRTVCLFVBQVUsWUFIWCxZQUFZLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxlQUFlOzRGQUcxRSxVQUFVO2tCQUx0QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUM7b0JBQzdDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQztvQkFDdEYsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQztpQkFDekMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtOZ2JQYWdpbmF0aW9uTW9kdWxlfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0NhcmRNb2R1bGV9IGZyb20gJy4uL2NhcmQvY2FyZC5tb2R1bGUnO1xuaW1wb3J0IHtMaXN0Q29tcG9uZW50fSBmcm9tICcuL2xpc3QuY29tcG9uZW50JztcbmltcG9ydCB7TGlzdEZpbHRlclBpcGV9IGZyb20gJy4vTGlzdEZpbHRlclBpcGUuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTGlzdENvbXBvbmVudCwgTGlzdEZpbHRlclBpcGVdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDYXJkTW9kdWxlLCBOZ2JQYWdpbmF0aW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgZXhwb3J0czogW0xpc3RDb21wb25lbnQsIExpc3RGaWx0ZXJQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgTGlzdE1vZHVsZSB7fVxuIl19
|
|
@@ -15,64 +15,21 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { Component, Input } from '@angular/core';
|
|
17
17
|
import * as i0 from "@angular/core";
|
|
18
|
-
import * as i1 from "@
|
|
19
|
-
import * as i2 from "
|
|
20
|
-
import * as i3 from "@ngx-translate/core";
|
|
18
|
+
import * as i1 from "@angular/common";
|
|
19
|
+
import * as i2 from "../../pipes/menu-item-translation.pipe";
|
|
21
20
|
export class MenuItemTextComponent {
|
|
21
|
+
constructor() {
|
|
22
|
+
this.accent = false;
|
|
23
|
+
}
|
|
22
24
|
}
|
|
23
|
-
MenuItemTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
24
|
-
MenuItemTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
25
|
-
|
|
26
|
-
class="{{ menuItem.iconClass }}"
|
|
27
|
-
container="body"
|
|
28
|
-
placement="right"
|
|
29
|
-
ngbTooltip="{{ menuItem.title | translate }}"
|
|
30
|
-
autoClose="true"
|
|
31
|
-
>
|
|
32
|
-
</i>
|
|
33
|
-
<span
|
|
34
|
-
*ngIf="{
|
|
35
|
-
translation: menuItem.title | translate,
|
|
36
|
-
pageTranslation: 'pages.' + menuItem.title.toLowerCase() + '.title' | translate
|
|
37
|
-
} as obs"
|
|
38
|
-
>{{
|
|
39
|
-
(obs.pageTranslation !== 'pages.' + menuItem.title.toLowerCase() + '.title'
|
|
40
|
-
? obs.pageTranslation
|
|
41
|
-
: '') ||
|
|
42
|
-
(obs.translation !== menuItem.title ? obs.translation : '') ||
|
|
43
|
-
menuItem.title
|
|
44
|
-
}}</span
|
|
45
|
-
>
|
|
46
|
-
`, isInline: true, directives: [{ type: i1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i3.TranslatePipe } });
|
|
47
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MenuItemTextComponent, decorators: [{
|
|
25
|
+
MenuItemTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: MenuItemTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
+
MenuItemTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: MenuItemTextComponent, selector: "valtimo-menu-item-text", inputs: { menuItem: "menuItem", accent: "accent" }, ngImport: i0, template: "<ng-container *ngIf=\"{titleTranslation: menuItem | menuItemTranslate | async} as obs\">\n <span [ngClass]=\"{'cds--link empty-menu-icon-text': accent}\">\n <div class=\"menu-item-icon-container\">\n <i class=\"{{ menuItem.iconClass }}\"></i>\n </div>\n {{ obs.titleTranslation + (accent ? ' >' : '') }}\n </span>\n</ng-container>\n", styles: [".menu-item-icon-container{position:absolute;margin-left:-1.5rem;transform:translate(-100%)}.empty-menu-icon-text{font-weight:600!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.MenuItemTranslationPipe, name: "menuItemTranslate" }] });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: MenuItemTextComponent, decorators: [{
|
|
48
28
|
type: Component,
|
|
49
|
-
args: [{
|
|
50
|
-
selector: 'valtimo-menu-item-text',
|
|
51
|
-
template: `
|
|
52
|
-
<i
|
|
53
|
-
class="{{ menuItem.iconClass }}"
|
|
54
|
-
container="body"
|
|
55
|
-
placement="right"
|
|
56
|
-
ngbTooltip="{{ menuItem.title | translate }}"
|
|
57
|
-
autoClose="true"
|
|
58
|
-
>
|
|
59
|
-
</i>
|
|
60
|
-
<span
|
|
61
|
-
*ngIf="{
|
|
62
|
-
translation: menuItem.title | translate,
|
|
63
|
-
pageTranslation: 'pages.' + menuItem.title.toLowerCase() + '.title' | translate
|
|
64
|
-
} as obs"
|
|
65
|
-
>{{
|
|
66
|
-
(obs.pageTranslation !== 'pages.' + menuItem.title.toLowerCase() + '.title'
|
|
67
|
-
? obs.pageTranslation
|
|
68
|
-
: '') ||
|
|
69
|
-
(obs.translation !== menuItem.title ? obs.translation : '') ||
|
|
70
|
-
menuItem.title
|
|
71
|
-
}}</span
|
|
72
|
-
>
|
|
73
|
-
`,
|
|
74
|
-
}]
|
|
29
|
+
args: [{ selector: 'valtimo-menu-item-text', template: "<ng-container *ngIf=\"{titleTranslation: menuItem | menuItemTranslate | async} as obs\">\n <span [ngClass]=\"{'cds--link empty-menu-icon-text': accent}\">\n <div class=\"menu-item-icon-container\">\n <i class=\"{{ menuItem.iconClass }}\"></i>\n </div>\n {{ obs.titleTranslation + (accent ? ' >' : '') }}\n </span>\n</ng-container>\n", styles: [".menu-item-icon-container{position:absolute;margin-left:-1.5rem;transform:translate(-100%)}.empty-menu-icon-text{font-weight:600!important}\n"] }]
|
|
75
30
|
}], propDecorators: { menuItem: [{
|
|
76
31
|
type: Input
|
|
32
|
+
}], accent: [{
|
|
33
|
+
type: Input
|
|
77
34
|
}] } });
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLXRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9tZW51L21lbnUtaXRlbS10ZXh0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbWVudS9tZW51LWl0ZW0tdGV4dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7O0FBUS9DLE1BQU0sT0FBTyxxQkFBcUI7SUFMbEM7UUFPVyxXQUFNLEdBQUcsS0FBSyxDQUFDO0tBQ3pCOzttSEFIWSxxQkFBcUI7dUdBQXJCLHFCQUFxQixrSEN4QmxDLDhWQVFBOzRGRGdCYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0Usd0JBQXdCOzhCQUt6QixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01lbnVJdGVtfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLW1lbnUtaXRlbS10ZXh0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUtaXRlbS10ZXh0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS1pdGVtLXRleHQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVudUl0ZW1UZXh0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgbWVudUl0ZW06IE1lbnVJdGVtO1xuICBASW5wdXQoKSBhY2NlbnQgPSBmYWxzZTtcbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ7dGl0bGVUcmFuc2xhdGlvbjogbWVudUl0ZW0gfCBtZW51SXRlbVRyYW5zbGF0ZSB8IGFzeW5jfSBhcyBvYnNcIj5cbiAgPHNwYW4gW25nQ2xhc3NdPVwieydjZHMtLWxpbmsgZW1wdHktbWVudS1pY29uLXRleHQnOiBhY2NlbnR9XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtaXRlbS1pY29uLWNvbnRhaW5lclwiPlxuICAgICAgPGkgY2xhc3M9XCJ7eyBtZW51SXRlbS5pY29uQ2xhc3MgfX1cIj48L2k+XG4gICAgPC9kaXY+XG4gICAge3sgb2JzLnRpdGxlVHJhbnNsYXRpb24gKyAoYWNjZW50ID8gJyA+JyA6ICcnKSB9fVxuICA8L3NwYW4+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -20,14 +20,14 @@ import * as i1 from "@angular/router";
|
|
|
20
20
|
const routes = [];
|
|
21
21
|
export class MenuRoutingModule {
|
|
22
22
|
}
|
|
23
|
-
MenuRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
24
|
-
MenuRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "
|
|
25
|
-
MenuRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
23
|
+
MenuRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: MenuRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
24
|
+
MenuRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: MenuRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
|
|
25
|
+
MenuRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: MenuRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: MenuRoutingModule, decorators: [{
|
|
27
27
|
type: NgModule,
|
|
28
28
|
args: [{
|
|
29
29
|
imports: [RouterModule.forChild(routes)],
|
|
30
30
|
exports: [RouterModule],
|
|
31
31
|
}]
|
|
32
32
|
}] });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1yb3V0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbWVudS9tZW51LXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFlBQVksRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7OztBQUV2QyxNQUFNLE1BQU0sR0FBVyxFQUFFLENBQUM7QUFNMUIsTUFBTSxPQUFPLGlCQUFpQjs7K0dBQWpCLGlCQUFpQjtnSEFBakIsaUJBQWlCLHdDQUZsQixZQUFZO2dIQUVYLGlCQUFpQixZQUhsQixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUM3QixZQUFZOzRGQUVYLGlCQUFpQjtrQkFKN0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN4QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtSb3V0ZXJNb2R1bGUsIFJvdXRlc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtdO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVudVJvdXRpbmdNb2R1bGUge31cbiJdfQ==
|
|
@@ -15,25 +15,41 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { NgModule } from '@angular/core';
|
|
17
17
|
import { CommonModule } from '@angular/common';
|
|
18
|
-
import { MenuComponent } from './menu.component';
|
|
19
18
|
import { RouterModule } from '@angular/router';
|
|
20
19
|
import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
|
|
21
20
|
import { TranslateModule } from '@ngx-translate/core';
|
|
22
21
|
import { MenuItemTextComponent } from './menu-item-text.component';
|
|
23
|
-
import {
|
|
22
|
+
import { ComponentsPipesModule } from '../../pipes';
|
|
23
|
+
import { LinkModule } from 'carbon-components-angular';
|
|
24
24
|
import * as i0 from "@angular/core";
|
|
25
25
|
export class MenuModule {
|
|
26
26
|
}
|
|
27
|
-
MenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
28
|
-
MenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
MenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: MenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
28
|
+
MenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: MenuModule, declarations: [MenuItemTextComponent], imports: [CommonModule,
|
|
29
|
+
RouterModule,
|
|
30
|
+
NgbTooltipModule,
|
|
31
|
+
TranslateModule,
|
|
32
|
+
ComponentsPipesModule,
|
|
33
|
+
LinkModule], exports: [MenuItemTextComponent] });
|
|
34
|
+
MenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: MenuModule, imports: [CommonModule,
|
|
35
|
+
RouterModule,
|
|
36
|
+
NgbTooltipModule,
|
|
37
|
+
TranslateModule,
|
|
38
|
+
ComponentsPipesModule,
|
|
39
|
+
LinkModule] });
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: MenuModule, decorators: [{
|
|
31
41
|
type: NgModule,
|
|
32
42
|
args: [{
|
|
33
|
-
declarations: [
|
|
34
|
-
imports: [
|
|
35
|
-
|
|
36
|
-
|
|
43
|
+
declarations: [MenuItemTextComponent],
|
|
44
|
+
imports: [
|
|
45
|
+
CommonModule,
|
|
46
|
+
RouterModule,
|
|
47
|
+
NgbTooltipModule,
|
|
48
|
+
TranslateModule,
|
|
49
|
+
ComponentsPipesModule,
|
|
50
|
+
LinkModule,
|
|
51
|
+
],
|
|
52
|
+
exports: [MenuItemTextComponent],
|
|
37
53
|
}]
|
|
38
54
|
}] });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL21lbnUvbWVudS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7O0FBY3JELE1BQU0sT0FBTyxVQUFVOzt3R0FBVixVQUFVO3lHQUFWLFVBQVUsaUJBWE4scUJBQXFCLGFBRWxDLFlBQVk7UUFDWixZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGVBQWU7UUFDZixxQkFBcUI7UUFDckIsVUFBVSxhQUVGLHFCQUFxQjt5R0FFcEIsVUFBVSxZQVRuQixZQUFZO1FBQ1osWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixlQUFlO1FBQ2YscUJBQXFCO1FBQ3JCLFVBQVU7NEZBSUQsVUFBVTtrQkFadEIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDckMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQixVQUFVO3FCQUNYO29CQUNELE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1JvdXRlck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7TmdiVG9vbHRpcE1vZHVsZX0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNZW51SXRlbVRleHRDb21wb25lbnR9IGZyb20gJy4vbWVudS1pdGVtLXRleHQuY29tcG9uZW50JztcbmltcG9ydCB7Q29tcG9uZW50c1BpcGVzTW9kdWxlfSBmcm9tICcuLi8uLi9waXBlcyc7XG5pbXBvcnQge0xpbmtNb2R1bGV9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtNZW51SXRlbVRleHRDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBOZ2JUb29sdGlwTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBDb21wb25lbnRzUGlwZXNNb2R1bGUsXG4gICAgTGlua01vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW01lbnVJdGVtVGV4dENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVNb2R1bGUge31cbiJdfQ==
|