UNPKG

gentics-ui-core

Version:

This is the common core framework for the Gentics CMS and Mesh UI, and other Angular applications.

288 lines 29.3 kB
import 'hammerjs'; import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { RouterModule } from '@angular/router'; import { AutosizeModule } from 'ngx-autosize'; import { ConfigService, PredefinedConfig, CustomConfig, defaultConfig, configFactory } from './module.config'; import { Breadcrumbs } from './components/breadcrumbs/breadcrumbs.component'; import { Button } from './components/button/button.component'; import { Checkbox } from './components/checkbox/checkbox.component'; import { ContentsListItem } from './components/contents-list-item/contents-list-item.component'; import { DateTimePickerControls } from './components/date-time-picker/date-time-picker-controls.component'; import { DateTimePickerFormatProvider } from './components/date-time-picker/date-time-picker-format-provider.service'; import { DateTimePickerModal } from './components/date-time-picker/date-time-picker-modal.component'; import { DateTimePicker } from './components/date-time-picker/date-time-picker.component'; import { DropdownContentWrapper } from './components/dropdown-list/dropdown-content-wrapper.component'; import { DropdownContent } from './components/dropdown-list/dropdown-content.component'; import { DropdownItem } from './components/dropdown-list/dropdown-item.component'; import { DropdownList } from './components/dropdown-list/dropdown-list.component'; import { DropdownTriggerDirective } from './components/dropdown-list/dropdown-trigger.directive'; import { ScrollMask } from './components/dropdown-list/scroll-mask.component'; import { DragStateTrackerFactory } from './components/file-drop-area/drag-state-tracker.service'; import { FileDropArea } from './components/file-drop-area/file-drop-area.directive'; import { MatchesMimeTypePipe } from './components/file-drop-area/matches-mime-type.pipe'; import { PageFileDragHandler } from './components/file-drop-area/page-file-drag-handler.service'; import { PreventFileDrop } from './components/file-drop-area/prevent-file-drop.directive'; import { FilePicker } from './components/file-picker/file-picker.component'; import { GroupedTabs } from './components/grouped-tabs/grouped-tabs.component'; import { GtxTabContent } from './components/grouped-tabs/tab-content'; import { TabGroup } from './components/grouped-tabs/tab-group.component'; import { GtxTabLabel } from './components/grouped-tabs/tab-label'; import { TabPane } from './components/grouped-tabs/tab-pane.component'; import { Icon } from './components/icon/icon.directive'; import { InputField } from './components/input/input.component'; import { MenuToggleButton } from './components/menu-toggle-button/menu-toggle-button.component'; import { BlankModal } from './components/modal/blank-modal.component'; import { DynamicModalWrapper } from './components/modal/dynamic-modal-wrapper.component'; import { ModalDialog } from './components/modal/modal-dialog.component'; import { ModalService } from './components/modal/modal.service'; import { UserAgentRef } from './components/modal/user-agent-ref'; import { Notification } from './components/notification/notification.service'; import { Toast } from './components/notification/toast.component'; import { OverlayHost } from './components/overlay-host/overlay-host.component'; import { OverlayHostService } from './components/overlay-host/overlay-host.service'; import { ProgressBar } from './components/progress-bar/progress-bar.component'; import { RadioButton, RadioGroup } from './components/radio-button/radio-button.component'; import { Range } from './components/range/range.component'; import { SearchBar } from './components/search-bar/search-bar.component'; import { SelectOption, SelectOptionGroup } from './components/select/option.component'; import { Select } from './components/select/select.component'; import { SideMenu, SideMenuToggle } from './components/side-menu/side-menu.component'; import { SortableItem, SortableList, SortableListDragHandle } from './components/sortable-list/sortable-list.component'; import { SplitButtonPrimaryAction } from './components/split-button/split-button-primary-action.component'; import { SplitButton } from './components/split-button/split-button.component'; import { SplitViewContainer } from './components/split-view-container/split-view-container.component'; import { Tab } from './components/tabs/tab.component'; import { Tabs } from './components/tabs/tabs.component'; import { Textarea } from './components/textarea/textarea.component'; import { TopBar } from './components/top-bar/top-bar.component'; import { AutofocusDirective } from './directives/autofocus/autofocus.directive'; import { HammerModule } from '@angular/platform-browser'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; export const UI_CORE_COMPONENTS = [ AutofocusDirective, BlankModal, Breadcrumbs, Button, Checkbox, ContentsListItem, DateTimePicker, DateTimePickerControls, DateTimePickerModal, DropdownList, DropdownContentWrapper, DropdownContent, DropdownItem, DropdownTriggerDirective, DynamicModalWrapper, FileDropArea, FilePicker, GroupedTabs, Icon, InputField, MenuToggleButton, ModalDialog, OverlayHost, PreventFileDrop, ProgressBar, RadioButton, RadioGroup, Range, ScrollMask, SearchBar, Select, SelectOption, SelectOptionGroup, SideMenu, SideMenuToggle, SortableItem, SortableList, SortableListDragHandle, SplitButton, SplitButtonPrimaryAction, SplitViewContainer, Tab, Tabs, TabPane, TabGroup, Textarea, TopBar, Toast ]; export const UI_CORE_DIRECTIVES = [ GtxTabLabel, GtxTabContent ]; export const UI_CORE_PIPES = [ MatchesMimeTypePipe ]; export const UI_CORE_PROVIDERS = [ DateTimePickerFormatProvider, DragStateTrackerFactory, ModalService, Notification, OverlayHostService, PageFileDragHandler, UserAgentRef ]; export const declarations = [...UI_CORE_COMPONENTS, ...UI_CORE_DIRECTIVES, ...UI_CORE_PIPES]; export const routerModuleForChild = RouterModule.forChild([]); export class GenticsUICoreModule { /** * Gentics UI Core exposes several providers which are intended to be used a singleton services, i.e. there should only * be a single instance of each in an app. When this module is imported into lazy-loaded child modules, we do not want * to include those providers, otherwise the app injector would create new instances of them to use in that child * module. * * Therefore this method should be used only once in the app, at the level of the root module to ensure that only one * instance of each provider is instantiated. */ static forRoot(configValue) { return { ngModule: GenticsUICoreModule, providers: [ { provide: CustomConfig, useValue: configValue, }, { provide: PredefinedConfig, useValue: defaultConfig, }, { provide: ConfigService, useFactory: configFactory, deps: [PredefinedConfig, CustomConfig], }, ...UI_CORE_PROVIDERS ] }; } } /** @nocollapse */ GenticsUICoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GenticsUICoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); /** @nocollapse */ GenticsUICoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GenticsUICoreModule, declarations: [AutofocusDirective, BlankModal, Breadcrumbs, Button, Checkbox, ContentsListItem, DateTimePicker, DateTimePickerControls, DateTimePickerModal, DropdownList, DropdownContentWrapper, DropdownContent, DropdownItem, DropdownTriggerDirective, DynamicModalWrapper, FileDropArea, FilePicker, GroupedTabs, Icon, InputField, MenuToggleButton, ModalDialog, OverlayHost, PreventFileDrop, ProgressBar, RadioButton, RadioGroup, Range, ScrollMask, SearchBar, Select, SelectOption, SelectOptionGroup, SideMenu, SideMenuToggle, SortableItem, SortableList, SortableListDragHandle, SplitButton, SplitButtonPrimaryAction, SplitViewContainer, Tab, Tabs, TabPane, TabGroup, Textarea, TopBar, Toast, GtxTabLabel, GtxTabContent, MatchesMimeTypePipe], imports: [CommonModule, HammerModule, FormsModule, ReactiveFormsModule, i1.RouterModule, AutosizeModule], exports: [AutofocusDirective, BlankModal, Breadcrumbs, Button, Checkbox, ContentsListItem, DateTimePicker, DateTimePickerControls, DateTimePickerModal, DropdownList, DropdownContentWrapper, DropdownContent, DropdownItem, DropdownTriggerDirective, DynamicModalWrapper, FileDropArea, FilePicker, GroupedTabs, Icon, InputField, MenuToggleButton, ModalDialog, OverlayHost, PreventFileDrop, ProgressBar, RadioButton, RadioGroup, Range, ScrollMask, SearchBar, Select, SelectOption, SelectOptionGroup, SideMenu, SideMenuToggle, SortableItem, SortableList, SortableListDragHandle, SplitButton, SplitButtonPrimaryAction, SplitViewContainer, Tab, Tabs, TabPane, TabGroup, Textarea, TopBar, Toast, GtxTabLabel, GtxTabContent, MatchesMimeTypePipe] }); /** @nocollapse */ GenticsUICoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GenticsUICoreModule, imports: [[ CommonModule, HammerModule, FormsModule, ReactiveFormsModule, routerModuleForChild, AutosizeModule, ]] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GenticsUICoreModule, decorators: [{ type: NgModule, args: [{ imports: [ CommonModule, HammerModule, FormsModule, ReactiveFormsModule, routerModuleForChild, AutosizeModule, ], declarations, exports: declarations }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFzQixRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE9BQU8sRUFBQyxhQUFhLEVBQWlCLGdCQUFnQixFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDM0gsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQzNFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDbEUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOERBQThELENBQUM7QUFDOUYsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sbUVBQW1FLENBQUM7QUFDekcsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sd0VBQXdFLENBQUM7QUFDcEgsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFDbkcsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLCtEQUErRCxDQUFDO0FBQ3JHLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUN0RixPQUFPLEVBQUMsWUFBWSxF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O1lBQ1osWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsb0JBQW9CO1lBQ3BCLGNBQWM7U0FDakI7MkZBSVEsbUJBQW1CO2tCQVovQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsY0FBYztxQkFDakI7b0JBQ0QsWUFBWTtvQkFDWixPQUFPLEVBQUUsWUFBWTtpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ2hhbW1lcmpzJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1JvdXRlck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEF1dG9zaXplTW9kdWxlIH0gZnJvbSAnbmd4LWF1dG9zaXplJztcblxuaW1wb3J0IHtDb25maWdTZXJ2aWNlLCBvcHRpb25zQ29uZmlnLCBQcmVkZWZpbmVkQ29uZmlnLCBDdXN0b21Db25maWcsIGRlZmF1bHRDb25maWcsIGNvbmZpZ0ZhY3Rvcnl9IGZyb20gJy4vbW9kdWxlLmNvbmZpZyc7XG5pbXBvcnQge0JyZWFkY3J1bWJzfSBmcm9tICcuL2NvbXBvbmVudHMvYnJlYWRjcnVtYnMvYnJlYWRjcnVtYnMuY29tcG9uZW50JztcbmltcG9ydCB7QnV0dG9ufSBmcm9tICcuL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtDaGVja2JveH0gZnJvbSAnLi9jb21wb25lbnRzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQge0NvbnRlbnRzTGlzdEl0ZW19IGZyb20gJy4vY29tcG9uZW50cy9jb250ZW50cy1saXN0LWl0ZW0vY29udGVudHMtbGlzdC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQge0RhdGVUaW1lUGlja2VyQ29udHJvbHN9IGZyb20gJy4vY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL2RhdGUtdGltZS1waWNrZXItY29udHJvbHMuY29tcG9uZW50JztcbmltcG9ydCB7RGF0ZVRpbWVQaWNrZXJGb3JtYXRQcm92aWRlcn0gZnJvbSAnLi9jb21wb25lbnRzL2RhdGUtdGltZS1waWNrZXIvZGF0ZS10aW1lLXBpY2tlci1mb3JtYXQtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge0RhdGVUaW1lUGlja2VyTW9kYWx9IGZyb20gJy4vY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL2RhdGUtdGltZS1waWNrZXItbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7RGF0ZVRpbWVQaWNrZXJ9IGZyb20gJy4vY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL2RhdGUtdGltZS1waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7RHJvcGRvd25Db250ZW50V3JhcHBlcn0gZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duLWxpc3QvZHJvcGRvd24tY29udGVudC13cmFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0Ryb3Bkb3duQ29udGVudH0gZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duLWxpc3QvZHJvcGRvd24tY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHtEcm9wZG93bkl0ZW19IGZyb20gJy4vY29tcG9uZW50cy9kcm9wZG93bi1saXN0L2Ryb3Bkb3duLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7RHJvcGRvd25MaXN0fSBmcm9tICcuL2NvbXBvbmVudHMvZHJvcGRvd24tbGlzdC9kcm9wZG93bi1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQge0Ryb3Bkb3duVHJpZ2dlckRpcmVjdGl2ZX0gZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duLWxpc3QvZHJvcGRvd24tdHJpZ2dlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHtTY3JvbGxNYXNrfSBmcm9tICcuL2NvbXBvbmVudHMvZHJvcGRvd24tbGlzdC9zY3JvbGwtbWFzay5jb21wb25lbnQnO1xuaW1wb3J0IHtEcmFnU3RhdGVUcmFja2VyRmFjdG9yeX0gZnJvbSAnLi9jb21wb25lbnRzL2ZpbGUtZHJvcC1hcmVhL2RyYWctc3RhdGUtdHJhY2tlci5zZXJ2aWNlJztcbmltcG9ydCB7RmlsZURyb3BBcmVhfSBmcm9tICcuL2NvbXBvbmVudHMvZmlsZS1kcm9wLWFyZWEvZmlsZS1kcm9wLWFyZWEuZGlyZWN0aXZlJztcbmltcG9ydCB7TWF0Y2hlc01pbWVUeXBlUGlwZX0gZnJvbSAnLi9jb21wb25lbnRzL2ZpbGUtZHJvcC1hcmVhL21hdGNoZXMtbWltZS10eXBlLnBpcGUnO1xuaW1wb3J0IHtQYWdlRmlsZURyYWdIYW5kbGVyfSBmcm9tICcuL2NvbXBvbmVudHMvZmlsZS1kcm9wLWFyZWEvcGFnZS1maWxlLWRyYWctaGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7UHJldmVudEZpbGVEcm9wfSBmcm9tICcuL2NvbXBvbmVudHMvZmlsZS1kcm9wLWFyZWEvcHJldmVudC1maWxlLWRyb3AuZGlyZWN0aXZlJztcbmltcG9ydCB7RmlsZVBpY2tlcn0gZnJvbSAnLi9jb21wb25lbnRzL2ZpbGUtcGlja2VyL2ZpbGUtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQge0dyb3VwZWRUYWJzfSBmcm9tICcuL2NvbXBvbmVudHMvZ3JvdXBlZC10YWJzL2dyb3VwZWQtdGFicy5jb21wb25lbnQnO1xuaW1wb3J0IHtHdHhUYWJDb250ZW50fSBmcm9tICcuL2NvbXBvbmVudHMvZ3JvdXBlZC10YWJzL3RhYi1jb250ZW50JztcbmltcG9ydCB7VGFiR3JvdXB9IGZyb20gJy4vY29tcG9uZW50cy9ncm91cGVkLXRhYnMvdGFiLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQge0d0eFRhYkxhYmVsfSBmcm9tICcuL2NvbXBvbmVudHMvZ3JvdXBlZC10YWJzL3RhYi1sYWJlbCc7XG5pbXBvcnQge1RhYlBhbmV9IGZyb20gJy4vY29tcG9uZW50cy9ncm91cGVkLXRhYnMvdGFiLXBhbmUuY29tcG9uZW50JztcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi9jb21wb25lbnRzL2ljb24vaWNvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtJbnB1dEZpZWxkfSBmcm9tICcuL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7TWVudVRvZ2dsZUJ1dHRvbn0gZnJvbSAnLi9jb21wb25lbnRzL21lbnUtdG9nZ2xlLWJ1dHRvbi9tZW51LXRvZ2dsZS1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7QmxhbmtNb2RhbH0gZnJvbSAnLi9jb21wb25lbnRzL21vZGFsL2JsYW5rLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQge0R5bmFtaWNNb2RhbFdyYXBwZXJ9IGZyb20gJy4vY29tcG9uZW50cy9tb2RhbC9keW5hbWljLW1vZGFsLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7TW9kYWxEaWFsb2d9IGZyb20gJy4vY29tcG9uZW50cy9tb2RhbC9tb2RhbC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7TW9kYWxTZXJ2aWNlfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwuc2VydmljZSc7XG5pbXBvcnQge1VzZXJBZ2VudFJlZn0gZnJvbSAnLi9jb21wb25lbnRzL21vZGFsL3VzZXItYWdlbnQtcmVmJztcbmltcG9ydCB7Tm90aWZpY2F0aW9ufSBmcm9tICcuL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7VG9hc3R9IGZyb20gJy4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vdG9hc3QuY29tcG9uZW50JztcbmltcG9ydCB7T3ZlcmxheUhvc3R9IGZyb20gJy4vY29tcG9uZW50cy9vdmVybGF5LWhvc3Qvb3ZlcmxheS1ob3N0LmNvbXBvbmVudCc7XG5pbXBvcnQge092ZXJsYXlIb3N0U2VydmljZX0gZnJvbSAnLi9jb21wb25lbnRzL292ZXJsYXktaG9zdC9vdmVybGF5LWhvc3Quc2VydmljZSc7XG5pbXBvcnQge1Byb2dyZXNzQmFyfSBmcm9tICcuL2NvbXBvbmVudHMvcHJvZ3Jlc3MtYmFyL3Byb2dyZXNzLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHtSYWRpb0J1dHRvbiwgUmFkaW9Hcm91cH0gZnJvbSAnLi9jb21wb25lbnRzL3JhZGlvLWJ1dHRvbi9yYWRpby1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7UmFuZ2V9IGZyb20gJy4vY29tcG9uZW50cy9yYW5nZS9yYW5nZS5jb21wb25lbnQnO1xuaW1wb3J0IHtTZWFyY2hCYXJ9IGZyb20gJy4vY29tcG9uZW50cy9zZWFyY2gtYmFyL3NlYXJjaC1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7U2VsZWN0T3B0aW9uLCBTZWxlY3RPcHRpb25Hcm91cH0gZnJvbSAnLi9jb21wb25lbnRzL3NlbGVjdC9vcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7U2VsZWN0fSBmcm9tICcuL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHtTaWRlTWVudSwgU2lkZU1lbnVUb2dnbGV9IGZyb20gJy4vY29tcG9uZW50cy9zaWRlLW1lbnUvc2lkZS1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQge1NvcnRhYmxlSXRlbSwgU29ydGFibGVMaXN0LCBTb3J0YWJsZUxpc3REcmFnSGFuZGxlfSBmcm9tICcuL2NvbXBvbmVudHMvc29ydGFibGUtbGlzdC9zb3J0YWJsZS1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQge1NwbGl0QnV0dG9uUHJpbWFyeUFjdGlvbn0gZnJvbSAnLi9jb21wb25lbnRzL3NwbGl0LWJ1dHRvbi9zcGxpdC1idXR0b24tcHJpbWFyeS1hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7U3BsaXRCdXR0b259IGZyb20gJy4vY29tcG9uZW50cy9zcGxpdC1idXR0b24vc3BsaXQtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQge1NwbGl0Vmlld0NvbnRhaW5lcn0gZnJvbSAnLi9jb21wb25lbnRzL3NwbGl0LXZpZXctY29udGFpbmVyL3NwbGl0LXZpZXctY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1RhYn0gZnJvbSAnLi9jb21wb25lbnRzL3RhYnMvdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQge1RhYnN9IGZyb20gJy4vY29tcG9uZW50cy90YWJzL3RhYnMuY29tcG9uZW50JztcbmltcG9ydCB7VGV4dGFyZWF9IGZyb20gJy4vY29tcG9uZW50cy90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQnO1xuaW1wb3J0IHtUb3BCYXJ9IGZyb20gJy4vY29tcG9uZW50cy90b3AtYmFyL3RvcC1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7QXV0b2ZvY3VzRGlyZWN0aXZlfSBmcm9tICcuL2RpcmVjdGl2ZXMvYXV0b2ZvY3VzL2F1dG9mb2N1cy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSGFtbWVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmV4cG9ydCBjb25zdCBVSV9DT1JFX0NPTVBPTkVOVFM6IGFueVtdID0gW1xuICAgIEF1dG9mb2N1c0RpcmVjdGl2ZSxcbiAgICBCbGFua01vZGFsLFxuICAgIEJyZWFkY3J1bWJzLFxuICAgIEJ1dHRvbixcbiAgICBDaGVja2JveCxcbiAgICBDb250ZW50c0xpc3RJdGVtLFxuICAgIERhdGVUaW1lUGlja2VyLFxuICAgIERhdGVUaW1lUGlja2VyQ29udHJvbHMsXG4gICAgRGF0ZVRpbWVQaWNrZXJNb2RhbCxcbiAgICBEcm9wZG93bkxpc3QsXG4gICAgRHJvcGRvd25Db250ZW50V3JhcHBlcixcbiAgICBEcm9wZG93bkNvbnRlbnQsXG4gICAgRHJvcGRvd25JdGVtLFxuICAgIERyb3Bkb3duVHJpZ2dlckRpcmVjdGl2ZSxcbiAgICBEeW5hbWljTW9kYWxXcmFwcGVyLFxuICAgIEZpbGVEcm9wQXJlYSxcbiAgICBGaWxlUGlja2VyLFxuICAgIEdyb3VwZWRUYWJzLFxuICAgIEljb24sXG4gICAgSW5wdXRGaWVsZCxcbiAgICBNZW51VG9nZ2xlQnV0dG9uLFxuICAgIE1vZGFsRGlhbG9nLFxuICAgIE92ZXJsYXlIb3N0LFxuICAgIFByZXZlbnRGaWxlRHJvcCxcbiAgICBQcm9ncmVzc0JhcixcbiAgICBSYWRpb0J1dHRvbixcbiAgICBSYWRpb0dyb3VwLFxuICAgIFJhbmdlLFxuICAgIFNjcm9sbE1hc2ssXG4gICAgU2VhcmNoQmFyLFxuICAgIFNlbGVjdCxcbiAgICBTZWxlY3RPcHRpb24sXG4gICAgU2VsZWN0T3B0aW9uR3JvdXAsXG4gICAgU2lkZU1lbnUsXG4gICAgU2lkZU1lbnVUb2dnbGUsXG4gICAgU29ydGFibGVJdGVtLFxuICAgIFNvcnRhYmxlTGlzdCxcbiAgICBTb3J0YWJsZUxpc3REcmFnSGFuZGxlLFxuICAgIFNwbGl0QnV0dG9uLFxuICAgIFNwbGl0QnV0dG9uUHJpbWFyeUFjdGlvbixcbiAgICBTcGxpdFZpZXdDb250YWluZXIsXG4gICAgVGFiLFxuICAgIFRhYnMsXG4gICAgVGFiUGFuZSxcbiAgICBUYWJHcm91cCxcbiAgICBUZXh0YXJlYSxcbiAgICBUb3BCYXIsXG4gICAgVG9hc3Rcbl07XG5cbmV4cG9ydCBjb25zdCBVSV9DT1JFX0RJUkVDVElWRVM6IGFueVtdID0gW1xuICAgIEd0eFRhYkxhYmVsLFxuICAgIEd0eFRhYkNvbnRlbnRcbl07XG5cbmV4cG9ydCBjb25zdCBVSV9DT1JFX1BJUEVTOiBhbnlbXSA9IFtcbiAgICBNYXRjaGVzTWltZVR5cGVQaXBlXG5dO1xuXG5leHBvcnQgY29uc3QgVUlfQ09SRV9QUk9WSURFUlM6IGFueVtdID0gW1xuICAgIERhdGVUaW1lUGlja2VyRm9ybWF0UHJvdmlkZXIsXG4gICAgRHJhZ1N0YXRlVHJhY2tlckZhY3RvcnksXG4gICAgTW9kYWxTZXJ2aWNlLFxuICAgIE5vdGlmaWNhdGlvbixcbiAgICBPdmVybGF5SG9zdFNlcnZpY2UsXG4gICAgUGFnZUZpbGVEcmFnSGFuZGxlcixcbiAgICBVc2VyQWdlbnRSZWZcbl07XG5cbmV4cG9ydCBjb25zdCBkZWNsYXJhdGlvbnMgPSBbLi4uVUlfQ09SRV9DT01QT05FTlRTLCAuLi5VSV9DT1JFX0RJUkVDVElWRVMsIC4uLlVJX0NPUkVfUElQRVNdO1xuZXhwb3J0IGNvbnN0IHJvdXRlck1vZHVsZUZvckNoaWxkOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEdlbnRpY3NVSUNvcmVNb2R1bGU+ID0gUm91dGVyTW9kdWxlLmZvckNoaWxkKFtdKTtcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgSGFtbWVyTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgcm91dGVyTW9kdWxlRm9yQ2hpbGQsXG4gICAgICAgIEF1dG9zaXplTW9kdWxlLFxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zLFxuICAgIGV4cG9ydHM6IGRlY2xhcmF0aW9uc1xufSlcbmV4cG9ydCBjbGFzcyBHZW50aWNzVUlDb3JlTW9kdWxlIHtcbiAgICAvKipcbiAgICAgKiBHZW50aWNzIFVJIENvcmUgZXhwb3NlcyBzZXZlcmFsIHByb3ZpZGVycyB3aGljaCBhcmUgaW50ZW5kZWQgdG8gYmUgdXNlZCBhIHNpbmdsZXRvbiBzZXJ2aWNlcywgaS5lLiB0aGVyZSBzaG91bGQgb25seVxuICAgICAqIGJlIGEgc2luZ2xlIGluc3RhbmNlIG9mIGVhY2ggaW4gYW4gYXBwLiBXaGVuIHRoaXMgbW9kdWxlIGlzIGltcG9ydGVkIGludG8gbGF6eS1sb2FkZWQgY2hpbGQgbW9kdWxlcywgd2UgZG8gbm90IHdhbnRcbiAgICAgKiB0byBpbmNsdWRlIHRob3NlIHByb3ZpZGVycywgb3RoZXJ3aXNlIHRoZSBhcHAgaW5qZWN0b3Igd291bGQgY3JlYXRlIG5ldyBpbnN0YW5jZXMgb2YgdGhlbSB0byB1c2UgaW4gdGhhdCBjaGlsZFxuICAgICAqIG1vZHVsZS5cbiAgICAgKlxuICAgICAqIFRoZXJlZm9yZSB0aGlzIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBvbmx5IG9uY2UgaW4gdGhlIGFwcCwgYXQgdGhlIGxldmVsIG9mIHRoZSByb290IG1vZHVsZSB0byBlbnN1cmUgdGhhdCBvbmx5IG9uZVxuICAgICAqIGluc3RhbmNlIG9mIGVhY2ggcHJvdmlkZXIgaXMgaW5zdGFudGlhdGVkLlxuICAgICAqL1xuICAgIHN0YXRpYyBmb3JSb290KGNvbmZpZ1ZhbHVlPzogb3B0aW9uc0NvbmZpZyB8ICgoKSA9PiBvcHRpb25zQ29uZmlnKSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8R2VudGljc1VJQ29yZU1vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IEdlbnRpY3NVSUNvcmVNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IEN1c3RvbUNvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZ1ZhbHVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBQcmVkZWZpbmVkQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICB1c2VWYWx1ZTogZGVmYXVsdENvbmZpZyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogQ29uZmlnU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgdXNlRmFjdG9yeTogY29uZmlnRmFjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgZGVwczogW1ByZWRlZmluZWRDb25maWcsIEN1c3RvbUNvbmZpZ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAuLi5VSV9DT1JFX1BST1ZJREVSU1xuICAgICAgICAgICAgXVxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==