@eo-sdk/client 10.7.0-rc.3 → 10.7.0-rc.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts +3 -2
  2. package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts.map +1 -1
  3. package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts +59 -1
  4. package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts.map +1 -1
  5. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.d.ts +1 -0
  6. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.d.ts.map +1 -1
  7. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts +6 -1
  8. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts.map +1 -1
  9. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.d.ts +4 -0
  10. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.d.ts.map +1 -1
  11. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts.map +1 -1
  12. package/app/eo-client/process-state/process-state.component.d.ts.map +1 -1
  13. package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts +2 -1
  14. package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts.map +1 -1
  15. package/app/eo-framework/form-elements/string/string.component.d.ts.map +1 -1
  16. package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
  17. package/app/eo-framework/quick-search/quick-search/quick-search.component.d.ts.map +1 -1
  18. package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
  19. package/app/eo-framework/upload-overlay/upload-overlay.component.d.ts.map +1 -1
  20. package/assets/_default/i18n/de.json +10 -3
  21. package/assets/_default/i18n/en.json +11 -4
  22. package/esm2020/app/eo-client/about-state/about-state.component.mjs +3 -3
  23. package/esm2020/app/eo-client/dashboard/dashboard.component.mjs +2 -2
  24. package/esm2020/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +65 -48
  25. package/esm2020/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +44 -11
  26. package/esm2020/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +17 -4
  27. package/esm2020/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +38 -6
  28. package/esm2020/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.mjs +1 -1
  29. package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +17 -21
  30. package/esm2020/app/eo-client/process-state/process-state.component.mjs +1 -2
  31. package/esm2020/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.mjs +3 -3
  32. package/esm2020/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +4 -4
  33. package/esm2020/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +23 -8
  34. package/esm2020/app/eo-framework/form-elements/string/string.component.mjs +7 -3
  35. package/esm2020/app/eo-framework/object-details/object-details.component.mjs +9 -3
  36. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +2 -2
  37. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +2 -2
  38. package/esm2020/app/eo-framework/quick-search/quick-search/quick-search.component.mjs +3 -1
  39. package/esm2020/app/eo-framework/result-list/result-list.component.mjs +16 -3
  40. package/esm2020/app/eo-framework/ui/signature-tab/signature-tab.component.mjs +3 -3
  41. package/esm2020/app/eo-framework/upload-overlay/upload-overlay.component.mjs +4 -2
  42. package/esm2020/projects/eo-sdk/core/lib/service/auth/auth.service.mjs +3 -4
  43. package/esm2020/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.mjs +1 -1
  44. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs +1 -3
  45. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
  46. package/fesm2015/eo-sdk-client.mjs +240 -113
  47. package/fesm2015/eo-sdk-client.mjs.map +1 -1
  48. package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs +1 -3
  49. package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
  50. package/fesm2020/eo-sdk-client.mjs +241 -111
  51. package/fesm2020/eo-sdk-client.mjs.map +1 -1
  52. package/package.json +3 -3
  53. package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts.map +1 -1
  54. package/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.d.ts +0 -4
  55. package/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"eo-sdk-client-projects-eo-sdk-core.mjs","sources":["../../../../projects/eo-sdk/core/src/lib/config/core-init.tokens.ts","../../../../projects/eo-sdk/core/src/lib/config/core-config.ts","../../../../projects/eo-sdk/core/src/lib/service/logger/logger.ts","../../../../projects/eo-sdk/core/src/lib/model/eo-error.model.ts","../../../../projects/eo-sdk/core/src/lib/service/search/search-query.model.ts","../../../../projects/eo-sdk/core/src/lib/model/range-value.model.ts","../../../../projects/eo-sdk/core/src/lib/util/utils.ts","../../../../projects/eo-sdk/core/src/lib/service/events/events.ts","../../../../projects/eo-sdk/core/src/lib/service/events/event.service.ts","../../../../projects/eo-sdk/core/src/lib/service/config/config.service.ts","../../../../projects/eo-sdk/core/src/lib/model/eo-user.model.ts","../../../../projects/eo-sdk/core/src/lib/model/work-item-history.model.ts","../../../../projects/eo-sdk/core/src/lib/model/bpm.model.ts","../../../../projects/eo-sdk/core/src/lib/service/clipboard/clipboard-action.enum.ts","../../../../projects/eo-sdk/core/src/lib/model/object-type.model.ts","../../../../projects/eo-sdk/core/src/lib/service/backend/backend.service.ts","../../../../projects/eo-sdk/core/src/lib/service/cache/app-cache.service.ts","../../../../projects/eo-sdk/core/src/lib/service/system/system.service.ts","../../../../projects/eo-sdk/core/src/lib/service/capabilities/capabilities.service.ts","../../../../projects/eo-sdk/core/src/lib/model/inbox-item.model.ts","../../../../projects/eo-sdk/core/src/lib/service/inbox/inbox.service.ts","../../../../projects/eo-sdk/core/src/lib/service/bpm/bpm.service.ts","../../../../projects/eo-sdk/core/src/lib/model/prepared-item.model.ts","../../../../projects/eo-sdk/core/src/lib/model/upload-target.model.ts","../../../../projects/eo-sdk/core/src/lib/service/config/config.enum.ts","../../../../projects/eo-sdk/core/src/lib/service/user/user.service.ts","../../../../projects/eo-sdk/core/src/lib/service/upload/upload.service.ts","../../../../projects/eo-sdk/core/src/lib/service/prepare/prepare.service.ts","../../../../projects/eo-sdk/core/src/lib/service/system-status/system.status.enum.ts","../../../../projects/eo-sdk/core/src/lib/service/system-status/system-status.service.ts","../../../../projects/eo-sdk/core/src/lib/service/storage/local-storage.service.ts","../../../../projects/eo-sdk/core/src/lib/service/auth/auth.service.ts","../../../../projects/eo-sdk/core/src/lib/config/core-init.service.ts","../../../../projects/eo-sdk/core/src/lib/config/initialize-module.ts","../../../../projects/eo-sdk/core/src/lib/config/missing-translation-handler.ts","../../../../projects/eo-sdk/core/src/lib/config/translate-json-loader.ts","../../../../projects/eo-sdk/core/src/lib/eo-core-shared.module.ts","../../../../projects/eo-sdk/core/src/lib/service/auth/auth-interceptor.ts","../../../../projects/eo-sdk/core/src/lib/service/logger/console-log.service.ts","../../../../projects/eo-sdk/core/src/lib/eo-core.module.ts","../../../../projects/eo-sdk/core/src/lib/environment.enaio.ts","../../../../projects/eo-sdk/core/src/lib/service/clipboard/clipboard.service.ts","../../../../projects/eo-sdk/core/src/lib/model/dms-object.model.ts","../../../../projects/eo-sdk/core/src/lib/model/dms-object-history.model.ts","../../../../projects/eo-sdk/core/src/lib/service/dms/dms.service.ts","../../../../projects/eo-sdk/core/src/lib/service/notifications/notifications.service.ts","../../../../projects/eo-sdk/core/src/lib/service/search/search.service.ts","../../../../projects/eo-sdk/core/src/lib/service/stored-queries/stored-query.model.ts","../../../../projects/eo-sdk/core/src/lib/service/stored-queries/stored-queries.service.ts","../../../../projects/eo-sdk/core/src/lib/service/upload-registry/upload-registry.service.ts","../../../../projects/eo-sdk/core/src/lib/service/signing/signing.service.ts","../../../../projects/eo-sdk/core/src/lib/model/upload-file-item.model.ts","../../../../projects/eo-sdk/core/src/public_api.ts","../../../../projects/eo-sdk/core/src/eo-sdk-client-projects-eo-sdk-core.ts"],"sourcesContent":["// @see: http://stackoverflow.com/questions/37611549/how-to-pass-parameters-rendered-from-backend-to-angular2-bootstrap-method#answer-40379803\nimport {InjectionToken} from '@angular/core';\nimport {CoreConfig} from './core-config';\n\n/**\n * @ignore\n */\nexport const CUSTOM_CONFIG = new InjectionToken<CoreConfig>('CUSTOM_CONFIG');\nexport const CORE_CONFIG = new InjectionToken<CoreConfig>('CORE_CONFIG');\n","import {EnaioConfig} from '../service/config/config.interface';\nimport {Inject} from '@angular/core';\nimport {CUSTOM_CONFIG} from './core-init.tokens';\n\n/**\n * @ignore\n */\nexport class CoreConfig {\n // main configuration or paths to config files\n main?: EnaioConfig | string[] = ['assets/_default/config/main.json', 'assets/_default/config/extend.json'];\n // paths to the translations\n translations?: string[] = ['assets/_default/i18n/'];\n\n environment?: {production: boolean} = {production: true};\n // sets the HTTP 'withCredentials' flag for every backend call\n withCredentials?: boolean = false;\n constructor(@Inject(CUSTOM_CONFIG) __config: CoreConfig) {\n Object.assign(this, __config);\n }\n}\n","import {ILogger} from '../../interface/logger.interface';\nimport { Injectable } from \"@angular/core\";\n\n/**\n * Set up the default logger.\n * The default logger doesn't actually log anything;\n * but, it provides the Dependency-Injection (DI) token that the rest of the application can use\n * for dependency resolution. Each platform can then override this with a platform-specific logger implementation,\n * like the [ConsoleLogService]{@link ConsoleLogService}.\n */\n\n/**\n * @ignore\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class Logger implements ILogger {\n\n public assert(...args: any[]): void {\n // ... the default logger does no work.\n }\n\n public error(...args: any[]): void {\n // ... the default logger does no work.\n }\n\n public debug(...args: any[]): void {\n // ... the default logger does no work.\n }\n\n public group(...args: any[]): void {\n // ... the default logger does no work.\n }\n\n public groupEnd(...args: any[]): void {\n // ... the default logger does no work.\n }\n\n public info(...args: any[]): void {\n // ... the default logger does no work.\n }\n\n public log(...args: any[]): void {\n // ... the default logger does no work.\n }\n\n public warn(...args: any[]): void {\n // ... the default logger does no work.\n }\n\n}\n","import {HttpErrorResponse} from '@angular/common/http';\n\n/**\n * @ignore\n */\nexport class EoError implements Error {\n\n get name() {\n return this._name || this.originalError.name || '';\n }\n\n get message() {\n return this._message || this.originalError.message || '';\n }\n\n get stack() {\n return this.originalError.stack;\n }\n\n get status() {\n return this.originalError.status;\n }\n\n get url() {\n return this.originalError.url;\n }\n\n get skipNotification() {\n return this._skipNotification === undefined ? !!this.originalError.skipNotification : this._skipNotification;\n }\n\n get isHttpErrorResponse() {\n return this.originalError.isHttpErrorResponse || this.originalError instanceof HttpErrorResponse;\n }\n\n constructor(public originalError: any | Error, private _name: string, private _message: string, private _skipNotification: boolean) {\n }\n\n toString() {\n return this.originalError.toString();\n }\n}\n","import {reduce} from 'rxjs/operators';\nimport {ObjectType} from '../../model/object-type.model';\nimport {DatePipe} from '@angular/common';\n\n//export type QueryScope = 'indexdate' | 'content' | 'all';\n\nexport enum QueryScope {\n ALL = 'all',\n CONTENT = 'content',\n INDEX_DATA = 'indexdata'\n}\n\n/**\n * The SearchQuery Class\n *\n * See {@link SearchService} for Usage\n */\nexport class SearchQuery {\n /**\n * Base Parameters for a Search Query\n */\n public static BASE_PARAMS = {\n TYPE: 'type',\n CREATOR: 'creator',\n CREATED: 'created',\n MODIFIER: 'modifier',\n MODIFIED: 'modified',\n FILESIZE: 'filesize',\n FILENAME: 'filename',\n MIMETYPEGROUP: 'mimetypegroup',\n FOLDER: 'folder'\n };\n\n /**\n * Time period buckets property names\n */\n public static TIME_PERIOD_BUCKETS = {\n TODAY: 'today',\n YESTERDAY: 'yesterday',\n THIS_WEEK: 'thisweek',\n LAST_WEEK: 'lastweek',\n THIS_MONTH: 'thismonth',\n LAST_MONTH: 'lastmonth',\n THIS_YEAR: 'thisyear',\n LAST_YEAR: 'lastyear'\n };\n\n /**\n * mimetype buckets property names\n */\n public static MIMETYPEGROUP_BUCKETS = {\n PDF: 'pdf',\n MAIL: 'mail',\n WORD: 'word',\n IMAGE: 'image',\n OCTET_STREAM: 'octet-stream',\n TXT: 'txt',\n EXCEL: 'excel',\n POWERPOINT: 'powerpoint',\n VIDEO: 'video',\n HTML: 'html',\n AUDIO: 'audio',\n ZIP: 'zip'\n };\n\n /**\n * filesize buckets property names\n */\n public static FILE_SIZE_BUCKETS = {\n NONE: 'none',\n LT1MB: 'lt1MB',\n LT10MB: 'lt10MB',\n LT100MB: 'lt100MB',\n GT100MB: 'gt100MB'\n };\n\n // list of things that may have changed the current query\n public static UPDATE_CAUSE = {\n TOGGLED_TYPE: 'cause.type.toggled',\n TOGGLED_EXPERTMODE: 'cause.expertmode.toggled',\n TERM_SET: 'cause.term.set',\n TYPES_SET: 'cause.types.set',\n CONTEXT_FOLDER_SET: 'cause.contextfolder.set',\n TOGGLED_FILTER: 'cause.filter.toggled',\n ADDED_FILTER: 'cause.filter.added',\n REMOVED_FILTER: 'cause.filter.removed',\n };\n /**\n * Detault Search mode Index\n */\n public static DEFAULT_SEARCH_MODE = 'idxs';\n /**\n * Search mode for Full test Search\n */\n public static FULLTEXT_SEARCH_MODE = 'fts';\n /**\n * fulltext search term\n */\n public term: string;\n /**\n * Array of fields to request from the search service, leaving this blank will return the fields specified in the result field configuration\n */\n public fields: string[];\n /**\n * List of object types to be fetched by the query. Leaving this blank will return results from any type\n */\n public types: ObjectType[] = [];\n /**\n * List of context folder types\n */\n public contextFolderTypes: ObjectType[] = [];\n /**\n * List of filters to define the query\n */\n public filters: SearchFilter[] = [];\n /**\n * Whether or not to retrieve suggestions\n */\n public suggest: boolean;\n /**\n * Whether or not the term is an expert mode query\n */\n public expertMode = false;\n /**\n * The scope of the query\n */\n public scope: QueryScope;\n /**\n * The search mode to be used (SearchQuery.DEFAULT_SEARCH_MODE or SearchQuery.FULLTEXT_SEARCH_MODE)\n */\n public searchMode: string = SearchQuery.DEFAULT_SEARCH_MODE;\n /**\n * Additional options to be applied to the query\n */\n public sortOptions: SortOption[] = [];\n /**\n * Resolve references with their title instead of their actual value\n */\n public resolveReference = true;\n /**\n * The state of the current query\n */\n public state: SearchState = new SearchState();\n\n public highlighting: boolean = false;\n public withContext: boolean = false;\n\n public name?: string;\n\n // Indicator what caused the update of a SearchQuery object.\n // Usefull for components that subscribed to a query, and need to\n // track the kind of changes made\n __updateCause: string;\n\n constructor() {}\n\n /**\n * Adds a new target type to the query\n *\n * @param type Object type to be added\n */\n public addType(type: ObjectType) {\n if (!this.types.find(t => t.id === type.id)) {\n this.types.push(type);\n }\n }\n\n /**\n * Removes a type from the target types list\n *\n * @param type The object type to be removed\n */\n public removeType(type: ObjectType) {\n this.types = this.types.filter(t => t.id !== type.id);\n }\n\n /**\n * Adds or removes the given type based on the current settings\n *\n * @param type The object type to be toggled\n */\n public toggleType(type: ObjectType) {\n if (this.types.find(t => t.id === type.id)) {\n this.removeType(type);\n } else {\n this.types.push(type);\n }\n }\n\n /**\n * Adds a new filter to the query. If there already is a filter set for the given property, it will be overridden.\n *\n * @param filter The filter to be added\n */\n public addFilter(filter: SearchFilter) {\n if (!filter) {\n return;\n }\n if (!this.getFilter(filter.property)) {\n this.filters.push(filter);\n } else {\n // if there already is a filter set for the target property\n // we'll just override it with the new value\n this.removeFilter(filter.property);\n this.filters.push(filter);\n }\n }\n\n /**\n * Removes a filter from the query.\n *\n * @param filterPropertyName The filter (its property name) to be removed\n */\n public removeFilter(filterPropertyName: string) {\n this.filters = this.filters.filter(f => f.property !== filterPropertyName);\n }\n\n /**\n * Adds or removes the given filter based on the current settings\n *\n * @param filter The filter to be toggled\n */\n public toggleFilter(filter: SearchFilter, override?: boolean) {\n if (this.getFilter(filter.property)) {\n this.removeFilter(filter.property);\n if (override) {\n this.filters.push(filter);\n }\n } else {\n this.filters.push(filter);\n }\n }\n\n /**\n * Retrieves a filter by its property name.\n *\n * @param propertyName The filters property name (qname of form element)\n * @returns Search Filter Object\n */\n public getFilter(propertyName: string): SearchFilter {\n return this.filters.find(f => f.property === propertyName);\n }\n\n public getTableFilters(propertyName: string): SearchFilter[] {\n return this.filters.filter(f => f.property.startsWith(propertyName + '.'));\n }\n\n /**\n * Adding new Sort Options\n * Sort Options are only added if they are not already present\n *\n * @param name\n * @param order\n * @param missing\n */\n public addSortOption(name: string, order: string, missing?: string) {\n if (!this.sortOptions.find(s => s.field === name)) {\n this.sortOptions.push(new SortOption(name, order, missing));\n }\n }\n\n /**\n *\n * @param name\n */\n public removeSortOption(name: string) {\n this.sortOptions = this.sortOptions.filter(s => s.field !== name);\n }\n\n /**\n * Generate a query JSON from the current SearchQuery that can be send to the search service.\n *\n * @param resolveReference in case of csv export the resolving of references is set by configuration\n */\n public getQueryJson(resolveReference?: boolean) {\n // Convert the current query object to a query JSON that can be consumed by the search service backend.\n // To keep it short, we'll only add properties that are set and differ from default values\n const queryJson: any = {};\n\n // add type filters\n if (this.types.length > 0) {\n queryJson.types = this.types.map(t =>\n typeof t === 'string' ? t : t.name\n );\n }\n\n // add context folder type filters\n if (this.contextFolderTypes.length > 0) {\n queryJson.contextfoldertypes = this.contextFolderTypes.map(t => t.name);\n }\n\n // filters\n if (this.filters.length > 0) {\n queryJson.filters = {};\n this.filters.forEach(f => {\n queryJson.filters[f.property] = f.toQuery();\n });\n }\n if (this.term) {\n queryJson.term = this.term;\n }\n // search fields\n if (this.fields) {\n queryJson.fields = this.fields;\n }\n if (this.name) {\n queryJson.name = this.name;\n }\n // add options when they differ from the default values\n if (this.applyOptions()) {\n queryJson.options = {};\n queryJson.options.scope = this.scope;\n if (this.suggest) {\n queryJson.options.suggest = true;\n }\n if (this.expertMode) {\n queryJson.options.expertmode = true;\n }\n\n queryJson.options.resolvereference = resolveReference !== undefined ? resolveReference : true;\n\n if (this.searchMode !== SearchQuery.DEFAULT_SEARCH_MODE) {\n queryJson.options.searchmode = this.searchMode;\n }\n if (this.sortOptions && this.sortOptions.length) {\n queryJson.options.sort = {};\n this.sortOptions.forEach((sortOption: SortOption) => {\n queryJson.options.sort[sortOption.field] = {\n order: sortOption.order\n };\n });\n }\n\n if (this.highlighting) {\n queryJson.options.highlighting = this.highlighting;\n }\n if (this.withContext) {\n queryJson.options.withcontext = this.withContext;\n }\n }\n return queryJson;\n }\n\n // determines whether or not the query send to the search service should contain options\n private applyOptions(): boolean {\n return (\n this.expertMode ||\n !!this.scope ||\n this.suggest ||\n this.highlighting ||\n this.resolveReference ||\n this.withContext ||\n this.searchMode !== SearchQuery.DEFAULT_SEARCH_MODE ||\n this.sortOptions.length > 0\n );\n }\n}\n\n/**\n * @ignore\n * Creates the Model of Sort Options\n */\nexport class SortOption {\n constructor(\n public field: string,\n public order: string,\n public missing?: string\n ) {}\n}\n\n/**\n * @ignore\n * Creates the Model of Field Definitions\n */\nexport class FieldDefinition {\n constructor(\n public elements: any[] = [],\n public sortorder: any[] = [],\n public grouporder: any[] = [],\n public pinned: any[] = [],\n public alignmentx: {qname: string, value: string}[] = [],\n public mode?: string\n ) {}\n}\n\n/**\n * @ignore\n * Class representing the state of a query\n */\nexport class SearchState {\n public count: {value: number, relation?: string};\n public aggregations;\n public lastChange?: string;\n\n /**\n * @ignore\n */\n constructor() {\n this.aggregations = {\n type: new Map<string, number>(),\n contextType: new Map<string, number>(),\n created: [],\n modified: [],\n mimetypegroup: [],\n filesize: []\n };\n }\n\n get totalCount() {\n return Array.from(this.aggregations.type.values()).reduce((acc: number, cur: number) => acc + cur, 0) as number;\n }\n\n get isEmpty() {\n return !(this.count && this.count.value);\n }\n\n addAggregations(type: string, key: string, value: number, agg?) {\n switch (type) {\n case 'contexttype': {\n this.aggregations.contextType.set(key, value);\n break;\n }\n case SearchQuery.BASE_PARAMS.TYPE: {\n this.aggregations.type.set(key, value);\n break;\n }\n case SearchQuery.BASE_PARAMS.CREATED: {\n this.aggregations.created.push({\n key: key,\n value: value\n });\n break;\n }\n case SearchQuery.BASE_PARAMS.MODIFIED: {\n this.aggregations.modified.push({\n key: key,\n value: value\n });\n break;\n }\n case SearchQuery.BASE_PARAMS.MIMETYPEGROUP: {\n this.aggregations.mimetypegroup.push({\n key: key,\n value: value\n });\n break;\n }\n case SearchQuery.BASE_PARAMS.FILESIZE: {\n this.aggregations.filesize.push({\n key: key,\n value: value,\n from: agg.from,\n to: agg.to || Infinity,\n label: key.replace('gt', '> ').replace('lt', '< ')\n });\n break;\n }\n }\n }\n}\n\n/**\n * @ignore\n * Creates the Model of Search Results\n */\nexport class SearchResult {\n public count: {value: number, relation?: string};\n public suggests: string[];\n public hits: any[];\n public typeName: string;\n public fields: FieldDefinition;\n\n constructor() {}\n}\n\nexport class SearchFilter {\n /**\n * available operators for a search filter\n */\n public static OPERATOR = {\n /** equal */\n EQUAL: 'eq',\n /** match (for string with classification \"path6666\") */\n MATCH: 'match',\n /** match at least one of the provided values (value has to be an array) */\n IN: 'in',\n /** greater than */\n GREATER_THAN: 'gt',\n /** greater than or equal */\n GREATER_OR_EQUAL: 'gte', //\n LESS_THAN: 'lt', // less than\n LESS_OR_EQUAL: 'lte', // less than or equal\n INTERVAL: 'gtlt', // interval\n INTERVAL_INCLUDE_BOTH: 'gtelte', // interval include left and right\n INTERVAL_INCLUDE_TO: 'gtlte', // interval include right\n INTERVAL_INCLUDE_FROM: 'gtelt', // interval include left\n RANGE: 'rg' // aggegation ranges\n };\n\n /**\n * Constructor for creating a new SearchFilter.\n *\n * @param property The qualified name of the field this filter should apply to.\n * @param operator Operator indicating how to handle the filters value(s). See SearchFilter.OPERATOR for available operators.\n * @param firstValue The filters value\n * @param secondValue Optional second value for filters that for example define ranges of values\n * @param transformDate Flag to transform date hours and minutes based on operator\n */\n constructor(\n public property: string,\n public operator: string,\n public firstValue: any,\n public secondValue?: any,\n public transformDate?: {time?: boolean; timezone?: boolean}\n ) {}\n\n formatDate(value: any) {\n return this.transformDate && value\n ? this.transformDate.timezone\n ? new DatePipe('en').transform(value, 'yyyy-MM-ddTZ')\n : this.transformDate.time\n ? new Date(value).toISOString().slice(0, 16) + 'Z'\n : new DatePipe('en').transform(value, 'yyyy-MM-dd')\n : value;\n }\n\n toQuery() {\n return {\n o: this.operator,\n v1: this.formatDate(this.firstValue),\n ...(this.secondValue && {v2: this.formatDate(this.secondValue)})\n };\n }\n\n toDateTimeQuery() {\n if (this.transformDate && this.transformDate.timezone && this.firstValue) {\n let firstValue = this.firstValue;\n let secondValue = this.secondValue;\n const endDate = new Date(secondValue || firstValue);\n endDate.setHours(23, 59, 59, 999);\n if (this.operator === SearchFilter.OPERATOR.LESS_OR_EQUAL) {\n firstValue = endDate.toISOString();\n } else {\n const startDate = new Date(firstValue);\n if (\n this.operator === SearchFilter.OPERATOR.GREATER_THAN ||\n this.operator === SearchFilter.OPERATOR.INTERVAL\n ) {\n startDate.setHours(23, 59, 59, 999);\n } else {\n startDate.setHours(0, 0, 0, 0);\n }\n firstValue = startDate.toISOString();\n }\n if (\n this.operator === SearchFilter.OPERATOR.INTERVAL_INCLUDE_BOTH ||\n this.operator === SearchFilter.OPERATOR.EQUAL\n ) {\n secondValue = endDate.toISOString();\n }\n return {\n o:\n this.operator === SearchFilter.OPERATOR.EQUAL\n ? SearchFilter.OPERATOR.INTERVAL_INCLUDE_BOTH\n : this.operator,\n v1: firstValue,\n ...(secondValue && {v2: secondValue})\n };\n } else {\n return this.toQuery();\n }\n }\n\n /**\n * @ignore\n */\n match(\n property: string,\n operator: string,\n firstValue: any,\n secondValue?: any\n ) {\n return (\n this.property === property &&\n this.operator === operator &&\n this.secondValue === secondValue &&\n (this.firstValue instanceof Array\n ? !!this.firstValue.find(v => v === firstValue)\n : this.firstValue === firstValue)\n );\n }\n}\n","import {SearchFilter} from '../service/search/search-query.model';\n\n/**\n * Value class to be used with form elements that support ranges\n */\nexport class RangeValue {\n\n /**\n * Creates new instance\n * @param operator The operator (see @link SearchFilter.OPERATOR)\n * @param firstValue The rages first/start value\n * @param secondValue The ranges last/end value\n */\n constructor(public operator: string,\n public firstValue: string,\n public secondValue?: string) {\n }\n\n /**\n * Get the label for a given operator\n * @param operator The operator to retrieve the label for\n * @returns The corresponding label\n */\n public static getOperatorLabel(operator: string) {\n let label = '?';\n switch (operator) {\n case SearchFilter.OPERATOR.EQUAL: {\n label = '=';\n break;\n }\n case SearchFilter.OPERATOR.GREATER_OR_EQUAL: {\n label = '>=';\n break;\n }\n case SearchFilter.OPERATOR.LESS_OR_EQUAL: {\n label = '<=';\n break;\n }\n case SearchFilter.OPERATOR.INTERVAL_INCLUDE_BOTH: {\n label = '-';\n break;\n }\n }\n return label;\n }\n}\n","import {EMPTY as observableEmpty, throwError as observableThrowError} from 'rxjs';\nimport {EoError} from '../model/eo-error.model';\nimport {RangeValue} from '../model/range-value.model';\nimport moment from 'moment';\n\nexport type FormatedMailTo = string | string[];\nexport class Utils {\n\n private static PREF_RANGEVALUE = 'RangeValue';\n\n public static uniqBy(items: any[], property: string) {\n const a: {[key: string]: any} = {};\n items.forEach(i => a[i[property]] = i);\n return Object.keys(a).map(k => a[k]) \n }\n\n /**\n * Utility method for adding parameters to a given URI.\n *\n * @param uri The uri string to attach the parameters to\n * @param params The object containing parameters to be appended\n * @returns the given uri extended by the given parameters + remove empty parameters\n */\n public static buildUri(uri: string, params: {}): string {\n const q = Object.keys(params)\n .filter(k => params[k] || params[k] === 0 || params[k] === false)\n .map(k => k + '=' + encodeURIComponent(params[k])).join('&');\n return uri + (q ? '?' + q : '');\n }\n\n /**\n * Creates a unique identifier.\n * @returns A Universally Unique Identifier\n */\n public static uuid(): string {\n return Utils._p8() + Utils._p8(true) + Utils._p8(true) + Utils._p8();\n }\n\n /**\n * Encode a filename safe for sending chars beyond ASCII-7bit using quoted printable encoding.\n *\n * @param filename The file name\n * @returns The quoted printable filename\n */\n public static encodeFileName(filename: string): string {\n const fileName = Utils.encodeToQuotedPrintable(Utils.encodeToUtf8(filename)).replace(/_/g, '=5F')\n return `=?UTF-8?Q?${fileName}?=`;\n }\n\n /**\n *\n * @param boolean s\n * @return string\n */\n private static _p8(s?: boolean): string {\n const p = (Math.random().toString(16) + '000000000').substr(2, 8);\n return s ? `-${p.substr(0, 4)}-${p.substr(4, 4)}` : p;\n }\n\n /**\n * Converts a javascript text to the utf-8 converted variant.\n * See [unicode]{@link http://thlist.onlinehome.de/thomas_homepage/unicode/UTF-8%20Konvertierung%20mittels%20JavaScript.htm} for reference\n *\n * @param rawinput The input string\n * @returns The utf-8 converted string\n */\n private static encodeToUtf8(rawinput) {\n /**\n * Normalize line breaks\n */\n rawinput = rawinput.replace(/\\r\\n/g, '\\n');\n let utfreturn = '';\n for (let n = 0; n < rawinput.length; n++) {\n /**\n * Unicode for current char\n */\n const c = rawinput.charCodeAt(n);\n if (c < 128) {\n /**\n * All chars range 0-127 => 1byte\n */\n utfreturn += String.fromCharCode(c);\n } else if ((c > 127) && (c < 2048)) {\n /**\n * All chars range from 127 to 2047 => 2byte\n */\n utfreturn += String.fromCharCode((c >> 6) | 192);\n utfreturn += String.fromCharCode((c & 63) | 128);\n } else {\n /**\n * All chars range from 2048 to 66536 => 3byte\n */\n utfreturn += String.fromCharCode((c >> 12) | 224);\n utfreturn += String.fromCharCode(((c >> 6) & 63) | 128);\n utfreturn += String.fromCharCode((c & 63) | 128);\n }\n }\n return utfreturn;\n }\n\n /**\n * See [quoted-printable]{@link https://github.com/mathiasbynens/quoted-printable/blob/master/quoted-printable.js}\n **/\n private static quotedPrintable(symbol) {\n if (symbol > '\\xFF') {\n throw RangeError('`encodeToQuotedPrintable` expects extended ASCII input only. Missing prior UTF-8 encoding?');\n }\n const codePoint = symbol.charCodeAt(0);\n const hexadecimal = codePoint.toString(16).toUpperCase();\n return '=' + ('0' + hexadecimal).slice(-2);\n }\n\n /**\n * Encode symbols that are definitely unsafe (i.e. unsafe in any context). The regular expression describes these unsafe symbols.\n *\n * @param rawinput Input string to be encoded\n * @returns The encoded string\n */\n private static encodeToQuotedPrintable(rawinput): string {\n const encoded = rawinput.replace(/[\\0-\\b\\n-\\x1F=\\x7F-\\uD7FF\\uDC00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF]/g, this.quotedPrintable);\n return encoded;\n }\n\n /**\n * Sorts An Array of Object by given key\n * See [ng-packagr issues 696]{@link https://github.com/dherges/ng-packagr/issues/696}\n *\n * @param key\n * @param order\n * @param locales\n * @param options\n * @returns (a: any, b: any) => number\n */\n public static sortValues(key = '', order = 'asc', locales?: string | string[], options?: Intl.CollatorOptions) {\n const f = (a: any, b: any) => {\n let comparison: number;\n const varA = Utils.getProperty(a, key);\n const varB = Utils.getProperty(b, key);\n if (typeof varA === 'number' && typeof varB === 'number') {\n comparison = varA - varB;\n } else {\n const stringA = varA || varA === 0 ? varA.toString() : '';\n const stringB = varB || varB === 0 ? varB.toString() : '';\n comparison = stringA.localeCompare(stringB, locales, options);\n }\n return order === 'desc' ? comparison * -1 : comparison;\n };\n return f;\n }\n\n /**\n * [ng-packagr issues 696]{@link https://github.com/dherges/ng-packagr/issues/696}\n *\n * @param object\n * @param string key\n * @returns any\n */\n public static getProperty(object: any, key = ''): any {\n const f = key ? key.split('.').reduce((o, k) => (o || {})[k], object) : object;\n return f;\n }\n\n /**\n * Use on Observable.catch or Observable.subscribe to return empty value\n * [ng-packagr issues 696]{@link https://github.com/dherges/ng-packagr/issues/696}\n *\n * @param (error) => any callback\n * @returns (error) => Observable<never>\n */\n public static empty(callback?: (error) => any) {\n const f = (error) => {\n return observableEmpty;\n };\n return f;\n }\n\n /**\n * Use on Observable.catch with specific skipNotification function !!!\n * [ng-packagr issues 696]{@link https://github.com/dherges/ng-packagr/issues/696}\n *\n * @param skipNotification\n * @param callback\n * @param name\n * @param message\n */\n public static catchSkip(skipNotification?: (error) => any, callback?: (error) => any, name?: string, message?: string) {\n const f = (error) => {\n const _error = callback && callback(error);\n const _skipNotification = skipNotification && skipNotification(error);\n return observableThrowError(new EoError(_error instanceof Error ? _error : error, name, message, _skipNotification));\n };\n return f;\n }\n\n /**\n * Use on Observable.catch !!!\n * [ng-packagr issues]{@link https://github.com/dherges/ng-packagr/issues/696}\n *\n * @param callback\n * @param name\n * @param message\n * @param skipNotification\n * @return (error) => Observable<never>\n */\n public static catch(callback?: (error) => any, name?: string, message?: string, skipNotification?: boolean) {\n const f = (error) => {\n const _error = callback && callback(error);\n return observableThrowError(new EoError(_error instanceof Error ? _error : error, name, message, skipNotification));\n };\n return f;\n }\n\n /**\n * Use on Observable.subscribe !!!\n * [ng-packagr issues]{@link https://github.com/dherges/ng-packagr/issues/696}\n *\n * @param callback\n * @param name\n * @param message\n * @param skipNotification\n * @return (error) => void\n */\n public static throw(callback?: (error) => any, name?: string, message?: string, skipNotification?: boolean) {\n const f = (error) => {\n const _error = callback && callback(error);\n throw new EoError(_error instanceof Error ? _error : error, name, message, skipNotification);\n };\n return f;\n }\n\n /**\n * Use on Observable.subscribe only if you want to skip notification / toast!!!\n *\n * @param callback\n * @param name\n * @param message\n * @param skipNotification\n * @return (error) => void\n */\n public static logError(callback?: (error) => any, name?: string, message?: string, skipNotification = true) {\n return Utils.throw(callback, name, message, skipNotification);\n }\n\n /**\n * Checks if element is visible\n *\n * @param elem\n * @return boolean\n */\n public static isVisible(elem: any): boolean {\n return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n }\n\n public static getBaseHref() {\n return document.getElementsByTagName('base')[0].getAttribute('href');\n }\n\n /**\n *\n * Truncate a string (first argument) if it is longer than the given maximum string length (second argument).\n * Return the truncated string with a ... ending ot whats provided.\n *\n * @param string str\n * @param number num\n * @returns\n */\n public static truncateString(str, num, ending = '...') {\n if (str.length > num) {\n if (num > 3) {\n num -= 3;\n }\n str = `${str.substring(0, num)}${ending}`;\n }\n return str;\n };\n\n /**\n * Get the TimeZone Offsest as ISO String.\n *\n * @returns\n */\n public static getTimezoneOffset(): string {\n return moment().format('Z');\n }\n\n public static formatMailTo(value: FormatedMailTo, isEmail: boolean): FormatedMailTo {\n if (isEmail && !!value) {\n return (Array.isArray(value)) ? value.join().replace(/,/g, '; ') : value.replace(/,/g, '; ');\n }\n return value;\n }\n\n public static arrayToObject(arr = [], keyProperty?: string | ((o: any) => string), valueProperty?: string | ((o: any) => any)) {\n const key = typeof keyProperty === 'string' ? (o: any) => o[keyProperty] : keyProperty;\n const value = typeof valueProperty === 'string' ? (o: any) => o[valueProperty] : valueProperty;\n return arr.reduce((acc, cur, i) => {\n acc[key ? key(cur) : i] = value ? value(cur) : cur;\n return acc;\n }, {});\n }\n\n public static formDataStringify(o: any): string {\n const f = (key, value) => {\n if (value instanceof RangeValue) {\n return `/${Utils.PREF_RANGEVALUE}(${JSON.stringify(value)})/`;\n }\n return value;\n };\n return JSON.stringify(o, f);\n }\n\n public static formDataParse(str: string): any {\n const f = (key, value) => {\n if (\n typeof value === 'string' &&\n value.startsWith(`/${Utils.PREF_RANGEVALUE}(`) &&\n value.endsWith(')/')\n ) {\n value = value.substring(Utils.PREF_RANGEVALUE.length + 2, value.length - 2);\n const parsed = JSON.parse(value);\n\n return new RangeValue(parsed.operator, parsed.firstValue, parsed.secondValue);\n }\n return value;\n };\n return JSON.parse(str, f);\n }\n}\n","/**\n * Events emitted by parts of the application\n */\n\nexport const EnaioEvent = {\n LOGOUT: 'eo.user.logout',\n CLIENT_LOCALE_CHANGED: 'eo.user.locale.client.changed',\n SCHEMA_LOCALE_CHANGED: 'eo.user.locale.schema.changed',\n DMS_OBJECT_LOADED: 'eo.dms.object.loaded',\n DMS_OBJECT_DELETED: 'eo.dms.object.deleted',\n DMS_OBJECT_VERSION_RESTORED: 'eo.dms.object.version.restored',\n DMS_OBJECT_RESTORED_OR_DELETED: 'eo.dms.object.restored.deleted',\n DMS_OBJECT_FAVORITE_ON: 'eo.dms.object.favorite.on',\n DMS_OBJECT_FAVORITE_OFF: 'eo.dms.object.favorite.off',\n DMS_OBJECT_UPDATED: 'eo.dms.object.updated',\n DMS_OBJECT_PASTED: 'eo.dms.object.pasted',\n INBOX_ITEM_CONFIRMED: 'eo.inbox.item.confirmed',\n PROCESS_FILE_CHANGED: 'eo.process.file.changed',\n EO_DIALOG_STACK_CHANGED: 'eo.dialog.stack.changed',\n SYSTEM_STATUS_SCHEMA_CHANGED: 'eo.status.schema',\n SYSTEM_STATUS_ORG_CHANGED: 'eo.status.org',\n SYSTEM_STATUS_SEC_CHANGED: 'eo.status.sec',\n SYSTEM_STATUS_ACL_CHANGED: 'eo.status.acl',\n SYSTEM_STATUS_INBOX_CHANGED: 'eo.status.inbox',\n EO_LICENSE_GRID: 'eo_license_grid',\n SYSTEM_STATUS_IMAGE_CHANGE: 'eo.status.image'\n};\n","import {filter} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {Event} from '../../interface/event.interface'\n\n/**\n * Triggerable and Subscribable events\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class EventService {\n\n private eventSource = new Subject<Event>();\n /**\n * Eventstream to subscribe to\n */\n public event$: Observable<any> = this.eventSource.asObservable();\n\n /**\n * @ignore\n */\n constructor() {\n }\n\n /**\n * Trigger an global event\n * @param type Type/key of the event\n * @param data Data to be send along with the event\n */\n trigger(type: string, data?: any) {\n this.eventSource.next({type, data});\n }\n\n /**\n * Listen on a triggered event\n * @param types Type/key of the event\n */\n on(...types: string[]): Observable<Event> {\n return this.event$\n .pipe(filter(event => event && !!types.find(t => t === event.type)));\n }\n}\n","import {Injectable} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Utils} from '../../util/utils';\nimport {EventService} from '../events/event.service';\nimport {EnaioConfig} from './config.interface';\nimport {EnaioEvent} from '../events/events';\nimport {WidgetGridWorkspaceConfig} from '@yuuvis/widget-grid';\n\n/**\n * Collection of all Configurations\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class Config {\n\n private cfg: EnaioConfig = null;\n\n private fixServiceUris = null;\n\n /**\n * @ignore\n */\n constructor(private translate: TranslateService, private event: EventService) {\n }\n\n /**\n * @ignore\n */\n private initializeGrid() {\n this.event.trigger(EnaioEvent.EO_LICENSE_GRID);\n }\n\n /**\n * @ignore\n * Set during app init (see CoreInit)\n */\n public set(cfg: EnaioConfig) {\n this.cfg = cfg;\n this.fixServiceUris = new Map<string, string>([\n ['serviceBase', '/rest-ws/service'],\n ['searchBase', '/search'],\n ['contextBase', '/structure'],\n ['inboxBase', '/inboxservice'],\n ['bpmBase', '/bpm'],\n ['agentBase', '/agent'],\n ['statusBase', '/status']]);\n const languages = this.getClientLocales().map(lang => lang.iso);\n this.translate.addLangs(languages);\n this.translate.setDefaultLang(this.getDefaultClientLocale());\n this.initializeGrid();\n }\n\n /**\n * @Deprecated replaced by getContextPath\n */\n getLoginBase(): string {\n return this.getContextPath();\n }\n\n getContextPath(): string {\n let cp = this.getUri('contextPath')\n // TODO: remove when not supported anymore\n || this.getUri('loginBase');\n return (cp && cp !== '/') ? cp : '';\n }\n\n /**\n * Returns nested property of config | complete config by default\n * @param property The name of the property to be retrieved\n */\n public getRaw(property: string): any {\n return property ? Utils.getProperty(this.cfg, property) : this.cfg;\n }\n\n /**\n * Getter for the URI\n * @param property The name of the property/uri to be retrieved\n * @returns value of the property from the URI-Section of the config\n */\n public getUri(property: string): string {\n return (this.cfg['uri'] && this.cfg['uri'][property]) || this.fixServiceUris.get(property);\n }\n\n /**\n * Getter for the available client locales\n * @returns available client locales\n */\n public getClientLocales(): any[] {\n return this.cfg['languages'];\n }\n\n /**\n * Getter for the supported client locales\n * @returns supported client locales\n */\n public getSupportedClientLocales(): string[] {\n return ['en', 'de', 'ar', 'es', 'pt', 'fr', 'zh', 'lv', 'ru', 'it', 'nl', 'sk', 'pl', 'uk', 'ja', 'ko', 'hi', 'bn', 'de-CH', 'zh-Hant',\n 'th', 'vi', 'en-GB', 'he', 'fi', 'se', 'da', 'nb', 'nn', 'id', 'ms'];\n }\n\n /**\n * Get the dashboards background image\n * @returns background image uri for the dashboards background image\n */\n public getDashboardBackgroundImage(): string {\n return this.cfg['dashboardBackgroundImage'];\n }\n\n /**\n * Get the sidebars header background image\n * @returns background image uri for the sidebars header background image\n */\n public getSideBarHeaderImage(): string {\n return this.cfg['sideBarHeaderImage'];\n }\n\n /**\n * Get the navigation bar image (Logo)\n * only accepts svg.\n * @returns background image uri for the Navigationbar (Logo)\n */\n public getNavigationBarImage(): string {\n let logo = this.cfg['navBarLogo'];\n logo = logo.endsWith('.svg') ? logo : `<svg></svg>`;\n return logo;\n }\n\n /**\n * Get the default client locale\n * @returns ISO string of the locale\n */\n public getDefaultClientLocale() {\n const lang = this.getClientLocales().find(_ => _.fallback);\n return lang ? lang.iso : 'en';\n }\n\n /**\n * Getter for the Agent Configuration\n */\n public getAgentConfig(): any {\n return this.cfg['agent'];\n }\n}\n","\nexport interface Privileges {\n id: string;\n type: string;\n name: string;\n}\n\nexport class EoUser {\n\n /**\n * The users ID\n */\n public id: string;\n /**\n * The users name\n */\n public name: string;\n /**\n * The users firstname\n */\n public firstname: string;\n /**\n * The users lastname\n */\n public lastname: string;\n /**\n * The users title (generated from backends title pattern)\n */\n public title: string;\n /**\n * The users email address\n */\n public email: string;\n /**\n * Flag indicating whether or not the user is present\n */\n public present: boolean;\n /**\n * URI to the users avatar image\n */\n public imageUri: string;\n /**\n * Custom user settings\n */\n public userSettings: any;\n /**\n * @ignore\n */\n public schema: any;\n /**\n * List of the users privileges\n */\n public privileges: Privileges[];\n /**\n * List of roles the user belongs to\n */\n public roles: any[];\n /**\n * List of the users deputies\n */\n public deputies: any[];\n /**\n * List of the users substitutes\n */\n public substitutesOf: any[];\n /**\n * Password validation settings\n */\n public passwortvalidation: any;\n /**\n * @ignore\n */public schemaLocale: string;\n /**\n * @ignore\n */\n public uiDirection: string;\n\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new user instance\n */\n constructor(json: any) {\n\n const jUser = json['user'];\n const jSchema = json['schema'];\n\n this.id = jUser.id;\n this.name = jUser.name;\n this.firstname = jUser.firstname;\n this.lastname = jUser.lastname;\n this.title = jUser.title;\n this.email = jUser.email;\n this.present = jUser.present;\n if (jUser.hasimage === true) {\n this.imageUri = '/organization/image/' + this.id;\n }\n this.userSettings = typeof json['usersettings'] === 'object' ? json['usersettings'] : {};\n this.schema = {\n version: jSchema.version,\n supportedLocales: jSchema.supportedlocales\n };\n\n this.privileges = jUser.privileges;\n this.roles = jUser.effectiveroles;\n this.deputies = jUser.deputies || [];\n this.substitutesOf = jUser.substitutesOf || [];\n this.schemaLocale = jUser.locale || this.getClientLocale();\n }\n\n /**\n * Checks if the user has a certain privilege\n * @param privilege The privilege to be checked\n * @returns True if the user has this particular privilege, false otherwise\n */\n hasPrivilege(privilege: string): boolean {\n\n let match = false;\n if (this.privileges) {\n let i = 0;\n while (!match && i < this.privileges.length) {\n match = this.privileges[i].name === privilege;\n i++;\n }\n }\n return match;\n }\n\n /**\n * Checks if the user has a certain role\n * @param role The role to be checked\n * @returns True if the user has this particular role, false otherwise\n */\n hasRole(role: string): boolean {\n let match = false;\n if (this.roles) {\n let i = 0;\n while (!match && i < this.roles.length) {\n match = this.roles[i].name === role;\n i++;\n }\n }\n return match;\n }\n\n /**\n * adds the base path for the users image path.\n * @param base The base path\n */\n public setImageBase(base: string) {\n if (this.imageUri) {\n this.imageUri = base + this.imageUri;\n }\n }\n\n /**\n * Gets the users configured client locale\n * @returns locale string\n */\n public getClientLocale(): string {\n return this.userSettings['clientlocale'] || 'en';\n }\n\n /**\n * Gets the users configured schema locale\n * @returns locale string\n */\n public getSchemaLocale(): string {\n return this.schemaLocale;\n }\n\n}\n","import {OrgUser} from './org.model';\n\n/**\n * @ignore\n */\nexport interface WorkItemHistoryPerformer {\n type: string;\n label: string;\n}\n\n/**\n * History entry of a work item.\n */\nexport class WorkItemHistoryEntry {\n\n /**\n * Title of the history entry\n */\n title: string;\n /**\n * Short description of the history entry\n */\n description: string;\n /**\n * The date (time) this entry was created\n */\n time: Date;\n /**\n * Index of the history entry (may be used for ordering)\n */\n number: number;\n /**\n * History entries type\n */\n type: string;\n /**\n * User that was responsible for creating this entry (e.g. by executing an action)\n */\n editor: OrgUser;\n /**\n * Collection of performers. Performers are users, groups or roles that received a work item that let to the creation of a history entry.\n * If for example a work item was forwarded, the history entry created for that action will contain the recipients of the forwarded action.\n */\n performer: WorkItemHistoryPerformer[];\n /**\n * Additional data for special kinds of entries like errors, personalization, periods\n */\n data: any;\n\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new work item history instance\n */\n constructor(json: any) {\n\n this.title = json.activityName;\n this.description = json.description;\n this.number = json.number;\n this.time = json.time;\n this.type = json.type;\n this.data = {};\n\n // overrides for special types of history entries\n switch (json.type) {\n // deadline started\n case 'DEADLINE_START': {\n this.title = `${json.periodName}`;\n // description will be generated in template\n this.description = null;\n this.data = {\n periodFireTime: json.periodFireTime\n };\n this.type = json.type;\n break;\n }\n // deadline reached\n case 'DEADLINE_FIRE': {\n this.title = `${json.periodName}`;\n // description will be generated in template\n this.description = null;\n this.data = {\n periodFireTime: json.periodFireTime\n };\n this.type = json.type;\n break;\n }\n }\n\n // are there additional information about the performer\n // that caused the history entry\n if (json.performer) {\n this.performer = [];\n json.performer.groups.forEach(g => this.performer.push({type: 'group', label: g.name}));\n json.performer.roles.forEach(r => this.performer.push({type: 'role', label: r.name}));\n json.performer.users.forEach(u => this.performer.push({type: 'user', label: `${u.lastname}, ${u.firstname} (${u.name})`}));\n }\n\n if (json.user) {\n this.editor = json.user;\n }\n }\n}\n","import {OrgGroup, OrgRole, OrgUser} from './org.model';\n\n/**\n * Process that could be executed/started. Starting an executable process will\n * create an instance of it (Process), which then can be fetched by its ID.\n */\nexport interface ExecutableProcess {\n id: string;\n qname: string;\n title: string;\n description?: string;\n iconid?: string;\n data?: any;\n data_meta?: any;\n form?: any;\n actions?: any;\n}\n\n\n/**\n * Instance of an executable process.\n */\nexport class Process {\n\n /**\n * processes unique identifier\n */\n processid: string;\n /**\n * The name of the process\n */\n procname: string;\n /**\n * ID of the user that created this process\n */\n creatorid: string;\n /**\n * ID of a process icon\n */\n iconid?: string;\n /**\n * URL of a process icon\n */\n iconurl?: string;\n /**\n * The localized title of the process\n */\n localizedsubject: string;\n /**\n * The ID of the underlying process model.\n * The process model is the definition of a process, so a process is basically an instance of a model.\n */\n modelid: string;\n /**\n * The name of the process model.\n */\n modelname: string;\n /**\n * Date (time) the process was started\n */\n starttime: number;\n /**\n * Date (time) the process ended\n */\n endtime: number;\n /**\n * Processes state\n *\n * NONE(-1),\n * CREATED(0),\n * RUNNING(20),\n * COMPLETED(30),\n * SUSPENDED(40),\n * TERMINATED(50),\n * ERRORSUSPENDED(60);\n */\n state: string;\n\n /**\n * A process file is a container that holds objects (e.g. DMS Objects) attached to the current work item. A work item for\n * approving an invoice for example would have the related invoice document attached.\n */\n file: FileEntry[];\n\n /**\n * Title of the process genarated from the localized subject\n */\n get title() {\n return this.localizedsubject || '';\n }\n\n /**\n * Process ID\n */\n get id() {\n return this.processid || '';\n }\n\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new process item history instance\n */\n constructor(json: any) {\n\n this.creatorid = json.creatorid;\n this.modelname = json.modelname;\n this.iconurl = json.iconurl;\n this.iconid = json.iconid;\n this.localizedsubject = json.subject;\n this.modelid = json.modelid;\n this.processid = json.id;\n this.procname = json.name;\n this.starttime = json.starttime;\n this.endtime = json.endtime;\n this.state = json.state;\n }\n\n setFile(fileEntries: FileEntry[]) {\n this.file = fileEntries || [];\n }\n}\n\n\n/**\n * WorkItems are the tasks of a process that require user interaction.\n */\nexport class WorkItem {\n\n /**\n * unique identifier\n */\n id: string;\n /**\n * work items title\n */\n title: string;\n /**\n * work items description\n */\n description: string;\n /**\n * the state the work item is in e.g. 'PERSON', 'CREATED', etc.\n */\n state: string;\n\n /**\n * ID of the parent process\n */\n processId: string;\n /**\n * title of the parent process\n */\n processTitle: string;\n /**\n * subject of the parent process\n */\n processSubject: string;\n\n /**\n * Form model for this work item. May be empty if the work item does not require user inputs\n */\n form: any;\n /**\n * Data for the form model. Form definition and the forms data are separated, and will be merged by the application.\n */\n data: any;\n /**\n * Meta data for data properties. Some form elements require additional information about the actual value.\n * Such values are for example form elements of type CODESYSTEM or ORGANIZATION.\n */\n data_meta: any;\n\n /**\n * Work items may define actions aside from the default `continue` action. This property holds a collection of all\n * actions provided by the current work item.\n */\n actions: WorkItemAction[];\n /**\n * A work items file is a container that holds objects (e.g. DMS Objects) attached to the current work item. A work item for\n * approving an invoice for example would have the related invoice document attached.\n */\n file: FileEntry[];\n /**\n * Permissions for the work items file entries, that allow or deny adding or removing entries from the work items file.\n */\n fileEntryPermissions: {\n add: boolean;\n remove: boolean\n\n };\n /**\n * Work items may be received by users in substitution for other users that are currently unavailable.\n * If this is the case this property holds the information about the user that should have retrieved the work item.\n */\n inSubstituteOf: OrgUser[];\n /**\n * When set to true, executing an action requires additional authorization.\n */\n authRequired: boolean;\n /**\n * The date the work item has been received\n */\n received: Date;\n /**\n * Work items are able to be set up with due time property that defines a time for the work item to have been processed\n */\n duetime: Date;\n /**\n * Performers are users, groups and/or roles that received the work item\n */\n performer: {\n groups: OrgGroup[],\n roles: OrgRole[],\n users: OrgUser[]\n };\n /**\n * The name of the used process model\n */\n qmodelname: string;\n\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new work item instance\n */\n constructor(json: any) {\n Object.assign(this, json);\n\n this.fileEntryPermissions = {\n add: json.isFileElemAddable || false,\n remove: json.isFileElemRemovable || false\n };\n if (this.actions && this.actions.length) {\n this.actions = this.actions.sort((a, b) => {\n return a.code - b.code;\n });\n }\n }\n\n setFile(fileEntries: FileEntry[]) {\n if (fileEntries) {\n // Sort files by addtime\n this.file = fileEntries.sort((a, b) => {\n return (a.addtime < b.addtime) ? -1 : ((a.addtime > b.addtime) ? 1 : 0);\n });\n } else {\n this.file = [];\n }\n }\n}\n\n\n/**\n * A work items action. Actions are basically defining the next steps of a\n * process from the current work item.\n */\nexport interface WorkItemAction {\n /**\n * The actions title (label)\n */\n title: string;\n /**\n * Short description of the action\n */\n description?: string;\n /**\n * The actions type. Values may be `FORWARD` (forward to the next process step) or `LINK` (open an external link to e.g. process\n * or retrieve data required for the current work item)\n */\n type: string;\n /**\n * Code that identifies the action (kind of an ID in context of the current work item)\n */\n code: number;\n /**\n * If actions type is set to `LINK` this property holds the target URL to forward to\n */\n url?: string;\n}\n\n\n/**\n * Entry of a work items file. A work items file is a container that holds objects (e.g. DMS Objects) attached to a\n * work item. A work item for approving an invoice for example would have the related invoice document attached.\n */\nexport interface FileEntry {\n /**\n * unique identifier\n */\n id: string;\n /**\n * Title of the file entry\n */\n title: string;\n /**\n * Short description of the file entry\n */\n description: string;\n /**\n * ID of an icon (e.g. object type icon in case of dms objects)\n */\n iconid: string;\n /**\n * Name of the user that created this file entry\n */\n creator: string;\n /**\n * The time (date) this entry was added to the work item\n */\n addtime: number;\n /**\n * file entries type\n */\n type: string;\n}\n","export enum ClipboardAction {\n COPY,\n CUT\n}\n","/**\n * @ignore\n */\nexport interface IObjectType {\n id: string;\n implements?: string[];\n folder: boolean;\n iscontextfolder: boolean;\n abstract: boolean;\n icon?: any;\n maxfiles: number;\n minfiles: number;\n name: string;\n qname: string;\n label: string;\n description: string;\n group?: any;\n elements: any[];\n allowedcontexttypes?: ContextType[];\n supertypes?: any[];\n shareable: boolean;\n allowedlocations?: {\n parenttypes: ParentTypes[];\n };\n}\n\n/**\n * @ignore\n */\nexport interface ParentTypes {\n name: string;\n count: string;\n uri: string;\n}\n\n/**\n * @ignore\n */\nexport interface ContextType {\n name: string;\n label: string;\n description?: string;\n}\n\n/**\n * Representation of an object type. Object types are defined with the system definition and describe\n * different kind of objects that allowed to be created.\n */\nexport class ObjectType {\n /**\n * Object types ID\n */\n id: string;\n /**\n * List of all supertypes\n */\n implements: string[];\n /**\n * @ignore\n * is basically the same as isContextFolder, because we do not allow other folders than context folder\n */\n isFolder: boolean;\n /**\n * Flag indicating whether or not the object type is a context folder\n */\n isContextFolder: boolean;\n /**\n * Flag indicating whether or not the object type is an abstract type other types can inherit from\n */\n isAbstract: boolean;\n /**\n * ID of the object types icon\n */\n iconId: string;\n /**\n * Minimum number of files to be attached to this type\n */\n minFiles: number;\n /**\n * Maximum number of files to be attached to this type\n */\n maxFiles: number;\n /**\n * Object types internal name\n */\n name: string;\n /**\n * Object types full qualified internal name\n */\n qname: string;\n /**\n * Object types label\n */\n label: string;\n /**\n * Object types description\n */\n description: string;\n /**\n * Object types can be grouped. This property holds the name of the group the current type belongs to\n */\n group: string;\n /**\n * Elements are the properties defining the object type. Those elements are also used for defining a form model\n * for the object types input form but (may) also contain hidden elements.\n */\n elements: any[];\n /**\n * List of context types this object type is allowed to be created in\n */\n allowedcontexttypes: ContextType[];\n /**\n * List of parent types the current type inherits from\n */\n supertypes: string[];\n /**\n * Flag indicating whether or not this object type can be shared\n */\n shareable: boolean;\n parenttypes?: string[];\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new object type instance\n */\n constructor(json: IObjectType) {\n this.id = json.id;\n this.implements = json.implements ? json.implements : [];\n this.isFolder = json.folder;\n this.isContextFolder = json.iscontextfolder;\n this.isAbstract = json.abstract;\n this.iconId = json.icon ? json.icon.id : null;\n this.maxFiles = json.maxfiles;\n this.minFiles = json.minfiles;\n this.name = json.name;\n this.qname = json.qname;\n this.label = json.label;\n this.description = json.description;\n this.group = json.group ? json.group.label : \"\";\n this.elements = json.elements;\n this.allowedcontexttypes = json.allowedcontexttypes\n ? json.allowedcontexttypes\n : [];\n this.supertypes = json.supertypes ? json.supertypes.map(t => t.name) : [];\n this.shareable = json.shareable;\n this.parenttypes = this.getParentTypes(json.allowedlocations);\n }\n\n getParentTypes(allowedlocations): string[] {\n if (allowedlocations) {\n return allowedlocations.parenttypes.map(types => types.name);\n }\n return [];\n }\n}\n","import {of as observableOf, Observable, MonoTypeOperatorFunction} from 'rxjs';\nimport {map, tap} from 'rxjs/operators';\nimport {Inject, Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders, HttpResponse} from '@angular/common/http';\nimport {Config} from '../config/config.service';\nimport {DmsObject} from '../../model/dms-object.model';\nimport * as FileSaver from 'file-saver';\nimport {Logger} from '../logger/logger';\nimport {AuthProfile} from '../auth/auth-profile.interface';\nimport {HttpParams} from '@angular/common/http';\nimport {finalize, shareReplay} from 'rxjs/operators';\nimport {CoreConfig} from '../../config/core-config';\nimport {CORE_CONFIG} from '../../config/core-init.tokens';\n\n/**\n * HttpOptions for http request\n * @param observe: 'body' | 'events' | 'response'\n * @param responseType: 'arraybuffer' | 'blob' | 'json' | 'text'\n */\nexport interface HttpOptions {\n headers?:\n | HttpHeaders\n | {\n [header: string]: string | string[];\n };\n observe?: any;\n params?:\n | HttpParams\n | {\n [param: string]: string | string[];\n };\n reportProgress?: boolean;\n responseType?: any;\n withCredentials?: boolean;\n}\n\n\n// @ts-ignore\n/**\n * `BackendService` encapsulates the communication with the yuuvis<sup>&reg;</sup> RAD REST endpoints.\n *\n * As yuuvis<sup>&reg;</sup> RAD provides different services, this service is also capable of providing the base URIs for those services.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class BackendService {\n\n public gridDataFilter: MonoTypeOperatorFunction<any> = map((data: any[]) => data?.filter((v: any) => !v.__removed));\n private authProfile: AuthProfile;\n private cache = new Map<string, any>();\n private temp = new Map<string, Observable<any>>();\n private headers = this.setDefaultHeaders();\n\n /**\n * @ignore\n */\n constructor(private http: HttpClient,\n @Inject(CORE_CONFIG) public coreConfig: CoreConfig,\n private logger: Logger,\n private config: Config) {\n\n /**\n * default profile is supposed to use NTLM\n * @type {host: string; ntlm: boolean}\n */\n this.authProfile = {\n host: '',\n ntlm: true\n };\n }\n\n /**\n * @ignore\n */\n public setAuthProfile(profile?: AuthProfile) {\n if (profile) {\n this.headers = this.setDefaultHeaders();\n this.authProfile = profile;\n if (this.authProfile.auth) {\n // this.setHeader('Authorization', this.authProfile.auth);\n }\n this.headers.delete('Authorization');\n }\n }\n\n /**\n * Add a new header.\n * @param key The headers name\n * @param value The value\n */\n public setHeader(key: string, value: string) {\n if (value && value.length) {\n this.headers = this.headers.set(key, value);\n }\n }\n\n /**\n * Retrieves the current headers\n * @returns The `HttpHeaders` that are currently set up\n */\n public getHeaders(): HttpHeaders {\n return this.headers;\n }\n\n /**\n * @ignore\n */\n public getHttpOptions(requestOptions?: HttpOptions): HttpOptions {\n return Object.assign({headers: this.getHeaders(), withCredentials: this.coreConfig.withCredentials}, requestOptions);\n }\n\n /**\n * Gets the base URI for the DMS-Service endpoint\n * @returns Base URI\n */\n public getServiceBase() {\n return this.config.getUri('serviceBase');\n }\n\n /**\n * Gets the base URI for the Search-Service endpoint\n * @returns Base URI\n */\n public getSearchBase() {\n return this.config.getUri('searchBase');\n }\n\n /**\n * Gets the base URI for the Context-Service endpoint\n * @returns Base URI\n */\n public getContextBase() {\n return this.config.getUri('contextBase');\n }\n\n /**\n * Gets the base URI for the Inbox-Service endpoint\n * @returns Base URI\n */\n public getInboxBase() {\n return this.config.getUri('inboxBase');\n }\n\n /**\n * Gets the base URI for the BPM-Service endpoint\n * @returns Base URI\n */\n public getBpmBase() {\n return this.config.getUri('bpmBase');\n }\n\n /**\n * Gets the base URI for the Agent-Service endpoint\n * @returns Base URI\n */\n public getAgentBase() {\n return this.config.getUri('agentBase');\n }\n\n /**\n * Gets the base URI for the Status-Service endpoint\n * @returns Base URI\n */\n public getStatusBase() {\n return this.config.getUri('statusBase');\n }\n\n /**\n * @ignore\n */\n public getIconBase(id: string = '') {\n return this.getBaseWithContext(this.getServiceBase()) + '/ui/icon/' + id;\n }\n\n /**\n * @ignore\n */\n public getHost() {\n return this.authProfile.host || '';\n }\n\n public getBaseWithContext(base: string) {\n return base?.startsWith('/') ? this.config.getContextPath() + base : base;\n }\n\n private getContextPath(base?: string): string {\n return this.getHost() + (this.getBaseWithContext(base || this.getServiceBase()));\n }\n\n /**\n * Wrapped HTTP GET method\n * @param uri The REST URI to be queried\n * @param base The Base URI (backend service) to be used\n * @param requestOptions Additional request options\n * @returns The data retrieved from the given endpoint\n */\n public get(uri: string, base?: string, requestOptions?: HttpOptions): Observable<any> {\n return this.http.get(this.getContextPath(base) + uri, this.getHttpOptions(requestOptions));\n }\n\n /**\n * Wrapped HTTP PUT method\n * @param uri The target REST URI\n * @param data Data to be 'posted'\n * @param base The Base URI (backend service) to be used\n * @param requestOptions Additional request options\n * @returns The return value of the target PUT endpoint\n */\n public put(uri: string, data?: any, base?: string, requestOptions?: HttpOptions): Observable<any> {\n return this.http.put(this.getContextPath(base) + uri, data, this.getHttpOptions(requestOptions));\n }\n\n /**\n * @ignore\n */\n public getJson(uri: string, base?: string): Observable<any> {\n return this.http.get(this.getContextPath(base) + uri, this.getHttpOptions({responseType: 'json'}));\n }\n\n /**\n * Wrapped HTTP POST method\n * @param uri The target REST URI\n * @param data Data to be 'posted'\n * @param base The Base URI (backend service) to be used\n * @param requestOptions Additional request options\n * @returns The return value of the target POST endpoint\n */\n public post(uri: string, data?, base?: string, requestOptions?: HttpOptions): Observable<any> {\n const baseUri = this.getContextPath(base);\n const payload = data ? JSON.stringify(data) : '';\n return this.http.post(`${baseUri}${uri}`, payload, this.getHttpOptions(requestOptions));\n }\n\n /**\n * Performs a multipart form data POST request.\n * @param uri The target REST URI\n * @param formData FormData to be 'posted'\n * @param base The Base URI (backend service) to be used\n * @param requestOptions Additional request options\n * @returns The return value of the target POST endpoint\n */\n public postMultiPart(uri: string, formData: FormData, base?: string, requestOptions?: HttpOptions): Observable<any> {\n const baseUri = this.getContextPath(base);\n const headers = this.getHeaders();\n headers.delete('Content-Type');\n const reqOptions = Object.assign({headers: headers, withCredentials: this.coreConfig.withCredentials}, requestOptions);\n return this.http.post(`${baseUri}${uri}`, formData, reqOptions);\n }\n\n /**\n * Wrapped HTTP DELETE method\n * @param uri The target REST URI\n * @param base The Base URI (backend service) to be used\n * @param requestOptions Additional request options\n * @returns The return value of the target DELETE endpoint\n */\n public del(uri: string, base?: string, requestOptions?: HttpOptions): Observable<any> {\n return this.http.delete(this.getContextPath(base) + uri, this.getHttpOptions(requestOptions));\n }\n\n /**\n * @ignore\n * Soft update for lists - enables grid to handle all changes\n * to add new - only item should be specified\n * to remove - only id should be specified\n * to update - both params should be specified\n *\n * @param any[] list Original list of items\n * @param id?: string; item?: any data[]\n * @returns any[]\n */\n public update(list: any[], data: {id?: string, item?: any}[]) {\n data.forEach(({id, item}) => {\n if (id) {\n const _item = list.find(l => l.id === id);\n Object.assign(_item, item, item ? {__updated: true} : {__removed: true});\n } else if (item) {\n list.unshift(Object.assign(item, {__added: true}));\n }\n });\n return list;\n }\n\n /**\n * @ignore\n * Cache for small requests like icons and configs\n *\n * @param string uri\n * @returns Observable<any>\n */\n public getViaCache(uri: string): Observable<any> {\n if (this.cache.has(uri)) {\n return observableOf(this.cache.get(uri));\n } else {\n return this.getViaTempCache(uri, () => this.http.get(uri, {withCredentials: this.coreConfig.withCredentials, responseType: 'text'}).pipe(\n tap(text => this.cache.set(uri, text))));\n }\n }\n\n /**\n * @ignore\n * Temporary Cache for multiple identical requests\n *\n * @param string id\n * @param Function request\n * @returns Observable<any>\n */\n public getViaTempCache(id: string, request?: Function): Observable<any> {\n if (this.temp.has(id)) {\n return this.temp.get(id);\n } else {\n const resp = (request ? request() : this.get(id)).pipe(\n finalize(() => this.temp.delete(id)),\n shareReplay(1)\n );\n this.temp.set(id, resp);\n return resp;\n }\n }\n\n /**\n * Download the content of dms objects.\n *\n * @param DmsObject[] dmsObjects Array of dms objects to be downloaded\n * @param \"PDF\" | \"TIFF\" | \"TEXT\" | \"JPEG\" rendition The type of rendition to be downloaded. If not specified, the original content will be downloaded.\n * Possible renditions are `PDF`, `TIFF`, `TEXT`, `JPEG`.\n */\n public downloadContent(dmsObjects: DmsObject[], rendition?: 'PDF' | 'TIFF' | 'TEXT' | 'JPEG', fileNameWithVersionNumber?: boolean, recyclebin?: boolean) {\n\n const item = dmsObjects[0];\n if (dmsObjects.length === 1) {\n if (item.content) {\n\n let uri = `${this.getServiceBase()}/dms/${item.content.id}/content?type=${item.content.type}&asdownload=true&recyclebin=${!!recyclebin}`;\n if (rendition) {\n uri += `&rendition=${rendition}&_intent=DOWNLOAD_${rendition}`;\n } else {\n uri += '&_intent=DOWNLOAD';\n }\n if (item.content.id === item.id) {\n uri += `&version=${item.version}`;\n }\n this.download(uri, fileNameWithVersionNumber ? item.version : null);\n } else {\n this.logger.error('The provided dms object has no content', item);\n }\n }\n\n if (dmsObjects.length > 1) {\n let uri = `${this.getServiceBase()}/dms/batch/export`;\n if (item.content) {\n const expressions = dmsObjects.map(obj => obj.content.id);\n const data = {\n query: {\n expression: [...expressions]\n },\n options: {\n rendition: ''\n }\n };\n data.options.rendition = rendition ? 'PDF' : null;\n this.downloadMulti(uri, fileNameWithVersionNumber ? item.version : null, data);\n } else {\n this.logger.error('The provided dms object has no content', item);\n }\n }\n }\n\n public download(uri: string, version?: number) {\n this.http.get(uri, {observe: 'response', responseType: 'blob', withCredentials: this.coreConfig.withCredentials})\n .subscribe((res) => {\n FileSaver.saveAs(\n res.body,\n this.getFileNameFromHttpResponse(res, version)\n );\n });\n }\n\n public downloadMulti(uri: string, version?: number, _body?: any) {\n this.http.post(uri, _body, {observe: 'response', responseType: 'blob', withCredentials: this.coreConfig.withCredentials})\n .subscribe((res) => {\n FileSaver.saveAs(\n res.body,\n this.getFileNameFromHttpResponse(res, version)\n );\n });\n }\n\n private getFileNameFromHttpResponse(res: HttpResponse<any>, version: number) {\n const contentDispositionHeader = res.headers.get('Content-Disposition') || '';\n const encodedFileNameMatchResult = contentDispositionHeader.match('filename\\\\*=UTF-8\\'\\'(.*)')\n || contentDispositionHeader.match('filename=\\\"(.*)\\\"');\n const encodedFileName = encodedFileNameMatchResult ? encodedFileNameMatchResult[1] : null;\n const filename = encodedFileName ? decodeURIComponent(encodedFileName) : 'unknown';\n const index = !~filename.lastIndexOf('.') ? filename.length : filename.lastIndexOf('.');\n return !version ? filename : `${filename.slice(0, index)}_v${version}${filename.slice(index)}`;\n }\n\n\n /**\n * Getter for the HTTP Headers\n *\n * @returns HttpHeaders\n */\n private setDefaultHeaders(): HttpHeaders {\n return new HttpHeaders({\n 'Content-Type': 'application/json',\n 'X-os-include-links': 'false',\n 'X-os-include-actions': 'false',\n 'X-os-sync-index': 'true'\n });\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Observable, Subject, of as observableOf, of, forkJoin, fromEvent} from 'rxjs';\nimport {LocalStorage, StorageMap} from '@ngx-pwa/local-storage';\nimport {debounceTime, switchMap, map, first} from 'rxjs/operators';\nimport {Utils} from '../../util/utils';\n\n/**\n * The apps central caching service. It will provide the app with an easy to use cache that\n * is aware of the platform it is running on. So it abstracts the platform-specific implementations\n * of a cache from the application.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class AppCacheService {\n\n /**\n * Key for storing system definition\n */\n public SYSTEM_DEFINITION = 'eo.framework.cache.systemdefinition';\n /**\n * Key for storing system definition\n */\n public HOSTS = 'eo.framework.cache.hosts';\n /**\n * Key for storing location history\n */\n public LOCATION_HISTORY = 'eo.framework.cache.locations.history';\n\n private itemsMap = new Map<string, Subject<any>>();\n\n constructor(protected storage: LocalStorage, private storageMap: StorageMap) {\n // IndexedDB issue after update - refresh function (transform all wrapped items)\n window['_ngStorageRefresh'] = () => this.getStorage().subscribe(storage => this.setStorage(storage).subscribe() && console.log(storage));\n }\n\n /**\n * Writes an item to the storage.\n * @param key The item's key\n * @param value The value to be stored\n * @param debounce The debounce time (default: 500) to reduce identical storage calls\n * @returns Resolves true if setting the item succeeded, false otherwise\n */\n public setItem(key: string, value: any, debounce: number = 500): Observable<boolean> {\n if (!debounce) {\n return this.storage.setItem(key, value);\n } else {\n if (!this.itemsMap.has(key)) {\n const subject = new Subject();\n subject.pipe(debounceTime(debounce), switchMap(val => this.storage.setItem(key, val))).subscribe();\n this.itemsMap.set(key, subject);\n }\n this.itemsMap.get(key).next(value);\n return observableOf(true);\n }\n }\n\n /**\n * Get a stored item by its key.\n * @param key The item's key\n * @returns The item's value if the key exists, null otherwise\n */\n public getItem(key: string): Observable<any> {\n return this.storage.getItem(key)\n .pipe(map((item: any) => {\n // IndexedDB issue after update (transform wrapped items)\n return Object.keys(item || {}).join() === 'value' ? item.value : item;\n }));\n }\n\n /**\n * Removes an item from the storage.\n * @param key The item's key\n * @returns Resolves true if removing the item succeeded, false otherwise\n */\n public removeItem(key: string): Observable<boolean> {\n return this.storage.removeItem(key);\n }\n\n /**\n * Deletes all items from local storage\n * @param filter optional - Delete all keys that pass through filter\n * @returns Resolves true if clearing all items succeeded, false otherwise\n */\n public clear(filter?: (key) => boolean): Observable<boolean> {\n return filter\n ? this.getStorageKeys().pipe(\n switchMap((keys) => {\n const list = keys.filter((k) => filter(k)).map((k) => this.removeItem(k));\n return list.length ? forkJoin(list).pipe(map(() => true)) : of(true);\n })\n )\n : this.storage.clear();\n }\n\n getStorageKeys(): Observable<any> {\n return new Observable<string[]>((observer) => {\n const keys = [];\n this.storageMap.keys().subscribe({\n next: (key) => keys.push(key),\n complete: () => observer.next(keys)\n });\n }).pipe(first());\n }\n\n getStorage(): Observable<any> {\n return this.getStorageKeys().pipe(\n switchMap((keys) =>\n keys.length\n ? forkJoin(\n Utils.arrayToObject(\n keys,\n (o) => o,\n (k) => this.getItem(k)\n )\n )\n : of({})\n )\n );\n }\n\n setStorage(options: any): Observable<any> {\n return forkJoin(Object.keys(options || {}).map((k) => this.setItem(k, options[k])));\n }\n\n replaceStorage(settings: any) {\n for (const [key, value] of Object.entries(settings)) {\n this.setItem(key, value);\n }\n }\n}\n","import {forkJoin as observableForkJoin, of, Observable, ReplaySubject} from 'rxjs';\n\nimport {catchError, tap, map, switchMap} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {IOrganizationObjects} from '../../interface/organization-objects.interface';\nimport {BackendService} from '../backend/backend.service';\nimport {AppCacheService} from '../cache/app-cache.service';\nimport {Logger} from '../logger/logger';\nimport {ObjectType} from '../../model/object-type.model';\nimport {EoUser} from '../../model/eo-user.model';\nimport * as _ from 'lodash';\nimport {OrgRole} from '../../model/org.model';\nimport {Utils} from '../../util/utils';\nimport {ICodeSystem} from './systemdefinition.interface';\nimport {EventService} from '../events/event.service';\nimport {EnaioEvent} from '../events/events';\nimport moment from 'moment';\n\n/**\n * Collection of System Services\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class SystemService {\n\n private _system;\n private systemSource = new ReplaySubject<any>();\n public system$: Observable<any> = this.systemSource.asObservable();\n\n // session cache for object type forms\n private objectTypeForms: any[] = [];\n private user: EoUser;\n private cachedRoles: OrgRole[] = [];\n\n constructor(private backend: BackendService,\n private logger: Logger,\n private eventService: EventService,\n private appCache: AppCacheService) {\n this.eventService.on(EnaioEvent.SYSTEM_STATUS_SCHEMA_CHANGED).subscribe(() => {\n this.fetchSystemDefinition(this.user);\n })\n }\n\n set system(s){\n this._system = s;\n }\n\n get system(){\n return JSON.parse(JSON.stringify(this._system));\n }\n\n /**\n * Gets all ObjectTypes\n *\n * @returns An array containing all object types\n */\n public getObjectTypes(): ObjectType[] {\n return this.system.types;\n }\n\n /**\n * Gets an ObjectType by name.\n *\n * @param objectTypeName The name of the object type\n * @returns the ObjectType matching the given name\n */\n public getObjectType(objectTypeName: string): ObjectType {\n return this.system.types.find(t => t.name === objectTypeName);\n }\n\n /**\n * Get form elements from form model. This is useful if you have to fetch them\n * for a special situation like SEARCH\n * @param objectTypeName ObjectType to fetch elements for\n * @param situation Form model situation to be fetched\n * @param isContextType Flag indicating that the form model should be fetched for a context mode\n */\n getFormElementsFromFormModel(objectTypeName: string, situation: string, isContextType?: boolean): Observable<any[]> {\n return this.getObjectTypeForm(objectTypeName, situation, isContextType ? 'CONTEXT' : null).pipe(\n switchMap(model => {\n const elements = [];\n this.processFormModelElements(model, elements);\n return of(elements);\n }))\n }\n\n private processFormModelElements(model: any, elements: any[]) {\n model.elements.forEach(e => {\n if(e.type !== \"o2mGroup\" && e.type !== \"o2mGroupStack\") {\n elements.push(e);\n } else if(e.elements && e.elements.length) {\n this.processFormModelElements(e, elements);\n }\n })\n }\n\n /**\n * Checks whether or not the given type implements a given supertype\n * @param type Type to be checked\n * @param superTypeName Name of the supertype\n */\n public implementsType(type: ObjectType, superTypeName: string): boolean {\n return type.name === superTypeName || (type.implements && type.implements.indexOf(superTypeName) !== -1);\n }\n\n /**\n * Gets a codesystem\n *\n * @param id The codesystems id\n * @returns The codesystem object matching the given id\n */\n public getCodesystem(id: string): ICodeSystem {\n return this.system.codesystems.find(t => t.id === id || t.name === id);\n }\n\n /**\n * Get the form model of an object type.\n *\n * @param objectTypeName The object type name\n * @param situation The form situation to be fetched\n * @param mode Form mode to fetch (e.g. CONTEXT)\n * @returns The object type form model\n */\n public getObjectTypeForm(objectTypeName: string, situation: string, mode?: string): Observable<any> {\n\n /** check if we have a cached form first */\n let cachedForm;\n\n let i = 0;\n while (!cachedForm && i < this.objectTypeForms.length) {\n if (this.objectTypeForms[i].name === objectTypeName &&\n this.objectTypeForms[i].mode === mode &&\n this.objectTypeForms[i].situation === situation) {\n cachedForm = this.objectTypeForms[i];\n }\n i++;\n }\n\n if (cachedForm) {\n /** return a clone of the cached model as otherwise model changes will be added to the chached model */\n return of(_.cloneDeep(cachedForm));\n } else {\n\n let uri = `/ui/form/${objectTypeName}?situation=${situation}`;\n uri += !!mode ? `&formmode=${mode}` : '';\n\n /** fetch and cache the requested form, if no cached version was found */\n return this.backend.getViaTempCache(uri, () => this.backend\n .getJson(uri)\n .pipe(\n tap((model) => this.objectTypeForms.push(_.cloneDeep(model)))\n ));\n }\n }\n\n /**\n * Fetches the backends system definition and updates system$ Observable.\n * Subscribe to the system$ observable instead of calling this function, otherwise you'll trigger fetching the\n * system definition every time.\n *\n * @param user The user to load the system definition for\n * @returns true when successfull\n */\n public getSystemDefinition(user: EoUser): Observable<boolean> {\n\n this.user = user;\n // todo: temporary: OrgChanges could not be recognized but affect object definition\n return this.fetchSystemDefinition(user);\n\n // todo: enable again when OrgChanges are recognizable (DO NOT DELETE!)\n // // is there a cached version\n // return this.appCache\n // .getItem(this.appCache.SYSTEM_DEFINITION)\n // .catch((error) => {\n // this.logger.error('Error fetching cached version of system definition.', error);\n // return this.fetchSystemDefinition(user);\n // })\n // .flatMap((cachedSystemDefinition: any) => {\n //\n // // yes? then check if it's up to date\n // if (cachedSystemDefinition) {\n //\n // if (\n // user.schema.version !== cachedSystemDefinition.info.version ||\n // user.id !== cachedSystemDefinition.info.user ||\n // user.getSchemaLocale() !== cachedSystemDefinition.info.locale\n // ) {\n // return this.fetchSystemDefinition(user);\n // } else {\n // // cache is up to date. return the cached one\n // this.logger.debug('System definition is up to date, using cached version.', cachedSystemDefinition);\n // this.system = cachedSystemDefinition;\n // this.systemSource.next(this.system);\n // return of(true);\n // }\n // } else {\n // // no cached systemDefinition found\n // return this.fetchSystemDefinition(user);\n // }\n // });\n }\n\n /**\n * Creates a value depending on a given Type\n *\n * @param string valueType\n * @returns any\n */\n public getDefaultValue(valueType: string): any {\n let defaultValue;\n switch (valueType) {\n case 'CURRENT_USER': {\n defaultValue = this.user.name;\n break;\n }\n case 'CURRENT_USER_NAME': {\n defaultValue = this.user.title;\n break;\n }\n case 'CURRENT_DATETIME': {\n defaultValue = new Date();\n break;\n }\n case 'CURRENT_DATE': {\n defaultValue = moment().startOf('day').format('yyyy-MM-DD');\n break;\n }\n case 'YEAR': {\n defaultValue = moment().year();\n break;\n }\n case 'MONTH': {\n defaultValue = moment().month() + 1;\n break;\n }\n case 'DAY': {\n defaultValue = moment().date();\n break;\n }\n case 'HOUR': {\n defaultValue = moment().hour();\n break;\n }\n case 'MINUTE': {\n defaultValue = moment().minute();\n break;\n }\n case 'SECOND': {\n defaultValue = moment().second();\n break;\n }\n case 'WEEK_OF_YEAR': {\n defaultValue = moment().isoWeek();\n break;\n }\n case 'FIRST_DAY_OF_WEEK': {\n defaultValue = moment().startOf('isoWeek').toDate();\n break;\n }\n case 'FIRST_DAY_OF_MONTH': {\n defaultValue = moment().startOf('month').toDate();\n break;\n }\n case 'FIRST_DAY_OF_YEAR': {\n defaultValue = moment().startOf('year').toDate();\n break;\n }\n }\n\n return defaultValue;\n }\n\n /**\n * Fetches the system definition from the server. Provided params are used for storing the\n * recent version in cache.\n *\n * @param user The user to fetch the system definition for\n * @return boolean\n */\n fetchSystemDefinition(user: EoUser): Observable<boolean> {\n\n const fetches = [\n this.backend.getJson('/system/type/list?elements=true&basetypes=true'),\n this.backend.getJson('/system/cs/list?elements=true')\n ];\n\n return observableForkJoin(fetches)\n .pipe(\n catchError(Utils.catch((error) => {\n this.logger.error('Error fetching recent version of system definition from server.', error);\n this.systemSource.error('Error fetching recent version of system definition from server.');\n })),\n map((data) => {\n\n this.objectTypeForms = [];\n const system = {\n /**\n * info about the current system definition\n */\n info: {\n user: user.id,\n locale: user.getSchemaLocale(),\n version: user.schema.version\n },\n /**\n * supported backend locales\n */\n locales: user.schema.supportedLocales,\n /**\n * object type definitions\n */\n types: [],\n /**\n * codesystems cache\n */\n codesystems: []\n };\n\n const types = data[0];\n system.types = types.map(t => new ObjectType(t));\n system.codesystems = data[1];\n\n this.system = system;\n this.systemSource.next(system);\n this.logger.debug('Fetched new version of system definition (user: ' + user.id + ', version: ' + user.schema.version + ').');\n this.appCache\n .setItem(this.appCache.SYSTEM_DEFINITION, system)\n .subscribe(() => {\n this.logger.debug('Cached recent version');\n }, Utils.logError(null, 'Error caching recent version of system definition.'));\n\n return true;\n }));\n }\n\n /**\n * Retrieve an organization object by its ID\n * @param id ID of org object\n */\n getOrganizationObjectById(id: string): Observable<any> {\n return this.backend.getJson(`/organization/id/${id}`)\n }\n\n /**\n * Fetches the organization object for a given name.\n *\n * @param name The name to fetch object for\n * @returns\n */\n getOrganizationObject(name: string): Observable<any> {\n return this.getOrganizationObjects([name]).pipe(map(res => res[0]));\n }\n\n /**\n * Fetches a collection of organization objects\n *\n * @param names Array of names to fetch objects for\n * @returns A Array of Organization Objects\n */\n getOrganizationObjects(names: string[]): Observable<IOrganizationObjects[]> {\n const toFetch: Observable<IOrganizationObjects>[] = names.map(name => this.backend.getJson(`/organization/name/${name}`).pipe(catchError(error => of({id: name, active: false}))));\n return observableForkJoin(toFetch);\n }\n\n /**\n * Fetches a collection of organization roles\n *\n * @return A Array of Organization Roles\n */\n getRoles(): Observable<OrgRole[]> {\n if (this.cachedRoles.length) {\n return of(this.cachedRoles);\n } else {\n return this.backend\n .get('/organization/role')\n .pipe(\n map(o => o as OrgRole[]),\n tap(roles => (this.cachedRoles = roles as OrgRole[]))\n );\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Capabilities} from './capabilities.model';\nimport {SystemService} from '../system/system.service';\n\n/**\n * Handles the systems capabilities. Capabilities are settings that enable/disable certain client features.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class CapabilitiesService {\n\n private capabilities: Capabilities;\n\n /**\n * @ignore\n */\n constructor(private system: SystemService) {\n }\n\n /**\n * Sets the capabilities based on a given object set by auth.service\n *\n * @param userCapabilities Object containing capabilities properties\n * @param useSingleSingOn Whether or not to set up single signon on capability\n * @returns The newly created capabilities object\n */\n setCapabilities(userCapabilities: any, useSingleSingOn?: boolean): Capabilities {\n\n this.capabilities = {\n bpm: userCapabilities.bpm,\n favorites: userCapabilities.favorites,\n followup: userCapabilities.followup,\n subscription: userCapabilities.subscription,\n intray: userCapabilities.intray,\n storedqueries: userCapabilities.storedqueries,\n recyclebin: userCapabilities.recyclebin,\n inbox: userCapabilities.bpm || userCapabilities.followup || userCapabilities.subscription,\n notifications: userCapabilities.followup || userCapabilities.subscription,\n template: userCapabilities.template,\n sso: useSingleSingOn || false,\n };\n return this.capabilities;\n }\n\n /**\n * Getter for the Capabilities\n */\n getCapabilities(): Capabilities {\n return {...this.capabilities, signing: !!this.system.getObjectType('yuvsigning')};\n }\n\n /**\n * Check if Capability is present\n * @param capability Capability to check for\n * @returns True if the capability is set, false otherwise\n */\n hasCapability(capability: string): boolean {\n return this.capabilities[capability];\n }\n}\n","import moment from 'moment';\n\n/**\n * Items emitted by the inbox service\n */\nexport class InboxItem {\n\n public static TYPE_BPM = 'BPM';\n public static TYPE_RESUBMISSION = 'RESUBMISSION';\n public static TYPE_SUBSCRIPTION = 'SUBSCRIPTION';\n\n /**\n * Items ID\n */\n id: string;\n /**\n * Items title\n */\n title: string;\n /**\n * Items description\n */\n description: string;\n /**\n * Items type ('BPM', 'RESUBMISSION', 'SUBSCRIPTION')\n */\n type: string;\n /**\n * ID of the object that caused the inbox entry.\n * In case of type SUBSCRIPTION and RESUBMISSION this is the id of the dms object,\n * for type BPM it is a process id\n */\n sourceId: string;\n /**\n * Items icon ID\n */\n iconId: string;\n /**\n * Flag indicating whether or not the entry has been accepted\n */\n accepted: boolean;\n /**\n * Flag indicating that the current user got this task in substitute\n */\n isdeputy: boolean;\n /**\n * The date the item is due.\n */\n duetime: Date;\n /**\n * The date the item was received\n */\n received: Date;\n target: any;\n\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new inbox item instance\n */\n constructor(json: any) {\n // todo: jsut use Object assign when backend changes are done\n // Object.assign(this, json);\n\n this.id = json.inboxentryid;\n this.title = json.title;\n this.description = json.description;\n this.type = json.type;\n this.sourceId = json.source ? json.source.id : null;\n this.iconId = json.target && json.target.icon ? json.target.icon.id : null;\n this.accepted = json.accepted;\n this.isdeputy = json.isdeputy;\n this.duetime = json.duetime;\n this.received = json.receivetime;\n this.target = json.target;\n }\n\n /**\n * Determines whether or not the inbox item is overdue\n * @returns True when inbox item is overdue, false otherwise\n */\n isOverdue() {\n return this.duetime && moment(this.duetime).isBefore(moment());\n }\n}\n\n/**\n * InboxState\n */\nexport interface InboxState {\n totalmessages: number;\n overduemessages: number;\n unreadmessages: number;\n calculationtime: Date;\n}","import {map, tap, catchError, expand, concatMap, skipWhile, filter} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {EMPTY, Observable, ReplaySubject} from 'rxjs';\nimport {BackendService} from '../backend/backend.service';\nimport {InboxItem, InboxState} from '../../model/inbox-item.model';\nimport {Utils} from '../../util/utils';\n\n/**\n * InboxService handles interaction with the inbox service on the backend side.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class InboxService {\n\n // backends maximum page size\n private MAX_PAGE_SIZE = 1000;\n\n private inboxState: InboxState;\n private inboxStateSource = new ReplaySubject<InboxState>(1);\n public inboxState$: Observable<InboxState> = this.inboxStateSource.asObservable();\n\n private inboxItems: InboxItem[];\n private inboxItemsSource = new ReplaySubject<InboxItem[]>(1);\n public inboxItemsGridData$: Observable<InboxItem[]> = this.inboxItemsSource.asObservable();\n public inboxItems$: Observable<InboxItem[]> = this.inboxItemsGridData$.pipe(this.backend.gridDataFilter);\n\n constructor(private backend: BackendService) {\n }\n\n /**\n * Fetches inbox items from the backend.\n *\n * @returns Observable of inbox items.\n */\n getItems(): Observable<InboxItem[]> {\n return this.getAllPages()\n .pipe(\n map(res => res.map(item => new InboxItem(item))),\n tap(res => {\n this.inboxItems = res;\n this.inboxItemsSource.next(this.inboxItems);\n }\n ),\n catchError(Utils.throw(() => this.inboxItemsSource.next([]))));\n }\n\n private getAllPages(): Observable<any[]> {\n let items = [];\n return this.getPage().pipe(\n expand(res => {\n return !res.last ? this.getPage(res.pageable.pageNumber + 1) : EMPTY\n }),\n tap(res => items = [...items, ...res.content]),\n skipWhile(res => !res.last),\n map(_ => items)\n )\n }\n\n private getPage(index?: number) {\n return this.backend\n .getJson(`/get?size=${this.MAX_PAGE_SIZE}&page=${index || 0}`, this.backend.getInboxBase())\n }\n\n /**\n * Fetches state informations for the users inbox\n *\n * @returns inbox state object\n */\n getState(): InboxState {\n return this.inboxState;\n }\n\n /**\n * Public access to fetch inbox\n */\n refreshInboxState() {\n this.fetchInboxState();\n }\n\n /**\n * Retrieve inbox state\n */\n private fetchInboxState() {\n this.backend\n .getJson('/state', this.backend.getInboxBase())\n .pipe(map(res => res as InboxState))\n .subscribe(res => {\n this.inboxState = res;\n this.inboxStateSource.next(this.inboxState);\n }, Utils.logError(null, 'Failed to fetch inbox state!'));\n }\n\n /**\n * Removes an item from the inbox.\n *\n * @param item inbox item to be removed\n * @returns Observable<any>\n */\n removeItem(item: InboxItem): Observable<any> {\n return this.backend\n .del('/' + item.id, this.backend.getInboxBase())\n .pipe(\n tap(() => this.updateInboxItems(item.id))\n );\n }\n\n /**\n * Soft update for data in the inbox.\n *\n * @param id\n * @param item\n * @param multi\n */\n public updateInboxItems(id?: string, item?: any, multi?: any[]) {\n if (this.backend.update(this.inboxItems, multi || [{id, item}])) {\n this.inboxItemsSource.next(this.inboxItems);\n }\n }\n\n /**\n * Marks an inbox item as read.\n *\n * @param item the item to be marked as read\n * @returns Observable<any>\n */\n markAsRead(item: InboxItem): Observable<any> {\n return this.backend.put('/read/' + item.id, this.backend.getInboxBase());\n }\n}\n","import {forkJoin as observableForkJoin, of as observableOf, Observable, ReplaySubject, throwError as observableThrowError} from 'rxjs';\nimport {mergeMap, tap, map} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {Utils} from '../../util/utils';\nimport {BackendService} from '../backend/backend.service';\nimport {WorkItemHistoryEntry} from '../../model/work-item-history.model';\nimport {DmsObject} from '../../model/dms-object.model';\nimport {InboxService} from '../inbox/inbox.service';\nimport {EventService} from '../events/event.service';\nimport {CapabilitiesService} from '../capabilities/capabilities.service';\nimport {ExecutableProcess, FileEntry, Process, WorkItem, WorkItemAction} from '../../model/bpm.model';\nimport {Clipboard} from '../clipboard/clipboard.interface';\nimport {ClipboardAction} from '../clipboard/clipboard-action.enum';\n\n/**\n * `BpmService` handles interaction related to BPM tasks.\n *\n * The main parts provided and used by this service are Processes and WorkItems.\n * Processes are defined on the backend side. They describe a set of tasks that will be executed by the process.\n * Tasks that require user interaction are referred to as WorkItems.\n *\n * Processes can be related to a special object type, but they don't have to. In addition to that they can refer\n * to dms objects.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class BpmService {\n hasMainExecutableProcesses: boolean;\n private executableProcesses: ExecutableProcess[];\n private processItems: Process[];\n private processItemsSource = new ReplaySubject<Process[]>(1);\n /**\n * Long term observable emitting the current processes\n */\n processItems$: Observable<Process[]> = this.processItemsSource.asObservable();\n\n constructor(private capabilities: CapabilitiesService,\n private backend: BackendService,\n private eventService: EventService,\n private inboxService: InboxService) {\n }\n\n /**\n * Retrieve all processes of the current user.\n *\n * @param size Maximum number of processes to be fetched\n * @returns List of Processes\n */\n getProcesses(size: number = 1000): Observable<Process[]> {\n return this.backend\n .getJson(`/process/user?size=${size}`, this.backend.getBpmBase())\n .pipe(\n map(response => response.content.map(item => new Process(item))),\n tap((processes: Process[]) => {\n this.processItems = processes;\n this.processItemsSource.next(this.processItems);\n })\n );\n }\n\n /**\n * Getter for the executable Processes. If types are provided, you'll get\n * only the processes that are executable for all of them\n * @param types List of dms object types to fetch executable processes for\n * @param useCached If the cached data should be returned rather than requesting again\n * @param additionalData If the additional form data should be also included\n * @param modelid The process model ID to only return the data for one process\n * @returns List of executable processes\n */\n getExecutableProcesses(types?: string[], useCached?: boolean, additionalData?: boolean, modelid?: string, global?: boolean): Observable<ExecutableProcess[]> {\n if (this.capabilities.hasCapability('bpm')) {\n return (!!this.executableProcesses && useCached) ? observableOf(this.executableProcesses) : this.fetchExecutableProcesses(types, additionalData, modelid, global);\n } else {\n return observableOf([]);\n }\n }\n\n initExecutableProcesses(): Observable<any> {\n let uri = '/bpm/process/executable';\n return this.backend.get(uri).pipe(tap(res => this.hasMainExecutableProcesses = res?.length));\n }\n\n /**\n * Gets executable Processes for a given set of dms object.You'll get\n * only the processes that are executable for all of them.\n * @param dmsObjects List of dms objects to fetch executable processes for\n * @returns List of executable processes\n */\n getExecutableProcessesForDmsObjects(dmsObjects: DmsObject[]): Observable<ExecutableProcess[]> {\n return this.getExecutableProcesses(dmsObjects.map(o => o.typeName), false, true);\n }\n\n /**\n * Fetches executable Processes from the backend.\n * @param types List of dms object types to fetch executable processes for\n * @param additionalData If the additional form data should be also included\n * @param modelid The process model ID to only return the data for one process\n * @returns List of executable processes\n */\n private fetchExecutableProcesses(types?: string[], additionalData?: boolean, modelid?: string, global?: boolean): Observable<ExecutableProcess[]> {\n let uri = '/bpm/process/executable';\n if (additionalData) {\n uri += '?form=true&fields=true';\n }\n if (types) {\n uri += (additionalData ? '&' : '?') + `type=${types.join(',')}`;\n }\n if (modelid) {\n uri += (additionalData || types ? '&' : '?') + `modelid=${modelid}`;\n }\n return this.backend.get(uri).pipe(\n map(res => res as ExecutableProcess[]),\n tap(res => {\n // Extend existing processes with additional data, instead of overwriting all processes\n if (global) {\n if (additionalData) {\n if (!this.executableProcesses) {\n this.executableProcesses = [];\n }\n res.forEach(proc => {\n const existingProcIndex = this.executableProcesses.findIndex(item => item.id === proc.id);\n if (existingProcIndex === -1) {\n this.executableProcesses.push(proc);\n } else {\n this.executableProcesses[existingProcIndex] = proc;\n }\n });\n } else {\n this.executableProcesses = res;\n }\n }\n }));\n }\n\n /**\n * Getter for a processes file. The file of a process contains\n * dms objects attached to the process.\n * @param processId ID of the process to fetch attached objects for\n */\n getProcessFile(processId: string): Observable<FileEntry[]> {\n return this.backend\n .getJson(`/process/${processId}/file`, this.backend.getBpmBase()).pipe(\n map(res => res.content.map(i => {\n return {\n id: i.elementid,\n title: i.title,\n description: i.description ? i.description : '',\n iconid: i.iconid,\n creator: i.creator,\n addtime: i.addtime,\n type: i.type\n };\n }))\n );\n }\n\n /**\n * Retrieves a work item.\n * @param processId ID of the parent process\n * @param itemId ID of the work item itself\n * @param options Options to be added to the backend call\n * @returns a WorkItem\n */\n getWorkItem(processId: string, itemId: string, options?: any): Observable<WorkItem> {\n const params = options ? options : {form: true, fields: true};\n const tasks = [\n this.backend.getJson(Utils.buildUri(`/bpm/process/${processId}/activity/${itemId}/inboxitem`, params)),\n this.getProcessFile(processId)\n ];\n return observableForkJoin(tasks).pipe(\n map(res => {\n const wi = new WorkItem(res[0]);\n wi.setFile(res[1]);\n return wi;\n }));\n }\n\n /**\n * Saves a work item.\n * @param item The work item to be saved\n * @returns The updated WorkItem\n */\n saveWorkItem(item: WorkItem): Observable<WorkItem> {\n const {id, processId, file, data} = item;\n const payload = {contents: file, data};\n const params = {keeplock: true, isautolock: false};\n\n return this.backend\n .post(Utils.buildUri(`/bpm/process/${processId}/activity/${id}/inboxitem/save`, params), payload)\n .pipe(\n mergeMap(() => this.getWorkItem(processId, id))\n );\n }\n\n /**\n * Forwards a work item. If a WorkItem provides different actions (@link WorkItemAction)\n * you can provide the selected action too.\n * @param item The work item to be forwarded\n * @param action Action used for forwarding\n */\n forwardWorkItem(item: WorkItem, action?: WorkItemAction): Observable<any> {\n const params = {keeplock: false, isautolock: false};\n const payload = {\n action: action,\n contents: item.file,\n data: item.data\n };\n return this.backend\n .post(Utils.buildUri(`/bpm/process/${item.processId}/activity/${item.id}/inboxitem/save`, params), payload)\n .pipe(\n tap(() => this.inboxService.updateInboxItems(item.id))\n );\n }\n\n /**\n * Locks a WorkItem for the current user (personalization), meaning that the\n * current user is now in charge of fulfilling the WorkItem task.\n * @param item The WorkItem to be locked\n * @returns The updated WorkItem\n */\n lockWorkItem(item: WorkItem): Observable<WorkItem> {\n return this.backend.put(`/bpm/process/${item.processId}/activity/${item.id}/inboxitem/lock`)\n .pipe(\n mergeMap(() => this.getWorkItem(item.processId, item.id))\n );\n }\n\n /**\n * Releases the lock for a WorkItem.\n * @param item The work item to be unlocked\n * @returns The updated WorkItem\n */\n unlockWorkItem(item: WorkItem): Observable<WorkItem> {\n return this.backend.del(`/bpm/process/${item.processId}/activity/${item.id}/inboxitem/lock`).pipe(\n mergeMap(() => this.getWorkItem(item.processId, item.id))\n );\n }\n\n /**\n * Starts an executable process.\n * @param executableProcessId ID of the executable Process to be started\n * @param data Data to be passed to the process (simple object of key/value pairs)\n * @param contents Objects to be attached to the process (process.file).\n */\n startProcess(executableProcessId: string, data: any, contents: {id: string, type: string}[]): Observable<any> {\n return this.backend.post(`/bpm/process/?modelid=${executableProcessId}`, {\n data: data,\n contents: contents\n });\n }\n\n /**\n * Returns the history for a process. Which entries are returned depends on the\n * permissions of the current user.\n * @param processId The ID of the process to fetch history for\n * @returns Observable<WorkItemHistoryEntry[]>\n */\n getProcessHistory(processId: string): Observable<WorkItemHistoryEntry[]> {\n return this.backend\n .getJson(`/bpm/process/${processId}/history`)\n .pipe(map(res => res && res.length ? res.map(item => new WorkItemHistoryEntry(item)) : []));\n }\n\n /**\n * Removes a content from the work items file.\n * @param processId The ID of the process to remove the item from\n * @param workItemId The ID of the work item containing the file element to be removed\n * @param workItemContentId The the ID of the file element to be removed\n */\n removeFileElement(processId: string, workItemId: string, workItemContentId: string): Observable<any> {\n return this.backend\n .del(`/process/${processId}/file/${workItemContentId}?activityid=${workItemId}`, this.backend.getBpmBase());\n }\n\n /**\n * Add contents to a work items file.\n * @param processId The ID of the process\n * @param workItemId The ID of the activity\n * @param elements The Elements to be added\n * @returns The updated WorkItem\n */\n addFileElements(processId: string, workItemId: string, elements: DmsObject[]): Observable<WorkItem> {\n const tasks = [];\n elements.forEach((e) => {\n tasks.push(this.backend.post(\n `/process/${processId}/file/${e.id}?type=${e.type.name}&activityid=${workItemId}`,\n {}, this.backend.getBpmBase()));\n });\n return observableForkJoin(tasks)\n .pipe(\n mergeMap(() => this.getWorkItem(processId, workItemId))\n );\n }\n\n /**\n * Add a objects from the clipboard to a WorkItem.\n * @param workItem The workItem to add the objects to\n * @param clipboard Clipboard object holding user selected objects\n * @returns The updated WorkItem\n */\n addFileElementsFromClipboard(workItem: WorkItem, clipboard: Clipboard): Observable<WorkItem> {\n if ((workItem && workItem.fileEntryPermissions.add) && clipboard && clipboard.elements.length && clipboard.action === ClipboardAction.COPY) {\n let contents: DmsObject[];\n if (workItem.file.length) {\n // only add items that are not already part of the attachments\n const attachmentIds = workItem.file.map(e => e.id);\n contents = clipboard.elements.filter(e => attachmentIds.indexOf(e.id) === -1);\n } else {\n contents = clipboard.elements;\n }\n return this.addFileElements(workItem.processId, workItem.id, contents);\n } else {\n return observableThrowError('error');\n }\n }\n}\n","/**\n * Valid template to be applied to a prepared item\n */\nexport interface PreparedItemTemplate {\n /**\n * Templates ID\n */\n id: string;\n /**\n * Templates Title\n */\n title: string;\n /**\n * Templates description\n */\n description: string;\n types: string[];\n content: {\n path: string;\n size: number;\n mimegroup: string;\n mimetype: string;\n digest: string;\n };\n /**\n * Tags describing the template\n */\n tags: string[]\n}\n\n/**\n * File (content) attached to a prepared item\n */\nexport interface PreparedItemContent {\n /**\n * The contents mime type group\n */\n mimegroup: string;\n /**\n * The contents actual mime type\n */\n mimetype: string;\n /**\n * Path to the content entry\n */\n path: string;\n /**\n * Contents filesize in bytes\n */\n size: number;\n\n digest: string;\n\n existscount: number;\n}\n\n/**\n * Valid object type to be applied to a certain prepared item\n */\nexport interface PreparedItemType {\n /**\n * Object types internal name\n */\n name: string;\n /**\n * Indicator whether or not the type is currently selected\n */\n selected: boolean;\n /**\n * Object types label (title)\n */\n label: string;\n /**\n * Object types description\n */\n description: string;\n /**\n * Object types icon\n */\n icon: {\n id: string;\n };\n /**\n * Input form for the object typed\n */\n form: any;\n /**\n * Data to be pasted into the object types form. This data may come from default values or extraction services.\n */\n data: any;\n}\n\n/**\n * Representation of a prepared item. A prepared item is an item that is supposed to create a new dms object.\n * Adding a new object to yuuvis<sup>&reg;</sup> RAD starts with a prepared item. If all the required properties are set up, the item\n * will be used to create a new dms object.\n */\nexport class PreparedItem {\n\n /**\n * unique identifier\n */\n id: string;\n /**\n * The date (time) the item was created\n */\n created: Date;\n /**\n * Number of contents (files) attached to the item.\n */\n contentcount: number;\n\n /**\n * Information about the user that created the item\n */\n user: {\n id: string;\n name: string;\n title: string;\n };\n /**\n * Location (context folder) to add the item to.\n */\n parent: {\n id: string;\n title: string;\n description: string;\n type: string;\n };\n /**\n * The state of the prepared item\n */\n state: {\n /**\n * UNKNOWN: no object type selected yet, so we don't know which kind of content is supported\n * NOCONTENTALLOWED: no content attachable\n * REQUIRED: content required (e.g. for template types)\n * OPTIONAL: one may or may not add content\n */\n contentstate: 'UNKNOWN' | 'NOCONTENTALLOWED' | 'REQUIRED' | 'OPTIONAL',\n typeselected: boolean,\n typeselectedallowed: boolean,\n hasallowedtypes: boolean,\n contentset: boolean,\n multicontent: boolean,\n templateset: boolean,\n parentisroot: boolean,\n parentset: boolean\n };\n /**\n * The target object type selected for the prepared item. To be able to add new items to yuuvis<sup>&reg;</sup> RAD an object type is required to be set up.\n */\n selectedtype: {\n name: string,\n label: string,\n description: string,\n };\n /**\n * New dms objects may be created from a template. This property stores information about the selected template.\n */\n template: {\n id: string,\n description: string,\n title: string,\n };\n /**\n * Prepared items are able to perform bulk operations to create new dms objects. So you may add a bunch of files and decide to create one\n * prepared item from it. When all the required properties are set up, the prepared item will create a dms object for each of those files.\n *\n * Contents property holds the list of content files attached to the prepared item\n */\n contents: PreparedItemContent[];\n /**\n * Based on target location and attached files this property holds a collection of valid object types for the prepared item\n */\n types: PreparedItemType[];\n /**\n * Prepared items title\n */\n get title() {\n return this.selectedtype ? this.selectedtype.label : '';\n }\n\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new prepared item instance\n */\n constructor(json: any) {\n Object.assign(this, json);\n }\n\n /**\n * Returns true if the preparedItem contains content (template or actual file), false otherwise\n */\n hasContent(): boolean {\n return !!this.template || this.contentcount > 0;\n }\n\n /**\n * Retrieves the prepared items selected type object from the list\n * of available types.\n * @returns The type object that is selected or NULL\n */\n getSelectedTypeObject() {\n return this.types.find(t => t.selected);\n }\n}\n","import {DmsObject} from './dms-object.model';\nimport {StructureTreeNode} from '../interface/tree-node.interface';\n\nexport class UploadTarget {\n\n /**\n * general filing target\n */\n public static ROOT = 'root';\n /**\n * add file(s) to context folder\n */\n public static CONTEXT = 'context';\n /**\n * add file(s) to context folders dynamic structure\n */\n public static CONTEXT_TREE = 'contexttree';\n /**\n * set/replace content file of a dms object\n */\n public static OBJECT = 'object';\n /**\n * custom targets (e.g. for plugin development)\n */\n public static CUSTOM = 'custom';\n\n public name: string;\n public description: string;\n /**\n * based on the upload targets type this is the dms object to\n * add/replace content file for (type: OBJECT) or the context folder\n * to add the files to (type: CONTEXT)\n */\n public referenceObject: DmsObject;\n /**\n * node from the structure service tree that may hold additional\n * data to be provide to the prepare service\n */\n public subFolder: StructureTreeNode;\n\n /**\n * Creates a new instance of UploadTarget\n *\n * @param id Upload targets unique id\n * @param type Upload targets type\n */\n constructor(public id: string,\n public type: string) {\n\n }\n\n /**\n * Return Method if the Upload is Successfull\n *\n * @param target\n * @returns the provided UploadTarget if the Upload was Successfull.\n */\n public onUploadSuccess(target: any): any {\n return target;\n }\n\n /**\n * Return method if the Upload fails\n *\n * @returns an empty Object if the Upload fails\n */\n public onUploadFail(): {} {\n return {};\n }\n}\n","export enum Direction {\n LTR = 'ltr',\n RTL = 'rtl'\n}\n","import {Injectable} from '@angular/core';\nimport {Observable, BehaviorSubject, forkJoin, of, EMPTY} from 'rxjs';\nimport {map, tap, debounceTime, filter, catchError} from 'rxjs/operators';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ChangePasswordInterface} from '../../interface/change-password.interface';\nimport {BackendService} from '../backend/backend.service';\nimport {EoUser} from '../../model/eo-user.model';\nimport {Config} from '../config/config.service';\nimport {Logger} from '../logger/logger';\nimport {SystemService} from '../system/system.service';\nimport {Utils} from '../../util/utils';\nimport {EnaioEvent} from '../events/events';\nimport {EventService} from '../events/event.service';\nimport {Direction} from '../config/config.enum';\nimport {HttpClient} from '@angular/common/http';\nimport {WidgetGridWorkspaceConfig} from '@yuuvis/widget-grid';\n\n/**\n * Applications user service.\n * To get the current user you have to subscribe to the services `user$` observable.\n *\n * ```javascript\n * userService.user$.subscribe((user) => this.user = user);\n * ```\n *\n * This way your component will be provided with an up-to-date user object no matter\n * which component changes on of the users properties.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class UserService {\n\n USER_FETCH_URI = '/user?favorites=true&privileges=true&roles=true&deputies=true&substitutesOf=true';\n\n private user: EoUser = null;\n private userSource = new BehaviorSubject<EoUser>(this.user);\n /**\n * Observable emitting the current user\n */\n public user$: Observable<any> = this.userSource.asObservable();\n\n private favorites = null;\n private favoritesSource = new BehaviorSubject<any>(this.favorites);\n /**\n * Observable emitting current users favorites\n */\n public favoritesGridData$: Observable<any> = this.favoritesSource.asObservable().pipe(debounceTime(100), filter(v => v));\n public favorites$: Observable<any> = this.favoritesGridData$.pipe(this.backend.gridDataFilter);\n\n private notifications = null;\n private notificationsSource = new BehaviorSubject<any>(this.notifications);\n\n /**\n * Observable emitting current users recyclebin\n */\n\n private recycles = null;\n private recyclesSource = new BehaviorSubject<any>(this.recycles);\n\n public recyclesGridData$ : Observable<any> = this.recyclesSource.asObservable().pipe(debounceTime(100), filter(v => v));\n public recycles$: Observable<any> = this.recyclesGridData$.pipe(this.backend.gridDataFilter);\n\n\n /**\n * Observable emitting current users notifications\n */\n public notificationsGridData$: Observable<any> = this.notificationsSource.asObservable().pipe(debounceTime(100), filter(v => v));\n public notifications$: Observable<any> = this.notificationsGridData$.pipe(this.backend.gridDataFilter);\n\n public passwordValidationSettings: any;\n\n /**\n * @ignore\n */\n constructor(private backend: BackendService,\n private translate: TranslateService,\n private logger: Logger,\n private eventService: EventService,\n private system: SystemService,\n private http: HttpClient,\n private config: Config) {\n }\n\n /**\n * Gets the current user.\n * @returns The current user or NULL if no user is logged in\n */\n public getCurrentUser(): EoUser {\n return this.user;\n }\n\n\n /**\n * Set presence of the current user\n * @param present Value to set the users presence to\n */\n public setPresence(present: boolean): Observable<any> {\n\n if (present !== this.user.present) {\n return this.backend.put('/user?presence=' + present)\n .pipe(\n tap(_ => {\n this.user.present = present;\n this.userSource.next(this.user);\n })\n )\n } else {\n return of(null);\n }\n }\n\n /**\n *\n * @param uri\n * @returns\n */\n\n public delUserImage(uri: string): Observable<any> {\n return this.http.put(uri, null);\n }\n\n public setUserImage(file: File): Observable<any> {\n return this.backend.put(`/user/image`,file);\n }\n\n /**\n * Sets the deputies for the current user\n * @param deputiesNames Names of the users to be set as deputies\n */\n public setDeputies(deputiesNames: string[]): Observable<any> {\n return this.backend.put(`/user/deputy?user=${deputiesNames.join('&user=')}`).pipe(\n tap(() => this.refreshCurrentUser().subscribe())\n );\n }\n\n /**\n * Change the users client locale\n * @param iso ISO locale string to be set as new client locale\n */\n public changeClientLocale(iso: string) {\n this.user.userSettings['clientlocale'] = iso;\n this.backend\n .put('/user/config/web', this.user.userSettings)\n .subscribe(() => {\n this.logger.debug('Changed client locale to \\'' + iso + '\\'');\n this.translate.use(iso);\n this.user.uiDirection = (this.config.getClientLocales().find(l => l.iso === iso) || {}).dir || Direction.LTR;\n this.userSource.next(this.user);\n this.eventService.trigger(EnaioEvent.CLIENT_LOCALE_CHANGED, iso);\n });\n }\n\n /**\n * Change the users schema locale\n * @param iso ISO locale string to be set as new schema locale\n */\n public changeSchemaLocale(iso: string) {\n this.user.schemaLocale = iso;\n return this.backend\n .put('/user/locale/' + this.user.schemaLocale)\n .pipe(\n tap(() => {\n this.logger.debug('Changed schema locale to \\'' + iso + '\\'');\n this.userSource.next(this.user);\n this.backend.setHeader('Accept-Language', this.user.getSchemaLocale());\n this.logger.debug('Loading system definition for new locale.');\n this.system.getSystemDefinition(this.user).subscribe();\n this.eventService.trigger(EnaioEvent.SCHEMA_LOCALE_CHANGED, iso);\n }));\n }\n\n /**\n * Set a new current user\n * @param res The user to be set as current user\n */\n public setCurrentUser(res: any) {\n this.user = new EoUser(res);\n this.passwordValidationSettings = res.passwortvalidation;\n this.user.setImageBase(this.backend.getServiceBase());\n this.backend.setHeader('Accept-Language', this.user.getSchemaLocale());\n\n const languages = this.config.getClientLocales().map(lang => lang.iso);\n let userLang = this.user.getClientLocale();\n if (languages.indexOf(userLang) === -1) {\n userLang = this.config.getDefaultClientLocale();\n }\n this.logger.debug('Setting client locale to \\'' + userLang + '\\'');\n this.translate.use(userLang);\n this.user.uiDirection = (this.config.getClientLocales().find(l => l.iso === userLang) || {}).dir || Direction.LTR;\n\n this.userSource.next(this.user);\n\n this.favorites = null;\n this.favoritesSource.next(this.favorites);\n\n this.notifications = null;\n this.notificationsSource.next(this.notifications);\n }\n\n /**\n * Fetches the current users favorites\n */\n public getFavorites(): Observable<any> {\n\n // only favorite objects of type 'DMS_OBJECT', are accepted\n // read more: http://jira.optimal-systems.de/browse/COOL-2316\n return this.backend\n .getJson('/user/favorites')\n .pipe(\n map(res => res && res.filter(r => r.favoritetype === 'DMS_OBJECT')),\n tap(res => {\n this.favorites = res;\n this.favoritesSource.next(this.favorites);\n }));\n\n // .map(res => {\n // let dmsObject = this.resolveObjectTypes(new DmsObject(res));\n // return dmsObject;\n // });\n }\n\n /**\n * Soft update for the users favorites\n * @param id ID of the favorite to be updated\n * @param item The new favorite item\n * @param multi Whether or not to update multiple items\n */\n public updateFavorites(id?: string, item?: any, multi?: any[]) {\n if (this.backend.update(this.favorites, multi || [{id, item}])) {\n this.favoritesSource.next(this.favorites);\n }\n }\n\n /**\n * Gets the users notifications (resubmissions and subscriptions)\n * @returns Resolved by list of the users notifications\n */\n public getNotifications(): Observable<any> {\n const notificationData = [\n this.getSubscription(),\n this.getResubmission()\n ];\n return forkJoin(notificationData);\n }\n\n /**\n * Gets the users resubmissions\n * @returns Collection of users resubmissions\n */\n public getResubmission(): Observable<any> {\n return this.backend.getJson('/messageprovider/resubmission/list').pipe(\n tap(response => {\n this.notifications = response;\n this.notificationsSource.next(this.notifications);\n }));\n }\n\n /**\n * Gets the users subscriptions\n * @returns Collection of users subscriptions\n */\n public getSubscription(): Observable<any> {\n return this.backend\n .getJson('/messageprovider/subscription/list').pipe(\n tap(response => {\n this.notifications = response;\n this.notificationsSource.next(this.notifications);\n }));\n }\n\n /**\n * Removes a notification\n * @param id ID of the notification to be removed\n * @param type The notifications type ('SUBSCRIPTION', 'RESUBMISSION')\n */\n public removeNotifications(id: string, type: string) {\n let messagetype: string;\n switch (type) {\n case 'SUBSCRIPTION':\n messagetype = 'subscription';\n break;\n case 'RESUBMISSION':\n messagetype = 'resubmission';\n break;\n default:\n return;\n }\n return this.backend.del(`/messageprovider/${messagetype}/` + id).pipe(tap(res => this.updateNotifications('')));\n }\n\n /**\n * Soft update for users notifications\n */\n public updateNotifications(id?: string, item?: any, multi?: any[]) {\n if (this.backend.update(this.notifications, multi || [{id, item}])) {\n this.notificationsSource.next(this.notifications);\n }\n }\n\n /**\n * Gets the URI to a users avatar image\n * @param userId The users ID\n * @returns URI to the user image\n */\n public getUserImageUri(userId: string) {\n return `${this.backend.getBaseWithContext(this.backend.getServiceBase())}/organization/image/${userId}?usedefault=true`;\n }\n\n /**\n * Removes a favorite item\n * @param favoriteId ID of the favorite item to be removed\n */\n public removeFavorite(favoriteId: string) {\n return this.backend.del('/user/favorite/' + favoriteId).pipe(tap(res => this.updateFavorites(favoriteId)));\n }\n\n /**\n * Create a new favorite item for the current user\n * @param id ID of the dms object to be set up as favorite\n * @param type The object type of the dms object\n * @param title The favorites title\n */\n public createFavorite(id: string, type: string, title: string) {\n const uri = Utils.buildUri('/dms/favorite/' + id, {type, title});\n return this.backend.post(uri, {}).pipe(tap(res => this.getFavorites().subscribe()));\n }\n\n /**\n * @ignore\n */\n public removeFavoritesForTarget(id: string) {\n return this.backend.del('/dms/favorite/' + id).pipe(tap(\n res => {\n const toRemove = this.favorites.filter(i => i.target.id === id).map(i => Object.assign({\n id: i.id\n }));\n this.updateFavorites(null, null, toRemove);\n }));\n }\n\n /**\n * Gets the users recyclebin\n */\n getRecycleBin(): Observable<any> {\n return this.backend.getJson(`/user/recyclebin`).pipe(\n tap(response=>{\n this.recycles=response;\n this.recyclesSource.next(this.recycles);\n }));\n }\n\n /**\n * Changes the users preferred lock mode and persists it on the server\n * @param lock The value to set the lock settings to\n */\n public changeLockSetting(lock: string) {\n this.user.userSettings.alwayslock = lock;\n return this.backend.put('/user/config/web', this.user.userSettings).pipe(map(() => {\n this.refreshCurrentUser().subscribe();\n }));\n }\n\n public hasPrivilege(privilege: string): boolean {\n return !!this.user.privileges.find(priv => priv.name === privilege);\n }\n\n\n /**\n * Changes the users password and persists it on the server\n */\n changePassword(payload: ChangePasswordInterface): Observable<any> {\n return this.backend.put(`/user/password`, payload);\n }\n\n /**\n * Fetches the settings for the current user and stores the new User object on the session\n */\n private refreshCurrentUser() {\n return this.backend.get(this.USER_FETCH_URI).pipe(map(res => this.setCurrentUser(res)));\n }\n\n public validatePassword(password: string): {type: string, amount: number} {\n if (password.length < this.passwordValidationSettings.minlength) {\n return {type: 'short', amount: this.passwordValidationSettings.minlength};\n }\n\n if (password.replace(/[^0-9]/g, '').length < this.passwordValidationSettings.minnumber) {\n return {type: 'number', amount: this.passwordValidationSettings.minnumber};\n }\n\n if (password.replace(/[a-zA-Z0-9ß ]/g, '').length < this.passwordValidationSettings.minspecialchars) {\n return {type: 'specialchars', amount: this.passwordValidationSettings.minspecialchars};\n }\n\n return {type: 'valid', amount: null};\n }\n\n /**\n * Changes the users saved inbox filter terms\n * @param filterTerms The value to set the saved inbox filters list to\n */\n public changeSavedInboxFilters(filterTerms: string[]) {\n this.user.userSettings.savedInboxFilter = filterTerms;\n return this.backend.put('/user/config/web', this.user.userSettings).pipe(map(() => {\n this.refreshCurrentUser().subscribe();\n }));\n }\n\n /**\n * Save or change the workspace of the current user\n * @param workspaceConfig The value to set the saved workspace or create a new workspace\n */\n public saveChangeWorkspace(workspaceConfig: WidgetGridWorkspaceConfig) {\n this.user.userSettings.workspaceOptions = workspaceConfig;\n return this.backend.put('/user/config/web', this.user.userSettings).pipe(map(() => {\n this.refreshCurrentUser().subscribe();\n }));\n }\n\n /**\n * Get all the field definitions of an object type\n * @param type The object type\n */\n\n public getFieldDefinition(type: string) {\n const contextType = 'sysfolder';\n let mode = 'ALL';\n return this.backend.get(`/user/config/result/${type}?contexttype=${contextType}&mode=${mode}`);\n }\n\n /**\n * Save or change the visibility state of dashboard toolbar for the current user\n * @param toolbarVisibility The visibility state\n */\n public saveToolbarState(toolbarVisibility: boolean) {\n this.user.userSettings.toolbarVisibility = toolbarVisibility;\n return this.backend.put('/user/config/web', this.user.userSettings).pipe(map(() => {\n this.refreshCurrentUser().subscribe();\n }));\n }\n\n /**\n * Save the local storage settings\n * @param localSettings The local settings to be saved from the localstorage\n * @param cacheSettings The local settings to be saved from the app cache\n */\n public saveLocalSettings(localSettings: any, cacheSettings: any) {\n return this.backend.put('/user/config/localSettings', {localSettings: localSettings, cacheSettings: cacheSettings}).pipe(map(() => {\n this.refreshCurrentUser().subscribe();\n }));\n }\n\n /**\n * Loads the local storage settings\n * @returns The saved settings\n */\n public loadLocalSettings(): Observable<any> {\n return this.backend.get('/user/config/localSettings').pipe(catchError(() => EMPTY));\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {UserService} from '../user/user.service';\nimport {Utils} from '../../util/utils';\nimport {CoreConfig} from '../../config/core-config';\nimport {CORE_CONFIG} from '../../config/core-init.tokens';\n\n\n/**\n * The Upload Service is provides access to Upload data (files)\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class UploadService {\n /**\n * @ignore\n */\n constructor(\n @Inject(CORE_CONFIG) public coreConfig: CoreConfig,\n private http: HttpClient, private userService: UserService) {\n }\n\n /**\n * Uploads files.\n *\n * @param uri Upload destination uri\n * @param files Files to be uploaded\n * @returns resolved by the response of the upload destination\n */\n upload(uri: string, files: File[]): Observable<any> {\n const formData = new FormData();\n const headers: HttpHeaders = new HttpHeaders({'Accept-Language': this.userService.getCurrentUser().getClientLocale()});\n files.forEach(file => formData.append('files[]', file, Utils.encodeFileName(file.name)));\n return this.http.post(uri, formData, {headers, withCredentials: this.coreConfig.withCredentials});\n }\n}\n","import {mergeMap, map, tap} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {Utils} from '../../util/utils';\nimport {BackendService} from '../backend/backend.service';\nimport {Observable, ReplaySubject} from 'rxjs';\nimport {ObjectType} from '../../model/object-type.model';\nimport {PreparedItem, PreparedItemTemplate} from '../../model/prepared-item.model';\nimport {UploadService} from '../upload/upload.service';\nimport {UploadTarget} from '../../model/upload-target.model';\nimport {UploadFileItem} from '../../model/upload-file-item.model';\nimport {IPrepareChildTypes} from './objectTypes.interface';\n\n/**\n * @ignore\n */\nexport interface PreparedPostParam {\n parentId: string;\n /**\n * flag indicating whether or not to create one PreparedItem using multiple files uploaded (false)\n * or creating a PreparedItem for each file posted to the URL (true)\n */\n createMany?: boolean;\n childType?: string;\n}\n\n/**\n * Collection of Prepare Services\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class PrepareService {\n\n private preparedItems: PreparedItem[];\n private preparedItemsSource = new ReplaySubject<PreparedItem[]>(1);\n public preparedItems$: Observable<PreparedItem[]> = this.preparedItemsSource.asObservable();\n\n private preparedItemCount: number;\n private preparedItemCountSource = new ReplaySubject<number>(1);\n public preparedItemCount$: Observable<number> = this.preparedItemCountSource.asObservable();\n\n constructor(private backend: BackendService,\n private uploadService: UploadService) {\n }\n\n /**\n * Public Fetch Prepare items\n */\n refreshPreparedItemsCount() {\n this.fetchPreparedItemsCount();\n }\n\n /**\n * Fetches the number of prepared items for the current user.\n */\n private fetchPreparedItemsCount() {\n this.backend.getJson('/prepare/state')\n .pipe(\n map((res) => res.count)\n )\n .subscribe((res) => {\n this.preparedItemCount = res;\n this.preparedItemCountSource.next(this.preparedItemCount);\n });\n }\n\n /**\n * Creates a prepared item on the backed side.\n *\n * @param parentId The ID of the parent dms object to add the prepared item to\n * @param childType The type of object to be created\n * @returns Observable<any>\n */\n i = 0;\n public createPreparedItem(parentId: string, childType?: string): Observable<any> {\nconsole.log('tick');\nthis.i++;\n\n return this.backend\n .post(this.createPreparedItemPostUrl({\n parentId: parentId,\n childType: childType ? childType : null\n }), {})\n .pipe(\n tap(() => this.getPreparedItems$())\n );\n }\n\n /**\n *\n * @param preparedItemId\n * @param data\n * @returns Observable<any>\n */\n public updatePreparedItemIndexData(preparedItemId, data) {\n return this.backend\n .put('/prepare/' + preparedItemId, data)\n .pipe(\n tap(() => this.getPreparedItems$())\n );\n }\n\n /**\n * Creates an URL for creating a PreparedItem.\n *\n * @param params Params for generating appropriate uri.\n * @returns string A POST URL for creating PreparedItems\n */\n public createPreparedItemPostUrl(params: PreparedPostParam): string {\n\n let url = params.createMany ? '/prepare/createmany' : '/prepare/create';\n if (params) {\n url = Utils.buildUri(url, params);\n }\n return url;\n }\n\n /**\n * Retrieves a list of the users prepared items.\n *\n * @param noForms If set to true the prepared items will be fetched without the form which is faster\n * @returns Observable<PreparedItem[]> A collection of prepared item objects\n */\n public getPreparedItems$(noForms?: boolean): Observable<PreparedItem[]> {\n this.fetchPreparedItems(noForms).subscribe();\n return this.preparedItems$;\n }\n\n /**\n * Retrieve PrepareItems and form them\n *\n * @param boolean noForms\n * @returns Observable<PreparedItem[]>\n */\n private fetchPreparedItems(noForms?: boolean): Observable<PreparedItem[]> {\n let uri = (noForms) ? '/prepare' : '/prepare?form=true';\n return this.backend\n .getJson(uri)\n .pipe(\n map((res: any) => res.map(i => new PreparedItem(i))),\n tap(() => this.fetchPreparedItemsCount()),\n tap((preparedItems: PreparedItem[]) => this.preparedItemsSource.next(preparedItems.sort(Utils.sortValues('created', 'desc'))))\n );\n }\n\n /**\n * Removes a prepared item.\n *\n * @param preparedItemId ID of the item to be removed\n * @returns Observable<any> Server response\n */\n deletePreparedItem(preparedItemId: string): Observable<any> {\n return this.backend\n .del(`/prepare/${preparedItemId}`)\n .pipe(\n tap(() => this.getPreparedItems$())\n );\n }\n\n /**\n * Fetches a list of object types allowed to be placed directly below root.\n *\n * @returns Observable<ObjectType[]> A list of supported object types\n */\n public getPrepareRootTypes(): Observable<ObjectType[]> {\n return this.backend\n .getViaTempCache('/prepare/types')\n .pipe(\n map((res) => res.types.map((type) => new ObjectType(type)))\n );\n }\n\n /**\n * Fetches a list of allowed child object types for a selected parent.\n *\n * @param parentId The id of the parent dms object (context folder)\n * @param withContentOnly If set to true only child types, that support content are returned.\n * @returns Observable<IPrepareChildTypes> A list of supported object types\n */\n public getPrepareChildTypes(parentId: string, withContentOnly?: boolean): Observable<IPrepareChildTypes> {\n const params = parentId ? {parentId, withcontent: withContentOnly} : {withcontent: withContentOnly}\n const uri = Utils.buildUri('/prepare/types', params);\n return this.backend\n .getViaTempCache(uri)\n .pipe(\n map(res => ({parent: res.parent, types: res.types.map((type) => new ObjectType(type))}))\n );\n }\n\n /**\n * fetch the preview uri for a prepared item\n *\n * @param id The id of the prepared item\n * @param index When a prepared item contains more than one contents, the index specifies which content\n * @param rendition Target rendition (PDF)\n * to retrieve the preview uri for\n * @returns string Preview uri\n */\n public getPreviewUri(id: string, index?: number, rendition?: string): string {\n return Utils.buildUri(`${this.backend.getServiceBase()}/prepare/${id}/content`, {rendition, index});\n }\n\n /**\n * Updates the prepared items target object type.\n *\n * @param objectType The target object types name\n * @param preparedItemId The id of the prepared item to set the type for\n * @returns Observable<PreparedItem> The updated prepared item\n */\n public updateChildType(objectType: string, preparedItemId: string): Observable<PreparedItem> {\n return this.backend\n .put(`/prepare/${preparedItemId}/${objectType}?form=true&contentmeta=true`)\n .pipe(\n map(res => new PreparedItem(res))\n );\n }\n\n /**\n * Add a template to a prepared item.\n *\n * @param preparedItemId The id of the prepared item to add the template to\n * @param templateId The id of the template to be added\n * @returns Observable<PreparedItem> The updated prepared item\n */\n public addTemplate(preparedItemId, templateId): Observable<PreparedItem> {\n return this.backend\n .put(`/prepare/${preparedItemId}/template?templateid=${templateId}`)\n .pipe(\n map(res => new PreparedItem(res))\n );\n }\n\n /**\n * Fetches a list of available templates for a given object type.\n *\n * @param Observable<PreparedItemTemplate[]> objectTypeName\n */\n public getTemplates(objectTypeName: string): Observable<PreparedItemTemplate[]> {\n return this.backend\n .getJson('/template/list?type=' + objectTypeName)\n .pipe(\n map((res: any) => res as PreparedItemTemplate[])\n );\n }\n\n /**\n * Returns url of a template preview\n *\n * @param id Template ID\n * @param rendition Target rendition (PDF)\n * @returns string The template preview url.\n */\n public getTemplatePreviewUri(id, rendition?: string): string {\n return Utils.buildUri(`${this.backend.getServiceBase()}/template/${id}/content`, {rendition});\n }\n\n /**\n * Commit a prepared item. This will create an actual dms object.\n * Updates the prepared creation object target type\n *\n * @param preparedItemId ID of the prepared item\n * @param preparedItemType Name of the prepared items target object type\n * @param preparedItemData Object holding data of the prepared item\n * @returns The id of the created dms object\n */\n public commitPreparedItem(preparedItemId, preparedItemType, preparedItemData): Observable<any> {\n return this.backend\n .put(`/prepare/${preparedItemId}/${preparedItemType}`)\n .pipe(\n mergeMap(() => this.backend.post(`/prepare/commit/${preparedItemId}`, preparedItemData)),\n tap(() => this.getPreparedItems$()),\n map(res => res.id)\n );\n }\n\n /**\n * Upload Content\n *\n * @param string preparedItemId\n * @param File file\n * @returns Observable<any>\n */\n uploadContent(preparedItemId: string, file: File) {\n const uri = `${this.backend.getBaseWithContext(this.backend.getServiceBase())}/prepare/${preparedItemId}/content.json?form=true&contentmeta=true`;\n return this.uploadService\n .upload(uri, [file])\n .pipe(\n // tap(() => this.getPreparedItems$())\n );\n }\n\n /**\n * Uploads files to an upload target.\n *\n * @param uploadTarget The upload target to upload files to\n * @param uploadFiles Files to be uploaded\n * @param useBatchUpload Flag indicating whether or not to use batch processing on the backend side\n * @returns Observable<any>\n */\n uploadToTarget(uploadTarget: UploadTarget, uploadFiles: UploadFileItem[], useBatchUpload?: boolean): Observable<any> {\n\n const files = uploadFiles.map(f => f._file);\n return this.uploadService\n .upload(this.getUploadTarget(uploadTarget, useBatchUpload), files)\n .pipe(\n tap(() => this.getPreparedItems$())\n );\n }\n\n /**\n * Get the uri to post files to based on the upload target.\n *\n * @param uploadTarget The target to upload files to\n * @param useBatchUpload Flag indicating whether or not to upload all files in a single post\n * @returns string the uri\n */\n private getUploadTarget(uploadTarget: UploadTarget, useBatchUpload?: boolean): string {\n let uri;\n\n if (uploadTarget.type === UploadTarget.ROOT) {\n /**\n * upload to general filing location\n *\n * @type string\n */\n uri = this.backend.getBaseWithContext(this.backend.getServiceBase()) + this.createPreparedItemPostUrl({\n parentId: null,\n createMany: !useBatchUpload\n }\n );\n\n } else if (uploadTarget.type === UploadTarget.OBJECT) {\n /**\n * upload to dms object, means adding or replacing content file\n */\n const {referenceObject} = uploadTarget;\n uri = `${this.backend.getBaseWithContext(this.backend.getServiceBase())}/dms/${referenceObject.id}/contents?type=${referenceObject.type.name}`;\n\n } else if (uploadTarget.type === UploadTarget.CONTEXT || uploadTarget.type === UploadTarget.CONTEXT_TREE) {\n /**\n * upload to context folder, means adding a new dms object to a specific\n * context folder ...\n * ... if we got a subFolder (node from the context tree) set up we'll add that too\n *\n * @type string\n */\n uri = this.backend.getBaseWithContext(this.backend.getServiceBase()) + this.createPreparedItemPostUrl({\n parentId: uploadTarget.referenceObject.id,\n createMany: !useBatchUpload,\n childType: uploadTarget.subFolder && uploadTarget.subFolder.data.type ? uploadTarget.subFolder.data.type : null\n });\n }\n return uri;\n }\n\n /**\n * Deletes a prepared creation object content element by index or the complete content.\n * If you provide an index the content consists only of one element,\n * the content is completely removed from the prepared creation object.\n *\n * @param preparedItemId ID of the item with the content to be removed\n * @param index Parameter that determines which content element should be deleted.\n * @returns Observable<PreparedItem> The updated prepared item\n */\n public deletePreparedItemContent(preparedItemId: string, index?: number): Observable<PreparedItem> {\n const url = `/prepare/${preparedItemId}/content` + (index !== undefined ? `?index=${index}` : '');\n return this.backend\n .del(url)\n .pipe(\n map(res => new PreparedItem(res))\n );\n }\n}\n","export enum SystemStatusEnum {\n SYSTEM_STATUS_SCHEMA_CHANGED = 'schemaChangedOn',\n SYSTEM_STATUS_ORG_CHANGED = 'orgChangedOn',\n SYSTEM_STATUS_SEC_CHANGED = 'securityChangedOn',\n SYSTEM_STATUS_ACL_CHANGED = 'aclChangedOn',\n SYSTEM_STATUS_INBOX_CHANGED = 'inboxChangedOn'\n}\n","import {Injectable, NgZone} from '@angular/core';\nimport {EventService} from '../events/event.service';\nimport {BackendService} from '../backend/backend.service';\nimport {EnaioEvent} from '../events/events';\nimport {Subject, Subscription, timer} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {AppCacheService} from '../cache/app-cache.service';\nimport {ISystemStatus} from './system.status.interface';\nimport {SystemStatusEnum} from './system.status.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SystemStatusService {\n\n private currentStatus: ISystemStatus;\n private statusCacheKey = 'eo.framework.cache.system.status';\n private hasBeenStopped: boolean;\n\n private pollingStopTrigger$ = new Subject<void>();\n\n constructor(private eventService: EventService, private backend: BackendService, private appCache: AppCacheService, private ngZone: NgZone) {\n this.appCache\n .getItem(this.statusCacheKey)\n .subscribe(status => this.currentStatus = status);\n }\n\n init(pollIntervalMilliSeconds = -1) {\n if (pollIntervalMilliSeconds > -1) {\n this.pollingStopTrigger$ = new Subject<void>();\n this.startPolling(pollIntervalMilliSeconds);\n }\n }\n\n stop() {\n this.hasBeenStopped = true;\n this.pollingStopTrigger$.next();\n this.pollingStopTrigger$.complete();\n }\n\n private startPolling(pollIntervalMilliSeconds) {\n this.ngZone.runOutsideAngular(() => {\n let requestSubscription: Subscription;\n timer(0, pollIntervalMilliSeconds)\n .pipe(takeUntil(this.pollingStopTrigger$))\n .subscribe(() => {\n this.ngZone.run(() => {\n // temporary fix while status service is disabled\n this.eventService.trigger(EnaioEvent.SYSTEM_STATUS_INBOX_CHANGED, {});\n });\n\n // if (requestSubscription) {\n // requestSubscription.unsubscribe();\n // }\n // requestSubscription = this.backend\n // .get('/status', this.backend.getStatusBase())\n // .subscribe((res: ISystemStatus) => {\n // this.handleStatusResult(res);\n // }, err => {\n // this.handleStatusError(err);\n // });\n });\n });\n }\n\n private handleStatusResult(res: ISystemStatus) {\n const eventsToBeTriggered: { type: string, data: any }[] = [];\n Object.keys(res).forEach(val => {\n if (this.statusCheck(res, val)) {\n eventsToBeTriggered.push({\n type: this.statusEvent(val),\n data: res\n });\n }\n });\n\n if (eventsToBeTriggered.length || this.hasBeenStopped) {\n // if polling has been stopped and get activated again, we need\n // angular to detect changes immediately\n this.ngZone.run(() => {\n eventsToBeTriggered.forEach(e => {\n this.eventService.trigger(e.type, e.data);\n });\n });\n }\n\n if (eventsToBeTriggered.length || !this.currentStatus) {\n this.currentStatus = res;\n this.appCache.setItem(this.statusCacheKey, res);\n }\n }\n\n private handleStatusError(err) {\n // execute within zone so components are able to be checked\n // Getting a 401 would otherwise not trigger a route change (redirect to login state)\n this.ngZone.run(() => {\n setTimeout(_ => {\n this.stop();\n });\n });\n }\n\n private statusEvent(val: string): string {\n return EnaioEvent[Object.keys(SystemStatusEnum).find(key => SystemStatusEnum[key] === val)];\n }\n\n private statusCheck(res: ISystemStatus, statusType: string): boolean {\n return this.currentStatus && (this.currentStatus[statusType] < res[statusType]);\n }\n}\n\n","import {Injectable} from '@angular/core';\n\n/**\n * @ignore\n */\nlet instance;\n\n\n/**\n * Wrapper for accessing browsers local storage.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalStorageService {\n\n private storage: any;\n\n constructor() {\n\n if (instance) {\n instance = this;\n }\n this.storage = this.isLocalStorageAvailable() ? window.localStorage : null;\n return instance;\n }\n\n /**\n * Sets the provided value to the local storage\n *\n * @param key The items key\n * @param value The items value\n */\n setItem(key: string, value: any): boolean | void {\n if (typeof key === 'undefined' || typeof value === 'undefined') {\n return false;\n }\n this.storage.setItem(key, JSON.stringify(value));\n }\n\n /**\n * Retrieves a value by key from local storage and parses it\n *\n * @param key The key of the item to be retrieved\n * @return The stored value\n */\n getItem(key: string): any {\n this.isKeyDefined(key);\n const value = this.storage.getItem(key);\n\n if (value) {\n return JSON.parse(value);\n }\n return false;\n }\n\n /**\n * Checks if Key is available in Local Storage\n * @param key The items key\n * @return True if a value exists for the given key, false otherwise\n */\n hasItem(key: string): boolean {\n this.isKeyDefined(key);\n return this.storage.getItem(key) === null;\n }\n\n /**\n * Removes a key value from Local Storage by provided Key\n * @param key The items key\n */\n removeItem(key: string) {\n this.isKeyDefined(key);\n this.storage.removeItem(key);\n }\n\n /**\n * Clears the Local Storage\n */\n clear(filter?: (key: string) => boolean) {\n return filter ? Object.keys(this.storage).forEach(key => filter(key) && this.removeItem(key)) : this.storage.clear();\n }\n\n /**\n * Checks if a Key is defined in local storage\n * @param key The items key\n * @return True if key eyists, false otherwise\n */\n isKeyDefined(key: string): boolean | void {\n if (typeof key === 'undefined') {\n return false;\n }\n }\n\n getStorage() {\n return this.storage;\n }\n\n setStorage(settings: any) {\n for (const [key, value] of Object.entries(settings)) {\n this.storage.setItem(key, value);\n }\n }\n\n isEmpty(): boolean {\n return this.storage && this.storage.length === 0;\n }\n\n /**\n * Checks if the Browser Supports Local Storage\n */\n private isLocalStorageAvailable() {\n try {\n const storage = window.localStorage;\n storage.setItem('test', 'test');\n storage.removeItem('test');\n return true;\n } catch (e) {\n return false;\n }\n }\n}\n","import {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Inject, Injectable} from '@angular/core';\nimport {LocalStorage} from '@ngx-pwa/local-storage';\nimport {\n BehaviorSubject, Observable,\n forkJoin as observableForkJoin,\n} from 'rxjs';\nimport {map, switchMap, tap} from 'rxjs/operators';\nimport {CoreConfig} from '../../config/core-config';\nimport {CORE_CONFIG} from '../../config/core-init.tokens';\nimport {EoUser} from '../../model/eo-user.model';\nimport {BackendService} from '../backend/backend.service';\nimport {BpmService} from '../bpm/bpm.service';\nimport {CapabilitiesService} from '../capabilities/capabilities.service';\nimport {Config} from '../config/config.service';\nimport {EventService} from '../events/event.service';\nimport {EnaioEvent} from '../events/events';\nimport {InboxService} from '../inbox/inbox.service';\nimport {PrepareService} from '../prepare/prepare.service';\nimport {LocalStorageService} from '../storage/local-storage.service';\nimport {SystemStatusService} from '../system-status/system-status.service';\nimport {SystemService} from '../system/system.service';\nimport {UserService} from '../user/user.service';\nimport {AuthProfile} from './auth-profile.interface';\nimport {GatewayInfo} from './gateway-info.interface';\n\n/**\n * `AuthService` handles authentication against an yuuvis<sup>&reg;</sup> RAD backend.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n\n private userProfileUri = this.userService.USER_FETCH_URI;\n private authSource = new BehaviorSubject<boolean>(false);\n private loggedInCacheKey = 'eo.user.loggedIn';\n\n /**\n * Observable to subscribe to for getting the state of being authenticated. Will emit true when a user logged in,\n * false when the user logged out or the gateways session timed out.\n */\n public authenticated$: Observable<boolean> = this.authSource.asObservable();\n\n /**\n * @ignore\n */\n public hosts: string[] = [];\n private gatewayInfo: GatewayInfo;\n\n /**\n * @ignore\n */\n public profile: AuthProfile = {\n host: '',\n user: null,\n auth: null,\n active: false\n };\n\n /**\n * @ignore\n */\n constructor(private config: Config,\n @Inject(CORE_CONFIG) public coreConfig: CoreConfig,\n private http: HttpClient,\n private bpmService: BpmService,\n private capabilitiesService: CapabilitiesService,\n private inboxService: InboxService,\n private prepareService: PrepareService,\n private backend: BackendService,\n private systemService: SystemService,\n private userService: UserService,\n private eventService: EventService,\n private systemStatusService: SystemStatusService,\n protected storage: LocalStorage,\n protected local: LocalStorageService) {\n window.addEventListener('storage', evt => {\n if (evt.key === this.loggedInCacheKey) {\n const host = JSON.parse(evt.newValue).host;\n this.initUser(host).subscribe();\n }\n });\n }\n\n /**\n * Login a user using form based login.\n * @param host The target host (could be null if you are running in web environment)\n * @param username The username\n * @param password The password\n * @returns Resolves with the logged in user\n */\n public login(host: string, username: string, password: string): Observable<EoUser> {\n\n host = host || '';\n const fd = new FormData();\n fd.append('username', encodeURIComponent(username));\n fd.append('password', encodeURIComponent(password));\n\n const loginHeader = new HttpHeaders({\n 'Content-Type': 'application/x-www-form-urlencoded'\n });\n return this.http.post(host + this.config.getContextPath() + '/login',\n `username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`, {\n headers: loginHeader,\n responseType: 'text',\n withCredentials: this.coreConfig.withCredentials\n }).pipe(\n switchMap(() => this.initUser(host))\n );\n }\n\n /**\n * Gets called while app init\n * @ignore\n */\n initUser(host?: string) {\n\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json'\n });\n\n return this.http\n .get(`${host || ''}${this.config.getContextPath()}/auth/info`, {headers, withCredentials: this.coreConfig.withCredentials})\n .pipe(switchMap((info: GatewayInfo) => {\n this.gatewayInfo = info;\n return this.fetchUser(info, host)\n }));\n }\n\n /**\n *\n * @param gatewayInfo\n * @param host\n * @returns Observable<EoUser>\n */\n private fetchUser(gatewayInfo: any, host?: string): Observable<EoUser> {\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json'\n });\n return this.backend\n .get(this.userProfileUri, '', {headers, withCredentials: this.coreConfig.withCredentials})\n .pipe(\n switchMap((user: any) => {\n this.profile = {\n host: host || '',\n user: user.user.name,\n auth: null,\n active: true\n };\n if (host) {\n this.addHostConfig(host);\n }\n if (this.local.isEmpty()) {\n this.userService.loadLocalSettings().subscribe(settings => {\n this.local.setStorage(settings.localSettings);\n });\n }\n window.localStorage.setItem(this.loggedInCacheKey, JSON.stringify({userId: user.user.id, host: host}));\n return this.initApp(user, gatewayInfo.ntlm);\n }),\n tap(() => this.authSource.next(this.isLoggedIn()))\n );\n }\n\n /**\n * Logs out the current user.\n * @param gatewayLogout Flag indicating whether or not to perform a gateway logout as well\n */\n public logout(gatewayLogout?: boolean) {\n\n this.authSource.next(false);\n this.systemStatusService.stop();\n\n this.profile = {\n host: '',\n user: null,\n auth: null,\n active: false\n };\n\n if (gatewayLogout) {\n // by default we are just resetting internal state to 'logged out' and in\n // some cases call gateways logout endpoint to do logout stuff there silently\n this.http.get(`${this.profile.host || ''}${this.config.getContextPath()}/logout`, {withCredentials: this.coreConfig.withCredentials}).subscribe();\n }\n\n\n this.backend.setAuthProfile(this.profile);\n this.eventService.trigger(EnaioEvent.LOGOUT);\n }\n\n /**\n * for desktop and mobile devices we provide a list of hosts for the login\n *\n * @param string host\n */\n private addHostConfig(host: string) {\n const existingHost = this.hosts.find(h => h === host);\n if (!existingHost) {\n this.hosts.push(host);\n }\n }\n\n /**\n * Get the current state of a user being logged in. This is kind of the synchronous version of subscribing to `authenticated$`.\n * @returns True if there is a logged in user, false otherwise\n */\n public isLoggedIn(): boolean {\n return this.profile.user !== null;\n }\n\n /**\n *\n * @param user\n * @param boolean sso\n * @returns Observable<EoUser>\n */\n private initApp(user: any, sso?: boolean): Observable<EoUser> {\n\n const currUser = new EoUser(user);\n this.backend.setAuthProfile(this.profile);\n this.userService.setCurrentUser(user);\n const capabilities = this.capabilitiesService.setCapabilities(\n user.capabilities, sso);\n\n this.systemStatusService.init(this.config.getRaw('systemStatusUpdateInterval'));\n\n // update states\n if (capabilities.inbox) {\n this.inboxService.refreshInboxState();\n }\n if (capabilities.intray) {\n this.prepareService.refreshPreparedItemsCount();\n }\n\n const todo = [\n this.bpmService.initExecutableProcesses(),\n this.systemService.getSystemDefinition(currUser)\n ];\n\n return observableForkJoin(todo).pipe(\n map(() => currUser)\n );\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {EnaioConfig} from '../service/config/config.interface';\nimport {Config} from '../service/config/config.service';\nimport {AuthService} from '../service/auth/auth.service';\nimport {of as observableOf, forkJoin} from 'rxjs';\nimport {mergeMap, map, catchError} from 'rxjs/operators';\nimport {Logger} from '../service/logger/logger';\nimport {CoreConfig} from './core-config';\nimport {CORE_CONFIG} from './core-init.tokens';\n\n/**\n * Main initialization service of the eoFrameworkCore module. The `load()` function will contain\n * all steps that needs to be executed before the application starts. Therefore it will be used\n * as `APP_INITIALIZER` from the providers section of the app module.\n *\n * Later on this service can be used by other components or services to fetch the result of the\n * initialization process (e.g. infos on the current user).\n */\n\n@Injectable()\nexport class CoreInit {\n\n /**\n * @ignore\n */\n constructor(@Inject(CORE_CONFIG) private coreConfig: CoreConfig, private logger: Logger,\n private http: HttpClient, private configService: Config, private authService: AuthService) {\n }\n\n /**\n * Initializes core module. Executed in context of `APP_INITIALIZER`.\n * @returns Promise that resolves after yuuvis<sup>&reg;</sup> RAD core has been initialized\n */\n public initialize(): Promise<boolean> {\n\n return new Promise((resolve, reject) => {\n\n /**\n * getting a string means that we got an URL to load the config from\n */\n let config = !Array.isArray(this.coreConfig.main) ? observableOf([this.coreConfig.main]) :\n forkJoin(this.coreConfig.main.map(c => this.http.get(c, {\n withCredentials: this.coreConfig.withCredentials\n }).pipe(\n catchError(e => {\n this.logger.error('failed to catch config file', e);\n return observableOf({});\n })\n )));\n\n config.pipe(\n map((res) => res.reduce((acc, x) => {\n // merge object values on 2nd level\n Object.keys(x).forEach(k => !acc[k] || Array.isArray(x[k]) || typeof x[k] !== 'object' ? acc[k] = x[k] : Object.assign(acc[k], x[k]));\n return acc;\n }, {})\n ),\n mergeMap((res: EnaioConfig) => {\n this.configService.set(res);\n return this.authService.initUser()\n .pipe(catchError(e => observableOf(true)));\n })\n ).subscribe(res => {\n resolve(true);\n }, err => {\n this.logger.error(err);\n reject();\n });\n });\n }\n}\n","import {CoreInit} from './core-init.service';\n\n/**\n * @ignore\n * APP_INITIALIZER function\n */\nexport function init_module(coreInit: CoreInit) {\n // Need to set to a const before returning due to:\n // @see: https://github.com/angular/angular/issues/14485\n const fnc: Function = () => coreInit.initialize();\n return fnc;\n}\n","import {MissingTranslationHandler, MissingTranslationHandlerParams} from '@ngx-translate/core';\n\n/**\n * @ignore\n * Handles missing translations\n */\nexport class EoxMissingTranslationHandler implements MissingTranslationHandler {\n\n /**\n *\n * @param MissingTranslationHandlerParams params\n * @returns string\n */\n handle(params: MissingTranslationHandlerParams) {\n return '!missing key: ' + params.key;\n }\n}\n","import {TranslateLoader} from '@ngx-translate/core';\nimport {HttpClient} from '@angular/common/http';\nimport {Inject} from '@angular/core';\nimport {Observable, of, forkJoin} from 'rxjs';\nimport {catchError, map} from 'rxjs/operators';\nimport {CoreConfig} from './core-config';\nimport {CORE_CONFIG} from './core-init.tokens';\n\n/**\n * i18n packages\n */\nimport {registerLocaleData} from '@angular/common';\nimport localeDeCh from '@angular/common/locales/de-CH';\nimport localeExtraDeCh from '@angular/common/locales/extra/de-CH';\nimport localeDe from '@angular/common/locales/de';\nimport localeExtraDe from '@angular/common/locales/extra/de';\nimport localeAr from '@angular/common/locales/ar';\nimport localeExtraAr from '@angular/common/locales/extra/ar';\nimport localeEs from '@angular/common/locales/es';\nimport localeExtraEs from '@angular/common/locales/extra/es';\nimport localePt from '@angular/common/locales/pt';\nimport localeExtraPt from '@angular/common/locales/extra/pt';\nimport localeFr from '@angular/common/locales/fr';\nimport localeExtraFr from '@angular/common/locales/extra/fr';\nimport localeZh from '@angular/common/locales/zh';\nimport localeExtraZh from '@angular/common/locales/extra/zh';\nimport localeZhHant from '@angular/common/locales/zh-Hant';\nimport localeExtraZhHant from '@angular/common/locales/extra/zh-Hant';\nimport localeLv from '@angular/common/locales/lv';\nimport localeExtraLv from '@angular/common/locales/extra/lv';\nimport localeRu from '@angular/common/locales/ru';\nimport localeExtraRu from '@angular/common/locales/extra/ru';\nimport localeIt from '@angular/common/locales/it';\nimport localeExtraIt from '@angular/common/locales/extra/it';\nimport localeNl from '@angular/common/locales/nl';\nimport localeExtraNl from '@angular/common/locales/extra/nl';\nimport localeSk from '@angular/common/locales/sk';\nimport localeExtraSk from '@angular/common/locales/extra/sk';\nimport localePl from '@angular/common/locales/pl';\nimport localeExtraPl from '@angular/common/locales/extra/pl';\nimport localeUk from '@angular/common/locales/uk';\nimport localeExtraUk from '@angular/common/locales/extra/uk';\nimport localeJa from '@angular/common/locales/ja';\nimport localeExtraJa from '@angular/common/locales/extra/ja';\nimport localeKo from '@angular/common/locales/ko';\nimport localeExtraKo from '@angular/common/locales/extra/ko';\nimport localeHi from '@angular/common/locales/hi';\nimport localeExtraHi from '@angular/common/locales/extra/hi';\nimport localeBn from '@angular/common/locales/bn';\nimport localeExtraBn from '@angular/common/locales/extra/bn';\nimport localeVi from '@angular/common/locales/vi';\nimport localeExtraVi from '@angular/common/locales/extra/vi';\nimport localeTh from '@angular/common/locales/th';\nimport localeExtraTh from '@angular/common/locales/extra/th';\nimport localeEnGb from '@angular/common/locales/en-GB';\nimport localeExtraEnGb from '@angular/common/locales/extra/en-GB';\nimport localeHe from '@angular/common/locales/he';\nimport localeExtraHe from '@angular/common/locales/extra/he';\nimport localeFi from '@angular/common/locales/fi';\nimport localeExtraFi from '@angular/common/locales/extra/fi';\nimport localeDa from '@angular/common/locales/da';\nimport localeExtraDa from '@angular/common/locales/extra/da';\nimport localeSe from '@angular/common/locales/se';\nimport localeExtraSe from '@angular/common/locales/extra/se';\nimport localeNb from '@angular/common/locales/nb';\nimport localeExtraNb from '@angular/common/locales/extra/nb';\nimport localeNn from '@angular/common/locales/nn';\nimport localeExtraNn from '@angular/common/locales/extra/nn';\nimport localeId from '@angular/common/locales/id';\nimport localeExtraId from '@angular/common/locales/extra/id';\nimport localeMs from '@angular/common/locales/ms';\nimport localeExtraMs from '@angular/common/locales/extra/ms';\n\n/**\n * @ignore\n * Loader that fetches translations based on the configured locations\n */\nexport class EoxTranslateJsonLoader implements TranslateLoader {\n\n constructor(public http: HttpClient, @Inject(CORE_CONFIG) public config: CoreConfig) {\n registerLocaleData(localeDe, 'de', localeExtraDe); // German\n registerLocaleData(localeAr, 'ar', localeExtraAr); // Arabic\n registerLocaleData(localeEs, 'es', localeExtraEs); // Spanish\n registerLocaleData(localePt, 'pt', localeExtraPt); // Portuguese\n registerLocaleData(localeFr, 'fr', localeExtraFr); // French\n registerLocaleData(localeZh, 'zh', localeExtraZh); // Chinese\n registerLocaleData(localeLv, 'lv', localeExtraLv); // Latvian\n registerLocaleData(localeRu, 'ru', localeExtraRu); // Russian\n registerLocaleData(localeIt, 'it', localeExtraIt); // Italian\n registerLocaleData(localeNl, 'nl', localeExtraNl); // Dutch\n registerLocaleData(localeSk, 'sk', localeExtraSk); // Slovak\n registerLocaleData(localePl, 'pl', localeExtraPl); // Polish\n registerLocaleData(localeUk, 'uk', localeExtraUk); // Ukrainian\n registerLocaleData(localeJa, 'ja', localeExtraJa); // Japanese\n registerLocaleData(localeKo, 'ko', localeExtraKo); // Korean\n registerLocaleData(localeHi, 'hi', localeExtraHi); // Hindi\n registerLocaleData(localeBn, 'bn', localeExtraBn); // Bengalese\n registerLocaleData(localeDeCh, 'de-CH', localeExtraDeCh); // German (switzerland)\n registerLocaleData(localeZhHant, 'zh-Hant', localeExtraZhHant); // Chinese (traditional)\n registerLocaleData(localeTh, 'th', localeExtraTh); // Thai\n registerLocaleData(localeVi, 'vi', localeExtraVi); // Vietnamese\n registerLocaleData(localeEnGb, 'en-GB', localeExtraEnGb); // English (Great-Britain)\n registerLocaleData(localeHe, 'he', localeExtraHe); // Hebrew\n registerLocaleData(localeFi, 'fi', localeExtraFi); // Finish\n registerLocaleData(localeDa, 'da', localeExtraDa); // Danish\n registerLocaleData(localeSe, 'se', localeExtraSe); // Swedish\n registerLocaleData(localeNb, 'nb', localeExtraNb); // Norwegian Bokmål\n registerLocaleData(localeNn, 'nn', localeExtraNn); // Norwegian Nynorsk\n registerLocaleData(localeId, 'id', localeExtraId); // Indonesian\n registerLocaleData(localeMs, 'ms', localeExtraMs); // Malay\n }\n\n\n /**\n *\n * @param string lang\n * @returns Observable<Object>\n */\n getTranslation(lang: string): Observable<Object> {\n return forkJoin(this.config.translations.map(folder => this.loadTranslationFile(folder, lang))).pipe(\n map((res) => res.reduce((acc, x) => Object.assign(acc, x), {}))\n );\n }\n\n private loadTranslationFile(folder: string, lang: string): Observable<any> {\n return this.http.get(`${folder}${lang}.json`).pipe(\n catchError((e) => {\n // ISO codes with more than 2 characters are sub-languages like de-CH.\n // If there is no translation file for that sub-language we'll try to load\n // the file for the base language (in this case de).\n return lang.length > 2 ? this.loadTranslationFile(folder, lang.substring(0, 2)) : of({});\n })\n );\n }\n}\n","import {NgModule} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ToastrModule} from 'ngx-toastr';\n\n/**\n * `EoSharedModule` re-exports ToastrModule, TranslateModule so you can use directives\n */\n@NgModule({\n exports: [\n ToastrModule,\n TranslateModule\n ]\n})\nexport class EoSharedModule {\n}\n","import {Injectable} from '@angular/core';\nimport {HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {tap} from 'rxjs/operators';\nimport {AuthService} from './auth.service';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n\n constructor(public auth: AuthService) {\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n return next.handle(request).pipe(tap((event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n // do stuff with response if you want\n }\n }, (error: any) => {\n if (error instanceof HttpErrorResponse || error.isHttpErrorResponse) {\n if (error.status === 401) {\n this.auth.logout();\n }\n }\n }));\n }\n}\n","import {EnvironmentEnaio} from \"../../environment.enaio\";\n\n/**\n * Declare the console as an ambient value so that TypeScript doesn't complain.\n */\ndeclare const console: any;\nimport {Injectable} from '@angular/core';\nimport {ILogger} from '../../interface/logger.interface';\n\n/**\n * @ignore\n * logger logging values to the ambient console object.\n */\n@Injectable()\nexport class ConsoleLogService implements ILogger {\n\n private apply(fn, args) {\n return console && console[fn] && console[fn](...args);\n }\n\n public assert(...args: any[]): void {\n this.apply('assert', args);\n }\n\n public debug(...args: any[]): void {\n this.apply('debug', args);\n }\n\n public error(...args: any[]): void {\n this.apply('error', args);\n }\n\n public group(...args: any[]): void {\n this.apply('group', args);\n }\n\n public groupEnd(...args: any[]): void {\n this.apply('groupEnd', args);\n }\n\n public info(...args: any[]): void {\n this.apply('info', args);\n }\n\n public log(...args: any[]): void {\n this.apply('log', args);\n }\n\n public warn(...args: any[]): void {\n this.apply('warn', args);\n }\n}\n","import {HTTP_INTERCEPTORS, HttpClient, HttpClientModule} from '@angular/common/http';\nimport {APP_INITIALIZER, ModuleWithProviders, NgModule, Optional, SkipSelf} from '@angular/core';\nimport {MissingTranslationHandler, TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {ToastrModule} from 'ngx-toastr';\nimport {CoreConfig} from './config/core-config';\nimport {CoreInit} from './config/core-init.service';\nimport {CORE_CONFIG, CUSTOM_CONFIG} from './config/core-init.tokens';\nimport {init_module} from './config/initialize-module';\nimport {EoxMissingTranslationHandler} from './config/missing-translation-handler';\nimport {EoxTranslateJsonLoader} from './config/translate-json-loader';\nimport {EoSharedModule} from './eo-core-shared.module';\nimport {AuthInterceptor} from './service/auth/auth-interceptor';\nimport {ConsoleLogService} from './service/logger/console-log.service';\nimport {Logger} from './service/logger/logger';\n\n/**\n * Main module for connecting an app to an yuuvis<sup>&reg;</sup> RAD backend. To use it just import int in your app module:\n *\n * ```javascript\n * @NgModule({\n * imports: [\n * EoCoreModule.forRoot(<config>)\n * ], ...})\n * ```\n *\n * add the styles to your CLI project by adding `node_modules/@enaio-sdk/core/main.css` to the styles section of your `angular.json` or\n * use `@import '~@eo-sdk/core/main.css';` in the main styles.scss.\n *\n * ## config\n * `EoCoreModule` can be initialized with a custom configuration: If it's not set, defaults apply.\n *\n * ```json\n * {\n * main: EnaioConfig | string[], // main config object or paths to the config files (defaults to: ['assets/_default/config/main.json'])\n * translations: string[] // paths to folders where the translations reside (defaults to: ['assets/_default/i18n/'])\n * }\n * ```\n *\n * `EoCoreModule` re-exports EoSharedModule, so you can use shared modules (for example translations) inside of your app.\n * If you create your own modules that get imported in your app module, you need to import EoSharedModule there on your own.\n * Just add `import {EoSharedModule} from '@eo-sdk/core';` and you are ready to go. Everything else is\n * handled by `EoCoreModule`.\n */\n@NgModule({\n imports: [\n HttpClientModule,\n TranslateModule.forRoot(),\n /**\n * [to use toastr without dependency of @angular/animations]{@link https://www.npmjs.com/package/ngx-toastr}\n */\n ToastrModule.forRoot()\n ],\n providers: [\n {\n /**\n * provide a logging implementation for the current platform\n */\n provide: Logger,\n useClass: ConsoleLogService\n },\n ],\n exports: [EoSharedModule]\n})\nexport class EoCoreModule {\n static forRoot(config?: CoreConfig): ModuleWithProviders<EoCoreModule> {\n\n return {\n ngModule: EoCoreModule,\n providers: [\n CoreInit,\n {provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true},\n {provide: CUSTOM_CONFIG, useValue: config},\n {provide: CORE_CONFIG, useClass: CoreConfig, deps: [CUSTOM_CONFIG]},\n {provide: APP_INITIALIZER, useFactory: init_module, deps: [CoreInit], multi: true},\n /**\n * overriding translate modules defaults\n * this works because providers are singletons\n */\n {provide: TranslateLoader, useClass: EoxTranslateJsonLoader, deps: [HttpClient, CORE_CONFIG]},\n {provide: MissingTranslationHandler, useClass: EoxMissingTranslationHandler}\n ]\n };\n }\n\n /**\n * @ignore\n */\n constructor(@Optional() @SkipSelf() parentModule: EoCoreModule) {\n if (parentModule) {\n throw new Error(\n 'EoCoreModule is already loaded. Import it in the AppModule only');\n }\n }\n}\n","export class EnvironmentEnaio {\n\n static isWebEnvironment() {\n return !EnvironmentEnaio.isDesktopEnvironment() && !EnvironmentEnaio.isMobileEnvironment()\n }\n\n static isMobileEnvironment() {\n return window.hasOwnProperty('cordova');\n }\n\n static isDesktopEnvironment() {\n return window.hasOwnProperty('process') && window['process'].versions.hasOwnProperty('electron');\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ClipboardAction} from './clipboard-action.enum';\nimport {Clipboard} from './clipboard.interface';\nimport {DmsObject} from '../../model/dms-object.model';\nimport {ReplaySubject, Observable} from 'rxjs';\nimport {EnaioEvent} from '../events/events';\nimport {EventService} from '../events/event.service';\n\n\n/**\n * Collection of all Clipboard Services\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ClipboardService {\n\n private cacheKey = 'eo.clipboard';\n private clipboard: Clipboard = {\n action: null,\n elements: []\n };\n private clipboardSource = new ReplaySubject<Clipboard>(1);\n public clipboard$: Observable<Clipboard> = this.clipboardSource.asObservable();\n\n /**\n * @ignore\n */\n constructor(private eventService: EventService) {\n\n eventService.on(EnaioEvent.LOGOUT).subscribe(res => {\n this.clear();\n });\n\n this.loadCachedClipboard();\n window.addEventListener('storage', evt => {\n if (evt.key === this.cacheKey) {\n this.loadCachedClipboard();\n }\n });\n }\n\n /**\n * Setter for the Clipboard\n *\n * @param elements The elements that should be set to the clipboard\n * @param action The type of action (COPY, CUT)\n * @param noCache Whether or not to bypass cache\n */\n set(elements: DmsObject[], action: ClipboardAction, noCache?: boolean) {\n this.clipboard = {\n action: action,\n elements: elements\n };\n if (!noCache) {\n this.updateCache();\n }\n this.clipboardSource.next(this.clipboard);\n }\n\n /**\n * Getter for the Clipboard\n *\n * @returns Clipboard\n */\n get(): Clipboard {\n return this.clipboard;\n }\n\n /**\n * Clears the Clipboard by removing all entries from the Clipboard\n */\n clear() {\n this.clipboard = {\n action: null,\n elements: []\n };\n this.updateCache();\n this.clipboardSource.next(this.clipboard);\n }\n\n /**\n * Update LocalStorage with Clipboard\n */\n private updateCache() {\n window.localStorage.setItem(this.cacheKey, JSON.stringify(this.clipboard));\n }\n\n /**\n * Load Cached Clipbord from LocalStorage\n */\n private loadCachedClipboard() {\n const json = window.localStorage.getItem(this.cacheKey);\n try {\n let clipboard = JSON.parse(json);\n if (clipboard) {\n this.set(clipboard.elements, clipboard.action, true);\n } else {\n this.clear();\n }\n } catch (err) {\n\n }\n }\n}\n","import {ObjectType} from './object-type.model';\n\n/**\n * @ignore\n */\nexport class DmsObjectAttachment {\n id: number;\n name: string;\n size: number;\n type: string;\n previewUri: string;\n\n /**\n * @param json - server sent JSON for a dms object\n */\n constructor(json: any) {\n Object.assign(this, json);\n }\n}\n\n/**\n * Representation of a dms object.\n */\nexport class DmsObject {\n /**\n * objects ID\n */\n id: string;\n /**\n * objects title\n */\n title: string;\n /**\n * objects description\n */\n description: string;\n /**\n * objects version number\n */\n version: number;\n /**\n * @ignore\n */\n versions: any[];\n /**\n * object type name\n */\n typeName: string;\n /**\n * objects type\n */\n type?: ObjectType;\n /**\n * Flag indicating whether or not this is the active version of the object\n */\n isActiveVersion: boolean;\n /**\n * Flag indicating whether or not has been finalized\n */\n isFinalized: boolean;\n /**\n * Flag indicating whether or not the object has been marked as favorite\n */\n isFavorite: boolean;\n /**\n * @ignore\n * same as isContextFolder because we do not allow other folders than context folders\n */\n isFolder: boolean;\n /**\n * Flag indicating whether or not the object is a context folder\n */\n isContextFolder: boolean;\n /**\n * Information about the objects context folder\n */\n contextFolder: { id: string, typeName: string, type?: ObjectType, title: string, description: string };\n /**\n * Indexdata of the object\n */\n data: any;\n /**\n * special right/permissions set up for the object\n */\n rights: any;\n /**\n * Information about the sharing status of the object\n */\n shares: any;\n /**\n * Information about the objects creation. Includes the date it was created and the user that created the object\n */\n created: any;\n /**\n * Information about the objects last modification. Includes the date it was modified and the user that modified the object\n */\n modified: any;\n /**\n * Flag indicating whether or not the object is locked. Locked objects are not allowed to be changed\n */\n lock: any;\n /**\n * The objects content (file). May be empty as dms objects can be created without contents\n */\n content: any;\n /**\n * The contents filename\n */\n contentFileName: string;\n /**\n * The contents filesize\n */\n contentFileSize: string;\n /**\n * List of subscriptions for the object\n */\n subscriptions: any[] = [];\n /**\n * List of resubmissions for the object\n */\n resubmissions: any[] = [];\n /**\n * Storage info of the object\n */\n storageInfo: any[] = [];\n /**\n * @ignore\n */\n additionalvisibility: any[] = [];\n\n\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new dms object instance\n */\n constructor(json: any) {\n\n // create a DmsObject based on the server JSON\n this.id = json.id;\n this.title = json.title;\n this.description = json.description;\n this.version = json.version;\n this.versions = json.versions;\n this.data = json.data;\n this.typeName = json.type;\n\n this.isActiveVersion = json.activeversion;\n this.isFinalized = json.finalized;\n this.isFavorite = json.favorite;\n this.isFolder = json.folder;\n this.isContextFolder = !!json.iscontextfolder;\n this.storageInfo = json.storageinfo;\n\n if (json.contents && json.contents[0]) {\n this.contentFileName = json.contents[0].path;\n this.contentFileSize = json.contents[0].size;\n }\n\n if (json.contextfolder) {\n this.contextFolder = {\n id: json.contextfolder.id,\n typeName: json.contextfolder.type,\n title: json.contextfolder.title,\n description: json.contextfolder.description\n };\n }\n\n if (json.created) {\n this.created = {\n on: json.created.on,\n by: {\n id: json.created.by.id,\n title: json.created.by.title,\n name: json.created.by.name\n }\n };\n }\n\n if (json.modified) {\n this.modified = {\n on: json.modified.on,\n by: {\n id: json.modified.by.id,\n title: json.modified.by.title,\n name: json.modified.by.name\n }\n };\n }\n\n // lock informations\n if (json.lock !== 'NOT_LOCKED' && json.lockinfo) {\n this.lock = {\n on: json.lockinfo.time,\n by: {\n me: json.lock === 'LOCKED_BY_SESSION_USER',\n other: json.lock === 'LOCKED_BY_OTHER_USER',\n name: json.lockinfo.username,\n label: json.lockinfo.usertitle\n }\n };\n }\n\n // rights section\n if (json.rights && json.rights.length > 0) {\n this.rights = {\n select: json.rights[0].privileges.select,\n edit: json.rights[0].privileges.edit && !(this.lock && this.lock.by.other),\n delete: json.rights[0].privileges.delete && !(this.lock && this.lock.by.other),\n finalize: json.rights[0].privileges.finalize && !(this.lock && this.lock.by.other),\n recycle: json.rights[0].privileges.recycle && !(this.lock && this.lock.by.other),\n share: json.rights[0].privileges.share && !(this.lock && this.lock.by.other),\n };\n } else {\n this.rights = {\n select: false,\n edit: false,\n delete: false,\n finalize: false,\n recycle: false,\n share: false\n };\n }\n\n if (json.shares) {\n this.shares = json.shares;\n }\n\n // content section\n if (json.contentid) {\n this.content = {\n id: json.contentid,\n type: json.contenttype,\n count: json.contentcount || 0,\n linked: json.contentid !== json.id,\n contents: json.contents\n };\n }\n\n if (json.subscriptions) {\n this.subscriptions = json.subscriptions;\n }\n\n if (json.resubmissions) {\n this.resubmissions = json.resubmissions;\n }\n\n if (json.additionalvisibility) {\n this.additionalvisibility = json.additionalvisibility;\n }\n }\n}\n","import {OrgUser} from './org.model';\n\n/**\n * Representation of a history entry for a dms object\n */\nexport class DmsObjectHistoryEntry {\n\n /**\n * Version of the dms object at the time the history entry was created\n */\n version: number;\n /**\n * The time the history entry was created\n */\n time: Date;\n /**\n * Entry's title\n */\n title: string;\n /**\n * Entry's description\n */\n description: string;\n /**\n * Entry's intent\n */\n intent?: string;\n /**\n * Custom comment applied to the entry\n */\n comment: string;\n /**\n * Group of the entry\n */\n group: 'PROCESS' | 'MODIFICATION' | 'INFORMATIONAL';\n /**\n * History entry's type\n */\n type: string;\n /**\n * Additional parameters for special (BPM related) types of entries\n */\n parameter?: {\n processId: string,\n processName: string,\n activityId?: string,\n activityName?: string,\n type: string\n };\n /**\n * If the history entry was created from a users activity (e.g. indexdata changes), this property\n * holds the user that caused the entry\n */\n user: OrgUser;\n\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new history entry instance\n */\n constructor(json: any) {\n this.version = json.version;\n this.time = json.time;\n this.title = json.title;\n this.description = json.description;\n this.intent = json.intent;\n this.comment = json.comment;\n this.group = json.group;\n this.type = json.type;\n this.user = json.user;\n\n if (json.parameter) {\n this.parameter = {\n ...json.parameter,\n processId: json.parameter.procId,\n processName: json.parameter.procName,\n activityId: json.parameter.actId,\n activityName: json.parameter.actName\n };\n }\n }\n}\n","import {tap, mergeMap, catchError, map} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {Observable, of} from 'rxjs';\nimport {DmsObject, DmsObjectAttachment} from '../../model/dms-object.model';\nimport {BackendService} from '../backend/backend.service';\nimport {SystemService} from '../system/system.service';\nimport {Utils} from '../../util/utils';\nimport {DmsObjectHistoryEntry} from '../../model/dms-object-history.model';\nimport {EnaioEvent} from '../events/events';\nimport {EventService} from '../events/event.service';\nimport {DmsParams} from './dmsParams.interface';\n\nexport enum SubscriptionMode {\n ONLY_INDEX_DATA_CHANGED = 'META',\n ONLY_DOCUMENT_CONTENT_CHANGED = 'CONTENT',\n DMS_OBJECT_CHANGED = 'BOTH'\n}\n\nexport const resolveObjectRights = [];\n\n/**\n * Collection of DMS Services\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DmsService {\n\n constructor(private backend: BackendService,\n private systemService: SystemService,\n private eventService: EventService) {\n }\n\n /**\n * Fetches a dms object.\n *\n * @param id Objects id\n * @param type Objects type name, will improve load time if provided\n * @param version Target version\n * @param intent Used for server side logging. If you provide an intent, the backend will recognize the request and add it to its logs\n * @param recyclebin If true, objects from recyclebin are included\n * @param withStorageInfo If true, storageinfo is included on the dms object\n * @returns Observable<DmsObject>\n */\n getDmsObject(id: string, type?: string, version?: number, intent?: string, recyclebin?: boolean, withStorageInfo?: boolean): Observable<DmsObject> {\n const uri = `/dms/${id}`;\n\n const q = {\n additionalvisibility: true,\n subscription: 'CURRENT',\n resubmission: 'CURRENT',\n rights: 'CURRENT',\n datameta: 'true',\n contextfolder: 'true',\n type,\n recyclebin,\n version,\n storageinfo: withStorageInfo,\n '_intent': intent\n };\n\n return this.backend\n .getViaTempCache(Utils.buildUri(uri, q))\n .pipe(\n catchError(Utils.catchSkip(err => err.status === 404)),\n map(res => this.resolveObjectTypes(new DmsObject(res)))\n );\n }\n\n /**\n * Getter for the DMS Objects by params\n *\n * @param DmsParams params\n * @returns Observable<DmsObject>\n */\n getDmsObjectByParams(params: DmsParams): Observable<DmsObject> {\n return this.getDmsObject(params.id, params.type, params.version, params.intent, params.recyclebin, params.withStorageInfo);\n }\n\n /**\n * Reolver of Object Types by DMS Object\n *\n * @param DmsObject dmsObject\n * @returns DmsObject\n */\n resolveObjectTypes(dmsObject: DmsObject): DmsObject {\n dmsObject.type = this.systemService.getObjectType(dmsObject.typeName);\n\n if (dmsObject.contextFolder) {\n dmsObject.contextFolder.type = this.systemService.getObjectType(dmsObject.contextFolder.typeName);\n }\n\n return resolveObjectRights.reduce((value, fn) => fn.call(this, value), dmsObject);\n }\n\n /**\n * Deletes a DMS object.\n * @param id The id of the dms object to be deleted.\n * @param type Type of object\n * @param hardDelete If object should really be deleted or only put into the recycle bin\n * @param force If object should be forced to be deleted, even if it is used inside of a process. Default: false\n */\n deleteDmsObject(id: string, type?: string, hardDelete?: boolean, force = false): Observable<any> {\n const url = `/dms/${id}`;\n const params = {};\n if (type && type.length > 0) {\n params['type'] = type;\n }\n if (hardDelete) {\n params['harddelete'] = hardDelete;\n }\n if (force) {\n params['forcedelete'] = force;\n }\n return this.backend.del(Utils.buildUri(url, params));\n }\n\n /**\n * Returns the context path of the given dms object\n * @param id The id of the object.\n * @returns The context path of the dms object\n */\n getContextPath(id: string) {\n return this.backend.get(`/dms/${id}/context`)\n .pipe(\n map(\n contextPath => {\n contextPath.forEach(pathItem => {\n pathItem.dmsobject = new DmsObject(pathItem.dmsobject);\n });\n return contextPath;\n }\n ));\n }\n\n /**\n * Fetches the children of a DmsObject.\n *\n * @param dmsObject\n * @returns Observable<DmsObject[]>\n */\n getChildren(dmsObject: DmsObject): Observable<DmsObject[]> {\n const uri = `/dms/${dmsObject.id}/children`;\n return this.backend.getViaTempCache(Utils.buildUri(uri, {type: dmsObject.type.name})).pipe(\n map((res: any[]) => {\n return res.map(r => this.resolveObjectTypes(new DmsObject(r)));\n }));\n }\n\n /**\n * Fetches the versions of a DmsObject.\n *\n * @param id\n * @param type\n * @returns Observable<DmsObject>\n */\n getVersions(id: string, type?: string): Observable<DmsObject> {\n const uri = `/dms/${id}/versions`;\n return this.backend.getViaTempCache(Utils.buildUri(uri, {type})).pipe(\n map((res: any) => {\n return new DmsObject(res);\n }));\n }\n\n /**\n * Fetches the attachments of a DmsObject.\n *\n * @param dmsObject\n * @returns Observable<DmsObjectAttachment[]>\n */\n getAttachments(dmsObject: DmsObject): Observable<DmsObjectAttachment[]> {\n const type = dmsObject.content?.type;\n const version = dmsObject.content?.linked ? -1 : dmsObject.version;\n const contentID = dmsObject.content?.id;\n const uri = Utils.buildUri(`/dms/${contentID}/attachments`, {type, version});\n return !contentID ? of([]) : this.backend.getViaTempCache(uri).pipe(\n catchError(Utils.catchSkip(err => err.status === 404)),\n map((res: any) => res.attachmentinfo && res.attachmentinfo.attachments ? res.attachmentinfo.attachments\n .map((a, i) => new DmsObjectAttachment(Object.assign(a, {id: i, previewUri: this.getAttachmentByIndex(contentID, i, type, version)}))) : []\n ));\n }\n\n /**\n * Fetches the specific attachment of a DmsObject.\n *\n * @param id\n * @param index\n * @param type\n * @param version\n * @returns string\n */\n getAttachmentByIndex(id: string, index: number, type: string, version?: number): string {\n const uri = Utils.buildUri(`/dms/${id}/attachments/${index}`, {type, version});\n return this.backend.getServiceBase() + uri;\n }\n\n /**\n * Generates the URI for getting a DmsObjects slide (Preview image).\n *\n * @param id Objects id\n * @param type Objects type name, will improve load time if provided\n * @param version Target version\n * @param size The size of the preview image in px\n * @returns string\n */\n getSlide(id: string, type?: string, version?: number, size?: number): string {\n return Utils.buildUri(\n this.backend.getServiceBase() + '/dms/' + id + '/slide',\n {\n type,\n version,\n height: size\n }\n );\n }\n\n /**\n * Generates the URI for getting a DmsObjects preview (PDF rendition).\n *\n * @param id Objects id\n * @param type Objects type name, will improve load time if provided\n * @param version Target version\n * @param rendition Target rendition (PDF)\n * @param recyclebin If true, objects from recyclebin are included\n * @returns string\n */\n getPreview(id: string, type?: string, version?: number, rendition?: string, recyclebin?: boolean): string {\n return Utils.buildUri(\n this.backend.getServiceBase() + '/dms/' + id + '/content',\n {\n rendition,\n type,\n version,\n recyclebin\n }\n );\n }\n\n /**\n * Updates an existing dms object.\n *\n * @param id ID of the object to be updated\n * @param indexdata Object holding the objects indexdata (property: value)\n * @param type The object type of the object to be updated\n * @param version The current version of the object to be updated\n * @param checkreferences If the reference fields should be validated or not\n * @returns Observable<DmsObject> The updated dms object\n */\n updateObject(id: string, indexdata: any, type?: string, version?: number, checkreferences?: boolean): Observable<DmsObject> {\n const url = Utils.buildUri(`/dms/${id}`, {type, version, checkreferences});\n return this.triggerUpdate(<any>{id, type, typeName: type}, this.backend.put(url, indexdata));\n }\n\n /**\n * Fetch the history (audit) of one dms object\n *\n * @param id ID of the dms object to fetch history for\n * @param type Type of the dms object to fetch history for\n * @param recyclebin If true, objects from recyclebin are included\n * @returns Observable<DmsObjectHistoryEntry[]> The history of the dms object\n */\n getHistory(id: string, type?: string, recyclebin?: boolean): Observable<DmsObjectHistoryEntry[]> {\n const uri = `/dms/${id}/audit`;\n return this.backend.getJson(Utils.buildUri(uri, {type: type, recyclebin: recyclebin})).pipe(map((res) => res.audit.map((auditEntry) => new DmsObjectHistoryEntry(auditEntry))));\n }\n\n /**\n * Restores an earlier version of the selected DmsObject by adding the earlier version\n * as the new recent version.\n *\n * @param id DMS object id\n * @param version The version to be restored\n * @param type The dms object type\n * @return\n */\n restoreVersion(id: string, version: number, type?: string) {\n const uri = `/dms/restoreversion/${id}/${version}`;\n return this.backend.post(Utils.buildUri(uri, {type: type}), null);\n }\n\n /**\n * Restores File\n * @param id DMS object id\n * @param type The dms object type\n * @param userId user id\n * @return\n */\n restore(id: string, userId: string, type?: string) {\n const uri = `/dms/restore/${id}?userid=${userId}`;\n return this.backend.put(uri);\n }\n\n /**\n * if dmsObject is specified, load latest version and trigger Enaio event DMS_OBJECT_UPDATED\n *\n * @param dmsObject\n * @param request\n * @return\n */\n triggerUpdate(dmsObject: DmsObject, request: Observable<any>) {\n return !dmsObject ? request : request.pipe(\n mergeMap(() => this.getDmsObject(dmsObject.id, dmsObject.typeName)),\n tap(_dmsObject => this.eventService.trigger(EnaioEvent.DMS_OBJECT_UPDATED, _dmsObject)));\n }\n\n /**\n * Remove Content\n *\n * @param DmsObject dmsObject\n * @returns Observable<any>\n */\n removeContent(dmsObject: DmsObject) {\n const uri = `/dms/${dmsObject.id}/content`;\n return this.triggerUpdate(dmsObject, this.backend.del(uri));\n }\n\n /**\n * Creates a new DmsObject.\n * @param targetType Target object type name\n * @param file File to be added as DmsObjects content\n * @param indexData Indexdata as plain object where keys are the objects properties and values the values to be applied to it\n * @param parent Parent context folder of the new DmsObject\n */\n createDmsObject(targetType: string, file?: File, indexData?: any, parent?: {id: string, type?: string}): Observable<{id: string, uri: string}> {\n\n const formData = new FormData();\n if (indexData) {\n formData.append('data', new Blob([JSON.stringify(indexData)], {\n type: 'application/json'\n }));\n } else {\n formData.append('noindexdata', '');\n }\n\n if (file) {\n formData.append('files[]', file, Utils.encodeFileName(file.name));\n }\n\n let uri = `/dms/create/${targetType}`;\n if (parent) {\n uri = Utils.buildUri(uri, {\n parentId: parent.id,\n parentType: parent.type\n });\n }\n return this.backend.postMultiPart(uri, formData, null, {headers: {}});\n }\n\n /**\n * Create a Subscription\n *\n * @param DmsObject dmsObject\n * @param string subject\n * @param receiver\n * @param boolean sendemail\n * @param boolean onlyemail\n * @param mode SubscriptionMode\n * @returns Observable<any>\n */\n createSubscription(dmsObject: DmsObject, subject: string, receiver, sendemail: boolean, onlyemail: boolean, mode?: SubscriptionMode) {\n const uri = `/dms/subscription/${dmsObject.id}`;\n return this.triggerUpdate(dmsObject, this.backend.post(Utils.buildUri(uri, {\n subject,\n type: dmsObject.typeName,\n receiver,\n sendemail,\n onlyemail,\n mode\n }), {})\n );\n\n }\n\n /**\n * Create a Resubmission\n *\n * @param DmsObject dmsObject\n * @param string subject\n * @param due\n * @param receiver\n * @param boolean sendEmail\n * @param boolean onlyEmail\n * @returns Observable<any>\n */\n createResubmission(dmsObject: DmsObject, subject: string, due, receiver, sendEmail: boolean, onlyEmail: boolean) {\n const uri = `/dms/resubmission/${dmsObject.id}`;\n return this.triggerUpdate(dmsObject, this.backend.post(Utils.buildUri(uri, {\n subject,\n type: dmsObject.typeName,\n receiver,\n due: due ? due.toISOString() : '',\n sendemail: sendEmail,\n onlyemail: onlyEmail\n }), {})\n );\n }\n\n /**\n * Reamove a Subscription by a given Id\n *\n * @param subscriptionId\n * @param DmsObject dmsObject\n * @returns Observable<any>\n */\n removeSubscriptionById(subscriptionId, dmsObject?: DmsObject) {\n return this.triggerUpdate(dmsObject, this.backend.del(`/messageprovider/subscription/${subscriptionId}`));\n }\n\n /**\n * Remove a Resubmission by a given Id\n *\n * @param itemId\n * @param DmsObject dmsObject\n * @returns Observable<any>\n */\n removeResubmissionsById(itemId, dmsObject?: DmsObject) {\n return this.triggerUpdate(dmsObject, this.backend.del(`/dms/resubmission/${itemId}`));\n }\n\n /**\n * Update a Resubmission\n *\n * @param DmsObject dmsObject\n * @param string subject\n * @param due\n * @param receiver\n * @param boolean sendEmail\n * @param boolean onlyEmail\n * @returns Observable<any>\n */\n updateResubmission(dmsObject: DmsObject, subject: string, due, receiver, sendEmail: boolean, onlyEmail: boolean) {\n return this.removeResubmissionsById(dmsObject.id).pipe(mergeMap(() => {\n return this.createResubmission(dmsObject, subject, due, receiver, sendEmail, onlyEmail);\n }));\n }\n\n /**\n * Shares a dms object (and its children) with certain users\n * @param dmsObject The dms object to be shared\n * @param shareWith Array of organization objects to share the object with. Each entry\n * will have the ID of the target organization object as well as an optional param\n * whether or not to also share the dms objects children.\n * @returns Observable being resolved once the request is done\n */\n share(dmsObject: DmsObject, shareWith: {id: string, shareChildren?: boolean}[]): Observable<any> {\n return this.triggerUpdate(\n dmsObject,\n this.backend.put(\n `/dms/${dmsObject.id}/share`,\n {\n shares: shareWith.map(i => ({\n organizationobject: i.id,\n sharechildren: !!i.shareChildren\n }))\n }\n ));\n }\n\n /**\n * Move a DMS Object\n *\n * @param id\n * @param typeName\n * @param parentId\n * @param parentTypeName\n * @returns Observable<any>\n */\n move(id, typeName, parentId, parentTypeName) {\n const uri = `/dms/location/${id}`;\n return this.backend.post(Utils.buildUri(uri, {\n type: typeName,\n parentId,\n parentType: parentTypeName\n }), {});\n }\n\n /**\n * Copy a DMS Object\n *\n * @param id\n * @param typeName\n * @param parentId\n * @param parentTypeName\n * @param createContentLink\n * @returns Observable<any>\n */\n copy(id, typeName, parentId, parentTypeName, createContentLink) {\n const uri = `/dms/copy/${id}`;\n return this.backend.post(Utils.buildUri(uri, {\n type: typeName,\n parentId,\n parentType: parentTypeName,\n createcontentlink: createContentLink\n }), {});\n }\n\n /**\n * Set a DMS Object to Finilited\n *\n * @param DmsObject item\n * @returns Observable<any>\n */\n finalize(item: DmsObject) {\n const url = '/dms/finalize/' + item.id + '?type=' + item.typeName;\n return this.triggerUpdate(item, this.backend.put(url));\n }\n\n /**\n * Remove the Finilized Flag from a DMS Object\n *\n * @param DmsObject item\n * @returns Observable<any>\n */\n definalize(item: DmsObject) {\n const url = '/dms/definalize/' + item.id + '?type=' + item.typeName;\n return this.triggerUpdate(item, this.backend.put(url));\n }\n\n createLocalCopyOfDMSObject(dmsObject: DmsObject): DmsObject {\n const base = {\n id: dmsObject.id,\n title: dmsObject.title,\n description: dmsObject.description,\n version: dmsObject.version,\n versions: dmsObject.versions,\n data: dmsObject.data,\n type: dmsObject.typeName,\n\n activeversion: dmsObject.isActiveVersion,\n finalized: dmsObject.isFinalized,\n favorite: dmsObject.isFavorite,\n folder: dmsObject.isFolder,\n iscontextfolder: dmsObject.isContextFolder,\n\n contextfolder: dmsObject.contextFolder ? {\n id: dmsObject.contextFolder.id,\n type: dmsObject.contextFolder.typeName,\n title: dmsObject.contextFolder.title,\n description: dmsObject.contextFolder.description\n } : null,\n\n created: dmsObject.created,\n modified: dmsObject.modified,\n\n lock: !dmsObject.lock ? 'NOT_LOCKED' : dmsObject.lock.by.me ? 'LOCKED_BY_SESSION_USER' : 'LOCKED_BY_OTHER_USER',\n lockinfo: dmsObject.lock ? {username: dmsObject.lock.by.name, usertitle: dmsObject.lock.by.label, time: dmsObject.lock.on} : null,\n\n rights: [{\n privileges: {\n select: dmsObject.rights.select,\n edit: dmsObject.rights.edit,\n delete: dmsObject.rights.delete,\n finalize: dmsObject.rights.finalize,\n recycle: dmsObject.rights.recycle\n }\n }],\n shares: dmsObject.shares,\n contentid: dmsObject.content ? dmsObject.content.id : null,\n contenttype: dmsObject.content ? dmsObject.content.type : null,\n contentcount: dmsObject.content ? dmsObject.content.count : null,\n contents: dmsObject.content ? dmsObject.content.contents : null,\n\n subscriptions: dmsObject.subscriptions,\n resubmissions: dmsObject.resubmissions,\n additionalvisibility: dmsObject.additionalvisibility\n };\n\n let copiedDmsObject = new DmsObject(base);\n copiedDmsObject.type = dmsObject.type;\n\n return copiedDmsObject;\n }\n\n}\n","import {Injectable} from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\n\n/**\n * Wrapper for Toastr Service\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class NotificationsService {\n\n /**\n * Default Notofication Options\n *\n */\n private options: any = {\n closeButton: true,\n positionClass: 'toast-bottom-right',\n timeOut: 15000\n };\n\n constructor(private toastrService: ToastrService) {\n }\n\n /**\n * Show info colored massage (blue)\n *\n * @param string title\n * @param string msg\n */\n info(title: string, msg?: string) {\n this.toast(title, msg);\n }\n\n /**\n * Show confirm colored massage (blue)\n *\n * @param string title\n * @param string msg\n * @param onAdd\n * @param onRemove\n */\n confirm(title: string, msg?: string, onAdd?: any, onRemove?: any) {\n this.toast(title, msg, 'confirm', {onAdd, onRemove, timeOut: 7000});\n }\n\n /**\n * Show success colored massage (green)\n * @param string title\n * @param string msg\n */\n success(title: string, msg?: string) {\n this.toast(title, msg, 'success');\n }\n\n /**\n * can not be in use\n *\n * @param string title\n * @param string msg\n */\n wait(title: string, msg?: string) {\n this.toast(title, msg, 'wait');\n }\n\n /**\n * Show error colored massage (red)\n *\n * @param string title\n * @param string msg\n */\n error(title: string, msg?: string) {\n this.toast(title, msg, 'error', {\n closeButton: true,\n timeOut: 7000\n });\n }\n\n /**\n * Show warning colored massage (yellow)\n *\n * @param string title\n * @param string msg\n */\n warning(title: string, msg?: string) {\n this.toast(title, msg, 'warning');\n }\n\n /**\n * Public wrapper for accessing the Toastr\n *\n * @param string title\n * @param string msg\n * @param string mode\n * @param _options\n */\n private toast(title: string, msg: string, mode?: string, _options?: {}) {\n let options: any = Object.assign({}, this.options, _options);\n // options.title = title || '';\n // options.msg = msg || '';\n this.doToast(msg, title, options, mode);\n }\n\n /**\n * Accessing the toastr service\n *\n * @param string msg\n * @param string title\n * @param options\n * @param string mode\n */\n private doToast(msg: string, title: string, options: any, mode?: string) {\n switch (mode) {\n case 'success': {\n this.toastrService.success(msg, title, options);\n break;\n }\n // case 'wait': {\n // this.toastrService.wait(msg, title, options);\n // break;\n // }\n case 'error': {\n this.toastrService.error(msg, title, options);\n break;\n }\n case 'warning': {\n this.toastrService.warning(msg, title, options);\n break;\n }\n case 'confirm': {\n this.toastrService.info(msg, title, options);\n break;\n }\n default: {\n this.toastrService.info(msg, title, options);\n }\n }\n }\n}\n","import {HttpResponse} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport * as FileSaver from 'file-saver';\nimport {Observable} from 'rxjs';\nimport {map, tap} from 'rxjs/operators';\nimport {ObjectType} from '../../model/object-type.model';\nimport {RangeValue} from '../../model/range-value.model';\nimport {Utils} from '../../util/utils';\nimport {BackendService} from '../backend/backend.service';\nimport {Config} from '../config/config.service';\nimport {SystemService} from '../system/system.service';\nimport {SearchFilterType} from './search-filter-type.interface';\nimport {\n FieldDefinition,\n SearchFilter,\n SearchQuery,\n SearchResult,\n SearchState\n} from './search-query.model';\n\n/**\n * Collection of Search Services\n * See {@link SearchQuery} for Query Definition\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class SearchService {\n constructor(\n private system: SystemService,\n private backend: BackendService,\n private config: Config\n ) {}\n\n /**\n * Creates a RangeValue instance from the given value object.\n *\n * @param value The object to be\n * @returns RangeValue\n */\n public static toRangeValue(value: any): RangeValue {\n if (value) {\n if (value instanceof RangeValue) {\n return value;\n } else if (\n value.hasOwnProperty('operator') &&\n value.hasOwnProperty('firstValue')\n ) {\n return new RangeValue(\n value.operator,\n value.firstValue,\n value.secondValue\n );\n }\n }\n return value;\n }\n\n /**\n * Creates a fromated search Query\n *\n * @param query\n * @returns SearchQuery\n */\n public buildQuery(query: any): SearchQuery {\n let q: SearchQuery;\n if (query instanceof SearchQuery) {\n q = query;\n } else {\n let qObj;\n /**\n * if we got a string, we'll assume that it's a JSON\n */\n if (typeof query === 'string') {\n qObj = JSON.parse(query);\n } else {\n qObj = query;\n }\n\n q = new SearchQuery();\n q.term = qObj.term;\n if (qObj.filters) {\n Object.keys(qObj.filters).forEach(k => {\n q.filters.push(\n new SearchFilter(\n k,\n qObj.filters[k].o,\n qObj.filters[k].v1,\n qObj.filters[k].v2\n )\n );\n });\n }\n if (qObj.types) {\n qObj.types.forEach(t => {\n if (this.system.getObjectType(t)) {\n q.types.push(this.system.getObjectType(t));\n } else {\n q.types.push(t);\n }\n });\n }\n if (qObj.contextfoldertypes) {\n qObj.contextfoldertypes.forEach(t => {\n if (t === 'sysroot') {\n // 'sysroot' is not a real object type, so we have to create a fake type.\n const sysrootFakeObjectType = new ObjectType({\n id: 'a',\n folder: true,\n name: 'sysroot',\n qname: 'sysroot',\n label: 'sysroot',\n iscontextfolder: true,\n abstract: false,\n elements: [],\n description: '',\n shareable: false,\n minfiles: 0,\n maxfiles: 1\n });\n q.contextFolderTypes.push(sysrootFakeObjectType);\n } else {\n q.contextFolderTypes.push(this.system.getObjectType(t));\n }\n });\n }\n q.fields = qObj.fields;\n if (qObj.options) {\n q.suggest = qObj.options.suggest || false;\n q.expertMode = qObj.options.expertmode || false;\n q.scope = qObj.options.scope;\n // \"||\" does not work for recognizing \"false\" with priority over \"default true\"\n q.resolveReference = (qObj.options.resolvereference !== null) ? qObj.options.resolvereference :\n ( qObj.options.resolveReference !== null ? qObj.options.resolveReference : true);\n // withContext was old and \"wrong\" name of parameter\n q.withContext = qObj.options.withcontext || qObj.options.withContext || false;\n q.searchMode =\n qObj.options.searchmode || SearchQuery.DEFAULT_SEARCH_MODE;\n }\n }\n\n return q;\n }\n\n /**\n * Executes a query.\n *\n * @param query The query to be executed\n * @returns Observable<SearchResult>\n */\n public search(query: SearchQuery): Observable<SearchResult> {\n return this.executeQuery(query.getQueryJson()).pipe(\n map(res => this.createResultFromResponse(res))\n );\n }\n\n /**\n * Retrieve Search results\n */\n public getSearchState(query: any): Observable<SearchState> {\n\n if (query instanceof SearchQuery) {\n query = query.getQueryJson();\n }\n delete query.name;\n return this.executeQuery(query, true).pipe(\n map((res: any) => {\n const state = new SearchState();\n state.count = res.hits.total;\n Object.keys(SearchQuery.BASE_PARAMS).forEach(k => {\n const baseParam = SearchQuery.BASE_PARAMS[k];\n const aggregations = res.aggregations[baseParam]\n ? res.aggregations[baseParam].buckets\n : [];\n aggregations.forEach(aggregation => {\n let {key, doc_count, contextfoldertype} = aggregation;\n if (baseParam === 'filesize') {\n doc_count = aggregation['filter#documents'].doc_count;\n }\n state.addAggregations(baseParam, key, doc_count, aggregation);\n /**\n * type aggregations may also contain buckets for their context types\n */\n if (\n baseParam === SearchQuery.BASE_PARAMS.TYPE &&\n contextfoldertype\n ) {\n contextfoldertype.buckets.forEach(ctxAgg => {\n state.addAggregations(\n 'contexttype',\n ctxAgg.key,\n ctxAgg.doc_count,\n ctxAgg\n );\n });\n }\n });\n });\n\n return state;\n })\n );\n }\n\n /**\n * Fetches a part of a queries result. This can be used for paging of results\n * or lazy loading large results.\n *\n * @param query The query to be executed\n * @param fromIndex The index from where to fetch results\n * @param chunkSize Size of the chunk to be fetched\n * @returns Observable<SearchResult>\n */\n public getChunkedResult(\n query: SearchQuery,\n fromIndex: number,\n chunkSize: number\n ): Observable<SearchResult> {\n const q = query.getQueryJson();\n\n q.from = fromIndex;\n const queryUri = `search!chunk:${chunkSize}!${JSON.stringify(q)}`;\n return this.backend.getViaTempCache(queryUri, () =>\n this.executeQuery(q, false, chunkSize).pipe(\n map(res => this.createResultFromResponse(res))\n )\n );\n }\n\n /**\n * Executes a query\n *\n * @param queryJson The query JSON to be executed\n * @param aggregateSearch Flag indicating whether or not to execute an aggregation search (no actual results)\n * @param customSize Custom number of results to be fetched, if not set the default size will be applied\n * @returns Observable<any>\n */\n public executeQuery(\n queryJson: any,\n aggregateSearch?: boolean,\n customSize?: number\n ): Observable<any> {\n let uri: string;\n let query = queryJson;\n if (aggregateSearch) {\n uri = `/aggregate`;\n } else {\n const size = customSize || this.config.getRaw('search.limit');\n uri = `/?size=${size}`;\n }\n query.options = {...query.options, tracktotalhits: this.config.getRaw('search.trackTotalHits') || false, timezone: Utils.getTimezoneOffset()};\n\n return this.backend.getViaTempCache(uri + JSON.stringify(query), () => this.backend.post(uri, query, this.backend.getSearchBase()));\n }\n\n /**\n * Downloads a csv-file of the results of a given search-query\n *\n * @param queryJson The query JSON to be executed\n * @returns Observable<any>\n */\n public downloadCsvFromQuery(queryJson: object): Observable<any> {\n return this.backend\n .post('/export', queryJson, this.backend.getSearchBase(), {\n observe: 'response',\n responseType: 'blob'\n })\n .pipe(\n tap(res => {\n const blob = new Blob([res.body], {\n type: 'text/csv;charset=utf-8'\n });\n FileSaver.saveAs(blob, this.getFileNameFromHttpResponse(res), {autoBom: true});\n })\n );\n }\n\n private getFileNameFromHttpResponse(res: HttpResponse<any>) {\n const contentDispositionHeader =\n res.headers.get('Content-Disposition') || '';\n return contentDispositionHeader.split('filename=')[1];\n }\n\n /**\n * Executes a search for fetching suggestions on a given search term.\n *\n * @param term The search term\n * @return\n */\n public autocomplete(term: string) {\n return this.backend.getJson(\n `/autocomplete?prefix=${encodeURIComponent(term)}`,\n this.backend.getSearchBase()\n );\n }\n\n /**\n * Use this method to create a SearchFilter for a form element. Based on the target types\n * it'll create the right kind of filter that you then can add to a SearchQuery\n *\n * @param targetTypes\n * @param formElementName\n * @param elementValue\n * @returns SearchFilter[] An array of search filters most of the time containing only one entry, but\n * for table elements this could be more\n */\n public getSearchFilter(\n targetTypes: ObjectType[],\n formElementName: string,\n elementValue: any\n ): SearchFilter[] {\n const filter: SearchFilter[] = [];\n const filterType: SearchFilterType = this.identifySearchFilter(\n targetTypes,\n formElementName\n );\n const formElement = targetTypes[0].elements.find(el => el.qname === formElementName);\n\n if (elementValue === null) {\n filter.push(\n new SearchFilter(formElementName, SearchFilter.OPERATOR.EQUAL, null)\n );\n } else if (formElement && formElement.classification === 'path') {\n filter.push(\n new SearchFilter(\n formElementName,\n SearchFilter.OPERATOR.MATCH,\n elementValue\n )\n );\n } else if (elementValue instanceof RangeValue) {\n /**\n * create filter for elements that support ranges like DATETIME and NUMBER\n */\n if (\n elementValue.firstValue !== null &&\n elementValue.firstValue !== undefined\n ) {\n filter.push(\n new SearchFilter(\n formElementName,\n elementValue.operator,\n elementValue.firstValue,\n elementValue.secondValue,\n filterType.datetime ? {time: filterType.withtime} : undefined\n )\n );\n }\n } else if ((filterType.multiselect || Array.isArray(elementValue)) && !filterType.table) {\n /**\n * create filter for multiselect elements like CODESYSTEM and ORGANIZATION\n */\n if (Array.isArray(elementValue) && elementValue.length) {\n filter.push(\n new SearchFilter(\n formElementName,\n SearchFilter.OPERATOR.IN,\n elementValue\n )\n );\n }\n } else if (filterType.table) {\n /**\n * create filter(s) for table elements\n */\n const queryRow = elementValue[0];\n Object.keys(queryRow).forEach(function (key) {\n if(queryRow[key] !== undefined){\n const propertyName = `${formElementName}.${key}`;\n if (queryRow[key] instanceof RangeValue) {\n filter.push(\n new SearchFilter(\n propertyName,\n queryRow[key].operator,\n queryRow[key].firstValue,\n queryRow[key].secondValue\n )\n );\n } else {\n filter.push(\n new SearchFilter(\n propertyName,\n Array.isArray(queryRow[key]) ? SearchFilter.OPERATOR.IN : SearchFilter.OPERATOR.EQUAL,\n queryRow[key]\n )\n );\n }\n }\n });\n } else {\n /**\n * default will use equality operator\n */\n filter.push(\n new SearchFilter(\n formElementName,\n SearchFilter.OPERATOR.EQUAL,\n elementValue\n )\n );\n }\n return filter;\n }\n\n /**\n * identifies form elements that are enabled to contain multiple values\n * try to find the form element inside of the provided object types to get its type\n *\n * @param ObjectType[] targetTypes\n * @param string formElementName\n * @return SearchFilterType\n */\n private identifySearchFilter(\n targetTypes: ObjectType[],\n formElementName: string\n ): SearchFilterType {\n let i = 0;\n let match;\n while (!match && i < targetTypes.length) {\n match = targetTypes[i].elements.find(\n element => element.qname === formElementName\n );\n i++;\n }\n\n return {\n multiselect: this.isMultiselectSearchFilter(match),\n table: match && match.type === 'TABLE',\n datetime: match && match.type === 'DATETIME',\n withtime: match && match.withtime\n };\n }\n\n /**\n * identifies form elements that are enabled to contain multiple values\n *\n * @param formElement\n * @return boolean\n */\n private isMultiselectSearchFilter(formElement: any): boolean {\n return (\n formElement &&\n (formElement.type === 'ORGANIZATION' ||\n formElement.type === 'CODESYSTEM' ||\n // ...\n (formElement.type === 'STRING' &&\n formElement.classification === 'selector') ||\n // multiselect reference fields\n (formElement.type === 'STRING' && formElement.multiselect))\n );\n }\n\n /**\n * Creates a SearchResult from the response sent by the server\n *\n * @param backendResponse Server response\n * @returnThe SearchResult SearchResult object created from the server response\n */\n public createResultFromResponse(backendResponse): SearchResult {\n const result = new SearchResult();\n result.suggests = backendResponse.suggest;\n result.fields = backendResponse.config;\n\n /**\n * use hits _id field as id property, because otherwise empty result hits would not contain an id\n */\n const hits = backendResponse.hits.hits.map(h => ({\n ...h._source,\n id: h._id,\n ...(h.snippets && {snippets: h.snippets}),\n // having requested a resolved reference (options) we also pass `_reference` in the result item\n ...(h.references && {_references: h.references}),\n ...(h.context && {context: h.context})\n }));\n\n result.count = backendResponse.hits.total;\n result.hits = hits || [];\n return result;\n }\n\n /**\n * Provides the Resul tField Definition Config\n *\n * @param SearchQuery query\n * @return ({type: ObjectType; contextType: ObjectType})\n */\n getResultFieldDefinitionConfig(query: SearchQuery) {\n const type = (query.types || []).length === 1 ? query.types[0] : null;\n const contextType =\n (query.contextFolderTypes || []).length === 1\n ? query.contextFolderTypes[0]\n : null;\n return {type, contextType};\n }\n\n private resolveConfigTypeNames(\n type: ObjectType | null,\n contextType: ObjectType | null\n ) {\n return {\n typeName: type ? type.qname : 'sysobject',\n contextTypeName: type && contextType ? contextType.qname : undefined\n };\n }\n\n /**\n * Fetches the result field definition for a given object type\n * USER: (default) the result list configuration saved by the current user\n * DEFAULT: the default result list configuration (also returned when there is no user configuration)\n * ALL: all available result fields for the given type (and context)\n *\n * @param ObjectType | null type The object type\n * @param ObjectType | null contextType Object type target types allowed context type\n * @param mode The result lists configuration mode:\n * @return Observable<FieldDefinition>\n */\n fetchResultFieldDefinition(\n type: ObjectType | null,\n contextType: ObjectType | null,\n mode\n ) {\n const {typeName, contextTypeName} = this.resolveConfigTypeNames(\n type,\n contextType\n );\n const url = Utils.buildUri(`/user/config/result/${typeName}`, {\n contexttype: contextTypeName,\n mode\n });\n return this.backend\n .getJson(url)\n .pipe(\n map(\n (res: any) =>\n new FieldDefinition(\n res.elements,\n res.sortorder,\n res.grouporder,\n res.pinned,\n res.alignmentx,\n res.mode\n )\n )\n );\n }\n\n /**\n * Saves a column definition as result or common result.\n *\n * @param ObjectType | null type The object type\n * @param ObjectType | null contextType Object type target types allowed context type\n * @param FieldDefinition data The result list configuration to be persisted\n * @param boolean common Flag enables to set config as default / common result\n * @return Observable<any>\n */\n saveResultFieldDefinition(\n type: ObjectType | null,\n contextType: ObjectType | null,\n data: FieldDefinition,\n common = false\n ) {\n const baseUri = common\n ? '/user/config/commonresult/'\n : '/user/config/result/';\n const {typeName, contextTypeName} = this.resolveConfigTypeNames(\n type,\n contextType\n );\n const url = Utils.buildUri(baseUri + typeName, {\n contexttype: contextTypeName\n });\n return this.backend.post(url, data);\n }\n\n /**\n * Removes a column definition.\n *\n * @param ObjectType | null type The object type\n * @param ObjectType | null contextType Object type target types allowed context type\n * @return Observable<any>\n */\n removeResultFieldDefinition(\n type: ObjectType | null,\n contextType: ObjectType | null\n ) {\n const {typeName, contextTypeName} = this.resolveConfigTypeNames(\n type,\n contextType\n );\n const url = Utils.buildUri(`/user/config/result/${typeName}`, {\n contexttype: contextTypeName\n });\n return this.backend.del(url);\n }\n\n /**\n * Gets the value to be added to a form element by extracting it from a\n * search filter. The kind of value differs based on the form elements type.\n *\n * @param filter The filter to extract value from\n * @param formElementType Form elements type ('STRING', 'DATE', 'CODESYSTEM', ...)\n * @returns the extracted value\n */\n filterToElementValue(filter: SearchFilter, formElementType: string) {\n let value = undefined;\n if (filter) {\n // types that support ranges\n if ((formElementType === 'NUMBER' || formElementType === 'DATETIME') && filter.firstValue) {\n value = new RangeValue(\n filter.operator,\n filter.firstValue,\n filter.secondValue\n );\n } else {\n value = filter.firstValue;\n }\n }\n return value;\n }\n\n /**\n * Creates a table value by extracting the data from the corresponding\n * search filters.\n *\n * @param filters The filters to extract value from\n * @param tableElements the form elements of the table\n * @returns the table value extracted from all filters\n */\n tableFiltersToElementValue(filters: SearchFilter[], tableElements){\n let value = {};\n filters.forEach(f => {\n let key = tableElements.find(e => e.qname === f.property).name;\n let type = tableElements.find(e => e.qname === f.property).type;\n value[key] = this.filterToElementValue(f, type);\n });\n return [value];\n }\n}\n","import {SearchQuery} from '../search/search-query.model';\n\n/**\n * @ignore\n * Interface for the data used for backend communication.\n * This is the kind of data we'll get from the server and we\n * have to provide when sending stored queries to the server.\n */\nexport interface IStoredQuery {\n id: string;\n name: string;\n query: string;\n favorite?: boolean;\n shared?: boolean;\n user?: string;\n version?: number;\n roles?: string[];\n parameter?: string[];\n}\n\n/**\n * @ignore\n * Interface for dynamic parameter properties.\n * Form elements will be transformed to this format to save only\n * required properties\n */\nexport interface IStoredQueryParam {\n qname: string;\n type: string;\n}\n\n/**\n * Stored query is an extension of a SearchQuery. It adds properties like\n * name and a list of dynamic filter properties and the ability to generate\n * an object from its properties that could be pwersisted on the backend side.\n */\nexport class StoredQuery extends SearchQuery {\n\n /**\n * temporary id for new stored queries\n */\n static ID_NEW = 'new';\n\n id: string;\n name: string;\n favorite: boolean;\n shared: boolean;\n /**\n * the username of the user that created this query\n */\n user: string;\n version: number;\n roles: string[];\n parameter: IStoredQueryParam[];\n\n get title() {\n return this.name || '';\n }\n\n constructor(item?: IStoredQuery) {\n super();\n if (!item) {\n this.id = StoredQuery.ID_NEW;\n this.parameter = [];\n } else {\n this.id = item.id;\n this.name = item.name;\n this.favorite = item.favorite;\n this.shared = item.shared;\n this.user = item.user;\n this.version = item.version;\n this.roles = item.roles || [];\n this.parameter = [];\n /**\n * parameters contain meta data for the dynamic fields of the stored query\n * the values of those fields (if set) are part of the queries filters\n */\n if (item.parameter && item.parameter.length > 0) {\n for (let p of item.parameter) {\n try {\n const pObj = JSON.parse(p);\n const param: IStoredQueryParam = {\n qname: pObj.qname,\n type: pObj.type,\n };\n this.parameter.push(param);\n } catch (e) {\n console.error('Failed parsing stored query parameter', e);\n }\n }\n }\n }\n }\n\n /**\n * Adds the properties of a SearchQuery to the current StoredQuery instance.\n * This is used when loading stored queries from the search service and when you\n * want to create a StoredQuery from a SearchQuery.\n * skip `fields` and `sortOptions` properties as they make no sense for stored queries\n *\n * @param searchQuery The search query to copy properties from\n */\n public setQuery(searchQuery: SearchQuery) {\n this.term = searchQuery ? searchQuery.term : '';\n this.types = searchQuery ? searchQuery.types : [];\n this.contextFolderTypes = searchQuery ? searchQuery.contextFolderTypes : [];\n this.filters = searchQuery ? searchQuery.filters : [];\n this.suggest = searchQuery ? searchQuery.suggest : false;\n this.expertMode = searchQuery ? searchQuery.expertMode : false;\n this.scope = searchQuery ? searchQuery.scope : null;\n this.searchMode = searchQuery ? searchQuery.searchMode : 'idx';\n }\n\n /**\n * Convert IStoredQueryParam objects to array of strings\n *\n * @returns IStoredQuery\n */\n toPersistableStoredQuery(): IStoredQuery {\n\n const stringParameter = [];\n this.parameter.forEach(p => stringParameter.push(JSON.stringify(p)));\n\n return {\n id: this.id,\n name: this.name,\n favorite: this.favorite,\n shared: this.shared,\n user: this.user,\n version: this.version,\n roles: this.roles,\n parameter: stringParameter,\n query: JSON.stringify(this.getQueryJson())\n };\n }\n\n /**\n * Check if Query is new or allready Stored\n *\n * @returns boolean\n */\n isNew(): boolean {\n return this.id === StoredQuery.ID_NEW;\n }\n}\n","import {tap, map} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {Observable, BehaviorSubject} from 'rxjs';\nimport {BackendService} from '../backend/backend.service';\nimport {SystemService} from '../system/system.service';\nimport {StoredQueriesSubscription} from './stored-queries-subscription.interface';\nimport {StoredQuery} from './stored-query.model';\nimport {SearchService} from '../search/search.service';\nimport {EventService} from '../events/event.service';\nimport {EnaioEvent} from '../events/events';\n\n/**\n * Service managing stored queries.\n * To use it just call `getStoredQueries$` which will return the current\n * state of the list of stored queries. This one is a long term observable, so bare in mind\n * to unsubscribe from it when you don't need it any more (or your component gets destroyed).\n *\n * Every change to the list of stored queries is done using this service. So don't change the\n * retrieved list locally inside of your component. Otherwise other components that subscribe\n * to the stored query list will not be notified.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class StoredQueriesService {\n\n /**\n * Temporary ID for new stored queries\n */\n static ID_NEW = StoredQuery.ID_NEW;\n /**\n * qname of fulltext params\n */\n static FULLTEXT = 'fulltext';\n\n private storedQueries: StoredQueriesSubscription = {\n queries: []\n };\n private storedQueriesSource = new BehaviorSubject<StoredQueriesSubscription>(this.storedQueries);\n /**\n * Stream of stored queries\n */\n public storedQueries$: Observable<StoredQueriesSubscription> = this.storedQueriesSource.asObservable();\n\n /**\n * @ignore\n */\n constructor(private backend: BackendService,\n private system: SystemService,\n private searchService: SearchService,\n private eventService: EventService) {\n\n eventService\n .on(EnaioEvent.LOGOUT)\n .subscribe(() => this.clear());\n }\n\n /**\n * Clear list of stored queries.\n */\n clear() {\n this.storedQueries = {queries: []};\n this.storedQueriesSource.next(this.storedQueries);\n }\n\n /**\n * Provides you with a `long term observable` holding the stored queries.\n */\n getStoredQueries$(): Observable<StoredQueriesSubscription> {\n if (!this.storedQueries.queries.length) {\n this.refreshStoredQueries();\n }\n return this.storedQueries$;\n }\n\n /**\n * Will re-fetch the data from the backend. This will propagate a\n * new value to your subscription.\n */\n refreshStoredQueries(): void {\n this.backend\n .getJson('/storedqueries?size=9999', this.backend.getSearchBase())\n .pipe(\n map(sQueries => {\n return (sQueries || [])\n .map(s => {\n let sq = new StoredQuery(s);\n /**\n * set up search query properties for the stored query\n */\n sq.setQuery(this.searchService.buildQuery(s.query));\n return sq;\n });\n })\n )\n .subscribe(res => {\n this.storedQueries = {queries: res};\n this.storedQueriesSource.next(this.storedQueries);\n });\n }\n\n /**\n * Fetches the stored queries from the backend and propagates a new\n * value to the main subject.\n */\n fetchStoredQueries(): Observable<StoredQuery[]> {\n\n return this.backend\n .getJson('/storedqueries?size=9999', this.backend.getSearchBase())\n .pipe(\n map(sQueries => {\n return (sQueries || [])\n .map(s => {\n let sq = new StoredQuery(s);\n /**\n * set up search query properties for the stored query\n */\n sq.setQuery(this.searchService.buildQuery(s.query));\n return sq;\n });\n }),\n tap(res => {\n this.storedQueries = {queries: res};\n this.storedQueriesSource.next(this.storedQueries);\n })\n );\n }\n\n /**\n * Save new Stored Query\n *\n * @param StoredQuery storedQuery\n * @return Observable<StoredQuery>\n */\n private saveNewStoredQuery(storedQuery: StoredQuery): Observable<StoredQuery> {\n return this.backend\n .post('/storedqueries', storedQuery.toPersistableStoredQuery(), this.backend.getSearchBase())\n .pipe(\n map(res => {\n let updatedQuery = new StoredQuery(res);\n updatedQuery.setQuery(this.searchService.buildQuery(res.query));\n this.storedQueries.select = updatedQuery.id;\n this.storedQueries.queries.push(updatedQuery);\n this.storedQueriesSource.next(this.storedQueries);\n\n return updatedQuery;\n }));\n }\n\n /**\n * Update Stored Query\n *\n * @param StoredQuery storedQuery\n * @return Observable<StoredQuery>\n */\n private updateStoredQuery(storedQuery: StoredQuery): Observable<StoredQuery> {\n return this.backend\n .put('/storedqueries', storedQuery.toPersistableStoredQuery(), this.backend.getSearchBase())\n .pipe(\n map(res => {\n const updatedQuery = new StoredQuery(res);\n updatedQuery.setQuery(this.searchService.buildQuery(res.query));\n this.storedQueries.select = updatedQuery.id;\n this.storedQueries.queries = this.storedQueries.queries.filter(q => q.id !== updatedQuery.id);\n this.storedQueries.queries.push(updatedQuery);\n this.storedQueriesSource.next(this.storedQueries);\n\n return updatedQuery;\n }));\n }\n\n /**\n * Save a stored query. Depending on whether or not the provided query is a new one or not\n * this will either update or create a new query.\n *\n * @param storedQuery Stored query to be saved\n */\n saveStoredQuery(storedQuery: StoredQuery): Observable<StoredQuery> {\n\n if (storedQuery.id === StoredQueriesService.ID_NEW) {\n return this.saveNewStoredQuery(storedQuery);\n } else {\n return this.updateStoredQuery(storedQuery);\n }\n }\n\n /**\n * Remove Stored Query be provided ID\n * @param id ID of the stored query to be removed\n */\n removeStoredQuery(id: string): Observable<any> {\n return this.backend\n .del(`/storedqueries/${id}`, this.backend.getSearchBase())\n .pipe(\n tap(() => {\n this.storedQueries.select = null;\n this.storedQueries.queries = this.storedQueries.queries.filter(q => q.id !== id);\n this.storedQueriesSource.next(this.storedQueries);\n })\n );\n }\n\n /**\n * Get StoredQuery with the provided Id\n * @param id ID of the stored query to be fetched\n */\n getStoredQuery(id: string): Observable<StoredQuery> {\n return this.backend\n .get(`/storedqueries/${id}`, this.backend.getSearchBase())\n .pipe(\n map(s => {\n let sq = new StoredQuery(s);\n /**\n * set up search query properties for the stored query\n */\n sq.setQuery(this.searchService.buildQuery(s.query));\n return sq;\n })\n );\n }\n\n /**\n * Creates a pseudo form element for a stored queries fulltext input field\n * to be used inside of a stored query form.\n *\n * @param label The label to be set to the element\n * @param value A value to be set to the element\n */\n getFulltextFormElement(label: string, value: string) {\n return {\n name: StoredQueriesService.FULLTEXT,\n qname: StoredQueriesService.FULLTEXT,\n label: label,\n value: value,\n type: 'STRING'\n };\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ReplaySubject, Observable} from 'rxjs';\nimport {UploadTarget} from '../../model/upload-target.model';\nimport {PrepareService} from '../prepare/prepare.service';\nimport {ObjectType} from '../../model/object-type.model';\n\n/**\n * Service for registration of upload targets. Any app component can register itself\n * to retrieve files dragged to the client. This way also plugins are able to fetch and\n * process uploaded files.\n */\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UploadRegistryService {\n\n private _targets: UploadTarget[] = [];\n private targetsSource = new ReplaySubject<UploadTarget[]>(1);\n private overlayActive: boolean;\n /**\n * Stream of currently available upload targets\n */\n public uploadTargets$: Observable<UploadTarget[]> = this.targetsSource.asObservable();\n\n /**\n * @ignore\n */\n constructor(private prepareService: PrepareService) {\n }\n\n setOverlayActive(oa: boolean) {\n this.overlayActive = oa;\n }\n isOverlayActive() {\n return this.overlayActive;\n }\n\n /**\n * Registers a new upload target.\n * If there is an existing target with the same ID it will be updated.\n *\n * @param uploadTarget The target to be registered\n */\n register(uploadTarget: UploadTarget) {\n\n if (uploadTarget.referenceObject) {\n uploadTarget.description = `${(uploadTarget.type === 'object' && uploadTarget.referenceObject?.type?.label) ? `${uploadTarget.referenceObject.type.label}: ` : ''}${uploadTarget.referenceObject.title}`;\n if (uploadTarget.subFolder) {\n this.prepareService.getPrepareChildTypes(uploadTarget.referenceObject.id).subscribe((res) => { \n if (this.isSubFolderAllowed(uploadTarget.subFolder.data, res.types)) {\n uploadTarget.description += '; ' + uploadTarget.subFolder.name;\n }\n });\n }\n }\n\n const target = this._targets.find(t => t.id === uploadTarget.id);\n if (target) {\n Object.assign(target, uploadTarget);\n } else {\n this._targets.push(uploadTarget);\n }\n this.targetsSource.next(this._targets);\n }\n\n /**\n * Checks if it is allowed to drop Files in SubFolders\n *\n * @param subFolder\n * @param ObjectType[] locationTypes\n * @returns boolean\n */\n isSubFolderAllowed(subFolder: any, locationTypes: ObjectType[]): boolean {\n return !!locationTypes.find(lt => lt.name === subFolder.type);\n }\n\n /**\n * Removes an upload target from the list of registered targets.\n *\n * @param uploadTargetId ID of the target to be removed\n */\n unregister(uploadTargetId: string) {\n this._targets = this._targets.filter((t) => t.id !== uploadTargetId);\n this.targetsSource.next(this._targets);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Observable, of} from 'rxjs';\nimport {BackendService} from '../backend/backend.service';\nimport {DmsObject} from '../../model/dms-object.model';\nimport {CapabilitiesService} from '../capabilities/capabilities.service';\n\nexport interface SigningRequest {\n signingPlatform: string;\n emailSubject: string;\n emailBody: string;\n signatureType: string;\n signers: [\n {\n signerName: string,\n signerEmail: string,\n signerPhone?: string,\n signerOrder: string\n }\n ];\n}\n\n/**\n * Collection of Signing Services\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class SigningService {\n\n constructor(private backend: BackendService,\n private capabilities: CapabilitiesService) { }\n\n canSign(): boolean {\n return this.capabilities.getCapabilities().signing;\n }\n\n /**\n * Sign the document of a DMS Object\n * @param id the id of the dms object\n * @param signingData the signing informations\n * @returns Observable<any>\n */\n signDocument(id: string, signingData: SigningRequest) {\n\n const uri = `/request/${id}`;\n return this.canSign ? this.backend.post(uri, signingData, '/signing') : of(null);\n }\n\n /**\n * Gives the setup informations about the configured signing preferences\n * @returns Observable<any>\n */\n getInfo() {\n const uri = `/info`;\n return this.canSign ? this.backend.get(uri, '/signing') : of(null);\n }\n\n /**\n * Cancels the signing process of a DMS Object\n * @param id the id of the dms object\n * @param comment the reason for cancelling\n * @returns Observable<any>\n */\n cancelSigning(id: string, comment: string) {\n const uri = `/cancel/${id}?comment=${comment}`;\n return this.backend.put(uri, null, '/signing');\n }\n\n signatureRequested(item: DmsObject): boolean {\n return !!item.data.yuvsigstatus;\n }\n\n signingInProcess(item: DmsObject): boolean {\n return item.data.yuvsigstatus === 'inprocess';\n }\n}\n","import {Utils} from '../util/utils';\n\nexport class UploadFileItem {\n /**\n * Uniqe File Item Id\n */\n public id: string;\n /**\n * File Item name\n */\n public name: string;\n /**\n * File Item Size\n */\n public size: number;\n /**\n * File Item type\n */\n public type: string;\n /**\n * The File Item itself\n */\n public _file: File;\n\n /**\n * Creates a new instance of UploadFileItem\n *\n * @param id Upload targets unique id\n * @param type Upload targets type\n */\n constructor(file: File) {\n this.id = Utils.uuid();\n this.name = file.name;\n this.size = file.size;\n this.type = file.type;\n this._file = file;\n }\n}\n","/*\n * Public API Surface of core\n */\n\nexport {TranslateModule, TranslateService, TranslateLoader} from '@ngx-translate/core';\nexport * from './lib/eo-core.module';\nexport * from './lib/eo-core-shared.module';\nexport * from './lib/environment.enaio';\n\n/**\n * Services\n */\nexport * from './lib/service/auth/auth.service';\nexport * from './lib/service/backend/backend.service';\nexport * from './lib/service/bpm/bpm.service';\nexport * from './lib/service/cache/app-cache.service';\nexport * from './lib/service/capabilities/capabilities.service';\nexport * from './lib/service/capabilities/capabilities.model';\nexport * from './lib/service/clipboard/clipboard.service';\nexport * from './lib/service/config/config.service';\nexport * from './lib/service/dms/dms.service';\nexport * from './lib/service/events/events';\nexport * from './lib/service/events/event.service';\nexport * from './lib/service/inbox/inbox.service';\nexport * from './lib/service/logger/logger';\nexport * from './lib/service/notifications/notifications.service';\nexport * from './lib/service/prepare/prepare.service';\nexport * from './lib/service/search/search.service';\nexport * from './lib/service/storage/local-storage.service';\nexport * from './lib/service/stored-queries/stored-queries.service';\nexport * from './lib/service/system/system.service';\nexport * from './lib/service/system/systemdefinition.interface';\nexport * from './lib/service/upload/upload.service';\nexport * from './lib/service/upload-registry/upload-registry.service';\nexport * from './lib/service/user/user.service';\nexport * from './lib/service/signing/signing.service';\n\n/**\n * Models\n */\nexport * from './lib/model/baseparams.model';\nexport * from './lib/model/custom-action.model';\nexport * from './lib/model/dms-object.model';\nexport * from './lib/model/eo-error.model';\nexport * from './lib/model/eo-user.model';\nexport * from './lib/model/inbox-item.model';\nexport * from './lib/model/dms-object-history.model';\nexport * from './lib/model/object-type.model';\nexport * from './lib/model/org.model';\nexport * from './lib/model/prepared-item.model';\nexport * from './lib/model/bpm.model';\nexport * from './lib/model/range-value.model';\nexport * from './lib/model/work-item-history.model';\nexport * from './lib/model/upload-file-item.model';\nexport * from './lib/model/upload-target.model';\n\nexport * from './lib/service/search/search-query.model';\nexport * from './lib/model/upload-file-item.model';\nexport * from './lib/model/upload-target.model';\nexport * from './lib/service/stored-queries/stored-query.model';\n\n/**\n * Interfaces\n */\nexport * from './lib/service/dms/dmsParams.interface';\nexport * from './lib/service/clipboard/clipboard.interface';\nexport * from './lib/service/system-status/system.status.interface';\nexport * from './lib/interface/logger.interface';\nexport * from './lib/interface/change-password.interface';\nexport * from './lib/interface/event.interface';\nexport * from './lib/interface/http-options.interface';\nexport * from './lib/interface/organization-objects.interface';\nexport * from './lib/interface/tree-node.interface';\n\n/**\n * Config\n */\nexport * from './lib/config/core-config';\nexport * from './lib/config/core-init.service';\nexport * from './lib/config/core-init.tokens';\nexport * from './lib/config/initialize-module';\nexport * from './lib/config/missing-translation-handler';\nexport * from './lib/config/translate-json-loader';\n\n/**\n * Miscellaneous\n */\nexport * from './lib/service/clipboard/clipboard-action.enum';\nexport * from './lib/service/system-status/system.status.enum';\nexport * from './lib/service/config/config.enum';\nexport * from './lib/util/utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["observableEmpty","observableThrowError","i2.EventService","observableOf","i2.Logger","i3.Config","i1","observableForkJoin","i1.BackendService","i3.EventService","i4.AppCacheService","i1.SystemService","i1.CapabilitiesService","i2.BackendService","i4.InboxService","i2","i3.Logger","i4.EventService","i5.SystemService","i6","i7.Config","i2.UserService","i2.UploadService","i1.EventService","i3.AppCacheService","i3.BpmService","i4.CapabilitiesService","i5.InboxService","i6.PrepareService","i7.BackendService","i8.SystemService","i9.UserService","i10.EventService","i11.SystemStatusService","i12","i13.LocalStorageService","i1.Logger","i4.AuthService","i1.AuthService","i2.SystemService","i3.SearchService","i1.PrepareService","i2.CapabilitiesService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAIA;;AAEG;MACU,aAAa,GAAG,IAAI,cAAc,CAAa,eAAe,EAAE;MAChE,WAAW,GAAG,IAAI,cAAc,CAAa,aAAa;;ACJvE;;AAEG;AACU,IAAA,UAAU,GAAhB,MAAM,UAAU,CAAA;AASrB,IAAA,WAAA,CAAmC,QAAoB,EAAA;;QAPvD,IAAA,CAAA,IAAI,GAA4B,CAAC,kCAAkC,EAAE,oCAAoC,CAAC,CAAC;;AAE3G,QAAA,IAAA,CAAA,YAAY,GAAc,CAAC,uBAAuB,CAAC,CAAC;QAEpD,IAAA,CAAA,WAAW,GAA2B,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC;;AAEzD,QAAA,IAAe,CAAA,eAAA,GAAa,KAAK,CAAC;AAEhC,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KAC/B;EACF;AAZY,UAAU,GAAA,UAAA,CAAA;AASR,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,aAAa,CAAC,CAAA;CATvB,EAAA,UAAU,CAYtB;;AChBD;;;;;;AAMG;AAEH;;AAEG;MAIU,MAAM,CAAA;IAEV,MAAM,CAAC,GAAG,IAAW,EAAA;;KAE3B;IAEM,KAAK,CAAC,GAAG,IAAW,EAAA;;KAE1B;IAEM,KAAK,CAAC,GAAG,IAAW,EAAA;;KAE1B;IAEM,KAAK,CAAC,GAAG,IAAW,EAAA;;KAE1B;IAEM,QAAQ,CAAC,GAAG,IAAW,EAAA;;KAE7B;IAEM,IAAI,CAAC,GAAG,IAAW,EAAA;;KAEzB;IAEM,GAAG,CAAC,GAAG,IAAW,EAAA;;KAExB;IAEM,IAAI,CAAC,GAAG,IAAW,EAAA;;KAEzB;;mGAhCU,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAN,MAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAM,cAFL,MAAM,EAAA,CAAA,CAAA;2FAEP,MAAM,EAAA,UAAA,EAAA,CAAA;kBAHlB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACdD;;AAEG;MACU,OAAO,CAAA;AAElB,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC;KACpD;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC;KAC1D;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;KACjC;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;KAClC;AAED,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;KAC/B;AAED,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB,KAAK,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC;KAC9G;AAED,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,IAAI,IAAI,CAAC,aAAa,YAAY,iBAAiB,CAAC;KAClG;AAED,IAAA,WAAA,CAAmB,aAA0B,EAAU,KAAa,EAAU,QAAgB,EAAU,iBAA0B,EAAA;AAA/G,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAa;AAAU,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;AAAU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;AAAU,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAS;KACjI;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KACtC;AACF;;ACrCD;AAEY,IAAA,WAIX;AAJD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,WAAwB,CAAA;AAC1B,CAAC,EAJW,UAAU,KAAV,UAAU,GAIrB,EAAA,CAAA,CAAA,CAAA;AAED;;;;AAIG;MACU,WAAW,CAAA;AAyItB,IAAA,WAAA,GAAA;AAnDA;;AAEG;AACI,QAAA,IAAK,CAAA,KAAA,GAAiB,EAAE,CAAC;AAChC;;AAEG;AACI,QAAA,IAAkB,CAAA,kBAAA,GAAiB,EAAE,CAAC;AAC7C;;AAEG;AACI,QAAA,IAAO,CAAA,OAAA,GAAmB,EAAE,CAAC;AAKpC;;AAEG;AACI,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAK1B;;AAEG;AACI,QAAA,IAAA,CAAA,UAAU,GAAW,WAAW,CAAC,mBAAmB,CAAC;AAC5D;;AAEG;AACI,QAAA,IAAW,CAAA,WAAA,GAAiB,EAAE,CAAC;AACtC;;AAEG;AACI,QAAA,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;AAC/B;;AAEG;AACI,QAAA,IAAA,CAAA,KAAK,GAAgB,IAAI,WAAW,EAAE,CAAC;AAEvC,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAC9B,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;KASpB;AAEhB;;;;AAIG;AACI,IAAA,OAAO,CAAC,IAAgB,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,SAAA;KACF;AAED;;;;AAIG;AACI,IAAA,UAAU,CAAC,IAAgB,EAAA;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;KACvD;AAED;;;;AAIG;AACI,IAAA,UAAU,CAAC,IAAgB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE;AAC1C,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACvB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,SAAA;KACF;AAED;;;;AAIG;AACI,IAAA,SAAS,CAAC,MAAoB,EAAA;QACnC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;AACR,SAAA;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,SAAA;AAAM,aAAA;;;AAGL,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,SAAA;KACF;AAED;;;;AAIG;AACI,IAAA,YAAY,CAAC,kBAA0B,EAAA;AAC5C,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,kBAAkB,CAAC,CAAC;KAC5E;AAED;;;;AAIG;IACI,YAAY,CAAC,MAAoB,EAAE,QAAkB,EAAA;QAC1D,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnC,YAAA,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,SAAA;KACF;AAED;;;;;AAKG;AACI,IAAA,SAAS,CAAC,YAAoB,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC;KAC5D;AAEM,IAAA,eAAe,CAAC,YAAoB,EAAA;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC;KAC5E;AAED;;;;;;;AAOG;AACI,IAAA,aAAa,CAAC,IAAY,EAAE,KAAa,EAAE,OAAgB,EAAA;AAChE,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE;AACjD,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7D,SAAA;KACF;AAED;;;AAGG;AACI,IAAA,gBAAgB,CAAC,IAAY,EAAA;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;KACnE;AAED;;;;AAIG;AACI,IAAA,YAAY,CAAC,gBAA0B,EAAA;;;QAG5C,MAAM,SAAS,GAAQ,EAAE,CAAC;;AAG1B,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAChC,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CACnC,CAAC;AACH,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;AACtC,YAAA,SAAS,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACzE,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAG;AACvB,gBAAA,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;AAC9C,aAAC,CAAC,CAAC;AACJ,SAAA;QACD,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC5B,SAAA;;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAChC,SAAA;QACD,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC5B,SAAA;;AAED,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;YACvB,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACrC,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;AAClC,aAAA;YACD,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,SAAS,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;AACrC,aAAA;AAED,YAAA,SAAS,CAAC,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,KAAK,SAAS,GAAG,gBAAgB,GAAG,IAAI,CAAC;AAE9F,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,WAAW,CAAC,mBAAmB,EAAE;gBACvD,SAAS,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAChD,aAAA;YACD,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAC/C,gBAAA,SAAS,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;gBAC5B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAsB,KAAI;oBAClD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG;wBACzC,KAAK,EAAE,UAAU,CAAC,KAAK;qBACxB,CAAC;AACJ,iBAAC,CAAC,CAAC;AACJ,aAAA;YAED,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,SAAS,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACpD,aAAA;YACD,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,SAAS,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AAClD,aAAA;AACF,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;;IAGO,YAAY,GAAA;QAClB,QACE,IAAI,CAAC,UAAU;YACf,CAAC,CAAC,IAAI,CAAC,KAAK;AACZ,YAAA,IAAI,CAAC,OAAO;AACZ,YAAA,IAAI,CAAC,YAAY;AACjB,YAAA,IAAI,CAAC,gBAAgB;AACrB,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,UAAU,KAAK,WAAW,CAAC,mBAAmB;AACnD,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAC3B;KACH;;AAjVD;;AAEG;AACW,WAAA,CAAA,WAAW,GAAG;AAC1B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,aAAa,EAAE,eAAe;AAC9B,IAAA,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF;;AAEG;AACW,WAAA,CAAA,mBAAmB,GAAG;AAClC,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,SAAS,EAAE,UAAU;AACrB,IAAA,SAAS,EAAE,UAAU;AACrB,IAAA,UAAU,EAAE,WAAW;AACvB,IAAA,UAAU,EAAE,WAAW;AACvB,IAAA,SAAS,EAAE,UAAU;AACrB,IAAA,SAAS,EAAE,UAAU;CACtB,CAAC;AAEF;;AAEG;AACW,WAAA,CAAA,qBAAqB,GAAG;AACpC,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,YAAY,EAAE,cAAc;AAC5B,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,GAAG,EAAE,KAAK;CACX,CAAC;AAEF;;AAEG;AACW,WAAA,CAAA,iBAAiB,GAAG;AAChC,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF;AACc,WAAA,CAAA,YAAY,GAAG;AAC3B,IAAA,YAAY,EAAE,oBAAoB;AAClC,IAAA,kBAAkB,EAAE,0BAA0B;AAC9C,IAAA,QAAQ,EAAE,gBAAgB;AAC1B,IAAA,SAAS,EAAE,iBAAiB;AAC5B,IAAA,kBAAkB,EAAE,yBAAyB;AAC7C,IAAA,cAAc,EAAE,sBAAsB;AACtC,IAAA,YAAY,EAAE,oBAAoB;AAClC,IAAA,cAAc,EAAE,sBAAsB;CACvC,CAAC;AACF;;AAEG;AACW,WAAmB,CAAA,mBAAA,GAAG,MAAM,CAAC;AAC3C;;AAEG;AACW,WAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;AAwQ7C;;;AAGG;MACU,UAAU,CAAA;AACrB,IAAA,WAAA,CACS,KAAa,EACb,KAAa,EACb,OAAgB,EAAA;AAFhB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;AACb,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;AACb,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;KACrB;AACL,CAAA;AAED;;;AAGG;MACU,eAAe,CAAA;IAC1B,WACS,CAAA,QAAkB,GAAA,EAAE,EACpB,SAAA,GAAmB,EAAE,EACrB,UAAA,GAAoB,EAAE,EACtB,SAAgB,EAAE,EAClB,UAA+C,GAAA,EAAE,EACjD,IAAa,EAAA;AALb,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAY;AACpB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAY;AACrB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;AAClB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAuC;AACjD,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAS;KAClB;AACL,CAAA;AAED;;;AAGG;MACU,WAAW,CAAA;AAKtB;;AAEG;AACH,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,YAAY,GAAG;YAClB,IAAI,EAAE,IAAI,GAAG,EAAkB;YAC/B,WAAW,EAAE,IAAI,GAAG,EAAkB;AACtC,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,QAAQ,EAAE,EAAE;SACb,CAAC;KACH;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,GAAW,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC,CAAW,CAAC;KACjH;AAED,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC1C;AAED,IAAA,eAAe,CAAC,IAAY,EAAE,GAAW,EAAE,KAAa,EAAE,GAAI,EAAA;AAC5D,QAAA,QAAQ,IAAI;YACV,KAAK,aAAa,EAAE;gBAClB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC9C,MAAM;AACP,aAAA;AACD,YAAA,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE;gBACjC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACvC,MAAM;AACP,aAAA;AACD,YAAA,KAAK,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE;AACpC,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;AAC7B,oBAAA,GAAG,EAAE,GAAG;AACR,oBAAA,KAAK,EAAE,KAAK;AACb,iBAAA,CAAC,CAAC;gBACH,MAAM;AACP,aAAA;AACD,YAAA,KAAK,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE;AACrC,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC9B,oBAAA,GAAG,EAAE,GAAG;AACR,oBAAA,KAAK,EAAE,KAAK;AACb,iBAAA,CAAC,CAAC;gBACH,MAAM;AACP,aAAA;AACD,YAAA,KAAK,WAAW,CAAC,WAAW,CAAC,aAAa,EAAE;AAC1C,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC;AACnC,oBAAA,GAAG,EAAE,GAAG;AACR,oBAAA,KAAK,EAAE,KAAK;AACb,iBAAA,CAAC,CAAC;gBACH,MAAM;AACP,aAAA;AACD,YAAA,KAAK,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE;AACrC,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC9B,oBAAA,GAAG,EAAE,GAAG;AACR,oBAAA,KAAK,EAAE,KAAK;oBACZ,IAAI,EAAE,GAAG,CAAC,IAAI;AACd,oBAAA,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,QAAQ;AACtB,oBAAA,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;AACnD,iBAAA,CAAC,CAAC;gBACH,MAAM;AACP,aAAA;AACF,SAAA;KACF;AACF,CAAA;AAED;;;AAGG;MACU,YAAY,CAAA;AAOvB,IAAA,WAAA,GAAA,GAAgB;AACjB,CAAA;MAEY,YAAY,CAAA;AAwBvB;;;;;;;;AAQG;IACH,WACS,CAAA,QAAgB,EAChB,QAAgB,EAChB,UAAe,EACf,WAAiB,EACjB,aAAoD,EAAA;AAJpD,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;AAChB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;AAChB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;AACf,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAM;AACjB,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAuC;KACzD;AAEJ,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,aAAa,IAAI,KAAK;AAChC,cAAE,IAAI,CAAC,aAAa,CAAC,QAAQ;AAC3B,kBAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC;AACrD,kBAAE,IAAI,CAAC,aAAa,CAAC,IAAI;AACvB,sBAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG;AAClD,sBAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC;cACrD,KAAK,CAAC;KACX;IAED,OAAO,GAAA;AACL,QAAA,OAAA,MAAA,CAAA,MAAA,CAAA,EACE,CAAC,EAAE,IAAI,CAAC,QAAQ,EAChB,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAA,GAChC,IAAI,CAAC,WAAW,IAAI,EAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAC,EAC/D,CAAA;KACH;IAED,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;AACxE,YAAA,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACjC,YAAA,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,CAAC;YACpD,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ,CAAC,aAAa,EAAE;AACzD,gBAAA,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;AACpC,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;gBACvC,IACE,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ,CAAC,YAAY;oBACpD,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAChD;oBACA,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACrC,iBAAA;AAAM,qBAAA;oBACL,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,iBAAA;AACD,gBAAA,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;AACtC,aAAA;YACD,IACE,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ,CAAC,qBAAqB;gBAC7D,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ,CAAC,KAAK,EAC7C;AACA,gBAAA,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;AACrC,aAAA;YACD,OACE,MAAA,CAAA,MAAA,CAAA,EAAA,CAAC,EACC,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ,CAAC,KAAK;AAC3C,sBAAE,YAAY,CAAC,QAAQ,CAAC,qBAAqB;AAC7C,sBAAE,IAAI,CAAC,QAAQ,EACnB,EAAE,EAAE,UAAU,EAAA,GACV,WAAW,IAAI,EAAC,EAAE,EAAE,WAAW,EAAC,EACpC,CAAA;AACH,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;AACvB,SAAA;KACF;AAED;;AAEG;AACH,IAAA,KAAK,CACH,QAAgB,EAChB,QAAgB,EAChB,UAAe,EACf,WAAiB,EAAA;AAEjB,QAAA,QACE,IAAI,CAAC,QAAQ,KAAK,QAAQ;YAC1B,IAAI,CAAC,QAAQ,KAAK,QAAQ;YAC1B,IAAI,CAAC,WAAW,KAAK,WAAW;AAChC,aAAC,IAAI,CAAC,UAAU,YAAY,KAAK;AAC/B,kBAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC;kBAC7C,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,EACnC;KACH;;AAlHD;;AAEG;AACW,YAAA,CAAA,QAAQ,GAAG;;AAEvB,IAAA,KAAK,EAAE,IAAI;;AAEX,IAAA,KAAK,EAAE,OAAO;;AAEd,IAAA,EAAE,EAAE,IAAI;;AAER,IAAA,YAAY,EAAE,IAAI;;AAElB,IAAA,gBAAgB,EAAE,KAAK;AACvB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,qBAAqB,EAAE,QAAQ;AAC/B,IAAA,mBAAmB,EAAE,OAAO;AAC5B,IAAA,qBAAqB,EAAE,OAAO;IAC9B,KAAK,EAAE,IAAI;CACZ;;AC/eH;;AAEG;MACU,UAAU,CAAA;AAErB;;;;;AAKG;AACH,IAAA,WAAA,CAAmB,QAAgB,EAChB,UAAkB,EAClB,WAAoB,EAAA;AAFpB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;AAChB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAQ;AAClB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAS;KACtC;AAED;;;;AAIG;IACI,OAAO,gBAAgB,CAAC,QAAgB,EAAA;QAC7C,IAAI,KAAK,GAAG,GAAG,CAAC;AAChB,QAAA,QAAQ,QAAQ;AACd,YAAA,KAAK,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE;gBAChC,KAAK,GAAG,GAAG,CAAC;gBACZ,MAAM;AACP,aAAA;AACD,YAAA,KAAK,YAAY,CAAC,QAAQ,CAAC,gBAAgB,EAAE;gBAC3C,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM;AACP,aAAA;AACD,YAAA,KAAK,YAAY,CAAC,QAAQ,CAAC,aAAa,EAAE;gBACxC,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM;AACP,aAAA;AACD,YAAA,KAAK,YAAY,CAAC,QAAQ,CAAC,qBAAqB,EAAE;gBAChD,KAAK,GAAG,GAAG,CAAC;gBACZ,MAAM;AACP,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AACF;;MCvCY,KAAK,CAAA;AAIT,IAAA,OAAO,MAAM,CAAC,KAAY,EAAE,QAAgB,EAAA;QACjD,MAAM,CAAC,GAAyB,EAAE,CAAC;AACnC,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KACrC;AAED;;;;;;AAMG;AACI,IAAA,OAAO,QAAQ,CAAC,GAAW,EAAE,MAAU,EAAA;AAC5C,QAAA,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;aAC1B,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC;aAChE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/D,QAAA,OAAO,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;KACjC;AAED;;;AAGG;AACI,IAAA,OAAO,IAAI,GAAA;QAChB,OAAO,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;KACtE;AAED;;;;;AAKG;IACI,OAAO,cAAc,CAAC,QAAgB,EAAA;QAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,uBAAuB,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACjG,OAAO,CAAA,UAAA,EAAa,QAAQ,CAAA,EAAA,CAAI,CAAC;KAClC;AAED;;;;AAIG;IACK,OAAO,GAAG,CAAC,CAAW,EAAA;QAC5B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAA,CAAA,EAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAI,CAAA,EAAA,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE,GAAG,CAAC,CAAC;KACvD;AAED;;;;;;AAMG;IACK,OAAO,YAAY,CAAC,QAAQ,EAAA;AAClC;;AAEG;QACH,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,SAAS,GAAG,EAAE,CAAC;AACnB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC;;AAEG;YACH,MAAM,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,GAAG,GAAG,EAAE;AACX;;AAEG;AACH,gBAAA,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACrC,aAAA;iBAAM,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE;AAClC;;AAEG;AACH,gBAAA,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACjD,gBAAA,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC;AAClD,aAAA;AAAM,iBAAA;AACL;;AAEG;AACH,gBAAA,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC;AAClD,gBAAA,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC;AACxD,gBAAA,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC;AAClD,aAAA;AACF,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;AAED;;AAEI;IACI,OAAO,eAAe,CAAC,MAAM,EAAA;QACnC,IAAI,MAAM,GAAG,MAAM,EAAE;AACnB,YAAA,MAAM,UAAU,CAAC,4FAA4F,CAAC,CAAC;AAChH,SAAA;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACzD,QAAA,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5C;AAED;;;;;AAKG;IACK,OAAO,uBAAuB,CAAC,QAAQ,EAAA;AAC7C,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,yFAAyF,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAClJ,QAAA,OAAO,OAAO,CAAC;KAChB;AAED;;;;;;;;;AASG;AACI,IAAA,OAAO,UAAU,CAAC,GAAG,GAAG,EAAE,EAAE,KAAK,GAAG,KAAK,EAAE,OAA2B,EAAE,OAA8B,EAAA;AAC3G,QAAA,MAAM,CAAC,GAAG,CAAC,CAAM,EAAE,CAAM,KAAI;AAC3B,YAAA,IAAI,UAAkB,CAAC;YACvB,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACvC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACxD,gBAAA,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;AAC1B,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,OAAO,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;AAC1D,gBAAA,MAAM,OAAO,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;gBAC1D,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/D,aAAA;AACD,YAAA,OAAO,KAAK,KAAK,MAAM,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;AACzD,SAAC,CAAC;AACF,QAAA,OAAO,CAAC,CAAC;KACV;AAED;;;;;;AAMG;AACI,IAAA,OAAO,WAAW,CAAC,MAAW,EAAE,GAAG,GAAG,EAAE,EAAA;AAC7C,QAAA,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;AAC/E,QAAA,OAAO,CAAC,CAAC;KACV;AAED;;;;;;AAMG;IACI,OAAO,KAAK,CAAC,QAAyB,EAAA;AAC3C,QAAA,MAAM,CAAC,GAAG,CAAC,KAAK,KAAI;AAClB,YAAA,OAAOA,KAAe,CAAC;AACzB,SAAC,CAAC;AACF,QAAA,OAAO,CAAC,CAAC;KACV;AAED;;;;;;;;AAQG;IACI,OAAO,SAAS,CAAC,gBAAiC,EAAE,QAAyB,EAAE,IAAa,EAAE,OAAgB,EAAA;AACnH,QAAA,MAAM,CAAC,GAAG,CAAC,KAAK,KAAI;YAClB,MAAM,MAAM,GAAG,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,iBAAiB,GAAG,gBAAgB,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACtE,OAAOC,UAAoB,CAAC,IAAI,OAAO,CAAC,MAAM,YAAY,KAAK,GAAG,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;AACvH,SAAC,CAAC;AACF,QAAA,OAAO,CAAC,CAAC;KACV;AAED;;;;;;;;;AASG;IACI,OAAO,KAAK,CAAC,QAAyB,EAAE,IAAa,EAAE,OAAgB,EAAE,gBAA0B,EAAA;AACxG,QAAA,MAAM,CAAC,GAAG,CAAC,KAAK,KAAI;YAClB,MAAM,MAAM,GAAG,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC3C,OAAOA,UAAoB,CAAC,IAAI,OAAO,CAAC,MAAM,YAAY,KAAK,GAAG,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;AACtH,SAAC,CAAC;AACF,QAAA,OAAO,CAAC,CAAC;KACV;AAED;;;;;;;;;AASG;IACI,OAAO,KAAK,CAAC,QAAyB,EAAE,IAAa,EAAE,OAAgB,EAAE,gBAA0B,EAAA;AACxG,QAAA,MAAM,CAAC,GAAG,CAAC,KAAK,KAAI;YAClB,MAAM,MAAM,GAAG,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,IAAI,OAAO,CAAC,MAAM,YAAY,KAAK,GAAG,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAC/F,SAAC,CAAC;AACF,QAAA,OAAO,CAAC,CAAC;KACV;AAED;;;;;;;;AAQG;IACI,OAAO,QAAQ,CAAC,QAAyB,EAAE,IAAa,EAAE,OAAgB,EAAE,gBAAgB,GAAG,IAAI,EAAA;AACxG,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;KAC/D;AAED;;;;;AAKG;IACI,OAAO,SAAS,CAAC,IAAS,EAAA;AAC/B,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC;KAClF;AAEM,IAAA,OAAO,WAAW,GAAA;AACvB,QAAA,OAAO,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KACtE;AAED;;;;;;;;AAQG;IACI,OAAO,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAA;AACnD,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;YACpB,IAAI,GAAG,GAAG,CAAC,EAAE;gBACX,GAAG,IAAI,CAAC,CAAC;AACV,aAAA;AACD,YAAA,GAAG,GAAG,CAAA,EAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAG,EAAA,MAAM,EAAE,CAAC;AAC3C,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;;AAED;;;;AAIG;AACI,IAAA,OAAO,iBAAiB,GAAA;AAC7B,QAAA,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC7B;AAEM,IAAA,OAAO,YAAY,CAAC,KAAqB,EAAE,OAAgB,EAAA;AAChE,QAAA,IAAI,OAAO,IAAI,CAAC,CAAC,KAAK,EAAE;AACtB,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9F,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAEM,OAAO,aAAa,CAAC,GAAG,GAAG,EAAE,EAAE,WAA2C,EAAE,aAA0C,EAAA;QAC3H,MAAM,GAAG,GAAG,OAAO,WAAW,KAAK,QAAQ,GAAG,CAAC,CAAM,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;QACvF,MAAM,KAAK,GAAG,OAAO,aAAa,KAAK,QAAQ,GAAG,CAAC,CAAM,KAAK,CAAC,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;QAC/F,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;YAChC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACnD,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;KACR;IAEM,OAAO,iBAAiB,CAAC,CAAM,EAAA;AACpC,QAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,KAAI;YACvB,IAAI,KAAK,YAAY,UAAU,EAAE;AAC/B,gBAAA,OAAO,CAAI,CAAA,EAAA,KAAK,CAAC,eAAe,CAAI,CAAA,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,EAAA,CAAI,CAAC;AAC/D,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC7B;IAEM,OAAO,aAAa,CAAC,GAAW,EAAA;AACrC,QAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,KAAI;YACvB,IACE,OAAO,KAAK,KAAK,QAAQ;gBACzB,KAAK,CAAC,UAAU,CAAC,CAAA,CAAA,EAAI,KAAK,CAAC,eAAe,GAAG,CAAC;AAC9C,gBAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EACpB;AACA,gBAAA,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAEjC,gBAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAC/E,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;KAC3B;;AA9Tc,KAAe,CAAA,eAAA,GAAG,YAAY;;ACR/C;;AAEG;AAEU,MAAA,UAAU,GAAG;AACxB,IAAA,MAAM,EAAE,gBAAgB;AACxB,IAAA,qBAAqB,EAAE,+BAA+B;AACtD,IAAA,qBAAqB,EAAE,+BAA+B;AACtD,IAAA,iBAAiB,EAAE,sBAAsB;AACzC,IAAA,kBAAkB,EAAE,uBAAuB;AAC3C,IAAA,2BAA2B,EAAE,gCAAgC;AAC7D,IAAA,8BAA8B,EAAE,gCAAgC;AAChE,IAAA,sBAAsB,EAAE,2BAA2B;AACnD,IAAA,uBAAuB,EAAE,4BAA4B;AACrD,IAAA,kBAAkB,EAAE,uBAAuB;AAC3C,IAAA,iBAAiB,EAAE,sBAAsB;AACzC,IAAA,oBAAoB,EAAE,yBAAyB;AAC/C,IAAA,oBAAoB,EAAE,yBAAyB;AAC/C,IAAA,uBAAuB,EAAE,yBAAyB;AAClD,IAAA,4BAA4B,EAAE,kBAAkB;AAChD,IAAA,yBAAyB,EAAE,eAAe;AAC1C,IAAA,yBAAyB,EAAE,eAAe;AAC1C,IAAA,yBAAyB,EAAE,eAAe;AAC1C,IAAA,2BAA2B,EAAE,iBAAiB;AAC9C,IAAA,eAAe,EAAE,iBAAiB;AAClC,IAAA,0BAA0B,EAAE,iBAAiB;;;ACpB/C;;AAEG;MAIU,YAAY,CAAA;AAQvB;;AAEG;AACH,IAAA,WAAA,GAAA;AATQ,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAS,CAAC;AAC3C;;AAEG;QACI,IAAA,CAAA,MAAM,GAAoB,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KAMhE;AAED;;;;AAIG;IACH,OAAO,CAAC,IAAY,EAAE,IAAU,EAAA;QAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;KACrC;AAED;;;AAGG;IACH,EAAE,CAAC,GAAG,KAAe,EAAA;QACnB,OAAO,IAAI,CAAC,MAAM;aACf,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACxE;;yGA9BU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACFD;;AAEG;MAIU,MAAM,CAAA;AAMjB;;AAEG;IACH,WAAoB,CAAA,SAA2B,EAAU,KAAmB,EAAA;AAAxD,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;AAAU,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAc;AAPpE,QAAA,IAAG,CAAA,GAAA,GAAgB,IAAI,CAAC;AAExB,QAAA,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;KAM7B;AAED;;AAEG;IACK,cAAc,GAAA;QACpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;KAChD;AAED;;;AAGG;AACI,IAAA,GAAG,CAAC,GAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,CAAiB;YAC5C,CAAC,aAAa,EAAE,kBAAkB,CAAC;YACnC,CAAC,YAAY,EAAE,SAAS,CAAC;YACzB,CAAC,aAAa,EAAE,YAAY,CAAC;YAC7B,CAAC,WAAW,EAAE,eAAe,CAAC;YAC9B,CAAC,SAAS,EAAE,MAAM,CAAC;YACnB,CAAC,WAAW,EAAE,QAAQ,CAAC;YACvB,CAAC,YAAY,EAAE,SAAS,CAAC;AAAC,SAAA,CAAC,CAAC;AAC9B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;AAED;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;KAC9B;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;;AAE9B,eAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC9B,QAAA,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC;KACrC;AAED;;;AAGG;AACI,IAAA,MAAM,CAAC,QAAgB,EAAA;QAC5B,OAAO,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;KACpE;AAED;;;;AAIG;AACI,IAAA,MAAM,CAAC,QAAgB,EAAA;QAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC5F;AAED;;;AAGG;IACI,gBAAgB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KAC9B;AAED;;;AAGG;IACI,yBAAyB,GAAA;AAC9B,QAAA,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS;YACpI,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;KACxE;AAED;;;AAGG;IACI,2BAA2B,GAAA;AAChC,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;KAC7C;AAED;;;AAGG;IACI,qBAAqB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;KACvC;AAED;;;;AAIG;IACI,qBAAqB,GAAA;QAC1B,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAClC,QAAA,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,aAAa,CAAC;AACpD,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;AAGG;IACI,sBAAsB,GAAA;AAC3B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC3D,OAAO,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;KAC/B;AAED;;AAEG;IACI,cAAc,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAC1B;;mGAhIU,MAAM,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAN,MAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAM,cAFL,MAAM,EAAA,CAAA,CAAA;2FAEP,MAAM,EAAA,UAAA,EAAA,CAAA;kBAHlB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;MCNY,MAAM,CAAA;AAsEjB;;;AAGG;AACH,IAAA,WAAA,CAAY,IAAS,EAAA;AAEnB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAE/B,QAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AACjC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC7B,QAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;YAC3B,IAAI,CAAC,QAAQ,GAAG,sBAAsB,GAAG,IAAI,CAAC,EAAE,CAAC;AAClD,SAAA;QACD,IAAI,CAAC,YAAY,GAAG,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;QACzF,IAAI,CAAC,MAAM,GAAG;YACZ,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;SAC3C,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;AACnC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;KAC5D;AAED;;;;AAIG;AACH,IAAA,YAAY,CAAC,SAAiB,EAAA;QAE5B,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;gBAC3C,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;AAC9C,gBAAA,CAAC,EAAE,CAAC;AACL,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;;AAIG;AACH,IAAA,OAAO,CAAC,IAAY,EAAA;QAClB,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACtC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;AACpC,gBAAA,CAAC,EAAE,CAAC;AACL,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;AAGG;AACI,IAAA,YAAY,CAAC,IAAY,EAAA;QAC9B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;AACtC,SAAA;KACF;AAED;;;AAGG;IACI,eAAe,GAAA;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;KAClD;AAED;;;AAGG;IACI,eAAe,GAAA;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAEF;;AChKD;;AAEG;MACU,oBAAoB,CAAA;AAoC/B;;;AAGG;AACH,IAAA,WAAA,CAAY,IAAS,EAAA;AAEnB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AAC/B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACpC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;;QAGf,QAAQ,IAAI,CAAC,IAAI;;YAEf,KAAK,gBAAgB,EAAE;gBACrB,IAAI,CAAC,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,UAAU,EAAE,CAAC;;AAElC,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,IAAI,GAAG;oBACV,cAAc,EAAE,IAAI,CAAC,cAAc;iBACpC,CAAC;AACF,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACtB,MAAM;AACP,aAAA;;YAED,KAAK,eAAe,EAAE;gBACpB,IAAI,CAAC,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,UAAU,EAAE,CAAC;;AAElC,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,IAAI,GAAG;oBACV,cAAc,EAAE,IAAI,CAAC,cAAc;iBACpC,CAAC;AACF,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACtB,MAAM;AACP,aAAA;AACF,SAAA;;;QAID,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC;AACxF,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC;AACtF,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA,EAAG,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,SAAS,CAAA,EAAA,EAAK,CAAC,CAAC,IAAI,GAAG,EAAC,CAAC,CAAC,CAAC;AAC5H,SAAA;QAED,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,SAAA;KACF;AACF;;AClFD;;AAEG;MACU,OAAO,CAAA;AA8DlB;;AAEG;AACH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;KACpC;AAED;;AAEG;AACH,IAAA,IAAI,EAAE,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;KAC7B;AAED;;;AAGG;AACH,IAAA,WAAA,CAAY,IAAS,EAAA;AAEnB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;KACzB;AAED,IAAA,OAAO,CAAC,WAAwB,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW,IAAI,EAAE,CAAC;KAC/B;AACF,CAAA;AAGD;;AAEG;MACU,QAAQ,CAAA;AA8FnB;;;AAGG;AACH,IAAA,WAAA,CAAY,IAAS,EAAA;AACnB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE1B,IAAI,CAAC,oBAAoB,GAAG;AAC1B,YAAA,GAAG,EAAE,IAAI,CAAC,iBAAiB,IAAI,KAAK;AACpC,YAAA,MAAM,EAAE,IAAI,CAAC,mBAAmB,IAAI,KAAK;SAC1C,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACvC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACxC,gBAAA,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AACzB,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED,IAAA,OAAO,CAAC,WAAwB,EAAA;AAC9B,QAAA,IAAI,WAAW,EAAE;;AAEf,YAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACpC,gBAAA,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1E,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AAChB,SAAA;KACF;AACF;;ACxPW,IAAA,gBAGX;AAHD,CAAA,UAAY,eAAe,EAAA;IACzB,eAAA,CAAA,eAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;IACJ,eAAA,CAAA,eAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;AACL,CAAC,EAHW,eAAe,KAAf,eAAe,GAG1B,EAAA,CAAA,CAAA;;ACyCD;;;AAGG;MACU,UAAU,CAAA;AAwErB;;;AAGG;AACH,IAAA,WAAA,CAAY,IAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACzD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AAC5C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;AAC9C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACpC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;cAC/C,IAAI,CAAC,mBAAmB;cACxB,EAAE,CAAC;QACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1E,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC/D;AAED,IAAA,cAAc,CAAC,gBAAgB,EAAA;AAC7B,QAAA,IAAI,gBAAgB,EAAE;AACpB,YAAA,OAAO,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9D,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACX;AACF;;ACpHD;AACA;;;;AAIG;MAIU,cAAc,CAAA;AAQzB;;AAEG;AACH,IAAA,WAAA,CAAoB,IAAgB,EACN,UAAsB,EAC1C,MAAc,EACd,MAAc,EAAA;AAHJ,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AACN,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAC1C,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AACd,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAZjB,QAAA,IAAc,CAAA,cAAA,GAAkC,GAAG,CAAC,CAAC,IAAW,KAAK,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,MAAM,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAE5G,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,GAAG,EAAe,CAAC;AAC/B,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,GAAG,EAA2B,CAAC;AAC1C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAUzC;;;AAGG;QACH,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,IAAI;SACX,CAAC;KACH;AAED;;AAEG;AACI,IAAA,cAAc,CAAC,OAAqB,EAAA;AACzC,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACxC,YAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;AAC3B,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;AAE1B,aAAA;AACD,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACtC,SAAA;KACF;AAED;;;;AAIG;IACI,SAAS,CAAC,GAAW,EAAE,KAAa,EAAA;AACzC,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7C,SAAA;KACF;AAED;;;AAGG;IACI,UAAU,GAAA;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED;;AAEG;AACI,IAAA,cAAc,CAAC,cAA4B,EAAA;QAChD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAC,EAAE,cAAc,CAAC,CAAC;KACtH;AAED;;;AAGG;IACI,cAAc,GAAA;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KAC1C;AAED;;;AAGG;IACI,aAAa,GAAA;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;KACzC;AAED;;;AAGG;IACI,cAAc,GAAA;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KAC1C;AAED;;;AAGG;IACI,YAAY,GAAA;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;KACxC;AAED;;;AAGG;IACI,UAAU,GAAA;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;KACtC;AAED;;;AAGG;IACI,YAAY,GAAA;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;KACxC;AAED;;;AAGG;IACI,aAAa,GAAA;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;KACzC;AAED;;AAEG;IACI,WAAW,CAAC,KAAa,EAAE,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,WAAW,GAAG,EAAE,CAAC;KAC1E;AAED;;AAEG;IACI,OAAO,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;KACpC;AAEM,IAAA,kBAAkB,CAAC,IAAY,EAAA;QACpC,OAAO,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,UAAU,CAAC,GAAG,CAAC,IAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;KAC3E;AAEO,IAAA,cAAc,CAAC,IAAa,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;KAClF;AAED;;;;;;AAMG;AACI,IAAA,GAAG,CAAC,GAAW,EAAE,IAAa,EAAE,cAA4B,EAAA;QACjE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;KAC5F;AAED;;;;;;;AAOG;AACI,IAAA,GAAG,CAAC,GAAW,EAAE,IAAU,EAAE,IAAa,EAAE,cAA4B,EAAA;QAC7E,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;KAClG;AAED;;AAEG;IACI,OAAO,CAAC,GAAW,EAAE,IAAa,EAAA;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,EAAC,YAAY,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC;KACpG;AAED;;;;;;;AAOG;AACI,IAAA,IAAI,CAAC,GAAW,EAAE,IAAK,EAAE,IAAa,EAAE,cAA4B,EAAA;QACzE,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC1C,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,OAAO,CAAG,EAAA,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;KACzF;AAED;;;;;;;AAOG;AACI,IAAA,aAAa,CAAC,GAAW,EAAE,QAAkB,EAAE,IAAa,EAAE,cAA4B,EAAA;QAC/F,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC1C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAClC,QAAA,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAC,EAAE,cAAc,CAAC,CAAC;AACvH,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAG,EAAA,OAAO,CAAG,EAAA,GAAG,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;KACjE;AAED;;;;;;AAMG;AACI,IAAA,GAAG,CAAC,GAAW,EAAE,IAAa,EAAE,cAA4B,EAAA;QACjE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;KAC/F;AAED;;;;;;;;;;AAUG;IACI,MAAM,CAAC,IAAW,EAAE,IAAiC,EAAA;QAC1D,IAAI,CAAC,OAAO,CAAC,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,KAAI;AAC1B,YAAA,IAAI,EAAE,EAAE;AACN,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1C,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,EAAC,SAAS,EAAE,IAAI,EAAC,GAAG,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;AAC1E,aAAA;AAAM,iBAAA,IAAI,IAAI,EAAE;AACf,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;AACpD,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;;;;AAMG;AACI,IAAA,WAAW,CAAC,GAAW,EAAA;QAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACvB,OAAOC,EAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,SAAA;AAAM,aAAA;YACL,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,YAAY,EAAE,MAAM,EAAC,CAAC,CAAC,IAAI,CACtI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,SAAA;KACF;AAED;;;;;;;AAOG;IACI,eAAe,CAAC,EAAU,EAAE,OAAkB,EAAA;QACnD,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YACrB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1B,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,IAAI,GAAG,CAAC,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CACpD,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EACpC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACxB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;KACF;AAED;;;;;;AAMG;AACI,IAAA,eAAe,CAAC,UAAuB,EAAE,SAA4C,EAAE,yBAAmC,EAAE,UAAoB,EAAA;AAErJ,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAC3B,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,IAAI,IAAI,CAAC,OAAO,EAAE;gBAEhB,IAAI,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,cAAc,EAAE,CAAA,KAAA,EAAQ,IAAI,CAAC,OAAO,CAAC,EAAE,CAAiB,cAAA,EAAA,IAAI,CAAC,OAAO,CAAC,IAAI,+BAA+B,CAAC,CAAC,UAAU,CAAA,CAAE,CAAC;AACzI,gBAAA,IAAI,SAAS,EAAE;AACb,oBAAA,GAAG,IAAI,CAAc,WAAA,EAAA,SAAS,CAAqB,kBAAA,EAAA,SAAS,EAAE,CAAC;AAChE,iBAAA;AAAM,qBAAA;oBACL,GAAG,IAAI,mBAAmB,CAAC;AAC5B,iBAAA;gBACD,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE;AAC/B,oBAAA,GAAG,IAAI,CAAY,SAAA,EAAA,IAAI,CAAC,OAAO,EAAE,CAAC;AACnC,iBAAA;AACD,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,yBAAyB,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AACrE,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,IAAI,CAAC,CAAC;AACnE,aAAA;AACF,SAAA;AAED,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,IAAI,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,cAAc,EAAE,mBAAmB,CAAC;YACtD,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC1D,gBAAA,MAAM,IAAI,GAAG;AACX,oBAAA,KAAK,EAAE;AACL,wBAAA,UAAU,EAAE,CAAC,GAAG,WAAW,CAAC;AAC7B,qBAAA;AACD,oBAAA,OAAO,EAAE;AACP,wBAAA,SAAS,EAAE,EAAE;AACd,qBAAA;iBACF,CAAC;AACF,gBAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC;AAClD,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,yBAAyB,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;AAChF,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,IAAI,CAAC,CAAC;AACnE,aAAA;AACF,SAAA;KACF;IAEM,QAAQ,CAAC,GAAW,EAAE,OAAgB,EAAA;QAC3C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAC,CAAC;AAC9G,aAAA,SAAS,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,SAAS,CAAC,MAAM,CACd,GAAG,CAAC,IAAI,EACR,IAAI,CAAC,2BAA2B,CAAC,GAAG,EAAE,OAAO,CAAC,CAC/C,CAAC;AACJ,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,aAAa,CAAC,GAAW,EAAE,OAAgB,EAAE,KAAW,EAAA;QAC7D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,EAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAC,CAAC;AACtH,aAAA,SAAS,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,SAAS,CAAC,MAAM,CACd,GAAG,CAAC,IAAI,EACR,IAAI,CAAC,2BAA2B,CAAC,GAAG,EAAE,OAAO,CAAC,CAC/C,CAAC;AACJ,SAAC,CAAC,CAAC;KACN;IAEO,2BAA2B,CAAC,GAAsB,EAAE,OAAe,EAAA;AACzE,QAAA,MAAM,wBAAwB,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;AAC9E,QAAA,MAAM,0BAA0B,GAAG,wBAAwB,CAAC,KAAK,CAAC,2BAA2B,CAAC;AACzF,eAAA,wBAAwB,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACzD,QAAA,MAAM,eAAe,GAAG,0BAA0B,GAAG,0BAA0B,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAC1F,QAAA,MAAM,QAAQ,GAAG,eAAe,GAAG,kBAAkB,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;QACnF,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACxF,QAAA,OAAO,CAAC,OAAO,GAAG,QAAQ,GAAG,CAAA,EAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAK,EAAA,EAAA,OAAO,CAAG,EAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;KAChG;AAGD;;;;AAIG;IACK,iBAAiB,GAAA;QACvB,OAAO,IAAI,WAAW,CAAC;AACrB,YAAA,cAAc,EAAE,kBAAkB;AAClC,YAAA,oBAAoB,EAAE,OAAO;AAC7B,YAAA,sBAAsB,EAAE,OAAO;AAC/B,YAAA,iBAAiB,EAAE,MAAM;AAC1B,SAAA,CAAC,CAAC;KACJ;;AA9WU,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,8CAYf,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAC,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAZV,cAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;8BAaI,MAAM;+BAAC,WAAW,CAAA;;;;ACpDvB;;;;AAIG;MAIU,eAAe,CAAA;IAiB1B,WAAsB,CAAA,OAAqB,EAAU,UAAsB,EAAA;AAArD,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAc;AAAU,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAf3E;;AAEG;AACI,QAAA,IAAiB,CAAA,iBAAA,GAAG,qCAAqC,CAAC;AACjE;;AAEG;AACI,QAAA,IAAK,CAAA,KAAA,GAAG,0BAA0B,CAAC;AAC1C;;AAEG;AACI,QAAA,IAAgB,CAAA,gBAAA,GAAG,sCAAsC,CAAC;AAEzD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;;AAIjD,QAAA,MAAM,CAAC,mBAAmB,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;KAC1I;AAED;;;;;;AAMG;AACI,IAAA,OAAO,CAAC,GAAW,EAAE,KAAU,EAAE,WAAmB,GAAG,EAAA;QAC5D,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACzC,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC3B,gBAAA,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,gBAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;gBACnG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACjC,aAAA;AACD,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,YAAA,OAAOF,EAAY,CAAC,IAAI,CAAC,CAAC;AAC3B,SAAA;KACF;AAED;;;;AAIG;AACI,IAAA,OAAO,CAAC,GAAW,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;AAC7B,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,IAAS,KAAI;;YAEtB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SACvE,CAAC,CAAC,CAAC;KACP;AAED;;;;AAIG;AACI,IAAA,UAAU,CAAC,GAAW,EAAA;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KACrC;AAED;;;;AAIG;AACI,IAAA,KAAK,CAAC,MAAyB,EAAA;AACpC,QAAA,OAAO,MAAM;AACX,cAAE,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CACxB,SAAS,CAAC,CAAC,IAAI,KAAI;AACjB,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,gBAAA,OAAO,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AACvE,aAAC,CAAC,CACH;AACH,cAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KAC1B;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,UAAU,CAAW,CAAC,QAAQ,KAAI;YAC3C,MAAM,IAAI,GAAG,EAAE,CAAC;AAChB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC;gBAC/B,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC7B,QAAQ,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,aAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KAClB;IAED,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAC/B,SAAS,CAAC,CAAC,IAAI,KACb,IAAI,CAAC,MAAM;AACT,cAAE,QAAQ,CACN,KAAK,CAAC,aAAa,CACjB,IAAI,EACJ,CAAC,CAAC,KAAK,CAAC,EACR,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACvB,CACF;AACH,cAAE,EAAE,CAAC,EAAE,CAAC,CACX,CACF,CAAC;KACH;AAED,IAAA,UAAU,CAAC,OAAY,EAAA;AACrB,QAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACrF;AAED,IAAA,cAAc,CAAC,QAAa,EAAA;AAC1B,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACnD,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1B,SAAA;KACF;;4GAnHU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACKD;;AAEG;MAIU,aAAa,CAAA;AAWxB,IAAA,WAAA,CAAoB,OAAuB,EACvB,MAAc,EACd,YAA0B,EAC1B,QAAyB,EAAA;AAHzB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;AACvB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AACd,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;AAXrC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,aAAa,EAAO,CAAC;QACzC,IAAA,CAAA,OAAO,GAAoB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;;AAG3D,QAAA,IAAe,CAAA,eAAA,GAAU,EAAE,CAAC;AAE5B,QAAA,IAAW,CAAA,WAAA,GAAc,EAAE,CAAC;AAMlC,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC,SAAS,CAAC,MAAK;AAC3E,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,SAAC,CAAC,CAAA;KACH;IAED,IAAI,MAAM,CAAC,CAAC,EAAA;AACV,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;KAClB;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;KACjD;AAED;;;;AAIG;IACI,cAAc,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAC1B;AAED;;;;;AAKG;AACI,IAAA,aAAa,CAAC,cAAsB,EAAA;AACzC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;KAC/D;AAED;;;;;;AAMG;AACH,IAAA,4BAA4B,CAAC,cAAsB,EAAE,SAAiB,EAAE,aAAuB,EAAA;QAC7F,OAAO,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,SAAS,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC,IAAI,CAC7F,SAAS,CAAC,KAAK,IAAG;YAChB,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC/C,YAAA,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;SACvB,CAAC,CAAC,CAAA;KACJ;IAEO,wBAAwB,CAAC,KAAU,EAAE,QAAe,EAAA;AAC1D,QAAA,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAG;YACzB,IAAG,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,EAAE;AACtD,gBAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,aAAA;iBAAM,IAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE;AACzC,gBAAA,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5C,aAAA;AACH,SAAC,CAAC,CAAA;KACH;AAED;;;;AAIG;IACI,cAAc,CAAC,IAAgB,EAAE,aAAqB,EAAA;QAC3D,OAAO,IAAI,CAAC,IAAI,KAAK,aAAa,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC1G;AAED;;;;;AAKG;AACI,IAAA,aAAa,CAAC,EAAU,EAAA;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;KACxE;AAED;;;;;;;AAOG;AACI,IAAA,iBAAiB,CAAC,cAAsB,EAAE,SAAiB,EAAE,IAAa,EAAA;;AAG/E,QAAA,IAAI,UAAU,CAAC;QAEf,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;YACrD,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc;gBACjD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI;gBACrC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE;AACjD,gBAAA,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACtC,aAAA;AACD,YAAA,CAAC,EAAE,CAAC;AACL,SAAA;AAED,QAAA,IAAI,UAAU,EAAE;;YAEd,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AACpC,SAAA;AAAM,aAAA;AAEL,YAAA,IAAI,GAAG,GAAG,CAAA,SAAA,EAAY,cAAc,CAAc,WAAA,EAAA,SAAS,EAAE,CAAC;AAC9D,YAAA,GAAG,IAAI,CAAC,CAAC,IAAI,GAAG,CAAa,UAAA,EAAA,IAAI,CAAE,CAAA,GAAG,EAAE,CAAC;;AAGzC,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,OAAO;iBACxD,OAAO,CAAC,GAAG,CAAC;iBACZ,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAC9D,CAAC,CAAC;AACN,SAAA;KACF;AAED;;;;;;;AAOG;AACI,IAAA,mBAAmB,CAAC,IAAY,EAAA;AAErC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;AAEjB,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiCzC;AAED;;;;;AAKG;AACI,IAAA,eAAe,CAAC,SAAiB,EAAA;AACtC,QAAA,IAAI,YAAY,CAAC;AACjB,QAAA,QAAQ,SAAS;YACf,KAAK,cAAc,EAAE;AACnB,gBAAA,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9B,MAAM;AACP,aAAA;YACD,KAAK,mBAAmB,EAAE;AACxB,gBAAA,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC/B,MAAM;AACP,aAAA;YACD,KAAK,kBAAkB,EAAE;AACvB,gBAAA,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC1B,MAAM;AACP,aAAA;YACD,KAAK,cAAc,EAAE;AACnB,gBAAA,YAAY,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC5D,MAAM;AACP,aAAA;YACD,KAAK,MAAM,EAAE;AACX,gBAAA,YAAY,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC/B,MAAM;AACP,aAAA;YACD,KAAK,OAAO,EAAE;gBACZ,YAAY,GAAG,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACpC,MAAM;AACP,aAAA;YACD,KAAK,KAAK,EAAE;AACV,gBAAA,YAAY,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC/B,MAAM;AACP,aAAA;YACD,KAAK,MAAM,EAAE;AACX,gBAAA,YAAY,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC/B,MAAM;AACP,aAAA;YACD,KAAK,QAAQ,EAAE;AACb,gBAAA,YAAY,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;gBACjC,MAAM;AACP,aAAA;YACD,KAAK,QAAQ,EAAE;AACb,gBAAA,YAAY,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;gBACjC,MAAM;AACP,aAAA;YACD,KAAK,cAAc,EAAE;AACnB,gBAAA,YAAY,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;gBAClC,MAAM;AACP,aAAA;YACD,KAAK,mBAAmB,EAAE;gBACxB,YAAY,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;gBACpD,MAAM;AACP,aAAA;YACD,KAAK,oBAAoB,EAAE;gBACzB,YAAY,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;gBAClD,MAAM;AACP,aAAA;YACD,KAAK,mBAAmB,EAAE;gBACxB,YAAY,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;gBACjD,MAAM;AACP,aAAA;AACF,SAAA;AAED,QAAA,OAAO,YAAY,CAAC;KACrB;AAED;;;;;;AAMG;AACH,IAAA,qBAAqB,CAAC,IAAY,EAAA;AAEhC,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gDAAgD,CAAC;AACtE,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC;SACtD,CAAC;QAEF,OAAOC,QAAkB,CAAC,OAAO,CAAC;aAC/B,IAAI,CACH,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,KAAI;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iEAAiE,EAAE,KAAK,CAAC,CAAC;AAC5F,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;SAC5F,CAAC,CAAC,EACH,GAAG,CAAC,CAAC,IAAI,KAAI;AAEX,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC1B,YAAA,MAAM,MAAM,GAAG;AACb;;AAEG;AACH,gBAAA,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI,CAAC,EAAE;AACb,oBAAA,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE;AAC9B,oBAAA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;AAC7B,iBAAA;AACD;;AAEG;AACH,gBAAA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;AACrC;;AAEG;AACH,gBAAA,KAAK,EAAE,EAAE;AACT;;AAEG;AACH,gBAAA,WAAW,EAAE,EAAE;aAChB,CAAC;AAEF,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,YAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,YAAA,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAE7B,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,GAAG,IAAI,CAAC,EAAE,GAAG,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AAC7H,YAAA,IAAI,CAAC,QAAQ;iBACV,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;iBAChD,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;aAC5C,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,oDAAoD,CAAC,CAAC,CAAC;AAEjF,YAAA,OAAO,IAAI,CAAC;SACb,CAAC,CAAC,CAAC;KACT;AAED;;;AAGG;AACH,IAAA,yBAAyB,CAAC,EAAU,EAAA;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAoB,iBAAA,EAAA,EAAE,CAAE,CAAA,CAAC,CAAA;KACtD;AAED;;;;;AAKG;AACH,IAAA,qBAAqB,CAAC,IAAY,EAAA;QAChC,OAAO,IAAI,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACrE;AAED;;;;;AAKG;AACH,IAAA,sBAAsB,CAAC,KAAe,EAAA;QACpC,MAAM,OAAO,GAAuC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,IAAI,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,EAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnL,QAAA,OAAOA,QAAkB,CAAC,OAAO,CAAC,CAAC;KACpC;AAED;;;;AAIG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAC3B,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7B,SAAA;AAAM,aAAA;YACL,OAAO,IAAI,CAAC,OAAO;iBAChB,GAAG,CAAC,oBAAoB,CAAC;iBACzB,IAAI,CACH,GAAG,CAAC,CAAC,IAAI,CAAc,CAAC,EACxB,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,GAAG,KAAkB,CAAC,CAAC,CACtD,CAAC;AACL,SAAA;KACF;;0GArWU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACnBD;;AAEG;MAIU,mBAAmB,CAAA;AAI9B;;AAEG;AACH,IAAA,WAAA,CAAoB,MAAqB,EAAA;AAArB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;KACxC;AAED;;;;;;AAMG;IACH,eAAe,CAAC,gBAAqB,EAAE,eAAyB,EAAA;QAE9D,IAAI,CAAC,YAAY,GAAG;YAClB,GAAG,EAAE,gBAAgB,CAAC,GAAG;YACzB,SAAS,EAAE,gBAAgB,CAAC,SAAS;YACrC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;YACnC,YAAY,EAAE,gBAAgB,CAAC,YAAY;YAC3C,MAAM,EAAE,gBAAgB,CAAC,MAAM;YAC/B,aAAa,EAAE,gBAAgB,CAAC,aAAa;YAC7C,UAAU,EAAE,gBAAgB,CAAC,UAAU;YACvC,KAAK,EAAE,gBAAgB,CAAC,GAAG,IAAI,gBAAgB,CAAC,QAAQ,IAAI,gBAAgB,CAAC,YAAY;AACzF,YAAA,aAAa,EAAE,gBAAgB,CAAC,QAAQ,IAAI,gBAAgB,CAAC,YAAY;YACzE,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;YACnC,GAAG,EAAE,eAAe,IAAI,KAAK;SAC9B,CAAC;QACF,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAED;;AAEG;IACH,eAAe,GAAA;AACb,QAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAW,IAAI,CAAC,YAAY,CAAE,EAAA,EAAA,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,CAAA,CAAA;KACnF;AAED;;;;AAIG;AACH,IAAA,aAAa,CAAC,UAAkB,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;KACtC;;gHAjDU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACPD;;AAEG;MACU,SAAS,CAAA;AAkDpB;;;AAGG;AACH,IAAA,WAAA,CAAY,IAAS,EAAA;;;AAInB,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACpC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;QACpD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;AAC3E,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;AACjC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;KAC3B;AAED;;;AAGG;IACH,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;KAChE;;AA3Ea,SAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,SAAiB,CAAA,iBAAA,GAAG,cAAc,CAAC;AACnC,SAAiB,CAAA,iBAAA,GAAG,cAAc;;ACFlD;;AAEG;MAIU,YAAY,CAAA;AAcvB,IAAA,WAAA,CAAoB,OAAuB,EAAA;AAAvB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;;AAXnC,QAAA,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;QAGrB,IAAA,CAAA,gBAAgB,GAAG,IAAI,aAAa,CAAa,CAAC,CAAC,CAAC;QACrD,IAAA,CAAA,WAAW,GAA2B,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;QAG1E,IAAA,CAAA,gBAAgB,GAAG,IAAI,aAAa,CAAc,CAAC,CAAC,CAAC;QACtD,IAAA,CAAA,mBAAmB,GAA4B,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;AACpF,QAAA,IAAA,CAAA,WAAW,GAA4B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;KAGxG;AAED;;;;AAIG;IACH,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,WAAW,EAAE;aACtB,IAAI,CACH,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAChD,GAAG,CAAC,GAAG,IAAG;AACR,YAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YACtB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC7C,CACA,EACD,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACpE;IAEO,WAAW,GAAA;QACjB,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CACxB,MAAM,CAAC,GAAG,IAAG;YACX,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;AACtE,SAAC,CAAC,EACF,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,EAC9C,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAC3B,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAChB,CAAA;KACF;AAEO,IAAA,OAAO,CAAC,KAAc,EAAA;QAC5B,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,OAAO,CAAC,CAAa,UAAA,EAAA,IAAI,CAAC,aAAa,CAAA,MAAA,EAAS,KAAK,IAAI,CAAC,CAAE,CAAA,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;KAC9F;AAED;;;;AAIG;IACH,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AAED;;AAEG;IACH,iBAAiB,GAAA;QACf,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;AAED;;AAEG;IACK,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,OAAO;aACT,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;aAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAiB,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,IAAG;AACf,YAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YACtB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC7C,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC,CAAC;KAC5D;AAED;;;;;AAKG;AACH,IAAA,UAAU,CAAC,IAAe,EAAA;QACxB,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;AAC/C,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAC1C,CAAC;KACL;AAED;;;;;;AAMG;AACI,IAAA,gBAAgB,CAAC,EAAW,EAAE,IAAU,EAAE,KAAa,EAAA;QAC5D,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC,CAAC,EAAE;YAC/D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7C,SAAA;KACF;AAED;;;;;AAKG;AACH,IAAA,UAAU,CAAC,IAAe,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;KAC1E;;yGAnHU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACED;;;;;;;;;AASG;MAIU,UAAU,CAAA;AAUrB,IAAA,WAAA,CAAoB,YAAiC,EAC3C,OAAuB,EACvB,YAA0B,EAC1B,YAA0B,EAAA;AAHhB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAqB;AAC3C,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;AACvB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAT5B,IAAA,CAAA,kBAAkB,GAAG,IAAI,aAAa,CAAY,CAAC,CAAC,CAAC;AAC7D;;AAEG;QACH,IAAA,CAAA,aAAa,GAA0B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAM7E;AAED;;;;;AAKG;IACH,YAAY,CAAC,OAAe,IAAI,EAAA;QAC9B,OAAO,IAAI,CAAC,OAAO;aAChB,OAAO,CAAC,CAAsB,mBAAA,EAAA,IAAI,CAAE,CAAA,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;AAChE,aAAA,IAAI,CACH,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAChE,GAAG,CAAC,CAAC,SAAoB,KAAI;AAC3B,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACjD,CAAC,CACH,CAAC;KACL;AAED;;;;;;;;AAQG;IACH,sBAAsB,CAAC,KAAgB,EAAE,SAAmB,EAAE,cAAwB,EAAE,OAAgB,EAAE,MAAgB,EAAA;QACxH,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC1C,YAAA,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,IAAI,SAAS,IAAIL,EAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACnK,SAAA;AAAM,aAAA;AACL,YAAA,OAAOA,EAAY,CAAC,EAAE,CAAC,CAAC;AACzB,SAAA;KACF;IAED,uBAAuB,GAAA;QACrB,IAAI,GAAG,GAAG,yBAAyB,CAAC;AACpC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,0BAA0B,GAAG,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,MAAM,CAAC,CAAC,CAAC;KAC9F;AAED;;;;;AAKG;AACH,IAAA,mCAAmC,CAAC,UAAuB,EAAA;QACzD,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;KAClF;AAED;;;;;;AAMG;AACK,IAAA,wBAAwB,CAAC,KAAgB,EAAE,cAAwB,EAAE,OAAgB,EAAE,MAAgB,EAAA;QAC7G,IAAI,GAAG,GAAG,yBAAyB,CAAC;AACpC,QAAA,IAAI,cAAc,EAAE;YAClB,GAAG,IAAI,wBAAwB,CAAC;AACjC,SAAA;AACD,QAAA,IAAI,KAAK,EAAE;YACT,GAAG,IAAI,CAAC,cAAc,GAAG,GAAG,GAAG,GAAG,IAAI,QAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;AACjE,SAAA;AACD,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,GAAG,IAAI,CAAC,cAAc,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,IAAI,CAAW,QAAA,EAAA,OAAO,EAAE,CAAC;AACrE,SAAA;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAC/B,GAAG,CAAC,GAAG,IAAI,GAA0B,CAAC,EACtC,GAAG,CAAC,GAAG,IAAG;;AAER,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,cAAc,EAAE;AAClB,oBAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC7B,wBAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;AAC/B,qBAAA;AACD,oBAAA,GAAG,CAAC,OAAO,CAAC,IAAI,IAAG;wBACjB,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1F,wBAAA,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE;AAC5B,4BAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,yBAAA;AAAM,6BAAA;AACL,4BAAA,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;AACpD,yBAAA;AACH,qBAAC,CAAC,CAAC;AACJ,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC;AAChC,iBAAA;AACF,aAAA;SACF,CAAC,CAAC,CAAC;KACP;AAED;;;;AAIG;AACH,IAAA,cAAc,CAAC,SAAiB,EAAA;QAC9B,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,OAAO,CAAC,CAAA,SAAA,EAAY,SAAS,CAAA,KAAA,CAAO,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CACpE,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAG;YAC7B,OAAO;gBACL,EAAE,EAAE,CAAC,CAAC,SAAS;gBACf,KAAK,EAAE,CAAC,CAAC,KAAK;AACd,gBAAA,WAAW,EAAE,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,GAAG,EAAE;gBAC/C,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,IAAI,EAAE,CAAC,CAAC,IAAI;aACb,CAAC;SACH,CAAC,CAAC,CACJ,CAAC;KACL;AAED;;;;;;AAMG;AACH,IAAA,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAE,OAAa,EAAA;AAC1D,QAAA,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;AAC9D,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA,aAAA,EAAgB,SAAS,CAAa,UAAA,EAAA,MAAM,YAAY,EAAE,MAAM,CAAC,CAAC;AACtG,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;SAC/B,CAAC;QACF,OAAOI,QAAkB,CAAC,KAAK,CAAC,CAAC,IAAI,CACnC,GAAG,CAAC,GAAG,IAAG;YACR,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,YAAA,OAAO,EAAE,CAAC;SACX,CAAC,CAAC,CAAC;KACP;AAED;;;;AAIG;AACH,IAAA,YAAY,CAAC,IAAc,EAAA;QACzB,MAAM,EAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC;QACzC,MAAM,OAAO,GAAG,EAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC;QACvC,MAAM,MAAM,GAAG,EAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAC,CAAC;QAEnD,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAgB,aAAA,EAAA,SAAS,CAAa,UAAA,EAAA,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC;AAChG,aAAA,IAAI,CACH,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAChD,CAAC;KACL;AAED;;;;;AAKG;IACH,eAAe,CAAC,IAAc,EAAE,MAAuB,EAAA;QACrD,MAAM,MAAM,GAAG,EAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAC,CAAC;AACpD,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;QACF,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA,aAAA,EAAgB,IAAI,CAAC,SAAS,aAAa,IAAI,CAAC,EAAE,CAAiB,eAAA,CAAA,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC;AAC1G,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CACvD,CAAC;KACL;AAED;;;;;AAKG;AACH,IAAA,YAAY,CAAC,IAAc,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA,aAAA,EAAgB,IAAI,CAAC,SAAS,CAAa,UAAA,EAAA,IAAI,CAAC,EAAE,iBAAiB,CAAC;aACzF,IAAI,CACH,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAC1D,CAAC;KACL;AAED;;;;AAIG;AACH,IAAA,cAAc,CAAC,IAAc,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAgB,aAAA,EAAA,IAAI,CAAC,SAAS,aAAa,IAAI,CAAC,EAAE,CAAiB,eAAA,CAAA,CAAC,CAAC,IAAI,CAC/F,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAC1D,CAAC;KACH;AAED;;;;;AAKG;AACH,IAAA,YAAY,CAAC,mBAA2B,EAAE,IAAS,EAAE,QAAsC,EAAA;QACzF,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,sBAAA,EAAyB,mBAAmB,CAAA,CAAE,EAAE;AACvE,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,QAAQ,EAAE,QAAQ;AACnB,SAAA,CAAC,CAAC;KACJ;AAED;;;;;AAKG;AACH,IAAA,iBAAiB,CAAC,SAAiB,EAAA;QACjC,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,OAAO,CAAC,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,CAAU,CAAC;AAC5C,aAAA,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;KAC/F;AAED;;;;;AAKG;AACH,IAAA,iBAAiB,CAAC,SAAiB,EAAE,UAAkB,EAAE,iBAAyB,EAAA;QAChF,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,GAAG,CAAC,CAAY,SAAA,EAAA,SAAS,CAAS,MAAA,EAAA,iBAAiB,eAAe,UAAU,CAAA,CAAE,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;KAC/G;AAED;;;;;;AAMG;AACH,IAAA,eAAe,CAAC,SAAiB,EAAE,UAAkB,EAAE,QAAqB,EAAA;QAC1E,MAAM,KAAK,GAAG,EAAE,CAAC;AACjB,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACrB,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAC1B,YAAY,SAAS,CAAA,MAAA,EAAS,CAAC,CAAC,EAAE,CAAS,MAAA,EAAA,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA,YAAA,EAAe,UAAU,CAAA,CAAE,EACjF,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACpC,SAAC,CAAC,CAAC;QACH,OAAOA,QAAkB,CAAC,KAAK,CAAC;AAC7B,aAAA,IAAI,CACH,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CACxD,CAAC;KACL;AAED;;;;;AAKG;IACH,4BAA4B,CAAC,QAAkB,EAAE,SAAoB,EAAA;QACnE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,oBAAoB,CAAC,GAAG,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,eAAe,CAAC,IAAI,EAAE;AAC1I,YAAA,IAAI,QAAqB,CAAC;AAC1B,YAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE;;AAExB,gBAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACnD,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/E,aAAA;AAAM,iBAAA;AACL,gBAAA,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;AAC/B,aAAA;AACD,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACxE,SAAA;AAAM,aAAA;AACL,YAAA,OAAON,UAAoB,CAAC,OAAO,CAAC,CAAC;AACtC,SAAA;KACF;;uGAhSU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAW,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,UAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACkED;;;;AAIG;MACU,YAAY,CAAA;AA+EvB;;AAEG;AACH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,EAAE,CAAC;KACzD;AAED;;;AAGG;AACH,IAAA,WAAA,CAAY,IAAS,EAAA;AACnB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC3B;AAED;;AAEG;IACH,UAAU,GAAA;QACR,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;KACjD;AAED;;;;AAIG;IACH,qBAAqB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;KACzC;AACF;;MC3MY,YAAY,CAAA;AAqCvB;;;;;AAKG;IACH,WAAmB,CAAA,EAAU,EACV,IAAY,EAAA;AADZ,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAQ;AACV,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;KAE9B;AAED;;;;;AAKG;AACI,IAAA,eAAe,CAAC,MAAW,EAAA;AAChC,QAAA,OAAO,MAAM,CAAC;KACf;AAED;;;;AAIG;IACI,YAAY,GAAA;AACjB,QAAA,OAAO,EAAE,CAAC;KACX;;AA/DD;;AAEG;AACW,YAAI,CAAA,IAAA,GAAG,MAAM,CAAC;AAC5B;;AAEG;AACW,YAAO,CAAA,OAAA,GAAG,SAAS,CAAC;AAClC;;AAEG;AACW,YAAY,CAAA,YAAA,GAAG,aAAa,CAAC;AAC3C;;AAEG;AACW,YAAM,CAAA,MAAA,GAAG,QAAQ,CAAC;AAChC;;AAEG;AACW,YAAM,CAAA,MAAA,GAAG,QAAQ;;ACxBrB,IAAA,UAGX;AAHD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACb,CAAC,EAHW,SAAS,KAAT,SAAS,GAGpB,EAAA,CAAA,CAAA;;ACcD;;;;;;;;;;AAUG;MAIU,WAAW,CAAA;AAyCtB;;AAEG;AACH,IAAA,WAAA,CAAoB,OAAuB,EACvB,SAA2B,EAC3B,MAAc,EACd,YAA0B,EAC1B,MAAqB,EACrB,IAAgB,EAChB,MAAc,EAAA;AANd,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;AACvB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;AAC3B,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AACd,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;AACrB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAChB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAhDlC,QAAA,IAAc,CAAA,cAAA,GAAG,kFAAkF,CAAC;AAE5F,QAAA,IAAI,CAAA,IAAA,GAAW,IAAI,CAAC;QACpB,IAAU,CAAA,UAAA,GAAG,IAAI,eAAe,CAAS,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5D;;AAEG;QACI,IAAA,CAAA,KAAK,GAAoB,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;AAEvD,QAAA,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;QACjB,IAAe,CAAA,eAAA,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC,SAAS,CAAC,CAAC;AACnE;;AAEG;QACI,IAAkB,CAAA,kBAAA,GAAoB,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClH,QAAA,IAAA,CAAA,UAAU,GAAoB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAEvF,QAAA,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;QACrB,IAAmB,CAAA,mBAAA,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC,aAAa,CAAC,CAAC;AAE3E;;AAEG;AAEK,QAAA,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;QAChB,IAAc,CAAA,cAAA,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1D,IAAiB,CAAA,iBAAA,GAAqB,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjH,QAAA,IAAA,CAAA,SAAS,GAAoB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAG7F;;AAEG;QACI,IAAsB,CAAA,sBAAA,GAAoB,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1H,QAAA,IAAA,CAAA,cAAc,GAAoB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;KActG;AAED;;;AAGG;IACI,cAAc,GAAA;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;AAGD;;;AAGG;AACI,IAAA,WAAW,CAAC,OAAgB,EAAA;AAEjC,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,OAAO,CAAC;AACjD,iBAAA,IAAI,CACH,GAAG,CAAC,CAAC,IAAG;AACN,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACjC,CAAC,CACH,CAAA;AACJ,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,SAAA;KACF;AAED;;;;AAIG;AAEI,IAAA,YAAY,CAAC,GAAW,EAAA;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KACjC;AAEM,IAAA,YAAY,CAAC,IAAU,EAAA;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAa,WAAA,CAAA,EAAC,IAAI,CAAC,CAAC;KAC7C;AAED;;;AAGG;AACI,IAAA,WAAW,CAAC,aAAuB,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA,kBAAA,EAAqB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAC/E,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,CAAC,CACjD,CAAC;KACH;AAED;;;AAGG;AACI,IAAA,kBAAkB,CAAC,GAAW,EAAA;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC;AAC7C,QAAA,IAAI,CAAC,OAAO;aACT,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;aAC/C,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC;YAC7G,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;AACnE,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;AACI,IAAA,kBAAkB,CAAC,GAAW,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,OAAO,IAAI,CAAC,OAAO;aAChB,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;AAC7C,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;YAC9D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AACvE,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;AAC/D,YAAA,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;YACvD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;SAClE,CAAC,CAAC,CAAC;KACT;AAED;;;AAGG;AACI,IAAA,cAAc,CAAC,GAAQ,EAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,0BAA0B,GAAG,GAAG,CAAC,kBAAkB,CAAC;AACzD,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAEvE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QACvE,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AACtC,YAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;AACjD,SAAA;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC;QAElH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEhC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAE1C,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACnD;AAED;;AAEG;IACI,YAAY,GAAA;;;QAIjB,OAAO,IAAI,CAAC,OAAO;aAChB,OAAO,CAAC,iBAAiB,CAAC;AAC1B,aAAA,IAAI,CACH,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC,EACnE,GAAG,CAAC,GAAG,IAAG;AACR,YAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YACrB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC3C,CAAC,CAAC,CAAC;;;;;KAMT;AAED;;;;;AAKG;AACI,IAAA,eAAe,CAAC,EAAW,EAAE,IAAU,EAAE,KAAa,EAAA;QAC3D,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC,CAAC,EAAE;YAC9D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3C,SAAA;KACF;AAED;;;AAGG;IACI,gBAAgB,GAAA;AACrB,QAAA,MAAM,gBAAgB,GAAG;YACvB,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,eAAe,EAAE;SACvB,CAAC;AACF,QAAA,OAAO,QAAQ,CAAC,gBAAgB,CAAC,CAAC;KACnC;AAED;;;AAGG;IACI,eAAe,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,IAAI,CACpE,GAAG,CAAC,QAAQ,IAAG;AACb,YAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;YAC9B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACnD,CAAC,CAAC,CAAC;KACP;AAED;;;AAGG;IACI,eAAe,GAAA;QACpB,OAAO,IAAI,CAAC,OAAO;aAChB,OAAO,CAAC,oCAAoC,CAAC,CAAC,IAAI,CACjD,GAAG,CAAC,QAAQ,IAAG;AACb,YAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;YAC9B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACnD,CAAC,CAAC,CAAC;KACT;AAED;;;;AAIG;IACI,mBAAmB,CAAC,EAAU,EAAE,IAAY,EAAA;AACjD,QAAA,IAAI,WAAmB,CAAC;AACxB,QAAA,QAAQ,IAAI;AACV,YAAA,KAAK,cAAc;gBACjB,WAAW,GAAG,cAAc,CAAC;gBAC7B,MAAM;AACR,YAAA,KAAK,cAAc;gBACjB,WAAW,GAAG,cAAc,CAAC;gBAC7B,MAAM;AACR,YAAA;gBACE,OAAO;AACV,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAoB,iBAAA,EAAA,WAAW,CAAG,CAAA,CAAA,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KACjH;AAED;;AAEG;AACI,IAAA,mBAAmB,CAAC,EAAW,EAAE,IAAU,EAAE,KAAa,EAAA;QAC/D,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC,CAAC,EAAE;YAClE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACnD,SAAA;KACF;AAED;;;;AAIG;AACI,IAAA,eAAe,CAAC,MAAc,EAAA;AACnC,QAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAuB,oBAAA,EAAA,MAAM,kBAAkB,CAAC;KACzH;AAED;;;AAGG;AACI,IAAA,cAAc,CAAC,UAAkB,EAAA;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC5G;AAED;;;;;AAKG;AACI,IAAA,cAAc,CAAC,EAAU,EAAE,IAAY,EAAE,KAAa,EAAA;AAC3D,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,gBAAgB,GAAG,EAAE,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAC;AACjE,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;KACrF;AAED;;AAEG;AACI,IAAA,wBAAwB,CAAC,EAAU,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CACrD,GAAG,IAAG;AACJ,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC;gBACrF,EAAE,EAAE,CAAC,CAAC,EAAE;AACT,aAAA,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;SAC5C,CAAC,CAAC,CAAC;KACP;AAED;;AAEE;IACF,aAAa,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA,gBAAA,CAAkB,CAAC,CAAC,IAAI,CACnD,GAAG,CAAC,QAAQ,IAAE;AACZ,YAAA,IAAI,CAAC,QAAQ,GAAC,QAAQ,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACzC,CAAC,CAAC,CAAC;KACN;AAEF;;;AAGG;AACI,IAAA,iBAAiB,CAAC,IAAY,EAAA;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AAChF,YAAA,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,CAAC;SACvC,CAAC,CAAC,CAAC;KACL;AAEM,IAAA,YAAY,CAAC,SAAiB,EAAA;QACnC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;KACrE;AAGD;;AAEG;AACH,IAAA,cAAc,CAAC,OAAgC,EAAA;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAgB,cAAA,CAAA,EAAE,OAAO,CAAC,CAAC;KACpD;AAED;;AAEG;IACK,kBAAkB,GAAA;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACzF;AAEM,IAAA,gBAAgB,CAAC,QAAgB,EAAA;QACtC,IAAI,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE;AAC/D,YAAA,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAC,CAAC;AAC3E,SAAA;AAED,QAAA,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE;AACtF,YAAA,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAC,CAAC;AAC5E,SAAA;AAED,QAAA,IAAI,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,eAAe,EAAE;AACnG,YAAA,OAAO,EAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,0BAA0B,CAAC,eAAe,EAAC,CAAC;AACxF,SAAA;QAED,OAAQ,EAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;KACvC;AAED;;;AAGG;AACI,IAAA,uBAAuB,CAAC,WAAqB,EAAA;QAClD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,WAAW,CAAC;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AAChF,YAAA,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,CAAC;SACvC,CAAC,CAAC,CAAC;KACL;AAED;;;AAGG;AACI,IAAA,mBAAmB,CAAC,eAA0C,EAAA;QACnE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,eAAe,CAAC;QAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AAChF,YAAA,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,CAAC;SACvC,CAAC,CAAC,CAAC;KACL;AAED;;;AAGG;AAEI,IAAA,kBAAkB,CAAC,IAAY,EAAA;QACpC,MAAM,WAAW,GAAG,WAAW,CAAC;QAChC,IAAI,IAAI,GAAG,KAAK,CAAC;AACjB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA,oBAAA,EAAuB,IAAI,CAAA,aAAA,EAAgB,WAAW,CAAA,MAAA,EAAS,IAAI,CAAA,CAAE,CAAC,CAAC;KAChG;AAED;;;AAGG;AACI,IAAA,gBAAgB,CAAC,iBAA0B,EAAA;QAChD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AAChF,YAAA,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,CAAC;SACvC,CAAC,CAAC,CAAC;KACL;AAED;;;;AAIG;IACI,iBAAiB,CAAC,aAAkB,EAAE,aAAkB,EAAA;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,EAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AAChI,YAAA,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,CAAC;SACvC,CAAC,CAAC,CAAC;KACL;AAED;;;AAGG;IACI,iBAAiB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;KACrF;;wGA5aU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,WAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACrBD;;AAEG;MAIU,aAAa,CAAA;AACxB;;AAEG;AACH,IAAA,WAAA,CAC8B,UAAsB,EAC1C,IAAgB,EAAU,WAAwB,EAAA;AAD9B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAC1C,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAAU,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;KAC3D;AAED;;;;;;AAMG;IACH,MAAM,CAAC,GAAW,EAAE,KAAa,EAAA;AAC/B,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAChC,QAAA,MAAM,OAAO,GAAgB,IAAI,WAAW,CAAC,EAAC,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,EAAC,CAAC,CAAC;QACvH,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAC,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAC,CAAC,CAAC;KACnG;;AArBU,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,kBAKd,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAd,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAe,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AALV,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;8BAMI,MAAM;+BAAC,WAAW,CAAA;;;;ACKvB;;AAEG;MAIU,cAAc,CAAA;IAUzB,WAAoB,CAAA,OAAuB,EACvB,aAA4B,EAAA;AAD5B,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;AACvB,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QARxC,IAAA,CAAA,mBAAmB,GAAG,IAAI,aAAa,CAAiB,CAAC,CAAC,CAAC;QAC5D,IAAA,CAAA,cAAc,GAA+B,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;QAGpF,IAAA,CAAA,uBAAuB,GAAG,IAAI,aAAa,CAAS,CAAC,CAAC,CAAC;QACxD,IAAA,CAAA,kBAAkB,GAAuB,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,CAAC;AA2B5F;;;;;;AAMG;AACH,QAAA,IAAC,CAAA,CAAA,GAAG,CAAC,CAAC;KA9BL;AAED;;AAEG;IACH,yBAAyB,GAAA;QACvB,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;AAED;;AAEG;IACK,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACnC,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CACxB;AACA,aAAA,SAAS,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC;YAC7B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC5D,SAAC,CAAC,CAAC;KACN;IAUM,kBAAkB,CAAC,QAAgB,EAAE,SAAkB,EAAA;AAChE,QAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,IAAI,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC;AACnC,YAAA,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI;SACxC,CAAC,EAAE,EAAE,CAAC;AACN,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CACpC,CAAC;KACL;AAED;;;;;AAKG;IACI,2BAA2B,CAAC,cAAc,EAAE,IAAI,EAAA;QACrD,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,GAAG,CAAC,WAAW,GAAG,cAAc,EAAE,IAAI,CAAC;AACvC,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CACpC,CAAC;KACL;AAED;;;;;AAKG;AACI,IAAA,yBAAyB,CAAC,MAAyB,EAAA;AAExD,QAAA,IAAI,GAAG,GAAG,MAAM,CAAC,UAAU,GAAG,qBAAqB,GAAG,iBAAiB,CAAC;AACxE,QAAA,IAAI,MAAM,EAAE;YACV,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACnC,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;AAED;;;;;AAKG;AACI,IAAA,iBAAiB,CAAC,OAAiB,EAAA;QACxC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;AAED;;;;;AAKG;AACK,IAAA,kBAAkB,CAAC,OAAiB,EAAA;AAC1C,QAAA,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,UAAU,GAAG,oBAAoB,CAAC;QACxD,OAAO,IAAI,CAAC,OAAO;aAChB,OAAO,CAAC,GAAG,CAAC;AACZ,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EACpD,GAAG,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC,EACzC,GAAG,CAAC,CAAC,aAA6B,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAC/H,CAAC;KACL;AAED;;;;;AAKG;AACH,IAAA,kBAAkB,CAAC,cAAsB,EAAA;QACvC,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,GAAG,CAAC,CAAA,SAAA,EAAY,cAAc,CAAA,CAAE,CAAC;AACjC,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CACpC,CAAC;KACL;AAED;;;;AAIG;IACI,mBAAmB,GAAA;QACxB,OAAO,IAAI,CAAC,OAAO;aAChB,eAAe,CAAC,gBAAgB,CAAC;aACjC,IAAI,CACH,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5D,CAAC;KACL;AAED;;;;;;AAMG;IACI,oBAAoB,CAAC,QAAgB,EAAE,eAAyB,EAAA;QACrE,MAAM,MAAM,GAAG,QAAQ,GAAG,EAAC,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAC,GAAG,EAAC,WAAW,EAAE,eAAe,EAAC,CAAA;QACnG,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,OAAO;aAChB,eAAe,CAAC,GAAG,CAAC;AACpB,aAAA,IAAI,CACH,GAAG,CAAC,GAAG,KAAK,EAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CACzF,CAAC;KACL;AAED;;;;;;;;AAQG;AACI,IAAA,aAAa,CAAC,EAAU,EAAE,KAAc,EAAE,SAAkB,EAAA;QACjE,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAY,SAAA,EAAA,EAAE,UAAU,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;KACrG;AAED;;;;;;AAMG;IACI,eAAe,CAAC,UAAkB,EAAE,cAAsB,EAAA;QAC/D,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,GAAG,CAAC,CAAY,SAAA,EAAA,cAAc,CAAI,CAAA,EAAA,UAAU,6BAA6B,CAAC;AAC1E,aAAA,IAAI,CACH,GAAG,CAAC,GAAG,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAClC,CAAC;KACL;AAED;;;;;;AAMG;IACI,WAAW,CAAC,cAAc,EAAE,UAAU,EAAA;QAC3C,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,GAAG,CAAC,CAAY,SAAA,EAAA,cAAc,CAAwB,qBAAA,EAAA,UAAU,EAAE,CAAC;AACnE,aAAA,IAAI,CACH,GAAG,CAAC,GAAG,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAClC,CAAC;KACL;AAED;;;;AAIG;AACI,IAAA,YAAY,CAAC,cAAsB,EAAA;QACxC,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,OAAO,CAAC,sBAAsB,GAAG,cAAc,CAAC;aAChD,IAAI,CACH,GAAG,CAAC,CAAC,GAAQ,KAAK,GAA6B,CAAC,CACjD,CAAC;KACL;AAED;;;;;;AAMG;IACI,qBAAqB,CAAC,EAAE,EAAE,SAAkB,EAAA;AACjD,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAG,EAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAA,UAAA,EAAa,EAAE,CAAU,QAAA,CAAA,EAAE,EAAC,SAAS,EAAC,CAAC,CAAC;KAC/F;AAED;;;;;;;;AAQG;AACI,IAAA,kBAAkB,CAAC,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAA;QAC1E,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,GAAG,CAAC,CAAY,SAAA,EAAA,cAAc,CAAI,CAAA,EAAA,gBAAgB,EAAE,CAAC;AACrD,aAAA,IAAI,CACH,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,cAAc,CAAA,CAAE,EAAE,gBAAgB,CAAC,CAAC,EACxF,GAAG,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,EACnC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CACnB,CAAC;KACL;AAED;;;;;;AAMG;IACH,aAAa,CAAC,cAAsB,EAAE,IAAU,EAAA;AAC9C,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAY,SAAA,EAAA,cAAc,0CAA0C,CAAC;QAClJ,OAAO,IAAI,CAAC,aAAa;AACtB,aAAA,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;aACnB,IAAI;;SAEJ,CAAC;KACL;AAED;;;;;;;AAOG;AACH,IAAA,cAAc,CAAC,YAA0B,EAAE,WAA6B,EAAE,cAAwB,EAAA;AAEhG,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,aAAa;aACtB,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,KAAK,CAAC;AACjE,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CACpC,CAAC;KACL;AAED;;;;;;AAMG;IACK,eAAe,CAAC,YAA0B,EAAE,cAAwB,EAAA;AAC1E,QAAA,IAAI,GAAG,CAAC;AAER,QAAA,IAAI,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE;AAC3C;;;;AAIG;AACH,YAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC;AAClG,gBAAA,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,CAAC,cAAc;AAC5B,aAAA,CACF,CAAC;AAEH,SAAA;AAAM,aAAA,IAAI,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE;AACpD;;AAEG;AACH,YAAA,MAAM,EAAC,eAAe,EAAC,GAAG,YAAY,CAAC;YACvC,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA,KAAA,EAAQ,eAAe,CAAC,EAAE,CAAA,eAAA,EAAkB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC;AAEhJ,SAAA;AAAM,aAAA,IAAI,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,YAAY,EAAE;AACxG;;;;;;AAMG;AACH,YAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC;AACpG,gBAAA,QAAQ,EAAE,YAAY,CAAC,eAAe,CAAC,EAAE;gBACzC,UAAU,EAAE,CAAC,cAAc;gBAC3B,SAAS,EAAE,YAAY,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI;AAChH,aAAA,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;AAED;;;;;;;;AAQG;IACI,yBAAyB,CAAC,cAAsB,EAAE,KAAc,EAAA;QACrE,MAAM,GAAG,GAAG,CAAY,SAAA,EAAA,cAAc,UAAU,IAAI,KAAK,KAAK,SAAS,GAAG,UAAU,KAAK,CAAA,CAAE,GAAG,EAAE,CAAC,CAAC;QAClG,OAAO,IAAI,CAAC,OAAO;aAChB,GAAG,CAAC,GAAG,CAAC;AACR,aAAA,IAAI,CACH,GAAG,CAAC,GAAG,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAClC,CAAC;KACL;;2GApVU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAb,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAc,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;AC9BW,IAAA,iBAMX;AAND,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,8BAAA,CAAA,GAAA,iBAAgD,CAAA;AAChD,IAAA,gBAAA,CAAA,2BAAA,CAAA,GAAA,cAA0C,CAAA;AAC1C,IAAA,gBAAA,CAAA,2BAAA,CAAA,GAAA,mBAA+C,CAAA;AAC/C,IAAA,gBAAA,CAAA,2BAAA,CAAA,GAAA,cAA0C,CAAA;AAC1C,IAAA,gBAAA,CAAA,6BAAA,CAAA,GAAA,gBAA8C,CAAA;AAChD,CAAC,EANW,gBAAgB,KAAhB,gBAAgB,GAM3B,EAAA,CAAA,CAAA;;MCOY,mBAAmB,CAAA;AAQ9B,IAAA,WAAA,CAAoB,YAA0B,EAAU,OAAuB,EAAU,QAAyB,EAAU,MAAc,EAAA;AAAtH,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAAU,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;AAAU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;AAAU,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AALlI,QAAA,IAAc,CAAA,cAAA,GAAG,kCAAkC,CAAC;AAGpD,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAQ,CAAC;AAGhD,QAAA,IAAI,CAAC,QAAQ;AACV,aAAA,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;aAC5B,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC;KACrD;AAED,IAAA,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC,EAAA;AAChC,QAAA,IAAI,wBAAwB,GAAG,CAAC,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,OAAO,EAAQ,CAAC;AAC/C,YAAA,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC;AAC7C,SAAA;KACF;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;KACrC;AAEO,IAAA,YAAY,CAAC,wBAAwB,EAAA;AAC3C,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AACjC,YAAA,IAAI,mBAAiC,CAAC;AACtC,YAAA,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC;AAC/B,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;iBACzC,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;;oBAEnB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;AACxE,iBAAC,CAAC,CAAC;;;;;;;;;;;AAYL,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,kBAAkB,CAAC,GAAkB,EAAA;QAC3C,MAAM,mBAAmB,GAAkC,EAAE,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;YAC7B,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;gBAC9B,mBAAmB,CAAC,IAAI,CAAC;AACvB,oBAAA,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAC3B,oBAAA,IAAI,EAAE,GAAG;AACV,iBAAA,CAAC,CAAC;AACJ,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,mBAAmB,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;;;AAGrD,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,gBAAA,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAG;AAC9B,oBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5C,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACJ,SAAA;QAED,IAAI,mBAAmB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACrD,YAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;AACjD,SAAA;KACF;AAEO,IAAA,iBAAiB,CAAC,GAAG,EAAA;;;AAG3B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;YACnB,UAAU,CAAC,CAAC,IAAG;gBACb,IAAI,CAAC,IAAI,EAAE,CAAC;AACd,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,WAAW,CAAC,GAAW,EAAA;QAC7B,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KAC7F;IAEO,WAAW,CAAC,GAAkB,EAAE,UAAkB,EAAA;AACxD,QAAA,OAAO,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;KACjF;;gHA/FU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAW,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACVD;;AAEG;AACH,IAAI,QAAQ,CAAC;AAGb;;AAEG;MAIU,mBAAmB,CAAA;AAI9B,IAAA,WAAA,GAAA;AAEE,QAAA,IAAI,QAAQ,EAAE;YACZ,QAAQ,GAAG,IAAI,CAAC;AACjB,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,EAAE,GAAG,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;AAC3E,QAAA,OAAO,QAAQ,CAAC;KACjB;AAED;;;;;AAKG;IACH,OAAO,CAAC,GAAW,EAAE,KAAU,EAAA;QAC7B,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AAC9D,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KAClD;AAED;;;;;AAKG;AACH,IAAA,OAAO,CAAC,GAAW,EAAA;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAExC,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;;AAIG;AACH,IAAA,OAAO,CAAC,GAAW,EAAA;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;KAC3C;AAED;;;AAGG;AACH,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KAC9B;AAED;;AAEG;AACH,IAAA,KAAK,CAAC,MAAiC,EAAA;AACrC,QAAA,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACtH;AAED;;;;AAIG;AACH,IAAA,YAAY,CAAC,GAAW,EAAA;AACtB,QAAA,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;AAC9B,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;KACF;IAED,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED,IAAA,UAAU,CAAC,QAAa,EAAA;AACtB,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACnD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAClC,SAAA;KACF;IAED,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;KAClD;AAED;;AAEG;IACK,uBAAuB,GAAA;QAC7B,IAAI;AACF,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC;AACpC,YAAA,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAChC,YAAA,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3B,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;KACF;;gHAzGU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACaD;;AAEG;MAIU,WAAW,CAAA;AA4BtB;;AAEG;IACH,WAAoB,CAAA,MAAc,EACJ,UAAsB,EAC1C,IAAgB,EAChB,UAAsB,EACtB,mBAAwC,EACxC,YAA0B,EAC1B,cAA8B,EAC9B,OAAuB,EACvB,aAA4B,EAC5B,WAAwB,EACxB,YAA0B,EAC1B,mBAAwC,EACtC,OAAqB,EACrB,KAA0B,EAAA;AAblB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AACJ,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAC1C,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAChB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AACxC,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAC9B,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;AACvB,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAC5B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AACtC,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAc;AACrB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAqB;QA1C9B,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;QACjD,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AACjD,QAAA,IAAgB,CAAA,gBAAA,GAAG,kBAAkB,CAAC;AAE9C;;;AAGG;QACI,IAAA,CAAA,cAAc,GAAwB,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;AAE5E;;AAEG;AACI,QAAA,IAAK,CAAA,KAAA,GAAa,EAAE,CAAC;AAG5B;;AAEG;QACI,IAAA,CAAA,OAAO,GAAgB;AAC5B,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,KAAK;SACd,CAAC;AAmBA,QAAA,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,IAAG;AACvC,YAAA,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,gBAAgB,EAAE;AACrC,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;gBAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;AACjC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;;;;;AAMG;AACI,IAAA,KAAK,CAAC,IAAY,EAAE,QAAgB,EAAE,QAAgB,EAAA;AAE3D,QAAA,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AAClB,QAAA,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC1B,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpD,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEpD,QAAA,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;AAClC,YAAA,cAAc,EAAE,mCAAmC;AACpD,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,QAAQ,EAClE,CAAA,SAAA,EAAY,kBAAkB,CAAC,QAAQ,CAAC,CAAa,UAAA,EAAA,kBAAkB,CAAC,QAAQ,CAAC,CAAA,CAAE,EAAE;AACrF,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,YAAY,EAAE,MAAM;AACpB,YAAA,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe;AACjD,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CACrC,CAAC;KACH;AAED;;;AAGG;AACH,IAAA,QAAQ,CAAC,IAAa,EAAA;AAEpB,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC;AAC9B,YAAA,cAAc,EAAE,kBAAkB;AACnC,SAAA,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,IAAI;aACb,GAAG,CAAC,CAAG,EAAA,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,EAAE,EAAC,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAC,CAAC;AAC1H,aAAA,IAAI,CAAC,SAAS,CAAC,CAAC,IAAiB,KAAI;AACpC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;SAClC,CAAC,CAAC,CAAC;KACP;AAED;;;;;AAKG;IACK,SAAS,CAAC,WAAgB,EAAE,IAAa,EAAA;AAC/C,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC;AAC9B,YAAA,cAAc,EAAE,kBAAkB;AACnC,SAAA,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,EAAC,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAC,CAAC;AACzF,aAAA,IAAI,CACH,SAAS,CAAC,CAAC,IAAS,KAAI;YACtB,IAAI,CAAC,OAAO,GAAG;gBACb,IAAI,EAAE,IAAI,IAAI,EAAE;AAChB,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;AACpB,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,MAAM,EAAE,IAAI;aACb,CAAC;AACF,YAAA,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;gBACxB,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;oBACxD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAChD,iBAAC,CAAC,CAAC;AACJ,aAAA;AACD,YAAA,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;YACvG,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;SAC7C,CAAC,EACF,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CACnD,CAAC;KACL;AAED;;;AAGG;AACI,IAAA,MAAM,CAAC,aAAuB,EAAA;AAEnC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;QAEhC,IAAI,CAAC,OAAO,GAAG;AACb,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,KAAK;SACd,CAAC;AAEF,QAAA,IAAI,aAAa,EAAE;;;AAGjB,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAG,EAAA,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAS,OAAA,CAAA,EAAE,EAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AACnJ,SAAA;QAGD,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KAC9C;AAED;;;;AAIG;AACK,IAAA,aAAa,CAAC,IAAY,EAAA;AAChC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,SAAA;KACF;AAED;;;AAGG;IACI,UAAU,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;KACnC;AAED;;;;;AAKG;IACK,OAAO,CAAC,IAAS,EAAE,GAAa,EAAA;AAEtC,QAAA,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACtC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAC3D,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AAE1B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC;;QAGhF,IAAI,YAAY,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;AACvC,SAAA;QACD,IAAI,YAAY,CAAC,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,CAAC;AACjD,SAAA;AAED,QAAA,MAAM,IAAI,GAAG;AACX,YAAA,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE;AACzC,YAAA,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,QAAQ,CAAC;SACjD,CAAC;AAEF,QAAA,OAAOjB,QAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAClC,GAAG,CAAC,MAAM,QAAQ,CAAC,CACpB,CAAC;KACH;;AApNU,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,qCAgCZ,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAQ,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAU,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAhCV,WAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;8BAiCI,MAAM;+BAAC,WAAW,CAAA;;;;ACrDvB;;;;;;;AAOG;MAGU,QAAQ,CAAA;AAEnB;;AAEG;IACH,WAAyC,CAAA,UAAsB,EAAU,MAAc,EAC7E,IAAgB,EAAU,aAAqB,EAAU,WAAwB,EAAA;AADlD,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAAU,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAC7E,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAAU,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAQ;AAAU,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;KAC1F;AAED;;;AAGG;IACI,UAAU,GAAA;QAEf,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AAErC;;AAEG;YACH,IAAI,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAGhC,EAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACtF,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;AACtD,oBAAA,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe;AACjD,iBAAA,CAAC,CAAC,IAAI,CACL,UAAU,CAAC,CAAC,IAAG;oBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC;AACpD,oBAAA,OAAOA,EAAY,CAAC,EAAE,CAAC,CAAC;AAC1B,iBAAC,CAAC,CACH,CAAC,CAAC,CAAC;AAEN,YAAA,MAAM,CAAC,IAAI,CACT,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;;AAEjC,gBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtI,gBAAA,OAAO,GAAG,CAAC;aACZ,EAAE,EAAE,CAAC,CACL,EACD,QAAQ,CAAC,CAAC,GAAgB,KAAI;AAC5B,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC/B,qBAAA,IAAI,CAAC,UAAU,CAAC,CAAC,IAAIA,EAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/C,aAAC,CAAC,CACH,CAAC,SAAS,CAAC,GAAG,IAAG;gBAChB,OAAO,CAAC,IAAI,CAAC,CAAC;aACf,EAAE,GAAG,IAAG;AACP,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvB,gBAAA,MAAM,EAAE,CAAC;AACX,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;AAjDU,QAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAQ,kBAKC,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAiC,MAAA,EAAA,EAAA,EAAA,KAAA,EAAArB,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAgC,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;yGALpB,QAAQ,EAAA,CAAA,CAAA;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBADpB,UAAU;;;8BAMI,MAAM;+BAAC,WAAW,CAAA;;;;ACxBjC;;;AAGG;AACG,SAAU,WAAW,CAAC,QAAkB,EAAA;;;IAG5C,MAAM,GAAG,GAAa,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AAClD,IAAA,OAAO,GAAG,CAAC;AACb;;ACTA;;;AAGG;MACU,4BAA4B,CAAA;AAEvC;;;;AAIG;AACH,IAAA,MAAM,CAAC,MAAuC,EAAA;AAC5C,QAAA,OAAO,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC;KACtC;AACF;;ACyDD;;;AAGG;AACU,IAAA,sBAAsB,GAA5B,MAAM,sBAAsB,CAAA;IAEjC,WAAmB,CAAA,IAAgB,EAA8B,MAAkB,EAAA;AAAhE,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAA8B,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;QACjF,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;QACzD,kBAAkB,CAAC,YAAY,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAC/D,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;QACzD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;KACnD;AAGD;;;;AAIG;AACH,IAAA,cAAc,CAAC,IAAY,EAAA;QACzB,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAClG,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAChE,CAAC;KACH;IAEO,mBAAmB,CAAC,MAAc,EAAE,IAAY,EAAA;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,MAAM,CAAG,EAAA,IAAI,OAAO,CAAC,CAAC,IAAI,CAChD,UAAU,CAAC,CAAC,CAAC,KAAI;;;;AAIf,YAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;SAC1F,CAAC,CACH,CAAC;KACH;EACF;AAzDY,sBAAsB,GAAA,UAAA,CAAA;AAEK,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,WAAW,CAAC,CAAA;CAF9C,EAAA,sBAAsB,CAyDlC;;AClID;;AAEG;MAOU,cAAc,CAAA;;2GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAJvB,YAAY;QACZ,eAAe,CAAA,EAAA,CAAA,CAAA;AAGN,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAJvB,YAAY;QACZ,eAAe,CAAA,EAAA,CAAA,CAAA;2FAGN,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,eAAe;AAChB,qBAAA;iBACF,CAAA;;;MCLY,eAAe,CAAA;AAE1B,IAAA,WAAA,CAAmB,IAAiB,EAAA;AAAjB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;KACnC;IAED,SAAS,CAAC,OAAyB,EAAE,IAAiB,EAAA;AAEpD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAqB,KAAI;YAC7D,IAAI,KAAK,YAAY,YAAY,EAAE;;AAElC,aAAA;AACH,SAAC,EAAE,CAAC,KAAU,KAAI;AAChB,YAAA,IAAI,KAAK,YAAY,iBAAiB,IAAI,KAAK,CAAC,mBAAmB,EAAE;AACnE,gBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;AACxB,oBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB,iBAAA;AACF,aAAA;SACF,CAAC,CAAC,CAAC;KACL;;4GAlBU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gHAAf,eAAe,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;ACGX;;;AAGG;MAEU,iBAAiB,CAAA;IAEpB,KAAK,CAAC,EAAE,EAAE,IAAI,EAAA;AACpB,QAAA,OAAO,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;KACvD;IAEM,MAAM,CAAC,GAAG,IAAW,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KAC5B;IAEM,KAAK,CAAC,GAAG,IAAW,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KAC3B;IAEM,KAAK,CAAC,GAAG,IAAW,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KAC3B;IAEM,KAAK,CAAC,GAAG,IAAW,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KAC3B;IAEM,QAAQ,CAAC,GAAG,IAAW,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;KAC9B;IAEM,IAAI,CAAC,GAAG,IAAW,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC1B;IAEM,GAAG,CAAC,GAAG,IAAW,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACzB;IAEM,IAAI,CAAC,GAAG,IAAW,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC1B;;8GApCU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;ACEX;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;MAqBU,YAAY,CAAA;IACvB,OAAO,OAAO,CAAC,MAAmB,EAAA;QAEhC,OAAO;AACL,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,SAAS,EAAE;gBACT,QAAQ;gBACR,EAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAC;AACpE,gBAAA,EAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAC;AAC1C,gBAAA,EAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,EAAC;AACnE,gBAAA,EAAC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAC;AAClF;;;AAGG;AACH,gBAAA,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,EAAC;AAC7F,gBAAA,EAAC,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,4BAA4B,EAAC;AAC7E,aAAA;SACF,CAAC;KACH;AAED;;AAEG;AACH,IAAA,WAAA,CAAoC,YAA0B,EAAA;AAC5D,QAAA,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CACb,iEAAiE,CAAC,CAAC;AACtE,SAAA;KACF;;yGA7BU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;0GAAZ,YAAY,EAAA,OAAA,EAAA,CAlBrB,gBAAgB,EAAA,EAAA,CAAA,eAAA,EAAAvB,IAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAgBR,cAAc,CAAA,EAAA,CAAA,CAAA;AAEb,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,EAXZ,SAAA,EAAA;AACT,QAAA;AACE;;AAEG;AACH,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,QAAQ,EAAE,iBAAiB;AAC5B,SAAA;KACF,EAAA,OAAA,EAAA,CAfC,gBAAgB;QAChB,eAAe,CAAC,OAAO,EAAE;AACzB;;AAEG;QACH,YAAY,CAAC,OAAO,EAAE,EAWd,cAAc,CAAA,EAAA,CAAA,CAAA;2FAEb,YAAY,EAAA,UAAA,EAAA,CAAA;kBApBxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,gBAAgB;wBAChB,eAAe,CAAC,OAAO,EAAE;AACzB;;AAEG;wBACH,YAAY,CAAC,OAAO,EAAE;AACvB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE;;AAEG;AACH,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,QAAQ,EAAE,iBAAiB;AAC5B,yBAAA;AACF,qBAAA;oBACD,OAAO,EAAE,CAAC,cAAc,CAAC;iBAC1B,CAAA;;;8BAyBc,QAAQ;;8BAAI,QAAQ;;;;MCvFtB,gBAAgB,CAAA;AAE3B,IAAA,OAAO,gBAAgB,GAAA;QACrB,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAA;KAC3F;AAED,IAAA,OAAO,mBAAmB,GAAA;AACxB,QAAA,OAAO,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;KACzC;AAED,IAAA,OAAO,oBAAoB,GAAA;AACzB,QAAA,OAAO,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;KAClG;AACF;;ACJD;;AAEG;MAIU,gBAAgB,CAAA;AAU3B;;AAEG;AACH,IAAA,WAAA,CAAoB,YAA0B,EAAA;AAA1B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAXtC,QAAA,IAAQ,CAAA,QAAA,GAAG,cAAc,CAAC;QAC1B,IAAA,CAAA,SAAS,GAAc;AAC7B,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,QAAQ,EAAE,EAAE;SACb,CAAC;QACM,IAAA,CAAA,eAAe,GAAG,IAAI,aAAa,CAAY,CAAC,CAAC,CAAC;QACnD,IAAA,CAAA,UAAU,GAA0B,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;AAO7E,QAAA,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;YACjD,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3B,QAAA,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,IAAG;AACvC,YAAA,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,EAAE;gBAC7B,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC5B,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;;;;;AAMG;AACH,IAAA,GAAG,CAAC,QAAqB,EAAE,MAAuB,EAAE,OAAiB,EAAA;QACnE,IAAI,CAAC,SAAS,GAAG;AACf,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,QAAQ,EAAE,QAAQ;SACnB,CAAC;QACF,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,SAAA;QACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC3C;AAED;;;;AAIG;IACH,GAAG,GAAA;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED;;AAEG;IACH,KAAK,GAAA;QACH,IAAI,CAAC,SAAS,GAAG;AACf,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC3C;AAED;;AAEG;IACK,WAAW,GAAA;AACjB,QAAA,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KAC5E;AAED;;AAEG;IACK,mBAAmB,GAAA;AACzB,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI;YACF,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,YAAA,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACtD,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,aAAA;AACF,SAAA;AAAC,QAAA,OAAO,GAAG,EAAE;AAEb,SAAA;KACF;;6GAxFU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAQ,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACZD;;AAEG;MACU,mBAAmB,CAAA;AAO9B;;AAEG;AACH,IAAA,WAAA,CAAY,IAAS,EAAA;AACnB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC3B;AACF,CAAA;AAED;;AAEG;MACU,SAAS,CAAA;AA4GpB;;;AAGG;AACH,IAAA,WAAA,CAAY,IAAS,EAAA;AAtBrB;;AAEG;AACH,QAAA,IAAa,CAAA,aAAA,GAAU,EAAE,CAAC;AAC1B;;AAEG;AACH,QAAA,IAAa,CAAA,aAAA,GAAU,EAAE,CAAC;AAC1B;;AAEG;AACH,QAAA,IAAW,CAAA,WAAA,GAAU,EAAE,CAAC;AACxB;;AAEG;AACH,QAAA,IAAoB,CAAA,oBAAA,GAAU,EAAE,CAAC;;AAU/B,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACpC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;AAE1B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC;AAC1C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;AAC9C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAEpC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YACrC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,SAAA;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,GAAG;AACnB,gBAAA,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE;AACzB,gBAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;AACjC,gBAAA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK;AAC/B,gBAAA,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW;aAC5C,CAAC;AACH,SAAA;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,GAAG;AACb,gBAAA,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;AACnB,gBAAA,EAAE,EAAE;AACF,oBAAA,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AACtB,oBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK;AAC5B,oBAAA,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI;AAC3B,iBAAA;aACF,CAAC;AACH,SAAA;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,GAAG;AACd,gBAAA,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;AACpB,gBAAA,EAAE,EAAE;AACF,oBAAA,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACvB,oBAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK;AAC7B,oBAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI;AAC5B,iBAAA;aACF,CAAC;AACH,SAAA;;QAGD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC/C,IAAI,CAAC,IAAI,GAAG;AACV,gBAAA,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;AACtB,gBAAA,EAAE,EAAE;AACF,oBAAA,EAAE,EAAE,IAAI,CAAC,IAAI,KAAK,wBAAwB;AAC1C,oBAAA,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,sBAAsB;AAC3C,oBAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAC5B,oBAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;AAC/B,iBAAA;aACF,CAAC;AACH,SAAA;;QAGD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACzC,IAAI,CAAC,MAAM,GAAG;gBACZ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM;gBACxC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;gBAC1E,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;gBAC9E,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;gBAClF,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;gBAChF,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;aAC7E,CAAC;AACH,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,MAAM,GAAG;AACZ,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,KAAK;aACb,CAAC;AACH,SAAA;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,SAAA;;QAGD,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,OAAO,GAAG;gBACb,EAAE,EAAE,IAAI,CAAC,SAAS;gBAClB,IAAI,EAAE,IAAI,CAAC,WAAW;AACtB,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;AAC7B,gBAAA,MAAM,EAAE,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,EAAE;gBAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC;AACH,SAAA;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AACzC,SAAA;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AACzC,SAAA;QAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AACvD,SAAA;KACF;AACF;;ACxPD;;AAEG;MACU,qBAAqB,CAAA;AAkDhC;;;AAGG;AACH,IAAA,WAAA,CAAY,IAAS,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACpC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEtB,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACT,IAAI,CAAC,SAAS,CACjB,EAAA,EAAA,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAChC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EACpC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAChC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,GACrC,CAAC;AACH,SAAA;KACF;AACF;;ACpEW,IAAA,iBAIX;AAJD,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,yBAAA,CAAA,GAAA,MAAgC,CAAA;AAChC,IAAA,gBAAA,CAAA,+BAAA,CAAA,GAAA,SAAyC,CAAA;AACzC,IAAA,gBAAA,CAAA,oBAAA,CAAA,GAAA,MAA2B,CAAA;AAC7B,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,GAI3B,EAAA,CAAA,CAAA,CAAA;AAEM,MAAM,mBAAmB,GAAG,GAAG;AAEtC;;AAEG;MAIU,UAAU,CAAA;AAErB,IAAA,WAAA,CAAoB,OAAuB,EACjC,aAA4B,EAC5B,YAA0B,EAAA;AAFhB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;AACjC,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAC5B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;KACnC;AAED;;;;;;;;;;AAUG;IACH,YAAY,CAAC,EAAU,EAAE,IAAa,EAAE,OAAgB,EAAE,MAAe,EAAE,UAAoB,EAAE,eAAyB,EAAA;AACxH,QAAA,MAAM,GAAG,GAAG,CAAQ,KAAA,EAAA,EAAE,EAAE,CAAC;AAEzB,QAAA,MAAM,CAAC,GAAG;AACR,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,YAAY,EAAE,SAAS;AACvB,YAAA,YAAY,EAAE,SAAS;AACvB,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,aAAa,EAAE,MAAM;YACrB,IAAI;YACJ,UAAU;YACV,OAAO;AACP,YAAA,WAAW,EAAE,eAAe;AAC5B,YAAA,SAAS,EAAE,MAAM;SAClB,CAAC;QAEF,OAAO,IAAI,CAAC,OAAO;aAChB,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACvC,aAAA,IAAI,CACH,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,EACtD,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CACxD,CAAC;KACL;AAED;;;;;AAKG;AACH,IAAA,oBAAoB,CAAC,MAAiB,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;KAC5H;AAED;;;;;AAKG;AACH,IAAA,kBAAkB,CAAC,SAAoB,EAAA;AACrC,QAAA,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEtE,IAAI,SAAS,CAAC,aAAa,EAAE;AAC3B,YAAA,SAAS,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnG,SAAA;QAED,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;KACnF;AAED;;;;;;AAMG;IACH,eAAe,CAAC,EAAU,EAAE,IAAa,EAAE,UAAoB,EAAE,KAAK,GAAG,KAAK,EAAA;AAC5E,QAAA,MAAM,GAAG,GAAG,CAAQ,KAAA,EAAA,EAAE,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACvB,SAAA;AACD,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;AACnC,SAAA;AACD,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;AAC/B,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;KACtD;AAED;;;;AAIG;AACH,IAAA,cAAc,CAAC,EAAU,EAAA;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA,KAAA,EAAQ,EAAE,CAAA,QAAA,CAAU,CAAC;AAC1C,aAAA,IAAI,CACH,GAAG,CACD,WAAW,IAAG;AACZ,YAAA,WAAW,CAAC,OAAO,CAAC,QAAQ,IAAG;gBAC7B,QAAQ,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACzD,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,WAAW,CAAC;SACpB,CACF,CAAC,CAAC;KACR;AAED;;;;;AAKG;AACH,IAAA,WAAW,CAAC,SAAoB,EAAA;AAC9B,QAAA,MAAM,GAAG,GAAG,CAAA,KAAA,EAAQ,SAAS,CAAC,EAAE,WAAW,CAAC;AAC5C,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC,IAAI,CACxF,GAAG,CAAC,CAAC,GAAU,KAAI;AACjB,YAAA,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAChE,CAAC,CAAC,CAAC;KACP;AAED;;;;;;AAMG;IACH,WAAW,CAAC,EAAU,EAAE,IAAa,EAAA;AACnC,QAAA,MAAM,GAAG,GAAG,CAAQ,KAAA,EAAA,EAAE,WAAW,CAAC;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAC,IAAI,EAAC,CAAC,CAAC,CAAC,IAAI,CACnE,GAAG,CAAC,CAAC,GAAQ,KAAI;AACf,YAAA,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;SAC3B,CAAC,CAAC,CAAC;KACP;AAED;;;;;AAKG;AACH,IAAA,cAAc,CAAC,SAAoB,EAAA;;QACjC,MAAM,IAAI,GAAG,CAAA,EAAA,GAAA,SAAS,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC;QACrC,MAAM,OAAO,GAAG,CAAA,CAAA,EAAA,GAAA,SAAS,CAAC,OAAO,0CAAE,MAAM,IAAG,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;QACnE,MAAM,SAAS,GAAG,CAAA,EAAA,GAAA,SAAS,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAC;AACxC,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAQ,KAAA,EAAA,SAAS,CAAc,YAAA,CAAA,EAAE,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAC;AAC7E,QAAA,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CACjE,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,EACtD,GAAG,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,cAAc,CAAC,WAAW,GAAG,GAAG,CAAC,cAAc,CAAC,WAAW;aACpG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAC,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,EAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAC5I,CAAC,CAAC;KACN;AAED;;;;;;;;AAQG;AACH,IAAA,oBAAoB,CAAC,EAAU,EAAE,KAAa,EAAE,IAAY,EAAE,OAAgB,EAAA;AAC5E,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAA,aAAA,EAAgB,KAAK,CAAA,CAAE,EAAE,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,GAAG,CAAC;KAC5C;AAED;;;;;;;;AAQG;AACH,IAAA,QAAQ,CAAC,EAAU,EAAE,IAAa,EAAE,OAAgB,EAAE,IAAa,EAAA;AACjE,QAAA,OAAO,KAAK,CAAC,QAAQ,CACnB,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,QAAQ,EACvD;YACE,IAAI;YACJ,OAAO;AACP,YAAA,MAAM,EAAE,IAAI;AACb,SAAA,CACF,CAAC;KACH;AAED;;;;;;;;;AASG;IACH,UAAU,CAAC,EAAU,EAAE,IAAa,EAAE,OAAgB,EAAE,SAAkB,EAAE,UAAoB,EAAA;AAC9F,QAAA,OAAO,KAAK,CAAC,QAAQ,CACnB,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,UAAU,EACzD;YACE,SAAS;YACT,IAAI;YACJ,OAAO;YACP,UAAU;AACX,SAAA,CACF,CAAC;KACH;AAED;;;;;;;;;AASG;IACH,YAAY,CAAC,EAAU,EAAE,SAAc,EAAE,IAAa,EAAE,OAAgB,EAAE,eAAyB,EAAA;AACjG,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAA,CAAE,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAC,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,aAAa,CAAM,EAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;KAC9F;AAED;;;;;;;AAOG;AACH,IAAA,UAAU,CAAC,EAAU,EAAE,IAAa,EAAE,UAAoB,EAAA;AACxD,QAAA,MAAM,GAAG,GAAG,CAAQ,KAAA,EAAA,EAAE,QAAQ,CAAC;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KACjL;AAED;;;;;;;;AAQG;AACH,IAAA,cAAc,CAAC,EAAU,EAAE,OAAe,EAAE,IAAa,EAAA;AACvD,QAAA,MAAM,GAAG,GAAG,CAAA,oBAAA,EAAuB,EAAE,CAAI,CAAA,EAAA,OAAO,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;KACnE;AAED;;;;;;AAMC;AACD,IAAA,OAAO,CAAC,EAAU,EAAE,MAAc,EAAE,IAAa,EAAA;AAC/C,QAAA,MAAM,GAAG,GAAG,CAAA,aAAA,EAAgB,EAAE,CAAW,QAAA,EAAA,MAAM,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC9B;AAED;;;;;;AAMG;IACH,aAAa,CAAC,SAAoB,EAAE,OAAwB,EAAA;QAC1D,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CACxC,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,EACnE,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;KAC5F;AAED;;;;;AAKG;AACH,IAAA,aAAa,CAAC,SAAoB,EAAA;AAChC,QAAA,MAAM,GAAG,GAAG,CAAA,KAAA,EAAQ,SAAS,CAAC,EAAE,UAAU,CAAC;AAC3C,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KAC7D;AAED;;;;;;AAMG;AACH,IAAA,eAAe,CAAC,UAAkB,EAAE,IAAW,EAAE,SAAe,EAAE,MAAoC,EAAA;AAEpG,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAChC,QAAA,IAAI,SAAS,EAAE;AACb,YAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE;AAC5D,gBAAA,IAAI,EAAE,kBAAkB;AACzB,aAAA,CAAC,CAAC,CAAC;AACL,SAAA;AAAM,aAAA;AACL,YAAA,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AACpC,SAAA;AAED,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,SAAA;AAED,QAAA,IAAI,GAAG,GAAG,CAAe,YAAA,EAAA,UAAU,EAAE,CAAC;AACtC,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACxB,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,UAAU,EAAE,MAAM,CAAC,IAAI;AACxB,aAAA,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,EAAE,EAAC,CAAC,CAAC;KACvE;AAED;;;;;;;;;;AAUG;IACH,kBAAkB,CAAC,SAAoB,EAAE,OAAe,EAAE,QAAQ,EAAE,SAAkB,EAAE,SAAkB,EAAE,IAAuB,EAAA;AACjI,QAAA,MAAM,GAAG,GAAG,CAAA,kBAAA,EAAqB,SAAS,CAAC,EAAE,EAAE,CAAC;AAChD,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;YACzE,OAAO;YACP,IAAI,EAAE,SAAS,CAAC,QAAQ;YACxB,QAAQ;YACR,SAAS;YACT,SAAS;YACT,IAAI;AACL,SAAA,CAAC,EAAE,EAAE,CAAC,CACN,CAAC;KAEH;AAED;;;;;;;;;;AAUG;IACH,kBAAkB,CAAC,SAAoB,EAAE,OAAe,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAkB,EAAE,SAAkB,EAAA;AAC7G,QAAA,MAAM,GAAG,GAAG,CAAA,kBAAA,EAAqB,SAAS,CAAC,EAAE,EAAE,CAAC;AAChD,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;YACzE,OAAO;YACP,IAAI,EAAE,SAAS,CAAC,QAAQ;YACxB,QAAQ;AACR,YAAA,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE;AACjC,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,SAAS,EAAE,SAAS;AACrB,SAAA,CAAC,EAAE,EAAE,CAAC,CACN,CAAC;KACH;AAED;;;;;;AAMG;IACH,sBAAsB,CAAC,cAAc,EAAE,SAAqB,EAAA;AAC1D,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA,8BAAA,EAAiC,cAAc,CAAE,CAAA,CAAC,CAAC,CAAC;KAC3G;AAED;;;;;;AAMG;IACH,uBAAuB,CAAC,MAAM,EAAE,SAAqB,EAAA;AACnD,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA,kBAAA,EAAqB,MAAM,CAAE,CAAA,CAAC,CAAC,CAAC;KACvF;AAED;;;;;;;;;;AAUG;IACH,kBAAkB,CAAC,SAAoB,EAAE,OAAe,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAkB,EAAE,SAAkB,EAAA;AAC7G,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAK;AACnE,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;SACzF,CAAC,CAAC,CAAC;KACL;AAED;;;;;;;AAOG;IACH,KAAK,CAAC,SAAoB,EAAE,SAAkD,EAAA;AAC5E,QAAA,OAAO,IAAI,CAAC,aAAa,CACvB,SAAS,EACT,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,CAAA,KAAA,EAAQ,SAAS,CAAC,EAAE,QAAQ,EAC5B;YACE,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK;gBAC1B,kBAAkB,EAAE,CAAC,CAAC,EAAE;AACxB,gBAAA,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa;AACjC,aAAA,CAAC,CAAC;AACJ,SAAA,CACF,CAAC,CAAC;KACN;AAED;;;;;;;;AAQG;AACH,IAAA,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAA;AACzC,QAAA,MAAM,GAAG,GAAG,CAAiB,cAAA,EAAA,EAAE,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;AAC3C,YAAA,IAAI,EAAE,QAAQ;YACd,QAAQ;AACR,YAAA,UAAU,EAAE,cAAc;SAC3B,CAAC,EAAE,EAAE,CAAC,CAAC;KACT;AAED;;;;;;;;;AASG;IACH,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAA;AAC5D,QAAA,MAAM,GAAG,GAAG,CAAa,UAAA,EAAA,EAAE,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;AAC3C,YAAA,IAAI,EAAE,QAAQ;YACd,QAAQ;AACR,YAAA,UAAU,EAAE,cAAc;AAC1B,YAAA,iBAAiB,EAAE,iBAAiB;SACrC,CAAC,EAAE,EAAE,CAAC,CAAC;KACT;AAED;;;;;AAKG;AACH,IAAA,QAAQ,CAAC,IAAe,EAAA;AACtB,QAAA,MAAM,GAAG,GAAG,gBAAgB,GAAG,IAAI,CAAC,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAClE,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KACxD;AAED;;;;;AAKG;AACH,IAAA,UAAU,CAAC,IAAe,EAAA;AACxB,QAAA,MAAM,GAAG,GAAG,kBAAkB,GAAG,IAAI,CAAC,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AACpE,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KACxD;AAED,IAAA,0BAA0B,CAAC,SAAoB,EAAA;AAC7C,QAAA,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,IAAI,EAAE,SAAS,CAAC,QAAQ;YAExB,aAAa,EAAE,SAAS,CAAC,eAAe;YACxC,SAAS,EAAE,SAAS,CAAC,WAAW;YAChC,QAAQ,EAAE,SAAS,CAAC,UAAU;YAC9B,MAAM,EAAE,SAAS,CAAC,QAAQ;YAC1B,eAAe,EAAE,SAAS,CAAC,eAAe;AAE1C,YAAA,aAAa,EAAE,SAAS,CAAC,aAAa,GAAG;AACvC,gBAAA,EAAE,EAAE,SAAS,CAAC,aAAa,CAAC,EAAE;AAC9B,gBAAA,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC,QAAQ;AACtC,gBAAA,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC,KAAK;AACpC,gBAAA,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,WAAW;aACjD,GAAG,IAAI;YAER,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAE5B,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,wBAAwB,GAAG,sBAAsB;AAC/G,YAAA,QAAQ,EAAE,SAAS,CAAC,IAAI,GAAG,EAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,EAAC,GAAG,IAAI;AAEjI,YAAA,MAAM,EAAE,CAAC;AACP,oBAAA,UAAU,EAAE;AACV,wBAAA,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;AAC/B,wBAAA,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI;AAC3B,wBAAA,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;AAC/B,wBAAA,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ;AACnC,wBAAA,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO;AAClC,qBAAA;iBACF,CAAC;YACF,MAAM,EAAE,SAAS,CAAC,MAAM;AACxB,YAAA,SAAS,EAAE,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI;AAC1D,YAAA,WAAW,EAAE,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI;AAC9D,YAAA,YAAY,EAAE,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI;AAChE,YAAA,QAAQ,EAAE,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI;YAE/D,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,oBAAoB,EAAE,SAAS,CAAC,oBAAoB;SACrD,CAAC;AAEF,QAAA,IAAI,eAAe,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;AAC1C,QAAA,eAAe,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;AAEtC,QAAA,OAAO,eAAe,CAAC;KACxB;;uGAjiBU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA+B,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA9B,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,UAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACtBD;;AAEG;MAIU,oBAAoB,CAAA;AAY/B,IAAA,WAAA,CAAoB,aAA4B,EAAA;AAA5B,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAVhD;;;AAGG;QACK,IAAA,CAAA,OAAO,GAAQ;AACrB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,oBAAoB;AACnC,YAAA,OAAO,EAAE,KAAK;SACf,CAAC;KAGD;AAED;;;;;AAKG;IACH,IAAI,CAAC,KAAa,EAAE,GAAY,EAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;KACxB;AAED;;;;;;;AAOG;AACH,IAAA,OAAO,CAAC,KAAa,EAAE,GAAY,EAAE,KAAW,EAAE,QAAc,EAAA;AAC9D,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;KACrE;AAED;;;;AAIG;IACH,OAAO,CAAC,KAAa,EAAE,GAAY,EAAA;QACjC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;KACnC;AAED;;;;;AAKG;IACH,IAAI,CAAC,KAAa,EAAE,GAAY,EAAA;QAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;KAChC;AAED;;;;;AAKG;IACH,KAAK,CAAC,KAAa,EAAE,GAAY,EAAA;QAC/B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE;AAC9B,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,OAAO,EAAE,IAAI;AACd,SAAA,CAAC,CAAC;KACJ;AAED;;;;;AAKG;IACH,OAAO,CAAC,KAAa,EAAE,GAAY,EAAA;QACjC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;KACnC;AAED;;;;;;;AAOG;AACK,IAAA,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,IAAa,EAAE,QAAa,EAAA;AACpE,QAAA,IAAI,OAAO,GAAQ,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;;;QAG7D,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;KACzC;AAED;;;;;;;AAOG;AACK,IAAA,OAAO,CAAC,GAAW,EAAE,KAAa,EAAE,OAAY,EAAE,IAAa,EAAA;AACrE,QAAA,QAAQ,IAAI;YACV,KAAK,SAAS,EAAE;gBACd,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAChD,MAAM;AACP,aAAA;;;;;YAKD,KAAK,OAAO,EAAE;gBACZ,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC9C,MAAM;AACP,aAAA;YACD,KAAK,SAAS,EAAE;gBACd,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAChD,MAAM;AACP,aAAA;YACD,KAAK,SAAS,EAAE;gBACd,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC7C,MAAM;AACP,aAAA;AACD,YAAA,SAAS;gBACP,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC9C,aAAA;AACF,SAAA;KACF;;iHAhIU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACYD;;;AAGG;MAIU,aAAa,CAAA;AACxB,IAAA,WAAA,CACU,MAAqB,EACrB,OAAuB,EACvB,MAAc,EAAA;AAFd,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;AACrB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;AACvB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KACpB;AAEJ;;;;;AAKG;IACI,OAAO,YAAY,CAAC,KAAU,EAAA;AACnC,QAAA,IAAI,KAAK,EAAE;YACT,IAAI,KAAK,YAAY,UAAU,EAAE;AAC/B,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AAAM,iBAAA,IACL,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC;AAChC,gBAAA,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,EAClC;AACA,gBAAA,OAAO,IAAI,UAAU,CACnB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,WAAW,CAClB,CAAC;AACH,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;;;AAKG;AACI,IAAA,UAAU,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,CAAc,CAAC;QACnB,IAAI,KAAK,YAAY,WAAW,EAAE;YAChC,CAAC,GAAG,KAAK,CAAC;AACX,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,IAAI,CAAC;AACT;;AAEG;AACH,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,gBAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1B,aAAA;AAAM,iBAAA;gBACL,IAAI,GAAG,KAAK,CAAC;AACd,aAAA;AAED,YAAA,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC;AACtB,YAAA,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACnB,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;AACpC,oBAAA,CAAC,CAAC,OAAO,CAAC,IAAI,CACZ,IAAI,YAAY,CACd,CAAC,EACD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EACjB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAClB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CACnB,CACF,CAAC;AACJ,iBAAC,CAAC,CAAC;AACJ,aAAA;YACD,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;oBACrB,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;AAChC,wBAAA,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,qBAAA;AAAM,yBAAA;AACL,wBAAA,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,qBAAA;AACH,iBAAC,CAAC,CAAC;AACJ,aAAA;YACD,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAG;oBAClC,IAAI,CAAC,KAAK,SAAS,EAAE;;AAEnB,wBAAA,MAAM,qBAAqB,GAAG,IAAI,UAAU,CAAC;AAC3C,4BAAA,EAAE,EAAE,GAAG;AACP,4BAAA,MAAM,EAAE,IAAI;AACZ,4BAAA,IAAI,EAAE,SAAS;AACf,4BAAA,KAAK,EAAE,SAAS;AAChB,4BAAA,KAAK,EAAE,SAAS;AAChB,4BAAA,eAAe,EAAE,IAAI;AACrB,4BAAA,QAAQ,EAAE,KAAK;AACf,4BAAA,QAAQ,EAAE,EAAE;AACZ,4BAAA,WAAW,EAAE,EAAE;AACf,4BAAA,SAAS,EAAE,KAAK;AAChB,4BAAA,QAAQ,EAAE,CAAC;AACX,4BAAA,QAAQ,EAAE,CAAC;AACZ,yBAAA,CAAC,CAAC;AACH,wBAAA,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAClD,qBAAA;AAAM,yBAAA;AACL,wBAAA,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,qBAAA;AACH,iBAAC,CAAC,CAAC;AACJ,aAAA;AACD,YAAA,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACvB,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;gBAC1C,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC;gBAChD,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;gBAE7B,CAAC,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB;qBACzF,IAAI,CAAC,OAAO,CAAC,gBAAgB,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;;AAEnF,gBAAA,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC;AAC9E,gBAAA,CAAC,CAAC,UAAU;oBACV,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,WAAW,CAAC,mBAAmB,CAAC;AAC9D,aAAA;AACF,SAAA;AAED,QAAA,OAAO,CAAC,CAAC;KACV;AAED;;;;;AAKG;AACI,IAAA,MAAM,CAAC,KAAkB,EAAA;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CACjD,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAC/C,CAAC;KACH;AAED;;AAEG;AACI,IAAA,cAAc,CAAC,KAAU,EAAA;QAE9B,IAAI,KAAK,YAAY,WAAW,EAAE;AAChC,YAAA,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;AAC9B,SAAA;QACD,OAAO,KAAK,CAAC,IAAI,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CACxC,GAAG,CAAC,CAAC,GAAQ,KAAI;AACf,YAAA,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;YAChC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,YAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;gBAC/C,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC7C,gBAAA,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;sBAC5C,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAO;sBACnC,EAAE,CAAC;AACP,gBAAA,YAAY,CAAC,OAAO,CAAC,WAAW,IAAG;oBACjC,IAAI,EAAC,GAAG,EAAE,SAAS,EAAE,iBAAiB,EAAC,GAAG,WAAW,CAAC;oBACtD,IAAI,SAAS,KAAK,UAAU,EAAE;AAC5B,wBAAA,SAAS,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC;AACvD,qBAAA;oBACD,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAC9D;;AAEG;AACH,oBAAA,IACE,SAAS,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI;AAC1C,wBAAA,iBAAiB,EACjB;AACA,wBAAA,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AACzC,4BAAA,KAAK,CAAC,eAAe,CACnB,aAAa,EACb,MAAM,CAAC,GAAG,EACV,MAAM,CAAC,SAAS,EAChB,MAAM,CACP,CAAC;AACJ,yBAAC,CAAC,CAAC;AACJ,qBAAA;AACH,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AAEH,YAAA,OAAO,KAAK,CAAC;SACd,CAAC,CACH,CAAC;KACH;AAED;;;;;;;;AAQG;AACI,IAAA,gBAAgB,CACrB,KAAkB,EAClB,SAAiB,EACjB,SAAiB,EAAA;AAEjB,QAAA,MAAM,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;AAE/B,QAAA,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC;AACnB,QAAA,MAAM,QAAQ,GAAG,CAAgB,aAAA,EAAA,SAAS,CAAI,CAAA,EAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;AAClE,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,MAC5C,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CACzC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAC/C,CACF,CAAC;KACH;AAED;;;;;;;AAOG;AACI,IAAA,YAAY,CACjB,SAAc,EACd,eAAyB,EACzB,UAAmB,EAAA;AAEnB,QAAA,IAAI,GAAW,CAAC;QAChB,IAAI,KAAK,GAAG,SAAS,CAAC;AACtB,QAAA,IAAI,eAAe,EAAE;YACnB,GAAG,GAAG,YAAY,CAAC;AACpB,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,IAAI,GAAG,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC9D,YAAA,GAAG,GAAG,CAAA,OAAA,EAAU,IAAI,CAAA,CAAE,CAAC;AACxB,SAAA;QACD,KAAK,CAAC,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,KAAK,CAAC,OAAO,CAAA,EAAA,EAAE,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,iBAAiB,EAAE,EAAA,CAAC,CAAC;AAE9I,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;KACrI;AAED;;;;;AAKG;AACI,IAAA,oBAAoB,CAAC,SAAiB,EAAA;QAC3C,OAAO,IAAI,CAAC,OAAO;aAChB,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE;AACxD,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,YAAY,EAAE,MAAM;SACrB,CAAC;AACD,aAAA,IAAI,CACH,GAAG,CAAC,GAAG,IAAG;YACR,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAChC,gBAAA,IAAI,EAAE,wBAAwB;AAC/B,aAAA,CAAC,CAAC;AACH,YAAA,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;SAChF,CAAC,CACH,CAAC;KACL;AAEO,IAAA,2BAA2B,CAAC,GAAsB,EAAA;AACxD,QAAA,MAAM,wBAAwB,GAC5B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;QAC/C,OAAO,wBAAwB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;KACvD;AAED;;;;;AAKG;AACI,IAAA,YAAY,CAAC,IAAY,EAAA;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CACzB,CAAA,qBAAA,EAAwB,kBAAkB,CAAC,IAAI,CAAC,CAAE,CAAA,EAClD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAC7B,CAAC;KACH;AAED;;;;;;;;;AASG;AACI,IAAA,eAAe,CACpB,WAAyB,EACzB,eAAuB,EACvB,YAAiB,EAAA;QAEjB,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,MAAM,UAAU,GAAqB,IAAI,CAAC,oBAAoB,CAC5D,WAAW,EACX,eAAe,CAChB,CAAC;QACF,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,eAAe,CAAC,CAAC;QAErF,IAAI,YAAY,KAAK,IAAI,EAAE;AACzB,YAAA,MAAM,CAAC,IAAI,CACT,IAAI,YAAY,CAAC,eAAe,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CACrE,CAAC;AACH,SAAA;AAAM,aAAA,IAAI,WAAW,IAAI,WAAW,CAAC,cAAc,KAAK,MAAM,EAAE;AAC/D,YAAA,MAAM,CAAC,IAAI,CACT,IAAI,YAAY,CACd,eAAe,EACf,YAAY,CAAC,QAAQ,CAAC,KAAK,EAC3B,YAAY,CACb,CACF,CAAC;AACH,SAAA;aAAM,IAAI,YAAY,YAAY,UAAU,EAAE;AAC7C;;AAEG;AACH,YAAA,IACE,YAAY,CAAC,UAAU,KAAK,IAAI;AAChC,gBAAA,YAAY,CAAC,UAAU,KAAK,SAAS,EACrC;AACA,gBAAA,MAAM,CAAC,IAAI,CACT,IAAI,YAAY,CACd,eAAe,EACf,YAAY,CAAC,QAAQ,EACrB,YAAY,CAAC,UAAU,EACvB,YAAY,CAAC,WAAW,EACxB,UAAU,CAAC,QAAQ,GAAG,EAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAC,GAAG,SAAS,CAC9D,CACF,CAAC;AACH,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE;AACvF;;AAEG;YACH,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,EAAE;AACtD,gBAAA,MAAM,CAAC,IAAI,CACT,IAAI,YAAY,CACd,eAAe,EACf,YAAY,CAAC,QAAQ,CAAC,EAAE,EACxB,YAAY,CACb,CACF,CAAC;AACH,aAAA;AACF,SAAA;aAAM,IAAI,UAAU,CAAC,KAAK,EAAE;AAC3B;;AAEG;AACH,YAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAA;AACzC,gBAAA,IAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,EAAC;AAC7B,oBAAA,MAAM,YAAY,GAAG,CAAA,EAAG,eAAe,CAAI,CAAA,EAAA,GAAG,EAAE,CAAC;AACjD,oBAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,YAAY,UAAU,EAAE;AACvC,wBAAA,MAAM,CAAC,IAAI,CACT,IAAI,YAAY,CACd,YAAY,EACZ,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EACtB,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,EACxB,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,CAC1B,CACF,CAAC;AACH,qBAAA;AAAM,yBAAA;AACL,wBAAA,MAAM,CAAC,IAAI,CACT,IAAI,YAAY,CACd,YAAY,EACZ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,EACrF,QAAQ,CAAC,GAAG,CAAC,CACd,CACF,CAAC;AACH,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AACL;;AAEG;AACH,YAAA,MAAM,CAAC,IAAI,CACT,IAAI,YAAY,CACd,eAAe,EACf,YAAY,CAAC,QAAQ,CAAC,KAAK,EAC3B,YAAY,CACb,CACF,CAAC;AACH,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAED;;;;;;;AAOG;IACK,oBAAoB,CAC1B,WAAyB,EACzB,eAAuB,EAAA;QAEvB,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,QAAA,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE;YACvC,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAClC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,eAAe,CAC7C,CAAC;AACF,YAAA,CAAC,EAAE,CAAC;AACL,SAAA;QAED,OAAO;AACL,YAAA,WAAW,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;AAClD,YAAA,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;AACtC,YAAA,QAAQ,EAAE,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;AAC5C,YAAA,QAAQ,EAAE,KAAK,IAAI,KAAK,CAAC,QAAQ;SAClC,CAAC;KACH;AAED;;;;;AAKG;AACK,IAAA,yBAAyB,CAAC,WAAgB,EAAA;AAChD,QAAA,QACE,WAAW;AACX,aAAC,WAAW,CAAC,IAAI,KAAK,cAAc;gBAClC,WAAW,CAAC,IAAI,KAAK,YAAY;;AAEjC,iBAAC,WAAW,CAAC,IAAI,KAAK,QAAQ;AAC5B,oBAAA,WAAW,CAAC,cAAc,KAAK,UAAU,CAAC;;AAE5C,iBAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC,EAC7D;KACH;AAED;;;;;AAKG;AACI,IAAA,wBAAwB,CAAC,eAAe,EAAA;AAC7C,QAAA,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAClC,QAAA,MAAM,CAAC,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC;AAC1C,QAAA,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;AAEvC;;AAEG;AACH,QAAA,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KACvC,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAC,CAAC,OAAO,CACZ,EAAA,EAAA,EAAE,EAAE,CAAC,CAAC,GAAG,EAAA,CAAA,GACL,CAAC,CAAC,QAAQ,IAAI,EAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAC,EAErC,GAAC,CAAC,CAAC,UAAU,IAAI,EAAC,WAAW,EAAE,CAAC,CAAC,UAAU,EAAC,EAC5C,GAAC,CAAC,CAAC,OAAO,IAAI,EAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAC,EAAC,CACtC,CAAC,CAAC;QAEJ,MAAM,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1C,QAAA,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACzB,QAAA,OAAO,MAAM,CAAC;KACf;AAED;;;;;AAKG;AACH,IAAA,8BAA8B,CAAC,KAAkB,EAAA;QAC/C,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACtE,QAAA,MAAM,WAAW,GACf,CAAC,KAAK,CAAC,kBAAkB,IAAI,EAAE,EAAE,MAAM,KAAK,CAAC;AAC3C,cAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;cAC3B,IAAI,CAAC;AACX,QAAA,OAAO,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC;KAC5B;IAEO,sBAAsB,CAC5B,IAAuB,EACvB,WAA8B,EAAA;QAE9B,OAAO;YACL,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,WAAW;AACzC,YAAA,eAAe,EAAE,IAAI,IAAI,WAAW,GAAG,WAAW,CAAC,KAAK,GAAG,SAAS;SACrE,CAAC;KACH;AAED;;;;;;;;;;AAUG;AACH,IAAA,0BAA0B,CACxB,IAAuB,EACvB,WAA8B,EAC9B,IAAI,EAAA;AAEJ,QAAA,MAAM,EAAC,QAAQ,EAAE,eAAe,EAAC,GAAG,IAAI,CAAC,sBAAsB,CAC7D,IAAI,EACJ,WAAW,CACZ,CAAC;QACF,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA,oBAAA,EAAuB,QAAQ,CAAA,CAAE,EAAE;AAC5D,YAAA,WAAW,EAAE,eAAe;YAC5B,IAAI;AACL,SAAA,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO;aAChB,OAAO,CAAC,GAAG,CAAC;AACZ,aAAA,IAAI,CACH,GAAG,CACD,CAAC,GAAQ,KACP,IAAI,eAAe,CACjB,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,IAAI,CACT,CACJ,CACF,CAAC;KACL;AAED;;;;;;;;AAQG;IACH,yBAAyB,CACvB,IAAuB,EACvB,WAA8B,EAC9B,IAAqB,EACrB,MAAM,GAAG,KAAK,EAAA;QAEd,MAAM,OAAO,GAAG,MAAM;AACpB,cAAE,4BAA4B;cAC5B,sBAAsB,CAAC;AAC3B,QAAA,MAAM,EAAC,QAAQ,EAAE,eAAe,EAAC,GAAG,IAAI,CAAC,sBAAsB,CAC7D,IAAI,EACJ,WAAW,CACZ,CAAC;QACF,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG,QAAQ,EAAE;AAC7C,YAAA,WAAW,EAAE,eAAe;AAC7B,SAAA,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KACrC;AAED;;;;;;AAMG;IACH,2BAA2B,CACzB,IAAuB,EACvB,WAA8B,EAAA;AAE9B,QAAA,MAAM,EAAC,QAAQ,EAAE,eAAe,EAAC,GAAG,IAAI,CAAC,sBAAsB,CAC7D,IAAI,EACJ,WAAW,CACZ,CAAC;QACF,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA,oBAAA,EAAuB,QAAQ,CAAA,CAAE,EAAE;AAC5D,YAAA,WAAW,EAAE,eAAe;AAC7B,SAAA,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC9B;AAED;;;;;;;AAOG;IACH,oBAAoB,CAAC,MAAoB,EAAE,eAAuB,EAAA;QAChE,IAAI,KAAK,GAAG,SAAS,CAAC;AACtB,QAAA,IAAI,MAAM,EAAE;;AAEV,YAAA,IAAI,CAAC,eAAe,KAAK,QAAQ,IAAI,eAAe,KAAK,UAAU,KAAK,MAAM,CAAC,UAAU,EAAE;AACzF,gBAAA,KAAK,GAAG,IAAI,UAAU,CACpB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,WAAW,CACnB,CAAC;AACH,aAAA;AAAM,iBAAA;AACL,gBAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3B,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;;;;;AAOG;IACH,0BAA0B,CAAC,OAAuB,EAAE,aAAa,EAAA;QAC/D,IAAI,KAAK,GAAG,EAAE,CAAC;AACf,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,IAAG;YAClB,IAAI,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;YAC/D,IAAI,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;AAChE,YAAA,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAClD,SAAC,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,CAAC;KAChB;;0GAjmBU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAR,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACKD;;;;AAIG;AACG,MAAO,WAAY,SAAQ,WAAW,CAAA;AAmB1C,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;KACxB;AAED,IAAA,WAAA,CAAY,IAAmB,EAAA;AAC7B,QAAA,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;AAC7B,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACrB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB;;;AAGG;YACH,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/C,gBAAA,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;oBAC5B,IAAI;wBACF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,wBAAA,MAAM,KAAK,GAAsB;4BAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;4BACjB,IAAI,EAAE,IAAI,CAAC,IAAI;yBAChB,CAAC;AACF,wBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,qBAAA;AAAC,oBAAA,OAAO,CAAC,EAAE;AACV,wBAAA,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAC;AAC3D,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;KACF;AAED;;;;;;;AAOG;AACI,IAAA,QAAQ,CAAC,WAAwB,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,kBAAkB,GAAG,WAAW,GAAG,WAAW,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAC5E,QAAA,IAAI,CAAC,OAAO,GAAG,WAAW,GAAG,WAAW,CAAC,OAAO,GAAG,EAAE,CAAC;AACtD,QAAA,IAAI,CAAC,OAAO,GAAG,WAAW,GAAG,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;AACzD,QAAA,IAAI,CAAC,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC;AAC/D,QAAA,IAAI,CAAC,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;AACpD,QAAA,IAAI,CAAC,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC;KAClE;AAED;;;;AAIG;IACH,wBAAwB,GAAA;QAEtB,MAAM,eAAe,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAErE,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,YAAA,SAAS,EAAE,eAAe;YAC1B,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;SAC3C,CAAC;KACH;AAED;;;;AAIG;IACH,KAAK,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,EAAE,KAAK,WAAW,CAAC,MAAM,CAAC;KACvC;;AAzGD;;AAEG;AACI,WAAM,CAAA,MAAA,GAAG,KAAK;;AC9BvB;;;;;;;;;AASG;MAIU,oBAAoB,CAAA;AAoB/B;;AAEG;AACH,IAAA,WAAA,CAAoB,OAAuB,EACjC,MAAqB,EACrB,aAA4B,EAC5B,YAA0B,EAAA;AAHhB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;AACjC,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;AACrB,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAC5B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAf5B,IAAA,CAAA,aAAa,GAA8B;AACjD,YAAA,OAAO,EAAE,EAAE;SACZ,CAAC;QACM,IAAmB,CAAA,mBAAA,GAAG,IAAI,eAAe,CAA4B,IAAI,CAAC,aAAa,CAAC,CAAC;AACjG;;AAEG;QACI,IAAA,CAAA,cAAc,GAA0C,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;QAUrG,YAAY;AACT,aAAA,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;aACrB,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KAClC;AAED;;AAEG;IACH,KAAK,GAAA;QACH,IAAI,CAAC,aAAa,GAAG,EAAC,OAAO,EAAE,EAAE,EAAC,CAAC;QACnC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACnD;AAED;;AAEG;IACH,iBAAiB,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE;YACtC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC7B,SAAA;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;AAED;;;AAGG;IACH,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,OAAO;aACT,OAAO,CAAC,0BAA0B,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AACjE,aAAA,IAAI,CACH,GAAG,CAAC,QAAQ,IAAG;AACb,YAAA,OAAO,CAAC,QAAQ,IAAI,EAAE;iBACnB,GAAG,CAAC,CAAC,IAAG;AACP,gBAAA,IAAI,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5B;;AAEG;AACH,gBAAA,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,gBAAA,OAAO,EAAE,CAAC;AACZ,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CACH;aACA,SAAS,CAAC,GAAG,IAAG;YACf,IAAI,CAAC,aAAa,GAAG,EAAC,OAAO,EAAE,GAAG,EAAC,CAAC;YACpC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACpD,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;IACH,kBAAkB,GAAA;QAEhB,OAAO,IAAI,CAAC,OAAO;aAChB,OAAO,CAAC,0BAA0B,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AACjE,aAAA,IAAI,CACH,GAAG,CAAC,QAAQ,IAAG;AACb,YAAA,OAAO,CAAC,QAAQ,IAAI,EAAE;iBACnB,GAAG,CAAC,CAAC,IAAG;AACP,gBAAA,IAAI,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5B;;AAEG;AACH,gBAAA,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,gBAAA,OAAO,EAAE,CAAC;AACZ,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,EACF,GAAG,CAAC,GAAG,IAAG;YACR,IAAI,CAAC,aAAa,GAAG,EAAC,OAAO,EAAE,GAAG,EAAC,CAAC;YACpC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACnD,CAAC,CACH,CAAC;KACL;AAED;;;;;AAKG;AACK,IAAA,kBAAkB,CAAC,WAAwB,EAAA;QACjD,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,wBAAwB,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AAC5F,aAAA,IAAI,CACH,GAAG,CAAC,GAAG,IAAG;AACR,YAAA,IAAI,YAAY,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;AACxC,YAAA,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAElD,YAAA,OAAO,YAAY,CAAC;SACrB,CAAC,CAAC,CAAC;KACT;AAED;;;;;AAKG;AACK,IAAA,iBAAiB,CAAC,WAAwB,EAAA;QAChD,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,GAAG,CAAC,gBAAgB,EAAE,WAAW,CAAC,wBAAwB,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AAC3F,aAAA,IAAI,CACH,GAAG,CAAC,GAAG,IAAG;AACR,YAAA,MAAM,YAAY,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1C,YAAA,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;YAC9F,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAElD,YAAA,OAAO,YAAY,CAAC;SACrB,CAAC,CAAC,CAAC;KACT;AAED;;;;;AAKG;AACH,IAAA,eAAe,CAAC,WAAwB,EAAA;AAEtC,QAAA,IAAI,WAAW,CAAC,EAAE,KAAK,oBAAoB,CAAC,MAAM,EAAE;AAClD,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;AAC7C,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAC5C,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAU,EAAA;QAC1B,OAAO,IAAI,CAAC,OAAO;aAChB,GAAG,CAAC,CAAkB,eAAA,EAAA,EAAE,CAAE,CAAA,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AACzD,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACjF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACnD,CAAC,CACH,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,cAAc,CAAC,EAAU,EAAA;QACvB,OAAO,IAAI,CAAC,OAAO;aAChB,GAAG,CAAC,CAAkB,eAAA,EAAA,EAAE,CAAE,CAAA,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AACzD,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,IAAG;AACN,YAAA,IAAI,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5B;;AAEG;AACH,YAAA,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,YAAA,OAAO,EAAE,CAAC;SACX,CAAC,CACH,CAAC;KACL;AAED;;;;;;AAMG;IACH,sBAAsB,CAAC,KAAa,EAAE,KAAa,EAAA;QACjD,OAAO;YACL,IAAI,EAAE,oBAAoB,CAAC,QAAQ;YACnC,KAAK,EAAE,oBAAoB,CAAC,QAAQ;AACpC,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,IAAI,EAAE,QAAQ;SACf,CAAC;KACH;;AAlND;;AAEG;AACI,oBAAA,CAAA,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;AACnC;;AAEG;AACI,oBAAQ,CAAA,QAAA,GAAG,UAAU,CAAC;iHATlB,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA+B,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAvB,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACjBD;;;;AAIG;MAKU,qBAAqB,CAAA;AAUhC;;AAEG;AACH,IAAA,WAAA,CAAoB,cAA8B,EAAA;AAA9B,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAX1C,QAAA,IAAQ,CAAA,QAAA,GAAmB,EAAE,CAAC;QAC9B,IAAA,CAAA,aAAa,GAAG,IAAI,aAAa,CAAiB,CAAC,CAAC,CAAC;AAE7D;;AAEG;QACI,IAAA,CAAA,cAAc,GAA+B,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAMrF;AAED,IAAA,gBAAgB,CAAC,EAAW,EAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KACzB;IACD,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AAED;;;;;AAKG;AACH,IAAA,QAAQ,CAAC,YAA0B,EAAA;;QAEjC,IAAI,YAAY,CAAC,eAAe,EAAE;YAChC,YAAY,CAAC,WAAW,GAAG,CAAA,EAAG,CAAC,YAAY,CAAC,IAAI,KAAK,QAAQ,KAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,YAAY,CAAC,eAAe,0CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAA,IAAI,GAAG,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAA,EAAA,CAAI,GAAG,EAAE,CAAG,EAAA,YAAY,CAAC,eAAe,CAAC,KAAK,CAAA,CAAE,CAAC;YACxM,IAAI,YAAY,CAAC,SAAS,EAAE;AAC3B,gBAAA,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AAC1F,oBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE;wBACnE,YAAY,CAAC,WAAW,IAAI,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;AAChE,qBAAA;AACH,iBAAC,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;AACjE,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACrC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClC,SAAA;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACxC;AAED;;;;;;AAMG;IACH,kBAAkB,CAAC,SAAc,EAAE,aAA2B,EAAA;AAC5D,QAAA,OAAO,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;KAC/D;AAED;;;;AAIG;AACH,IAAA,UAAU,CAAC,cAAsB,EAAA;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC;QACrE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACxC;;kHAtEU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAwB,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;2FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACOD;;AAEG;MAIU,cAAc,CAAA;IAEzB,WAAoB,CAAA,OAAuB,EACjC,YAAiC,EAAA;AADvB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;AACjC,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAqB;KAAK;IAEhD,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC;KACpD;AAED;;;;;AAKG;IACH,YAAY,CAAC,EAAU,EAAE,WAA2B,EAAA;AAElD,QAAA,MAAM,GAAG,GAAG,CAAY,SAAA,EAAA,EAAE,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;KAClF;AAED;;;AAGG;IACH,OAAO,GAAA;QACL,MAAM,GAAG,GAAG,CAAA,KAAA,CAAO,CAAC;QACpB,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;KACpE;AAED;;;;;AAKG;IACH,aAAa,CAAC,EAAU,EAAE,OAAe,EAAA;AACvC,QAAA,MAAM,GAAG,GAAG,CAAA,QAAA,EAAW,EAAE,CAAY,SAAA,EAAA,OAAO,EAAE,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;KAChD;AAED,IAAA,kBAAkB,CAAC,IAAe,EAAA;AAChC,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;KACjC;AAED,IAAA,gBAAgB,CAAC,IAAe,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC;KAC/C;;2GA/CU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAjC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAkC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;MCxBY,cAAc,CAAA;AAsBzB;;;;;AAKG;AACH,IAAA,WAAA,CAAY,IAAU,EAAA;AACpB,QAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACnB;AACF;;ACrCD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"eo-sdk-client-projects-eo-sdk-core.mjs","sources":["../../../../projects/eo-sdk/core/src/lib/config/core-init.tokens.ts","../../../../projects/eo-sdk/core/src/lib/config/core-config.ts","../../../../projects/eo-sdk/core/src/lib/service/logger/logger.ts","../../../../projects/eo-sdk/core/src/lib/model/eo-error.model.ts","../../../../projects/eo-sdk/core/src/lib/service/search/search-query.model.ts","../../../../projects/eo-sdk/core/src/lib/model/range-value.model.ts","../../../../projects/eo-sdk/core/src/lib/util/utils.ts","../../../../projects/eo-sdk/core/src/lib/service/events/events.ts","../../../../projects/eo-sdk/core/src/lib/service/events/event.service.ts","../../../../projects/eo-sdk/core/src/lib/service/config/config.service.ts","../../../../projects/eo-sdk/core/src/lib/model/eo-user.model.ts","../../../../projects/eo-sdk/core/src/lib/model/work-item-history.model.ts","../../../../projects/eo-sdk/core/src/lib/model/bpm.model.ts","../../../../projects/eo-sdk/core/src/lib/service/clipboard/clipboard-action.enum.ts","../../../../projects/eo-sdk/core/src/lib/model/object-type.model.ts","../../../../projects/eo-sdk/core/src/lib/service/backend/backend.service.ts","../../../../projects/eo-sdk/core/src/lib/service/cache/app-cache.service.ts","../../../../projects/eo-sdk/core/src/lib/service/system/system.service.ts","../../../../projects/eo-sdk/core/src/lib/service/capabilities/capabilities.service.ts","../../../../projects/eo-sdk/core/src/lib/model/inbox-item.model.ts","../../../../projects/eo-sdk/core/src/lib/service/inbox/inbox.service.ts","../../../../projects/eo-sdk/core/src/lib/service/bpm/bpm.service.ts","../../../../projects/eo-sdk/core/src/lib/model/prepared-item.model.ts","../../../../projects/eo-sdk/core/src/lib/model/upload-target.model.ts","../../../../projects/eo-sdk/core/src/lib/service/config/config.enum.ts","../../../../projects/eo-sdk/core/src/lib/service/user/user.service.ts","../../../../projects/eo-sdk/core/src/lib/service/upload/upload.service.ts","../../../../projects/eo-sdk/core/src/lib/service/prepare/prepare.service.ts","../../../../projects/eo-sdk/core/src/lib/service/system-status/system.status.enum.ts","../../../../projects/eo-sdk/core/src/lib/service/system-status/system-status.service.ts","../../../../projects/eo-sdk/core/src/lib/service/storage/local-storage.service.ts","../../../../projects/eo-sdk/core/src/lib/service/auth/auth.service.ts","../../../../projects/eo-sdk/core/src/lib/config/core-init.service.ts","../../../../projects/eo-sdk/core/src/lib/config/initialize-module.ts","../../../../projects/eo-sdk/core/src/lib/config/missing-translation-handler.ts","../../../../projects/eo-sdk/core/src/lib/config/translate-json-loader.ts","../../../../projects/eo-sdk/core/src/lib/eo-core-shared.module.ts","../../../../projects/eo-sdk/core/src/lib/service/auth/auth-interceptor.ts","../../../../projects/eo-sdk/core/src/lib/service/logger/console-log.service.ts","../../../../projects/eo-sdk/core/src/lib/eo-core.module.ts","../../../../projects/eo-sdk/core/src/lib/environment.enaio.ts","../../../../projects/eo-sdk/core/src/lib/service/clipboard/clipboard.service.ts","../../../../projects/eo-sdk/core/src/lib/model/dms-object.model.ts","../../../../projects/eo-sdk/core/src/lib/model/dms-object-history.model.ts","../../../../projects/eo-sdk/core/src/lib/service/dms/dms.service.ts","../../../../projects/eo-sdk/core/src/lib/service/notifications/notifications.service.ts","../../../../projects/eo-sdk/core/src/lib/service/search/search.service.ts","../../../../projects/eo-sdk/core/src/lib/service/stored-queries/stored-query.model.ts","../../../../projects/eo-sdk/core/src/lib/service/stored-queries/stored-queries.service.ts","../../../../projects/eo-sdk/core/src/lib/service/upload-registry/upload-registry.service.ts","../../../../projects/eo-sdk/core/src/lib/service/signing/signing.service.ts","../../../../projects/eo-sdk/core/src/lib/model/upload-file-item.model.ts","../../../../projects/eo-sdk/core/src/public_api.ts","../../../../projects/eo-sdk/core/src/eo-sdk-client-projects-eo-sdk-core.ts"],"sourcesContent":["// @see: http://stackoverflow.com/questions/37611549/how-to-pass-parameters-rendered-from-backend-to-angular2-bootstrap-method#answer-40379803\nimport {InjectionToken} from '@angular/core';\nimport {CoreConfig} from './core-config';\n\n/**\n * @ignore\n */\nexport const CUSTOM_CONFIG = new InjectionToken<CoreConfig>('CUSTOM_CONFIG');\nexport const CORE_CONFIG = new InjectionToken<CoreConfig>('CORE_CONFIG');\n","import {EnaioConfig} from '../service/config/config.interface';\nimport {Inject} from '@angular/core';\nimport {CUSTOM_CONFIG} from './core-init.tokens';\n\n/**\n * @ignore\n */\nexport class CoreConfig {\n // main configuration or paths to config files\n main?: EnaioConfig | string[] = ['assets/_default/config/main.json', 'assets/_default/config/extend.json'];\n // paths to the translations\n translations?: string[] = ['assets/_default/i18n/'];\n\n environment?: {production: boolean} = {production: true};\n // sets the HTTP 'withCredentials' flag for every backend call\n withCredentials?: boolean = false;\n constructor(@Inject(CUSTOM_CONFIG) __config: CoreConfig) {\n Object.assign(this, __config);\n }\n}\n","import {ILogger} from '../../interface/logger.interface';\nimport { Injectable } from \"@angular/core\";\n\n/**\n * Set up the default logger.\n * The default logger doesn't actually log anything;\n * but, it provides the Dependency-Injection (DI) token that the rest of the application can use\n * for dependency resolution. Each platform can then override this with a platform-specific logger implementation,\n * like the [ConsoleLogService]{@link ConsoleLogService}.\n */\n\n/**\n * @ignore\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class Logger implements ILogger {\n\n public assert(...args: any[]): void {\n // ... the default logger does no work.\n }\n\n public error(...args: any[]): void {\n // ... the default logger does no work.\n }\n\n public debug(...args: any[]): void {\n // ... the default logger does no work.\n }\n\n public group(...args: any[]): void {\n // ... the default logger does no work.\n }\n\n public groupEnd(...args: any[]): void {\n // ... the default logger does no work.\n }\n\n public info(...args: any[]): void {\n // ... the default logger does no work.\n }\n\n public log(...args: any[]): void {\n // ... the default logger does no work.\n }\n\n public warn(...args: any[]): void {\n // ... the default logger does no work.\n }\n\n}\n","import {HttpErrorResponse} from '@angular/common/http';\n\n/**\n * @ignore\n */\nexport class EoError implements Error {\n\n get name() {\n return this._name || this.originalError.name || '';\n }\n\n get message() {\n return this._message || this.originalError.message || '';\n }\n\n get stack() {\n return this.originalError.stack;\n }\n\n get status() {\n return this.originalError.status;\n }\n\n get url() {\n return this.originalError.url;\n }\n\n get skipNotification() {\n return this._skipNotification === undefined ? !!this.originalError.skipNotification : this._skipNotification;\n }\n\n get isHttpErrorResponse() {\n return this.originalError.isHttpErrorResponse || this.originalError instanceof HttpErrorResponse;\n }\n\n constructor(public originalError: any | Error, private _name: string, private _message: string, private _skipNotification: boolean) {\n }\n\n toString() {\n return this.originalError.toString();\n }\n}\n","import {reduce} from 'rxjs/operators';\nimport {ObjectType} from '../../model/object-type.model';\nimport {DatePipe} from '@angular/common';\n\n//export type QueryScope = 'indexdate' | 'content' | 'all';\n\nexport enum QueryScope {\n ALL = 'all',\n CONTENT = 'content',\n INDEX_DATA = 'indexdata'\n}\n\n/**\n * The SearchQuery Class\n *\n * See {@link SearchService} for Usage\n */\nexport class SearchQuery {\n /**\n * Base Parameters for a Search Query\n */\n public static BASE_PARAMS = {\n TYPE: 'type',\n CREATOR: 'creator',\n CREATED: 'created',\n MODIFIER: 'modifier',\n MODIFIED: 'modified',\n FILESIZE: 'filesize',\n FILENAME: 'filename',\n MIMETYPEGROUP: 'mimetypegroup',\n FOLDER: 'folder'\n };\n\n /**\n * Time period buckets property names\n */\n public static TIME_PERIOD_BUCKETS = {\n TODAY: 'today',\n YESTERDAY: 'yesterday',\n THIS_WEEK: 'thisweek',\n LAST_WEEK: 'lastweek',\n THIS_MONTH: 'thismonth',\n LAST_MONTH: 'lastmonth',\n THIS_YEAR: 'thisyear',\n LAST_YEAR: 'lastyear'\n };\n\n /**\n * mimetype buckets property names\n */\n public static MIMETYPEGROUP_BUCKETS = {\n PDF: 'pdf',\n MAIL: 'mail',\n WORD: 'word',\n IMAGE: 'image',\n OCTET_STREAM: 'octet-stream',\n TXT: 'txt',\n EXCEL: 'excel',\n POWERPOINT: 'powerpoint',\n VIDEO: 'video',\n HTML: 'html',\n AUDIO: 'audio',\n ZIP: 'zip'\n };\n\n /**\n * filesize buckets property names\n */\n public static FILE_SIZE_BUCKETS = {\n NONE: 'none',\n LT1MB: 'lt1MB',\n LT10MB: 'lt10MB',\n LT100MB: 'lt100MB',\n GT100MB: 'gt100MB'\n };\n\n // list of things that may have changed the current query\n public static UPDATE_CAUSE = {\n TOGGLED_TYPE: 'cause.type.toggled',\n TOGGLED_EXPERTMODE: 'cause.expertmode.toggled',\n TERM_SET: 'cause.term.set',\n TYPES_SET: 'cause.types.set',\n CONTEXT_FOLDER_SET: 'cause.contextfolder.set',\n TOGGLED_FILTER: 'cause.filter.toggled',\n ADDED_FILTER: 'cause.filter.added',\n REMOVED_FILTER: 'cause.filter.removed',\n };\n /**\n * Detault Search mode Index\n */\n public static DEFAULT_SEARCH_MODE = 'idxs';\n /**\n * Search mode for Full test Search\n */\n public static FULLTEXT_SEARCH_MODE = 'fts';\n /**\n * fulltext search term\n */\n public term: string;\n /**\n * Array of fields to request from the search service, leaving this blank will return the fields specified in the result field configuration\n */\n public fields: string[];\n /**\n * List of object types to be fetched by the query. Leaving this blank will return results from any type\n */\n public types: ObjectType[] = [];\n /**\n * List of context folder types\n */\n public contextFolderTypes: ObjectType[] = [];\n /**\n * List of filters to define the query\n */\n public filters: SearchFilter[] = [];\n /**\n * Whether or not to retrieve suggestions\n */\n public suggest: boolean;\n /**\n * Whether or not the term is an expert mode query\n */\n public expertMode = false;\n /**\n * The scope of the query\n */\n public scope: QueryScope;\n /**\n * The search mode to be used (SearchQuery.DEFAULT_SEARCH_MODE or SearchQuery.FULLTEXT_SEARCH_MODE)\n */\n public searchMode: string = SearchQuery.DEFAULT_SEARCH_MODE;\n /**\n * Additional options to be applied to the query\n */\n public sortOptions: SortOption[] = [];\n /**\n * Resolve references with their title instead of their actual value\n */\n public resolveReference = true;\n /**\n * The state of the current query\n */\n public state: SearchState = new SearchState();\n\n public highlighting: boolean = false;\n public withContext: boolean = false;\n\n public name?: string;\n\n // Indicator what caused the update of a SearchQuery object.\n // Usefull for components that subscribed to a query, and need to\n // track the kind of changes made\n __updateCause: string;\n\n constructor() {}\n\n /**\n * Adds a new target type to the query\n *\n * @param type Object type to be added\n */\n public addType(type: ObjectType) {\n if (!this.types.find(t => t.id === type.id)) {\n this.types.push(type);\n }\n }\n\n /**\n * Removes a type from the target types list\n *\n * @param type The object type to be removed\n */\n public removeType(type: ObjectType) {\n this.types = this.types.filter(t => t.id !== type.id);\n }\n\n /**\n * Adds or removes the given type based on the current settings\n *\n * @param type The object type to be toggled\n */\n public toggleType(type: ObjectType) {\n if (this.types.find(t => t.id === type.id)) {\n this.removeType(type);\n } else {\n this.types.push(type);\n }\n }\n\n /**\n * Adds a new filter to the query. If there already is a filter set for the given property, it will be overridden.\n *\n * @param filter The filter to be added\n */\n public addFilter(filter: SearchFilter) {\n if (!filter) {\n return;\n }\n if (!this.getFilter(filter.property)) {\n this.filters.push(filter);\n } else {\n // if there already is a filter set for the target property\n // we'll just override it with the new value\n this.removeFilter(filter.property);\n this.filters.push(filter);\n }\n }\n\n /**\n * Removes a filter from the query.\n *\n * @param filterPropertyName The filter (its property name) to be removed\n */\n public removeFilter(filterPropertyName: string) {\n this.filters = this.filters.filter(f => f.property !== filterPropertyName);\n }\n\n /**\n * Adds or removes the given filter based on the current settings\n *\n * @param filter The filter to be toggled\n */\n public toggleFilter(filter: SearchFilter, override?: boolean) {\n if (this.getFilter(filter.property)) {\n this.removeFilter(filter.property);\n if (override) {\n this.filters.push(filter);\n }\n } else {\n this.filters.push(filter);\n }\n }\n\n /**\n * Retrieves a filter by its property name.\n *\n * @param propertyName The filters property name (qname of form element)\n * @returns Search Filter Object\n */\n public getFilter(propertyName: string): SearchFilter {\n return this.filters.find(f => f.property === propertyName);\n }\n\n public getTableFilters(propertyName: string): SearchFilter[] {\n return this.filters.filter(f => f.property.startsWith(propertyName + '.'));\n }\n\n /**\n * Adding new Sort Options\n * Sort Options are only added if they are not already present\n *\n * @param name\n * @param order\n * @param missing\n */\n public addSortOption(name: string, order: string, missing?: string) {\n if (!this.sortOptions.find(s => s.field === name)) {\n this.sortOptions.push(new SortOption(name, order, missing));\n }\n }\n\n /**\n *\n * @param name\n */\n public removeSortOption(name: string) {\n this.sortOptions = this.sortOptions.filter(s => s.field !== name);\n }\n\n /**\n * Generate a query JSON from the current SearchQuery that can be send to the search service.\n *\n * @param resolveReference in case of csv export the resolving of references is set by configuration\n */\n public getQueryJson(resolveReference?: boolean) {\n // Convert the current query object to a query JSON that can be consumed by the search service backend.\n // To keep it short, we'll only add properties that are set and differ from default values\n const queryJson: any = {};\n\n // add type filters\n if (this.types.length > 0) {\n queryJson.types = this.types.map(t =>\n typeof t === 'string' ? t : t.name\n );\n }\n\n // add context folder type filters\n if (this.contextFolderTypes.length > 0) {\n queryJson.contextfoldertypes = this.contextFolderTypes.map(t => t.name);\n }\n\n // filters\n if (this.filters.length > 0) {\n queryJson.filters = {};\n this.filters.forEach(f => {\n queryJson.filters[f.property] = f.toQuery();\n });\n }\n if (this.term) {\n queryJson.term = this.term;\n }\n // search fields\n if (this.fields) {\n queryJson.fields = this.fields;\n }\n if (this.name) {\n queryJson.name = this.name;\n }\n // add options when they differ from the default values\n if (this.applyOptions()) {\n queryJson.options = {};\n queryJson.options.scope = this.scope;\n if (this.suggest) {\n queryJson.options.suggest = true;\n }\n if (this.expertMode) {\n queryJson.options.expertmode = true;\n }\n\n queryJson.options.resolvereference = resolveReference !== undefined ? resolveReference : true;\n\n if (this.searchMode !== SearchQuery.DEFAULT_SEARCH_MODE) {\n queryJson.options.searchmode = this.searchMode;\n }\n if (this.sortOptions && this.sortOptions.length) {\n queryJson.options.sort = {};\n this.sortOptions.forEach((sortOption: SortOption) => {\n queryJson.options.sort[sortOption.field] = {\n order: sortOption.order\n };\n });\n }\n\n if (this.highlighting) {\n queryJson.options.highlighting = this.highlighting;\n }\n if (this.withContext) {\n queryJson.options.withcontext = this.withContext;\n }\n }\n return queryJson;\n }\n\n // determines whether or not the query send to the search service should contain options\n private applyOptions(): boolean {\n return (\n this.expertMode ||\n !!this.scope ||\n this.suggest ||\n this.highlighting ||\n this.resolveReference ||\n this.withContext ||\n this.searchMode !== SearchQuery.DEFAULT_SEARCH_MODE ||\n this.sortOptions.length > 0\n );\n }\n}\n\n/**\n * @ignore\n * Creates the Model of Sort Options\n */\nexport class SortOption {\n constructor(\n public field: string,\n public order: string,\n public missing?: string\n ) {}\n}\n\n/**\n * @ignore\n * Creates the Model of Field Definitions\n */\nexport class FieldDefinition {\n constructor(\n public elements: any[] = [],\n public sortorder: any[] = [],\n public grouporder: any[] = [],\n public pinned: any[] = [],\n public alignmentx: {qname: string, value: string}[] = [],\n public mode?: string\n ) {}\n}\n\n/**\n * @ignore\n * Class representing the state of a query\n */\nexport class SearchState {\n public count: {value: number, relation?: string};\n public aggregations;\n public lastChange?: string;\n\n /**\n * @ignore\n */\n constructor() {\n this.aggregations = {\n type: new Map<string, number>(),\n contextType: new Map<string, number>(),\n created: [],\n modified: [],\n mimetypegroup: [],\n filesize: []\n };\n }\n\n get totalCount() {\n return Array.from(this.aggregations.type.values()).reduce((acc: number, cur: number) => acc + cur, 0) as number;\n }\n\n get isEmpty() {\n return !(this.count && this.count.value);\n }\n\n addAggregations(type: string, key: string, value: number, agg?) {\n switch (type) {\n case 'contexttype': {\n this.aggregations.contextType.set(key, value);\n break;\n }\n case SearchQuery.BASE_PARAMS.TYPE: {\n this.aggregations.type.set(key, value);\n break;\n }\n case SearchQuery.BASE_PARAMS.CREATED: {\n this.aggregations.created.push({\n key: key,\n value: value\n });\n break;\n }\n case SearchQuery.BASE_PARAMS.MODIFIED: {\n this.aggregations.modified.push({\n key: key,\n value: value\n });\n break;\n }\n case SearchQuery.BASE_PARAMS.MIMETYPEGROUP: {\n this.aggregations.mimetypegroup.push({\n key: key,\n value: value\n });\n break;\n }\n case SearchQuery.BASE_PARAMS.FILESIZE: {\n this.aggregations.filesize.push({\n key: key,\n value: value,\n from: agg.from,\n to: agg.to || Infinity,\n label: key.replace('gt', '> ').replace('lt', '< ')\n });\n break;\n }\n }\n }\n}\n\n/**\n * @ignore\n * Creates the Model of Search Results\n */\nexport class SearchResult {\n public count: {value: number, relation?: string};\n public suggests: string[];\n public hits: any[];\n public typeName: string;\n public fields: FieldDefinition;\n\n constructor() {}\n}\n\nexport class SearchFilter {\n /**\n * available operators for a search filter\n */\n public static OPERATOR = {\n /** equal */\n EQUAL: 'eq',\n /** match (for string with classification \"path6666\") */\n MATCH: 'match',\n /** match at least one of the provided values (value has to be an array) */\n IN: 'in',\n /** greater than */\n GREATER_THAN: 'gt',\n /** greater than or equal */\n GREATER_OR_EQUAL: 'gte', //\n LESS_THAN: 'lt', // less than\n LESS_OR_EQUAL: 'lte', // less than or equal\n INTERVAL: 'gtlt', // interval\n INTERVAL_INCLUDE_BOTH: 'gtelte', // interval include left and right\n INTERVAL_INCLUDE_TO: 'gtlte', // interval include right\n INTERVAL_INCLUDE_FROM: 'gtelt', // interval include left\n RANGE: 'rg' // aggegation ranges\n };\n\n /**\n * Constructor for creating a new SearchFilter.\n *\n * @param property The qualified name of the field this filter should apply to.\n * @param operator Operator indicating how to handle the filters value(s). See SearchFilter.OPERATOR for available operators.\n * @param firstValue The filters value\n * @param secondValue Optional second value for filters that for example define ranges of values\n * @param transformDate Flag to transform date hours and minutes based on operator\n */\n constructor(\n public property: string,\n public operator: string,\n public firstValue: any,\n public secondValue?: any,\n public transformDate?: {time?: boolean; timezone?: boolean}\n ) {}\n\n formatDate(value: any) {\n return this.transformDate && value\n ? this.transformDate.timezone\n ? new DatePipe('en').transform(value, 'yyyy-MM-ddTZ')\n : this.transformDate.time\n ? new Date(value).toISOString().slice(0, 16) + 'Z'\n : new DatePipe('en').transform(value, 'yyyy-MM-dd')\n : value;\n }\n\n toQuery() {\n return {\n o: this.operator,\n v1: this.formatDate(this.firstValue),\n ...(this.secondValue && {v2: this.formatDate(this.secondValue)})\n };\n }\n\n toDateTimeQuery() {\n if (this.transformDate && this.transformDate.timezone && this.firstValue) {\n let firstValue = this.firstValue;\n let secondValue = this.secondValue;\n const endDate = new Date(secondValue || firstValue);\n endDate.setHours(23, 59, 59, 999);\n if (this.operator === SearchFilter.OPERATOR.LESS_OR_EQUAL) {\n firstValue = endDate.toISOString();\n } else {\n const startDate = new Date(firstValue);\n if (\n this.operator === SearchFilter.OPERATOR.GREATER_THAN ||\n this.operator === SearchFilter.OPERATOR.INTERVAL\n ) {\n startDate.setHours(23, 59, 59, 999);\n } else {\n startDate.setHours(0, 0, 0, 0);\n }\n firstValue = startDate.toISOString();\n }\n if (\n this.operator === SearchFilter.OPERATOR.INTERVAL_INCLUDE_BOTH ||\n this.operator === SearchFilter.OPERATOR.EQUAL\n ) {\n secondValue = endDate.toISOString();\n }\n return {\n o:\n this.operator === SearchFilter.OPERATOR.EQUAL\n ? SearchFilter.OPERATOR.INTERVAL_INCLUDE_BOTH\n : this.operator,\n v1: firstValue,\n ...(secondValue && {v2: secondValue})\n };\n } else {\n return this.toQuery();\n }\n }\n\n /**\n * @ignore\n */\n match(\n property: string,\n operator: string,\n firstValue: any,\n secondValue?: any\n ) {\n return (\n this.property === property &&\n this.operator === operator &&\n this.secondValue === secondValue &&\n (this.firstValue instanceof Array\n ? !!this.firstValue.find(v => v === firstValue)\n : this.firstValue === firstValue)\n );\n }\n}\n","import {SearchFilter} from '../service/search/search-query.model';\n\n/**\n * Value class to be used with form elements that support ranges\n */\nexport class RangeValue {\n\n /**\n * Creates new instance\n * @param operator The operator (see @link SearchFilter.OPERATOR)\n * @param firstValue The rages first/start value\n * @param secondValue The ranges last/end value\n */\n constructor(public operator: string,\n public firstValue: string,\n public secondValue?: string) {\n }\n\n /**\n * Get the label for a given operator\n * @param operator The operator to retrieve the label for\n * @returns The corresponding label\n */\n public static getOperatorLabel(operator: string) {\n let label = '?';\n switch (operator) {\n case SearchFilter.OPERATOR.EQUAL: {\n label = '=';\n break;\n }\n case SearchFilter.OPERATOR.GREATER_OR_EQUAL: {\n label = '>=';\n break;\n }\n case SearchFilter.OPERATOR.LESS_OR_EQUAL: {\n label = '<=';\n break;\n }\n case SearchFilter.OPERATOR.INTERVAL_INCLUDE_BOTH: {\n label = '-';\n break;\n }\n }\n return label;\n }\n}\n","import {EMPTY as observableEmpty, throwError as observableThrowError} from 'rxjs';\nimport {EoError} from '../model/eo-error.model';\nimport {RangeValue} from '../model/range-value.model';\nimport moment from 'moment';\n\nexport type FormatedMailTo = string | string[];\nexport class Utils {\n\n private static PREF_RANGEVALUE = 'RangeValue';\n\n public static uniqBy(items: any[], property: string) {\n const a: {[key: string]: any} = {};\n items.forEach(i => a[i[property]] = i);\n return Object.keys(a).map(k => a[k]) \n }\n\n /**\n * Utility method for adding parameters to a given URI.\n *\n * @param uri The uri string to attach the parameters to\n * @param params The object containing parameters to be appended\n * @returns the given uri extended by the given parameters + remove empty parameters\n */\n public static buildUri(uri: string, params: {}): string {\n const q = Object.keys(params)\n .filter(k => params[k] || params[k] === 0 || params[k] === false)\n .map(k => k + '=' + encodeURIComponent(params[k])).join('&');\n return uri + (q ? '?' + q : '');\n }\n\n /**\n * Creates a unique identifier.\n * @returns A Universally Unique Identifier\n */\n public static uuid(): string {\n return Utils._p8() + Utils._p8(true) + Utils._p8(true) + Utils._p8();\n }\n\n /**\n * Encode a filename safe for sending chars beyond ASCII-7bit using quoted printable encoding.\n *\n * @param filename The file name\n * @returns The quoted printable filename\n */\n public static encodeFileName(filename: string): string {\n const fileName = Utils.encodeToQuotedPrintable(Utils.encodeToUtf8(filename)).replace(/_/g, '=5F')\n return `=?UTF-8?Q?${fileName}?=`;\n }\n\n /**\n *\n * @param boolean s\n * @return string\n */\n private static _p8(s?: boolean): string {\n const p = (Math.random().toString(16) + '000000000').substr(2, 8);\n return s ? `-${p.substr(0, 4)}-${p.substr(4, 4)}` : p;\n }\n\n /**\n * Converts a javascript text to the utf-8 converted variant.\n * See [unicode]{@link http://thlist.onlinehome.de/thomas_homepage/unicode/UTF-8%20Konvertierung%20mittels%20JavaScript.htm} for reference\n *\n * @param rawinput The input string\n * @returns The utf-8 converted string\n */\n private static encodeToUtf8(rawinput) {\n /**\n * Normalize line breaks\n */\n rawinput = rawinput.replace(/\\r\\n/g, '\\n');\n let utfreturn = '';\n for (let n = 0; n < rawinput.length; n++) {\n /**\n * Unicode for current char\n */\n const c = rawinput.charCodeAt(n);\n if (c < 128) {\n /**\n * All chars range 0-127 => 1byte\n */\n utfreturn += String.fromCharCode(c);\n } else if ((c > 127) && (c < 2048)) {\n /**\n * All chars range from 127 to 2047 => 2byte\n */\n utfreturn += String.fromCharCode((c >> 6) | 192);\n utfreturn += String.fromCharCode((c & 63) | 128);\n } else {\n /**\n * All chars range from 2048 to 66536 => 3byte\n */\n utfreturn += String.fromCharCode((c >> 12) | 224);\n utfreturn += String.fromCharCode(((c >> 6) & 63) | 128);\n utfreturn += String.fromCharCode((c & 63) | 128);\n }\n }\n return utfreturn;\n }\n\n /**\n * See [quoted-printable]{@link https://github.com/mathiasbynens/quoted-printable/blob/master/quoted-printable.js}\n **/\n private static quotedPrintable(symbol) {\n if (symbol > '\\xFF') {\n throw RangeError('`encodeToQuotedPrintable` expects extended ASCII input only. Missing prior UTF-8 encoding?');\n }\n const codePoint = symbol.charCodeAt(0);\n const hexadecimal = codePoint.toString(16).toUpperCase();\n return '=' + ('0' + hexadecimal).slice(-2);\n }\n\n /**\n * Encode symbols that are definitely unsafe (i.e. unsafe in any context). The regular expression describes these unsafe symbols.\n *\n * @param rawinput Input string to be encoded\n * @returns The encoded string\n */\n private static encodeToQuotedPrintable(rawinput): string {\n const encoded = rawinput.replace(/[\\0-\\b\\n-\\x1F=\\x7F-\\uD7FF\\uDC00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF]/g, this.quotedPrintable);\n return encoded;\n }\n\n /**\n * Sorts An Array of Object by given key\n * See [ng-packagr issues 696]{@link https://github.com/dherges/ng-packagr/issues/696}\n *\n * @param key\n * @param order\n * @param locales\n * @param options\n * @returns (a: any, b: any) => number\n */\n public static sortValues(key = '', order = 'asc', locales?: string | string[], options?: Intl.CollatorOptions) {\n const f = (a: any, b: any) => {\n let comparison: number;\n const varA = Utils.getProperty(a, key);\n const varB = Utils.getProperty(b, key);\n if (typeof varA === 'number' && typeof varB === 'number') {\n comparison = varA - varB;\n } else {\n const stringA = varA || varA === 0 ? varA.toString() : '';\n const stringB = varB || varB === 0 ? varB.toString() : '';\n comparison = stringA.localeCompare(stringB, locales, options);\n }\n return order === 'desc' ? comparison * -1 : comparison;\n };\n return f;\n }\n\n /**\n * [ng-packagr issues 696]{@link https://github.com/dherges/ng-packagr/issues/696}\n *\n * @param object\n * @param string key\n * @returns any\n */\n public static getProperty(object: any, key = ''): any {\n const f = key ? key.split('.').reduce((o, k) => (o || {})[k], object) : object;\n return f;\n }\n\n /**\n * Use on Observable.catch or Observable.subscribe to return empty value\n * [ng-packagr issues 696]{@link https://github.com/dherges/ng-packagr/issues/696}\n *\n * @param (error) => any callback\n * @returns (error) => Observable<never>\n */\n public static empty(callback?: (error) => any) {\n const f = (error) => {\n return observableEmpty;\n };\n return f;\n }\n\n /**\n * Use on Observable.catch with specific skipNotification function !!!\n * [ng-packagr issues 696]{@link https://github.com/dherges/ng-packagr/issues/696}\n *\n * @param skipNotification\n * @param callback\n * @param name\n * @param message\n */\n public static catchSkip(skipNotification?: (error) => any, callback?: (error) => any, name?: string, message?: string) {\n const f = (error) => {\n const _error = callback && callback(error);\n const _skipNotification = skipNotification && skipNotification(error);\n return observableThrowError(new EoError(_error instanceof Error ? _error : error, name, message, _skipNotification));\n };\n return f;\n }\n\n /**\n * Use on Observable.catch !!!\n * [ng-packagr issues]{@link https://github.com/dherges/ng-packagr/issues/696}\n *\n * @param callback\n * @param name\n * @param message\n * @param skipNotification\n * @return (error) => Observable<never>\n */\n public static catch(callback?: (error) => any, name?: string, message?: string, skipNotification?: boolean) {\n const f = (error) => {\n const _error = callback && callback(error);\n return observableThrowError(new EoError(_error instanceof Error ? _error : error, name, message, skipNotification));\n };\n return f;\n }\n\n /**\n * Use on Observable.subscribe !!!\n * [ng-packagr issues]{@link https://github.com/dherges/ng-packagr/issues/696}\n *\n * @param callback\n * @param name\n * @param message\n * @param skipNotification\n * @return (error) => void\n */\n public static throw(callback?: (error) => any, name?: string, message?: string, skipNotification?: boolean) {\n const f = (error) => {\n const _error = callback && callback(error);\n throw new EoError(_error instanceof Error ? _error : error, name, message, skipNotification);\n };\n return f;\n }\n\n /**\n * Use on Observable.subscribe only if you want to skip notification / toast!!!\n *\n * @param callback\n * @param name\n * @param message\n * @param skipNotification\n * @return (error) => void\n */\n public static logError(callback?: (error) => any, name?: string, message?: string, skipNotification = true) {\n return Utils.throw(callback, name, message, skipNotification);\n }\n\n /**\n * Checks if element is visible\n *\n * @param elem\n * @return boolean\n */\n public static isVisible(elem: any): boolean {\n return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n }\n\n public static getBaseHref() {\n return document.getElementsByTagName('base')[0].getAttribute('href');\n }\n\n /**\n *\n * Truncate a string (first argument) if it is longer than the given maximum string length (second argument).\n * Return the truncated string with a ... ending ot whats provided.\n *\n * @param string str\n * @param number num\n * @returns\n */\n public static truncateString(str, num, ending = '...') {\n if (str.length > num) {\n if (num > 3) {\n num -= 3;\n }\n str = `${str.substring(0, num)}${ending}`;\n }\n return str;\n };\n\n /**\n * Get the TimeZone Offsest as ISO String.\n *\n * @returns\n */\n public static getTimezoneOffset(): string {\n return moment().format('Z');\n }\n\n public static formatMailTo(value: FormatedMailTo, isEmail: boolean): FormatedMailTo {\n if (isEmail && !!value) {\n return (Array.isArray(value)) ? value.join().replace(/,/g, '; ') : value.replace(/,/g, '; ');\n }\n return value;\n }\n\n public static arrayToObject(arr = [], keyProperty?: string | ((o: any) => string), valueProperty?: string | ((o: any) => any)) {\n const key = typeof keyProperty === 'string' ? (o: any) => o[keyProperty] : keyProperty;\n const value = typeof valueProperty === 'string' ? (o: any) => o[valueProperty] : valueProperty;\n return arr.reduce((acc, cur, i) => {\n acc[key ? key(cur) : i] = value ? value(cur) : cur;\n return acc;\n }, {});\n }\n\n public static formDataStringify(o: any): string {\n const f = (key, value) => {\n if (value instanceof RangeValue) {\n return `/${Utils.PREF_RANGEVALUE}(${JSON.stringify(value)})/`;\n }\n return value;\n };\n return JSON.stringify(o, f);\n }\n\n public static formDataParse(str: string): any {\n const f = (key, value) => {\n if (\n typeof value === 'string' &&\n value.startsWith(`/${Utils.PREF_RANGEVALUE}(`) &&\n value.endsWith(')/')\n ) {\n value = value.substring(Utils.PREF_RANGEVALUE.length + 2, value.length - 2);\n const parsed = JSON.parse(value);\n\n return new RangeValue(parsed.operator, parsed.firstValue, parsed.secondValue);\n }\n return value;\n };\n return JSON.parse(str, f);\n }\n}\n","/**\n * Events emitted by parts of the application\n */\n\nexport const EnaioEvent = {\n LOGOUT: 'eo.user.logout',\n CLIENT_LOCALE_CHANGED: 'eo.user.locale.client.changed',\n SCHEMA_LOCALE_CHANGED: 'eo.user.locale.schema.changed',\n DMS_OBJECT_LOADED: 'eo.dms.object.loaded',\n DMS_OBJECT_DELETED: 'eo.dms.object.deleted',\n DMS_OBJECT_VERSION_RESTORED: 'eo.dms.object.version.restored',\n DMS_OBJECT_RESTORED_OR_DELETED: 'eo.dms.object.restored.deleted',\n DMS_OBJECT_FAVORITE_ON: 'eo.dms.object.favorite.on',\n DMS_OBJECT_FAVORITE_OFF: 'eo.dms.object.favorite.off',\n DMS_OBJECT_UPDATED: 'eo.dms.object.updated',\n DMS_OBJECT_PASTED: 'eo.dms.object.pasted',\n INBOX_ITEM_CONFIRMED: 'eo.inbox.item.confirmed',\n PROCESS_FILE_CHANGED: 'eo.process.file.changed',\n EO_DIALOG_STACK_CHANGED: 'eo.dialog.stack.changed',\n SYSTEM_STATUS_SCHEMA_CHANGED: 'eo.status.schema',\n SYSTEM_STATUS_ORG_CHANGED: 'eo.status.org',\n SYSTEM_STATUS_SEC_CHANGED: 'eo.status.sec',\n SYSTEM_STATUS_ACL_CHANGED: 'eo.status.acl',\n SYSTEM_STATUS_INBOX_CHANGED: 'eo.status.inbox',\n EO_LICENSE_GRID: 'eo_license_grid',\n SYSTEM_STATUS_IMAGE_CHANGE: 'eo.status.image'\n};\n","import {filter} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {Event} from '../../interface/event.interface'\n\n/**\n * Triggerable and Subscribable events\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class EventService {\n\n private eventSource = new Subject<Event>();\n /**\n * Eventstream to subscribe to\n */\n public event$: Observable<any> = this.eventSource.asObservable();\n\n /**\n * @ignore\n */\n constructor() {\n }\n\n /**\n * Trigger an global event\n * @param type Type/key of the event\n * @param data Data to be send along with the event\n */\n trigger(type: string, data?: any) {\n this.eventSource.next({type, data});\n }\n\n /**\n * Listen on a triggered event\n * @param types Type/key of the event\n */\n on(...types: string[]): Observable<Event> {\n return this.event$\n .pipe(filter(event => event && !!types.find(t => t === event.type)));\n }\n}\n","import {Injectable} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Utils} from '../../util/utils';\nimport {EventService} from '../events/event.service';\nimport {EnaioConfig} from './config.interface';\nimport {EnaioEvent} from '../events/events';\nimport {WidgetGridWorkspaceConfig} from '@yuuvis/widget-grid';\n\n/**\n * Collection of all Configurations\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class Config {\n\n private cfg: EnaioConfig = null;\n\n private fixServiceUris = null;\n\n /**\n * @ignore\n */\n constructor(private translate: TranslateService, private event: EventService) {\n }\n\n /**\n * @ignore\n */\n private initializeGrid() {\n this.event.trigger(EnaioEvent.EO_LICENSE_GRID);\n }\n\n /**\n * @ignore\n * Set during app init (see CoreInit)\n */\n public set(cfg: EnaioConfig) {\n this.cfg = cfg;\n this.fixServiceUris = new Map<string, string>([\n ['serviceBase', '/rest-ws/service'],\n ['searchBase', '/search'],\n ['contextBase', '/structure'],\n ['inboxBase', '/inboxservice'],\n ['bpmBase', '/bpm'],\n ['agentBase', '/agent'],\n ['statusBase', '/status']]);\n const languages = this.getClientLocales().map(lang => lang.iso);\n this.translate.addLangs(languages);\n this.translate.setDefaultLang(this.getDefaultClientLocale());\n this.initializeGrid();\n }\n\n /**\n * @Deprecated replaced by getContextPath\n */\n getLoginBase(): string {\n return this.getContextPath();\n }\n\n getContextPath(): string {\n let cp = this.getUri('contextPath')\n // TODO: remove when not supported anymore\n || this.getUri('loginBase');\n return (cp && cp !== '/') ? cp : '';\n }\n\n /**\n * Returns nested property of config | complete config by default\n * @param property The name of the property to be retrieved\n */\n public getRaw(property: string): any {\n return property ? Utils.getProperty(this.cfg, property) : this.cfg;\n }\n\n /**\n * Getter for the URI\n * @param property The name of the property/uri to be retrieved\n * @returns value of the property from the URI-Section of the config\n */\n public getUri(property: string): string {\n return (this.cfg['uri'] && this.cfg['uri'][property]) || this.fixServiceUris.get(property);\n }\n\n /**\n * Getter for the available client locales\n * @returns available client locales\n */\n public getClientLocales(): any[] {\n return this.cfg['languages'];\n }\n\n /**\n * Getter for the supported client locales\n * @returns supported client locales\n */\n public getSupportedClientLocales(): string[] {\n return ['en', 'de', 'ar', 'es', 'pt', 'fr', 'zh', 'lv', 'ru', 'it', 'nl', 'sk', 'pl', 'uk', 'ja', 'ko', 'hi', 'bn', 'de-CH', 'zh-Hant',\n 'th', 'vi', 'en-GB', 'he', 'fi', 'se', 'da', 'nb', 'nn', 'id', 'ms'];\n }\n\n /**\n * Get the dashboards background image\n * @returns background image uri for the dashboards background image\n */\n public getDashboardBackgroundImage(): string {\n return this.cfg['dashboardBackgroundImage'];\n }\n\n /**\n * Get the sidebars header background image\n * @returns background image uri for the sidebars header background image\n */\n public getSideBarHeaderImage(): string {\n return this.cfg['sideBarHeaderImage'];\n }\n\n /**\n * Get the navigation bar image (Logo)\n * only accepts svg.\n * @returns background image uri for the Navigationbar (Logo)\n */\n public getNavigationBarImage(): string {\n let logo = this.cfg['navBarLogo'];\n logo = logo.endsWith('.svg') ? logo : `<svg></svg>`;\n return logo;\n }\n\n /**\n * Get the default client locale\n * @returns ISO string of the locale\n */\n public getDefaultClientLocale() {\n const lang = this.getClientLocales().find(_ => _.fallback);\n return lang ? lang.iso : 'en';\n }\n\n /**\n * Getter for the Agent Configuration\n */\n public getAgentConfig(): any {\n return this.cfg['agent'];\n }\n}\n","\nexport interface Privileges {\n id: string;\n type: string;\n name: string;\n}\n\nexport class EoUser {\n\n /**\n * The users ID\n */\n public id: string;\n /**\n * The users name\n */\n public name: string;\n /**\n * The users firstname\n */\n public firstname: string;\n /**\n * The users lastname\n */\n public lastname: string;\n /**\n * The users title (generated from backends title pattern)\n */\n public title: string;\n /**\n * The users email address\n */\n public email: string;\n /**\n * Flag indicating whether or not the user is present\n */\n public present: boolean;\n /**\n * URI to the users avatar image\n */\n public imageUri: string;\n /**\n * Custom user settings\n */\n public userSettings: any;\n /**\n * @ignore\n */\n public schema: any;\n /**\n * List of the users privileges\n */\n public privileges: Privileges[];\n /**\n * List of roles the user belongs to\n */\n public roles: any[];\n /**\n * List of the users deputies\n */\n public deputies: any[];\n /**\n * List of the users substitutes\n */\n public substitutesOf: any[];\n /**\n * Password validation settings\n */\n public passwortvalidation: any;\n /**\n * @ignore\n */public schemaLocale: string;\n /**\n * @ignore\n */\n public uiDirection: string;\n\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new user instance\n */\n constructor(json: any) {\n\n const jUser = json['user'];\n const jSchema = json['schema'];\n\n this.id = jUser.id;\n this.name = jUser.name;\n this.firstname = jUser.firstname;\n this.lastname = jUser.lastname;\n this.title = jUser.title;\n this.email = jUser.email;\n this.present = jUser.present;\n if (jUser.hasimage === true) {\n this.imageUri = '/organization/image/' + this.id;\n }\n this.userSettings = typeof json['usersettings'] === 'object' ? json['usersettings'] : {};\n this.schema = {\n version: jSchema.version,\n supportedLocales: jSchema.supportedlocales\n };\n\n this.privileges = jUser.privileges;\n this.roles = jUser.effectiveroles;\n this.deputies = jUser.deputies || [];\n this.substitutesOf = jUser.substitutesOf || [];\n this.schemaLocale = jUser.locale || this.getClientLocale();\n }\n\n /**\n * Checks if the user has a certain privilege\n * @param privilege The privilege to be checked\n * @returns True if the user has this particular privilege, false otherwise\n */\n hasPrivilege(privilege: string): boolean {\n\n let match = false;\n if (this.privileges) {\n let i = 0;\n while (!match && i < this.privileges.length) {\n match = this.privileges[i].name === privilege;\n i++;\n }\n }\n return match;\n }\n\n /**\n * Checks if the user has a certain role\n * @param role The role to be checked\n * @returns True if the user has this particular role, false otherwise\n */\n hasRole(role: string): boolean {\n let match = false;\n if (this.roles) {\n let i = 0;\n while (!match && i < this.roles.length) {\n match = this.roles[i].name === role;\n i++;\n }\n }\n return match;\n }\n\n /**\n * adds the base path for the users image path.\n * @param base The base path\n */\n public setImageBase(base: string) {\n if (this.imageUri) {\n this.imageUri = base + this.imageUri;\n }\n }\n\n /**\n * Gets the users configured client locale\n * @returns locale string\n */\n public getClientLocale(): string {\n return this.userSettings['clientlocale'] || 'en';\n }\n\n /**\n * Gets the users configured schema locale\n * @returns locale string\n */\n public getSchemaLocale(): string {\n return this.schemaLocale;\n }\n\n}\n","import {OrgUser} from './org.model';\n\n/**\n * @ignore\n */\nexport interface WorkItemHistoryPerformer {\n type: string;\n label: string;\n}\n\n/**\n * History entry of a work item.\n */\nexport class WorkItemHistoryEntry {\n\n /**\n * Title of the history entry\n */\n title: string;\n /**\n * Short description of the history entry\n */\n description: string;\n /**\n * The date (time) this entry was created\n */\n time: Date;\n /**\n * Index of the history entry (may be used for ordering)\n */\n number: number;\n /**\n * History entries type\n */\n type: string;\n /**\n * User that was responsible for creating this entry (e.g. by executing an action)\n */\n editor: OrgUser;\n /**\n * Collection of performers. Performers are users, groups or roles that received a work item that let to the creation of a history entry.\n * If for example a work item was forwarded, the history entry created for that action will contain the recipients of the forwarded action.\n */\n performer: WorkItemHistoryPerformer[];\n /**\n * Additional data for special kinds of entries like errors, personalization, periods\n */\n data: any;\n\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new work item history instance\n */\n constructor(json: any) {\n\n this.title = json.activityName;\n this.description = json.description;\n this.number = json.number;\n this.time = json.time;\n this.type = json.type;\n this.data = {};\n\n // overrides for special types of history entries\n switch (json.type) {\n // deadline started\n case 'DEADLINE_START': {\n this.title = `${json.periodName}`;\n // description will be generated in template\n this.description = null;\n this.data = {\n periodFireTime: json.periodFireTime\n };\n this.type = json.type;\n break;\n }\n // deadline reached\n case 'DEADLINE_FIRE': {\n this.title = `${json.periodName}`;\n // description will be generated in template\n this.description = null;\n this.data = {\n periodFireTime: json.periodFireTime\n };\n this.type = json.type;\n break;\n }\n }\n\n // are there additional information about the performer\n // that caused the history entry\n if (json.performer) {\n this.performer = [];\n json.performer.groups.forEach(g => this.performer.push({type: 'group', label: g.name}));\n json.performer.roles.forEach(r => this.performer.push({type: 'role', label: r.name}));\n json.performer.users.forEach(u => this.performer.push({type: 'user', label: `${u.lastname}, ${u.firstname} (${u.name})`}));\n }\n\n if (json.user) {\n this.editor = json.user;\n }\n }\n}\n","import {OrgGroup, OrgRole, OrgUser} from './org.model';\n\n/**\n * Process that could be executed/started. Starting an executable process will\n * create an instance of it (Process), which then can be fetched by its ID.\n */\nexport interface ExecutableProcess {\n id: string;\n qname: string;\n title: string;\n description?: string;\n iconid?: string;\n data?: any;\n data_meta?: any;\n form?: any;\n actions?: any;\n}\n\n\n/**\n * Instance of an executable process.\n */\nexport class Process {\n\n /**\n * processes unique identifier\n */\n processid: string;\n /**\n * The name of the process\n */\n procname: string;\n /**\n * ID of the user that created this process\n */\n creatorid: string;\n /**\n * ID of a process icon\n */\n iconid?: string;\n /**\n * URL of a process icon\n */\n iconurl?: string;\n /**\n * The localized title of the process\n */\n localizedsubject: string;\n /**\n * The ID of the underlying process model.\n * The process model is the definition of a process, so a process is basically an instance of a model.\n */\n modelid: string;\n /**\n * The name of the process model.\n */\n modelname: string;\n /**\n * Date (time) the process was started\n */\n starttime: number;\n /**\n * Date (time) the process ended\n */\n endtime: number;\n /**\n * Processes state\n *\n * NONE(-1),\n * CREATED(0),\n * RUNNING(20),\n * COMPLETED(30),\n * SUSPENDED(40),\n * TERMINATED(50),\n * ERRORSUSPENDED(60);\n */\n state: string;\n\n /**\n * A process file is a container that holds objects (e.g. DMS Objects) attached to the current work item. A work item for\n * approving an invoice for example would have the related invoice document attached.\n */\n file: FileEntry[];\n\n /**\n * Title of the process genarated from the localized subject\n */\n get title() {\n return this.localizedsubject || '';\n }\n\n /**\n * Process ID\n */\n get id() {\n return this.processid || '';\n }\n\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new process item history instance\n */\n constructor(json: any) {\n\n this.creatorid = json.creatorid;\n this.modelname = json.modelname;\n this.iconurl = json.iconurl;\n this.iconid = json.iconid;\n this.localizedsubject = json.subject;\n this.modelid = json.modelid;\n this.processid = json.id;\n this.procname = json.name;\n this.starttime = json.starttime;\n this.endtime = json.endtime;\n this.state = json.state;\n }\n\n setFile(fileEntries: FileEntry[]) {\n this.file = fileEntries || [];\n }\n}\n\n\n/**\n * WorkItems are the tasks of a process that require user interaction.\n */\nexport class WorkItem {\n\n /**\n * unique identifier\n */\n id: string;\n /**\n * work items title\n */\n title: string;\n /**\n * work items description\n */\n description: string;\n /**\n * the state the work item is in e.g. 'PERSON', 'CREATED', etc.\n */\n state: string;\n\n /**\n * ID of the parent process\n */\n processId: string;\n /**\n * title of the parent process\n */\n processTitle: string;\n /**\n * subject of the parent process\n */\n processSubject: string;\n\n /**\n * Form model for this work item. May be empty if the work item does not require user inputs\n */\n form: any;\n /**\n * Data for the form model. Form definition and the forms data are separated, and will be merged by the application.\n */\n data: any;\n /**\n * Meta data for data properties. Some form elements require additional information about the actual value.\n * Such values are for example form elements of type CODESYSTEM or ORGANIZATION.\n */\n data_meta: any;\n\n /**\n * Work items may define actions aside from the default `continue` action. This property holds a collection of all\n * actions provided by the current work item.\n */\n actions: WorkItemAction[];\n /**\n * A work items file is a container that holds objects (e.g. DMS Objects) attached to the current work item. A work item for\n * approving an invoice for example would have the related invoice document attached.\n */\n file: FileEntry[];\n /**\n * Permissions for the work items file entries, that allow or deny adding or removing entries from the work items file.\n */\n fileEntryPermissions: {\n add: boolean;\n remove: boolean\n\n };\n /**\n * Work items may be received by users in substitution for other users that are currently unavailable.\n * If this is the case this property holds the information about the user that should have retrieved the work item.\n */\n inSubstituteOf: OrgUser[];\n /**\n * When set to true, executing an action requires additional authorization.\n */\n authRequired: boolean;\n /**\n * The date the work item has been received\n */\n received: Date;\n /**\n * Work items are able to be set up with due time property that defines a time for the work item to have been processed\n */\n duetime: Date;\n /**\n * Performers are users, groups and/or roles that received the work item\n */\n performer: {\n groups: OrgGroup[],\n roles: OrgRole[],\n users: OrgUser[]\n };\n /**\n * The name of the used process model\n */\n qmodelname: string;\n\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new work item instance\n */\n constructor(json: any) {\n Object.assign(this, json);\n\n this.fileEntryPermissions = {\n add: json.isFileElemAddable || false,\n remove: json.isFileElemRemovable || false\n };\n if (this.actions && this.actions.length) {\n this.actions = this.actions.sort((a, b) => {\n return a.code - b.code;\n });\n }\n }\n\n setFile(fileEntries: FileEntry[]) {\n if (fileEntries) {\n // Sort files by addtime\n this.file = fileEntries.sort((a, b) => {\n return (a.addtime < b.addtime) ? -1 : ((a.addtime > b.addtime) ? 1 : 0);\n });\n } else {\n this.file = [];\n }\n }\n}\n\n\n/**\n * A work items action. Actions are basically defining the next steps of a\n * process from the current work item.\n */\nexport interface WorkItemAction {\n /**\n * The actions title (label)\n */\n title: string;\n /**\n * Short description of the action\n */\n description?: string;\n /**\n * The actions type. Values may be `FORWARD` (forward to the next process step) or `LINK` (open an external link to e.g. process\n * or retrieve data required for the current work item)\n */\n type: string;\n /**\n * Code that identifies the action (kind of an ID in context of the current work item)\n */\n code: number;\n /**\n * If actions type is set to `LINK` this property holds the target URL to forward to\n */\n url?: string;\n}\n\n\n/**\n * Entry of a work items file. A work items file is a container that holds objects (e.g. DMS Objects) attached to a\n * work item. A work item for approving an invoice for example would have the related invoice document attached.\n */\nexport interface FileEntry {\n /**\n * unique identifier\n */\n id: string;\n /**\n * Title of the file entry\n */\n title: string;\n /**\n * Short description of the file entry\n */\n description: string;\n /**\n * ID of an icon (e.g. object type icon in case of dms objects)\n */\n iconid: string;\n /**\n * Name of the user that created this file entry\n */\n creator: string;\n /**\n * The time (date) this entry was added to the work item\n */\n addtime: number;\n /**\n * file entries type\n */\n type: string;\n}\n","export enum ClipboardAction {\n COPY,\n CUT\n}\n","/**\n * @ignore\n */\nexport interface IObjectType {\n id: string;\n implements?: string[];\n folder: boolean;\n iscontextfolder: boolean;\n abstract: boolean;\n icon?: any;\n maxfiles: number;\n minfiles: number;\n name: string;\n qname: string;\n label: string;\n description: string;\n group?: any;\n elements: any[];\n allowedcontexttypes?: ContextType[];\n supertypes?: any[];\n shareable: boolean;\n allowedlocations?: {\n parenttypes: ParentTypes[];\n };\n}\n\n/**\n * @ignore\n */\nexport interface ParentTypes {\n name: string;\n count: string;\n uri: string;\n}\n\n/**\n * @ignore\n */\nexport interface ContextType {\n name: string;\n label: string;\n description?: string;\n}\n\n/**\n * Representation of an object type. Object types are defined with the system definition and describe\n * different kind of objects that allowed to be created.\n */\nexport class ObjectType {\n /**\n * Object types ID\n */\n id: string;\n /**\n * List of all supertypes\n */\n implements: string[];\n /**\n * @ignore\n * is basically the same as isContextFolder, because we do not allow other folders than context folder\n */\n isFolder: boolean;\n /**\n * Flag indicating whether or not the object type is a context folder\n */\n isContextFolder: boolean;\n /**\n * Flag indicating whether or not the object type is an abstract type other types can inherit from\n */\n isAbstract: boolean;\n /**\n * ID of the object types icon\n */\n iconId: string;\n /**\n * Minimum number of files to be attached to this type\n */\n minFiles: number;\n /**\n * Maximum number of files to be attached to this type\n */\n maxFiles: number;\n /**\n * Object types internal name\n */\n name: string;\n /**\n * Object types full qualified internal name\n */\n qname: string;\n /**\n * Object types label\n */\n label: string;\n /**\n * Object types description\n */\n description: string;\n /**\n * Object types can be grouped. This property holds the name of the group the current type belongs to\n */\n group: string;\n /**\n * Elements are the properties defining the object type. Those elements are also used for defining a form model\n * for the object types input form but (may) also contain hidden elements.\n */\n elements: any[];\n /**\n * List of context types this object type is allowed to be created in\n */\n allowedcontexttypes: ContextType[];\n /**\n * List of parent types the current type inherits from\n */\n supertypes: string[];\n /**\n * Flag indicating whether or not this object type can be shared\n */\n shareable: boolean;\n parenttypes?: string[];\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new object type instance\n */\n constructor(json: IObjectType) {\n this.id = json.id;\n this.implements = json.implements ? json.implements : [];\n this.isFolder = json.folder;\n this.isContextFolder = json.iscontextfolder;\n this.isAbstract = json.abstract;\n this.iconId = json.icon ? json.icon.id : null;\n this.maxFiles = json.maxfiles;\n this.minFiles = json.minfiles;\n this.name = json.name;\n this.qname = json.qname;\n this.label = json.label;\n this.description = json.description;\n this.group = json.group ? json.group.label : \"\";\n this.elements = json.elements;\n this.allowedcontexttypes = json.allowedcontexttypes\n ? json.allowedcontexttypes\n : [];\n this.supertypes = json.supertypes ? json.supertypes.map(t => t.name) : [];\n this.shareable = json.shareable;\n this.parenttypes = this.getParentTypes(json.allowedlocations);\n }\n\n getParentTypes(allowedlocations): string[] {\n if (allowedlocations) {\n return allowedlocations.parenttypes.map(types => types.name);\n }\n return [];\n }\n}\n","import {of as observableOf, Observable, MonoTypeOperatorFunction} from 'rxjs';\nimport {map, tap} from 'rxjs/operators';\nimport {Inject, Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders, HttpResponse} from '@angular/common/http';\nimport {Config} from '../config/config.service';\nimport {DmsObject} from '../../model/dms-object.model';\nimport * as FileSaver from 'file-saver';\nimport {Logger} from '../logger/logger';\nimport {AuthProfile} from '../auth/auth-profile.interface';\nimport {HttpParams} from '@angular/common/http';\nimport {finalize, shareReplay} from 'rxjs/operators';\nimport {CoreConfig} from '../../config/core-config';\nimport {CORE_CONFIG} from '../../config/core-init.tokens';\n\n/**\n * HttpOptions for http request\n * @param observe: 'body' | 'events' | 'response'\n * @param responseType: 'arraybuffer' | 'blob' | 'json' | 'text'\n */\nexport interface HttpOptions {\n headers?:\n | HttpHeaders\n | {\n [header: string]: string | string[];\n };\n observe?: any;\n params?:\n | HttpParams\n | {\n [param: string]: string | string[];\n };\n reportProgress?: boolean;\n responseType?: any;\n withCredentials?: boolean;\n}\n\n\n// @ts-ignore\n/**\n * `BackendService` encapsulates the communication with the yuuvis<sup>&reg;</sup> RAD REST endpoints.\n *\n * As yuuvis<sup>&reg;</sup> RAD provides different services, this service is also capable of providing the base URIs for those services.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class BackendService {\n\n public gridDataFilter: MonoTypeOperatorFunction<any> = map((data: any[]) => data?.filter((v: any) => !v.__removed));\n private authProfile: AuthProfile;\n private cache = new Map<string, any>();\n private temp = new Map<string, Observable<any>>();\n private headers = this.setDefaultHeaders();\n\n /**\n * @ignore\n */\n constructor(private http: HttpClient,\n @Inject(CORE_CONFIG) public coreConfig: CoreConfig,\n private logger: Logger,\n private config: Config) {\n\n /**\n * default profile is supposed to use NTLM\n * @type {host: string; ntlm: boolean}\n */\n this.authProfile = {\n host: '',\n ntlm: true\n };\n }\n\n /**\n * @ignore\n */\n public setAuthProfile(profile?: AuthProfile) {\n if (profile) {\n this.headers = this.setDefaultHeaders();\n this.authProfile = profile;\n if (this.authProfile.auth) {\n // this.setHeader('Authorization', this.authProfile.auth);\n }\n this.headers.delete('Authorization');\n }\n }\n\n /**\n * Add a new header.\n * @param key The headers name\n * @param value The value\n */\n public setHeader(key: string, value: string) {\n if (value && value.length) {\n this.headers = this.headers.set(key, value);\n }\n }\n\n /**\n * Retrieves the current headers\n * @returns The `HttpHeaders` that are currently set up\n */\n public getHeaders(): HttpHeaders {\n return this.headers;\n }\n\n /**\n * @ignore\n */\n public getHttpOptions(requestOptions?: HttpOptions): HttpOptions {\n return Object.assign({headers: this.getHeaders(), withCredentials: this.coreConfig.withCredentials}, requestOptions);\n }\n\n /**\n * Gets the base URI for the DMS-Service endpoint\n * @returns Base URI\n */\n public getServiceBase() {\n return this.config.getUri('serviceBase');\n }\n\n /**\n * Gets the base URI for the Search-Service endpoint\n * @returns Base URI\n */\n public getSearchBase() {\n return this.config.getUri('searchBase');\n }\n\n /**\n * Gets the base URI for the Context-Service endpoint\n * @returns Base URI\n */\n public getContextBase() {\n return this.config.getUri('contextBase');\n }\n\n /**\n * Gets the base URI for the Inbox-Service endpoint\n * @returns Base URI\n */\n public getInboxBase() {\n return this.config.getUri('inboxBase');\n }\n\n /**\n * Gets the base URI for the BPM-Service endpoint\n * @returns Base URI\n */\n public getBpmBase() {\n return this.config.getUri('bpmBase');\n }\n\n /**\n * Gets the base URI for the Agent-Service endpoint\n * @returns Base URI\n */\n public getAgentBase() {\n return this.config.getUri('agentBase');\n }\n\n /**\n * Gets the base URI for the Status-Service endpoint\n * @returns Base URI\n */\n public getStatusBase() {\n return this.config.getUri('statusBase');\n }\n\n /**\n * @ignore\n */\n public getIconBase(id: string = '') {\n return this.getBaseWithContext(this.getServiceBase()) + '/ui/icon/' + id;\n }\n\n /**\n * @ignore\n */\n public getHost() {\n return this.authProfile.host || '';\n }\n\n public getBaseWithContext(base: string) {\n return base?.startsWith('/') ? this.config.getContextPath() + base : base;\n }\n\n private getContextPath(base?: string): string {\n return this.getHost() + (this.getBaseWithContext(base || this.getServiceBase()));\n }\n\n /**\n * Wrapped HTTP GET method\n * @param uri The REST URI to be queried\n * @param base The Base URI (backend service) to be used\n * @param requestOptions Additional request options\n * @returns The data retrieved from the given endpoint\n */\n public get(uri: string, base?: string, requestOptions?: HttpOptions): Observable<any> {\n return this.http.get(this.getContextPath(base) + uri, this.getHttpOptions(requestOptions));\n }\n\n /**\n * Wrapped HTTP PUT method\n * @param uri The target REST URI\n * @param data Data to be 'posted'\n * @param base The Base URI (backend service) to be used\n * @param requestOptions Additional request options\n * @returns The return value of the target PUT endpoint\n */\n public put(uri: string, data?: any, base?: string, requestOptions?: HttpOptions): Observable<any> {\n return this.http.put(this.getContextPath(base) + uri, data, this.getHttpOptions(requestOptions));\n }\n\n /**\n * @ignore\n */\n public getJson(uri: string, base?: string): Observable<any> {\n return this.http.get(this.getContextPath(base) + uri, this.getHttpOptions({responseType: 'json'}));\n }\n\n /**\n * Wrapped HTTP POST method\n * @param uri The target REST URI\n * @param data Data to be 'posted'\n * @param base The Base URI (backend service) to be used\n * @param requestOptions Additional request options\n * @returns The return value of the target POST endpoint\n */\n public post(uri: string, data?, base?: string, requestOptions?: HttpOptions): Observable<any> {\n const baseUri = this.getContextPath(base);\n const payload = data ? JSON.stringify(data) : '';\n return this.http.post(`${baseUri}${uri}`, payload, this.getHttpOptions(requestOptions));\n }\n\n /**\n * Performs a multipart form data POST request.\n * @param uri The target REST URI\n * @param formData FormData to be 'posted'\n * @param base The Base URI (backend service) to be used\n * @param requestOptions Additional request options\n * @returns The return value of the target POST endpoint\n */\n public postMultiPart(uri: string, formData: FormData, base?: string, requestOptions?: HttpOptions): Observable<any> {\n const baseUri = this.getContextPath(base);\n const headers = this.getHeaders();\n headers.delete('Content-Type');\n const reqOptions = Object.assign({headers: headers, withCredentials: this.coreConfig.withCredentials}, requestOptions);\n return this.http.post(`${baseUri}${uri}`, formData, reqOptions);\n }\n\n /**\n * Wrapped HTTP DELETE method\n * @param uri The target REST URI\n * @param base The Base URI (backend service) to be used\n * @param requestOptions Additional request options\n * @returns The return value of the target DELETE endpoint\n */\n public del(uri: string, base?: string, requestOptions?: HttpOptions): Observable<any> {\n return this.http.delete(this.getContextPath(base) + uri, this.getHttpOptions(requestOptions));\n }\n\n /**\n * @ignore\n * Soft update for lists - enables grid to handle all changes\n * to add new - only item should be specified\n * to remove - only id should be specified\n * to update - both params should be specified\n *\n * @param any[] list Original list of items\n * @param id?: string; item?: any data[]\n * @returns any[]\n */\n public update(list: any[], data: {id?: string, item?: any}[]) {\n data.forEach(({id, item}) => {\n if (id) {\n const _item = list.find(l => l.id === id);\n Object.assign(_item, item, item ? {__updated: true} : {__removed: true});\n } else if (item) {\n list.unshift(Object.assign(item, {__added: true}));\n }\n });\n return list;\n }\n\n /**\n * @ignore\n * Cache for small requests like icons and configs\n *\n * @param string uri\n * @returns Observable<any>\n */\n public getViaCache(uri: string): Observable<any> {\n if (this.cache.has(uri)) {\n return observableOf(this.cache.get(uri));\n } else {\n return this.getViaTempCache(uri, () => this.http.get(uri, {withCredentials: this.coreConfig.withCredentials, responseType: 'text'}).pipe(\n tap(text => this.cache.set(uri, text))));\n }\n }\n\n /**\n * @ignore\n * Temporary Cache for multiple identical requests\n *\n * @param string id\n * @param Function request\n * @returns Observable<any>\n */\n public getViaTempCache(id: string, request?: Function): Observable<any> {\n if (this.temp.has(id)) {\n return this.temp.get(id);\n } else {\n const resp = (request ? request() : this.get(id)).pipe(\n finalize(() => this.temp.delete(id)),\n shareReplay(1)\n );\n this.temp.set(id, resp);\n return resp;\n }\n }\n\n /**\n * Download the content of dms objects.\n *\n * @param DmsObject[] dmsObjects Array of dms objects to be downloaded\n * @param \"PDF\" | \"TIFF\" | \"TEXT\" | \"JPEG\" rendition The type of rendition to be downloaded. If not specified, the original content will be downloaded.\n * Possible renditions are `PDF`, `TIFF`, `TEXT`, `JPEG`.\n */\n public downloadContent(dmsObjects: DmsObject[], rendition?: 'PDF' | 'TIFF' | 'TEXT' | 'JPEG', fileNameWithVersionNumber?: boolean, recyclebin?: boolean) {\n\n const item = dmsObjects[0];\n if (dmsObjects.length === 1) {\n if (item.content) {\n\n let uri = `${this.getServiceBase()}/dms/${item.content.id}/content?type=${item.content.type}&asdownload=true&recyclebin=${!!recyclebin}`;\n if (rendition) {\n uri += `&rendition=${rendition}&_intent=DOWNLOAD_${rendition}`;\n } else {\n uri += '&_intent=DOWNLOAD';\n }\n if (item.content.id === item.id) {\n uri += `&version=${item.version}`;\n }\n this.download(uri, fileNameWithVersionNumber ? item.version : null);\n } else {\n this.logger.error('The provided dms object has no content', item);\n }\n }\n\n if (dmsObjects.length > 1) {\n let uri = `${this.getServiceBase()}/dms/batch/export`;\n if (item.content) {\n const expressions = dmsObjects.map(obj => obj.content.id);\n const data = {\n query: {\n expression: [...expressions]\n },\n options: {\n rendition: ''\n }\n };\n data.options.rendition = rendition ? 'PDF' : null;\n this.downloadMulti(uri, fileNameWithVersionNumber ? item.version : null, data);\n } else {\n this.logger.error('The provided dms object has no content', item);\n }\n }\n }\n\n public download(uri: string, version?: number) {\n this.http.get(uri, {observe: 'response', responseType: 'blob', withCredentials: this.coreConfig.withCredentials})\n .subscribe((res) => {\n FileSaver.saveAs(\n res.body,\n this.getFileNameFromHttpResponse(res, version)\n );\n });\n }\n\n public downloadMulti(uri: string, version?: number, _body?: any) {\n this.http.post(uri, _body, {observe: 'response', responseType: 'blob', withCredentials: this.coreConfig.withCredentials})\n .subscribe((res) => {\n FileSaver.saveAs(\n res.body,\n this.getFileNameFromHttpResponse(res, version)\n );\n });\n }\n\n private getFileNameFromHttpResponse(res: HttpResponse<any>, version: number) {\n const contentDispositionHeader = res.headers.get('Content-Disposition') || '';\n const encodedFileNameMatchResult = contentDispositionHeader.match('filename\\\\*=UTF-8\\'\\'(.*)')\n || contentDispositionHeader.match('filename=\\\"(.*)\\\"');\n const encodedFileName = encodedFileNameMatchResult ? encodedFileNameMatchResult[1] : null;\n const filename = encodedFileName ? decodeURIComponent(encodedFileName) : 'unknown';\n const index = !~filename.lastIndexOf('.') ? filename.length : filename.lastIndexOf('.');\n return !version ? filename : `${filename.slice(0, index)}_v${version}${filename.slice(index)}`;\n }\n\n\n /**\n * Getter for the HTTP Headers\n *\n * @returns HttpHeaders\n */\n private setDefaultHeaders(): HttpHeaders {\n return new HttpHeaders({\n 'Content-Type': 'application/json',\n 'X-os-include-links': 'false',\n 'X-os-include-actions': 'false',\n 'X-os-sync-index': 'true'\n });\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Observable, Subject, of as observableOf, of, forkJoin, fromEvent} from 'rxjs';\nimport {LocalStorage, StorageMap} from '@ngx-pwa/local-storage';\nimport {debounceTime, switchMap, map, first} from 'rxjs/operators';\nimport {Utils} from '../../util/utils';\n\n/**\n * The apps central caching service. It will provide the app with an easy to use cache that\n * is aware of the platform it is running on. So it abstracts the platform-specific implementations\n * of a cache from the application.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class AppCacheService {\n\n /**\n * Key for storing system definition\n */\n public SYSTEM_DEFINITION = 'eo.framework.cache.systemdefinition';\n /**\n * Key for storing system definition\n */\n public HOSTS = 'eo.framework.cache.hosts';\n /**\n * Key for storing location history\n */\n public LOCATION_HISTORY = 'eo.framework.cache.locations.history';\n\n private itemsMap = new Map<string, Subject<any>>();\n\n constructor(protected storage: LocalStorage, private storageMap: StorageMap) {\n // IndexedDB issue after update - refresh function (transform all wrapped items)\n window['_ngStorageRefresh'] = () => this.getStorage().subscribe(storage => this.setStorage(storage).subscribe() && console.log(storage));\n }\n\n /**\n * Writes an item to the storage.\n * @param key The item's key\n * @param value The value to be stored\n * @param debounce The debounce time (default: 500) to reduce identical storage calls\n * @returns Resolves true if setting the item succeeded, false otherwise\n */\n public setItem(key: string, value: any, debounce: number = 500): Observable<boolean> {\n if (!debounce) {\n return this.storage.setItem(key, value);\n } else {\n if (!this.itemsMap.has(key)) {\n const subject = new Subject();\n subject.pipe(debounceTime(debounce), switchMap(val => this.storage.setItem(key, val))).subscribe();\n this.itemsMap.set(key, subject);\n }\n this.itemsMap.get(key).next(value);\n return observableOf(true);\n }\n }\n\n /**\n * Get a stored item by its key.\n * @param key The item's key\n * @returns The item's value if the key exists, null otherwise\n */\n public getItem(key: string): Observable<any> {\n return this.storage.getItem(key)\n .pipe(map((item: any) => {\n // IndexedDB issue after update (transform wrapped items)\n return Object.keys(item || {}).join() === 'value' ? item.value : item;\n }));\n }\n\n /**\n * Removes an item from the storage.\n * @param key The item's key\n * @returns Resolves true if removing the item succeeded, false otherwise\n */\n public removeItem(key: string): Observable<boolean> {\n return this.storage.removeItem(key);\n }\n\n /**\n * Deletes all items from local storage\n * @param filter optional - Delete all keys that pass through filter\n * @returns Resolves true if clearing all items succeeded, false otherwise\n */\n public clear(filter?: (key) => boolean): Observable<boolean> {\n return filter\n ? this.getStorageKeys().pipe(\n switchMap((keys) => {\n const list = keys.filter((k) => filter(k)).map((k) => this.removeItem(k));\n return list.length ? forkJoin(list).pipe(map(() => true)) : of(true);\n })\n )\n : this.storage.clear();\n }\n\n getStorageKeys(): Observable<any> {\n return new Observable<string[]>((observer) => {\n const keys = [];\n this.storageMap.keys().subscribe({\n next: (key) => keys.push(key),\n complete: () => observer.next(keys)\n });\n }).pipe(first());\n }\n\n getStorage(): Observable<any> {\n return this.getStorageKeys().pipe(\n switchMap((keys) =>\n keys.length\n ? forkJoin(\n Utils.arrayToObject(\n keys,\n (o) => o,\n (k) => this.getItem(k)\n )\n )\n : of({})\n )\n );\n }\n\n setStorage(options: any): Observable<any> {\n return forkJoin(Object.keys(options || {}).map((k) => this.setItem(k, options[k])));\n }\n\n replaceStorage(settings: any) {\n for (const [key, value] of Object.entries(settings)) {\n this.setItem(key, value);\n }\n }\n}\n","import {forkJoin as observableForkJoin, of, Observable, ReplaySubject} from 'rxjs';\n\nimport {catchError, tap, map, switchMap} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {IOrganizationObjects} from '../../interface/organization-objects.interface';\nimport {BackendService} from '../backend/backend.service';\nimport {AppCacheService} from '../cache/app-cache.service';\nimport {Logger} from '../logger/logger';\nimport {ObjectType} from '../../model/object-type.model';\nimport {EoUser} from '../../model/eo-user.model';\nimport * as _ from 'lodash';\nimport {OrgRole} from '../../model/org.model';\nimport {Utils} from '../../util/utils';\nimport {ICodeSystem} from './systemdefinition.interface';\nimport {EventService} from '../events/event.service';\nimport {EnaioEvent} from '../events/events';\nimport moment from 'moment';\n\n/**\n * Collection of System Services\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class SystemService {\n\n private _system;\n private systemSource = new ReplaySubject<any>();\n public system$: Observable<any> = this.systemSource.asObservable();\n\n // session cache for object type forms\n private objectTypeForms: any[] = [];\n private user: EoUser;\n private cachedRoles: OrgRole[] = [];\n\n constructor(private backend: BackendService,\n private logger: Logger,\n private eventService: EventService,\n private appCache: AppCacheService) {\n this.eventService.on(EnaioEvent.SYSTEM_STATUS_SCHEMA_CHANGED).subscribe(() => {\n this.fetchSystemDefinition(this.user);\n })\n }\n\n set system(s){\n this._system = s;\n }\n\n get system(){\n return JSON.parse(JSON.stringify(this._system));\n }\n\n /**\n * Gets all ObjectTypes\n *\n * @returns An array containing all object types\n */\n public getObjectTypes(): ObjectType[] {\n return this.system.types;\n }\n\n /**\n * Gets an ObjectType by name.\n *\n * @param objectTypeName The name of the object type\n * @returns the ObjectType matching the given name\n */\n public getObjectType(objectTypeName: string): ObjectType {\n return this.system.types.find(t => t.name === objectTypeName);\n }\n\n /**\n * Get form elements from form model. This is useful if you have to fetch them\n * for a special situation like SEARCH\n * @param objectTypeName ObjectType to fetch elements for\n * @param situation Form model situation to be fetched\n * @param isContextType Flag indicating that the form model should be fetched for a context mode\n */\n getFormElementsFromFormModel(objectTypeName: string, situation: string, isContextType?: boolean): Observable<any[]> {\n return this.getObjectTypeForm(objectTypeName, situation, isContextType ? 'CONTEXT' : null).pipe(\n switchMap(model => {\n const elements = [];\n this.processFormModelElements(model, elements);\n return of(elements);\n }))\n }\n\n private processFormModelElements(model: any, elements: any[]) {\n model.elements.forEach(e => {\n if(e.type !== \"o2mGroup\" && e.type !== \"o2mGroupStack\") {\n elements.push(e);\n } else if(e.elements && e.elements.length) {\n this.processFormModelElements(e, elements);\n }\n })\n }\n\n /**\n * Checks whether or not the given type implements a given supertype\n * @param type Type to be checked\n * @param superTypeName Name of the supertype\n */\n public implementsType(type: ObjectType, superTypeName: string): boolean {\n return type.name === superTypeName || (type.implements && type.implements.indexOf(superTypeName) !== -1);\n }\n\n /**\n * Gets a codesystem\n *\n * @param id The codesystems id\n * @returns The codesystem object matching the given id\n */\n public getCodesystem(id: string): ICodeSystem {\n return this.system.codesystems.find(t => t.id === id || t.name === id);\n }\n\n /**\n * Get the form model of an object type.\n *\n * @param objectTypeName The object type name\n * @param situation The form situation to be fetched\n * @param mode Form mode to fetch (e.g. CONTEXT)\n * @returns The object type form model\n */\n public getObjectTypeForm(objectTypeName: string, situation: string, mode?: string): Observable<any> {\n\n /** check if we have a cached form first */\n let cachedForm;\n\n let i = 0;\n while (!cachedForm && i < this.objectTypeForms.length) {\n if (this.objectTypeForms[i].name === objectTypeName &&\n this.objectTypeForms[i].mode === mode &&\n this.objectTypeForms[i].situation === situation) {\n cachedForm = this.objectTypeForms[i];\n }\n i++;\n }\n\n if (cachedForm) {\n /** return a clone of the cached model as otherwise model changes will be added to the chached model */\n return of(_.cloneDeep(cachedForm));\n } else {\n\n let uri = `/ui/form/${objectTypeName}?situation=${situation}`;\n uri += !!mode ? `&formmode=${mode}` : '';\n\n /** fetch and cache the requested form, if no cached version was found */\n return this.backend.getViaTempCache(uri, () => this.backend\n .getJson(uri)\n .pipe(\n tap((model) => this.objectTypeForms.push(_.cloneDeep(model)))\n ));\n }\n }\n\n /**\n * Fetches the backends system definition and updates system$ Observable.\n * Subscribe to the system$ observable instead of calling this function, otherwise you'll trigger fetching the\n * system definition every time.\n *\n * @param user The user to load the system definition for\n * @returns true when successfull\n */\n public getSystemDefinition(user: EoUser): Observable<boolean> {\n\n this.user = user;\n // todo: temporary: OrgChanges could not be recognized but affect object definition\n return this.fetchSystemDefinition(user);\n\n // todo: enable again when OrgChanges are recognizable (DO NOT DELETE!)\n // // is there a cached version\n // return this.appCache\n // .getItem(this.appCache.SYSTEM_DEFINITION)\n // .catch((error) => {\n // this.logger.error('Error fetching cached version of system definition.', error);\n // return this.fetchSystemDefinition(user);\n // })\n // .flatMap((cachedSystemDefinition: any) => {\n //\n // // yes? then check if it's up to date\n // if (cachedSystemDefinition) {\n //\n // if (\n // user.schema.version !== cachedSystemDefinition.info.version ||\n // user.id !== cachedSystemDefinition.info.user ||\n // user.getSchemaLocale() !== cachedSystemDefinition.info.locale\n // ) {\n // return this.fetchSystemDefinition(user);\n // } else {\n // // cache is up to date. return the cached one\n // this.logger.debug('System definition is up to date, using cached version.', cachedSystemDefinition);\n // this.system = cachedSystemDefinition;\n // this.systemSource.next(this.system);\n // return of(true);\n // }\n // } else {\n // // no cached systemDefinition found\n // return this.fetchSystemDefinition(user);\n // }\n // });\n }\n\n /**\n * Creates a value depending on a given Type\n *\n * @param string valueType\n * @returns any\n */\n public getDefaultValue(valueType: string): any {\n let defaultValue;\n switch (valueType) {\n case 'CURRENT_USER': {\n defaultValue = this.user.name;\n break;\n }\n case 'CURRENT_USER_NAME': {\n defaultValue = this.user.title;\n break;\n }\n case 'CURRENT_DATETIME': {\n defaultValue = new Date();\n break;\n }\n case 'CURRENT_DATE': {\n defaultValue = moment().startOf('day').format('yyyy-MM-DD');\n break;\n }\n case 'YEAR': {\n defaultValue = moment().year();\n break;\n }\n case 'MONTH': {\n defaultValue = moment().month() + 1;\n break;\n }\n case 'DAY': {\n defaultValue = moment().date();\n break;\n }\n case 'HOUR': {\n defaultValue = moment().hour();\n break;\n }\n case 'MINUTE': {\n defaultValue = moment().minute();\n break;\n }\n case 'SECOND': {\n defaultValue = moment().second();\n break;\n }\n case 'WEEK_OF_YEAR': {\n defaultValue = moment().isoWeek();\n break;\n }\n case 'FIRST_DAY_OF_WEEK': {\n defaultValue = moment().startOf('isoWeek').toDate();\n break;\n }\n case 'FIRST_DAY_OF_MONTH': {\n defaultValue = moment().startOf('month').toDate();\n break;\n }\n case 'FIRST_DAY_OF_YEAR': {\n defaultValue = moment().startOf('year').toDate();\n break;\n }\n }\n\n return defaultValue;\n }\n\n /**\n * Fetches the system definition from the server. Provided params are used for storing the\n * recent version in cache.\n *\n * @param user The user to fetch the system definition for\n * @return boolean\n */\n fetchSystemDefinition(user: EoUser): Observable<boolean> {\n\n const fetches = [\n this.backend.getJson('/system/type/list?elements=true&basetypes=true'),\n this.backend.getJson('/system/cs/list?elements=true')\n ];\n\n return observableForkJoin(fetches)\n .pipe(\n catchError(Utils.catch((error) => {\n this.logger.error('Error fetching recent version of system definition from server.', error);\n this.systemSource.error('Error fetching recent version of system definition from server.');\n })),\n map((data) => {\n\n this.objectTypeForms = [];\n const system = {\n /**\n * info about the current system definition\n */\n info: {\n user: user.id,\n locale: user.getSchemaLocale(),\n version: user.schema.version\n },\n /**\n * supported backend locales\n */\n locales: user.schema.supportedLocales,\n /**\n * object type definitions\n */\n types: [],\n /**\n * codesystems cache\n */\n codesystems: []\n };\n\n const types = data[0];\n system.types = types.map(t => new ObjectType(t));\n system.codesystems = data[1];\n\n this.system = system;\n this.systemSource.next(system);\n this.logger.debug('Fetched new version of system definition (user: ' + user.id + ', version: ' + user.schema.version + ').');\n this.appCache\n .setItem(this.appCache.SYSTEM_DEFINITION, system)\n .subscribe(() => {\n this.logger.debug('Cached recent version');\n }, Utils.logError(null, 'Error caching recent version of system definition.'));\n\n return true;\n }));\n }\n\n /**\n * Retrieve an organization object by its ID\n * @param id ID of org object\n */\n getOrganizationObjectById(id: string): Observable<any> {\n return this.backend.getJson(`/organization/id/${id}`)\n }\n\n /**\n * Fetches the organization object for a given name.\n *\n * @param name The name to fetch object for\n * @returns\n */\n getOrganizationObject(name: string): Observable<any> {\n return this.getOrganizationObjects([name]).pipe(map(res => res[0]));\n }\n\n /**\n * Fetches a collection of organization objects\n *\n * @param names Array of names to fetch objects for\n * @returns A Array of Organization Objects\n */\n getOrganizationObjects(names: string[]): Observable<IOrganizationObjects[]> {\n const toFetch: Observable<IOrganizationObjects>[] = names.map(name => this.backend.getJson(`/organization/name/${name}`).pipe(catchError(error => of({id: name, active: false}))));\n return observableForkJoin(toFetch);\n }\n\n /**\n * Fetches a collection of organization roles\n *\n * @return A Array of Organization Roles\n */\n getRoles(): Observable<OrgRole[]> {\n if (this.cachedRoles.length) {\n return of(this.cachedRoles);\n } else {\n return this.backend\n .get('/organization/role')\n .pipe(\n map(o => o as OrgRole[]),\n tap(roles => (this.cachedRoles = roles as OrgRole[]))\n );\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Capabilities} from './capabilities.model';\nimport {SystemService} from '../system/system.service';\n\n/**\n * Handles the systems capabilities. Capabilities are settings that enable/disable certain client features.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class CapabilitiesService {\n\n private capabilities: Capabilities;\n\n /**\n * @ignore\n */\n constructor(private system: SystemService) {\n }\n\n /**\n * Sets the capabilities based on a given object set by auth.service\n *\n * @param userCapabilities Object containing capabilities properties\n * @param useSingleSingOn Whether or not to set up single signon on capability\n * @returns The newly created capabilities object\n */\n setCapabilities(userCapabilities: any, useSingleSingOn?: boolean): Capabilities {\n\n this.capabilities = {\n bpm: userCapabilities.bpm,\n favorites: userCapabilities.favorites,\n followup: userCapabilities.followup,\n subscription: userCapabilities.subscription,\n intray: userCapabilities.intray,\n storedqueries: userCapabilities.storedqueries,\n recyclebin: userCapabilities.recyclebin,\n inbox: userCapabilities.bpm || userCapabilities.followup || userCapabilities.subscription,\n notifications: userCapabilities.followup || userCapabilities.subscription,\n template: userCapabilities.template,\n sso: useSingleSingOn || false,\n };\n return this.capabilities;\n }\n\n /**\n * Getter for the Capabilities\n */\n getCapabilities(): Capabilities {\n return {...this.capabilities, signing: !!this.system.getObjectType('yuvsigning')};\n }\n\n /**\n * Check if Capability is present\n * @param capability Capability to check for\n * @returns True if the capability is set, false otherwise\n */\n hasCapability(capability: string): boolean {\n return this.capabilities[capability];\n }\n}\n","import moment from 'moment';\n\n/**\n * Items emitted by the inbox service\n */\nexport class InboxItem {\n\n public static TYPE_BPM = 'BPM';\n public static TYPE_RESUBMISSION = 'RESUBMISSION';\n public static TYPE_SUBSCRIPTION = 'SUBSCRIPTION';\n\n /**\n * Items ID\n */\n id: string;\n /**\n * Items title\n */\n title: string;\n /**\n * Items description\n */\n description: string;\n /**\n * Items type ('BPM', 'RESUBMISSION', 'SUBSCRIPTION')\n */\n type: string;\n /**\n * ID of the object that caused the inbox entry.\n * In case of type SUBSCRIPTION and RESUBMISSION this is the id of the dms object,\n * for type BPM it is a process id\n */\n sourceId: string;\n /**\n * Items icon ID\n */\n iconId: string;\n /**\n * Flag indicating whether or not the entry has been accepted\n */\n accepted: boolean;\n /**\n * Flag indicating that the current user got this task in substitute\n */\n isdeputy: boolean;\n /**\n * The date the item is due.\n */\n duetime: Date;\n /**\n * The date the item was received\n */\n received: Date;\n target: any;\n\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new inbox item instance\n */\n constructor(json: any) {\n // todo: jsut use Object assign when backend changes are done\n // Object.assign(this, json);\n\n this.id = json.inboxentryid;\n this.title = json.title;\n this.description = json.description;\n this.type = json.type;\n this.sourceId = json.source ? json.source.id : null;\n this.iconId = json.target && json.target.icon ? json.target.icon.id : null;\n this.accepted = json.accepted;\n this.isdeputy = json.isdeputy;\n this.duetime = json.duetime;\n this.received = json.receivetime;\n this.target = json.target;\n }\n\n /**\n * Determines whether or not the inbox item is overdue\n * @returns True when inbox item is overdue, false otherwise\n */\n isOverdue() {\n return this.duetime && moment(this.duetime).isBefore(moment());\n }\n}\n\n/**\n * InboxState\n */\nexport interface InboxState {\n totalmessages: number;\n overduemessages: number;\n unreadmessages: number;\n calculationtime: Date;\n}","import {map, tap, catchError, expand, concatMap, skipWhile, filter} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {EMPTY, Observable, ReplaySubject} from 'rxjs';\nimport {BackendService} from '../backend/backend.service';\nimport {InboxItem, InboxState} from '../../model/inbox-item.model';\nimport {Utils} from '../../util/utils';\n\n/**\n * InboxService handles interaction with the inbox service on the backend side.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class InboxService {\n\n // backends maximum page size\n private MAX_PAGE_SIZE = 1000;\n\n private inboxState: InboxState;\n private inboxStateSource = new ReplaySubject<InboxState>(1);\n public inboxState$: Observable<InboxState> = this.inboxStateSource.asObservable();\n\n private inboxItems: InboxItem[];\n private inboxItemsSource = new ReplaySubject<InboxItem[]>(1);\n public inboxItemsGridData$: Observable<InboxItem[]> = this.inboxItemsSource.asObservable();\n public inboxItems$: Observable<InboxItem[]> = this.inboxItemsGridData$.pipe(this.backend.gridDataFilter);\n\n constructor(private backend: BackendService) {\n }\n\n /**\n * Fetches inbox items from the backend.\n *\n * @returns Observable of inbox items.\n */\n getItems(): Observable<InboxItem[]> {\n return this.getAllPages()\n .pipe(\n map(res => res.map(item => new InboxItem(item))),\n tap(res => {\n this.inboxItems = res;\n this.inboxItemsSource.next(this.inboxItems);\n }\n ),\n catchError(Utils.throw(() => this.inboxItemsSource.next([]))));\n }\n\n private getAllPages(): Observable<any[]> {\n let items = [];\n return this.getPage().pipe(\n expand(res => {\n return !res.last ? this.getPage(res.pageable.pageNumber + 1) : EMPTY\n }),\n tap(res => items = [...items, ...res.content]),\n skipWhile(res => !res.last),\n map(_ => items)\n )\n }\n\n private getPage(index?: number) {\n return this.backend\n .getJson(`/get?size=${this.MAX_PAGE_SIZE}&page=${index || 0}`, this.backend.getInboxBase())\n }\n\n /**\n * Fetches state informations for the users inbox\n *\n * @returns inbox state object\n */\n getState(): InboxState {\n return this.inboxState;\n }\n\n /**\n * Public access to fetch inbox\n */\n refreshInboxState() {\n this.fetchInboxState();\n }\n\n /**\n * Retrieve inbox state\n */\n private fetchInboxState() {\n this.backend\n .getJson('/state', this.backend.getInboxBase())\n .pipe(map(res => res as InboxState))\n .subscribe(res => {\n this.inboxState = res;\n this.inboxStateSource.next(this.inboxState);\n }, Utils.logError(null, 'Failed to fetch inbox state!'));\n }\n\n /**\n * Removes an item from the inbox.\n *\n * @param item inbox item to be removed\n * @returns Observable<any>\n */\n removeItem(item: InboxItem): Observable<any> {\n return this.backend\n .del('/' + item.id, this.backend.getInboxBase())\n .pipe(\n tap(() => this.updateInboxItems(item.id))\n );\n }\n\n /**\n * Soft update for data in the inbox.\n *\n * @param id\n * @param item\n * @param multi\n */\n public updateInboxItems(id?: string, item?: any, multi?: any[]) {\n if (this.backend.update(this.inboxItems, multi || [{id, item}])) {\n this.inboxItemsSource.next(this.inboxItems);\n }\n }\n\n /**\n * Marks an inbox item as read.\n *\n * @param item the item to be marked as read\n * @returns Observable<any>\n */\n markAsRead(item: InboxItem): Observable<any> {\n return this.backend.put('/read/' + item.id, this.backend.getInboxBase());\n }\n}\n","import {forkJoin as observableForkJoin, of as observableOf, Observable, ReplaySubject, throwError as observableThrowError} from 'rxjs';\nimport {mergeMap, tap, map} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {Utils} from '../../util/utils';\nimport {BackendService} from '../backend/backend.service';\nimport {WorkItemHistoryEntry} from '../../model/work-item-history.model';\nimport {DmsObject} from '../../model/dms-object.model';\nimport {InboxService} from '../inbox/inbox.service';\nimport {EventService} from '../events/event.service';\nimport {CapabilitiesService} from '../capabilities/capabilities.service';\nimport {ExecutableProcess, FileEntry, Process, WorkItem, WorkItemAction} from '../../model/bpm.model';\nimport {Clipboard} from '../clipboard/clipboard.interface';\nimport {ClipboardAction} from '../clipboard/clipboard-action.enum';\n\n/**\n * `BpmService` handles interaction related to BPM tasks.\n *\n * The main parts provided and used by this service are Processes and WorkItems.\n * Processes are defined on the backend side. They describe a set of tasks that will be executed by the process.\n * Tasks that require user interaction are referred to as WorkItems.\n *\n * Processes can be related to a special object type, but they don't have to. In addition to that they can refer\n * to dms objects.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class BpmService {\n hasMainExecutableProcesses: boolean;\n private executableProcesses: ExecutableProcess[];\n private processItems: Process[];\n private processItemsSource = new ReplaySubject<Process[]>(1);\n /**\n * Long term observable emitting the current processes\n */\n processItems$: Observable<Process[]> = this.processItemsSource.asObservable();\n\n constructor(private capabilities: CapabilitiesService,\n private backend: BackendService,\n private eventService: EventService,\n private inboxService: InboxService) {\n }\n\n /**\n * Retrieve all processes of the current user.\n *\n * @param size Maximum number of processes to be fetched\n * @returns List of Processes\n */\n getProcesses(size: number = 1000): Observable<Process[]> {\n return this.backend\n .getJson(`/process/user?size=${size}`, this.backend.getBpmBase())\n .pipe(\n map(response => response.content.map(item => new Process(item))),\n tap((processes: Process[]) => {\n this.processItems = processes;\n this.processItemsSource.next(this.processItems);\n })\n );\n }\n\n /**\n * Getter for the executable Processes. If types are provided, you'll get\n * only the processes that are executable for all of them\n * @param types List of dms object types to fetch executable processes for\n * @param useCached If the cached data should be returned rather than requesting again\n * @param additionalData If the additional form data should be also included\n * @param modelid The process model ID to only return the data for one process\n * @returns List of executable processes\n */\n getExecutableProcesses(types?: string[], useCached?: boolean, additionalData?: boolean, modelid?: string, global?: boolean): Observable<ExecutableProcess[]> {\n if (this.capabilities.hasCapability('bpm')) {\n return (!!this.executableProcesses && useCached) ? observableOf(this.executableProcesses) : this.fetchExecutableProcesses(types, additionalData, modelid, global);\n } else {\n return observableOf([]);\n }\n }\n\n initExecutableProcesses(): Observable<any> {\n let uri = '/bpm/process/executable';\n return this.backend.get(uri).pipe(tap(res => this.hasMainExecutableProcesses = res?.length));\n }\n\n /**\n * Gets executable Processes for a given set of dms object.You'll get\n * only the processes that are executable for all of them.\n * @param dmsObjects List of dms objects to fetch executable processes for\n * @returns List of executable processes\n */\n getExecutableProcessesForDmsObjects(dmsObjects: DmsObject[]): Observable<ExecutableProcess[]> {\n return this.getExecutableProcesses(dmsObjects.map(o => o.typeName), false, true);\n }\n\n /**\n * Fetches executable Processes from the backend.\n * @param types List of dms object types to fetch executable processes for\n * @param additionalData If the additional form data should be also included\n * @param modelid The process model ID to only return the data for one process\n * @returns List of executable processes\n */\n private fetchExecutableProcesses(types?: string[], additionalData?: boolean, modelid?: string, global?: boolean): Observable<ExecutableProcess[]> {\n let uri = '/bpm/process/executable';\n if (additionalData) {\n uri += '?form=true&fields=true';\n }\n if (types) {\n uri += (additionalData ? '&' : '?') + `type=${types.join(',')}`;\n }\n if (modelid) {\n uri += (additionalData || types ? '&' : '?') + `modelid=${modelid}`;\n }\n return this.backend.get(uri).pipe(\n map(res => res as ExecutableProcess[]),\n tap(res => {\n // Extend existing processes with additional data, instead of overwriting all processes\n if (global) {\n if (additionalData) {\n if (!this.executableProcesses) {\n this.executableProcesses = [];\n }\n res.forEach(proc => {\n const existingProcIndex = this.executableProcesses.findIndex(item => item.id === proc.id);\n if (existingProcIndex === -1) {\n this.executableProcesses.push(proc);\n } else {\n this.executableProcesses[existingProcIndex] = proc;\n }\n });\n } else {\n this.executableProcesses = res;\n }\n }\n }));\n }\n\n /**\n * Getter for a processes file. The file of a process contains\n * dms objects attached to the process.\n * @param processId ID of the process to fetch attached objects for\n */\n getProcessFile(processId: string): Observable<FileEntry[]> {\n return this.backend\n .getJson(`/process/${processId}/file`, this.backend.getBpmBase()).pipe(\n map(res => res.content.map(i => {\n return {\n id: i.elementid,\n title: i.title,\n description: i.description ? i.description : '',\n iconid: i.iconid,\n creator: i.creator,\n addtime: i.addtime,\n type: i.type\n };\n }))\n );\n }\n\n /**\n * Retrieves a work item.\n * @param processId ID of the parent process\n * @param itemId ID of the work item itself\n * @param options Options to be added to the backend call\n * @returns a WorkItem\n */\n getWorkItem(processId: string, itemId: string, options?: any): Observable<WorkItem> {\n const params = options ? options : {form: true, fields: true};\n const tasks = [\n this.backend.getJson(Utils.buildUri(`/bpm/process/${processId}/activity/${itemId}/inboxitem`, params)),\n this.getProcessFile(processId)\n ];\n return observableForkJoin(tasks).pipe(\n map(res => {\n const wi = new WorkItem(res[0]);\n wi.setFile(res[1]);\n return wi;\n }));\n }\n\n /**\n * Saves a work item.\n * @param item The work item to be saved\n * @returns The updated WorkItem\n */\n saveWorkItem(item: WorkItem): Observable<WorkItem> {\n const {id, processId, file, data} = item;\n const payload = {contents: file, data};\n const params = {keeplock: true, isautolock: false};\n\n return this.backend\n .post(Utils.buildUri(`/bpm/process/${processId}/activity/${id}/inboxitem/save`, params), payload)\n .pipe(\n mergeMap(() => this.getWorkItem(processId, id))\n );\n }\n\n /**\n * Forwards a work item. If a WorkItem provides different actions (@link WorkItemAction)\n * you can provide the selected action too.\n * @param item The work item to be forwarded\n * @param action Action used for forwarding\n */\n forwardWorkItem(item: WorkItem, action?: WorkItemAction): Observable<any> {\n const params = {keeplock: false, isautolock: false};\n const payload = {\n action: action,\n contents: item.file,\n data: item.data\n };\n return this.backend\n .post(Utils.buildUri(`/bpm/process/${item.processId}/activity/${item.id}/inboxitem/save`, params), payload)\n .pipe(\n tap(() => this.inboxService.updateInboxItems(item.id))\n );\n }\n\n /**\n * Locks a WorkItem for the current user (personalization), meaning that the\n * current user is now in charge of fulfilling the WorkItem task.\n * @param item The WorkItem to be locked\n * @returns The updated WorkItem\n */\n lockWorkItem(item: WorkItem): Observable<WorkItem> {\n return this.backend.put(`/bpm/process/${item.processId}/activity/${item.id}/inboxitem/lock`)\n .pipe(\n mergeMap(() => this.getWorkItem(item.processId, item.id))\n );\n }\n\n /**\n * Releases the lock for a WorkItem.\n * @param item The work item to be unlocked\n * @returns The updated WorkItem\n */\n unlockWorkItem(item: WorkItem): Observable<WorkItem> {\n return this.backend.del(`/bpm/process/${item.processId}/activity/${item.id}/inboxitem/lock`).pipe(\n mergeMap(() => this.getWorkItem(item.processId, item.id))\n );\n }\n\n /**\n * Starts an executable process.\n * @param executableProcessId ID of the executable Process to be started\n * @param data Data to be passed to the process (simple object of key/value pairs)\n * @param contents Objects to be attached to the process (process.file).\n */\n startProcess(executableProcessId: string, data: any, contents: {id: string, type: string}[]): Observable<any> {\n return this.backend.post(`/bpm/process/?modelid=${executableProcessId}`, {\n data: data,\n contents: contents\n });\n }\n\n /**\n * Returns the history for a process. Which entries are returned depends on the\n * permissions of the current user.\n * @param processId The ID of the process to fetch history for\n * @returns Observable<WorkItemHistoryEntry[]>\n */\n getProcessHistory(processId: string): Observable<WorkItemHistoryEntry[]> {\n return this.backend\n .getJson(`/bpm/process/${processId}/history`)\n .pipe(map(res => res && res.length ? res.map(item => new WorkItemHistoryEntry(item)) : []));\n }\n\n /**\n * Removes a content from the work items file.\n * @param processId The ID of the process to remove the item from\n * @param workItemId The ID of the work item containing the file element to be removed\n * @param workItemContentId The the ID of the file element to be removed\n */\n removeFileElement(processId: string, workItemId: string, workItemContentId: string): Observable<any> {\n return this.backend\n .del(`/process/${processId}/file/${workItemContentId}?activityid=${workItemId}`, this.backend.getBpmBase());\n }\n\n /**\n * Add contents to a work items file.\n * @param processId The ID of the process\n * @param workItemId The ID of the activity\n * @param elements The Elements to be added\n * @returns The updated WorkItem\n */\n addFileElements(processId: string, workItemId: string, elements: DmsObject[]): Observable<WorkItem> {\n const tasks = [];\n elements.forEach((e) => {\n tasks.push(this.backend.post(\n `/process/${processId}/file/${e.id}?type=${e.type.name}&activityid=${workItemId}`,\n {}, this.backend.getBpmBase()));\n });\n return observableForkJoin(tasks)\n .pipe(\n mergeMap(() => this.getWorkItem(processId, workItemId))\n );\n }\n\n /**\n * Add a objects from the clipboard to a WorkItem.\n * @param workItem The workItem to add the objects to\n * @param clipboard Clipboard object holding user selected objects\n * @returns The updated WorkItem\n */\n addFileElementsFromClipboard(workItem: WorkItem, clipboard: Clipboard): Observable<WorkItem> {\n if ((workItem && workItem.fileEntryPermissions.add) && clipboard && clipboard.elements.length && clipboard.action === ClipboardAction.COPY) {\n let contents: DmsObject[];\n if (workItem.file.length) {\n // only add items that are not already part of the attachments\n const attachmentIds = workItem.file.map(e => e.id);\n contents = clipboard.elements.filter(e => attachmentIds.indexOf(e.id) === -1);\n } else {\n contents = clipboard.elements;\n }\n return this.addFileElements(workItem.processId, workItem.id, contents);\n } else {\n return observableThrowError('error');\n }\n }\n}\n","/**\n * Valid template to be applied to a prepared item\n */\nexport interface PreparedItemTemplate {\n /**\n * Templates ID\n */\n id: string;\n /**\n * Templates Title\n */\n title: string;\n /**\n * Templates description\n */\n description: string;\n types: string[];\n content: {\n path: string;\n size: number;\n mimegroup: string;\n mimetype: string;\n digest: string;\n };\n /**\n * Tags describing the template\n */\n tags: string[]\n}\n\n/**\n * File (content) attached to a prepared item\n */\nexport interface PreparedItemContent {\n /**\n * The contents mime type group\n */\n mimegroup: string;\n /**\n * The contents actual mime type\n */\n mimetype: string;\n /**\n * Path to the content entry\n */\n path: string;\n /**\n * Contents filesize in bytes\n */\n size: number;\n\n digest: string;\n\n existscount: number;\n}\n\n/**\n * Valid object type to be applied to a certain prepared item\n */\nexport interface PreparedItemType {\n /**\n * Object types internal name\n */\n name: string;\n /**\n * Indicator whether or not the type is currently selected\n */\n selected: boolean;\n /**\n * Object types label (title)\n */\n label: string;\n /**\n * Object types description\n */\n description: string;\n /**\n * Object types icon\n */\n icon: {\n id: string;\n };\n /**\n * Input form for the object typed\n */\n form: any;\n /**\n * Data to be pasted into the object types form. This data may come from default values or extraction services.\n */\n data: any;\n}\n\n/**\n * Representation of a prepared item. A prepared item is an item that is supposed to create a new dms object.\n * Adding a new object to yuuvis<sup>&reg;</sup> RAD starts with a prepared item. If all the required properties are set up, the item\n * will be used to create a new dms object.\n */\nexport class PreparedItem {\n\n /**\n * unique identifier\n */\n id: string;\n /**\n * The date (time) the item was created\n */\n created: Date;\n /**\n * Number of contents (files) attached to the item.\n */\n contentcount: number;\n\n /**\n * Information about the user that created the item\n */\n user: {\n id: string;\n name: string;\n title: string;\n };\n /**\n * Location (context folder) to add the item to.\n */\n parent: {\n id: string;\n title: string;\n description: string;\n type: string;\n };\n /**\n * The state of the prepared item\n */\n state: {\n /**\n * UNKNOWN: no object type selected yet, so we don't know which kind of content is supported\n * NOCONTENTALLOWED: no content attachable\n * REQUIRED: content required (e.g. for template types)\n * OPTIONAL: one may or may not add content\n */\n contentstate: 'UNKNOWN' | 'NOCONTENTALLOWED' | 'REQUIRED' | 'OPTIONAL',\n typeselected: boolean,\n typeselectedallowed: boolean,\n hasallowedtypes: boolean,\n contentset: boolean,\n multicontent: boolean,\n templateset: boolean,\n parentisroot: boolean,\n parentset: boolean\n };\n /**\n * The target object type selected for the prepared item. To be able to add new items to yuuvis<sup>&reg;</sup> RAD an object type is required to be set up.\n */\n selectedtype: {\n name: string,\n label: string,\n description: string,\n };\n /**\n * New dms objects may be created from a template. This property stores information about the selected template.\n */\n template: {\n id: string,\n description: string,\n title: string,\n };\n /**\n * Prepared items are able to perform bulk operations to create new dms objects. So you may add a bunch of files and decide to create one\n * prepared item from it. When all the required properties are set up, the prepared item will create a dms object for each of those files.\n *\n * Contents property holds the list of content files attached to the prepared item\n */\n contents: PreparedItemContent[];\n /**\n * Based on target location and attached files this property holds a collection of valid object types for the prepared item\n */\n types: PreparedItemType[];\n /**\n * Prepared items title\n */\n get title() {\n return this.selectedtype ? this.selectedtype.label : '';\n }\n\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new prepared item instance\n */\n constructor(json: any) {\n Object.assign(this, json);\n }\n\n /**\n * Returns true if the preparedItem contains content (template or actual file), false otherwise\n */\n hasContent(): boolean {\n return !!this.template || this.contentcount > 0;\n }\n\n /**\n * Retrieves the prepared items selected type object from the list\n * of available types.\n * @returns The type object that is selected or NULL\n */\n getSelectedTypeObject() {\n return this.types.find(t => t.selected);\n }\n}\n","import {DmsObject} from './dms-object.model';\nimport {StructureTreeNode} from '../interface/tree-node.interface';\n\nexport class UploadTarget {\n\n /**\n * general filing target\n */\n public static ROOT = 'root';\n /**\n * add file(s) to context folder\n */\n public static CONTEXT = 'context';\n /**\n * add file(s) to context folders dynamic structure\n */\n public static CONTEXT_TREE = 'contexttree';\n /**\n * set/replace content file of a dms object\n */\n public static OBJECT = 'object';\n /**\n * custom targets (e.g. for plugin development)\n */\n public static CUSTOM = 'custom';\n\n public name: string;\n public description: string;\n /**\n * based on the upload targets type this is the dms object to\n * add/replace content file for (type: OBJECT) or the context folder\n * to add the files to (type: CONTEXT)\n */\n public referenceObject: DmsObject;\n /**\n * node from the structure service tree that may hold additional\n * data to be provide to the prepare service\n */\n public subFolder: StructureTreeNode;\n\n /**\n * Creates a new instance of UploadTarget\n *\n * @param id Upload targets unique id\n * @param type Upload targets type\n */\n constructor(public id: string,\n public type: string) {\n\n }\n\n /**\n * Return Method if the Upload is Successfull\n *\n * @param target\n * @returns the provided UploadTarget if the Upload was Successfull.\n */\n public onUploadSuccess(target: any): any {\n return target;\n }\n\n /**\n * Return method if the Upload fails\n *\n * @returns an empty Object if the Upload fails\n */\n public onUploadFail(): {} {\n return {};\n }\n}\n","export enum Direction {\n LTR = 'ltr',\n RTL = 'rtl'\n}\n","import {Injectable} from '@angular/core';\nimport {Observable, BehaviorSubject, forkJoin, of, EMPTY} from 'rxjs';\nimport {map, tap, debounceTime, filter, catchError} from 'rxjs/operators';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ChangePasswordInterface} from '../../interface/change-password.interface';\nimport {BackendService} from '../backend/backend.service';\nimport {EoUser} from '../../model/eo-user.model';\nimport {Config} from '../config/config.service';\nimport {Logger} from '../logger/logger';\nimport {SystemService} from '../system/system.service';\nimport {Utils} from '../../util/utils';\nimport {EnaioEvent} from '../events/events';\nimport {EventService} from '../events/event.service';\nimport {Direction} from '../config/config.enum';\nimport {HttpClient} from '@angular/common/http';\nimport {WidgetGridWorkspaceConfig} from '@yuuvis/widget-grid';\n\n/**\n * Applications user service.\n * To get the current user you have to subscribe to the services `user$` observable.\n *\n * ```javascript\n * userService.user$.subscribe((user) => this.user = user);\n * ```\n *\n * This way your component will be provided with an up-to-date user object no matter\n * which component changes on of the users properties.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class UserService {\n\n USER_FETCH_URI = '/user?favorites=true&privileges=true&roles=true&deputies=true&substitutesOf=true';\n\n private user: EoUser = null;\n private userSource = new BehaviorSubject<EoUser>(this.user);\n /**\n * Observable emitting the current user\n */\n public user$: Observable<any> = this.userSource.asObservable();\n\n private favorites = null;\n private favoritesSource = new BehaviorSubject<any>(this.favorites);\n /**\n * Observable emitting current users favorites\n */\n public favoritesGridData$: Observable<any> = this.favoritesSource.asObservable().pipe(debounceTime(100), filter(v => v));\n public favorites$: Observable<any> = this.favoritesGridData$.pipe(this.backend.gridDataFilter);\n\n private notifications = null;\n private notificationsSource = new BehaviorSubject<any>(this.notifications);\n\n /**\n * Observable emitting current users recyclebin\n */\n\n private recycles = null;\n private recyclesSource = new BehaviorSubject<any>(this.recycles);\n\n public recyclesGridData$ : Observable<any> = this.recyclesSource.asObservable().pipe(debounceTime(100), filter(v => v));\n public recycles$: Observable<any> = this.recyclesGridData$.pipe(this.backend.gridDataFilter);\n\n\n /**\n * Observable emitting current users notifications\n */\n public notificationsGridData$: Observable<any> = this.notificationsSource.asObservable().pipe(debounceTime(100), filter(v => v));\n public notifications$: Observable<any> = this.notificationsGridData$.pipe(this.backend.gridDataFilter);\n\n public passwordValidationSettings: any;\n\n /**\n * @ignore\n */\n constructor(private backend: BackendService,\n private translate: TranslateService,\n private logger: Logger,\n private eventService: EventService,\n private system: SystemService,\n private http: HttpClient,\n private config: Config) {\n }\n\n /**\n * Gets the current user.\n * @returns The current user or NULL if no user is logged in\n */\n public getCurrentUser(): EoUser {\n return this.user;\n }\n\n\n /**\n * Set presence of the current user\n * @param present Value to set the users presence to\n */\n public setPresence(present: boolean): Observable<any> {\n\n if (present !== this.user.present) {\n return this.backend.put('/user?presence=' + present)\n .pipe(\n tap(_ => {\n this.user.present = present;\n this.userSource.next(this.user);\n })\n )\n } else {\n return of(null);\n }\n }\n\n /**\n *\n * @param uri\n * @returns\n */\n\n public delUserImage(uri: string): Observable<any> {\n return this.http.put(uri, null);\n }\n\n public setUserImage(file: File): Observable<any> {\n return this.backend.put(`/user/image`,file);\n }\n\n /**\n * Sets the deputies for the current user\n * @param deputiesNames Names of the users to be set as deputies\n */\n public setDeputies(deputiesNames: string[]): Observable<any> {\n return this.backend.put(`/user/deputy?user=${deputiesNames.join('&user=')}`).pipe(\n tap(() => this.refreshCurrentUser().subscribe())\n );\n }\n\n /**\n * Change the users client locale\n * @param iso ISO locale string to be set as new client locale\n */\n public changeClientLocale(iso: string) {\n this.user.userSettings['clientlocale'] = iso;\n this.backend\n .put('/user/config/web', this.user.userSettings)\n .subscribe(() => {\n this.logger.debug('Changed client locale to \\'' + iso + '\\'');\n this.translate.use(iso);\n this.user.uiDirection = (this.config.getClientLocales().find(l => l.iso === iso) || {}).dir || Direction.LTR;\n this.userSource.next(this.user);\n this.eventService.trigger(EnaioEvent.CLIENT_LOCALE_CHANGED, iso);\n });\n }\n\n /**\n * Change the users schema locale\n * @param iso ISO locale string to be set as new schema locale\n */\n public changeSchemaLocale(iso: string) {\n this.user.schemaLocale = iso;\n return this.backend\n .put('/user/locale/' + this.user.schemaLocale)\n .pipe(\n tap(() => {\n this.logger.debug('Changed schema locale to \\'' + iso + '\\'');\n this.userSource.next(this.user);\n this.backend.setHeader('Accept-Language', this.user.getSchemaLocale());\n this.logger.debug('Loading system definition for new locale.');\n this.system.getSystemDefinition(this.user).subscribe();\n this.eventService.trigger(EnaioEvent.SCHEMA_LOCALE_CHANGED, iso);\n }));\n }\n\n /**\n * Set a new current user\n * @param res The user to be set as current user\n */\n public setCurrentUser(res: any) {\n this.user = new EoUser(res);\n this.passwordValidationSettings = res.passwortvalidation;\n this.user.setImageBase(this.backend.getServiceBase());\n this.backend.setHeader('Accept-Language', this.user.getSchemaLocale());\n\n const languages = this.config.getClientLocales().map(lang => lang.iso);\n let userLang = this.user.getClientLocale();\n if (languages.indexOf(userLang) === -1) {\n userLang = this.config.getDefaultClientLocale();\n }\n this.logger.debug('Setting client locale to \\'' + userLang + '\\'');\n this.translate.use(userLang);\n this.user.uiDirection = (this.config.getClientLocales().find(l => l.iso === userLang) || {}).dir || Direction.LTR;\n\n this.userSource.next(this.user);\n\n this.favorites = null;\n this.favoritesSource.next(this.favorites);\n\n this.notifications = null;\n this.notificationsSource.next(this.notifications);\n }\n\n /**\n * Fetches the current users favorites\n */\n public getFavorites(): Observable<any> {\n\n // only favorite objects of type 'DMS_OBJECT', are accepted\n // read more: http://jira.optimal-systems.de/browse/COOL-2316\n return this.backend\n .getJson('/user/favorites')\n .pipe(\n map(res => res && res.filter(r => r.favoritetype === 'DMS_OBJECT')),\n tap(res => {\n this.favorites = res;\n this.favoritesSource.next(this.favorites);\n }));\n\n // .map(res => {\n // let dmsObject = this.resolveObjectTypes(new DmsObject(res));\n // return dmsObject;\n // });\n }\n\n /**\n * Soft update for the users favorites\n * @param id ID of the favorite to be updated\n * @param item The new favorite item\n * @param multi Whether or not to update multiple items\n */\n public updateFavorites(id?: string, item?: any, multi?: any[]) {\n if (this.backend.update(this.favorites, multi || [{id, item}])) {\n this.favoritesSource.next(this.favorites);\n }\n }\n\n /**\n * Gets the users notifications (resubmissions and subscriptions)\n * @returns Resolved by list of the users notifications\n */\n public getNotifications(): Observable<any> {\n const notificationData = [\n this.getSubscription(),\n this.getResubmission()\n ];\n return forkJoin(notificationData);\n }\n\n /**\n * Gets the users resubmissions\n * @returns Collection of users resubmissions\n */\n public getResubmission(): Observable<any> {\n return this.backend.getJson('/messageprovider/resubmission/list').pipe(\n tap(response => {\n this.notifications = response;\n this.notificationsSource.next(this.notifications);\n }));\n }\n\n /**\n * Gets the users subscriptions\n * @returns Collection of users subscriptions\n */\n public getSubscription(): Observable<any> {\n return this.backend\n .getJson('/messageprovider/subscription/list').pipe(\n tap(response => {\n this.notifications = response;\n this.notificationsSource.next(this.notifications);\n }));\n }\n\n /**\n * Removes a notification\n * @param id ID of the notification to be removed\n * @param type The notifications type ('SUBSCRIPTION', 'RESUBMISSION')\n */\n public removeNotifications(id: string, type: string) {\n let messagetype: string;\n switch (type) {\n case 'SUBSCRIPTION':\n messagetype = 'subscription';\n break;\n case 'RESUBMISSION':\n messagetype = 'resubmission';\n break;\n default:\n return;\n }\n return this.backend.del(`/messageprovider/${messagetype}/` + id).pipe(tap(res => this.updateNotifications('')));\n }\n\n /**\n * Soft update for users notifications\n */\n public updateNotifications(id?: string, item?: any, multi?: any[]) {\n if (this.backend.update(this.notifications, multi || [{id, item}])) {\n this.notificationsSource.next(this.notifications);\n }\n }\n\n /**\n * Gets the URI to a users avatar image\n * @param userId The users ID\n * @returns URI to the user image\n */\n public getUserImageUri(userId: string) {\n return `${this.backend.getBaseWithContext(this.backend.getServiceBase())}/organization/image/${userId}?usedefault=true`;\n }\n\n /**\n * Removes a favorite item\n * @param favoriteId ID of the favorite item to be removed\n */\n public removeFavorite(favoriteId: string) {\n return this.backend.del('/user/favorite/' + favoriteId).pipe(tap(res => this.updateFavorites(favoriteId)));\n }\n\n /**\n * Create a new favorite item for the current user\n * @param id ID of the dms object to be set up as favorite\n * @param type The object type of the dms object\n * @param title The favorites title\n */\n public createFavorite(id: string, type: string, title: string) {\n const uri = Utils.buildUri('/dms/favorite/' + id, {type, title});\n return this.backend.post(uri, {}).pipe(tap(res => this.getFavorites().subscribe()));\n }\n\n /**\n * @ignore\n */\n public removeFavoritesForTarget(id: string) {\n return this.backend.del('/dms/favorite/' + id).pipe(tap(\n res => {\n const toRemove = this.favorites.filter(i => i.target.id === id).map(i => Object.assign({\n id: i.id\n }));\n this.updateFavorites(null, null, toRemove);\n }));\n }\n\n /**\n * Gets the users recyclebin\n */\n getRecycleBin(): Observable<any> {\n return this.backend.getJson(`/user/recyclebin`).pipe(\n tap(response=>{\n this.recycles=response;\n this.recyclesSource.next(this.recycles);\n }));\n }\n\n /**\n * Changes the users preferred lock mode and persists it on the server\n * @param lock The value to set the lock settings to\n */\n public changeLockSetting(lock: string) {\n this.user.userSettings.alwayslock = lock;\n return this.backend.put('/user/config/web', this.user.userSettings).pipe(map(() => {\n this.refreshCurrentUser().subscribe();\n }));\n }\n\n public hasPrivilege(privilege: string): boolean {\n return !!this.user.privileges.find(priv => priv.name === privilege);\n }\n\n\n /**\n * Changes the users password and persists it on the server\n */\n changePassword(payload: ChangePasswordInterface): Observable<any> {\n return this.backend.put(`/user/password`, payload);\n }\n\n /**\n * Fetches the settings for the current user and stores the new User object on the session\n */\n private refreshCurrentUser() {\n return this.backend.get(this.USER_FETCH_URI).pipe(map(res => this.setCurrentUser(res)));\n }\n\n public validatePassword(password: string): {type: string, amount: number} {\n if (password.length < this.passwordValidationSettings.minlength) {\n return {type: 'short', amount: this.passwordValidationSettings.minlength};\n }\n\n if (password.replace(/[^0-9]/g, '').length < this.passwordValidationSettings.minnumber) {\n return {type: 'number', amount: this.passwordValidationSettings.minnumber};\n }\n\n if (password.replace(/[a-zA-Z0-9ß ]/g, '').length < this.passwordValidationSettings.minspecialchars) {\n return {type: 'specialchars', amount: this.passwordValidationSettings.minspecialchars};\n }\n\n return {type: 'valid', amount: null};\n }\n\n /**\n * Changes the users saved inbox filter terms\n * @param filterTerms The value to set the saved inbox filters list to\n */\n public changeSavedInboxFilters(filterTerms: string[]) {\n this.user.userSettings.savedInboxFilter = filterTerms;\n return this.backend.put('/user/config/web', this.user.userSettings).pipe(map(() => {\n this.refreshCurrentUser().subscribe();\n }));\n }\n\n /**\n * Save or change the workspace of the current user\n * @param workspaceConfig The value to set the saved workspace or create a new workspace\n */\n public saveChangeWorkspace(workspaceConfig: WidgetGridWorkspaceConfig) {\n this.user.userSettings.workspaceOptions = workspaceConfig;\n return this.backend.put('/user/config/web', this.user.userSettings).pipe(map(() => {\n this.refreshCurrentUser().subscribe();\n }));\n }\n\n /**\n * Get all the field definitions of an object type\n * @param type The object type\n */\n\n public getFieldDefinition(type: string) {\n const contextType = 'sysfolder';\n let mode = 'ALL';\n return this.backend.get(`/user/config/result/${type}?contexttype=${contextType}&mode=${mode}`);\n }\n\n /**\n * Save or change the visibility state of dashboard toolbar for the current user\n * @param toolbarVisibility The visibility state\n */\n public saveToolbarState(toolbarVisibility: boolean) {\n this.user.userSettings.toolbarVisibility = toolbarVisibility;\n return this.backend.put('/user/config/web', this.user.userSettings).pipe(map(() => {\n this.refreshCurrentUser().subscribe();\n }));\n }\n\n /**\n * Save the local storage settings\n * @param localSettings The local settings to be saved from the localstorage\n * @param cacheSettings The local settings to be saved from the app cache\n */\n public saveLocalSettings(localSettings: any, cacheSettings: any) {\n return this.backend.put('/user/config/localSettings', {localSettings: localSettings, cacheSettings: cacheSettings}).pipe(map(() => {\n this.refreshCurrentUser().subscribe();\n }));\n }\n\n /**\n * Loads the local storage settings\n * @returns The saved settings\n */\n public loadLocalSettings(): Observable<any> {\n return this.backend.get('/user/config/localSettings').pipe(catchError(() => EMPTY));\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {UserService} from '../user/user.service';\nimport {Utils} from '../../util/utils';\nimport {CoreConfig} from '../../config/core-config';\nimport {CORE_CONFIG} from '../../config/core-init.tokens';\n\n\n/**\n * The Upload Service is provides access to Upload data (files)\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class UploadService {\n /**\n * @ignore\n */\n constructor(\n @Inject(CORE_CONFIG) public coreConfig: CoreConfig,\n private http: HttpClient, private userService: UserService) {\n }\n\n /**\n * Uploads files.\n *\n * @param uri Upload destination uri\n * @param files Files to be uploaded\n * @returns resolved by the response of the upload destination\n */\n upload(uri: string, files: File[]): Observable<any> {\n const formData = new FormData();\n const headers: HttpHeaders = new HttpHeaders({'Accept-Language': this.userService.getCurrentUser().getClientLocale()});\n files.forEach(file => formData.append('files[]', file, Utils.encodeFileName(file.name)));\n return this.http.post(uri, formData, {headers, withCredentials: this.coreConfig.withCredentials});\n }\n}\n","import {mergeMap, map, tap} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {Utils} from '../../util/utils';\nimport {BackendService} from '../backend/backend.service';\nimport {Observable, ReplaySubject} from 'rxjs';\nimport {ObjectType} from '../../model/object-type.model';\nimport {PreparedItem, PreparedItemTemplate} from '../../model/prepared-item.model';\nimport {UploadService} from '../upload/upload.service';\nimport {UploadTarget} from '../../model/upload-target.model';\nimport {UploadFileItem} from '../../model/upload-file-item.model';\nimport {IPrepareChildTypes} from './objectTypes.interface';\n\n/**\n * @ignore\n */\nexport interface PreparedPostParam {\n parentId: string;\n /**\n * flag indicating whether or not to create one PreparedItem using multiple files uploaded (false)\n * or creating a PreparedItem for each file posted to the URL (true)\n */\n createMany?: boolean;\n childType?: string;\n}\n\n/**\n * Collection of Prepare Services\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class PrepareService {\n\n private preparedItems: PreparedItem[];\n private preparedItemsSource = new ReplaySubject<PreparedItem[]>(1);\n public preparedItems$: Observable<PreparedItem[]> = this.preparedItemsSource.asObservable();\n\n private preparedItemCount: number;\n private preparedItemCountSource = new ReplaySubject<number>(1);\n public preparedItemCount$: Observable<number> = this.preparedItemCountSource.asObservable();\n\n constructor(private backend: BackendService,\n private uploadService: UploadService) {\n }\n\n /**\n * Public Fetch Prepare items\n */\n refreshPreparedItemsCount() {\n this.fetchPreparedItemsCount();\n }\n\n /**\n * Fetches the number of prepared items for the current user.\n */\n private fetchPreparedItemsCount() {\n this.backend.getJson('/prepare/state')\n .pipe(\n map((res) => res.count)\n )\n .subscribe((res) => {\n this.preparedItemCount = res;\n this.preparedItemCountSource.next(this.preparedItemCount);\n });\n }\n\n /**\n * Creates a prepared item on the backed side.\n *\n * @param parentId The ID of the parent dms object to add the prepared item to\n * @param childType The type of object to be created\n * @returns Observable<any>\n */\n i = 0;\n public createPreparedItem(parentId: string, childType?: string): Observable<any> {\nconsole.log('tick');\nthis.i++;\n\n return this.backend\n .post(this.createPreparedItemPostUrl({\n parentId: parentId,\n childType: childType ? childType : null\n }), {})\n .pipe(\n tap(() => this.getPreparedItems$())\n );\n }\n\n /**\n *\n * @param preparedItemId\n * @param data\n * @returns Observable<any>\n */\n public updatePreparedItemIndexData(preparedItemId, data) {\n return this.backend\n .put('/prepare/' + preparedItemId, data)\n .pipe(\n tap(() => this.getPreparedItems$())\n );\n }\n\n /**\n * Creates an URL for creating a PreparedItem.\n *\n * @param params Params for generating appropriate uri.\n * @returns string A POST URL for creating PreparedItems\n */\n public createPreparedItemPostUrl(params: PreparedPostParam): string {\n\n let url = params.createMany ? '/prepare/createmany' : '/prepare/create';\n if (params) {\n url = Utils.buildUri(url, params);\n }\n return url;\n }\n\n /**\n * Retrieves a list of the users prepared items.\n *\n * @param noForms If set to true the prepared items will be fetched without the form which is faster\n * @returns Observable<PreparedItem[]> A collection of prepared item objects\n */\n public getPreparedItems$(noForms?: boolean): Observable<PreparedItem[]> {\n this.fetchPreparedItems(noForms).subscribe();\n return this.preparedItems$;\n }\n\n /**\n * Retrieve PrepareItems and form them\n *\n * @param boolean noForms\n * @returns Observable<PreparedItem[]>\n */\n private fetchPreparedItems(noForms?: boolean): Observable<PreparedItem[]> {\n let uri = (noForms) ? '/prepare' : '/prepare?form=true';\n return this.backend\n .getJson(uri)\n .pipe(\n map((res: any) => res.map(i => new PreparedItem(i))),\n tap(() => this.fetchPreparedItemsCount()),\n tap((preparedItems: PreparedItem[]) => this.preparedItemsSource.next(preparedItems.sort(Utils.sortValues('created', 'desc'))))\n );\n }\n\n /**\n * Removes a prepared item.\n *\n * @param preparedItemId ID of the item to be removed\n * @returns Observable<any> Server response\n */\n deletePreparedItem(preparedItemId: string): Observable<any> {\n return this.backend\n .del(`/prepare/${preparedItemId}`)\n .pipe(\n tap(() => this.getPreparedItems$())\n );\n }\n\n /**\n * Fetches a list of object types allowed to be placed directly below root.\n *\n * @returns Observable<ObjectType[]> A list of supported object types\n */\n public getPrepareRootTypes(): Observable<ObjectType[]> {\n return this.backend\n .getViaTempCache('/prepare/types')\n .pipe(\n map((res) => res.types.map((type) => new ObjectType(type)))\n );\n }\n\n /**\n * Fetches a list of allowed child object types for a selected parent.\n *\n * @param parentId The id of the parent dms object (context folder)\n * @param withContentOnly If set to true only child types, that support content are returned.\n * @returns Observable<IPrepareChildTypes> A list of supported object types\n */\n public getPrepareChildTypes(parentId: string, withContentOnly?: boolean): Observable<IPrepareChildTypes> {\n const params = parentId ? {parentId, withcontent: withContentOnly} : {withcontent: withContentOnly}\n const uri = Utils.buildUri('/prepare/types', params);\n return this.backend\n .getViaTempCache(uri)\n .pipe(\n map(res => ({parent: res.parent, types: res.types.map((type) => new ObjectType(type))}))\n );\n }\n\n /**\n * fetch the preview uri for a prepared item\n *\n * @param id The id of the prepared item\n * @param index When a prepared item contains more than one contents, the index specifies which content\n * @param rendition Target rendition (PDF)\n * to retrieve the preview uri for\n * @returns string Preview uri\n */\n public getPreviewUri(id: string, index?: number, rendition?: string): string {\n return Utils.buildUri(`${this.backend.getServiceBase()}/prepare/${id}/content`, {rendition, index});\n }\n\n /**\n * Updates the prepared items target object type.\n *\n * @param objectType The target object types name\n * @param preparedItemId The id of the prepared item to set the type for\n * @returns Observable<PreparedItem> The updated prepared item\n */\n public updateChildType(objectType: string, preparedItemId: string): Observable<PreparedItem> {\n return this.backend\n .put(`/prepare/${preparedItemId}/${objectType}?form=true&contentmeta=true`)\n .pipe(\n map(res => new PreparedItem(res))\n );\n }\n\n /**\n * Add a template to a prepared item.\n *\n * @param preparedItemId The id of the prepared item to add the template to\n * @param templateId The id of the template to be added\n * @returns Observable<PreparedItem> The updated prepared item\n */\n public addTemplate(preparedItemId, templateId): Observable<PreparedItem> {\n return this.backend\n .put(`/prepare/${preparedItemId}/template?templateid=${templateId}`)\n .pipe(\n map(res => new PreparedItem(res))\n );\n }\n\n /**\n * Fetches a list of available templates for a given object type.\n *\n * @param Observable<PreparedItemTemplate[]> objectTypeName\n */\n public getTemplates(objectTypeName: string): Observable<PreparedItemTemplate[]> {\n return this.backend\n .getJson('/template/list?type=' + objectTypeName)\n .pipe(\n map((res: any) => res as PreparedItemTemplate[])\n );\n }\n\n /**\n * Returns url of a template preview\n *\n * @param id Template ID\n * @param rendition Target rendition (PDF)\n * @returns string The template preview url.\n */\n public getTemplatePreviewUri(id, rendition?: string): string {\n return Utils.buildUri(`${this.backend.getServiceBase()}/template/${id}/content`, {rendition});\n }\n\n /**\n * Commit a prepared item. This will create an actual dms object.\n * Updates the prepared creation object target type\n *\n * @param preparedItemId ID of the prepared item\n * @param preparedItemType Name of the prepared items target object type\n * @param preparedItemData Object holding data of the prepared item\n * @returns The id of the created dms object\n */\n public commitPreparedItem(preparedItemId, preparedItemType, preparedItemData): Observable<any> {\n return this.backend\n .put(`/prepare/${preparedItemId}/${preparedItemType}`)\n .pipe(\n mergeMap(() => this.backend.post(`/prepare/commit/${preparedItemId}`, preparedItemData)),\n tap(() => this.getPreparedItems$()),\n map(res => res.id)\n );\n }\n\n /**\n * Upload Content\n *\n * @param string preparedItemId\n * @param File file\n * @returns Observable<any>\n */\n uploadContent(preparedItemId: string, file: File) {\n const uri = `${this.backend.getBaseWithContext(this.backend.getServiceBase())}/prepare/${preparedItemId}/content.json?form=true&contentmeta=true`;\n return this.uploadService\n .upload(uri, [file])\n .pipe(\n // tap(() => this.getPreparedItems$())\n );\n }\n\n /**\n * Uploads files to an upload target.\n *\n * @param uploadTarget The upload target to upload files to\n * @param uploadFiles Files to be uploaded\n * @param useBatchUpload Flag indicating whether or not to use batch processing on the backend side\n * @returns Observable<any>\n */\n uploadToTarget(uploadTarget: UploadTarget, uploadFiles: UploadFileItem[], useBatchUpload?: boolean): Observable<any> {\n\n const files = uploadFiles.map(f => f._file);\n return this.uploadService\n .upload(this.getUploadTarget(uploadTarget, useBatchUpload), files)\n .pipe(\n tap(() => this.getPreparedItems$())\n );\n }\n\n /**\n * Get the uri to post files to based on the upload target.\n *\n * @param uploadTarget The target to upload files to\n * @param useBatchUpload Flag indicating whether or not to upload all files in a single post\n * @returns string the uri\n */\n private getUploadTarget(uploadTarget: UploadTarget, useBatchUpload?: boolean): string {\n let uri;\n\n if (uploadTarget.type === UploadTarget.ROOT) {\n /**\n * upload to general filing location\n *\n * @type string\n */\n uri = this.backend.getBaseWithContext(this.backend.getServiceBase()) + this.createPreparedItemPostUrl({\n parentId: null,\n createMany: !useBatchUpload\n }\n );\n\n } else if (uploadTarget.type === UploadTarget.OBJECT) {\n /**\n * upload to dms object, means adding or replacing content file\n */\n const {referenceObject} = uploadTarget;\n uri = `${this.backend.getBaseWithContext(this.backend.getServiceBase())}/dms/${referenceObject.id}/contents?type=${referenceObject.type.name}`;\n\n } else if (uploadTarget.type === UploadTarget.CONTEXT || uploadTarget.type === UploadTarget.CONTEXT_TREE) {\n /**\n * upload to context folder, means adding a new dms object to a specific\n * context folder ...\n * ... if we got a subFolder (node from the context tree) set up we'll add that too\n *\n * @type string\n */\n uri = this.backend.getBaseWithContext(this.backend.getServiceBase()) + this.createPreparedItemPostUrl({\n parentId: uploadTarget.referenceObject.id,\n createMany: !useBatchUpload,\n childType: uploadTarget.subFolder && uploadTarget.subFolder.data.type ? uploadTarget.subFolder.data.type : null\n });\n }\n return uri;\n }\n\n /**\n * Deletes a prepared creation object content element by index or the complete content.\n * If you provide an index the content consists only of one element,\n * the content is completely removed from the prepared creation object.\n *\n * @param preparedItemId ID of the item with the content to be removed\n * @param index Parameter that determines which content element should be deleted.\n * @returns Observable<PreparedItem> The updated prepared item\n */\n public deletePreparedItemContent(preparedItemId: string, index?: number): Observable<PreparedItem> {\n const url = `/prepare/${preparedItemId}/content` + (index !== undefined ? `?index=${index}` : '');\n return this.backend\n .del(url)\n .pipe(\n map(res => new PreparedItem(res))\n );\n }\n}\n","export enum SystemStatusEnum {\n SYSTEM_STATUS_SCHEMA_CHANGED = 'schemaChangedOn',\n SYSTEM_STATUS_ORG_CHANGED = 'orgChangedOn',\n SYSTEM_STATUS_SEC_CHANGED = 'securityChangedOn',\n SYSTEM_STATUS_ACL_CHANGED = 'aclChangedOn',\n SYSTEM_STATUS_INBOX_CHANGED = 'inboxChangedOn'\n}\n","import {Injectable, NgZone} from '@angular/core';\nimport {EventService} from '../events/event.service';\nimport {BackendService} from '../backend/backend.service';\nimport {EnaioEvent} from '../events/events';\nimport {Subject, Subscription, timer} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {AppCacheService} from '../cache/app-cache.service';\nimport {ISystemStatus} from './system.status.interface';\nimport {SystemStatusEnum} from './system.status.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SystemStatusService {\n\n private currentStatus: ISystemStatus;\n private statusCacheKey = 'eo.framework.cache.system.status';\n private hasBeenStopped: boolean;\n\n private pollingStopTrigger$ = new Subject<void>();\n\n constructor(private eventService: EventService, private backend: BackendService, private appCache: AppCacheService, private ngZone: NgZone) {\n this.appCache\n .getItem(this.statusCacheKey)\n .subscribe(status => this.currentStatus = status);\n }\n\n init(pollIntervalMilliSeconds = -1) {\n if (pollIntervalMilliSeconds > -1) {\n this.pollingStopTrigger$ = new Subject<void>();\n this.startPolling(pollIntervalMilliSeconds);\n }\n }\n\n stop() {\n this.hasBeenStopped = true;\n this.pollingStopTrigger$.next();\n this.pollingStopTrigger$.complete();\n }\n\n private startPolling(pollIntervalMilliSeconds) {\n this.ngZone.runOutsideAngular(() => {\n let requestSubscription: Subscription;\n timer(0, pollIntervalMilliSeconds)\n .pipe(takeUntil(this.pollingStopTrigger$))\n .subscribe(() => {\n this.ngZone.run(() => {\n // temporary fix while status service is disabled\n this.eventService.trigger(EnaioEvent.SYSTEM_STATUS_INBOX_CHANGED, {});\n });\n\n // if (requestSubscription) {\n // requestSubscription.unsubscribe();\n // }\n // requestSubscription = this.backend\n // .get('/status', this.backend.getStatusBase())\n // .subscribe((res: ISystemStatus) => {\n // this.handleStatusResult(res);\n // }, err => {\n // this.handleStatusError(err);\n // });\n });\n });\n }\n\n private handleStatusResult(res: ISystemStatus) {\n const eventsToBeTriggered: { type: string, data: any }[] = [];\n Object.keys(res).forEach(val => {\n if (this.statusCheck(res, val)) {\n eventsToBeTriggered.push({\n type: this.statusEvent(val),\n data: res\n });\n }\n });\n\n if (eventsToBeTriggered.length || this.hasBeenStopped) {\n // if polling has been stopped and get activated again, we need\n // angular to detect changes immediately\n this.ngZone.run(() => {\n eventsToBeTriggered.forEach(e => {\n this.eventService.trigger(e.type, e.data);\n });\n });\n }\n\n if (eventsToBeTriggered.length || !this.currentStatus) {\n this.currentStatus = res;\n this.appCache.setItem(this.statusCacheKey, res);\n }\n }\n\n private handleStatusError(err) {\n // execute within zone so components are able to be checked\n // Getting a 401 would otherwise not trigger a route change (redirect to login state)\n this.ngZone.run(() => {\n setTimeout(_ => {\n this.stop();\n });\n });\n }\n\n private statusEvent(val: string): string {\n return EnaioEvent[Object.keys(SystemStatusEnum).find(key => SystemStatusEnum[key] === val)];\n }\n\n private statusCheck(res: ISystemStatus, statusType: string): boolean {\n return this.currentStatus && (this.currentStatus[statusType] < res[statusType]);\n }\n}\n\n","import {Injectable} from '@angular/core';\n\n/**\n * @ignore\n */\nlet instance;\n\n\n/**\n * Wrapper for accessing browsers local storage.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalStorageService {\n\n private storage: any;\n\n constructor() {\n\n if (instance) {\n instance = this;\n }\n this.storage = this.isLocalStorageAvailable() ? window.localStorage : null;\n return instance;\n }\n\n /**\n * Sets the provided value to the local storage\n *\n * @param key The items key\n * @param value The items value\n */\n setItem(key: string, value: any): boolean | void {\n if (typeof key === 'undefined' || typeof value === 'undefined') {\n return false;\n }\n this.storage.setItem(key, JSON.stringify(value));\n }\n\n /**\n * Retrieves a value by key from local storage and parses it\n *\n * @param key The key of the item to be retrieved\n * @return The stored value\n */\n getItem(key: string): any {\n this.isKeyDefined(key);\n const value = this.storage.getItem(key);\n\n if (value) {\n return JSON.parse(value);\n }\n return false;\n }\n\n /**\n * Checks if Key is available in Local Storage\n * @param key The items key\n * @return True if a value exists for the given key, false otherwise\n */\n hasItem(key: string): boolean {\n this.isKeyDefined(key);\n return this.storage.getItem(key) === null;\n }\n\n /**\n * Removes a key value from Local Storage by provided Key\n * @param key The items key\n */\n removeItem(key: string) {\n this.isKeyDefined(key);\n this.storage.removeItem(key);\n }\n\n /**\n * Clears the Local Storage\n */\n clear(filter?: (key: string) => boolean) {\n return filter ? Object.keys(this.storage).forEach(key => filter(key) && this.removeItem(key)) : this.storage.clear();\n }\n\n /**\n * Checks if a Key is defined in local storage\n * @param key The items key\n * @return True if key eyists, false otherwise\n */\n isKeyDefined(key: string): boolean | void {\n if (typeof key === 'undefined') {\n return false;\n }\n }\n\n getStorage() {\n return this.storage;\n }\n\n setStorage(settings: any) {\n for (const [key, value] of Object.entries(settings)) {\n this.storage.setItem(key, value);\n }\n }\n\n isEmpty(): boolean {\n return this.storage && this.storage.length === 0;\n }\n\n /**\n * Checks if the Browser Supports Local Storage\n */\n private isLocalStorageAvailable() {\n try {\n const storage = window.localStorage;\n storage.setItem('test', 'test');\n storage.removeItem('test');\n return true;\n } catch (e) {\n return false;\n }\n }\n}\n","import {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Inject, Injectable} from '@angular/core';\nimport {LocalStorage} from '@ngx-pwa/local-storage';\nimport {\n BehaviorSubject, Observable,\n forkJoin as observableForkJoin,\n} from 'rxjs';\nimport {map, switchMap, tap} from 'rxjs/operators';\nimport {CoreConfig} from '../../config/core-config';\nimport {CORE_CONFIG} from '../../config/core-init.tokens';\nimport {EoUser} from '../../model/eo-user.model';\nimport {BackendService} from '../backend/backend.service';\nimport {BpmService} from '../bpm/bpm.service';\nimport {CapabilitiesService} from '../capabilities/capabilities.service';\nimport {Config} from '../config/config.service';\nimport {EventService} from '../events/event.service';\nimport {EnaioEvent} from '../events/events';\nimport {InboxService} from '../inbox/inbox.service';\nimport {PrepareService} from '../prepare/prepare.service';\nimport {LocalStorageService} from '../storage/local-storage.service';\nimport {SystemStatusService} from '../system-status/system-status.service';\nimport {SystemService} from '../system/system.service';\nimport {UserService} from '../user/user.service';\nimport {AuthProfile} from './auth-profile.interface';\nimport {GatewayInfo} from './gateway-info.interface';\nimport {Utils} from '../../util/utils';\n\n/**\n * `AuthService` handles authentication against an yuuvis<sup>&reg;</sup> RAD backend.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n\n private userProfileUri = this.userService.USER_FETCH_URI;\n private authSource = new BehaviorSubject<boolean>(false);\n private loggedInCacheKey = 'eo.user.loggedIn';\n\n /**\n * Observable to subscribe to for getting the state of being authenticated. Will emit true when a user logged in,\n * false when the user logged out or the gateways session timed out.\n */\n public authenticated$: Observable<boolean> = this.authSource.asObservable();\n\n /**\n * @ignore\n */\n public hosts: string[] = [];\n private gatewayInfo: GatewayInfo;\n\n /**\n * @ignore\n */\n public profile: AuthProfile = {\n host: '',\n user: null,\n auth: null,\n active: false\n };\n\n /**\n * @ignore\n */\n constructor(private config: Config,\n @Inject(CORE_CONFIG) public coreConfig: CoreConfig,\n private http: HttpClient,\n private bpmService: BpmService,\n private capabilitiesService: CapabilitiesService,\n private inboxService: InboxService,\n private prepareService: PrepareService,\n private backend: BackendService,\n private systemService: SystemService,\n private userService: UserService,\n private eventService: EventService,\n private systemStatusService: SystemStatusService,\n protected storage: LocalStorage,\n protected local: LocalStorageService) {\n window.addEventListener('storage', evt => {\n if (evt.key === this.loggedInCacheKey) {\n const host = JSON.parse(evt.newValue).host;\n this.initUser(host).subscribe();\n }\n });\n }\n\n /**\n * Login a user using form based login.\n * @param host The target host (could be null if you are running in web environment)\n * @param username The username\n * @param password The password\n * @returns Resolves with the logged in user\n */\n public login(host: string, username: string, password: string): Observable<EoUser> {\n\n host = host || '';\n const fd = new FormData();\n fd.append('username', encodeURIComponent(username));\n fd.append('password', encodeURIComponent(password));\n\n const loginHeader = new HttpHeaders({\n 'Content-Type': 'application/x-www-form-urlencoded'\n });\n return this.http.post(host + this.config.getContextPath() + '/login',\n `username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`, {\n headers: loginHeader,\n responseType: 'text',\n withCredentials: this.coreConfig.withCredentials\n }).pipe(\n switchMap(() => this.initUser(host))\n );\n }\n\n /**\n * Gets called while app init\n * @ignore\n */\n initUser(host?: string) {\n\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json'\n });\n\n return this.http\n .get(`${host || ''}${this.config.getContextPath()}/auth/info`, {headers, withCredentials: this.coreConfig.withCredentials})\n .pipe(switchMap((info: GatewayInfo) => {\n this.gatewayInfo = info;\n return this.fetchUser(info, host)\n }));\n }\n\n /**\n *\n * @param gatewayInfo\n * @param host\n * @returns Observable<EoUser>\n */\n private fetchUser(gatewayInfo: any, host?: string): Observable<EoUser> {\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json'\n });\n return this.backend\n .get(this.userProfileUri, '', {headers, withCredentials: this.coreConfig.withCredentials})\n .pipe(\n switchMap((user: any) => {\n this.profile = {\n host: host || '',\n user: user.user.name,\n auth: null,\n active: true\n };\n if (host) {\n this.addHostConfig(host);\n }\n if (this.local.isEmpty()) {\n this.userService.loadLocalSettings().subscribe(settings => {\n this.local.setStorage(settings.localSettings);\n });\n }\n window.localStorage.setItem(this.loggedInCacheKey, JSON.stringify({userId: user.user.id, host: host}));\n return this.initApp(user, gatewayInfo.ntlm);\n }),\n tap(() => this.authSource.next(this.isLoggedIn()))\n );\n }\n\n /**\n * Logs out the current user.\n * @param gatewayLogout Flag indicating whether or not to perform a gateway logout as well\n */\n public logout(gatewayLogout?: boolean) {\n\n this.authSource.next(false);\n this.systemStatusService.stop();\n\n this.profile = {\n host: '',\n user: null,\n auth: null,\n active: false\n };\n\n if (gatewayLogout) {\n (window as any).location.href = this.config.getContextPath() + '/logout?fallbackredir=' + Utils.getBaseHref();\n }\n\n this.backend.setAuthProfile(this.profile);\n this.eventService.trigger(EnaioEvent.LOGOUT);\n }\n\n /**\n * for desktop and mobile devices we provide a list of hosts for the login\n *\n * @param string host\n */\n private addHostConfig(host: string) {\n const existingHost = this.hosts.find(h => h === host);\n if (!existingHost) {\n this.hosts.push(host);\n }\n }\n\n /**\n * Get the current state of a user being logged in. This is kind of the synchronous version of subscribing to `authenticated$`.\n * @returns True if there is a logged in user, false otherwise\n */\n public isLoggedIn(): boolean {\n return this.profile.user !== null;\n }\n\n /**\n *\n * @param user\n * @param boolean sso\n * @returns Observable<EoUser>\n */\n private initApp(user: any, sso?: boolean): Observable<EoUser> {\n\n const currUser = new EoUser(user);\n this.backend.setAuthProfile(this.profile);\n this.userService.setCurrentUser(user);\n const capabilities = this.capabilitiesService.setCapabilities(\n user.capabilities, sso);\n\n this.systemStatusService.init(this.config.getRaw('systemStatusUpdateInterval'));\n\n // update states\n if (capabilities.inbox) {\n this.inboxService.refreshInboxState();\n }\n if (capabilities.intray) {\n this.prepareService.refreshPreparedItemsCount();\n }\n\n const todo = [\n this.bpmService.initExecutableProcesses(),\n this.systemService.getSystemDefinition(currUser)\n ];\n\n return observableForkJoin(todo).pipe(\n map(() => currUser)\n );\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {EnaioConfig} from '../service/config/config.interface';\nimport {Config} from '../service/config/config.service';\nimport {AuthService} from '../service/auth/auth.service';\nimport {of as observableOf, forkJoin} from 'rxjs';\nimport {mergeMap, map, catchError} from 'rxjs/operators';\nimport {Logger} from '../service/logger/logger';\nimport {CoreConfig} from './core-config';\nimport {CORE_CONFIG} from './core-init.tokens';\n\n/**\n * Main initialization service of the eoFrameworkCore module. The `load()` function will contain\n * all steps that needs to be executed before the application starts. Therefore it will be used\n * as `APP_INITIALIZER` from the providers section of the app module.\n *\n * Later on this service can be used by other components or services to fetch the result of the\n * initialization process (e.g. infos on the current user).\n */\n\n@Injectable()\nexport class CoreInit {\n\n /**\n * @ignore\n */\n constructor(@Inject(CORE_CONFIG) private coreConfig: CoreConfig, private logger: Logger,\n private http: HttpClient, private configService: Config, private authService: AuthService) {\n }\n\n /**\n * Initializes core module. Executed in context of `APP_INITIALIZER`.\n * @returns Promise that resolves after yuuvis<sup>&reg;</sup> RAD core has been initialized\n */\n public initialize(): Promise<boolean> {\n\n return new Promise((resolve, reject) => {\n\n /**\n * getting a string means that we got an URL to load the config from\n */\n let config = !Array.isArray(this.coreConfig.main) ? observableOf([this.coreConfig.main]) :\n forkJoin(this.coreConfig.main.map(c => this.http.get(c, {\n withCredentials: this.coreConfig.withCredentials\n }).pipe(\n catchError(e => {\n this.logger.error('failed to catch config file', e);\n return observableOf({});\n })\n )));\n\n config.pipe(\n map((res) => res.reduce((acc, x) => {\n // merge object values on 2nd level\n Object.keys(x).forEach(k => !acc[k] || Array.isArray(x[k]) || typeof x[k] !== 'object' ? acc[k] = x[k] : Object.assign(acc[k], x[k]));\n return acc;\n }, {})\n ),\n mergeMap((res: EnaioConfig) => {\n this.configService.set(res);\n return this.authService.initUser()\n .pipe(catchError(e => observableOf(true)));\n })\n ).subscribe(res => {\n resolve(true);\n }, err => {\n this.logger.error(err);\n reject();\n });\n });\n }\n}\n","import {CoreInit} from './core-init.service';\n\n/**\n * @ignore\n * APP_INITIALIZER function\n */\nexport function init_module(coreInit: CoreInit) {\n // Need to set to a const before returning due to:\n // @see: https://github.com/angular/angular/issues/14485\n const fnc: Function = () => coreInit.initialize();\n return fnc;\n}\n","import {MissingTranslationHandler, MissingTranslationHandlerParams} from '@ngx-translate/core';\n\n/**\n * @ignore\n * Handles missing translations\n */\nexport class EoxMissingTranslationHandler implements MissingTranslationHandler {\n\n /**\n *\n * @param MissingTranslationHandlerParams params\n * @returns string\n */\n handle(params: MissingTranslationHandlerParams) {\n return '!missing key: ' + params.key;\n }\n}\n","import {TranslateLoader} from '@ngx-translate/core';\nimport {HttpClient} from '@angular/common/http';\nimport {Inject} from '@angular/core';\nimport {Observable, of, forkJoin} from 'rxjs';\nimport {catchError, map} from 'rxjs/operators';\nimport {CoreConfig} from './core-config';\nimport {CORE_CONFIG} from './core-init.tokens';\n\n/**\n * i18n packages\n */\nimport {registerLocaleData} from '@angular/common';\nimport localeDeCh from '@angular/common/locales/de-CH';\nimport localeExtraDeCh from '@angular/common/locales/extra/de-CH';\nimport localeDe from '@angular/common/locales/de';\nimport localeExtraDe from '@angular/common/locales/extra/de';\nimport localeAr from '@angular/common/locales/ar';\nimport localeExtraAr from '@angular/common/locales/extra/ar';\nimport localeEs from '@angular/common/locales/es';\nimport localeExtraEs from '@angular/common/locales/extra/es';\nimport localePt from '@angular/common/locales/pt';\nimport localeExtraPt from '@angular/common/locales/extra/pt';\nimport localeFr from '@angular/common/locales/fr';\nimport localeExtraFr from '@angular/common/locales/extra/fr';\nimport localeZh from '@angular/common/locales/zh';\nimport localeExtraZh from '@angular/common/locales/extra/zh';\nimport localeZhHant from '@angular/common/locales/zh-Hant';\nimport localeExtraZhHant from '@angular/common/locales/extra/zh-Hant';\nimport localeLv from '@angular/common/locales/lv';\nimport localeExtraLv from '@angular/common/locales/extra/lv';\nimport localeRu from '@angular/common/locales/ru';\nimport localeExtraRu from '@angular/common/locales/extra/ru';\nimport localeIt from '@angular/common/locales/it';\nimport localeExtraIt from '@angular/common/locales/extra/it';\nimport localeNl from '@angular/common/locales/nl';\nimport localeExtraNl from '@angular/common/locales/extra/nl';\nimport localeSk from '@angular/common/locales/sk';\nimport localeExtraSk from '@angular/common/locales/extra/sk';\nimport localePl from '@angular/common/locales/pl';\nimport localeExtraPl from '@angular/common/locales/extra/pl';\nimport localeUk from '@angular/common/locales/uk';\nimport localeExtraUk from '@angular/common/locales/extra/uk';\nimport localeJa from '@angular/common/locales/ja';\nimport localeExtraJa from '@angular/common/locales/extra/ja';\nimport localeKo from '@angular/common/locales/ko';\nimport localeExtraKo from '@angular/common/locales/extra/ko';\nimport localeHi from '@angular/common/locales/hi';\nimport localeExtraHi from '@angular/common/locales/extra/hi';\nimport localeBn from '@angular/common/locales/bn';\nimport localeExtraBn from '@angular/common/locales/extra/bn';\nimport localeVi from '@angular/common/locales/vi';\nimport localeExtraVi from '@angular/common/locales/extra/vi';\nimport localeTh from '@angular/common/locales/th';\nimport localeExtraTh from '@angular/common/locales/extra/th';\nimport localeEnGb from '@angular/common/locales/en-GB';\nimport localeExtraEnGb from '@angular/common/locales/extra/en-GB';\nimport localeHe from '@angular/common/locales/he';\nimport localeExtraHe from '@angular/common/locales/extra/he';\nimport localeFi from '@angular/common/locales/fi';\nimport localeExtraFi from '@angular/common/locales/extra/fi';\nimport localeDa from '@angular/common/locales/da';\nimport localeExtraDa from '@angular/common/locales/extra/da';\nimport localeSe from '@angular/common/locales/se';\nimport localeExtraSe from '@angular/common/locales/extra/se';\nimport localeNb from '@angular/common/locales/nb';\nimport localeExtraNb from '@angular/common/locales/extra/nb';\nimport localeNn from '@angular/common/locales/nn';\nimport localeExtraNn from '@angular/common/locales/extra/nn';\nimport localeId from '@angular/common/locales/id';\nimport localeExtraId from '@angular/common/locales/extra/id';\nimport localeMs from '@angular/common/locales/ms';\nimport localeExtraMs from '@angular/common/locales/extra/ms';\n\n/**\n * @ignore\n * Loader that fetches translations based on the configured locations\n */\nexport class EoxTranslateJsonLoader implements TranslateLoader {\n\n constructor(public http: HttpClient, @Inject(CORE_CONFIG) public config: CoreConfig) {\n registerLocaleData(localeDe, 'de', localeExtraDe); // German\n registerLocaleData(localeAr, 'ar', localeExtraAr); // Arabic\n registerLocaleData(localeEs, 'es', localeExtraEs); // Spanish\n registerLocaleData(localePt, 'pt', localeExtraPt); // Portuguese\n registerLocaleData(localeFr, 'fr', localeExtraFr); // French\n registerLocaleData(localeZh, 'zh', localeExtraZh); // Chinese\n registerLocaleData(localeLv, 'lv', localeExtraLv); // Latvian\n registerLocaleData(localeRu, 'ru', localeExtraRu); // Russian\n registerLocaleData(localeIt, 'it', localeExtraIt); // Italian\n registerLocaleData(localeNl, 'nl', localeExtraNl); // Dutch\n registerLocaleData(localeSk, 'sk', localeExtraSk); // Slovak\n registerLocaleData(localePl, 'pl', localeExtraPl); // Polish\n registerLocaleData(localeUk, 'uk', localeExtraUk); // Ukrainian\n registerLocaleData(localeJa, 'ja', localeExtraJa); // Japanese\n registerLocaleData(localeKo, 'ko', localeExtraKo); // Korean\n registerLocaleData(localeHi, 'hi', localeExtraHi); // Hindi\n registerLocaleData(localeBn, 'bn', localeExtraBn); // Bengalese\n registerLocaleData(localeDeCh, 'de-CH', localeExtraDeCh); // German (switzerland)\n registerLocaleData(localeZhHant, 'zh-Hant', localeExtraZhHant); // Chinese (traditional)\n registerLocaleData(localeTh, 'th', localeExtraTh); // Thai\n registerLocaleData(localeVi, 'vi', localeExtraVi); // Vietnamese\n registerLocaleData(localeEnGb, 'en-GB', localeExtraEnGb); // English (Great-Britain)\n registerLocaleData(localeHe, 'he', localeExtraHe); // Hebrew\n registerLocaleData(localeFi, 'fi', localeExtraFi); // Finish\n registerLocaleData(localeDa, 'da', localeExtraDa); // Danish\n registerLocaleData(localeSe, 'se', localeExtraSe); // Swedish\n registerLocaleData(localeNb, 'nb', localeExtraNb); // Norwegian Bokmål\n registerLocaleData(localeNn, 'nn', localeExtraNn); // Norwegian Nynorsk\n registerLocaleData(localeId, 'id', localeExtraId); // Indonesian\n registerLocaleData(localeMs, 'ms', localeExtraMs); // Malay\n }\n\n\n /**\n *\n * @param string lang\n * @returns Observable<Object>\n */\n getTranslation(lang: string): Observable<Object> {\n return forkJoin(this.config.translations.map(folder => this.loadTranslationFile(folder, lang))).pipe(\n map((res) => res.reduce((acc, x) => Object.assign(acc, x), {}))\n );\n }\n\n private loadTranslationFile(folder: string, lang: string): Observable<any> {\n return this.http.get(`${folder}${lang}.json`).pipe(\n catchError((e) => {\n // ISO codes with more than 2 characters are sub-languages like de-CH.\n // If there is no translation file for that sub-language we'll try to load\n // the file for the base language (in this case de).\n return lang.length > 2 ? this.loadTranslationFile(folder, lang.substring(0, 2)) : of({});\n })\n );\n }\n}\n","import {NgModule} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ToastrModule} from 'ngx-toastr';\n\n/**\n * `EoSharedModule` re-exports ToastrModule, TranslateModule so you can use directives\n */\n@NgModule({\n exports: [\n ToastrModule,\n TranslateModule\n ]\n})\nexport class EoSharedModule {\n}\n","import {Injectable} from '@angular/core';\nimport {HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {tap} from 'rxjs/operators';\nimport {AuthService} from './auth.service';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n\n constructor(public auth: AuthService) {\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n return next.handle(request).pipe(tap((event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n // do stuff with response if you want\n }\n }, (error: any) => {\n if (error instanceof HttpErrorResponse || error.isHttpErrorResponse) {\n if (error.status === 401) {\n this.auth.logout();\n }\n }\n }));\n }\n}\n","import {EnvironmentEnaio} from \"../../environment.enaio\";\n\n/**\n * Declare the console as an ambient value so that TypeScript doesn't complain.\n */\ndeclare const console: any;\nimport {Injectable} from '@angular/core';\nimport {ILogger} from '../../interface/logger.interface';\n\n/**\n * @ignore\n * logger logging values to the ambient console object.\n */\n@Injectable()\nexport class ConsoleLogService implements ILogger {\n\n private apply(fn, args) {\n return console && console[fn] && console[fn](...args);\n }\n\n public assert(...args: any[]): void {\n this.apply('assert', args);\n }\n\n public debug(...args: any[]): void {\n this.apply('debug', args);\n }\n\n public error(...args: any[]): void {\n this.apply('error', args);\n }\n\n public group(...args: any[]): void {\n this.apply('group', args);\n }\n\n public groupEnd(...args: any[]): void {\n this.apply('groupEnd', args);\n }\n\n public info(...args: any[]): void {\n this.apply('info', args);\n }\n\n public log(...args: any[]): void {\n this.apply('log', args);\n }\n\n public warn(...args: any[]): void {\n this.apply('warn', args);\n }\n}\n","import {HTTP_INTERCEPTORS, HttpClient, HttpClientModule} from '@angular/common/http';\nimport {APP_INITIALIZER, ModuleWithProviders, NgModule, Optional, SkipSelf} from '@angular/core';\nimport {MissingTranslationHandler, TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {ToastrModule} from 'ngx-toastr';\nimport {CoreConfig} from './config/core-config';\nimport {CoreInit} from './config/core-init.service';\nimport {CORE_CONFIG, CUSTOM_CONFIG} from './config/core-init.tokens';\nimport {init_module} from './config/initialize-module';\nimport {EoxMissingTranslationHandler} from './config/missing-translation-handler';\nimport {EoxTranslateJsonLoader} from './config/translate-json-loader';\nimport {EoSharedModule} from './eo-core-shared.module';\nimport {AuthInterceptor} from './service/auth/auth-interceptor';\nimport {ConsoleLogService} from './service/logger/console-log.service';\nimport {Logger} from './service/logger/logger';\n\n/**\n * Main module for connecting an app to an yuuvis<sup>&reg;</sup> RAD backend. To use it just import int in your app module:\n *\n * ```javascript\n * @NgModule({\n * imports: [\n * EoCoreModule.forRoot(<config>)\n * ], ...})\n * ```\n *\n * add the styles to your CLI project by adding `node_modules/@enaio-sdk/core/main.css` to the styles section of your `angular.json` or\n * use `@import '~@eo-sdk/core/main.css';` in the main styles.scss.\n *\n * ## config\n * `EoCoreModule` can be initialized with a custom configuration: If it's not set, defaults apply.\n *\n * ```json\n * {\n * main: EnaioConfig | string[], // main config object or paths to the config files (defaults to: ['assets/_default/config/main.json'])\n * translations: string[] // paths to folders where the translations reside (defaults to: ['assets/_default/i18n/'])\n * }\n * ```\n *\n * `EoCoreModule` re-exports EoSharedModule, so you can use shared modules (for example translations) inside of your app.\n * If you create your own modules that get imported in your app module, you need to import EoSharedModule there on your own.\n * Just add `import {EoSharedModule} from '@eo-sdk/core';` and you are ready to go. Everything else is\n * handled by `EoCoreModule`.\n */\n@NgModule({\n imports: [\n HttpClientModule,\n TranslateModule.forRoot(),\n /**\n * [to use toastr without dependency of @angular/animations]{@link https://www.npmjs.com/package/ngx-toastr}\n */\n ToastrModule.forRoot()\n ],\n providers: [\n {\n /**\n * provide a logging implementation for the current platform\n */\n provide: Logger,\n useClass: ConsoleLogService\n },\n ],\n exports: [EoSharedModule]\n})\nexport class EoCoreModule {\n static forRoot(config?: CoreConfig): ModuleWithProviders<EoCoreModule> {\n\n return {\n ngModule: EoCoreModule,\n providers: [\n CoreInit,\n {provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true},\n {provide: CUSTOM_CONFIG, useValue: config},\n {provide: CORE_CONFIG, useClass: CoreConfig, deps: [CUSTOM_CONFIG]},\n {provide: APP_INITIALIZER, useFactory: init_module, deps: [CoreInit], multi: true},\n /**\n * overriding translate modules defaults\n * this works because providers are singletons\n */\n {provide: TranslateLoader, useClass: EoxTranslateJsonLoader, deps: [HttpClient, CORE_CONFIG]},\n {provide: MissingTranslationHandler, useClass: EoxMissingTranslationHandler}\n ]\n };\n }\n\n /**\n * @ignore\n */\n constructor(@Optional() @SkipSelf() parentModule: EoCoreModule) {\n if (parentModule) {\n throw new Error(\n 'EoCoreModule is already loaded. Import it in the AppModule only');\n }\n }\n}\n","export class EnvironmentEnaio {\n\n static isWebEnvironment() {\n return !EnvironmentEnaio.isDesktopEnvironment() && !EnvironmentEnaio.isMobileEnvironment()\n }\n\n static isMobileEnvironment() {\n return window.hasOwnProperty('cordova');\n }\n\n static isDesktopEnvironment() {\n return window.hasOwnProperty('process') && window['process'].versions.hasOwnProperty('electron');\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ClipboardAction} from './clipboard-action.enum';\nimport {Clipboard} from './clipboard.interface';\nimport {DmsObject} from '../../model/dms-object.model';\nimport {ReplaySubject, Observable} from 'rxjs';\nimport {EnaioEvent} from '../events/events';\nimport {EventService} from '../events/event.service';\n\n\n/**\n * Collection of all Clipboard Services\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ClipboardService {\n\n private cacheKey = 'eo.clipboard';\n private clipboard: Clipboard = {\n action: null,\n elements: []\n };\n private clipboardSource = new ReplaySubject<Clipboard>(1);\n public clipboard$: Observable<Clipboard> = this.clipboardSource.asObservable();\n\n /**\n * @ignore\n */\n constructor(private eventService: EventService) {\n\n eventService.on(EnaioEvent.LOGOUT).subscribe(res => {\n this.clear();\n });\n\n this.loadCachedClipboard();\n window.addEventListener('storage', evt => {\n if (evt.key === this.cacheKey) {\n this.loadCachedClipboard();\n }\n });\n }\n\n /**\n * Setter for the Clipboard\n *\n * @param elements The elements that should be set to the clipboard\n * @param action The type of action (COPY, CUT)\n * @param noCache Whether or not to bypass cache\n */\n set(elements: DmsObject[], action: ClipboardAction, noCache?: boolean) {\n this.clipboard = {\n action: action,\n elements: elements\n };\n if (!noCache) {\n this.updateCache();\n }\n this.clipboardSource.next(this.clipboard);\n }\n\n /**\n * Getter for the Clipboard\n *\n * @returns Clipboard\n */\n get(): Clipboard {\n return this.clipboard;\n }\n\n /**\n * Clears the Clipboard by removing all entries from the Clipboard\n */\n clear() {\n this.clipboard = {\n action: null,\n elements: []\n };\n this.updateCache();\n this.clipboardSource.next(this.clipboard);\n }\n\n /**\n * Update LocalStorage with Clipboard\n */\n private updateCache() {\n window.localStorage.setItem(this.cacheKey, JSON.stringify(this.clipboard));\n }\n\n /**\n * Load Cached Clipbord from LocalStorage\n */\n private loadCachedClipboard() {\n const json = window.localStorage.getItem(this.cacheKey);\n try {\n let clipboard = JSON.parse(json);\n if (clipboard) {\n this.set(clipboard.elements, clipboard.action, true);\n } else {\n this.clear();\n }\n } catch (err) {\n\n }\n }\n}\n","import {ObjectType} from './object-type.model';\n\n/**\n * @ignore\n */\nexport class DmsObjectAttachment {\n id: number;\n name: string;\n size: number;\n type: string;\n previewUri: string;\n\n /**\n * @param json - server sent JSON for a dms object\n */\n constructor(json: any) {\n Object.assign(this, json);\n }\n}\n\n/**\n * Representation of a dms object.\n */\nexport class DmsObject {\n /**\n * objects ID\n */\n id: string;\n /**\n * objects title\n */\n title: string;\n /**\n * objects description\n */\n description: string;\n /**\n * objects version number\n */\n version: number;\n /**\n * @ignore\n */\n versions: any[];\n /**\n * object type name\n */\n typeName: string;\n /**\n * objects type\n */\n type?: ObjectType;\n /**\n * Flag indicating whether or not this is the active version of the object\n */\n isActiveVersion: boolean;\n /**\n * Flag indicating whether or not has been finalized\n */\n isFinalized: boolean;\n /**\n * Flag indicating whether or not the object has been marked as favorite\n */\n isFavorite: boolean;\n /**\n * @ignore\n * same as isContextFolder because we do not allow other folders than context folders\n */\n isFolder: boolean;\n /**\n * Flag indicating whether or not the object is a context folder\n */\n isContextFolder: boolean;\n /**\n * Information about the objects context folder\n */\n contextFolder: { id: string, typeName: string, type?: ObjectType, title: string, description: string };\n /**\n * Indexdata of the object\n */\n data: any;\n /**\n * special right/permissions set up for the object\n */\n rights: any;\n /**\n * Information about the sharing status of the object\n */\n shares: any;\n /**\n * Information about the objects creation. Includes the date it was created and the user that created the object\n */\n created: any;\n /**\n * Information about the objects last modification. Includes the date it was modified and the user that modified the object\n */\n modified: any;\n /**\n * Flag indicating whether or not the object is locked. Locked objects are not allowed to be changed\n */\n lock: any;\n /**\n * The objects content (file). May be empty as dms objects can be created without contents\n */\n content: any;\n /**\n * The contents filename\n */\n contentFileName: string;\n /**\n * The contents filesize\n */\n contentFileSize: string;\n /**\n * List of subscriptions for the object\n */\n subscriptions: any[] = [];\n /**\n * List of resubmissions for the object\n */\n resubmissions: any[] = [];\n /**\n * Storage info of the object\n */\n storageInfo: any[] = [];\n /**\n * @ignore\n */\n additionalvisibility: any[] = [];\n\n\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new dms object instance\n */\n constructor(json: any) {\n\n // create a DmsObject based on the server JSON\n this.id = json.id;\n this.title = json.title;\n this.description = json.description;\n this.version = json.version;\n this.versions = json.versions;\n this.data = json.data;\n this.typeName = json.type;\n\n this.isActiveVersion = json.activeversion;\n this.isFinalized = json.finalized;\n this.isFavorite = json.favorite;\n this.isFolder = json.folder;\n this.isContextFolder = !!json.iscontextfolder;\n this.storageInfo = json.storageinfo;\n\n if (json.contents && json.contents[0]) {\n this.contentFileName = json.contents[0].path;\n this.contentFileSize = json.contents[0].size;\n }\n\n if (json.contextfolder) {\n this.contextFolder = {\n id: json.contextfolder.id,\n typeName: json.contextfolder.type,\n title: json.contextfolder.title,\n description: json.contextfolder.description\n };\n }\n\n if (json.created) {\n this.created = {\n on: json.created.on,\n by: {\n id: json.created.by.id,\n title: json.created.by.title,\n name: json.created.by.name\n }\n };\n }\n\n if (json.modified) {\n this.modified = {\n on: json.modified.on,\n by: {\n id: json.modified.by.id,\n title: json.modified.by.title,\n name: json.modified.by.name\n }\n };\n }\n\n // lock informations\n if (json.lock !== 'NOT_LOCKED' && json.lockinfo) {\n this.lock = {\n on: json.lockinfo.time,\n by: {\n me: json.lock === 'LOCKED_BY_SESSION_USER',\n other: json.lock === 'LOCKED_BY_OTHER_USER',\n name: json.lockinfo.username,\n label: json.lockinfo.usertitle\n }\n };\n }\n\n // rights section\n if (json.rights && json.rights.length > 0) {\n this.rights = {\n select: json.rights[0].privileges.select,\n edit: json.rights[0].privileges.edit && !(this.lock && this.lock.by.other),\n delete: json.rights[0].privileges.delete && !(this.lock && this.lock.by.other),\n finalize: json.rights[0].privileges.finalize && !(this.lock && this.lock.by.other),\n recycle: json.rights[0].privileges.recycle && !(this.lock && this.lock.by.other),\n share: json.rights[0].privileges.share && !(this.lock && this.lock.by.other),\n };\n } else {\n this.rights = {\n select: false,\n edit: false,\n delete: false,\n finalize: false,\n recycle: false,\n share: false\n };\n }\n\n if (json.shares) {\n this.shares = json.shares;\n }\n\n // content section\n if (json.contentid) {\n this.content = {\n id: json.contentid,\n type: json.contenttype,\n count: json.contentcount || 0,\n linked: json.contentid !== json.id,\n contents: json.contents\n };\n }\n\n if (json.subscriptions) {\n this.subscriptions = json.subscriptions;\n }\n\n if (json.resubmissions) {\n this.resubmissions = json.resubmissions;\n }\n\n if (json.additionalvisibility) {\n this.additionalvisibility = json.additionalvisibility;\n }\n }\n}\n","import {OrgUser} from './org.model';\n\n/**\n * Representation of a history entry for a dms object\n */\nexport class DmsObjectHistoryEntry {\n\n /**\n * Version of the dms object at the time the history entry was created\n */\n version: number;\n /**\n * The time the history entry was created\n */\n time: Date;\n /**\n * Entry's title\n */\n title: string;\n /**\n * Entry's description\n */\n description: string;\n /**\n * Entry's intent\n */\n intent?: string;\n /**\n * Custom comment applied to the entry\n */\n comment: string;\n /**\n * Group of the entry\n */\n group: 'PROCESS' | 'MODIFICATION' | 'INFORMATIONAL';\n /**\n * History entry's type\n */\n type: string;\n /**\n * Additional parameters for special (BPM related) types of entries\n */\n parameter?: {\n processId: string,\n processName: string,\n activityId?: string,\n activityName?: string,\n type: string\n };\n /**\n * If the history entry was created from a users activity (e.g. indexdata changes), this property\n * holds the user that caused the entry\n */\n user: OrgUser;\n\n /**\n * Creates a new instance\n * @param json The JSON object received from the backend. This will be used to construct the new history entry instance\n */\n constructor(json: any) {\n this.version = json.version;\n this.time = json.time;\n this.title = json.title;\n this.description = json.description;\n this.intent = json.intent;\n this.comment = json.comment;\n this.group = json.group;\n this.type = json.type;\n this.user = json.user;\n\n if (json.parameter) {\n this.parameter = {\n ...json.parameter,\n processId: json.parameter.procId,\n processName: json.parameter.procName,\n activityId: json.parameter.actId,\n activityName: json.parameter.actName\n };\n }\n }\n}\n","import {tap, mergeMap, catchError, map} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {Observable, of} from 'rxjs';\nimport {DmsObject, DmsObjectAttachment} from '../../model/dms-object.model';\nimport {BackendService} from '../backend/backend.service';\nimport {SystemService} from '../system/system.service';\nimport {Utils} from '../../util/utils';\nimport {DmsObjectHistoryEntry} from '../../model/dms-object-history.model';\nimport {EnaioEvent} from '../events/events';\nimport {EventService} from '../events/event.service';\nimport {DmsParams} from './dmsParams.interface';\n\nexport enum SubscriptionMode {\n ONLY_INDEX_DATA_CHANGED = 'META',\n ONLY_DOCUMENT_CONTENT_CHANGED = 'CONTENT',\n DMS_OBJECT_CHANGED = 'BOTH'\n}\n\nexport const resolveObjectRights = [];\n\n/**\n * Collection of DMS Services\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DmsService {\n\n constructor(private backend: BackendService,\n private systemService: SystemService,\n private eventService: EventService) {\n }\n\n /**\n * Fetches a dms object.\n *\n * @param id Objects id\n * @param type Objects type name, will improve load time if provided\n * @param version Target version\n * @param intent Used for server side logging. If you provide an intent, the backend will recognize the request and add it to its logs\n * @param recyclebin If true, objects from recyclebin are included\n * @param withStorageInfo If true, storageinfo is included on the dms object\n * @returns Observable<DmsObject>\n */\n getDmsObject(id: string, type?: string, version?: number, intent?: string, recyclebin?: boolean, withStorageInfo?: boolean): Observable<DmsObject> {\n const uri = `/dms/${id}`;\n\n const q = {\n additionalvisibility: true,\n subscription: 'CURRENT',\n resubmission: 'CURRENT',\n rights: 'CURRENT',\n datameta: 'true',\n contextfolder: 'true',\n type,\n recyclebin,\n version,\n storageinfo: withStorageInfo,\n '_intent': intent\n };\n\n return this.backend\n .getViaTempCache(Utils.buildUri(uri, q))\n .pipe(\n catchError(Utils.catchSkip(err => err.status === 404)),\n map(res => this.resolveObjectTypes(new DmsObject(res)))\n );\n }\n\n /**\n * Getter for the DMS Objects by params\n *\n * @param DmsParams params\n * @returns Observable<DmsObject>\n */\n getDmsObjectByParams(params: DmsParams): Observable<DmsObject> {\n return this.getDmsObject(params.id, params.type, params.version, params.intent, params.recyclebin, params.withStorageInfo);\n }\n\n /**\n * Reolver of Object Types by DMS Object\n *\n * @param DmsObject dmsObject\n * @returns DmsObject\n */\n resolveObjectTypes(dmsObject: DmsObject): DmsObject {\n dmsObject.type = this.systemService.getObjectType(dmsObject.typeName);\n\n if (dmsObject.contextFolder) {\n dmsObject.contextFolder.type = this.systemService.getObjectType(dmsObject.contextFolder.typeName);\n }\n\n return resolveObjectRights.reduce((value, fn) => fn.call(this, value), dmsObject);\n }\n\n /**\n * Deletes a DMS object.\n * @param id The id of the dms object to be deleted.\n * @param type Type of object\n * @param hardDelete If object should really be deleted or only put into the recycle bin\n * @param force If object should be forced to be deleted, even if it is used inside of a process. Default: false\n */\n deleteDmsObject(id: string, type?: string, hardDelete?: boolean, force = false): Observable<any> {\n const url = `/dms/${id}`;\n const params = {};\n if (type && type.length > 0) {\n params['type'] = type;\n }\n if (hardDelete) {\n params['harddelete'] = hardDelete;\n }\n if (force) {\n params['forcedelete'] = force;\n }\n return this.backend.del(Utils.buildUri(url, params));\n }\n\n /**\n * Returns the context path of the given dms object\n * @param id The id of the object.\n * @returns The context path of the dms object\n */\n getContextPath(id: string) {\n return this.backend.get(`/dms/${id}/context`)\n .pipe(\n map(\n contextPath => {\n contextPath.forEach(pathItem => {\n pathItem.dmsobject = new DmsObject(pathItem.dmsobject);\n });\n return contextPath;\n }\n ));\n }\n\n /**\n * Fetches the children of a DmsObject.\n *\n * @param dmsObject\n * @returns Observable<DmsObject[]>\n */\n getChildren(dmsObject: DmsObject): Observable<DmsObject[]> {\n const uri = `/dms/${dmsObject.id}/children`;\n return this.backend.getViaTempCache(Utils.buildUri(uri, {type: dmsObject.type.name})).pipe(\n map((res: any[]) => {\n return res.map(r => this.resolveObjectTypes(new DmsObject(r)));\n }));\n }\n\n /**\n * Fetches the versions of a DmsObject.\n *\n * @param id\n * @param type\n * @returns Observable<DmsObject>\n */\n getVersions(id: string, type?: string): Observable<DmsObject> {\n const uri = `/dms/${id}/versions`;\n return this.backend.getViaTempCache(Utils.buildUri(uri, {type})).pipe(\n map((res: any) => {\n return new DmsObject(res);\n }));\n }\n\n /**\n * Fetches the attachments of a DmsObject.\n *\n * @param dmsObject\n * @returns Observable<DmsObjectAttachment[]>\n */\n getAttachments(dmsObject: DmsObject): Observable<DmsObjectAttachment[]> {\n const type = dmsObject.content?.type;\n const version = dmsObject.content?.linked ? -1 : dmsObject.version;\n const contentID = dmsObject.content?.id;\n const uri = Utils.buildUri(`/dms/${contentID}/attachments`, {type, version});\n return !contentID ? of([]) : this.backend.getViaTempCache(uri).pipe(\n catchError(Utils.catchSkip(err => err.status === 404)),\n map((res: any) => res.attachmentinfo && res.attachmentinfo.attachments ? res.attachmentinfo.attachments\n .map((a, i) => new DmsObjectAttachment(Object.assign(a, {id: i, previewUri: this.getAttachmentByIndex(contentID, i, type, version)}))) : []\n ));\n }\n\n /**\n * Fetches the specific attachment of a DmsObject.\n *\n * @param id\n * @param index\n * @param type\n * @param version\n * @returns string\n */\n getAttachmentByIndex(id: string, index: number, type: string, version?: number): string {\n const uri = Utils.buildUri(`/dms/${id}/attachments/${index}`, {type, version});\n return this.backend.getServiceBase() + uri;\n }\n\n /**\n * Generates the URI for getting a DmsObjects slide (Preview image).\n *\n * @param id Objects id\n * @param type Objects type name, will improve load time if provided\n * @param version Target version\n * @param size The size of the preview image in px\n * @returns string\n */\n getSlide(id: string, type?: string, version?: number, size?: number): string {\n return Utils.buildUri(\n this.backend.getServiceBase() + '/dms/' + id + '/slide',\n {\n type,\n version,\n height: size\n }\n );\n }\n\n /**\n * Generates the URI for getting a DmsObjects preview (PDF rendition).\n *\n * @param id Objects id\n * @param type Objects type name, will improve load time if provided\n * @param version Target version\n * @param rendition Target rendition (PDF)\n * @param recyclebin If true, objects from recyclebin are included\n * @returns string\n */\n getPreview(id: string, type?: string, version?: number, rendition?: string, recyclebin?: boolean): string {\n return Utils.buildUri(\n this.backend.getServiceBase() + '/dms/' + id + '/content',\n {\n rendition,\n type,\n version,\n recyclebin\n }\n );\n }\n\n /**\n * Updates an existing dms object.\n *\n * @param id ID of the object to be updated\n * @param indexdata Object holding the objects indexdata (property: value)\n * @param type The object type of the object to be updated\n * @param version The current version of the object to be updated\n * @param checkreferences If the reference fields should be validated or not\n * @returns Observable<DmsObject> The updated dms object\n */\n updateObject(id: string, indexdata: any, type?: string, version?: number, checkreferences?: boolean): Observable<DmsObject> {\n const url = Utils.buildUri(`/dms/${id}`, {type, version, checkreferences});\n return this.triggerUpdate(<any>{id, type, typeName: type}, this.backend.put(url, indexdata));\n }\n\n /**\n * Fetch the history (audit) of one dms object\n *\n * @param id ID of the dms object to fetch history for\n * @param type Type of the dms object to fetch history for\n * @param recyclebin If true, objects from recyclebin are included\n * @returns Observable<DmsObjectHistoryEntry[]> The history of the dms object\n */\n getHistory(id: string, type?: string, recyclebin?: boolean): Observable<DmsObjectHistoryEntry[]> {\n const uri = `/dms/${id}/audit`;\n return this.backend.getJson(Utils.buildUri(uri, {type: type, recyclebin: recyclebin})).pipe(map((res) => res.audit.map((auditEntry) => new DmsObjectHistoryEntry(auditEntry))));\n }\n\n /**\n * Restores an earlier version of the selected DmsObject by adding the earlier version\n * as the new recent version.\n *\n * @param id DMS object id\n * @param version The version to be restored\n * @param type The dms object type\n * @return\n */\n restoreVersion(id: string, version: number, type?: string) {\n const uri = `/dms/restoreversion/${id}/${version}`;\n return this.backend.post(Utils.buildUri(uri, {type: type}), null);\n }\n\n /**\n * Restores File\n * @param id DMS object id\n * @param type The dms object type\n * @param userId user id\n * @return\n */\n restore(id: string, userId: string, type?: string) {\n const uri = `/dms/restore/${id}?userid=${userId}`;\n return this.backend.put(uri);\n }\n\n /**\n * if dmsObject is specified, load latest version and trigger Enaio event DMS_OBJECT_UPDATED\n *\n * @param dmsObject\n * @param request\n * @return\n */\n triggerUpdate(dmsObject: DmsObject, request: Observable<any>) {\n return !dmsObject ? request : request.pipe(\n mergeMap(() => this.getDmsObject(dmsObject.id, dmsObject.typeName)),\n tap(_dmsObject => this.eventService.trigger(EnaioEvent.DMS_OBJECT_UPDATED, _dmsObject)));\n }\n\n /**\n * Remove Content\n *\n * @param DmsObject dmsObject\n * @returns Observable<any>\n */\n removeContent(dmsObject: DmsObject) {\n const uri = `/dms/${dmsObject.id}/content`;\n return this.triggerUpdate(dmsObject, this.backend.del(uri));\n }\n\n /**\n * Creates a new DmsObject.\n * @param targetType Target object type name\n * @param file File to be added as DmsObjects content\n * @param indexData Indexdata as plain object where keys are the objects properties and values the values to be applied to it\n * @param parent Parent context folder of the new DmsObject\n */\n createDmsObject(targetType: string, file?: File, indexData?: any, parent?: {id: string, type?: string}): Observable<{id: string, uri: string}> {\n\n const formData = new FormData();\n if (indexData) {\n formData.append('data', new Blob([JSON.stringify(indexData)], {\n type: 'application/json'\n }));\n } else {\n formData.append('noindexdata', '');\n }\n\n if (file) {\n formData.append('files[]', file, Utils.encodeFileName(file.name));\n }\n\n let uri = `/dms/create/${targetType}`;\n if (parent) {\n uri = Utils.buildUri(uri, {\n parentId: parent.id,\n parentType: parent.type\n });\n }\n return this.backend.postMultiPart(uri, formData, null, {headers: {}});\n }\n\n /**\n * Create a Subscription\n *\n * @param DmsObject dmsObject\n * @param string subject\n * @param receiver\n * @param boolean sendemail\n * @param boolean onlyemail\n * @param mode SubscriptionMode\n * @returns Observable<any>\n */\n createSubscription(dmsObject: DmsObject, subject: string, receiver, sendemail: boolean, onlyemail: boolean, mode?: SubscriptionMode) {\n const uri = `/dms/subscription/${dmsObject.id}`;\n return this.triggerUpdate(dmsObject, this.backend.post(Utils.buildUri(uri, {\n subject,\n type: dmsObject.typeName,\n receiver,\n sendemail,\n onlyemail,\n mode\n }), {})\n );\n\n }\n\n /**\n * Create a Resubmission\n *\n * @param DmsObject dmsObject\n * @param string subject\n * @param due\n * @param receiver\n * @param boolean sendEmail\n * @param boolean onlyEmail\n * @returns Observable<any>\n */\n createResubmission(dmsObject: DmsObject, subject: string, due, receiver, sendEmail: boolean, onlyEmail: boolean) {\n const uri = `/dms/resubmission/${dmsObject.id}`;\n return this.triggerUpdate(dmsObject, this.backend.post(Utils.buildUri(uri, {\n subject,\n type: dmsObject.typeName,\n receiver,\n due: due ? due.toISOString() : '',\n sendemail: sendEmail,\n onlyemail: onlyEmail\n }), {})\n );\n }\n\n /**\n * Reamove a Subscription by a given Id\n *\n * @param subscriptionId\n * @param DmsObject dmsObject\n * @returns Observable<any>\n */\n removeSubscriptionById(subscriptionId, dmsObject?: DmsObject) {\n return this.triggerUpdate(dmsObject, this.backend.del(`/messageprovider/subscription/${subscriptionId}`));\n }\n\n /**\n * Remove a Resubmission by a given Id\n *\n * @param itemId\n * @param DmsObject dmsObject\n * @returns Observable<any>\n */\n removeResubmissionsById(itemId, dmsObject?: DmsObject) {\n return this.triggerUpdate(dmsObject, this.backend.del(`/dms/resubmission/${itemId}`));\n }\n\n /**\n * Update a Resubmission\n *\n * @param DmsObject dmsObject\n * @param string subject\n * @param due\n * @param receiver\n * @param boolean sendEmail\n * @param boolean onlyEmail\n * @returns Observable<any>\n */\n updateResubmission(dmsObject: DmsObject, subject: string, due, receiver, sendEmail: boolean, onlyEmail: boolean) {\n return this.removeResubmissionsById(dmsObject.id).pipe(mergeMap(() => {\n return this.createResubmission(dmsObject, subject, due, receiver, sendEmail, onlyEmail);\n }));\n }\n\n /**\n * Shares a dms object (and its children) with certain users\n * @param dmsObject The dms object to be shared\n * @param shareWith Array of organization objects to share the object with. Each entry\n * will have the ID of the target organization object as well as an optional param\n * whether or not to also share the dms objects children.\n * @returns Observable being resolved once the request is done\n */\n share(dmsObject: DmsObject, shareWith: {id: string, shareChildren?: boolean}[]): Observable<any> {\n return this.triggerUpdate(\n dmsObject,\n this.backend.put(\n `/dms/${dmsObject.id}/share`,\n {\n shares: shareWith.map(i => ({\n organizationobject: i.id,\n sharechildren: !!i.shareChildren\n }))\n }\n ));\n }\n\n /**\n * Move a DMS Object\n *\n * @param id\n * @param typeName\n * @param parentId\n * @param parentTypeName\n * @returns Observable<any>\n */\n move(id, typeName, parentId, parentTypeName) {\n const uri = `/dms/location/${id}`;\n return this.backend.post(Utils.buildUri(uri, {\n type: typeName,\n parentId,\n parentType: parentTypeName\n }), {});\n }\n\n /**\n * Copy a DMS Object\n *\n * @param id\n * @param typeName\n * @param parentId\n * @param parentTypeName\n * @param createContentLink\n * @returns Observable<any>\n */\n copy(id, typeName, parentId, parentTypeName, createContentLink) {\n const uri = `/dms/copy/${id}`;\n return this.backend.post(Utils.buildUri(uri, {\n type: typeName,\n parentId,\n parentType: parentTypeName,\n createcontentlink: createContentLink\n }), {});\n }\n\n /**\n * Set a DMS Object to Finilited\n *\n * @param DmsObject item\n * @returns Observable<any>\n */\n finalize(item: DmsObject) {\n const url = '/dms/finalize/' + item.id + '?type=' + item.typeName;\n return this.triggerUpdate(item, this.backend.put(url));\n }\n\n /**\n * Remove the Finilized Flag from a DMS Object\n *\n * @param DmsObject item\n * @returns Observable<any>\n */\n definalize(item: DmsObject) {\n const url = '/dms/definalize/' + item.id + '?type=' + item.typeName;\n return this.triggerUpdate(item, this.backend.put(url));\n }\n\n createLocalCopyOfDMSObject(dmsObject: DmsObject): DmsObject {\n const base = {\n id: dmsObject.id,\n title: dmsObject.title,\n description: dmsObject.description,\n version: dmsObject.version,\n versions: dmsObject.versions,\n data: dmsObject.data,\n type: dmsObject.typeName,\n\n activeversion: dmsObject.isActiveVersion,\n finalized: dmsObject.isFinalized,\n favorite: dmsObject.isFavorite,\n folder: dmsObject.isFolder,\n iscontextfolder: dmsObject.isContextFolder,\n\n contextfolder: dmsObject.contextFolder ? {\n id: dmsObject.contextFolder.id,\n type: dmsObject.contextFolder.typeName,\n title: dmsObject.contextFolder.title,\n description: dmsObject.contextFolder.description\n } : null,\n\n created: dmsObject.created,\n modified: dmsObject.modified,\n\n lock: !dmsObject.lock ? 'NOT_LOCKED' : dmsObject.lock.by.me ? 'LOCKED_BY_SESSION_USER' : 'LOCKED_BY_OTHER_USER',\n lockinfo: dmsObject.lock ? {username: dmsObject.lock.by.name, usertitle: dmsObject.lock.by.label, time: dmsObject.lock.on} : null,\n\n rights: [{\n privileges: {\n select: dmsObject.rights.select,\n edit: dmsObject.rights.edit,\n delete: dmsObject.rights.delete,\n finalize: dmsObject.rights.finalize,\n recycle: dmsObject.rights.recycle\n }\n }],\n shares: dmsObject.shares,\n contentid: dmsObject.content ? dmsObject.content.id : null,\n contenttype: dmsObject.content ? dmsObject.content.type : null,\n contentcount: dmsObject.content ? dmsObject.content.count : null,\n contents: dmsObject.content ? dmsObject.content.contents : null,\n\n subscriptions: dmsObject.subscriptions,\n resubmissions: dmsObject.resubmissions,\n additionalvisibility: dmsObject.additionalvisibility\n };\n\n let copiedDmsObject = new DmsObject(base);\n copiedDmsObject.type = dmsObject.type;\n\n return copiedDmsObject;\n }\n\n}\n","import {Injectable} from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\n\n/**\n * Wrapper for Toastr Service\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class NotificationsService {\n\n /**\n * Default Notofication Options\n *\n */\n private options: any = {\n closeButton: true,\n positionClass: 'toast-bottom-right',\n timeOut: 15000\n };\n\n constructor(private toastrService: ToastrService) {\n }\n\n /**\n * Show info colored massage (blue)\n *\n * @param string title\n * @param string msg\n */\n info(title: string, msg?: string) {\n this.toast(title, msg);\n }\n\n /**\n * Show confirm colored massage (blue)\n *\n * @param string title\n * @param string msg\n * @param onAdd\n * @param onRemove\n */\n confirm(title: string, msg?: string, onAdd?: any, onRemove?: any) {\n this.toast(title, msg, 'confirm', {onAdd, onRemove, timeOut: 7000});\n }\n\n /**\n * Show success colored massage (green)\n * @param string title\n * @param string msg\n */\n success(title: string, msg?: string) {\n this.toast(title, msg, 'success');\n }\n\n /**\n * can not be in use\n *\n * @param string title\n * @param string msg\n */\n wait(title: string, msg?: string) {\n this.toast(title, msg, 'wait');\n }\n\n /**\n * Show error colored massage (red)\n *\n * @param string title\n * @param string msg\n */\n error(title: string, msg?: string) {\n this.toast(title, msg, 'error', {\n closeButton: true,\n timeOut: 7000\n });\n }\n\n /**\n * Show warning colored massage (yellow)\n *\n * @param string title\n * @param string msg\n */\n warning(title: string, msg?: string) {\n this.toast(title, msg, 'warning');\n }\n\n /**\n * Public wrapper for accessing the Toastr\n *\n * @param string title\n * @param string msg\n * @param string mode\n * @param _options\n */\n private toast(title: string, msg: string, mode?: string, _options?: {}) {\n let options: any = Object.assign({}, this.options, _options);\n // options.title = title || '';\n // options.msg = msg || '';\n this.doToast(msg, title, options, mode);\n }\n\n /**\n * Accessing the toastr service\n *\n * @param string msg\n * @param string title\n * @param options\n * @param string mode\n */\n private doToast(msg: string, title: string, options: any, mode?: string) {\n switch (mode) {\n case 'success': {\n this.toastrService.success(msg, title, options);\n break;\n }\n // case 'wait': {\n // this.toastrService.wait(msg, title, options);\n // break;\n // }\n case 'error': {\n this.toastrService.error(msg, title, options);\n break;\n }\n case 'warning': {\n this.toastrService.warning(msg, title, options);\n break;\n }\n case 'confirm': {\n this.toastrService.info(msg, title, options);\n break;\n }\n default: {\n this.toastrService.info(msg, title, options);\n }\n }\n }\n}\n","import {HttpResponse} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport * as FileSaver from 'file-saver';\nimport {Observable} from 'rxjs';\nimport {map, tap} from 'rxjs/operators';\nimport {ObjectType} from '../../model/object-type.model';\nimport {RangeValue} from '../../model/range-value.model';\nimport {Utils} from '../../util/utils';\nimport {BackendService} from '../backend/backend.service';\nimport {Config} from '../config/config.service';\nimport {SystemService} from '../system/system.service';\nimport {SearchFilterType} from './search-filter-type.interface';\nimport {\n FieldDefinition,\n SearchFilter,\n SearchQuery,\n SearchResult,\n SearchState\n} from './search-query.model';\n\n/**\n * Collection of Search Services\n * See {@link SearchQuery} for Query Definition\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class SearchService {\n constructor(\n private system: SystemService,\n private backend: BackendService,\n private config: Config\n ) {}\n\n /**\n * Creates a RangeValue instance from the given value object.\n *\n * @param value The object to be\n * @returns RangeValue\n */\n public static toRangeValue(value: any): RangeValue {\n if (value) {\n if (value instanceof RangeValue) {\n return value;\n } else if (\n value.hasOwnProperty('operator') &&\n value.hasOwnProperty('firstValue')\n ) {\n return new RangeValue(\n value.operator,\n value.firstValue,\n value.secondValue\n );\n }\n }\n return value;\n }\n\n /**\n * Creates a fromated search Query\n *\n * @param query\n * @returns SearchQuery\n */\n public buildQuery(query: any): SearchQuery {\n let q: SearchQuery;\n if (query instanceof SearchQuery) {\n q = query;\n } else {\n let qObj;\n /**\n * if we got a string, we'll assume that it's a JSON\n */\n if (typeof query === 'string') {\n qObj = JSON.parse(query);\n } else {\n qObj = query;\n }\n\n q = new SearchQuery();\n q.term = qObj.term;\n if (qObj.filters) {\n Object.keys(qObj.filters).forEach(k => {\n q.filters.push(\n new SearchFilter(\n k,\n qObj.filters[k].o,\n qObj.filters[k].v1,\n qObj.filters[k].v2\n )\n );\n });\n }\n if (qObj.types) {\n qObj.types.forEach(t => {\n if (this.system.getObjectType(t)) {\n q.types.push(this.system.getObjectType(t));\n } else {\n q.types.push(t);\n }\n });\n }\n if (qObj.contextfoldertypes) {\n qObj.contextfoldertypes.forEach(t => {\n if (t === 'sysroot') {\n // 'sysroot' is not a real object type, so we have to create a fake type.\n const sysrootFakeObjectType = new ObjectType({\n id: 'a',\n folder: true,\n name: 'sysroot',\n qname: 'sysroot',\n label: 'sysroot',\n iscontextfolder: true,\n abstract: false,\n elements: [],\n description: '',\n shareable: false,\n minfiles: 0,\n maxfiles: 1\n });\n q.contextFolderTypes.push(sysrootFakeObjectType);\n } else {\n q.contextFolderTypes.push(this.system.getObjectType(t));\n }\n });\n }\n q.fields = qObj.fields;\n if (qObj.options) {\n q.suggest = qObj.options.suggest || false;\n q.expertMode = qObj.options.expertmode || false;\n q.scope = qObj.options.scope;\n // \"||\" does not work for recognizing \"false\" with priority over \"default true\"\n q.resolveReference = (qObj.options.resolvereference !== null) ? qObj.options.resolvereference :\n ( qObj.options.resolveReference !== null ? qObj.options.resolveReference : true);\n // withContext was old and \"wrong\" name of parameter\n q.withContext = qObj.options.withcontext || qObj.options.withContext || false;\n q.searchMode =\n qObj.options.searchmode || SearchQuery.DEFAULT_SEARCH_MODE;\n }\n }\n\n return q;\n }\n\n /**\n * Executes a query.\n *\n * @param query The query to be executed\n * @returns Observable<SearchResult>\n */\n public search(query: SearchQuery): Observable<SearchResult> {\n return this.executeQuery(query.getQueryJson()).pipe(\n map(res => this.createResultFromResponse(res))\n );\n }\n\n /**\n * Retrieve Search results\n */\n public getSearchState(query: any): Observable<SearchState> {\n\n if (query instanceof SearchQuery) {\n query = query.getQueryJson();\n }\n delete query.name;\n return this.executeQuery(query, true).pipe(\n map((res: any) => {\n const state = new SearchState();\n state.count = res.hits.total;\n Object.keys(SearchQuery.BASE_PARAMS).forEach(k => {\n const baseParam = SearchQuery.BASE_PARAMS[k];\n const aggregations = res.aggregations[baseParam]\n ? res.aggregations[baseParam].buckets\n : [];\n aggregations.forEach(aggregation => {\n let {key, doc_count, contextfoldertype} = aggregation;\n if (baseParam === 'filesize') {\n doc_count = aggregation['filter#documents'].doc_count;\n }\n state.addAggregations(baseParam, key, doc_count, aggregation);\n /**\n * type aggregations may also contain buckets for their context types\n */\n if (\n baseParam === SearchQuery.BASE_PARAMS.TYPE &&\n contextfoldertype\n ) {\n contextfoldertype.buckets.forEach(ctxAgg => {\n state.addAggregations(\n 'contexttype',\n ctxAgg.key,\n ctxAgg.doc_count,\n ctxAgg\n );\n });\n }\n });\n });\n\n return state;\n })\n );\n }\n\n /**\n * Fetches a part of a queries result. This can be used for paging of results\n * or lazy loading large results.\n *\n * @param query The query to be executed\n * @param fromIndex The index from where to fetch results\n * @param chunkSize Size of the chunk to be fetched\n * @returns Observable<SearchResult>\n */\n public getChunkedResult(\n query: SearchQuery,\n fromIndex: number,\n chunkSize: number\n ): Observable<SearchResult> {\n const q = query.getQueryJson();\n\n q.from = fromIndex;\n const queryUri = `search!chunk:${chunkSize}!${JSON.stringify(q)}`;\n return this.backend.getViaTempCache(queryUri, () =>\n this.executeQuery(q, false, chunkSize).pipe(\n map(res => this.createResultFromResponse(res))\n )\n );\n }\n\n /**\n * Executes a query\n *\n * @param queryJson The query JSON to be executed\n * @param aggregateSearch Flag indicating whether or not to execute an aggregation search (no actual results)\n * @param customSize Custom number of results to be fetched, if not set the default size will be applied\n * @returns Observable<any>\n */\n public executeQuery(\n queryJson: any,\n aggregateSearch?: boolean,\n customSize?: number\n ): Observable<any> {\n let uri: string;\n let query = queryJson;\n if (aggregateSearch) {\n uri = `/aggregate`;\n } else {\n const size = customSize || this.config.getRaw('search.limit');\n uri = `/?size=${size}`;\n }\n query.options = {...query.options, tracktotalhits: this.config.getRaw('search.trackTotalHits') || false, timezone: Utils.getTimezoneOffset()};\n\n return this.backend.getViaTempCache(uri + JSON.stringify(query), () => this.backend.post(uri, query, this.backend.getSearchBase()));\n }\n\n /**\n * Downloads a csv-file of the results of a given search-query\n *\n * @param queryJson The query JSON to be executed\n * @returns Observable<any>\n */\n public downloadCsvFromQuery(queryJson: object): Observable<any> {\n return this.backend\n .post('/export', queryJson, this.backend.getSearchBase(), {\n observe: 'response',\n responseType: 'blob'\n })\n .pipe(\n tap(res => {\n const blob = new Blob([res.body], {\n type: 'text/csv;charset=utf-8'\n });\n FileSaver.saveAs(blob, this.getFileNameFromHttpResponse(res), {autoBom: true});\n })\n );\n }\n\n private getFileNameFromHttpResponse(res: HttpResponse<any>) {\n const contentDispositionHeader =\n res.headers.get('Content-Disposition') || '';\n return contentDispositionHeader.split('filename=')[1];\n }\n\n /**\n * Executes a search for fetching suggestions on a given search term.\n *\n * @param term The search term\n * @return\n */\n public autocomplete(term: string) {\n return this.backend.getJson(\n `/autocomplete?prefix=${encodeURIComponent(term)}`,\n this.backend.getSearchBase()\n );\n }\n\n /**\n * Use this method to create a SearchFilter for a form element. Based on the target types\n * it'll create the right kind of filter that you then can add to a SearchQuery\n *\n * @param targetTypes\n * @param formElementName\n * @param elementValue\n * @returns SearchFilter[] An array of search filters most of the time containing only one entry, but\n * for table elements this could be more\n */\n public getSearchFilter(\n targetTypes: ObjectType[],\n formElementName: string,\n elementValue: any\n ): SearchFilter[] {\n const filter: SearchFilter[] = [];\n const filterType: SearchFilterType = this.identifySearchFilter(\n targetTypes,\n formElementName\n );\n const formElement = targetTypes[0].elements.find(el => el.qname === formElementName);\n\n if (elementValue === null) {\n filter.push(\n new SearchFilter(formElementName, SearchFilter.OPERATOR.EQUAL, null)\n );\n } else if (formElement && formElement.classification === 'path') {\n filter.push(\n new SearchFilter(\n formElementName,\n SearchFilter.OPERATOR.MATCH,\n elementValue\n )\n );\n } else if (elementValue instanceof RangeValue) {\n /**\n * create filter for elements that support ranges like DATETIME and NUMBER\n */\n if (\n elementValue.firstValue !== null &&\n elementValue.firstValue !== undefined\n ) {\n filter.push(\n new SearchFilter(\n formElementName,\n elementValue.operator,\n elementValue.firstValue,\n elementValue.secondValue,\n filterType.datetime ? {time: filterType.withtime} : undefined\n )\n );\n }\n } else if ((filterType.multiselect || Array.isArray(elementValue)) && !filterType.table) {\n /**\n * create filter for multiselect elements like CODESYSTEM and ORGANIZATION\n */\n if (Array.isArray(elementValue) && elementValue.length) {\n filter.push(\n new SearchFilter(\n formElementName,\n SearchFilter.OPERATOR.IN,\n elementValue\n )\n );\n }\n } else if (filterType.table) {\n /**\n * create filter(s) for table elements\n */\n const queryRow = elementValue[0];\n Object.keys(queryRow).forEach(function (key) {\n if(queryRow[key] !== undefined){\n const propertyName = `${formElementName}.${key}`;\n if (queryRow[key] instanceof RangeValue) {\n filter.push(\n new SearchFilter(\n propertyName,\n queryRow[key].operator,\n queryRow[key].firstValue,\n queryRow[key].secondValue\n )\n );\n } else {\n filter.push(\n new SearchFilter(\n propertyName,\n Array.isArray(queryRow[key]) ? SearchFilter.OPERATOR.IN : SearchFilter.OPERATOR.EQUAL,\n queryRow[key]\n )\n );\n }\n }\n });\n } else {\n /**\n * default will use equality operator\n */\n filter.push(\n new SearchFilter(\n formElementName,\n SearchFilter.OPERATOR.EQUAL,\n elementValue\n )\n );\n }\n return filter;\n }\n\n /**\n * identifies form elements that are enabled to contain multiple values\n * try to find the form element inside of the provided object types to get its type\n *\n * @param ObjectType[] targetTypes\n * @param string formElementName\n * @return SearchFilterType\n */\n private identifySearchFilter(\n targetTypes: ObjectType[],\n formElementName: string\n ): SearchFilterType {\n let i = 0;\n let match;\n while (!match && i < targetTypes.length) {\n match = targetTypes[i].elements.find(\n element => element.qname === formElementName\n );\n i++;\n }\n\n return {\n multiselect: this.isMultiselectSearchFilter(match),\n table: match && match.type === 'TABLE',\n datetime: match && match.type === 'DATETIME',\n withtime: match && match.withtime\n };\n }\n\n /**\n * identifies form elements that are enabled to contain multiple values\n *\n * @param formElement\n * @return boolean\n */\n private isMultiselectSearchFilter(formElement: any): boolean {\n return (\n formElement &&\n (formElement.type === 'ORGANIZATION' ||\n formElement.type === 'CODESYSTEM' ||\n // ...\n (formElement.type === 'STRING' &&\n formElement.classification === 'selector') ||\n // multiselect reference fields\n (formElement.type === 'STRING' && formElement.multiselect))\n );\n }\n\n /**\n * Creates a SearchResult from the response sent by the server\n *\n * @param backendResponse Server response\n * @returnThe SearchResult SearchResult object created from the server response\n */\n public createResultFromResponse(backendResponse): SearchResult {\n const result = new SearchResult();\n result.suggests = backendResponse.suggest;\n result.fields = backendResponse.config;\n\n /**\n * use hits _id field as id property, because otherwise empty result hits would not contain an id\n */\n const hits = backendResponse.hits.hits.map(h => ({\n ...h._source,\n id: h._id,\n ...(h.snippets && {snippets: h.snippets}),\n // having requested a resolved reference (options) we also pass `_reference` in the result item\n ...(h.references && {_references: h.references}),\n ...(h.context && {context: h.context})\n }));\n\n result.count = backendResponse.hits.total;\n result.hits = hits || [];\n return result;\n }\n\n /**\n * Provides the Resul tField Definition Config\n *\n * @param SearchQuery query\n * @return ({type: ObjectType; contextType: ObjectType})\n */\n getResultFieldDefinitionConfig(query: SearchQuery) {\n const type = (query.types || []).length === 1 ? query.types[0] : null;\n const contextType =\n (query.contextFolderTypes || []).length === 1\n ? query.contextFolderTypes[0]\n : null;\n return {type, contextType};\n }\n\n private resolveConfigTypeNames(\n type: ObjectType | null,\n contextType: ObjectType | null\n ) {\n return {\n typeName: type ? type.qname : 'sysobject',\n contextTypeName: type && contextType ? contextType.qname : undefined\n };\n }\n\n /**\n * Fetches the result field definition for a given object type\n * USER: (default) the result list configuration saved by the current user\n * DEFAULT: the default result list configuration (also returned when there is no user configuration)\n * ALL: all available result fields for the given type (and context)\n *\n * @param ObjectType | null type The object type\n * @param ObjectType | null contextType Object type target types allowed context type\n * @param mode The result lists configuration mode:\n * @return Observable<FieldDefinition>\n */\n fetchResultFieldDefinition(\n type: ObjectType | null,\n contextType: ObjectType | null,\n mode\n ) {\n const {typeName, contextTypeName} = this.resolveConfigTypeNames(\n type,\n contextType\n );\n const url = Utils.buildUri(`/user/config/result/${typeName}`, {\n contexttype: contextTypeName,\n mode\n });\n return this.backend\n .getJson(url)\n .pipe(\n map(\n (res: any) =>\n new FieldDefinition(\n res.elements,\n res.sortorder,\n res.grouporder,\n res.pinned,\n res.alignmentx,\n res.mode\n )\n )\n );\n }\n\n /**\n * Saves a column definition as result or common result.\n *\n * @param ObjectType | null type The object type\n * @param ObjectType | null contextType Object type target types allowed context type\n * @param FieldDefinition data The result list configuration to be persisted\n * @param boolean common Flag enables to set config as default / common result\n * @return Observable<any>\n */\n saveResultFieldDefinition(\n type: ObjectType | null,\n contextType: ObjectType | null,\n data: FieldDefinition,\n common = false\n ) {\n const baseUri = common\n ? '/user/config/commonresult/'\n : '/user/config/result/';\n const {typeName, contextTypeName} = this.resolveConfigTypeNames(\n type,\n contextType\n );\n const url = Utils.buildUri(baseUri + typeName, {\n contexttype: contextTypeName\n });\n return this.backend.post(url, data);\n }\n\n /**\n * Removes a column definition.\n *\n * @param ObjectType | null type The object type\n * @param ObjectType | null contextType Object type target types allowed context type\n * @return Observable<any>\n */\n removeResultFieldDefinition(\n type: ObjectType | null,\n contextType: ObjectType | null\n ) {\n const {typeName, contextTypeName} = this.resolveConfigTypeNames(\n type,\n contextType\n );\n const url = Utils.buildUri(`/user/config/result/${typeName}`, {\n contexttype: contextTypeName\n });\n return this.backend.del(url);\n }\n\n /**\n * Gets the value to be added to a form element by extracting it from a\n * search filter. The kind of value differs based on the form elements type.\n *\n * @param filter The filter to extract value from\n * @param formElementType Form elements type ('STRING', 'DATE', 'CODESYSTEM', ...)\n * @returns the extracted value\n */\n filterToElementValue(filter: SearchFilter, formElementType: string) {\n let value = undefined;\n if (filter) {\n // types that support ranges\n if ((formElementType === 'NUMBER' || formElementType === 'DATETIME') && filter.firstValue) {\n value = new RangeValue(\n filter.operator,\n filter.firstValue,\n filter.secondValue\n );\n } else {\n value = filter.firstValue;\n }\n }\n return value;\n }\n\n /**\n * Creates a table value by extracting the data from the corresponding\n * search filters.\n *\n * @param filters The filters to extract value from\n * @param tableElements the form elements of the table\n * @returns the table value extracted from all filters\n */\n tableFiltersToElementValue(filters: SearchFilter[], tableElements){\n let value = {};\n filters.forEach(f => {\n let key = tableElements.find(e => e.qname === f.property).name;\n let type = tableElements.find(e => e.qname === f.property).type;\n value[key] = this.filterToElementValue(f, type);\n });\n return [value];\n }\n}\n","import {SearchQuery} from '../search/search-query.model';\n\n/**\n * @ignore\n * Interface for the data used for backend communication.\n * This is the kind of data we'll get from the server and we\n * have to provide when sending stored queries to the server.\n */\nexport interface IStoredQuery {\n id: string;\n name: string;\n query: string;\n favorite?: boolean;\n shared?: boolean;\n user?: string;\n version?: number;\n roles?: string[];\n parameter?: string[];\n}\n\n/**\n * @ignore\n * Interface for dynamic parameter properties.\n * Form elements will be transformed to this format to save only\n * required properties\n */\nexport interface IStoredQueryParam {\n qname: string;\n type: string;\n}\n\n/**\n * Stored query is an extension of a SearchQuery. It adds properties like\n * name and a list of dynamic filter properties and the ability to generate\n * an object from its properties that could be pwersisted on the backend side.\n */\nexport class StoredQuery extends SearchQuery {\n\n /**\n * temporary id for new stored queries\n */\n static ID_NEW = 'new';\n\n id: string;\n name: string;\n favorite: boolean;\n shared: boolean;\n /**\n * the username of the user that created this query\n */\n user: string;\n version: number;\n roles: string[];\n parameter: IStoredQueryParam[];\n\n get title() {\n return this.name || '';\n }\n\n constructor(item?: IStoredQuery) {\n super();\n if (!item) {\n this.id = StoredQuery.ID_NEW;\n this.parameter = [];\n } else {\n this.id = item.id;\n this.name = item.name;\n this.favorite = item.favorite;\n this.shared = item.shared;\n this.user = item.user;\n this.version = item.version;\n this.roles = item.roles || [];\n this.parameter = [];\n /**\n * parameters contain meta data for the dynamic fields of the stored query\n * the values of those fields (if set) are part of the queries filters\n */\n if (item.parameter && item.parameter.length > 0) {\n for (let p of item.parameter) {\n try {\n const pObj = JSON.parse(p);\n const param: IStoredQueryParam = {\n qname: pObj.qname,\n type: pObj.type,\n };\n this.parameter.push(param);\n } catch (e) {\n console.error('Failed parsing stored query parameter', e);\n }\n }\n }\n }\n }\n\n /**\n * Adds the properties of a SearchQuery to the current StoredQuery instance.\n * This is used when loading stored queries from the search service and when you\n * want to create a StoredQuery from a SearchQuery.\n * skip `fields` and `sortOptions` properties as they make no sense for stored queries\n *\n * @param searchQuery The search query to copy properties from\n */\n public setQuery(searchQuery: SearchQuery) {\n this.term = searchQuery ? searchQuery.term : '';\n this.types = searchQuery ? searchQuery.types : [];\n this.contextFolderTypes = searchQuery ? searchQuery.contextFolderTypes : [];\n this.filters = searchQuery ? searchQuery.filters : [];\n this.suggest = searchQuery ? searchQuery.suggest : false;\n this.expertMode = searchQuery ? searchQuery.expertMode : false;\n this.scope = searchQuery ? searchQuery.scope : null;\n this.searchMode = searchQuery ? searchQuery.searchMode : 'idx';\n }\n\n /**\n * Convert IStoredQueryParam objects to array of strings\n *\n * @returns IStoredQuery\n */\n toPersistableStoredQuery(): IStoredQuery {\n\n const stringParameter = [];\n this.parameter.forEach(p => stringParameter.push(JSON.stringify(p)));\n\n return {\n id: this.id,\n name: this.name,\n favorite: this.favorite,\n shared: this.shared,\n user: this.user,\n version: this.version,\n roles: this.roles,\n parameter: stringParameter,\n query: JSON.stringify(this.getQueryJson())\n };\n }\n\n /**\n * Check if Query is new or allready Stored\n *\n * @returns boolean\n */\n isNew(): boolean {\n return this.id === StoredQuery.ID_NEW;\n }\n}\n","import {tap, map} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {Observable, BehaviorSubject} from 'rxjs';\nimport {BackendService} from '../backend/backend.service';\nimport {SystemService} from '../system/system.service';\nimport {StoredQueriesSubscription} from './stored-queries-subscription.interface';\nimport {StoredQuery} from './stored-query.model';\nimport {SearchService} from '../search/search.service';\nimport {EventService} from '../events/event.service';\nimport {EnaioEvent} from '../events/events';\n\n/**\n * Service managing stored queries.\n * To use it just call `getStoredQueries$` which will return the current\n * state of the list of stored queries. This one is a long term observable, so bare in mind\n * to unsubscribe from it when you don't need it any more (or your component gets destroyed).\n *\n * Every change to the list of stored queries is done using this service. So don't change the\n * retrieved list locally inside of your component. Otherwise other components that subscribe\n * to the stored query list will not be notified.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class StoredQueriesService {\n\n /**\n * Temporary ID for new stored queries\n */\n static ID_NEW = StoredQuery.ID_NEW;\n /**\n * qname of fulltext params\n */\n static FULLTEXT = 'fulltext';\n\n private storedQueries: StoredQueriesSubscription = {\n queries: []\n };\n private storedQueriesSource = new BehaviorSubject<StoredQueriesSubscription>(this.storedQueries);\n /**\n * Stream of stored queries\n */\n public storedQueries$: Observable<StoredQueriesSubscription> = this.storedQueriesSource.asObservable();\n\n /**\n * @ignore\n */\n constructor(private backend: BackendService,\n private system: SystemService,\n private searchService: SearchService,\n private eventService: EventService) {\n\n eventService\n .on(EnaioEvent.LOGOUT)\n .subscribe(() => this.clear());\n }\n\n /**\n * Clear list of stored queries.\n */\n clear() {\n this.storedQueries = {queries: []};\n this.storedQueriesSource.next(this.storedQueries);\n }\n\n /**\n * Provides you with a `long term observable` holding the stored queries.\n */\n getStoredQueries$(): Observable<StoredQueriesSubscription> {\n if (!this.storedQueries.queries.length) {\n this.refreshStoredQueries();\n }\n return this.storedQueries$;\n }\n\n /**\n * Will re-fetch the data from the backend. This will propagate a\n * new value to your subscription.\n */\n refreshStoredQueries(): void {\n this.backend\n .getJson('/storedqueries?size=9999', this.backend.getSearchBase())\n .pipe(\n map(sQueries => {\n return (sQueries || [])\n .map(s => {\n let sq = new StoredQuery(s);\n /**\n * set up search query properties for the stored query\n */\n sq.setQuery(this.searchService.buildQuery(s.query));\n return sq;\n });\n })\n )\n .subscribe(res => {\n this.storedQueries = {queries: res};\n this.storedQueriesSource.next(this.storedQueries);\n });\n }\n\n /**\n * Fetches the stored queries from the backend and propagates a new\n * value to the main subject.\n */\n fetchStoredQueries(): Observable<StoredQuery[]> {\n\n return this.backend\n .getJson('/storedqueries?size=9999', this.backend.getSearchBase())\n .pipe(\n map(sQueries => {\n return (sQueries || [])\n .map(s => {\n let sq = new StoredQuery(s);\n /**\n * set up search query properties for the stored query\n */\n sq.setQuery(this.searchService.buildQuery(s.query));\n return sq;\n });\n }),\n tap(res => {\n this.storedQueries = {queries: res};\n this.storedQueriesSource.next(this.storedQueries);\n })\n );\n }\n\n /**\n * Save new Stored Query\n *\n * @param StoredQuery storedQuery\n * @return Observable<StoredQuery>\n */\n private saveNewStoredQuery(storedQuery: StoredQuery): Observable<StoredQuery> {\n return this.backend\n .post('/storedqueries', storedQuery.toPersistableStoredQuery(), this.backend.getSearchBase())\n .pipe(\n map(res => {\n let updatedQuery = new StoredQuery(res);\n updatedQuery.setQuery(this.searchService.buildQuery(res.query));\n this.storedQueries.select = updatedQuery.id;\n this.storedQueries.queries.push(updatedQuery);\n this.storedQueriesSource.next(this.storedQueries);\n\n return updatedQuery;\n }));\n }\n\n /**\n * Update Stored Query\n *\n * @param StoredQuery storedQuery\n * @return Observable<StoredQuery>\n */\n private updateStoredQuery(storedQuery: StoredQuery): Observable<StoredQuery> {\n return this.backend\n .put('/storedqueries', storedQuery.toPersistableStoredQuery(), this.backend.getSearchBase())\n .pipe(\n map(res => {\n const updatedQuery = new StoredQuery(res);\n updatedQuery.setQuery(this.searchService.buildQuery(res.query));\n this.storedQueries.select = updatedQuery.id;\n this.storedQueries.queries = this.storedQueries.queries.filter(q => q.id !== updatedQuery.id);\n this.storedQueries.queries.push(updatedQuery);\n this.storedQueriesSource.next(this.storedQueries);\n\n return updatedQuery;\n }));\n }\n\n /**\n * Save a stored query. Depending on whether or not the provided query is a new one or not\n * this will either update or create a new query.\n *\n * @param storedQuery Stored query to be saved\n */\n saveStoredQuery(storedQuery: StoredQuery): Observable<StoredQuery> {\n\n if (storedQuery.id === StoredQueriesService.ID_NEW) {\n return this.saveNewStoredQuery(storedQuery);\n } else {\n return this.updateStoredQuery(storedQuery);\n }\n }\n\n /**\n * Remove Stored Query be provided ID\n * @param id ID of the stored query to be removed\n */\n removeStoredQuery(id: string): Observable<any> {\n return this.backend\n .del(`/storedqueries/${id}`, this.backend.getSearchBase())\n .pipe(\n tap(() => {\n this.storedQueries.select = null;\n this.storedQueries.queries = this.storedQueries.queries.filter(q => q.id !== id);\n this.storedQueriesSource.next(this.storedQueries);\n })\n );\n }\n\n /**\n * Get StoredQuery with the provided Id\n * @param id ID of the stored query to be fetched\n */\n getStoredQuery(id: string): Observable<StoredQuery> {\n return this.backend\n .get(`/storedqueries/${id}`, this.backend.getSearchBase())\n .pipe(\n map(s => {\n let sq = new StoredQuery(s);\n /**\n * set up search query properties for the stored query\n */\n sq.setQuery(this.searchService.buildQuery(s.query));\n return sq;\n })\n );\n }\n\n /**\n * Creates a pseudo form element for a stored queries fulltext input field\n * to be used inside of a stored query form.\n *\n * @param label The label to be set to the element\n * @param value A value to be set to the element\n */\n getFulltextFormElement(label: string, value: string) {\n return {\n name: StoredQueriesService.FULLTEXT,\n qname: StoredQueriesService.FULLTEXT,\n label: label,\n value: value,\n type: 'STRING'\n };\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ReplaySubject, Observable} from 'rxjs';\nimport {UploadTarget} from '../../model/upload-target.model';\nimport {PrepareService} from '../prepare/prepare.service';\nimport {ObjectType} from '../../model/object-type.model';\n\n/**\n * Service for registration of upload targets. Any app component can register itself\n * to retrieve files dragged to the client. This way also plugins are able to fetch and\n * process uploaded files.\n */\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UploadRegistryService {\n\n private _targets: UploadTarget[] = [];\n private targetsSource = new ReplaySubject<UploadTarget[]>(1);\n private overlayActive: boolean;\n /**\n * Stream of currently available upload targets\n */\n public uploadTargets$: Observable<UploadTarget[]> = this.targetsSource.asObservable();\n\n /**\n * @ignore\n */\n constructor(private prepareService: PrepareService) {\n }\n\n setOverlayActive(oa: boolean) {\n this.overlayActive = oa;\n }\n isOverlayActive() {\n return this.overlayActive;\n }\n\n /**\n * Registers a new upload target.\n * If there is an existing target with the same ID it will be updated.\n *\n * @param uploadTarget The target to be registered\n */\n register(uploadTarget: UploadTarget) {\n\n if (uploadTarget.referenceObject) {\n uploadTarget.description = `${(uploadTarget.type === 'object' && uploadTarget.referenceObject?.type?.label) ? `${uploadTarget.referenceObject.type.label}: ` : ''}${uploadTarget.referenceObject.title}`;\n if (uploadTarget.subFolder) {\n this.prepareService.getPrepareChildTypes(uploadTarget.referenceObject.id).subscribe((res) => { \n if (this.isSubFolderAllowed(uploadTarget.subFolder.data, res.types)) {\n uploadTarget.description += '; ' + uploadTarget.subFolder.name;\n }\n });\n }\n }\n\n const target = this._targets.find(t => t.id === uploadTarget.id);\n if (target) {\n Object.assign(target, uploadTarget);\n } else {\n this._targets.push(uploadTarget);\n }\n this.targetsSource.next(this._targets);\n }\n\n /**\n * Checks if it is allowed to drop Files in SubFolders\n *\n * @param subFolder\n * @param ObjectType[] locationTypes\n * @returns boolean\n */\n isSubFolderAllowed(subFolder: any, locationTypes: ObjectType[]): boolean {\n return !!locationTypes.find(lt => lt.name === subFolder.type);\n }\n\n /**\n * Removes an upload target from the list of registered targets.\n *\n * @param uploadTargetId ID of the target to be removed\n */\n unregister(uploadTargetId: string) {\n this._targets = this._targets.filter((t) => t.id !== uploadTargetId);\n this.targetsSource.next(this._targets);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Observable, of} from 'rxjs';\nimport {BackendService} from '../backend/backend.service';\nimport {DmsObject} from '../../model/dms-object.model';\nimport {CapabilitiesService} from '../capabilities/capabilities.service';\n\nexport interface SigningRequest {\n signingPlatform: string;\n emailSubject: string;\n emailBody: string;\n signatureType: string;\n signers: [\n {\n signerName: string,\n signerEmail: string,\n signerPhone?: string,\n signerOrder: string\n }\n ];\n}\n\n/**\n * Collection of Signing Services\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class SigningService {\n\n constructor(private backend: BackendService,\n private capabilities: CapabilitiesService) { }\n\n canSign(): boolean {\n return this.capabilities.getCapabilities().signing;\n }\n\n /**\n * Sign the document of a DMS Object\n * @param id the id of the dms object\n * @param signingData the signing informations\n * @returns Observable<any>\n */\n signDocument(id: string, signingData: SigningRequest) {\n\n const uri = `/request/${id}`;\n return this.canSign ? this.backend.post(uri, signingData, '/signing') : of(null);\n }\n\n /**\n * Gives the setup informations about the configured signing preferences\n * @returns Observable<any>\n */\n getInfo() {\n const uri = `/info`;\n return this.canSign ? this.backend.get(uri, '/signing') : of(null);\n }\n\n /**\n * Cancels the signing process of a DMS Object\n * @param id the id of the dms object\n * @param comment the reason for cancelling\n * @returns Observable<any>\n */\n cancelSigning(id: string, comment: string) {\n const uri = `/cancel/${id}?comment=${comment}`;\n return this.backend.put(uri, null, '/signing');\n }\n\n signatureRequested(item: DmsObject): boolean {\n return !!item.data.yuvsigstatus;\n }\n\n signingInProcess(item: DmsObject): boolean {\n return item.data.yuvsigstatus === 'inprocess';\n }\n}\n","import {Utils} from '../util/utils';\n\nexport class UploadFileItem {\n /**\n * Uniqe File Item Id\n */\n public id: string;\n /**\n * File Item name\n */\n public name: string;\n /**\n * File Item Size\n */\n public size: number;\n /**\n * File Item type\n */\n public type: string;\n /**\n * The File Item itself\n */\n public _file: File;\n\n /**\n * Creates a new instance of UploadFileItem\n *\n * @param id Upload targets unique id\n * @param type Upload targets type\n */\n constructor(file: File) {\n this.id = Utils.uuid();\n this.name = file.name;\n this.size = file.size;\n this.type = file.type;\n this._file = file;\n }\n}\n","/*\n * Public API Surface of core\n */\n\nexport {TranslateModule, TranslateService, TranslateLoader} from '@ngx-translate/core';\nexport * from './lib/eo-core.module';\nexport * from './lib/eo-core-shared.module';\nexport * from './lib/environment.enaio';\n\n/**\n * Services\n */\nexport * from './lib/service/auth/auth.service';\nexport * from './lib/service/backend/backend.service';\nexport * from './lib/service/bpm/bpm.service';\nexport * from './lib/service/cache/app-cache.service';\nexport * from './lib/service/capabilities/capabilities.service';\nexport * from './lib/service/capabilities/capabilities.model';\nexport * from './lib/service/clipboard/clipboard.service';\nexport * from './lib/service/config/config.service';\nexport * from './lib/service/dms/dms.service';\nexport * from './lib/service/events/events';\nexport * from './lib/service/events/event.service';\nexport * from './lib/service/inbox/inbox.service';\nexport * from './lib/service/logger/logger';\nexport * from './lib/service/notifications/notifications.service';\nexport * from './lib/service/prepare/prepare.service';\nexport * from './lib/service/search/search.service';\nexport * from './lib/service/storage/local-storage.service';\nexport * from './lib/service/stored-queries/stored-queries.service';\nexport * from './lib/service/system/system.service';\nexport * from './lib/service/system/systemdefinition.interface';\nexport * from './lib/service/upload/upload.service';\nexport * from './lib/service/upload-registry/upload-registry.service';\nexport * from './lib/service/user/user.service';\nexport * from './lib/service/signing/signing.service';\n\n/**\n * Models\n */\nexport * from './lib/model/baseparams.model';\nexport * from './lib/model/custom-action.model';\nexport * from './lib/model/dms-object.model';\nexport * from './lib/model/eo-error.model';\nexport * from './lib/model/eo-user.model';\nexport * from './lib/model/inbox-item.model';\nexport * from './lib/model/dms-object-history.model';\nexport * from './lib/model/object-type.model';\nexport * from './lib/model/org.model';\nexport * from './lib/model/prepared-item.model';\nexport * from './lib/model/bpm.model';\nexport * from './lib/model/range-value.model';\nexport * from './lib/model/work-item-history.model';\nexport * from './lib/model/upload-file-item.model';\nexport * from './lib/model/upload-target.model';\n\nexport * from './lib/service/search/search-query.model';\nexport * from './lib/model/upload-file-item.model';\nexport * from './lib/model/upload-target.model';\nexport * from './lib/service/stored-queries/stored-query.model';\n\n/**\n * Interfaces\n */\nexport * from './lib/service/dms/dmsParams.interface';\nexport * from './lib/service/clipboard/clipboard.interface';\nexport * from './lib/service/system-status/system.status.interface';\nexport * from './lib/interface/logger.interface';\nexport * from './lib/interface/change-password.interface';\nexport * from './lib/interface/event.interface';\nexport * from './lib/interface/http-options.interface';\nexport * from './lib/interface/organization-objects.interface';\nexport * from './lib/interface/tree-node.interface';\n\n/**\n * Config\n */\nexport * from './lib/config/core-config';\nexport * from './lib/config/core-init.service';\nexport * from './lib/config/core-init.tokens';\nexport * from './lib/config/initialize-module';\nexport * from './lib/config/missing-translation-handler';\nexport * from './lib/config/translate-json-loader';\n\n/**\n * Miscellaneous\n */\nexport * from './lib/service/clipboard/clipboard-action.enum';\nexport * from './lib/service/system-status/system.status.enum';\nexport * from './lib/service/config/config.enum';\nexport * from './lib/util/utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["observableEmpty","observableThrowError","i2.EventService","observableOf","i2.Logger","i3.Config","i1","observableForkJoin","i1.BackendService","i3.EventService","i4.AppCacheService","i1.SystemService","i1.CapabilitiesService","i2.BackendService","i4.InboxService","i2","i3.Logger","i4.EventService","i5.SystemService","i6","i7.Config","i2.UserService","i2.UploadService","i1.EventService","i3.AppCacheService","i3.BpmService","i4.CapabilitiesService","i5.InboxService","i6.PrepareService","i7.BackendService","i8.SystemService","i9.UserService","i10.EventService","i11.SystemStatusService","i12","i13.LocalStorageService","i1.Logger","i4.AuthService","i1.AuthService","i2.SystemService","i3.SearchService","i1.PrepareService","i2.CapabilitiesService"],"mappings":"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"}