@esfaenza/admin-module 20.3.9 → 20.3.11
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esfaenza-admin-module.mjs","sources":["../../../projects/admin-feature/src/lib/models/components/AuditsView.ts","../../../projects/admin-feature/src/lib/tokens.ts","../../../projects/admin-feature/src/lib/components/audits/adm_audits.component.loc.ts","../../../projects/admin-feature/src/lib/services/admin-feature.base.service.ts","../../../projects/admin-feature/src/lib/components/audits/adm_audits.component.ts","../../../projects/admin-feature/src/lib/components/audits/adm_audits.component.html","../../../projects/admin-feature/src/lib/models/shared/KeyValue.ts","../../../projects/admin-feature/src/lib/models/components/ProcessesView.ts","../../../projects/admin-feature/src/lib/components/workers/adm_wrk.component.loc.ts","../../../projects/admin-feature/src/lib/components/workers/adm_wrk.component.ts","../../../projects/admin-feature/src/lib/components/workers/adm_wrk.component.html","../../../projects/admin-feature/src/lib/models/components/ProfilerDataNode.loc.ts","../../../projects/admin-feature/src/lib/models/components/ProfilerDataNode.ts","../../../projects/admin-feature/src/lib/models/components/ProfilerDataNodesView.ts","../../../projects/admin-feature/src/lib/components/profiler/adm_profiler.component.loc.ts","../../../projects/admin-feature/src/lib/components/_shared/node_detail.component.loc.ts","../../../projects/admin-feature/src/lib/components/_shared/node_detail.component.ts","../../../projects/admin-feature/src/lib/components/_shared/node_detail.component.html","../../../projects/admin-feature/src/lib/components/profiler/adm_profiler.component.ts","../../../projects/admin-feature/src/lib/components/profiler/adm_profiler.component.html","../../../projects/admin-feature/src/lib/models/components/TopActivitiesDataView.ts","../../../projects/admin-feature/src/lib/components/topact/topact_search.component.loc.ts","../../../projects/admin-feature/src/lib/components/topact/topact_search.component.ts","../../../projects/admin-feature/src/lib/components/topact/topact_search.component.html","../../../projects/admin-feature/src/lib/models/components/LocksView.ts","../../../projects/admin-feature/src/lib/components/enqueues/adm_enq.component.loc.ts","../../../projects/admin-feature/src/lib/components/enqueues/adm_enq.component.ts","../../../projects/admin-feature/src/lib/components/enqueues/adm_enq.component.html","../../../projects/admin-feature/src/lib/models/components/MetricsView.ts","../../../projects/admin-feature/src/lib/components/metrics/metrics_search.component.loc.ts","../../../projects/admin-feature/src/lib/components/metrics/metrics_search.component.ts","../../../projects/admin-feature/src/lib/components/metrics/metrics_search.component.html","../../../projects/admin-feature/src/lib/components/logs/adm_logs.component.loc.ts","../../../projects/admin-feature/src/lib/components/logs/adm_logs.component.ts","../../../projects/admin-feature/src/lib/components/logs/adm_logs.component.html","../../../projects/admin-feature/src/lib/models/components/DynamicViewsView.ts","../../../projects/admin-feature/src/lib/components/dynamic_views/adm_dynamic_views.component.loc.ts","../../../projects/admin-feature/src/lib/components/dynamic_views/adm_dynamic_views.component.ts","../../../projects/admin-feature/src/lib/components/dynamic_views/adm_dynamic_views.component.html","../../../projects/admin-feature/src/lib/models/components/QueryView.ts","../../../projects/admin-feature/src/lib/components/mtd_query/mtd_query.component.loc.ts","../../../projects/admin-feature/src/lib/components/mtd_query/mtd_query.component.ts","../../../projects/admin-feature/src/lib/components/mtd_query/mtd_query.component.html","../../../projects/admin-feature/src/lib/models/components/SystemParametersView.ts","../../../projects/admin-feature/src/lib/components/syspars/adm_syspars.component.loc.ts","../../../projects/admin-feature/src/lib/components/syspars/adm_syspars.component.ts","../../../projects/admin-feature/src/lib/components/syspars/adm_syspars.component.html","../../../projects/admin-feature/src/lib/pipes/format_time.pipe.ts","../../../projects/admin-feature/src/lib/admin-feature-messages.ts","../../../projects/admin-feature/src/lib/admin-feature.comms.service.ts","../../../projects/admin-feature/src/lib/admin-feature.module.ts","../../../projects/admin-feature/src/public-api.ts","../../../projects/admin-feature/src/esfaenza-admin-module.ts"],"sourcesContent":["import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { Audit } from \"./Audit\";\r\n\r\nexport class AuditsView extends AppSearch<Audit> {\r\n constructor() {\r\n super();\r\n this.filteraction = '';\r\n this.filterhttp = '';\r\n }\r\n\r\n filterda: string;\r\n filtera: string;\r\n filteruser: string;\r\n filterroute: string;\r\n filteraction: string;\r\n filteraddress: string;\r\n filterhttp: string;\r\n filterargs: string;\r\n filterobjid: string;\r\n filterobjtype: string;\r\n filterconversationid: string;\r\n filterhttpcode: string;\r\n}","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const ADM_MODULE_PATH: InjectionToken<string> = new InjectionToken<string>('ADM_MODULE_PATH');\r\nexport const ADM_CONVERSATIONS: InjectionToken<boolean> = new InjectionToken<boolean>('ADM_CONVERSATIONS');","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmAuditLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Ricerca Audit Applicativi\", [\"Search Application Audits\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Chiamata REST\", [\"REST Call\"]);\r\n super.set(\"it->en\", \"Aggiornamento\", [\"Update\"]);\r\n super.set(\"it->en\", \"Route\", [\"Route\"]);\r\n super.set(\"it->en\", \"Azione\", [\"Action\"]);\r\n super.set(\"it->en\", \"Metodo HTTP\", [\"HTTP Method\"]);\r\n super.set(\"it->en\", \"Argomenti\", [\"Arguments\"]);\r\n super.set(\"it->en\", \"ID Oggetto\", [\"Object ID\"]);\r\n super.set(\"it->en\", \"Tipo Oggetto\", [\"Object Type\"]);\r\n super.set(\"it->en\", \"Dati Oggetto\", [\"Object Data\"]);\r\n super.set(\"it->en\", \"Carico gli Audit dell'Applicazione\", [\"Loading Application Audits\"]);\r\n super.set(\"it->en\", \"Data\", [\"Date\"]);\r\n super.set(\"it->en\", \"Indirizzo\", [\"Address\"]);\r\n super.set(\"it->en\", \"Risposta HTTP\", [\"HTTP Response\"]);\r\n super.set(\"it->en\", \"Codice Errore Applicativo\", [\"Application Error Code\"]);\r\n super.set(\"it->en\", \"Cod. Conversation\", [\"Conversation ID\"]);\r\n }\r\n}","// Angular\r\nimport { Injectable, Injector } from \"@angular/core\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\n\r\n// ES\r\nimport { CallResult, MessageService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Configurazioni\r\nimport { ProcessesView } from \"../models/components/ProcessesView\";\r\nimport { firstValueFrom, catchError, of } from \"rxjs\";\r\nimport { KeyValue } from \"@esfaenza/core/domain\";\r\nimport { TopActivitiesDataView } from \"../models/components/TopActivitiesDataView\";\r\nimport { DirectorInfos } from \"../models/components/DirectorInfos\";\r\nimport { NodeStats } from \"../models/components/NodeStats\";\r\nimport { SessionStats } from \"../models/components/SessionStats\";\r\nimport { ProfilerDataNodesView } from \"../models/components/ProfilerDataNodesView\";\r\nimport { MetricsView } from \"../models/components/MetricsView\";\r\nimport { Metric } from \"../models/components/Metric\";\r\nimport { LocksView } from \"../models/components/LocksView\";\r\nimport { DynamicViewsView } from \"../models/components/DynamicViewsView\";\r\nimport { AuditsView } from \"../models/components/AuditsView\";\r\nimport { QueryView } from \"../models/components/QueryView\";\r\nimport { SystemParametersView } from \"../models/components/SystemParametersView\";\r\nimport { SystemParameters } from \"../models/components/SystemParameters\";\r\n\r\n// Chiamate ai Repository\r\nconst GET_Director_ChangeProcessConsumerGroup: string = \"/api/Director/ChangeProcessConsumerGroup\";\r\nconst GET_Director_GetConsumerGroups: string = \"/api/Director/GetConsumerGroups#cache\";\r\nconst GET_Director_GetInfos: string = \"/api/Director/GetInfos\";\r\nconst GET_Director_GetMetrics: string = \"/api/Director/GetMetrics\";\r\nconst POST_Director_GetMetrics: string = \"/api/Director/GetMetrics\";\r\nconst POST_Director_GetProfilerDataNodes: string = \"/api/Director/GetProfilerDataNodes\";\r\nconst GET_Director_GetWorkloadReport: string = \"/api/Director/GetWorkloadReport\";\r\nconst POST_Director_GetServerAudits: string = \"/api/Director/GetServerAudits\";\r\nconst POST_Director_GetDynamicViewData: string = \"/api/Director/GetDynamicViewData\";\r\nconst POST_Director_GetServerLocks: string = \"/api/Director/GetServerLocks\";\r\nconst POST_Director_GetServerQuery: string = \"/api/Director/GetServerQuery\";\r\nconst GET_Director_GetServerLogs: string = \"/api/Director/GetServerLogs\";\r\nconst GET_Director_GetDynamicViews: string = \"/api/Director/GetDynamicViews\";\r\nconst POST_Director_GetServerWorkers: string = \"/api/Director/GetServerWorkers\";\r\nconst POST_Director_GetTopActivities: string = \"/api/Director/GetTopActivities\";\r\nconst GET_Director_KillProcess: string = \"/api/Director/KillProcess\";\r\nconst GET_Director_SetProcessTracing: string = \"/api/Director/SetProcessTracing\";\r\nconst GET_Director_GetNodeStats: string = \"/api/Director/GetNodeStats\";\r\nconst GET_Director_GetSessionStats: string = \"/api/Director/GetSessionStats\";\r\nconst POST_Director_GetSystemParameters: string = \"/api/Director/GetSystemParameters\";\r\nconst POST_Director_UpdatSystemParameter: string = \"/api/Director/UpdatSystemParameter\";\r\nconst GET_Director_ResetSystemParameter: string = \"/api/Director/ResetSystemParameter\";\r\nconst GET_Director_GetInstances: string = \"/api/Director/GetInstances\";\r\nconst GET_Director_GetLogTargets: string = \"/api/Director/GetLogTargets\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AdminModuleBaseService {\r\n public http: HTTPService;\r\n public msgExts: MessageService;\r\n\r\n constructor(private injector: Injector) {\r\n this.http = this.injector.get(HTTPService);\r\n this.msgExts = this.injector.get(MessageService);\r\n }\r\n\r\n public async getServerWorkers(be: string, sv: ProcessesView): Promise<ProcessesView> {\r\n var pars = new HttpParams().set(\"be\", be);\r\n\r\n let ret: ProcessesView = await firstValueFrom(this.http.post<ProcessesView>(POST_Director_GetServerWorkers, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async doSetProcessTracing(be: string, instanceid: string, sid: string, serial: string, enable: string): Promise<string> {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", instanceid ?? \"\")\r\n .set(\"sid\", sid ?? \"\")\r\n .set(\"serial\", serial ?? \"\")\r\n .set(\"enable\", enable ?? \"\")\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_SetProcessTracing, pars));\r\n return ret;\r\n }\r\n\r\n public async doKillProcess(be: string, instanceid: string, sid: string, serial: string): Promise<string> {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", instanceid ?? \"\")\r\n .set(\"sid\", sid ?? \"\")\r\n .set(\"serial\", serial ?? \"\")\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_KillProcess, pars));\r\n return ret;\r\n }\r\n\r\n public async doChangeProcessConsumerGroup(be: string, instanceid: string, sid: string, serial: string, consumerGroup: string): Promise<string> {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", instanceid ?? \"\")\r\n .set(\"sid\", sid ?? \"\")\r\n .set(\"serial\", serial ?? \"\")\r\n .set(\"consumer_group\", consumerGroup ?? \"\")\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_ChangeProcessConsumerGroup, pars));\r\n return ret;\r\n }\r\n\r\n public async getConsumerGroups(be: string): Promise<KeyValue[]> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetConsumerGroups, pars));\r\n return ret;\r\n }\r\n\r\n public async getServerLogs(be: string, from: string, to: string, instance: string, target: string): Promise<string> {\r\n var pars = new HttpParams().set(\"from\", from ?? \"\").set(\"to\", to ?? \"\").set(\"instance\", instance ?? \"\").set(\"target\", target ?? \"\").set(\"be\", be ?? \"\");\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_GetServerLogs, pars));\r\n return ret;\r\n }\r\n\r\n public async getTopActivities(be: string, sv: TopActivitiesDataView): Promise<TopActivitiesDataView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: TopActivitiesDataView = await firstValueFrom(this.http.post<TopActivitiesDataView>(POST_Director_GetTopActivities, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getInfos(be: string): Promise<DirectorInfos> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: DirectorInfos = await firstValueFrom(this.http.get<DirectorInfos>(GET_Director_GetInfos, pars, null, false).pipe(catchError(_ => of(null as DirectorInfos))));\r\n return ret;\r\n }\r\n\r\n public async getNodeStats(be: string, nodeId: string, global: boolean = false): Promise<NodeStats> {\r\n let pars = new HttpParams().set(\"nodeId\", nodeId ?? \"\").set(\"be\", be ?? \"\").set(\"global\", global);\r\n let ret: NodeStats = await firstValueFrom(this.http.get<NodeStats>(GET_Director_GetNodeStats, pars));\r\n return ret;\r\n }\r\n\r\n public async getSessionStats(be: string, sid: string, serial: string, instance: string): Promise<SessionStats> {\r\n let pars = new HttpParams().set('sid', sid ?? \"\").set('serial', serial ?? \"\").set('instanceid', instance ?? \"\").set(\"be\", be ?? \"\");\r\n let ret: SessionStats = await firstValueFrom(this.http.get<SessionStats>(GET_Director_GetSessionStats, pars));\r\n return ret;\r\n }\r\n\r\n public async getProfilerDataNodes(be: string, sv: ProfilerDataNodesView): Promise<ProfilerDataNodesView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: ProfilerDataNodesView = await firstValueFrom(this.http.post<ProfilerDataNodesView>(POST_Director_GetProfilerDataNodes, sv, pars));\r\n return ret;\r\n }\r\n\r\n public downloadWorkloadReport(be: string, from: string, to: string, global: boolean = false) {\r\n let pars = new HttpParams().set(\"from\", from ?? \"\").set(\"to\", to ?? \"\").set(\"be\", be ?? \"\").set(\"global\", global);\r\n this.http.getFileNative(GET_Director_GetWorkloadReport, pars);\r\n }\r\n\r\n public async getMetrics(be: string, sv: MetricsView): Promise<MetricsView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: MetricsView = await firstValueFrom(this.http.post<MetricsView>(POST_Director_GetMetrics, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getMetricsList(be: string, from: string, to: string): Promise<Metric[]> {\r\n let pars = new HttpParams()\r\n .set(\"from\", from ?? \"\")\r\n .set(\"to\", to ?? \"\")\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: Metric[] = await firstValueFrom(this.http.get<Metric[]>(GET_Director_GetMetrics, pars));\r\n return ret.sort((a, b) => a.name.localeCompare(b.name));\r\n }\r\n\r\n public async getServerLocks(be: string, sv: LocksView): Promise<LocksView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: LocksView = await firstValueFrom(this.http.post<LocksView>(POST_Director_GetServerLocks, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getServerQuery(be: string, sv: QueryView): Promise<QueryView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: QueryView = await firstValueFrom(this.http.post<QueryView>(POST_Director_GetServerQuery, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getDynamicViewData(be: string, sv: DynamicViewsView): Promise<DynamicViewsView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: DynamicViewsView = await firstValueFrom(this.http.post<DynamicViewsView>(POST_Director_GetDynamicViewData, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getDynamicViews(be: string): Promise<KeyValue[]> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetDynamicViews, pars));\r\n return ret;\r\n }\r\n\r\n public async getServerAudits(be: string, sv: AuditsView): Promise<AuditsView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: AuditsView = await firstValueFrom(this.http.post<AuditsView>(POST_Director_GetServerAudits, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getSystemParameters(be: string, sv: SystemParametersView): Promise<SystemParametersView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: SystemParametersView = await firstValueFrom(this.http.post<SystemParametersView>(POST_Director_GetSystemParameters, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getInstances(be: string): Promise<KeyValue[]> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetInstances, pars));\r\n return ret;\r\n }\r\n\r\n \r\n public async getLogTargets(be: string, instance: string): Promise<KeyValue[]> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\").set(\"instance\", instance ?? \"\");\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetLogTargets, pars));\r\n return ret;\r\n }\r\n\r\n public async updateSystemParameter(be: string, dto: SystemParameters): Promise<string> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: string = await firstValueFrom(this.http.post<string>(POST_Director_UpdatSystemParameter, dto, pars));\r\n return ret;\r\n }\r\n\r\n public async resetSystemParameter(be: string, parId: string, level: string): Promise<string> {\r\n let pars = new HttpParams()\r\n .set(\"parId\", parId)\r\n .set(\"level\", level)\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_ResetSystemParameter, pars));\r\n return ret;\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { InterComService, InboundMessageTypes, ClipboardService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { AuditsView } from \"../../models/components/AuditsView\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { ADM_MODULE_PATH, ADM_CONVERSATIONS } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmAuditLoc } from \"./adm_audits.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"adm_audits\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }],\r\n templateUrl: \"./adm_audits.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmAuditsComponent {\r\n\r\n public searchView: AuditsView = new AuditsView();\r\n public Actions: KeyValue[] = [];\r\n public HttpMethods: KeyValue[] = [];\r\n public searchInProgress: boolean = false;\r\n public storageSub: any;\r\n\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private intercom: InterComService,\r\n private localStorage: PreferencesService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n public exts: ClipboardService,\r\n @Inject(ADM_MODULE_PATH) private mod: string,\r\n @Inject(ADM_CONVERSATIONS) public usesConversations: boolean) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n\r\n this.HttpMethods = [\r\n { id: \"GET\", description: \"GET\" },\r\n { id: \"POST\", description: \"POST\" },\r\n { id: \"PUT\", description: \"PUT\" },\r\n { id: \"PATCH\", description: \"PATCH\" },\r\n { id: \"DELETE\", description: \"DELETE\" }\r\n ];\r\n\r\n this.Actions = [\r\n { id: \"C\", description: this.lc.loc(\"Chiamata REST\") },\r\n { id: \"U\", description: this.lc.loc(\"Aggiornamento\") },\r\n { id: \"D\", description: this.lc.loc(\"Elimina\") }\r\n ];\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<AuditsView>(\"HotAudittato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serveraudits`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotAudittato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: AuditsView) {\r\n //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti\r\n //Altirmenti genero il modello nuovo normalmente\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetProcesses(this.searchView);\r\n }\r\n else {\r\n this.searchView = new AuditsView();\r\n this.searchView.filterda = dayjs().add(-1, \"month\").format(this.lc.token(\"getSmallDateFormat\"));\r\n this.searchView.filtera = dayjs().format(this.lc.token(\"getSmallDateFormat\"));\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchInProgress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetProcesses(this.searchView);\r\n }\r\n\r\n async POSTGetProcesses(data: AuditsView) {\r\n this.searchView = await this.adms.getServerAudits(this.be, data);\r\n this.searchInProgress = false;\r\n this.localStorage.setItem(\"HotAudittato\", this.searchView).subscribe();\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Ricerca Audit Applicativi' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row\">\n <div class=\"col-md-11\">\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'Da' | localize: lc\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'A' | localize: lc\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'Utente' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteraddress\" name=\"filteraddress\" [Placeholder]=\"'Indirizzo' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [Placeholder]=\"'Azione' | localize: lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\n </div>\n </div>\n <div class=\"col-md-12 row app-no-padding\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [Placeholder]=\"'Metodo HTTP' | localize: lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Argomenti' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'ID Oggetto' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Tipo Oggetto' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterhttpcode\" name=\"filterhttpcode\" [Placeholder]=\"'Risposta HTTP' | localize: lc\"></form-input>\n </div>\n <!-- Per ora commentato -->\n <!-- <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" *ngIf=\"usesConversations\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterconversationid\" name=\"filterconversationid\" [Placeholder]=\"'Cod. Conversation' | localize: lc\"></form-input>\n </div> -->\n </div>\n </div>\n <div class=\"col-md-1 app-no-padding\">\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </div>\n </form>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico gli Audit dell\\'Applicazione' | localize: lc}}...</em></p>\n }\n @if (searchView) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [MultipleOrderingDirectives]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\n <span *th=\"'Timestamp'\">{{'Data' | localize: lc}}</span>\n <span *th=\"'User'\">{{'Utente' | localize: lc}}</span>\n <span *th=\"'RemoteAddress'\">{{'Indirizzo' | localize: lc}}</span>\n <span *th=\"'Action'\">{{'Azione' | localize: lc}}</span>\n <span *th=\"'HttpMethod'\">{{'Metodo HTTP' | localize: lc}}</span>\n <span *th=\"'Route'\">{{'Route' | localize : lc}}</span>\n <span *th=\"'Args'\">{{'Argomenti' | localize: lc}}</span>\n <span *th=\"'HttpResponse'\">{{'Risposta HTTP' | localize: lc}}</span>\n <span *th=\"'NonStdErrorMessage'\">{{'Codice Errore Applicativo' | localize: lc}}</span>\n <span *th=\"'ConvId'; If: usesConversations\">{{'Cod. Conversation' | localize: lc}}</span>\n <span *th=\"'ObjectType'\">{{'Tipo Oggetto' | localize: lc}}</span>\n <span *th=\"'ObjectId'\">{{'ID Oggetto' | localize: lc}}</span>\n <span *th=\"'ObjectData'\">{{'Dati Oggetto' | localize: lc}}</span>\n <strong *td=\"'Timestamp'; let item\">{{item.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong>\n <span *td=\"'User'; let item\">{{item.user}}</span>\n <span *td=\"'RemoteAddress'; let item\">{{item.address}}</span>\n <span *td=\"'Action'; let item\">{{item.action}}</span>\n <span *td=\"'HttpMethod'; let item\">{{item.httpmethod}}</span>\n <span *td=\"'Route'; let item\">{{item.route}}</span>\n <span *td=\"'Args'; let item\" class=\"app-pointer\" title=\"Click per copiarlo nella clipboard\" (click)=\"exts.copyTextToClipboard(item.args)\">{{item.args}}</span>\n <span *td=\"'HttpResponse'; let item\">{{item.httpresponse}}</span>\n <span *td=\"'NonStdErrorMessage'; let item\">{{item.mdmerrorcode}}</span>\n <span *td=\"'ConvId'; If: usesConversations; let item\">{{item.conversationid}}</span>\n <span *td=\"'ObjectType'; let item\">{{item.objecttype}}</span>\n <span *td=\"'ObjectId'; let item\">{{item.objectid}}</span>\n <span *td=\"'ObjectData'; let item\">{{item.objectdata}}</span>\n </es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n</div>","export class KeyValue {\r\n constructor(public id: string, public description: string) { }\r\n}","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class ProcessesView extends AppSearch<GenericItem> {\r\n constructor() { super(); }\r\n\r\n filtertenant: string;\r\n filteruser: string;\r\n filterstate: string;\r\n filterglobal: boolean;\r\n filtertype: string;\r\n filterthreadtype: string;\r\n filterthreadstatus: string;\r\n filterinwait: boolean;\r\n filtersid: string;\r\n filtertid: string;\r\n filtermtid: string;\r\n filterdcid: boolean;\r\n\r\n filterbe: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmWrkLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Gruppo di Consumo modificato con successo\", [\"Consumer Group succesfully changed\"]);\r\n super.set(\"it->en\", \"Errori nella modifica del Gruppo di Consumo\", [\"Errors changing Consumer Group\"]);\r\n super.set(\"it->en\", \"Modifica Gruppo di Consumo\", [\"Change Consumer Group\"]);\r\n super.set(\"it->en\", \"Nuovo Gruppo di Consumo\", [\"New Consumer Group\"]);\r\n super.set(\"it->en\", \"Tipo Thread\", [\"Thread Type\"]);\r\n super.set(\"it->en\", \"Stato Thread\", [\"Thread Status\"]);\r\n super.set(\"it->en\", \"Tipo\", [\"Type\"]);\r\n super.set(\"it->en\", \"Stato\", [\"State\"]);\r\n super.set(\"it->en\", \"SID\", [\"SID\"]);\r\n super.set(\"it->en\", \"TID\", [\"TID\"]);\r\n super.set(\"it->en\", \"In Attesa\", [\"In Wait\"]);\r\n super.set(\"it->en\", \"Push dedicato connesso\", [\"Dedicated push connected\"]);\r\n super.set(\"it->en\", \"Ricerca globale\", [\"Global search\"]);\r\n super.set(\"it->en\", \"Ricerca Processi Applicativi\", [\"Search Application Processes\"]);\r\n super.set(\"it->en\", \"Tenant\", [\"Tenant\"]);\r\n super.set(\"it->en\", \"Errori nella modifica del Tracing del Processo\", [\"Errors toggling Process Tracing\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Carico i Processi Applicativi\", [\"Loading Application Processes\"]);\r\n super.set(\"it->en\", \"Attiva Tracing Processo\", [\"Activate Process Tracing\"]);\r\n super.set(\"it->en\", \"Disattiva Tracing Progetto\", [\"Deactivate Process Tracing\"]);\r\n super.set(\"it->en\", \"Ammazza Processo\", [\"Kill Process\"]);\r\n super.set(\"it->en\", \"Errori durante la Kill del Processo\", [\"Errors killing the Process\"]);\r\n super.set(\"it->en\", \"Processo ucciso con successo\", [\"Process succesfully killed\"]);\r\n super.set(\"it->en\", \"Conferma Terminazione del Processo\", [\"Confirm Process Kill\"]);\r\n super.set(\"it->en\", \"Sei sicuro di voler Terminare il processo selezionato? L'utente relativo sara' disconnesso\", [\"Are you sure you wish to kill the selected process? The associated user will be disconnected\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { NgForm } from \"@angular/forms\";\r\n\r\n// Configurazioni\r\nimport { InboundMessageTypes, InterComService, MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { EsTableOperationDefinition } from \"@esfaenza/es-table\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { ModalDirective } from \"ngx-bootstrap/modal\";\r\n\r\n// Applicazione\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { ProcessesView } from \"../../models/components/ProcessesView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmWrkLoc } from \"./adm_wrk.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { GenericItem } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"adm_wrk\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmWrkLoc }],\r\n templateUrl: \"./adm_wrk.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmWrkComponent {\r\n\r\n private globalFilterValue = null;\r\n\r\n public searchView: ProcessesView = new ProcessesView();\r\n public DynamicOps: EsTableOperationDefinition[] = [];\r\n public storageSub: any;\r\n public valueToShow: string = \"\";\r\n\r\n public Types: KeyValue[] = [];\r\n public States: KeyValue[] = [];\r\n public ThreadTypes: KeyValue[] = [];\r\n public ThreadStatuses: KeyValue[] = [];\r\n\r\n private be: string;\r\n constructor(\r\n private utiExts: UtilityService,\r\n private msgExts: MessageService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.DynamicOps = [\r\n new EsTableOperationDefinition(\"trace_on\", this.lc.loc(\"Attiva Tracing Processo\"), \"fa fa-circle text-danger\", \"\", \"trace_enabled\", \"N\"),\r\n new EsTableOperationDefinition(\"trace_off\", this.lc.loc(\"Disattiva Tracing Progetto\"), \"fa fa-circle text-success\", \"\", \"trace_enabled\", \"Y\"),\r\n new EsTableOperationDefinition(\"kill\", this.lc.loc(\"Ammazza Processo\"), \"fa fa-ban text-danger\"),\r\n new EsTableOperationDefinition(\"change_cg\", this.lc.loc(\"Modifica Gruppo di Consumo\"), \"fa fa-edit text-info\")\r\n ];\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n Init(ignoreStorage) {\r\n this.Types = [new KeyValue(\"USER\", \"USER\"), new KeyValue(\"BACKGROUND\", \"BACKGROUND\"), new KeyValue(\"JOB\", \"JOB\")];\r\n this.States = [new KeyValue(\"ACTIVE\", \"ACTIVE\"), new KeyValue(\"INACTIVE\", \"INACTIVE\"), new KeyValue(\"KILLED\", \"KILLED\")];\r\n this.ThreadTypes = [\"APITHREAD\", \"APIPUSHTHREAD\", \"BACKGROUNDTHREAD\", \"JOBTHREAD\", \"PARALLELSLAVETHREAD\"].map(t => new KeyValue(t, t));\r\n this.ThreadStatuses = [\"ACTIVE\", \"IDLE\", \"THROTTLING\", \"KILLED\"].map(t => new KeyValue(t, t));\r\n this.doInit(ignoreStorage);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<ProcessesView>(\"HotProcessato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverworkers`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotProcessato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: ProcessesView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetServerWorkers();\r\n }\r\n else {\r\n this.searchView = new ProcessesView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n this.searchView.columns = [];\r\n this.searchView.column_ordering = [];\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetServerWorkers();\r\n }\r\n\r\n async POSTGetServerWorkers() {\r\n // Switch cattivo per resettare la tabella quando cambia il global (dato che potrebbero cambiare le colonne)\r\n // La casistica è esplicitamente non supportata dall'estable quindi abbozzo un hard refresh da qui...\r\n if (this.globalFilterValue != null && this.globalFilterValue != this.searchView.filterglobal) {\r\n let prevSearchView = this.utiExts.deepClone(this.searchView);\r\n this.searchView = null;\r\n requestAnimationFrame(async () => {\r\n this.globalFilterValue = prevSearchView.filterglobal;\r\n this.searchView = await this.adms.getServerWorkers(this.be, prevSearchView);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotProcessato\", this.searchView).subscribe();\r\n });\r\n }\r\n else {\r\n this.globalFilterValue = this.searchView.filterglobal || false;\r\n this.searchView = await this.adms.getServerWorkers(this.be, this.searchView);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotProcessato\", this.searchView).subscribe();\r\n }\r\n }\r\n\r\n async prepareExport(callback) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let tmp = await this.adms.getServerWorkers(this.be, view);\r\n callback(tmp.items, GenericItem);\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n onOperation(event: { id: string, item: any }) {\r\n switch (event.id) {\r\n case \"trace_on\": this.toggleTracing(event.item, true); break;\r\n case \"trace_off\": this.toggleTracing(event.item, false); break;\r\n case \"kill\": this.killProcess(event.item); break;\r\n case \"change_cg\": this.changeProcessCg(event.item); break;\r\n }\r\n }\r\n\r\n async toggleTracing(process: any, tracing: boolean) {\r\n let res = await this.adms.doSetProcessTracing(this.be, (process.properties[\"inst_id\"] || process.properties[\"INST_ID\"] || \"\"), process.properties[\"sid\"] || process.properties[\"SID\"], process.properties[\"serial\"] || process.properties[\"SERIAL\"], tracing.toString());\r\n this.msgExts.manageStringResponse(res, \"\", this.lc.loc(\"Errori nella modifica del Tracing del Processo\"), () => this.sendSearch());\r\n }\r\n\r\n killProcess(process: any) {\r\n this.msgExts.simpleWarningWithChoice(\r\n this.lc.loc(\"Conferma Terminazione del Processo\"),\r\n this.lc.loc(\"Sei sicuro di voler Terminare il processo selezionato? L'utente relativo sara' disconnesso\"),\r\n async () => {\r\n let res = await this.adms.doKillProcess(this.be, (process.properties[\"inst_id\"] || process.properties[\"INST_ID\"] || \"\"), process.properties[\"sid\"] || process.properties[\"SID\"], process.properties[\"serial\"] || process.properties[\"SERIAL\"]);\r\n this.msgExts.manageStringResponse(res, this.lc.loc(\"Processo ucciso con successo\"), this.lc.loc(\"Errori durante la Kill del Processo\"), () => this.sendSearch());\r\n });\r\n }\r\n\r\n //********************************************** Gestione modifica Consumer Group ***************************************\r\n\r\n newCg: string = \"\";\r\n CGs: KeyValue[] = [];\r\n CgDictionariesLoaded: boolean = false;\r\n ProcessOnEdit: any;\r\n\r\n @ViewChild(\"cgFrom\") cgFrom: NgForm;\r\n @ViewChild(\"dlgChangeCg\") dlgChangeCg: ModalDirective;\r\n\r\n changeProcessCg(process: any) {\r\n this.ProcessOnEdit = process;\r\n if (!this.CgDictionariesLoaded) {\r\n this.loadCgDictionaries();\r\n this.CgDictionariesLoaded = true;\r\n }\r\n this.setupChangeCg();\r\n this.dlgChangeCg.show();\r\n }\r\n\r\n async loadCgDictionaries() {\r\n this.CGs = await this.adms.getConsumerGroups(this.be);\r\n }\r\n\r\n setupChangeCg() {\r\n this.utiExts.cleanForm(this.cgFrom)\r\n setTimeout(() => { this.newCg = \"\" });\r\n }\r\n\r\n async doChangeCg() {\r\n let res = await this.adms.doChangeProcessConsumerGroup(this.be, this.ProcessOnEdit.properties[\"inst_id\"] || this.ProcessOnEdit.properties[\"INST_ID\"], this.ProcessOnEdit.properties[\"sid\"] || this.ProcessOnEdit.properties[\"SID\"], this.ProcessOnEdit.properties[\"serial\"] || this.ProcessOnEdit.properties[\"SERIAL\"], this.newCg);\r\n this.msgExts.manageStringResponse(res, this.lc.loc(\"Gruppo di Consumo modificato con successo\"), this.lc.loc(\"Errori nella modifica del Gruppo di Consumo\"), () => this.sendSearch());\r\n return true;\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Ricerca Processi Applicativi' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n @if (searchView) {\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row\">\n <div class=\"col-md-11\">\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-1 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox> \n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Ricerca globale' | localize: lc}}</span>\n </div>\n <div class=\"col-xl-2 col-lg-1 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtersid\" name=\"filtersid\" [Placeholder]=\"'SID'| localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertype\" name=\"filtertype\" [Placeholder]=\"'Tipo' | localize: lc\" [Source]=\"Types\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-1 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertenant\" name=\"filterTenant\" [Placeholder]=\"'Tenant' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filterUser\" [Placeholder]=\"'Utente' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterstate\" name=\"filterState\" [Placeholder]=\"'Stato' | localize: lc\" [Source]=\"States\"></form-select>\n </div>\n </div>\n <div class=\"col-md-12 row app-no-padding\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertid\" name=\"filtertid\" [Placeholder]=\"'TID'| localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtermtid\" name=\"filtermtid\" [Placeholder]=\"'Thread gestito'| localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterthreadtype\" name=\"filterthreadtype\" [Placeholder]=\"'Tipo Thread' | localize: lc\" [Source]=\"ThreadTypes\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterthreadstatus\" name=\"filterthreadstatus\" [Placeholder]=\"'Stato Thread' | localize: lc\" [Source]=\"ThreadStatuses\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterinwait\" name=\"filterinwait\"></form-checkbox> \n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterinwait = !searchView.filterinwait\">{{'In Attesa' | localize: lc}}</span>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterdcid\" name=\"filterdcid\"></form-checkbox> \n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterdcid = !searchView.filterdcid\">{{'Push dedicato connesso' | localize: lc}}</span>\n </div>\n </div>\n </div>\n <div class=\"col-md-1 app-no-padding\">\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </div>\n </form>\n </div>\n }\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico i Processi Applicativi' | localize: lc}}...</em></p>\n }\n @if (searchView) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [DynamicOperations]=\"DynamicOps\" [Export]=\"true\" [ColumnsOrdering]=\"false\"\n [ExportFileName]=\"'Application Processes.csv'\" [ExportFunction]=\"prepareExport.bind(this)\" [AutoUpdate]=\"true\"\n [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" (onDynamicOperation)=\"onOperation($event)\">\n <span class=\"app-nowrap\" *td=\"'full_wait_stack'; let value\">\n <span class=\"fa fa-list app-pointer\" (click)=\"valueToShow = value; dlgValue.show();\"></span> \n {{value.length > 70 ? value.substr(0, 67) + '...' : value}}\n </span>\n </es-table>\n </div>\n }\n </div>\n </div>\n <div class=\"app-margin-top-15\">\n <button class=\"btn btn-secondary pull-left\" type=\"button\" (click)=\"back()\">{{'Indietro' | localize: lc}}</button>\n <div class=\"clearfix\"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div bsModal #dlgChangeCg=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-lg\" emaDraggable>\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{'Modifica Gruppo di Consumo' | localize: lc}}</h4>\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgChangeCg.hide()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <form novalidate #cgFrom=\"ngForm\" (ngSubmit)=\"cgFrom.valid && doChangeCg() && dlgChangeCg.hide()\">\n <div class=\"modal-body\">\n <form-select [Label]=\"'Nuovo Gruppo di Consumo' | localize: lc\" [(ngModel)]=\"newCg\" name=\"newCg\" [Source]=\"CGs\" required [Last]=\"true\"></form-select>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-5\" (click)=\"dlgChangeCg.hide()\">{{'Chiudi' | localize: lc}}</button>\n <button type=\"submit\" class=\"btn btn-primary\">{{'Conferma' | localize: lc}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n\n<div bsModal #dlgValue=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-xl\" app-draggable=\".modal-header\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title pull-left\">\n Full Wait Stack\n </h5>\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgValue.hide()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body app-padidng-bottom-20 app-padding-top-20\">\n <span class=\"app-wrap\">\n {{valueToShow}}\n </span>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgValue.hide()\">Chiudi</button>\n </div>\n </div>\n </div>\n</div>","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class ProfilerDataNodeLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"ID Padre\", [\"Parent ID\"]);\r\n super.set(\"it->en\", \"ID\", [\"ID\"]);\r\n super.set(\"it->en\", \"Descrizione\", [\"Description\"]);\r\n super.set(\"it->en\", \"Chiamate\", [\"Calls\"]);\r\n super.set(\"it->en\", \"Tempo\", [\"Time\"]);\r\n super.set(\"it->en\", \"Tempo Max\", [\"Peak Time\"]);\r\n super.set(\"it->en\", \"Tempo Min\", [\"Min. Time\"]);\r\n super.set(\"it->en\", \"Tempo Medio\", [\"Avg. Time\"]);\r\n super.set(\"it->en\", \"Tempo Specifico\", [\"Specific Time\"])\r\n super.set(\"it->en\", \"Percentuale\", [\"Percentage\"]);\r\n super.set(\"it->en\", \"Chiamate Periodo\", [\"Calls for Period\"]);\r\n super.set(\"it->en\", \"Tempo Periodo\", [\"Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Max Periodo\", [\"Peak Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Min Periodo\", [\"Min. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Medio Periodo\", [\"Avg. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Specifico Periodo\", [\"Specific Time for Period\"]);\r\n super.set(\"it->en\", \"Percentuale Periodo\", [\"Percentage for Period\"]);\r\n super.set(\"it->en\", \"Nome Tipologia Evento\", [\"Event Type Name\"])\r\n super.set(\"it->en\", \"Nome Classe Attesa\", [\"Wait Class Name\"]);\r\n }\r\n}","import { Export, ExportLocalization } from \"@esfaenza/extensions\";\r\n\r\nimport { ProfilerDataNodeLoc } from \"./ProfilerDataNode.loc\";\r\n\r\n@ExportLocalization(ProfilerDataNodeLoc)\r\nexport class ProfilerDataNode {\r\n @Export(10, \"ID Padre\")\r\n parentid: string;\r\n @Export(20, \"ID\")\r\n id: string;\r\n @Export(30, \"Descrizione\")\r\n description: string;\r\n @Export(40, \"Chiamate\")\r\n calls: number;\r\n @Export(50, \"Tempo\")\r\n time: number;\r\n @Export(60, \"Tempo Max\")\r\n peaktime: number;\r\n @Export(70, \"Tempo Min\")\r\n mintime: number;\r\n @Export(80, \"Tempo Medio\")\r\n avgtime: number;\r\n @Export(90, \"Tempo Specifico\")\r\n timewithoutchildren: number;\r\n @Export(100, \"Percentuale\")\r\n percentage: number;\r\n @Export(110, \"Chiamate Periodo\")\r\n snapdeltacalls: number;\r\n @Export(120, \"Tempo Periodo\")\r\n snapdeltatime: number;\r\n @Export(130, \"Tempo Max Periodo\")\r\n snappeaktime: number;\r\n @Export(140, \"Tempo Min Periodo\")\r\n snapmintime: number;\r\n @Export(150, \"Tempo Medio Periodo\")\r\n snapavgtime: number;\r\n @Export(160, \"Tempo Specifico Periodo\")\r\n snaptimewithoutchildren: number;\r\n @Export(170, \"Percentuale Periodo\")\r\n snappercentage: number;\r\n @Export(180, \"Nome Tipologia Evento\")\r\n eventtypename: string;\r\n @Export(190, \"Nome Classe Attesa\")\r\n waitclassname: string;\r\n}","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { ProfilerDataNode } from \"./ProfilerDataNode\";\r\n\r\nexport class ProfilerDataNodesView extends AppSearch<ProfilerDataNode>{\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmProfilerComponentLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Profiler del Server\", [\"Server Profiler\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"ID\", [\"ID\"]);\r\n super.set(\"it->en\", \"Descrizione\", [\"Description\"]);\r\n super.set(\"it->en\", \"Chiamate\", [\"Calls\"]);\r\n super.set(\"it->en\", \"Tempo\", [\"Time\"]);\r\n super.set(\"it->en\", \"Tempo Max\", [\"Peak Time\"]);\r\n super.set(\"it->en\", \"Tempo Min\", [\"Min. Time\"]);\r\n super.set(\"it->en\", \"Tempo Medio\", [\"Avg. Time\"]);\r\n super.set(\"it->en\", \"Tempo Specifico\", [\"Specific Time\"]);\r\n super.set(\"it->en\", \"Percentuale\", [\"Percentage\"]);\r\n super.set(\"it->en\", \"Chiamate Periodo\", [\"Calls for Period\"]);\r\n super.set(\"it->en\", \"Tempo Periodo\", [\"Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Max Periodo\", [\"Peak Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Min Periodo\", [\"Min. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Medio Periodo\", [\"Avg. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Specifico Periodo\", [\"Specific Time for Period\"]);\r\n super.set(\"it->en\", \"Percentuale Periodo\", [\"Percentage for Period\"]);\r\n super.set(\"it->en\", \"Nome Tipologia Evento\", [\"Event Type Name\"]);\r\n super.set(\"it->en\", \"Nome Classe Attesa\", [\"Wait Class Name\"]);\r\n }\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class NodeDetailLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Sessioni Attive\", [\"Active Sessions\"]);\r\n super.set(\"it->en\", \"Dettaglio Attività Nodo\", [\"Activity Node Details\"]);\r\n super.set(\"it->en\", \"Tipo Evento\", [\"Event Type\"]);\r\n super.set(\"it->en\", \"Tempo Trascorso (Con Figli)\", [\"Elapsed (With Children)\"]);\r\n super.set(\"it->en\", \"Classe Attesa\", [\"Wait Class\"]);\r\n super.set(\"it->en\", \"Tempo Trascorso\", [\"Elapsed (No Children)\"]);\r\n super.set(\"it->en\", \"Stack di Attesa\", [\"Wait Stack\"]);\r\n super.set(\"it->en\", \"Utilizzo Risorse\", [\"Resources Usage\"]);\r\n super.set(\"it->en\", \"Esecuzioni\", [\"Executions\"]);\r\n\t\tsuper.set(\"it->en\", \"Dettaglio evento\", [\"Event detail\"]);\r\n }\r\n}","// Angular\r\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { BaseInterval, KeyValueColor, LineChartData, LineSerie, PieChartData } from \"@esfaenza/es-charts\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n// Applicazione\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\n// Localizzazione\r\nimport { NodeDetailLoc } from \"./node_detail.component.loc\";\r\n\r\n@Component({\r\n selector: \"node-detail\",\r\n viewProviders: [{ provide: LocalizationService, useClass: NodeDetailLoc }],\r\n templateUrl: \"./node_detail.component.html\",\r\n standalone: false\r\n})\r\nexport class NodeDetailComponent {\r\n\r\n @Input() NodeDetails: NodeStats;\r\n\r\n @Output() onClose: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(public lc: LocalizationService) { }\r\n\r\n ngOnInit() {\r\n let serie = new LineSerie(this.lc.loc(\"Sessioni Attive\"), this.NodeDetails.activesessions, null);\r\n this.NodeDetails.sessionchart = new LineChartData([serie]);\r\n this.NodeDetails.loadchart = new PieChartData([\r\n new KeyValueColor(\"CPU\", this.NodeDetails.cpuperc),\r\n new KeyValueColor(\"Wait\", this.NodeDetails.waitperc),\r\n new KeyValueColor(\"DB\", this.NodeDetails.dbperc),\r\n new KeyValueColor(\"Script\", this.NodeDetails.scriptperc),\r\n new KeyValueColor(\"Throttle\", this.NodeDetails.throttleperc),\r\n new KeyValueColor(\"Sleep\", this.NodeDetails.sleepperc),\r\n new KeyValueColor(\"Networking\", this.NodeDetails.networkperc),\r\n new KeyValueColor(\"IO\", this.NodeDetails.ioperc)\r\n ]);\r\n }\r\n\r\n closeDialog() {\r\n this.onClose.emit(true);\r\n }\r\n}","<div class=\"modal-dialog modal-xl\" emaDraggable>\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">\n {{'Dettaglio Attività Nodo' | localize: lc}}\n @if (NodeDetails) {\n <span> {{NodeDetails.nodeid}}</span>\n }\n </h4>\n <button type=\"button\" class=\"close pull-right\" (click)=\"closeDialog()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n @if (NodeDetails) {\n <div class=\"modal-body\">\n <div class=\"row\">\n <div class=\"col-md-6\">\n <strong>{{'Tipo Evento' | localize: lc}}</strong>: {{NodeDetails.eventtypedesc}} <strong>{{'Classe Attesa' | localize: lc}}</strong>: {{NodeDetails.waitclassname}}\n </div>\n <div class=\"col-md-6\">\n <strong>{{'Tempo Trascorso (Con Figli)' | localize: lc}}</strong>: {{NodeDetails.elapsed}} s\n </div>\n <div class=\"col-md-6\">\n <strong>{{'Esecuzioni' | localize: lc}}</strong>: {{NodeDetails.executions}}\n </div>\n <div class=\"col-md-6\">\n <strong>{{'Tempo Trascorso' | localize: lc}}</strong>: {{NodeDetails.elapsedlesschildren}} s\n </div>\n </div>\n <div>\n <h5 class=\"app-margin-top-10\"><strong>{{'Dettaglio evento' | localize: lc}}</strong></h5>\n {{NodeDetails.nodedescription}}\n </div>\n @if ((NodeDetails?.waitstack?.length || 0) > 0) {\n <div style=\"max-height: 200px; overflow: auto\">\n <h5 class=\"app-margin-top-10\"><strong>{{'Stack di Attesa' | localize: lc}}</strong></h5>\n @for (wait of NodeDetails.waitstack; track wait; let i = $index) {\n <div>\n @for (_ of [].constructor(i+1); track _) {\n -\n } {{wait.nodeid}} - {{wait.nodedescription}}: \n <strong>{{'Tipo Evento' | localize: lc}}</strong>: {{wait.eventtypedesc}} \n <strong>{{'Classe Attesa' | localize: lc}}</strong>: {{wait.waitclassname}}\n </div>\n }\n </div>\n }\n @if ((NodeDetails?.foundininstanceids?.length || 0) > 0) {\n <div style=\"max-height: 200px; overflow: auto\">\n <h5 class=\"app-margin-top-10\"><strong>{{'Presente nelle seguenti istanze' | localize: lc}}</strong></h5>\n @for (instid of NodeDetails.foundininstanceids; track instid; let i = $index) {\n <div style=\"margin-right: 15px;\">\n {{instid}}\n </div>\n }\n </div>\n }\n <div style=\"height: 200px;\">\n <h5 class=\"app-margin-top-10\"><strong>{{'Utilizzo Risorse' | localize: lc}}</strong></h5>\n @if (NodeDetails.sessionchart) {\n <es-line-chart\n [MinGridDistance]=\"65\"\n [Timeline]=\"false\"\n [FinalInstants]=\"false\"\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\n [Fill]=\"true\"\n [MergeDatasets]=\"true\"\n [Data]=\"NodeDetails.sessionchart\"\n [Legend]=\"true\"\n name=\"nodeDetailSessionChart\"\n [DataGroupingThreshold]=\"99999999\"></es-line-chart>\n }\n </div>\n <div style=\"height: 200px;\">\n @if (NodeDetails.loadchart) {\n <es-pie-chart [Legend]=\"true\" [Data]=\"NodeDetails.loadchart\" name=\"nodeDetailLoadChart\"></es-pie-chart>\n }\n </div>\n </div>\n }\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"closeDialog()\">{{'Chiudi' | localize: lc}}</button>\n </div>\n </div>\n </div>","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Applicazione\r\nimport { ProfilerDataNode } from \"../../models/components/ProfilerDataNode\";\r\nimport { ProfilerDataNodesView } from \"../../models/components/ProfilerDataNodesView\";\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmProfilerComponentLoc } from \"./adm_profiler.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\n@Component({\r\n selector: \"adm_profiler\",\r\n providers: [{ provide: LocalizationService, useClass: AdmProfilerComponentLoc }],\r\n templateUrl: \"./adm_profiler.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmProfilerComponent {\r\n public searchView: ProfilerDataNodesView = new ProfilerDataNodesView();\r\n public storageSub: any;\r\n\r\n public NodeDetails: NodeStats;\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<ProfilerDataNodesView>(\"HotSearchProfilato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/profiler`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchProfilato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: ProfilerDataNodesView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(this.searchView);\r\n }\r\n else {\r\n this.searchView = new ProfilerDataNodesView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(this.searchView);\r\n }\r\n\r\n downloadWorkloadReport() {\r\n this.adms.downloadWorkloadReport(this.be, this.searchView.filterfrom, this.searchView.filterto, this.searchView.filterglobal);\r\n }\r\n\r\n async POSTGetItems(data: ProfilerDataNodesView) {\r\n this.searchView = await this.adms.getProfilerDataNodes(this.be, data);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotSearchProfilato\", this.searchView).subscribe();\r\n }\r\n\r\n async prepareExport(dataCallBack) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let res = await this.adms.getProfilerDataNodes(this.be, view);\r\n dataCallBack(res.items, ProfilerDataNode);\r\n }\r\n\r\n loadNodeDetails(nodeId: string) {\r\n this.NodeDetails = null;\r\n requestAnimationFrame(async () => {\r\n this.NodeDetails = await this.adms.getNodeStats(this.be, nodeId);\r\n });\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Profiler del Server' | localize: lc}}</span> \n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox> \n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\n </div>\n\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20 app-margin-right-5\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"downloadWorkloadReport()\" type=\"submit\"><i class=\"fa fa-download\"></i></button>\n </div>\n </form>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico i Dati' | localize: lc}}</em></p>\n }\n @if (searchView) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [Hierarchy]=\"true\" [OrderByColumn]=\"false\" [ParentKey]=\"'parentid'\"\n [OwnKey]=\"'id'\" [StartsExpanded]=\"false\" [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\"\n [ExportFileName]=\"'Profiler Export.csv'\" [HidePaging]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\n <span *th=\"'1'\">{{'ID' | localize : lc}}</span>\n <span *th=\"'2'\">{{'Descrizione' | localize: lc}}</span>\n <span *th=\"'3'\">{{'Chiamate' | localize: lc}}</span>\n <span *th=\"'4'\">{{'Tempo' | localize: lc}}</span>\n <span *th=\"'5'\">{{'Tempo Max' | localize: lc}}</span>\n <span *th=\"'6'\">{{'Tempo Min' | localize: lc}}</span>\n <span *th=\"'7'\">{{'Tempo Medio' | localize: lc}}</span>\n <span *th=\"'8'\">{{'Tempo Specifico' | localize: lc}}</span>\n <span *th=\"'9'\">{{'Percentuale' | localize: lc}}</span>\n <span *th=\"'10'\">{{'Chiamate Periodo' | localize: lc}}</span>\n <span *th=\"'11'\">{{'Tempo Periodo' | localize: lc}}</span>\n <span *th=\"'12'\">{{'Tempo Max Periodo' | localize: lc}}</span>\n <span *th=\"'13'\">{{'Tempo Min Periodo' | localize: lc}}</span>\n <span *th=\"'14'\">{{'Tempo Medio Periodo' | localize: lc}}</span>\n <span *th=\"'15'\">{{'Tempo Specifico Periodo' | localize: lc}}</span>\n <span *th=\"'16'\">{{'Percentuale Periodo' | localize: lc}}</span>\n <span *th=\"'17'\">{{'Nome Tipologia Evento' | localize: lc}}</span>\n <span *th=\"'18'\">{{'Nome Classe Attesa' | localize: lc}}</span>\n <span *th=\"'19'\">{{'Numero Istanze' | localize: lc}}</span>\n <span *td=\"'1'; let item\"><span class=\"app-link app-inline\" (click)=\"loadNodeDetails(item.id); dlgNodeDetails.show();\">{{item.id}}</span></span>\n <span *td=\"'2'; let item\" title=\"{{item.description}}\">{{item.description.length <= 50 ? item.description : item.description.substr(0,50) + \"[...]\" }}</span>\n <span *td=\"'3'; let item\">{{item.calls}}</span>\n <span *td=\"'4'; let item\">{{item.time}}</span>\n <span *td=\"'5'; let item\">{{item.peaktime}}</span>\n <span *td=\"'6'; let item\">{{item.mintime}}</span>\n <span *td=\"'7'; let item\">{{item.avgtime}}</span>\n <span *td=\"'8'; let item\">{{item.timewithoutchildren }}</span>\n <span *td=\"'9'; let item\">{{item.percentage}}</span>\n <span *td=\"'10' let item\">{{item.snapdeltacalls}}</span>\n <span *td=\"'11' let item\">{{item.snapdeltatime}}</span>\n <span *td=\"'12' let item\">{{item.snappeaktime}}</span>\n <span *td=\"'13' let item\">{{item.snapmintime}}</span>\n <span *td=\"'14' let item\">{{item.snapavgtime}}</span>\n <span *td=\"'15' let item\">{{item.snaptimewithoutchildren}}</span>\n <span *td=\"'16' let item\">{{item.snappercentage}}</span>\n <span *td=\"'17' let item\">{{item.eventtypename}}</span>\n <span *td=\"'18' let item\">{{item.waitclassname}}</span>\n <span *td=\"'19' let item\">{{item.numinstances}}</span>\n </es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\n @if (NodeDetails) {\n <node-detail [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\n }\n</div>","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { TopActivity } from \"./TopActivity\";\r\n\r\nexport class TopActivitiesDataView extends AppSearch<TopActivity>{\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n filterrealtime: boolean;\r\n filterbe: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmTopActivitieLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Sessioni Attive\", [\"Active Sessions\"]);\r\n super.set(\"it->en\", \"Prime Istruzioni\", [\"Top Nodes\"]);\r\n super.set(\"it->en\", \"Prime Sessioni\", [\"Top Sessions\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"Attività Principali\", [\"Top Activities\"]);\r\n super.set(\"it->en\", \"Descrizione Nodo\", [\"Node Description\"]);\r\n super.set(\"it->en\", \"Nodo\", [\"Node\"]);\r\n super.set(\"it->en\", \"Attività\", [\"Activity\"]);\r\n super.set(\"it->en\", \"Limite\", [\"Limit\"]);\r\n super.set(\"it->en\", \"Tipo Nodo\", [\"Node Type\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Tenant\", [\"Tenant\"]);\r\n super.set(\"it->en\", \"Processo\", [\"Process\"]);\r\n super.set(\"it->en\", \"Aggiorna ogni\", [\"Update every\"]);\r\n super.set(\"it->en\", \"secondo/i\", [\"second/s\"]);\r\n super.set(\"it->en\", \"Thread Massimi\", [\"Maximum Threads\"]);\r\n super.set(\"it->en\", \"CPU\", [\"CPUs\"]);\r\n super.set(\"it->en\", \"Classe Attesa\", [\"Wait Class Name\"]);\r\n\r\n super.set(\"it->en\", \"Seriale\", [\"Serial\"]);\r\n super.set(\"it->en\", \"Stato\", [\"Status\"]);\r\n super.set(\"it->en\", \"Tipo\", [\"Type\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { BaseChartComponent, BaseInterval, DateValue, Limit, LineChartData, LineSerie } from \"@esfaenza/es-charts\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { ItemsSelection } from \"@esfaenza/es-table\";\r\nimport { DateService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport * as am5xy from \"@amcharts/amcharts5/xy\";\r\nimport { ReplaySubject } from \"rxjs\";\r\nimport { Dayjs } from \"dayjs\";\r\n\r\n// Modelli\r\nimport { DirectorInfos } from \"../../models/components/DirectorInfos\";\r\nimport { TopActivitiesDataView } from \"../../models/components/TopActivitiesDataView\";\r\nimport { TopNode } from \"../../models/components/TopNode\";\r\nimport { TopSession } from \"../../models/components/TopSession\";\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\nimport { SessionStats } from \"../../models/components/SessionStats\";\r\nimport { SessionThread } from \"../../models/components/SessionThread\";\r\n\r\n// Applicazione\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmTopActivitieLoc } from \"./topact_search.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"topact_search\",\r\n providers: [{ provide: LocalizationService, useClass: AdmTopActivitieLoc }],\r\n templateUrl: \"./topact_search.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmTopActivitiesComponent {\r\n public searchView: TopActivitiesDataView = new TopActivitiesDataView();\r\n public storageSub: any;\r\n private LastDataPoint: any;\r\n\r\n public autoUpdate: boolean = false;\r\n public seconds: string = \"5\";\r\n\r\n private ChartInstance: BaseChartComponent<any>;\r\n public NodeDetails: NodeStats;\r\n\r\n private rtWindow: { from: Dayjs, to: Dayjs } = null;\r\n\r\n protected destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n private be: string;\r\n\r\n constructor(\r\n public dateExts: DateService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n // Ogni minuto calcolo qual è la finestra del realTime\r\n // interval(60 * 1000).pipe(takeUntil(this.destroyed$)).subscribe(_ => {\r\n // this.updateRealTimeWindow();\r\n // });\r\n\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n async updateRealTimeWindow() {\r\n let data = new TopActivitiesDataView();\r\n data.filterbe = this.be;\r\n data = await this.adms.getTopActivities(this.be, data);\r\n let reference = data.items[0];\r\n for (let i = 0; i < reference.actsessions.length; i++) {\r\n let itemref = reference.actsessions[i];\r\n let theD = this.dateExts.getDateConvertion(itemref.sampletime);\r\n\r\n if (!this.rtWindow)\r\n this.rtWindow = { from: theD, to: theD };\r\n else {\r\n if (theD.isBefore(this.rtWindow.from))\r\n this.rtWindow.from = theD;\r\n if (theD.isAfter(this.rtWindow.to))\r\n this.rtWindow.to = theD;\r\n }\r\n }\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<TopActivitiesDataView>(\"HotSearchTopAct\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/topact`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchTopAct\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: TopActivitiesDataView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(this.searchView, false);\r\n }\r\n else {\r\n this.searchView = new TopActivitiesDataView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async sendSearch(resetPage: boolean = true, update: boolean = false, searchViewOverride: TopActivitiesDataView = null) {\r\n let sv = searchViewOverride ?? this.searchView;\r\n if ((sv.filterfrom || sv.filterto) && !this.rtWindow)\r\n await this.updateRealTimeWindow();\r\n\r\n let dateRequestOnRealtimeWindow: boolean =\r\n sv.filterfrom && this.dateExts.getDateConvertion(sv.filterfrom).isAfter(this.rtWindow.from) &&\r\n sv.filterto && this.dateExts.getDateConvertion(sv.filterto).isBefore(this.rtWindow.to);\r\n\r\n sv.filterrealtime = dateRequestOnRealtimeWindow;\r\n sv.searchinprogress = true;\r\n\r\n this.POSTGetItems(sv, update);\r\n }\r\n\r\n async POSTGetItems(data: TopActivitiesDataView, update: boolean) {\r\n data.filterbe = this.be;\r\n let res = await this.adms.getTopActivities(this.be, data);\r\n //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table\r\n if (!update) {\r\n this.searchView = res;\r\n this.localStorage.setItem(\"HotSearchTopAct\", this.searchView).subscribe();\r\n }\r\n // DirectorInfos anche se per qualche motivo crasha di brutto è comunque non obbligatorio, evito di non caricare la pagina solo perché lui scoppia\r\n let dirinfos = await this.adms.getInfos(this.be);\r\n this.searchView.searchinprogress = false;\r\n this.reviewBindings(update, res, dirinfos);\r\n }\r\n\r\n loadNodeDetails(nodeId: string) {\r\n this.NodeDetails = null;\r\n requestAnimationFrame(async () => {\r\n this.NodeDetails = await this.adms.getNodeStats(this.be, nodeId, this.searchView.filterglobal);\r\n });\r\n }\r\n\r\n // **************************************************** Trasformazione da searchview con unico elemento con tutto ai 3 elementi:\r\n // **************************************************** Grafico, TopNodes e TopSessions\r\n TopActiveSessions: LineChartData;\r\n TopNodes: TopNode[];\r\n TopSessions: TopSession[];\r\n DirInfos: DirectorInfos;\r\n DirInfosGlobal: DirectorInfos;\r\n seriesPropertiesMapping: { [index: string]: LineSerie } = {};\r\n propertiesSeriesMapping: { [index: string]: string } = {\r\n [\"cputime\"]: \"CPU\",\r\n [\"waittime\"]: \"Wait\",\r\n [\"scripttime\"]: \"Scripting\",\r\n [\"dbtime\"]: \"DB\",\r\n [\"nettime\"]: \"Network\",\r\n [\"throttletime\"]: \"Throttling\",\r\n [\"sleeptime\"]: \"Sleep\",\r\n [\"iotime\"]: \"IO\"\r\n };\r\n\r\n reviewBindings(update: boolean, searchViewOverride?, dirInfos?: DirectorInfos) {\r\n let reference = (searchViewOverride ?? this.searchView).items[0];\r\n this.TopNodes = reference.topnodes;\r\n this.TopSessions = reference.topsessions;\r\n this.DirInfos = dirInfos?.cluster ? dirInfos : null;\r\n this.DirInfosGlobal = !dirInfos?.cluster ? dirInfos : null;\r\n\r\n if (!reference.actsessions || reference.actsessions.length == 0) {\r\n this.TopActiveSessions = null;\r\n return;\r\n }\r\n\r\n let series: LineSerie[] = []; \r\n let props = Object.keys(reference.actsessions[0]);\r\n for (let i = 0; i < props.length; i++) {\r\n if (props[i] != 'sampletime') {\r\n let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, \"sessions\");\r\n series.push(s);\r\n this.seriesPropertiesMapping[props[i]] = s;\r\n }\r\n }\r\n\r\n for (let i = 0; i < reference.actsessions.length; i++) {\r\n let itemref = reference.actsessions[i];\r\n let theD = new Date(itemref.sampletime);\r\n\r\n for (let i = 0; i < props.length; i++)\r\n if (props[i] != 'sampletime' && (!update || this.dateExts.getDateConvertion(theD).isAfter(this.LastDataPoint)))\r\n this.seriesPropertiesMapping[props[i]].values.push(new DateValue(theD, itemref[props[i]]));\r\n }\r\n\r\n if (update && this.ChartInstance) {\r\n let data = new LineChartData(series, new Limit(dirInfos?.threads, this.lc.loc(\"Thread Massimi\")));\r\n if (series.some(t => t.values.length > 0)) {\r\n this.ChartInstance.addData(data);\r\n this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n }\r\n }\r\n else {\r\n this.TopActiveSessions = new LineChartData(series, new Limit(dirInfos?.threads, this.lc.loc(\"Thread Massimi\")));\r\n this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n }\r\n }\r\n\r\n // #region Gestione update automatico\r\n updateTimer: any;\r\n autoUpdateChanged() {\r\n if (!/^[1-9]\\d*$/.test(this.seconds))\r\n this.seconds = '10';\r\n const secondsInMs = parseInt(this.seconds, null) * 1000;\r\n if (this.autoUpdate) {\r\n this.sendSearch(false, true);\r\n this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);\r\n }\r\n else\r\n clearInterval(this.updateTimer);\r\n }\r\n // #endregion\r\n\r\n private from: Date;\r\n private to: Date;\r\n\r\n dataSelectionChanged(event: { from: Date, to: Date, initial: boolean }) {\r\n this.from = event.initial ? (this.searchView.filterfrom ? this.dateExts.getDateConvertion(this.searchView.filterfrom).toDate() : \"\") : event.from;\r\n this.to = event.initial ? (this.searchView.filterto ? this.dateExts.getDateConvertion(this.searchView.filterto).toDate() : \"\") : event.to;\r\n\r\n var pseudoSearchView: TopActivitiesDataView = JSON.parse(JSON.stringify(this.searchView));\r\n pseudoSearchView.filterfrom = this.from ? dayjs(this.from).format(this.lc.token(\"getFullDateDisplayFormat\")) : \"\";\r\n pseudoSearchView.filterto = this.to ? dayjs(this.to).format(this.lc.token(\"getFullDateDisplayFormat\")) : \"\";\r\n this.sendSearch(true, true, pseudoSearchView);\r\n }\r\n\r\n onChartLoaded(chart: BaseChartComponent<any>, overwriteInstance: boolean = true) {\r\n if(overwriteInstance)\r\n this.ChartInstance = chart;\r\n\r\n let readyHandler = () => {\r\n (chart.Chart as am5xy.XYChart).xAxes.each(x => x.zoom(0, 1, 0));\r\n (chart.Chart as am5xy.XYChart).yAxes.each(y => y.zoom(0, 1, 0));\r\n\r\n chart.Chart!.root.events.off(\"frameended\", readyHandler);\r\n };\r\n\r\n chart.Chart!.root.events.onDebounced(\"frameended\", readyHandler, 500);\r\n }\r\n\r\n // **************************************************** Gestione dettaglio sessione\r\n\r\n SessionDetails: SessionStats;\r\n SelectedTopNodes: TopNode[];\r\n SelectedSessions: LineChartData;\r\n\r\n seriesPropertiesMapping2: { [index: string]: LineSerie } = {};\r\n\r\n loadSessionDetails(sessionId: number, serialNo: number, instanceid: string) {\r\n this.SessionDetails = null;\r\n requestAnimationFrame(async () => {\r\n this.SessionDetails = await this.adms.getSessionStats(this.be, sessionId?.toString(), serialNo?.toString(), instanceid);\r\n this.threadSelectionChanged(null);\r\n });\r\n }\r\n\r\n threadSelectionChanged(selection?: ItemsSelection<SessionThread>) {\r\n this.SelectedTopNodes = null;\r\n this.SelectedSessions = null;\r\n\r\n requestAnimationFrame(() => {\r\n let sessDet = (selection?.count || 0) == 0 ? this.SessionDetails : selection.items[0];\r\n\r\n this.SelectedTopNodes = sessDet.nodes;\r\n\r\n let series: LineSerie[] = []; \r\n let props = Object.keys(sessDet.sessions[0]);\r\n for (let i = 0; i < props.length; i++) {\r\n if (props[i] != 'sampletime') {\r\n let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null , null, \"sessions\");\r\n series.push(s);\r\n this.seriesPropertiesMapping2[props[i]] = s;\r\n }\r\n }\r\n \r\n for (let i = 0; i < sessDet.sessions.length; i++) {\r\n let itemref = sessDet.sessions[i];\r\n let theD = new Date(itemref.sampletime);\r\n \r\n for (let i = 0; i < props.length; i++)\r\n if (props[i] != 'sampletime')\r\n this.seriesPropertiesMapping2[props[i]].values.push(new DateValue(theD, itemref[props[i]]));\r\n }\r\n\r\n this.SelectedSessions = new LineChartData(series);\r\n\r\n });\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'Attività Principali' | localize: lc}}\r\n <span *ngIf=\"DirInfos && !DirInfosGlobal\"> - \r\n {{'' + DirInfos.cpus + ' ' + ('CPU' | localize: lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}} \r\n Load average: {{ DirInfos.lavg1 | number : '1.1-2' : 'it'}} {{ DirInfos.lavg5 | number : '1.1-2' : 'it'}} {{ DirInfos.lavg15 | number : '1.1-2' : 'it'}}\r\n </span> \r\n <span *ngIf=\"DirInfosGlobal\"> | \r\n {{'' + DirInfosGlobal.cpus + ' ' + ('CPU (Global)' | localize: lc) + (DirInfosGlobal.rssplan ? ' - ' + DirInfosGlobal.rssplan : '')}} \r\n Load average: {{ DirInfosGlobal.lavg1 | number : '1.1-2' : 'it'}} {{ DirInfosGlobal.lavg5 | number : '1.1-2' : 'it'}} {{ DirInfosGlobal.lavg15 | number : '1.1-2' : 'it'}}\r\n <span *ngIf=\"(DirInfosGlobal?.perinstancedata?.length || 0) > 0\">\r\n \r\n <a class=\"app-link app-pointer app-inline\" (click)=\"dlgDirInfos.show();\">[{{'Info per Istanza' | localize: lc}}...]</a>\r\n </span>\r\n </span> \r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 app-relative\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox> \r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n\r\n <div class=\"app-absolute app-right-25 app-top-40\">\r\n <div class=\"pull-right\">\r\n {{'Aggiorna ogni' | localize: lc}} <input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"seconds\" /> {{'secondo/i' | localize: lc}}\r\n </div>\r\n <div class=\"pull-right m-t-2 app-margin-right-5\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" name=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\r\n <div class=\"slider round\"></div>\r\n </label>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 app-margin-top-5\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico i Dati' | localize: lc}}</em></p>\r\n <div *ngIf=\"searchView\" class=\"row\">\r\n <div class=\"col-md-12 app-no-padding\">\r\n <div style=\"width: 100%; height: 290px\">\r\n <es-line-chart *ngIf=\"TopActiveSessions\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"TopActiveSessions\"\r\n [Legend]=\"true\" \r\n name=\"topactsession\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (onSelectionChanged)=\"dataSelectionChanged($event)\" (chartLoaded)=\"onChartLoaded($event)\"></es-line-chart>\r\n </div>\r\n </div>\r\n <div class=\"col-md-5\">\r\n <h5>{{'Prime Istruzioni' | localize: lc}}</h5>\r\n <es-table [(ngModel)]=\"TopNodes\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attività' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\" (click)=\"loadNodeDetails(node.profnodeid); dlgNodeDetails.show();\">{{node.profnodeid}}</span></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{node.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <h5>{{'Prime Sessioni' | localize: lc}}</h5>\r\n <es-table [(ngModel)]=\"TopSessions\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">ID</th>\r\n <th>{{'Utente' | localize: lc}}</th>\r\n <th>{{'Tenant' | localize : lc}}</th>\r\n <th>{{'Processo' | localize: lc}}</th>\r\n <th>{{'Attività' | localize: lc}}</th>\r\n <th>Cpu</th>\r\n <th>Wait</th>\r\n <th>DB</th>\r\n <th>Script</th>\r\n <th>Throttle</th>\r\n <th>Sleep</th>\r\n <th>Networking</th>\r\n <th>IO</th>\r\n </ng-template>\r\n\r\n <ng-template #body let-session>\r\n <td class=\"app-col-min\"><span class=\"app-link\" title=\"{{session.instanceid? (' - ' + session.instanceid) : ''}}\" (click)=\"loadSessionDetails(session.sid, session.serial, session.instanceid); dlgSessionDetails.show();\">{{session.sid}}</span></td>\r\n <td>{{session.user}}</td>\r\n <td>{{session.tenant}}</td>\r\n <td>{{session.bgprocess}}</td>\r\n <td>{{session.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.cpu | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.wait | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.db | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.script | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.throttle | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.sleep | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.net | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.io | number : '1.1-2' : 'it'}} %</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgDirInfos=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-feminist\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Dettaglio per Istanza' | localize: lc}}</h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgDirInfos.hide()\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"(DirInfosGlobal?.perinstancedata?.length || 0) > 0\">\r\n <div class=\"row\" *ngFor=\"let info of DirInfosGlobal.perinstancedata\">\r\n <div class=\"col-md-12\"> \r\n <strong>{{info.instance}}</strong>: \r\n {{'' + info.cpus + ' ' + ('CPU (Global)' | localize: lc) + (info.rssplan ? ' - ' + info.rssplan : '')}} \r\n Load average: {{ info.lavg1 | number : '1.1-2' : 'it'}} {{ info.lavg5 | number : '1.1-2' : 'it'}} {{ info.lavg15 | number : '1.1-2' : 'it'}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgDirInfos.hide()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <node-detail *ngIf=\"NodeDetails\" [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\r\n</div>\r\n\r\n<div bsModal #dlgSessionDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-feminist\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Dettaglio Sessione' | localize: lc}}<span *ngIf=\"SessionDetails\"> {{SessionDetails.sid}}</span></h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgSessionDetails.hide()\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"SessionDetails\">\r\n <div class=\"row\">\r\n <div *ngIf=\"SessionDetails.instanceid\" class=\"col-md-6\"><strong>{{'Istanza' | localize: lc}}</strong>: {{SessionDetails.instanceid}} </div>\r\n <div class=\"col-md-6\"><strong>{{'Seriale' | localize: lc}}</strong>: {{SessionDetails.serial}} </div>\r\n <div class=\"col-md-6\"><strong>{{'Stato' | localize: lc}}</strong>: {{SessionDetails.status}} </div>\r\n <div class=\"col-md-6\"><strong>{{'Tipo' | localize: lc}}</strong>: {{SessionDetails.type}}</div>\r\n <div class=\"col-md-6\"><strong>{{'Utente' | localize: lc}}</strong>: {{SessionDetails.user}} <span *ngIf=\"SessionDetails.tenant\">({{SessionDetails.tenant}})</span></div>\r\n </div>\r\n\r\n <div style=\"display: flex; width: 100%; margin-top: 15px;\">\r\n <div style=\"flex-grow: 0;display: flex;flex-direction: column\">\r\n <h5>Prime Istruzioni</h5>\r\n <div *ngIf=\"SelectedTopNodes\">\r\n <es-table [(ngModel)]=\"SelectedTopNodes\" [ArraymodeItemsPerPage]=\"10\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attività' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\"(click)=\"loadNodeDetails(node.profnodeid); dlgNodeDetails.show();\">{{node.profnodeid}}</span></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{(node.activity == \"NaN\" ? null : node.activity) | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n <div style=\"width: 15px;\"></div>\r\n <div style=\"flex-grow: 2;display: flex;flex-direction: column\">\r\n <h5>Attività</h5>\r\n <div *ngIf=\"SelectedSessions\" style=\"width: 100%; height: 290px\">\r\n <es-line-chart [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"SelectedSessions\"\r\n [Legend]=\"true\" \r\n name=\"session_details\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (chartLoaded)=\"onChartLoaded($event, true)\">\r\n </es-line-chart>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div style=\"display: flex; width: 100%;\">\r\n <div style=\"flex-grow: 1;\">\r\n <h5>Statistiche Thread</h5>\r\n <div>\r\n <es-table [(ngModel)]=\"SessionDetails.threads\" [ArraymodeItemsPerPage]=\"10\" [Selection]=\"true\" [SingleSelection]=\"true\" (onSelectionChanged)=\"threadSelectionChanged($event)\">\r\n <ng-template #header>\r\n <th>Thread</th>\r\n <th>Stato</th>\r\n <th>Tipo</th>\r\n <th>API</th>\r\n <th>Attesa corrente</th>\r\n <th>Nodo di attesa</th>\r\n <th>Attesa su</th>\r\n <th>Classe</th>\r\n <th>Par. 1</th>\r\n <th>Par. 2</th>\r\n <th>Par. 3</th>\r\n <th>Tempo Attesa</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-thread>\r\n <td>{{thread.tid}}</td>\r\n <td>{{thread.status}}</td>\r\n <td>{{thread.type}}</td>\r\n <td>{{thread.api}}</td>\r\n <td>{{thread.wait}}</td>\r\n <td>{{thread.waitnode}}</td>\r\n <td>{{thread.waiteventtype}}</td>\r\n <td>{{thread.waitclassname}}</td>\r\n <td>{{thread.waitpar1}}</td>\r\n <td>{{thread.waitpar2}}</td>\r\n <td>{{thread.waitpar3}}</td>\r\n <td>{{(thread.waittime == \"NaN\" ? null : thread.waittime) | number : '1.1-2' : 'it'}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgSessionDetails.hide()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class LocksView extends AppSearch<GenericItem>{\r\n constructor() { super(); }\r\n\r\n filtersid: string;\r\n filterlock: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmEnqLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Ricerca Lock Applicativi\", [\"Search Application Locks\"]);\r\n super.set(\"it->en\", \"Nome\", [\"Name\"]);\r\n super.set(\"it->en\", \"Carico i Lock Applicativi\", [\"Loading Application Locks\"]);\r\n super.set(\"it->en\", \"Globale\", [\"Global\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { ExportService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { LocksView } from \"../../models/components/LocksView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmEnqLoc } from \"./adm_enq.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { GenericItem } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"adm_enq\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmEnqLoc }],\r\n templateUrl: \"./adm_enq.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmEnqComponent {\r\n public locksView: LocksView = new LocksView();\r\n public storageSub: any;\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n public expExts: ExportService,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<LocksView>(\"HotEnqueue\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverenqueues`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotEnqueue\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: LocksView) {\r\n if (HotPotato) {\r\n this.locksView = HotPotato;\r\n this.POSTGetProcesses(this.locksView);\r\n }\r\n else {\r\n this.locksView = new LocksView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n if (resetPage)\r\n this.locksView.page = 1;\r\n\r\n this.POSTGetProcesses(this.locksView);\r\n }\r\n\r\n async POSTGetProcesses(data: LocksView) {\r\n this.locksView = await this.adms.getServerLocks(this.be, data);\r\n this.locksView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotEnqueue\", this.locksView).subscribe();\r\n }\r\n\r\n async prepareExport(callback) {\r\n var view = JSON.parse(JSON.stringify(this.locksView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let tmp = await this.adms.getServerLocks(this.be, view);\r\n callback(tmp.items, GenericItem);\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Ricerca Lock Applicativi' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <form role=\"form\">\n <div class=\"col-md-12 row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filtersid\" name=\"filtersid\" [Placeholder]=\"'SID'\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterlock\" name=\"filterlock\" [Placeholder]=\"'Nome' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterglobal\" name=\"filterglobal\"></form-checkbox> \n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"locksView.filterglobal = !locksView.filterglobal\">{{'Globale' | localize: lc}}</span>\n </div>\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </form>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!locksView) {\n <p><em>{{'Carico i Lock Applicativi' | localize: lc}}...</em></p>\n }\n @if (locksView) {\n <div>\n <es-table [(ngModel)]=\"locksView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"\n [ExportFileName]=\"'Application Locks.csv'\" [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\"></es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { Metric } from \"./Metric\";\r\n\r\nexport class MetricsView extends AppSearch<Metric> {\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n filtersid: string;\r\n filterserial: string;\r\n filtermetrics: string[];\r\n filterrealtime: boolean;\r\n fitlerinstance: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmMetricsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Metriche di Sistema\", [\"System Metrics\"]);\r\n super.set(\"it->en\", \"Cod. Sessione\", [\"Session ID\"]);\r\n super.set(\"it->en\", \"Seriale Sessione\", [\"Session Serial\"]);\r\n super.set(\"it->en\", \"Filtra Metriche...\", [\"Filter Metrics...\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"Aggiorna ogni\", [\"Update every\"]);\r\n super.set(\"it->en\", \"secondo/i\", [\"second/s\"]);\r\n super.set(\"it->en\", \"Istanza Metriche\", [\"Metrics Instance\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { BaseChartComponent } from \"@esfaenza/es-charts\";\r\nimport { DateService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { Metric } from \"../../models/components/Metric\";\r\nimport { MetricChart } from \"../../models/components/MetricChart\";\r\nimport { MetricsView } from \"../../models/components/MetricsView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmMetricsLoc } from \"./metrics_search.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"metrics_search\",\r\n providers: [{ provide: LocalizationService, useClass: AdmMetricsLoc }],\r\n templateUrl: \"./metrics_search.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmMetricsComponent {\r\n\r\n public Metrics: Metric[];\r\n private MetricsChartCache: { [name: string]: { chart: BaseChartComponent<any>, lastTs: Date } } = {};\r\n\r\n public searchView: MetricsView = new MetricsView();\r\n public storageSub: any;\r\n\r\n public autoUpdate: boolean = false;\r\n public seconds: string = \"5\";\r\n private be: string;\r\n\r\n constructor(\r\n public dateExts: DateService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n async dateChanged() {\r\n // Pulizia di tutti i parametri di ricerca dipendenti dalle date\r\n this.metricsToShow = [];\r\n this.Metrics = [];\r\n this.instanceRequired = false;\r\n this.Instances = [];\r\n this.selectedInstance = \"\";\r\n this.searchView.filtermetrics = [];\r\n\r\n this.Metrics = await this.adms.getMetricsList(this.be, this.searchView.filterfrom || \"\", this.searchView.filterto || \"\");\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<MetricsView>(\"HotSearchMetrics\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/metrics`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchMetrics\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: MetricsView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(this.searchView, false);\r\n }\r\n else {\r\n this.searchView = new MetricsView();\r\n this.sendSearch();\r\n }\r\n this.dateChanged();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n sendSearch(resetPage: boolean = true, update: boolean = false, searchViewOverride: MetricsView = null) {\r\n if (!update)\r\n this.MetricsChartCache = {};\r\n\r\n this.searchView.searchinprogress = true;\r\n // Questa ricerca prende i nomi distinct delle metriche quindi devo prendere tutto per forza\r\n this.searchView.itemsperpageoverride = 999999;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(searchViewOverride ?? this.searchView, update);\r\n }\r\n\r\n public Instances: KeyValue[] = []\r\n public selectedInstance = \"\";\r\n public instanceRequired: boolean = false;\r\n public metricsToShow: Metric[] = [];\r\n\r\n async POSTGetItems(data: MetricsView, update: boolean) {\r\n data.filterrealtime = update ? data.filterrealtime : !(!!data.filterfrom || !!data.filterto);\r\n\r\n let res = await this.adms.getMetrics(this.be, data);\r\n //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table\r\n if (!update) {\r\n this.selectedInstance = \"\";\r\n this.metricsToShow = [];\r\n this.searchView = res;\r\n this.searchView.items.forEach(m => {\r\n if (m.instance && !this.Instances.find(t => t.id == m.instance))\r\n this.Instances.push(new KeyValue(m.instance, m.instance));\r\n });\r\n this.instanceRequired = this.Instances.length > 1;\r\n if (this.Instances.length == 1) {\r\n this.selectedInstance = this.Instances[0].id;\r\n this.instanceSelected();\r\n }\r\n else\r\n this.instanceSelected(true);\r\n this.localStorage.setItem(\"HotSearchMetrics\", this.searchView).subscribe();\r\n }\r\n else {\r\n // Per ogni grafico di ogni metrica aggiungo tutti i valori che sono DOPO all'ultimo ts registrato per quel grafico\r\n res.items.forEach(m => {\r\n m.values.forEach(c => {\r\n let refm = this.MetricsChartCache[this.metricKey(m, c)];\r\n if (refm) {\r\n c.series.forEach(s => { s.values = s.values.filter(v => this.dateExts.getDateConvertion(v.d).isAfter(refm.lastTs)); });\r\n if (c.series.some(t => t.values.length > 0)) {\r\n refm.lastTs = c.series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n refm.chart.addData(c);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n this.searchView.searchinprogress = false;\r\n }\r\n\r\n instanceSelected(allowNull: boolean = false) {\r\n if (!this.selectedInstance && !allowNull)\r\n return;\r\n\r\n this.metricsToShow = this.searchView.items.filter(t => !this.selectedInstance || (t.instance == this.selectedInstance));\r\n }\r\n\r\n linkChartToMetric(metric: Metric, metricChart: MetricChart, chartComp: BaseChartComponent<any>) {\r\n this.MetricsChartCache[this.metricKey(metric, metricChart)] = { chart: chartComp, lastTs: metricChart.series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0] };\r\n }\r\n\r\n private metricKey(metric: Metric, value: MetricChart): string {\r\n return metric.name + \" - \" + value.xtitle + (metric.instance ? \" - \" + metric.instance : \"\");\r\n }\r\n\r\n // #region Gestione update automatico\r\n updateTimer: any;\r\n autoUpdateChanged() {\r\n if (!/^[1-9]\\d*$/.test(this.seconds))\r\n this.seconds = '10';\r\n const secondsInMs = parseInt(this.seconds, null) * 1000;\r\n if (this.autoUpdate) {\r\n this.sendSearch(false, true);\r\n this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);\r\n }\r\n else\r\n clearInterval(this.updateTimer);\r\n }\r\n // #endregion\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">\n {{'Metriche di Sistema' | localize: lc}}\n </span>\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12\">\n <form role=\"form\">\n <div class=\"row\">\n <div class=\"col-md-11\">\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-datetime [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\" (inputChange)=\"dateChanged();\"></form-datetime>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-datetime [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\" (inputChange)=\"dateChanged();\"></form-datetime>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtersid\" name=\"filtersid\" [Placeholder]=\"'Cod. Sessione' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterserial\" name=\"filterserial\" [Placeholder]=\"'Seriale Sessione' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox> \n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\n </div>\n </div>\n <div class=\"col-md-12 row app-no-padding\">\n <div class=\"col-12 app-filter-wrapper\">\n <form-multiselect [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtermetrics\" [IdField]=\"'name'\" [Display]=\"'{name}'\" name=\"filtermetrics\" [Placeholder]=\"'Filtra Metriche...' | localize: lc\" [Source]=\"Metrics\"></form-multiselect>\n </div>\n </div>\n <div class=\"clearfix\"></div>\n </div>\n <div class=\"col-md-1 app-no-padding\">\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n <div class=\"clearfix\"></div>\n </div>\n </form>\n <div class=\"app-col-12 app-margin-top-15\">\n <div class=\"pull-right\">\n {{'Aggiorna ogni' | localize: lc}} <input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"seconds\" /> {{'secondo/i' | localize: lc}}\n </div>\n <div class=\"pull-right m-t-2 app-margin-right-5\">\n <label class=\"switch\">\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" name=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\n <div class=\"slider round\"></div>\n </label>\n </div>\n <div class=\"clearfix\"></div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico i Dati' | localize: lc}}</em></p>\n }\n @if (searchView && instanceRequired) {\n <div>\n <form-select [Validation]=\"false\" [Label]=\"'Istanza Metriche' | localize: lc\" [(ngModel)]=\"selectedInstance\" name=\"instance\" [Source]=\"Instances\" (inputChange)=\"instanceSelected()\" required></form-select>\n </div>\n }\n @if (searchView && metricsToShow && metricsToShow.length > 0) {\n <div>\n <div class=\"col-md-12 app-padding-right-0 row app-margin-top-15\">\n @for (metric of metricsToShow; track metric; let i = $index) {\n @for (chart of metric.values; track chart; let z = $index) {\n <div class=\"col-md-4 app-no-padding app-simple-border\">\n <div style=\"width: 100%; height: 260px\">\n <es-line-chart [XTitle]=\"chart.xtitle\"\n [YTitle]=\"chart.ytitle\"\n [MinGridDistance]=\"65\"\n [Timeline]=\"false\"\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\n [MergeDatasets]=\"true\"\n [Data]=\"chart\"\n [Animations]=\"true\"\n [Legend]=\"chart.legend\"\n name=\"metric_{{i}}_chart_{{z}}\"\n (chartLoaded)=\"linkChartToMetric(metric, chart, $event);\"\n [DataGroupingThreshold]=\"99999999\">\n </es-line-chart>\n </div>\n </div>\n }\n }\n </div>\n <div class=\"clearfix\"></div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmLogsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Log del Server\", [\"Server Logs\"]);\r\n }\r\n}","// Angular\r\nimport { Component } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Localizzazione\r\nimport { AdmLogsLoc } from \"./adm_logs.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\n\r\n@Component({\r\n selector: \"adm_logs\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmLogsLoc }],\r\n templateUrl: \"./adm_logs.component.html\",\r\n styleUrls: [\"./adm_logs.component.scss\"],\r\n standalone: false\r\n})\r\nexport class AdmLogsComponent {\r\n public Log: string;\r\n\r\n public filterfrom: string = \"\";\r\n public filterto: string = \"\";\r\n public filterinstance: string = \"\";\r\n public filtertarget: string = \"\";\r\n\r\n public searchinprogress: boolean;\r\n private be: string;\r\n\r\n public AvailableInstances: KeyValue[];\r\n public AvailableTargets: KeyValue[];\r\n\r\n constructor(\r\n private intercom: InterComService,\r\n private lc: LocalizationService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n async ngOnInit() {\r\n this.instanceChanged();\r\n this.AvailableInstances = await this.adms.getInstances(this.be);\r\n\r\n await this.sendSearch();\r\n }\r\n\r\n async instanceChanged(){\r\n this.AvailableTargets = await this.adms.getLogTargets(this.be, this.filterinstance);\r\n }\r\n\r\n async sendSearch(){\r\n this.searchinprogress = true;\r\n this.Log = await this.adms.getServerLogs(this.be, this.filterfrom, this.filterto, this.filterinstance, this.filtertarget);\r\n this.searchinprogress = false;\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da'\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterto\" name=\"filterto\" [Placeholder]=\"'A'\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterinstance\" name=\"filterinstance\" [Placeholder]=\"'Istanza'\" [Source]=\"AvailableInstances\" (inputChange)=\"instanceChanged();\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filtertarget\" name=\"filtertarget\" [Placeholder]=\"'Target'\" [Source]=\"AvailableTargets\"></form-select>\n </div>\n <button [disabled]=\"searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20 app-margin-right-5\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </form>\n </div>\n @if (Log) {\n <p class=\"app-whitespace-prewrap app-log-monospace\" [innerHTML]=\"Log\"></p>\n }\n\n</div>","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class DynamicViewsView extends AppSearch<GenericItem> {\r\n constructor() { super(); }\r\n\r\n filtername: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmDynamicViewsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Ricerca Viste Dinamiche Applicative\", [\"Search Application Dynamic Views\"]);\r\n super.set(\"it->en\", \"Nome\", [\"Name\"]);\r\n super.set(\"it->en\", \"Carico le Viste Dinamiche Applicative\", [\"Loading Application Dynamic Views\"]);\r\n super.set(\"it->en\", \"Il nome della vista è obbligatorio per le operazioni di ricerca\", [\"View Name is mandatory for search operations\"]);\r\n super.set(\"it->en\", \"Nessun elemento trovato per la vista dinamica\", [\"No element found for Dynamic View\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\nimport { AppSearch } from \"@esfaenza/es-table\";\r\n\r\n// Applicazione\r\nimport { DynamicViewsView } from \"../../models/components/DynamicViewsView\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmDynamicViewsLoc } from \"./adm_dynamic_views.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { GenericItem } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"adm_dynamic_views\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmDynamicViewsLoc }],\r\n templateUrl: \"./adm_dynamic_views.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmDynamicViewsComponent {\r\n\r\n public searchView: DynamicViewsView = new DynamicViewsView();\r\n public Names: KeyValue[] = [];\r\n public storageSub: any;\r\n public badSearch: boolean = false;\r\n\r\n public currentName: string = \"\";\r\n\r\n // Staccato dalla view perché deve essere distrutta e ricreata di continuo\r\n public filterName:string = \"\";\r\n\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private intercom: InterComService,\r\n private localStorage: PreferencesService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n async ngOnInit() {\r\n this.Names = await this.adms.getDynamicViews(this.be);\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<DynamicViewsView>(\"HotDinamitato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverviews`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotDinamitato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: DynamicViewsView) {\r\n //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti\r\n //Altirmenti genero il modello nuovo normalmente\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems();\r\n }\r\n else {\r\n this.searchView = new DynamicViewsView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.searchView.filtername = this.filterName;\r\n this.POSTGetItems();\r\n }\r\n\r\n async prepareExportDynamicView(callback) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let tmp = await this.adms.getDynamicViewData(this.be, view);\r\n callback(tmp.items, GenericItem);\r\n }\r\n\r\n async POSTGetItems() {\r\n if (!this.searchView.filtername) {\r\n this.badSearch = true;\r\n AppSearch.reset(this.searchView);\r\n return;\r\n }\r\n else\r\n this.badSearch = false;\r\n\r\n // Per force-resettare l'estable\r\n if (this.currentName != this.searchView.filtername) {\r\n this.currentName = this.searchView.filtername;\r\n\r\n this.searchView = new DynamicViewsView();\r\n this.searchView.page = 1;\r\n this.searchView.filtername = this.currentName;\r\n }\r\n \r\n this.searchView = await this.adms.getDynamicViewData(this.be, this.searchView);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotDinamitato\", this.searchView).subscribe();\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Ricerca Viste Dinamiche Applicative' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterName\" name=\"filtername\" [Source]=\"Names\" [Placeholder]=\"'Nome' | localize: lc\"></form-select>\n </div>\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </form>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (badSearch) {\n <div class=\"card card-info app-white-text app-padding-10\">{{'Il nome della vista è obbligatorio per le operazioni di ricerca' | localize: lc}}</div>\n }\n @if (!badSearch) {\n @if (!searchView) {\n <p><em>{{'Carico le Viste Dinamiche Applicative' | localize: lc}}...</em></p>\n }\n @if (searchView && searchView.items.length > 0) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [AutoUpdate]=\"true\" [ExportFunction]=\"prepareExportDynamicView.bind(this)\" [Export]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"></es-table>\n </div>\n }\n @if (searchView && searchView.items.length == 0 && !searchView.searchinprogress) {\n <div class=\"card card-info app-white-text app-padding-10\">\n {{'Nessun elemento trovato per la vista dinamica' | localize: lc}} <strong>{{searchView.filtername}}</strong>\n </div>\n }\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class QueryView extends AppSearch<GenericItem>{\r\n constructor() { super(); }\r\n\r\n filterquery: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class MtdQueryLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Esecuzione Query Metadati\", [\"Metadata Query Execution\"]);\r\n super.set(\"it->en\", \"Query\", [\"Query\"]);\r\n super.set(\"it->en\", \"Carico i Risultati\", [\"Loading Results\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { ExportService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { QueryView } from \"../../models/components/QueryView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { MtdQueryLoc } from \"./mtd_query.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { GenericItem } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"adm_mtd_query\",\r\n viewProviders: [{ provide: LocalizationService, useClass: MtdQueryLoc }],\r\n templateUrl: \"./mtd_query.component.html\",\r\n standalone: false\r\n})\r\nexport class MtdQueryComponent {\r\n public searchView: QueryView = new QueryView();\r\n public storageSub: any;\r\n\r\n public searching: boolean = false;\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n public expExts: ExportService,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<QueryView>(\"HotQuery\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/metadataquery`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotQuery\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: QueryView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetSearch(this.searchView);\r\n }\r\n else {\r\n this.searchView = new QueryView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searching = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n if(!this.searchView.filterquery)\r\n return;\r\n\r\n this.POSTGetSearch(this.searchView);\r\n }\r\n\r\n async POSTGetSearch(data: QueryView) {\r\n this.searchView = await this.adms.getServerQuery(this.be, data);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotEnqueue\", this.searchView).subscribe();\r\n this.searching = false;\r\n }\r\n\r\n async prepareExport(callback) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let tmp = await this.adms.getServerQuery(this.be, view);\r\n callback(tmp.items, GenericItem);\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Esecuzione Query Metadati' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <form role=\"form\">\n <div class=\"col-md-12 row app-first-filter-line\">\n <div class=\"col-xl-11 col-lg-11 col-md-11 app-filter-wrapper\">\n <form-textarea rows=\"3\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterquery\" name=\"filterquery\" [Placeholder]=\"'Query'\"></form-textarea>\n </div>\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </form>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico i Risultati' | localize: lc}}...</em></p>\n }\n @if (searchView && !searching) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" [Export]=\"true\" [ExportFileName]=\"'Results.csv'\" [ExportFunction]=\"prepareExport.bind(this)\"></es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { SystemParameters } from \"./SystemParameters\";\r\n\r\nexport class SystemParametersView extends AppSearch<SystemParameters>{\r\n constructor() { super(); }\r\n\r\n filterparameter: string;\r\n filterlevel: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmSystemParametersLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Parametri di sistema\", [\"System Parameters\"]);\r\n super.set(\"it->en\", \"Nome parametro\", [\"Parameter Name\"]);\r\n super.set(\"it->en\", \"Carico Parametri di sistema\", [\"Loading System Parameters\"]);\r\n super.set(\"it->en\", \"Valore\", [\"Value\"]);\r\n super.set(\"it->en\", \"Valore Default\", [\"Default value\"]); \r\n super.set(\"it->en\", \"Descrizione\", [\"Description\"]);\r\n super.set(\"it->en\", \"Default\", [\"Default\"]); super.set(\"it->en\", \"Modificabile\", [\"Modifiable\"]);\r\n super.set(\"it->en\", \"Modifica parametro\", [\"Edit Parameter\"]);\r\n\r\n super.set(\"it->en\", \"Parametro di Sistema modificato con successo \", [\"System Parameter succesfully edited\"]);\r\n super.set(\"it->en\", \"Errori nella modifica del Parametro di Sistema\", [\"Errors editing System Parameter\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { NgForm } from \"@angular/forms\";\r\n\r\n// Configurazioni\r\nimport { InboundMessageTypes, InterComService, MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { KeyValue } from \"@esfaenza/core/domain\";\r\n\r\n// Classi\r\nimport { SystemParametersView } from \"../../models/components/SystemParametersView\";\r\nimport { SystemParameters } from \"../../models/components/SystemParameters\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { firstValueFrom } from \"rxjs\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Loc\r\nimport { AdmSystemParametersLoc } from \"./adm_syspars.component.loc\";\r\n\r\n@Component({\r\n selector: \"adm_syspars\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmSystemParametersLoc }],\r\n templateUrl: \"./adm_syspars.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmSystemParametersComponent {\r\n\r\n public searchView: SystemParametersView = new SystemParametersView();\r\n public storageSub: any;\r\n\r\n public LevelsSource: KeyValue[] = [];\r\n public lastSelectedLevel = \"\";\r\n\r\n private be: string;\r\n \r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n private msgExts: MessageService,\r\n private utiExts: UtilityService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n async ngOnInit() {\r\n this.LevelsSource = [new KeyValue(\"SYS\", \"System\"), new KeyValue(\"SES\", \"Session\")];\r\n\r\n this.AvailableInstances = await this.adms.getInstances(this.be);\r\n\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await firstValueFrom(this.localStorage.getItem<SystemParametersView>(\"HotSysParConfiggato\"));\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/syspars`);\r\n this.route.snapshot.queryParams = [];\r\n await firstValueFrom(this.localStorage.removeItem(\"HotSysParConfiggato\"));\r\n }\r\n }\r\n\r\n init(HotPotato: SystemParametersView) {\r\n //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti\r\n //Altirmenti genero il modello nuovo normalmente\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n\r\n this.POSTGetItems(this.searchView);\r\n }\r\n else {\r\n this.searchView = new SystemParametersView();\r\n this.searchView.filterlevel = \"SES\";\r\n \r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n if (!this.searchView.filterlevel) {\r\n this.msgExts.simpleError(\"È obbligatorio specificare il filtro 'livello' per procedere alla ricerca\");\r\n return;\r\n }\r\n\r\n if (this.searchView.filterlevel == \"SES\") {\r\n this.searchView.filterglobal = false;\r\n }\r\n\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(this.searchView);\r\n }\r\n\r\n async POSTGetItems(data: SystemParametersView) {\r\n this.lastSelectedLevel = this.searchView.filterlevel;\r\n \r\n this.searchView = await this.adms.getSystemParameters(this.be, data);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotSysParConfiggato\", this.searchView).subscribe();\r\n }\r\n\r\n //*********************************************EDIT************************************\r\n\r\n ParOnEdit: SystemParameters = null;\r\n @ViewChild(\"editConfigForm\", { static: true }) editConfigForm: NgForm;\r\n\r\n AvailableInstances: KeyValue[] = [];\r\n\r\n setupEdit(item: SystemParameters) {\r\n this.utiExts.cleanForm(this.editConfigForm);\r\n setTimeout(() => {\r\n this.ParOnEdit = this.utiExts.deepClone(item);\r\n this.ParOnEdit.memory = true;\r\n });\r\n }\r\n\r\n submitForm() {\r\n this.adms.updateSystemParameter(this.be, this.ParOnEdit).then(t => {\r\n this.msgExts.manageStringResponse(t, this.lc.loc(\"Parametro di Sistema modificato con successo \"), this.lc.loc(\"Errori nella modifica del Parametro di Sistema\"), () => { this.sendSearch() });\r\n })\r\n return true;\r\n }\r\n\r\n //*********************************************RESET************************************\r\n\r\n setupReset(item: SystemParameters) {\r\n this.msgExts.simpleWarningWithChoice(\r\n this.lc.loc(\"Richiesta conferma\"),\r\n this.lc.loc(\"Si desidera procedere al reset del parametro??\"),\r\n async () => {\r\n let t = await this.adms.resetSystemParameter(this.be, item.parametername, this.lastSelectedLevel);\r\n this.msgExts.manageStringResponse(t, this.lc.loc(\"Parametro di Sistema resettato con successo \"), this.lc.loc(\"Errori nel reset del Parametro di Sistema\"), () => { this.sendSearch() });\r\n });\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Parametri di sistema' | localize : lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterparameter\" name=\"filterparameter\" [Placeholder]=\"'Nome parametro' | localize : lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterlevel\" name=\"filterlevel\" [Placeholder]=\"'Livello' | localize : lc\" [Source]=\"LevelsSource\"></form-select>\n </div>\n @if (searchView.filterlevel == 'SYS') {\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox> \n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\n </div>\n }\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"far fa-search\"></i></button>\n </div>\n </form>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico Parametri di sistema' | localize : lc}}...</em></p>\n }\n @if (searchView) {\n <div>\n <es-table [(ngModel)]=\"searchView\" (onSearchRequest)=\"sendSearch($event);\">\n <ng-template #header>\n <th class=\"app-col-min\"></th>\n <th class=\"app-col-min\"></th>\n <th class=\"app-nowrap\">{{'Nome parametro' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Valore' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Default' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Descrizione' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Modificabile' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Valore Default' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Modificabile a livello di Sessione' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Modificabile a livello di Sistema' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Modificato' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Aggiustato' | localize : lc}}</th>\n </ng-template>\n <ng-template #body let-item>\n <td class=\"app-no-wrap app-right-0 app-padding-top-8\">\n @if (!item.isreadonly && ((lastSelectedLevel == 'SYS' && item.syseditable) || (lastSelectedLevel == 'SES' && item.seseditable))) {\n <a class=\"app-link far fa-edit\" (click)=\"setupEdit(item); dlgEdit.show();\"></a>\n }\n </td>\n <td class=\"app-no-wrap app-right-0 app-padding-top-8\">\n @if (!item.isreadonly && ((lastSelectedLevel == 'SYS' && item.syseditable) || (lastSelectedLevel == 'SES' && item.seseditable))) {\n <a class=\"app-link far fa-refresh\" (click)=\"setupReset(item);\"></a>\n }\n </td>\n <td class=\"app-nowrap\"><strong>{{item.parametername}}</strong></td>\n <td class=\"app-nowrap\">{{item.value}}</td>\n <td class=\"app-nowrap\" [class.text-success]=\"item.isdefault\" [class.text-danger]=\"!item.isdefault\">\n {{ item.isdefault ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n <td class=\"app-nowrap\">{{item.parameterdescription}}</td>\n <td class=\"app-nowrap\" [class.text-success]=\"!item.isreadonly\" [class.text-danger]=\"item.isreadonly\">\n {{ !item.isreadonly ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n <td class=\"app-nowrap\">{{item.defaultvalue}}</td>\n <td class=\"app-nowrap\" [class.text-success]=\"item.seseditable\" [class.text-danger]=\"!item.seseditable\">\n {{ item.seseditable ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n <td class=\"app-nowrap\" [class.text-success]=\"item.syseditable\" [class.text-danger]=\"!item.syseditable\">\n {{ item.syseditable ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n <td class=\"app-nowrap\">{{item.modified}}</td>\n <td class=\"app-nowrap\" [class.text-success]=\"item.adjusted\" [class.text-danger]=\"!item.adjusted\">\n {{ item.adjusted ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n </ng-template>\n </es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div esModal #dlgEdit=\"es-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-lg\" emaDraggable>\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title pull-left\">{{ 'Modifica parametro' | localize : lc }}</h5>\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgEdit.hide()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <form novalidate #editConfigForm=\"ngForm\" (ngSubmit)=\"editConfigForm.valid && submitForm() && dlgEdit.hide()\">\n @if (ParOnEdit) {\n <div class=\"modal-body\">\n <form-input [LabelInputRatio]=\"'3 9'\" [Label]=\"'Nome parametro' | localize : lc\" [(ngModel)]=\"ParOnEdit.parametername\" [disabled]=\"true\" name=\"parametername\"></form-input>\n <form-input [LabelInputRatio]=\"'3 9'\" [Label]=\"'Valore' | localize : lc\" [(ngModel)]=\"ParOnEdit.value\" name=\"value\" [Last]=\"lastSelectedLevel == 'SES'\"></form-input>\n @if (lastSelectedLevel == 'SYS') {\n <form-checkbox [LabelInputRatio]=\"'3 9'\" [Label]=\"'File Configurazione' | localize : lc\" [(ngModel)]=\"ParOnEdit.configfile\" name=\"configfile\"></form-checkbox>\n <form-checkbox [LabelInputRatio]=\"'3 9'\" [Label]=\"'Memoria' | localize : lc\" [(ngModel)]=\"ParOnEdit.memory\" name=\"memory\"></form-checkbox>\n <form-multiselect [LabelInputRatio]=\"'3 9'\" [Label]=\"'Applica solo a' | localize : lc\" [Source]=\"AvailableInstances\" name=\"instanceids\" [(ngModel)]=\"ParOnEdit.instanceids\" [Last]=\"true\"> </form-multiselect>\n }\n </div>\n }\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgEdit.hide()\">{{'Annulla' | localize : lc}}</button>\n <button type=\"submit\" contextAware class=\"btn btn-primary\">{{'Conferma' | localize : lc}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>","// Angular\r\nimport { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({ name: 'format_time' })\r\nexport class FormatTimePipe implements PipeTransform {\r\n\r\n constructor() { }\r\n\r\n transform(value: number | string) {\r\n return this.secondsToHms(value);\r\n }\r\n\r\n secondsToHms(d: number | string): string {\r\n d = Number(d);\r\n var h = Math.floor(d / 3600);\r\n var m = Math.floor(d % 3600 / 60);\r\n var s = Math.floor(d % 3600 % 60);\r\n \r\n var hDisplay = h > 0 ? h + \" h, \" : \"\";\r\n var mDisplay = m > 0 ? m + \" min, \" : \"\";\r\n var sDisplay = s > 0 ? s + \" sec\" : \"\";\r\n return hDisplay + mDisplay + sDisplay; \r\n }\r\n}","/** Chiave di questo modulo, da utilizzare per i messaggi */\r\nexport const MK_ADM = \"EsAdminModule\";\r\n\r\n/** Messaggi gestiti da questo modulo */\r\nexport enum AdmMessageTypes{\r\n Message\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { InterComService, InterComMessage } from \"@esfaenza/extensions\";\r\n\r\n// Modelli\r\nimport { AdmMessageTypes, MK_ADM } from \"./admin-feature-messages\";\r\n\r\ndeclare var myconfig;\r\n\r\n@Injectable()\r\nexport class AdminModuleCommService {\r\n\r\n constructor(private intercom: InterComService) { }\r\n\r\n public register() {\r\n this.intercom.register(MK_ADM);\r\n this.intercom.outbounds[MK_ADM].subscribe((t: InterComMessage) => { this.handleOutbound(t.type, t.message); });\r\n }\r\n\r\n private handleOutbound(type: AdmMessageTypes, message: any) {\r\n switch (type) {\r\n case AdmMessageTypes.Message:\r\n if (myconfig.DEBUG_MODE)\r\n console.log(\"@admin-feature outbound message: \" + message);\r\n break;\r\n }\r\n }\r\n}","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { RouterModule } from \"@angular/router\";\r\n\r\n// Libs\r\nimport { ModalModule } from \"ngx-bootstrap/modal\";\r\nimport { BsDropdownModule } from \"ngx-bootstrap/dropdown\";\r\nimport { TooltipModule } from \"ngx-bootstrap/tooltip\";\r\n\r\n// Esfaenza\r\nimport { EsTableModule } from \"@esfaenza/es-table\";\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\nimport { EsChartsModule } from \"@esfaenza/es-charts\";\r\nimport { EsGertrudeModule } from \"@esfaenza/gertrude\";\r\nimport { ExtensionsModule } from \"@esfaenza/extensions\";\r\nimport { LocalizationModule } from \"@esfaenza/localizations\";\r\nimport { ContextMenuModule } from \"@esfaenza/ngx-contextmenu\";\r\n\r\n// Components\r\nimport { AdmAuditsComponent } from \"./components/audits/adm_audits.component\";\r\nimport { AdmWrkComponent } from \"./components/workers/adm_wrk.component\";\r\nimport { AdmProfilerComponent } from \"./components/profiler/adm_profiler.component\";\r\nimport { AdmTopActivitiesComponent } from \"./components/topact/topact_search.component\";\r\nimport { AdmEnqComponent } from \"./components/enqueues/adm_enq.component\";\r\nimport { AdmMetricsComponent } from \"./components/metrics/metrics_search.component\";\r\nimport { AdmLogsComponent } from \"./components/logs/adm_logs.component\";\r\nimport { NodeDetailComponent } from \"./components/_shared/node_detail.component\";\r\nimport { AdmDynamicViewsComponent } from \"./components/dynamic_views/adm_dynamic_views.component\";\r\nimport { MtdQueryComponent } from \"./components/mtd_query/mtd_query.component\";\r\nimport { AdmSystemParametersComponent } from \"./components/syspars/adm_syspars.component\";\r\n\r\n// Pipes\r\nimport { FormatTimePipe } from \"./pipes/format_time.pipe\";\r\n\r\n// Communication Service\r\nimport { AdminModuleCommService } from \"./admin-feature.comms.service\";\r\n\r\n// Tokens\r\nimport { ADM_CONVERSATIONS } from \"./tokens\";\r\nimport { ComponentsModule } from \"@esfaenza/core/components\";\r\nimport { DirectivesModule } from \"@esfaenza/core/directives\";\r\n\r\ndeclare var myconfig;\r\n\r\nexport const routeConfig = [\r\n {\r\n path: \"\", children: [\r\n { path: \"serverworkers/:be\", component: AdmWrkComponent, data: { title: \"Ricerca Processi Applicativi\", internalNavigation: false } },\r\n { path: \"profiler/:be\", component: AdmProfilerComponent, data: { title: \"Profiler del Server\", internalNavigation: false } },\r\n { path: \"topact/:be\", component: AdmTopActivitiesComponent, data: { title: \"Attività Principali\", internalNavigation: false } },\r\n { path: \"metrics/:be\", component: AdmMetricsComponent, data: { title: \"Metriche di Sistema\", internalNavigation: false } },\r\n { path: \"serverlogs/:be\", component: AdmLogsComponent, data: { title: \"Log del Server\", internalNavigation: false } },\r\n { path: \"serveraudits/:be\", component: AdmAuditsComponent, data: { title: \"Ricerca Audit Applicativi\", internalNavigation: false } },\r\n { path: \"serverenqueues/:be\", component: AdmEnqComponent, data: { title: \"Ricerca Lock Applicativi\", internalNavigation: false } },\r\n { path: \"serverviews/:be\", component: AdmDynamicViewsComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } },\r\n { path: \"metadataquery/:be\", component: MtdQueryComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } },\r\n { path: \"serverworkers\", component: AdmWrkComponent, data: { title: \"Ricerca Processi Applicativi\", internalNavigation: false } },\r\n { path: \"profiler\", component: AdmProfilerComponent, data: { title: \"Profiler del Server\", internalNavigation: false } },\r\n { path: \"topact\", component: AdmTopActivitiesComponent, data: { title: \"Attività Principali\", internalNavigation: false } },\r\n { path: \"metrics\", component: AdmMetricsComponent, data: { title: \"Metriche di Sistema\", internalNavigation: false } },\r\n { path: \"serverlogs\", component: AdmLogsComponent, data: { title: \"Log del Server\", internalNavigation: false } },\r\n { path: \"serveraudits\", component: AdmAuditsComponent, data: { title: \"Ricerca Audit Applicativi\", internalNavigation: false } },\r\n { path: \"serverenqueues\", component: AdmEnqComponent, data: { title: \"Ricerca Lock Applicativi\", internalNavigation: false } },\r\n { path: \"serverviews\", component: AdmDynamicViewsComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } },\r\n { path: \"metadataquery\", component: MtdQueryComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } },\r\n { path: \"syspars\", component: AdmSystemParametersComponent, data: { title: \"Parametri di sistema\", internalNavigation: false } }]\r\n }\r\n];\r\n\r\nconst MODULES = [\r\n // Base\r\n CommonModule,\r\n FormsModule,\r\n\r\n // Bootstrap\r\n ModalModule,\r\n TooltipModule,\r\n BsDropdownModule,\r\n\r\n // Esfaenza e componenti visuali\r\n ContextMenuModule,\r\n LocalizationModule,\r\n ExtensionsModule,\r\n EsTableModule,\r\n FormsAndValidationsModule,\r\n EsGertrudeModule,\r\n EsChartsModule,\r\n ComponentsModule,\r\n DirectivesModule,\r\n\r\n RouterModule.forChild(routeConfig),\r\n];\r\n\r\nconst COMPONENTS = [\r\n AdmWrkComponent,\r\n AdmProfilerComponent,\r\n AdmTopActivitiesComponent,\r\n AdmDynamicViewsComponent,\r\n AdmLogsComponent,\r\n AdmAuditsComponent,\r\n AdmEnqComponent,\r\n AdmMetricsComponent,\r\n NodeDetailComponent,\r\n MtdQueryComponent,\r\n AdmSystemParametersComponent\r\n];\r\n\r\nconst PIPES = [\r\n FormatTimePipe\r\n]\r\n\r\n@NgModule({\r\n imports: [...MODULES, ...PIPES],\r\n declarations: [...COMPONENTS],\r\n providers: [\r\n AdminModuleCommService,\r\n { provide: ADM_CONVERSATIONS, useFactory: () => !!myconfig.TransactionTimeoutSeconds }\r\n ]\r\n})\r\nexport class AdmModule {\r\n constructor(private commService: AdminModuleCommService) {\r\n console.log(\"@esfaenza/admin-feature: BOOTSTRAP\");\r\n this.commService.register();\r\n }\r\n}","/*\r\n * Public API Surface of admin-feature\r\n */\r\n\r\nexport * from './lib/admin-feature.module';\r\nexport * from './lib/tokens';\r\nexport * from \"./lib/admin-feature-messages\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i6.AdminModuleBaseService","i8","i9","i10","i11","i3","i12.NodeDetailComponent","i4","i12","i13.NodeDetailComponent","i1","i4.AdminModuleBaseService","i5","i6","KeyValue","i1.AdminModuleCommService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"esfaenza-admin-module.mjs","sources":["../../../projects/admin-feature/src/lib/models/components/AuditsView.ts","../../../projects/admin-feature/src/lib/tokens.ts","../../../projects/admin-feature/src/lib/components/audits/adm_audits.component.loc.ts","../../../projects/admin-feature/src/lib/services/admin-feature.base.service.ts","../../../projects/admin-feature/src/lib/components/audits/adm_audits.component.ts","../../../projects/admin-feature/src/lib/components/audits/adm_audits.component.html","../../../projects/admin-feature/src/lib/models/shared/KeyValue.ts","../../../projects/admin-feature/src/lib/models/components/ProcessesView.ts","../../../projects/admin-feature/src/lib/components/workers/adm_wrk.component.loc.ts","../../../projects/admin-feature/src/lib/components/workers/adm_wrk.component.ts","../../../projects/admin-feature/src/lib/components/workers/adm_wrk.component.html","../../../projects/admin-feature/src/lib/models/components/ProfilerDataNode.loc.ts","../../../projects/admin-feature/src/lib/models/components/ProfilerDataNode.ts","../../../projects/admin-feature/src/lib/models/components/ProfilerDataNodesView.ts","../../../projects/admin-feature/src/lib/components/profiler/adm_profiler.component.loc.ts","../../../projects/admin-feature/src/lib/components/_shared/node_detail.component.loc.ts","../../../projects/admin-feature/src/lib/components/_shared/node_detail.component.ts","../../../projects/admin-feature/src/lib/components/_shared/node_detail.component.html","../../../projects/admin-feature/src/lib/components/profiler/adm_profiler.component.ts","../../../projects/admin-feature/src/lib/components/profiler/adm_profiler.component.html","../../../projects/admin-feature/src/lib/models/components/TopActivitiesDataView.ts","../../../projects/admin-feature/src/lib/components/topact/topact_search.component.loc.ts","../../../projects/admin-feature/src/lib/components/topact/topact_search.component.ts","../../../projects/admin-feature/src/lib/components/topact/topact_search.component.html","../../../projects/admin-feature/src/lib/models/components/LocksView.ts","../../../projects/admin-feature/src/lib/components/enqueues/adm_enq.component.loc.ts","../../../projects/admin-feature/src/lib/components/enqueues/adm_enq.component.ts","../../../projects/admin-feature/src/lib/components/enqueues/adm_enq.component.html","../../../projects/admin-feature/src/lib/models/components/MetricsView.ts","../../../projects/admin-feature/src/lib/components/metrics/metrics_search.component.loc.ts","../../../projects/admin-feature/src/lib/components/metrics/metrics_search.component.ts","../../../projects/admin-feature/src/lib/components/metrics/metrics_search.component.html","../../../projects/admin-feature/src/lib/components/logs/adm_logs.component.loc.ts","../../../projects/admin-feature/src/lib/components/logs/adm_logs.component.ts","../../../projects/admin-feature/src/lib/components/logs/adm_logs.component.html","../../../projects/admin-feature/src/lib/models/components/DynamicViewsView.ts","../../../projects/admin-feature/src/lib/components/dynamic_views/adm_dynamic_views.component.loc.ts","../../../projects/admin-feature/src/lib/components/dynamic_views/adm_dynamic_views.component.ts","../../../projects/admin-feature/src/lib/components/dynamic_views/adm_dynamic_views.component.html","../../../projects/admin-feature/src/lib/models/components/QueryView.ts","../../../projects/admin-feature/src/lib/components/mtd_query/mtd_query.component.loc.ts","../../../projects/admin-feature/src/lib/components/mtd_query/mtd_query.component.ts","../../../projects/admin-feature/src/lib/components/mtd_query/mtd_query.component.html","../../../projects/admin-feature/src/lib/models/components/SystemParametersView.ts","../../../projects/admin-feature/src/lib/components/syspars/adm_syspars.component.loc.ts","../../../projects/admin-feature/src/lib/components/syspars/adm_syspars.component.ts","../../../projects/admin-feature/src/lib/components/syspars/adm_syspars.component.html","../../../projects/admin-feature/src/lib/pipes/format_time.pipe.ts","../../../projects/admin-feature/src/lib/admin-feature-messages.ts","../../../projects/admin-feature/src/lib/admin-feature.comms.service.ts","../../../projects/admin-feature/src/lib/admin-feature.module.ts","../../../projects/admin-feature/src/public-api.ts","../../../projects/admin-feature/src/esfaenza-admin-module.ts"],"sourcesContent":["import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { Audit } from \"./Audit\";\r\n\r\nexport class AuditsView extends AppSearch<Audit> {\r\n constructor() {\r\n super();\r\n this.filteraction = '';\r\n this.filterhttp = '';\r\n }\r\n\r\n filterda: string;\r\n filtera: string;\r\n filteruser: string;\r\n filterroute: string;\r\n filteraction: string;\r\n filteraddress: string;\r\n filterhttp: string;\r\n filterargs: string;\r\n filterobjid: string;\r\n filterobjtype: string;\r\n filterconversationid: string;\r\n filterhttpcode: string;\r\n}","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const ADM_MODULE_PATH: InjectionToken<string> = new InjectionToken<string>('ADM_MODULE_PATH');\r\nexport const ADM_CONVERSATIONS: InjectionToken<boolean> = new InjectionToken<boolean>('ADM_CONVERSATIONS');","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmAuditLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Ricerca Audit Applicativi\", [\"Search Application Audits\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Chiamata REST\", [\"REST Call\"]);\r\n super.set(\"it->en\", \"Aggiornamento\", [\"Update\"]);\r\n super.set(\"it->en\", \"Route\", [\"Route\"]);\r\n super.set(\"it->en\", \"Azione\", [\"Action\"]);\r\n super.set(\"it->en\", \"Metodo HTTP\", [\"HTTP Method\"]);\r\n super.set(\"it->en\", \"Argomenti\", [\"Arguments\"]);\r\n super.set(\"it->en\", \"ID Oggetto\", [\"Object ID\"]);\r\n super.set(\"it->en\", \"Tipo Oggetto\", [\"Object Type\"]);\r\n super.set(\"it->en\", \"Dati Oggetto\", [\"Object Data\"]);\r\n super.set(\"it->en\", \"Carico gli Audit dell'Applicazione\", [\"Loading Application Audits\"]);\r\n super.set(\"it->en\", \"Data\", [\"Date\"]);\r\n super.set(\"it->en\", \"Indirizzo\", [\"Address\"]);\r\n super.set(\"it->en\", \"Risposta HTTP\", [\"HTTP Response\"]);\r\n super.set(\"it->en\", \"Codice Errore Applicativo\", [\"Application Error Code\"]);\r\n super.set(\"it->en\", \"Cod. Conversation\", [\"Conversation ID\"]);\r\n }\r\n}","// Angular\r\nimport { Injectable, Injector } from \"@angular/core\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\n\r\n// ES\r\nimport { CallResult, MessageService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Configurazioni\r\nimport { ProcessesView } from \"../models/components/ProcessesView\";\r\nimport { firstValueFrom, catchError, of } from \"rxjs\";\r\nimport { KeyValue } from \"@esfaenza/core/domain\";\r\nimport { TopActivitiesDataView } from \"../models/components/TopActivitiesDataView\";\r\nimport { DirectorInfos } from \"../models/components/DirectorInfos\";\r\nimport { NodeStats } from \"../models/components/NodeStats\";\r\nimport { SessionStats } from \"../models/components/SessionStats\";\r\nimport { ProfilerDataNodesView } from \"../models/components/ProfilerDataNodesView\";\r\nimport { MetricsView } from \"../models/components/MetricsView\";\r\nimport { Metric } from \"../models/components/Metric\";\r\nimport { LocksView } from \"../models/components/LocksView\";\r\nimport { DynamicViewsView } from \"../models/components/DynamicViewsView\";\r\nimport { AuditsView } from \"../models/components/AuditsView\";\r\nimport { QueryView } from \"../models/components/QueryView\";\r\nimport { SystemParametersView } from \"../models/components/SystemParametersView\";\r\nimport { SystemParameters } from \"../models/components/SystemParameters\";\r\n\r\n// Chiamate ai Repository\r\nconst GET_Director_ChangeProcessConsumerGroup: string = \"/api/Director/ChangeProcessConsumerGroup\";\r\nconst GET_Director_GetConsumerGroups: string = \"/api/Director/GetConsumerGroups#cache\";\r\nconst GET_Director_GetInfos: string = \"/api/Director/GetInfos\";\r\nconst GET_Director_GetMetrics: string = \"/api/Director/GetMetrics\";\r\nconst POST_Director_GetMetrics: string = \"/api/Director/GetMetrics\";\r\nconst POST_Director_GetProfilerDataNodes: string = \"/api/Director/GetProfilerDataNodes\";\r\nconst GET_Director_GetWorkloadReport: string = \"/api/Director/GetWorkloadReport\";\r\nconst POST_Director_GetServerAudits: string = \"/api/Director/GetServerAudits\";\r\nconst POST_Director_GetDynamicViewData: string = \"/api/Director/GetDynamicViewData\";\r\nconst POST_Director_GetServerLocks: string = \"/api/Director/GetServerLocks\";\r\nconst POST_Director_GetServerQuery: string = \"/api/Director/GetServerQuery\";\r\nconst GET_Director_GetServerLogs: string = \"/api/Director/GetServerLogs\";\r\nconst GET_Director_GetDynamicViews: string = \"/api/Director/GetDynamicViews\";\r\nconst POST_Director_GetServerWorkers: string = \"/api/Director/GetServerWorkers\";\r\nconst POST_Director_GetTopActivities: string = \"/api/Director/GetTopActivities\";\r\nconst GET_Director_KillProcess: string = \"/api/Director/KillProcess\";\r\nconst GET_Director_SetProcessTracing: string = \"/api/Director/SetProcessTracing\";\r\nconst GET_Director_GetNodeStats: string = \"/api/Director/GetNodeStats\";\r\nconst GET_Director_GetSessionStats: string = \"/api/Director/GetSessionStats\";\r\nconst POST_Director_GetSystemParameters: string = \"/api/Director/GetSystemParameters\";\r\nconst POST_Director_UpdatSystemParameter: string = \"/api/Director/UpdatSystemParameter\";\r\nconst GET_Director_ResetSystemParameter: string = \"/api/Director/ResetSystemParameter\";\r\nconst GET_Director_GetInstances: string = \"/api/Director/GetInstances\";\r\nconst GET_Director_GetLogTargets: string = \"/api/Director/GetLogTargets\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AdminModuleBaseService {\r\n public http: HTTPService;\r\n public msgExts: MessageService;\r\n\r\n constructor(private injector: Injector) {\r\n this.http = this.injector.get(HTTPService);\r\n this.msgExts = this.injector.get(MessageService);\r\n }\r\n\r\n public async getServerWorkers(be: string, sv: ProcessesView): Promise<ProcessesView> {\r\n var pars = new HttpParams().set(\"be\", be);\r\n\r\n let ret: ProcessesView = await firstValueFrom(this.http.post<ProcessesView>(POST_Director_GetServerWorkers, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async doSetProcessTracing(be: string, instanceid: string, sid: string, serial: string, enable: string): Promise<string> {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", instanceid ?? \"\")\r\n .set(\"sid\", sid ?? \"\")\r\n .set(\"serial\", serial ?? \"\")\r\n .set(\"enable\", enable ?? \"\")\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_SetProcessTracing, pars));\r\n return ret;\r\n }\r\n\r\n public async doKillProcess(be: string, instanceid: string, sid: string, serial: string): Promise<string> {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", instanceid ?? \"\")\r\n .set(\"sid\", sid ?? \"\")\r\n .set(\"serial\", serial ?? \"\")\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_KillProcess, pars));\r\n return ret;\r\n }\r\n\r\n public async doChangeProcessConsumerGroup(be: string, instanceid: string, sid: string, serial: string, consumerGroup: string): Promise<string> {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", instanceid ?? \"\")\r\n .set(\"sid\", sid ?? \"\")\r\n .set(\"serial\", serial ?? \"\")\r\n .set(\"consumer_group\", consumerGroup ?? \"\")\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_ChangeProcessConsumerGroup, pars));\r\n return ret;\r\n }\r\n\r\n public async getConsumerGroups(be: string): Promise<KeyValue[]> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetConsumerGroups, pars));\r\n return ret;\r\n }\r\n\r\n public async getServerLogs(be: string, from: string, to: string, instance: string, target: string): Promise<string> {\r\n var pars = new HttpParams().set(\"from\", from ?? \"\").set(\"to\", to ?? \"\").set(\"instance\", instance ?? \"\").set(\"target\", target ?? \"\").set(\"be\", be ?? \"\");\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_GetServerLogs, pars));\r\n return ret;\r\n }\r\n\r\n public async getTopActivities(be: string, sv: TopActivitiesDataView): Promise<TopActivitiesDataView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: TopActivitiesDataView = await firstValueFrom(this.http.post<TopActivitiesDataView>(POST_Director_GetTopActivities, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getInfos(be: string): Promise<DirectorInfos> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: DirectorInfos = await firstValueFrom(this.http.get<DirectorInfos>(GET_Director_GetInfos, pars, null, false).pipe(catchError(_ => of(null as DirectorInfos))));\r\n return ret;\r\n }\r\n\r\n public async getNodeStats(be: string, nodeId: string, global: boolean = false): Promise<NodeStats> {\r\n let pars = new HttpParams().set(\"nodeId\", nodeId ?? \"\").set(\"be\", be ?? \"\").set(\"global\", global);\r\n let ret: NodeStats = await firstValueFrom(this.http.get<NodeStats>(GET_Director_GetNodeStats, pars));\r\n return ret;\r\n }\r\n\r\n public async getSessionStats(be: string, sid: string, serial: string, instance: string): Promise<SessionStats> {\r\n let pars = new HttpParams().set('sid', sid ?? \"\").set('serial', serial ?? \"\").set('instanceid', instance ?? \"\").set(\"be\", be ?? \"\");\r\n let ret: SessionStats = await firstValueFrom(this.http.get<SessionStats>(GET_Director_GetSessionStats, pars));\r\n return ret;\r\n }\r\n\r\n public async getProfilerDataNodes(be: string, sv: ProfilerDataNodesView): Promise<ProfilerDataNodesView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: ProfilerDataNodesView = await firstValueFrom(this.http.post<ProfilerDataNodesView>(POST_Director_GetProfilerDataNodes, sv, pars));\r\n return ret;\r\n }\r\n\r\n public downloadWorkloadReport(be: string, from: string, to: string, global: boolean = false) {\r\n let pars = new HttpParams().set(\"from\", from ?? \"\").set(\"to\", to ?? \"\").set(\"be\", be ?? \"\").set(\"global\", global);\r\n this.http.getFileNative(GET_Director_GetWorkloadReport, pars);\r\n }\r\n\r\n public async getMetrics(be: string, sv: MetricsView): Promise<MetricsView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: MetricsView = await firstValueFrom(this.http.post<MetricsView>(POST_Director_GetMetrics, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getMetricsList(be: string, from: string, to: string): Promise<Metric[]> {\r\n let pars = new HttpParams()\r\n .set(\"from\", from ?? \"\")\r\n .set(\"to\", to ?? \"\")\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: Metric[] = await firstValueFrom(this.http.get<Metric[]>(GET_Director_GetMetrics, pars));\r\n return ret.sort((a, b) => a.name.localeCompare(b.name));\r\n }\r\n\r\n public async getServerLocks(be: string, sv: LocksView): Promise<LocksView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: LocksView = await firstValueFrom(this.http.post<LocksView>(POST_Director_GetServerLocks, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getServerQuery(be: string, sv: QueryView): Promise<QueryView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: QueryView = await firstValueFrom(this.http.post<QueryView>(POST_Director_GetServerQuery, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getDynamicViewData(be: string, sv: DynamicViewsView): Promise<DynamicViewsView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: DynamicViewsView = await firstValueFrom(this.http.post<DynamicViewsView>(POST_Director_GetDynamicViewData, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getDynamicViews(be: string): Promise<KeyValue[]> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetDynamicViews, pars));\r\n return ret;\r\n }\r\n\r\n public async getServerAudits(be: string, sv: AuditsView): Promise<AuditsView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: AuditsView = await firstValueFrom(this.http.post<AuditsView>(POST_Director_GetServerAudits, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getSystemParameters(be: string, sv: SystemParametersView): Promise<SystemParametersView> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: SystemParametersView = await firstValueFrom(this.http.post<SystemParametersView>(POST_Director_GetSystemParameters, sv, pars));\r\n return ret;\r\n }\r\n\r\n public async getInstances(be: string): Promise<KeyValue[]> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetInstances, pars));\r\n return ret;\r\n }\r\n\r\n \r\n public async getLogTargets(be: string, instance: string): Promise<KeyValue[]> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\").set(\"instance\", instance ?? \"\");\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetLogTargets, pars));\r\n return ret;\r\n }\r\n\r\n public async updateSystemParameter(be: string, dto: SystemParameters): Promise<string> {\r\n var pars = new HttpParams().set(\"be\", be ?? \"\");\r\n let ret: string = await firstValueFrom(this.http.post<string>(POST_Director_UpdatSystemParameter, dto, pars));\r\n return ret;\r\n }\r\n\r\n public async resetSystemParameter(be: string, parId: string, level: string): Promise<string> {\r\n let pars = new HttpParams()\r\n .set(\"parId\", parId)\r\n .set(\"level\", level)\r\n .set(\"be\", be ?? \"\");\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_ResetSystemParameter, pars));\r\n return ret;\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { InterComService, InboundMessageTypes, ClipboardService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { AuditsView } from \"../../models/components/AuditsView\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { ADM_MODULE_PATH, ADM_CONVERSATIONS } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmAuditLoc } from \"./adm_audits.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"adm_audits\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }],\r\n templateUrl: \"./adm_audits.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmAuditsComponent {\r\n\r\n public searchView: AuditsView = new AuditsView();\r\n public Actions: KeyValue[] = [];\r\n public HttpMethods: KeyValue[] = [];\r\n public searchInProgress: boolean = false;\r\n public storageSub: any;\r\n\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private intercom: InterComService,\r\n private localStorage: PreferencesService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n public exts: ClipboardService,\r\n @Inject(ADM_MODULE_PATH) private mod: string,\r\n @Inject(ADM_CONVERSATIONS) public usesConversations: boolean) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n\r\n this.HttpMethods = [\r\n { id: \"GET\", description: \"GET\" },\r\n { id: \"POST\", description: \"POST\" },\r\n { id: \"PUT\", description: \"PUT\" },\r\n { id: \"PATCH\", description: \"PATCH\" },\r\n { id: \"DELETE\", description: \"DELETE\" }\r\n ];\r\n\r\n this.Actions = [\r\n { id: \"C\", description: this.lc.loc(\"Chiamata REST\") },\r\n { id: \"U\", description: this.lc.loc(\"Aggiornamento\") },\r\n { id: \"D\", description: this.lc.loc(\"Elimina\") }\r\n ];\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<AuditsView>(\"HotAudittato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serveraudits`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotAudittato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: AuditsView) {\r\n //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti\r\n //Altirmenti genero il modello nuovo normalmente\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetProcesses(this.searchView);\r\n }\r\n else {\r\n this.searchView = new AuditsView();\r\n this.searchView.filterda = dayjs().add(-1, \"month\").format(this.lc.token(\"getSmallDateFormat\"));\r\n this.searchView.filtera = dayjs().format(this.lc.token(\"getSmallDateFormat\"));\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchInProgress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetProcesses(this.searchView);\r\n }\r\n\r\n async POSTGetProcesses(data: AuditsView) {\r\n this.searchView = await this.adms.getServerAudits(this.be, data);\r\n this.searchInProgress = false;\r\n this.localStorage.setItem(\"HotAudittato\", this.searchView).subscribe();\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Ricerca Audit Applicativi' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row\">\n <div class=\"col-md-11\">\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'Da' | localize: lc\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'A' | localize: lc\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'Utente' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteraddress\" name=\"filteraddress\" [Placeholder]=\"'Indirizzo' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [Placeholder]=\"'Azione' | localize: lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\n </div>\n </div>\n <div class=\"col-md-12 row app-no-padding\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [Placeholder]=\"'Metodo HTTP' | localize: lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Argomenti' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'ID Oggetto' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Tipo Oggetto' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterhttpcode\" name=\"filterhttpcode\" [Placeholder]=\"'Risposta HTTP' | localize: lc\"></form-input>\n </div>\n <!-- Per ora commentato -->\n <!-- <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" *ngIf=\"usesConversations\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterconversationid\" name=\"filterconversationid\" [Placeholder]=\"'Cod. Conversation' | localize: lc\"></form-input>\n </div> -->\n </div>\n </div>\n <div class=\"col-md-1 app-no-padding\">\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </div>\n </form>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico gli Audit dell\\'Applicazione' | localize: lc}}...</em></p>\n }\n @if (searchView) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [MultipleOrderingDirectives]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\n <span *th=\"'Timestamp'\">{{'Data' | localize: lc}}</span>\n <span *th=\"'User'\">{{'Utente' | localize: lc}}</span>\n <span *th=\"'RemoteAddress'\">{{'Indirizzo' | localize: lc}}</span>\n <span *th=\"'Action'\">{{'Azione' | localize: lc}}</span>\n <span *th=\"'HttpMethod'\">{{'Metodo HTTP' | localize: lc}}</span>\n <span *th=\"'Route'\">{{'Route' | localize : lc}}</span>\n <span *th=\"'Args'\">{{'Argomenti' | localize: lc}}</span>\n <span *th=\"'HttpResponse'\">{{'Risposta HTTP' | localize: lc}}</span>\n <span *th=\"'NonStdErrorMessage'\">{{'Codice Errore Applicativo' | localize: lc}}</span>\n <span *th=\"'ConvId'; If: usesConversations\">{{'Cod. Conversation' | localize: lc}}</span>\n <span *th=\"'ObjectType'\">{{'Tipo Oggetto' | localize: lc}}</span>\n <span *th=\"'ObjectId'\">{{'ID Oggetto' | localize: lc}}</span>\n <span *th=\"'ObjectData'\">{{'Dati Oggetto' | localize: lc}}</span>\n <strong *td=\"'Timestamp'; let item\">{{item.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong>\n <span *td=\"'User'; let item\">{{item.user}}</span>\n <span *td=\"'RemoteAddress'; let item\">{{item.address}}</span>\n <span *td=\"'Action'; let item\">{{item.action}}</span>\n <span *td=\"'HttpMethod'; let item\">{{item.httpmethod}}</span>\n <span *td=\"'Route'; let item\">{{item.route}}</span>\n <span *td=\"'Args'; let item\" class=\"app-pointer\" title=\"Click per copiarlo nella clipboard\" (click)=\"exts.copyTextToClipboard(item.args)\">{{item.args}}</span>\n <span *td=\"'HttpResponse'; let item\">{{item.httpresponse}}</span>\n <span *td=\"'NonStdErrorMessage'; let item\">{{item.mdmerrorcode}}</span>\n <span *td=\"'ConvId'; If: usesConversations; let item\">{{item.conversationid}}</span>\n <span *td=\"'ObjectType'; let item\">{{item.objecttype}}</span>\n <span *td=\"'ObjectId'; let item\">{{item.objectid}}</span>\n <span *td=\"'ObjectData'; let item\">{{item.objectdata}}</span>\n </es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n</div>","export class KeyValue {\r\n constructor(public id: string, public description: string) { }\r\n}","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class ProcessesView extends AppSearch<GenericItem> {\r\n constructor() { super(); }\r\n\r\n filtertenant: string;\r\n filteruser: string;\r\n filterstate: string;\r\n filterglobal: boolean;\r\n filtertype: string;\r\n filterthreadtype: string;\r\n filterthreadstatus: string;\r\n filterinwait: boolean;\r\n filtersid: string;\r\n filtertid: string;\r\n filtermtid: string;\r\n filterdcid: boolean;\r\n\r\n filterbe: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmWrkLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Gruppo di Consumo modificato con successo\", [\"Consumer Group succesfully changed\"]);\r\n super.set(\"it->en\", \"Errori nella modifica del Gruppo di Consumo\", [\"Errors changing Consumer Group\"]);\r\n super.set(\"it->en\", \"Modifica Gruppo di Consumo\", [\"Change Consumer Group\"]);\r\n super.set(\"it->en\", \"Nuovo Gruppo di Consumo\", [\"New Consumer Group\"]);\r\n super.set(\"it->en\", \"Tipo Thread\", [\"Thread Type\"]);\r\n super.set(\"it->en\", \"Stato Thread\", [\"Thread Status\"]);\r\n super.set(\"it->en\", \"Tipo\", [\"Type\"]);\r\n super.set(\"it->en\", \"Stato\", [\"State\"]);\r\n super.set(\"it->en\", \"SID\", [\"SID\"]);\r\n super.set(\"it->en\", \"TID\", [\"TID\"]);\r\n super.set(\"it->en\", \"In Attesa\", [\"In Wait\"]);\r\n super.set(\"it->en\", \"Push dedicato connesso\", [\"Dedicated push connected\"]);\r\n super.set(\"it->en\", \"Ricerca globale\", [\"Global search\"]);\r\n super.set(\"it->en\", \"Ricerca Processi Applicativi\", [\"Search Application Processes\"]);\r\n super.set(\"it->en\", \"Tenant\", [\"Tenant\"]);\r\n super.set(\"it->en\", \"Errori nella modifica del Tracing del Processo\", [\"Errors toggling Process Tracing\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Carico i Processi Applicativi\", [\"Loading Application Processes\"]);\r\n super.set(\"it->en\", \"Attiva Tracing Processo\", [\"Activate Process Tracing\"]);\r\n super.set(\"it->en\", \"Disattiva Tracing Progetto\", [\"Deactivate Process Tracing\"]);\r\n super.set(\"it->en\", \"Ammazza Processo\", [\"Kill Process\"]);\r\n super.set(\"it->en\", \"Errori durante la Kill del Processo\", [\"Errors killing the Process\"]);\r\n super.set(\"it->en\", \"Processo ucciso con successo\", [\"Process succesfully killed\"]);\r\n super.set(\"it->en\", \"Conferma Terminazione del Processo\", [\"Confirm Process Kill\"]);\r\n super.set(\"it->en\", \"Sei sicuro di voler Terminare il processo selezionato? L'utente relativo sara' disconnesso\", [\"Are you sure you wish to kill the selected process? The associated user will be disconnected\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { NgForm } from \"@angular/forms\";\r\n\r\n// Configurazioni\r\nimport { InboundMessageTypes, InterComService, MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { EsTableOperationDefinition } from \"@esfaenza/es-table\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { ModalDirective } from \"ngx-bootstrap/modal\";\r\n\r\n// Applicazione\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { ProcessesView } from \"../../models/components/ProcessesView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmWrkLoc } from \"./adm_wrk.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { GenericItem } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"adm_wrk\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmWrkLoc }],\r\n templateUrl: \"./adm_wrk.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmWrkComponent {\r\n\r\n private globalFilterValue = null;\r\n\r\n public searchView: ProcessesView = new ProcessesView();\r\n public DynamicOps: EsTableOperationDefinition[] = [];\r\n public storageSub: any;\r\n public valueToShow: string = \"\";\r\n\r\n public Types: KeyValue[] = [];\r\n public States: KeyValue[] = [];\r\n public ThreadTypes: KeyValue[] = [];\r\n public ThreadStatuses: KeyValue[] = [];\r\n\r\n private be: string;\r\n constructor(\r\n private utiExts: UtilityService,\r\n private msgExts: MessageService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.DynamicOps = [\r\n new EsTableOperationDefinition(\"trace_on\", this.lc.loc(\"Attiva Tracing Processo\"), \"fa fa-circle text-danger\", \"\", \"trace_enabled\", \"N\"),\r\n new EsTableOperationDefinition(\"trace_off\", this.lc.loc(\"Disattiva Tracing Progetto\"), \"fa fa-circle text-success\", \"\", \"trace_enabled\", \"Y\"),\r\n new EsTableOperationDefinition(\"kill\", this.lc.loc(\"Ammazza Processo\"), \"fa fa-ban text-danger\"),\r\n new EsTableOperationDefinition(\"change_cg\", this.lc.loc(\"Modifica Gruppo di Consumo\"), \"fa fa-edit text-info\")\r\n ];\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n Init(ignoreStorage) {\r\n this.Types = [new KeyValue(\"USER\", \"USER\"), new KeyValue(\"BACKGROUND\", \"BACKGROUND\"), new KeyValue(\"JOB\", \"JOB\")];\r\n this.States = [new KeyValue(\"ACTIVE\", \"ACTIVE\"), new KeyValue(\"INACTIVE\", \"INACTIVE\"), new KeyValue(\"KILLED\", \"KILLED\")];\r\n this.ThreadTypes = [\"APITHREAD\", \"APIPUSHTHREAD\", \"BACKGROUNDTHREAD\", \"JOBTHREAD\", \"PARALLELSLAVETHREAD\"].map(t => new KeyValue(t, t));\r\n this.ThreadStatuses = [\"ACTIVE\", \"IDLE\", \"THROTTLING\", \"KILLED\"].map(t => new KeyValue(t, t));\r\n this.doInit(ignoreStorage);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<ProcessesView>(\"HotProcessato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverworkers`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotProcessato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: ProcessesView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetServerWorkers();\r\n }\r\n else {\r\n this.searchView = new ProcessesView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n this.searchView.columns = [];\r\n this.searchView.column_ordering = [];\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetServerWorkers();\r\n }\r\n\r\n async POSTGetServerWorkers() {\r\n // Switch cattivo per resettare la tabella quando cambia il global (dato che potrebbero cambiare le colonne)\r\n // La casistica è esplicitamente non supportata dall'estable quindi abbozzo un hard refresh da qui...\r\n if (this.globalFilterValue != null && this.globalFilterValue != this.searchView.filterglobal) {\r\n let prevSearchView = this.utiExts.deepClone(this.searchView);\r\n this.searchView = null;\r\n requestAnimationFrame(async () => {\r\n this.globalFilterValue = prevSearchView.filterglobal;\r\n this.searchView = await this.adms.getServerWorkers(this.be, prevSearchView);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotProcessato\", this.searchView).subscribe();\r\n });\r\n }\r\n else {\r\n this.globalFilterValue = this.searchView.filterglobal || false;\r\n this.searchView = await this.adms.getServerWorkers(this.be, this.searchView);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotProcessato\", this.searchView).subscribe();\r\n }\r\n }\r\n\r\n async prepareExport(callback) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let tmp = await this.adms.getServerWorkers(this.be, view);\r\n callback(tmp.items, GenericItem);\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n onOperation(event: { id: string, item: any }) {\r\n switch (event.id) {\r\n case \"trace_on\": this.toggleTracing(event.item, true); break;\r\n case \"trace_off\": this.toggleTracing(event.item, false); break;\r\n case \"kill\": this.killProcess(event.item); break;\r\n case \"change_cg\": this.changeProcessCg(event.item); break;\r\n }\r\n }\r\n\r\n async toggleTracing(process: any, tracing: boolean) {\r\n let res = await this.adms.doSetProcessTracing(this.be, (process.properties[\"inst_id\"] || process.properties[\"INST_ID\"] || \"\"), process.properties[\"sid\"] || process.properties[\"SID\"], process.properties[\"serial\"] || process.properties[\"SERIAL\"], tracing.toString());\r\n this.msgExts.manageStringResponse(res, \"\", this.lc.loc(\"Errori nella modifica del Tracing del Processo\"), () => this.sendSearch());\r\n }\r\n\r\n killProcess(process: any) {\r\n this.msgExts.simpleWarningWithChoice(\r\n this.lc.loc(\"Conferma Terminazione del Processo\"),\r\n this.lc.loc(\"Sei sicuro di voler Terminare il processo selezionato? L'utente relativo sara' disconnesso\"),\r\n async () => {\r\n let res = await this.adms.doKillProcess(this.be, (process.properties[\"inst_id\"] || process.properties[\"INST_ID\"] || \"\"), process.properties[\"sid\"] || process.properties[\"SID\"], process.properties[\"serial\"] || process.properties[\"SERIAL\"]);\r\n this.msgExts.manageStringResponse(res, this.lc.loc(\"Processo ucciso con successo\"), this.lc.loc(\"Errori durante la Kill del Processo\"), () => this.sendSearch());\r\n });\r\n }\r\n\r\n //********************************************** Gestione modifica Consumer Group ***************************************\r\n\r\n newCg: string = \"\";\r\n CGs: KeyValue[] = [];\r\n CgDictionariesLoaded: boolean = false;\r\n ProcessOnEdit: any;\r\n\r\n @ViewChild(\"cgFrom\") cgFrom: NgForm;\r\n @ViewChild(\"dlgChangeCg\") dlgChangeCg: ModalDirective;\r\n\r\n changeProcessCg(process: any) {\r\n this.ProcessOnEdit = process;\r\n if (!this.CgDictionariesLoaded) {\r\n this.loadCgDictionaries();\r\n this.CgDictionariesLoaded = true;\r\n }\r\n this.setupChangeCg();\r\n this.dlgChangeCg.show();\r\n }\r\n\r\n async loadCgDictionaries() {\r\n this.CGs = await this.adms.getConsumerGroups(this.be);\r\n }\r\n\r\n setupChangeCg() {\r\n this.utiExts.cleanForm(this.cgFrom)\r\n setTimeout(() => { this.newCg = \"\" });\r\n }\r\n\r\n async doChangeCg() {\r\n let res = await this.adms.doChangeProcessConsumerGroup(this.be, this.ProcessOnEdit.properties[\"inst_id\"] || this.ProcessOnEdit.properties[\"INST_ID\"], this.ProcessOnEdit.properties[\"sid\"] || this.ProcessOnEdit.properties[\"SID\"], this.ProcessOnEdit.properties[\"serial\"] || this.ProcessOnEdit.properties[\"SERIAL\"], this.newCg);\r\n this.msgExts.manageStringResponse(res, this.lc.loc(\"Gruppo di Consumo modificato con successo\"), this.lc.loc(\"Errori nella modifica del Gruppo di Consumo\"), () => this.sendSearch());\r\n return true;\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Ricerca Processi Applicativi' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n @if (searchView) {\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row\">\n <div class=\"col-md-11\">\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-1 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox> \n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Ricerca globale' | localize: lc}}</span>\n </div>\n <div class=\"col-xl-2 col-lg-1 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtersid\" name=\"filtersid\" [Placeholder]=\"'SID'| localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertype\" name=\"filtertype\" [Placeholder]=\"'Tipo' | localize: lc\" [Source]=\"Types\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-1 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertenant\" name=\"filterTenant\" [Placeholder]=\"'Tenant' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filterUser\" [Placeholder]=\"'Utente' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterstate\" name=\"filterState\" [Placeholder]=\"'Stato' | localize: lc\" [Source]=\"States\"></form-select>\n </div>\n </div>\n <div class=\"col-md-12 row app-no-padding\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertid\" name=\"filtertid\" [Placeholder]=\"'TID'| localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtermtid\" name=\"filtermtid\" [Placeholder]=\"'Thread gestito'| localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterthreadtype\" name=\"filterthreadtype\" [Placeholder]=\"'Tipo Thread' | localize: lc\" [Source]=\"ThreadTypes\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterthreadstatus\" name=\"filterthreadstatus\" [Placeholder]=\"'Stato Thread' | localize: lc\" [Source]=\"ThreadStatuses\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterinwait\" name=\"filterinwait\"></form-checkbox> \n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterinwait = !searchView.filterinwait\">{{'In Attesa' | localize: lc}}</span>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterdcid\" name=\"filterdcid\"></form-checkbox> \n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterdcid = !searchView.filterdcid\">{{'Push dedicato connesso' | localize: lc}}</span>\n </div>\n </div>\n </div>\n <div class=\"col-md-1 app-no-padding\">\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </div>\n </form>\n </div>\n }\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico i Processi Applicativi' | localize: lc}}...</em></p>\n }\n @if (searchView) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [DynamicOperations]=\"DynamicOps\" [Export]=\"true\" [ColumnsOrdering]=\"false\"\n [ExportFileName]=\"'Application Processes.csv'\" [ExportFunction]=\"prepareExport.bind(this)\" [AutoUpdate]=\"true\"\n [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" (onDynamicOperation)=\"onOperation($event)\">\n <span class=\"app-nowrap\" *td=\"'full_wait_stack'; let value\">\n <span class=\"fa fa-list app-pointer\" (click)=\"valueToShow = value; dlgValue.show();\"></span> \n {{value.length > 70 ? value.substr(0, 67) + '...' : value}}\n </span>\n </es-table>\n </div>\n }\n </div>\n </div>\n <div class=\"app-margin-top-15\">\n <button class=\"btn btn-secondary pull-left\" type=\"button\" (click)=\"back()\">{{'Indietro' | localize: lc}}</button>\n <div class=\"clearfix\"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div bsModal #dlgChangeCg=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-lg\" emaDraggable>\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{'Modifica Gruppo di Consumo' | localize: lc}}</h4>\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgChangeCg.hide()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <form novalidate #cgFrom=\"ngForm\" (ngSubmit)=\"cgFrom.valid && doChangeCg() && dlgChangeCg.hide()\">\n <div class=\"modal-body\">\n <form-select [Label]=\"'Nuovo Gruppo di Consumo' | localize: lc\" [(ngModel)]=\"newCg\" name=\"newCg\" [Source]=\"CGs\" required [Last]=\"true\"></form-select>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-5\" (click)=\"dlgChangeCg.hide()\">{{'Chiudi' | localize: lc}}</button>\n <button type=\"submit\" class=\"btn btn-primary\">{{'Conferma' | localize: lc}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n\n<div bsModal #dlgValue=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-xl\" app-draggable=\".modal-header\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title pull-left\">\n Full Wait Stack\n </h5>\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgValue.hide()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body app-padidng-bottom-20 app-padding-top-20\">\n <span class=\"app-wrap\">\n {{valueToShow}}\n </span>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgValue.hide()\">Chiudi</button>\n </div>\n </div>\n </div>\n</div>","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class ProfilerDataNodeLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"ID Padre\", [\"Parent ID\"]);\r\n super.set(\"it->en\", \"ID\", [\"ID\"]);\r\n super.set(\"it->en\", \"Descrizione\", [\"Description\"]);\r\n super.set(\"it->en\", \"Chiamate\", [\"Calls\"]);\r\n super.set(\"it->en\", \"Tempo\", [\"Time\"]);\r\n super.set(\"it->en\", \"Tempo Max\", [\"Peak Time\"]);\r\n super.set(\"it->en\", \"Tempo Min\", [\"Min. Time\"]);\r\n super.set(\"it->en\", \"Tempo Medio\", [\"Avg. Time\"]);\r\n super.set(\"it->en\", \"Tempo Specifico\", [\"Specific Time\"])\r\n super.set(\"it->en\", \"Percentuale\", [\"Percentage\"]);\r\n super.set(\"it->en\", \"Chiamate Periodo\", [\"Calls for Period\"]);\r\n super.set(\"it->en\", \"Tempo Periodo\", [\"Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Max Periodo\", [\"Peak Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Min Periodo\", [\"Min. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Medio Periodo\", [\"Avg. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Specifico Periodo\", [\"Specific Time for Period\"]);\r\n super.set(\"it->en\", \"Percentuale Periodo\", [\"Percentage for Period\"]);\r\n super.set(\"it->en\", \"Nome Tipologia Evento\", [\"Event Type Name\"])\r\n super.set(\"it->en\", \"Nome Classe Attesa\", [\"Wait Class Name\"]);\r\n }\r\n}","import { Export, ExportLocalization } from \"@esfaenza/extensions\";\r\n\r\nimport { ProfilerDataNodeLoc } from \"./ProfilerDataNode.loc\";\r\n\r\n@ExportLocalization(ProfilerDataNodeLoc)\r\nexport class ProfilerDataNode {\r\n @Export(10, \"ID Padre\")\r\n parentid: string;\r\n @Export(20, \"ID\")\r\n id: string;\r\n @Export(30, \"Descrizione\")\r\n description: string;\r\n @Export(40, \"Chiamate\")\r\n calls: number;\r\n @Export(50, \"Tempo\")\r\n time: number;\r\n @Export(60, \"Tempo Max\")\r\n peaktime: number;\r\n @Export(70, \"Tempo Min\")\r\n mintime: number;\r\n @Export(80, \"Tempo Medio\")\r\n avgtime: number;\r\n @Export(90, \"Tempo Specifico\")\r\n timewithoutchildren: number;\r\n @Export(100, \"Percentuale\")\r\n percentage: number;\r\n @Export(110, \"Chiamate Periodo\")\r\n snapdeltacalls: number;\r\n @Export(120, \"Tempo Periodo\")\r\n snapdeltatime: number;\r\n @Export(130, \"Tempo Max Periodo\")\r\n snappeaktime: number;\r\n @Export(140, \"Tempo Min Periodo\")\r\n snapmintime: number;\r\n @Export(150, \"Tempo Medio Periodo\")\r\n snapavgtime: number;\r\n @Export(160, \"Tempo Specifico Periodo\")\r\n snaptimewithoutchildren: number;\r\n @Export(170, \"Percentuale Periodo\")\r\n snappercentage: number;\r\n @Export(180, \"Nome Tipologia Evento\")\r\n eventtypename: string;\r\n @Export(190, \"Nome Classe Attesa\")\r\n waitclassname: string;\r\n}","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { ProfilerDataNode } from \"./ProfilerDataNode\";\r\n\r\nexport class ProfilerDataNodesView extends AppSearch<ProfilerDataNode>{\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmProfilerComponentLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Profiler del Server\", [\"Server Profiler\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"ID\", [\"ID\"]);\r\n super.set(\"it->en\", \"Descrizione\", [\"Description\"]);\r\n super.set(\"it->en\", \"Chiamate\", [\"Calls\"]);\r\n super.set(\"it->en\", \"Tempo\", [\"Time\"]);\r\n super.set(\"it->en\", \"Tempo Max\", [\"Peak Time\"]);\r\n super.set(\"it->en\", \"Tempo Min\", [\"Min. Time\"]);\r\n super.set(\"it->en\", \"Tempo Medio\", [\"Avg. Time\"]);\r\n super.set(\"it->en\", \"Tempo Specifico\", [\"Specific Time\"]);\r\n super.set(\"it->en\", \"Percentuale\", [\"Percentage\"]);\r\n super.set(\"it->en\", \"Chiamate Periodo\", [\"Calls for Period\"]);\r\n super.set(\"it->en\", \"Tempo Periodo\", [\"Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Max Periodo\", [\"Peak Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Min Periodo\", [\"Min. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Medio Periodo\", [\"Avg. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Specifico Periodo\", [\"Specific Time for Period\"]);\r\n super.set(\"it->en\", \"Percentuale Periodo\", [\"Percentage for Period\"]);\r\n super.set(\"it->en\", \"Nome Tipologia Evento\", [\"Event Type Name\"]);\r\n super.set(\"it->en\", \"Nome Classe Attesa\", [\"Wait Class Name\"]);\r\n }\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class NodeDetailLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Sessioni Attive\", [\"Active Sessions\"]);\r\n super.set(\"it->en\", \"Dettaglio Attività Nodo\", [\"Activity Node Details\"]);\r\n super.set(\"it->en\", \"Tipo Evento\", [\"Event Type\"]);\r\n super.set(\"it->en\", \"Tempo Trascorso (Con Figli)\", [\"Elapsed (With Children)\"]);\r\n super.set(\"it->en\", \"Classe Attesa\", [\"Wait Class\"]);\r\n super.set(\"it->en\", \"Tempo Trascorso\", [\"Elapsed (No Children)\"]);\r\n super.set(\"it->en\", \"Stack di Attesa\", [\"Wait Stack\"]);\r\n super.set(\"it->en\", \"Utilizzo Risorse\", [\"Resources Usage\"]);\r\n super.set(\"it->en\", \"Esecuzioni\", [\"Executions\"]);\r\n\t\tsuper.set(\"it->en\", \"Dettaglio evento\", [\"Event detail\"]);\r\n }\r\n}","// Angular\r\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { BaseInterval, KeyValueColor, LineChartData, LineSerie, PieChartData } from \"@esfaenza/es-charts\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n// Applicazione\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\n// Localizzazione\r\nimport { NodeDetailLoc } from \"./node_detail.component.loc\";\r\n\r\n@Component({\r\n selector: \"node-detail\",\r\n viewProviders: [{ provide: LocalizationService, useClass: NodeDetailLoc }],\r\n templateUrl: \"./node_detail.component.html\",\r\n standalone: false\r\n})\r\nexport class NodeDetailComponent {\r\n\r\n @Input() NodeDetails: NodeStats;\r\n\r\n @Output() onClose: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(public lc: LocalizationService) { }\r\n\r\n ngOnInit() {\r\n let serie = new LineSerie(this.lc.loc(\"Sessioni Attive\"), this.NodeDetails.activesessions, null);\r\n this.NodeDetails.sessionchart = new LineChartData([serie]);\r\n this.NodeDetails.loadchart = new PieChartData([\r\n new KeyValueColor(\"CPU\", this.NodeDetails.cpuperc),\r\n new KeyValueColor(\"Wait\", this.NodeDetails.waitperc),\r\n new KeyValueColor(\"DB\", this.NodeDetails.dbperc),\r\n new KeyValueColor(\"Script\", this.NodeDetails.scriptperc),\r\n new KeyValueColor(\"Throttle\", this.NodeDetails.throttleperc),\r\n new KeyValueColor(\"Sleep\", this.NodeDetails.sleepperc),\r\n new KeyValueColor(\"Networking\", this.NodeDetails.networkperc),\r\n new KeyValueColor(\"IO\", this.NodeDetails.ioperc)\r\n ]);\r\n }\r\n\r\n closeDialog() {\r\n this.onClose.emit(true);\r\n }\r\n}","<div class=\"modal-dialog modal-xl\" emaDraggable>\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">\n {{'Dettaglio Attività Nodo' | localize: lc}}\n @if (NodeDetails) {\n <span> {{NodeDetails.nodeid}}</span>\n }\n </h4>\n <button type=\"button\" class=\"close pull-right\" (click)=\"closeDialog()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n @if (NodeDetails) {\n <div class=\"modal-body\">\n <div class=\"row\">\n <div class=\"col-md-6\">\n <strong>{{'Tipo Evento' | localize: lc}}</strong>: {{NodeDetails.eventtypedesc}} <strong>{{'Classe Attesa' | localize: lc}}</strong>: {{NodeDetails.waitclassname}}\n </div>\n <div class=\"col-md-6\">\n <strong>{{'Tempo Trascorso (Con Figli)' | localize: lc}}</strong>: {{NodeDetails.elapsed}} s\n </div>\n <div class=\"col-md-6\">\n <strong>{{'Esecuzioni' | localize: lc}}</strong>: {{NodeDetails.executions}}\n </div>\n <div class=\"col-md-6\">\n <strong>{{'Tempo Trascorso' | localize: lc}}</strong>: {{NodeDetails.elapsedlesschildren}} s\n </div>\n </div>\n <div>\n <h5 class=\"app-margin-top-10\"><strong>{{'Dettaglio evento' | localize: lc}}</strong></h5>\n {{NodeDetails.nodedescription}}\n </div>\n @if ((NodeDetails?.waitstack?.length || 0) > 0) {\n <div style=\"max-height: 200px; overflow: auto\">\n <h5 class=\"app-margin-top-10\"><strong>{{'Stack di Attesa' | localize: lc}}</strong></h5>\n @for (wait of NodeDetails.waitstack; track wait; let i = $index) {\n <div>\n @for (_ of [].constructor(i+1); track _) {\n -\n } {{wait.nodeid}} - {{wait.nodedescription}}: \n <strong>{{'Tipo Evento' | localize: lc}}</strong>: {{wait.eventtypedesc}} \n <strong>{{'Classe Attesa' | localize: lc}}</strong>: {{wait.waitclassname}}\n </div>\n }\n </div>\n }\n @if ((NodeDetails?.foundininstanceids?.length || 0) > 0) {\n <div style=\"max-height: 200px; overflow: auto\">\n <h5 class=\"app-margin-top-10\"><strong>{{'Presente nelle seguenti istanze' | localize: lc}}</strong></h5>\n @for (instid of NodeDetails.foundininstanceids; track instid; let i = $index) {\n <div style=\"margin-right: 15px;\">\n {{instid}}\n </div>\n }\n </div>\n }\n <div style=\"height: 200px;\">\n <h5 class=\"app-margin-top-10\"><strong>{{'Utilizzo Risorse' | localize: lc}}</strong></h5>\n @if (NodeDetails.sessionchart) {\n <es-line-chart\n [MinGridDistance]=\"65\"\n [Timeline]=\"false\"\n [FinalInstants]=\"false\"\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\n [Fill]=\"true\"\n [MergeDatasets]=\"true\"\n [Data]=\"NodeDetails.sessionchart\"\n [Legend]=\"true\"\n name=\"nodeDetailSessionChart\"\n [DataGroupingThreshold]=\"99999999\"></es-line-chart>\n }\n </div>\n <div style=\"height: 200px;\">\n @if (NodeDetails.loadchart) {\n <es-pie-chart [Legend]=\"true\" [Data]=\"NodeDetails.loadchart\" name=\"nodeDetailLoadChart\"></es-pie-chart>\n }\n </div>\n </div>\n }\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"closeDialog()\">{{'Chiudi' | localize: lc}}</button>\n </div>\n </div>\n </div>","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Applicazione\r\nimport { ProfilerDataNode } from \"../../models/components/ProfilerDataNode\";\r\nimport { ProfilerDataNodesView } from \"../../models/components/ProfilerDataNodesView\";\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmProfilerComponentLoc } from \"./adm_profiler.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\n@Component({\r\n selector: \"adm_profiler\",\r\n providers: [{ provide: LocalizationService, useClass: AdmProfilerComponentLoc }],\r\n templateUrl: \"./adm_profiler.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmProfilerComponent {\r\n public searchView: ProfilerDataNodesView = new ProfilerDataNodesView();\r\n public storageSub: any;\r\n\r\n public NodeDetails: NodeStats;\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<ProfilerDataNodesView>(\"HotSearchProfilato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/profiler`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchProfilato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: ProfilerDataNodesView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(this.searchView);\r\n }\r\n else {\r\n this.searchView = new ProfilerDataNodesView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(this.searchView);\r\n }\r\n\r\n downloadWorkloadReport() {\r\n this.adms.downloadWorkloadReport(this.be, this.searchView.filterfrom, this.searchView.filterto, this.searchView.filterglobal);\r\n }\r\n\r\n async POSTGetItems(data: ProfilerDataNodesView) {\r\n this.searchView = await this.adms.getProfilerDataNodes(this.be, data);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotSearchProfilato\", this.searchView).subscribe();\r\n }\r\n\r\n async prepareExport(dataCallBack) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let res = await this.adms.getProfilerDataNodes(this.be, view);\r\n dataCallBack(res.items, ProfilerDataNode);\r\n }\r\n\r\n loadNodeDetails(nodeId: string) {\r\n this.NodeDetails = null;\r\n requestAnimationFrame(async () => {\r\n this.NodeDetails = await this.adms.getNodeStats(this.be, nodeId);\r\n });\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Profiler del Server' | localize: lc}}</span> \n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox> \n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\n </div>\n\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20 app-margin-right-5\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"downloadWorkloadReport()\" type=\"submit\"><i class=\"fa fa-download\"></i></button>\n </div>\n </form>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico i Dati' | localize: lc}}</em></p>\n }\n @if (searchView) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [Hierarchy]=\"true\" [OrderByColumn]=\"false\" [ParentKey]=\"'parentid'\"\n [OwnKey]=\"'id'\" [StartsExpanded]=\"false\" [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\"\n [ExportFileName]=\"'Profiler Export.csv'\" [HidePaging]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\n <span *th=\"'1'\">{{'ID' | localize : lc}}</span>\n <span *th=\"'2'\">{{'Descrizione' | localize: lc}}</span>\n <span *th=\"'3'\">{{'Chiamate' | localize: lc}}</span>\n <span *th=\"'4'\">{{'Tempo' | localize: lc}}</span>\n <span *th=\"'5'\">{{'Tempo Max' | localize: lc}}</span>\n <span *th=\"'6'\">{{'Tempo Min' | localize: lc}}</span>\n <span *th=\"'7'\">{{'Tempo Medio' | localize: lc}}</span>\n <span *th=\"'8'\">{{'Tempo Specifico' | localize: lc}}</span>\n <span *th=\"'9'\">{{'Percentuale' | localize: lc}}</span>\n <span *th=\"'10'\">{{'Chiamate Periodo' | localize: lc}}</span>\n <span *th=\"'11'\">{{'Tempo Periodo' | localize: lc}}</span>\n <span *th=\"'12'\">{{'Tempo Max Periodo' | localize: lc}}</span>\n <span *th=\"'13'\">{{'Tempo Min Periodo' | localize: lc}}</span>\n <span *th=\"'14'\">{{'Tempo Medio Periodo' | localize: lc}}</span>\n <span *th=\"'15'\">{{'Tempo Specifico Periodo' | localize: lc}}</span>\n <span *th=\"'16'\">{{'Percentuale Periodo' | localize: lc}}</span>\n <span *th=\"'17'\">{{'Nome Tipologia Evento' | localize: lc}}</span>\n <span *th=\"'18'\">{{'Nome Classe Attesa' | localize: lc}}</span>\n <span *th=\"'19'\">{{'Numero Istanze' | localize: lc}}</span>\n <span *td=\"'1'; let item\"><span class=\"app-link app-inline\" (click)=\"loadNodeDetails(item.id); dlgNodeDetails.show();\">{{item.id}}</span></span>\n <span *td=\"'2'; let item\" title=\"{{item.description}}\">{{item.description.length <= 50 ? item.description : item.description.substr(0,50) + \"[...]\" }}</span>\n <span *td=\"'3'; let item\">{{item.calls}}</span>\n <span *td=\"'4'; let item\">{{item.time}}</span>\n <span *td=\"'5'; let item\">{{item.peaktime}}</span>\n <span *td=\"'6'; let item\">{{item.mintime}}</span>\n <span *td=\"'7'; let item\">{{item.avgtime}}</span>\n <span *td=\"'8'; let item\">{{item.timewithoutchildren }}</span>\n <span *td=\"'9'; let item\">{{item.percentage}}</span>\n <span *td=\"'10' let item\">{{item.snapdeltacalls}}</span>\n <span *td=\"'11' let item\">{{item.snapdeltatime}}</span>\n <span *td=\"'12' let item\">{{item.snappeaktime}}</span>\n <span *td=\"'13' let item\">{{item.snapmintime}}</span>\n <span *td=\"'14' let item\">{{item.snapavgtime}}</span>\n <span *td=\"'15' let item\">{{item.snaptimewithoutchildren}}</span>\n <span *td=\"'16' let item\">{{item.snappercentage}}</span>\n <span *td=\"'17' let item\">{{item.eventtypename}}</span>\n <span *td=\"'18' let item\">{{item.waitclassname}}</span>\n <span *td=\"'19' let item\">{{item.numinstances}}</span>\n </es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\n @if (NodeDetails) {\n <node-detail [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\n }\n</div>","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { TopActivity } from \"./TopActivity\";\r\n\r\nexport class TopActivitiesDataView extends AppSearch<TopActivity>{\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n filterrealtime: boolean;\r\n filterbe: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmTopActivitieLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Sessioni Attive\", [\"Active Sessions\"]);\r\n super.set(\"it->en\", \"Prime Istruzioni\", [\"Top Nodes\"]);\r\n super.set(\"it->en\", \"Prime Sessioni\", [\"Top Sessions\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"Attività Principali\", [\"Top Activities\"]);\r\n super.set(\"it->en\", \"Descrizione Nodo\", [\"Node Description\"]);\r\n super.set(\"it->en\", \"Nodo\", [\"Node\"]);\r\n super.set(\"it->en\", \"Attività\", [\"Activity\"]);\r\n super.set(\"it->en\", \"Limite\", [\"Limit\"]);\r\n super.set(\"it->en\", \"Tipo Nodo\", [\"Node Type\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Tenant\", [\"Tenant\"]);\r\n super.set(\"it->en\", \"Processo\", [\"Process\"]);\r\n super.set(\"it->en\", \"Aggiorna ogni\", [\"Update every\"]);\r\n super.set(\"it->en\", \"secondo/i\", [\"second/s\"]);\r\n super.set(\"it->en\", \"Thread Massimi\", [\"Maximum Threads\"]);\r\n super.set(\"it->en\", \"CPU\", [\"CPUs\"]);\r\n super.set(\"it->en\", \"Classe Attesa\", [\"Wait Class Name\"]);\r\n\r\n super.set(\"it->en\", \"Seriale\", [\"Serial\"]);\r\n super.set(\"it->en\", \"Stato\", [\"Status\"]);\r\n super.set(\"it->en\", \"Tipo\", [\"Type\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { BaseChartComponent, BaseInterval, DateValue, Limit, LineChartData, LineSerie } from \"@esfaenza/es-charts\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { ItemsSelection } from \"@esfaenza/es-table\";\r\nimport { DateService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport * as am5xy from \"@amcharts/amcharts5/xy\";\r\nimport { ReplaySubject } from \"rxjs\";\r\nimport { Dayjs } from \"dayjs\";\r\n\r\n// Modelli\r\nimport { DirectorInfos } from \"../../models/components/DirectorInfos\";\r\nimport { TopActivitiesDataView } from \"../../models/components/TopActivitiesDataView\";\r\nimport { TopNode } from \"../../models/components/TopNode\";\r\nimport { TopSession } from \"../../models/components/TopSession\";\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\nimport { SessionStats } from \"../../models/components/SessionStats\";\r\nimport { SessionThread } from \"../../models/components/SessionThread\";\r\n\r\n// Applicazione\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmTopActivitieLoc } from \"./topact_search.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"topact_search\",\r\n providers: [{ provide: LocalizationService, useClass: AdmTopActivitieLoc }],\r\n templateUrl: \"./topact_search.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmTopActivitiesComponent {\r\n public searchView: TopActivitiesDataView = new TopActivitiesDataView();\r\n public storageSub: any;\r\n private LastDataPoint: any;\r\n\r\n public autoUpdate: boolean = false;\r\n public seconds: string = \"5\";\r\n\r\n private ChartInstance: BaseChartComponent<any>;\r\n public NodeDetails: NodeStats;\r\n\r\n private rtWindow: { from: Dayjs, to: Dayjs } = null;\r\n\r\n protected destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n private be: string;\r\n\r\n constructor(\r\n public dateExts: DateService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n // Ogni minuto calcolo qual è la finestra del realTime\r\n // interval(60 * 1000).pipe(takeUntil(this.destroyed$)).subscribe(_ => {\r\n // this.updateRealTimeWindow();\r\n // });\r\n\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n async updateRealTimeWindow() {\r\n let data = new TopActivitiesDataView();\r\n data.filterbe = this.be;\r\n data = await this.adms.getTopActivities(this.be, data);\r\n let reference = data.items[0];\r\n for (let i = 0; i < reference.actsessions.length; i++) {\r\n let itemref = reference.actsessions[i];\r\n let theD = this.dateExts.getDateConvertion(itemref.sampletime);\r\n\r\n if (!this.rtWindow)\r\n this.rtWindow = { from: theD, to: theD };\r\n else {\r\n if (theD.isBefore(this.rtWindow.from))\r\n this.rtWindow.from = theD;\r\n if (theD.isAfter(this.rtWindow.to))\r\n this.rtWindow.to = theD;\r\n }\r\n }\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<TopActivitiesDataView>(\"HotSearchTopAct\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/topact`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchTopAct\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: TopActivitiesDataView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(this.searchView, false);\r\n }\r\n else {\r\n this.searchView = new TopActivitiesDataView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async sendSearch(resetPage: boolean = true, update: boolean = false, searchViewOverride: TopActivitiesDataView = null) {\r\n let sv = searchViewOverride ?? this.searchView;\r\n if ((sv.filterfrom || sv.filterto) && !this.rtWindow)\r\n await this.updateRealTimeWindow();\r\n\r\n let dateRequestOnRealtimeWindow: boolean =\r\n sv.filterfrom && this.dateExts.getDateConvertion(sv.filterfrom).isAfter(this.rtWindow.from) &&\r\n sv.filterto && this.dateExts.getDateConvertion(sv.filterto).isBefore(this.rtWindow.to);\r\n\r\n sv.filterrealtime = dateRequestOnRealtimeWindow;\r\n sv.searchinprogress = true;\r\n\r\n this.POSTGetItems(sv, update);\r\n }\r\n\r\n async POSTGetItems(data: TopActivitiesDataView, update: boolean) {\r\n data.filterbe = this.be;\r\n let res = await this.adms.getTopActivities(this.be, data);\r\n //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table\r\n if (!update) {\r\n this.searchView = res;\r\n this.localStorage.setItem(\"HotSearchTopAct\", this.searchView).subscribe();\r\n }\r\n // DirectorInfos anche se per qualche motivo crasha di brutto è comunque non obbligatorio, evito di non caricare la pagina solo perché lui scoppia\r\n let dirinfos = await this.adms.getInfos(this.be);\r\n this.searchView.searchinprogress = false;\r\n this.reviewBindings(update, res, dirinfos);\r\n }\r\n\r\n loadNodeDetails(nodeId: string) {\r\n this.NodeDetails = null;\r\n requestAnimationFrame(async () => {\r\n this.NodeDetails = await this.adms.getNodeStats(this.be, nodeId, this.searchView.filterglobal);\r\n });\r\n }\r\n\r\n // **************************************************** Trasformazione da searchview con unico elemento con tutto ai 3 elementi:\r\n // **************************************************** Grafico, TopNodes e TopSessions\r\n TopActiveSessions: LineChartData;\r\n TopNodes: TopNode[];\r\n TopSessions: TopSession[];\r\n DirInfos: DirectorInfos;\r\n DirInfosGlobal: DirectorInfos;\r\n seriesPropertiesMapping: { [index: string]: LineSerie } = {};\r\n propertiesSeriesMapping: { [index: string]: string } = {\r\n [\"cputime\"]: \"CPU\",\r\n [\"waittime\"]: \"Wait\",\r\n [\"scripttime\"]: \"Scripting\",\r\n [\"dbtime\"]: \"DB\",\r\n [\"nettime\"]: \"Network\",\r\n [\"throttletime\"]: \"Throttling\",\r\n [\"sleeptime\"]: \"Sleep\",\r\n [\"iotime\"]: \"IO\"\r\n };\r\n\r\n reviewBindings(update: boolean, searchViewOverride?, dirInfos?: DirectorInfos) {\r\n let reference = (searchViewOverride ?? this.searchView).items[0];\r\n this.TopNodes = reference.topnodes;\r\n this.TopSessions = reference.topsessions;\r\n this.DirInfos = dirInfos?.cluster ? dirInfos : null;\r\n this.DirInfosGlobal = !dirInfos?.cluster ? dirInfos : null;\r\n\r\n if (!reference.actsessions || reference.actsessions.length == 0) {\r\n this.TopActiveSessions = null;\r\n return;\r\n }\r\n\r\n let series: LineSerie[] = []; \r\n let props = Object.keys(reference.actsessions[0]);\r\n for (let i = 0; i < props.length; i++) {\r\n if (props[i] != 'sampletime') {\r\n let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, \"sessions\");\r\n series.push(s);\r\n this.seriesPropertiesMapping[props[i]] = s;\r\n }\r\n }\r\n\r\n for (let i = 0; i < reference.actsessions.length; i++) {\r\n let itemref = reference.actsessions[i];\r\n let theD = new Date(itemref.sampletime);\r\n\r\n for (let i = 0; i < props.length; i++)\r\n if (props[i] != 'sampletime' && (!update || this.dateExts.getDateConvertion(theD).isAfter(this.LastDataPoint)))\r\n this.seriesPropertiesMapping[props[i]].values.push(new DateValue(theD, itemref[props[i]]));\r\n }\r\n\r\n if (update && this.ChartInstance) {\r\n let data = new LineChartData(series, new Limit(dirInfos?.threads, this.lc.loc(\"Thread Massimi\")));\r\n if (series.some(t => t.values.length > 0)) {\r\n this.ChartInstance.addData(data);\r\n this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n }\r\n }\r\n else {\r\n this.TopActiveSessions = new LineChartData(series, new Limit(dirInfos?.threads, this.lc.loc(\"Thread Massimi\")));\r\n this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n }\r\n }\r\n\r\n // #region Gestione update automatico\r\n updateTimer: any;\r\n autoUpdateChanged() {\r\n if (!/^[1-9]\\d*$/.test(this.seconds))\r\n this.seconds = '10';\r\n const secondsInMs = parseInt(this.seconds, null) * 1000;\r\n if (this.autoUpdate) {\r\n this.sendSearch(false, true);\r\n this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);\r\n }\r\n else\r\n clearInterval(this.updateTimer);\r\n }\r\n // #endregion\r\n\r\n private from: Date;\r\n private to: Date;\r\n\r\n dataSelectionChanged(event: { from: Date, to: Date, initial: boolean }) {\r\n this.from = event.initial ? (this.searchView.filterfrom ? this.dateExts.getDateConvertion(this.searchView.filterfrom).toDate() : \"\") : event.from;\r\n this.to = event.initial ? (this.searchView.filterto ? this.dateExts.getDateConvertion(this.searchView.filterto).toDate() : \"\") : event.to;\r\n\r\n var pseudoSearchView: TopActivitiesDataView = JSON.parse(JSON.stringify(this.searchView));\r\n pseudoSearchView.filterfrom = this.from ? dayjs(this.from).format(this.lc.token(\"getFullDateDisplayFormat\")) : \"\";\r\n pseudoSearchView.filterto = this.to ? dayjs(this.to).format(this.lc.token(\"getFullDateDisplayFormat\")) : \"\";\r\n this.sendSearch(true, true, pseudoSearchView);\r\n }\r\n\r\n onChartLoaded(chart: BaseChartComponent<any>, overwriteInstance: boolean = true) {\r\n if(overwriteInstance)\r\n this.ChartInstance = chart;\r\n\r\n let readyHandler = () => {\r\n (chart.Chart as am5xy.XYChart).xAxes.each(x => x.zoom(0, 1, 0));\r\n (chart.Chart as am5xy.XYChart).yAxes.each(y => y.zoom(0, 1, 0));\r\n\r\n chart.Chart!.root.events.off(\"frameended\", readyHandler);\r\n };\r\n\r\n chart.Chart!.root.events.onDebounced(\"frameended\", readyHandler, 500);\r\n }\r\n\r\n // **************************************************** Gestione dettaglio sessione\r\n\r\n SessionDetails: SessionStats;\r\n SelectedTopNodes: TopNode[];\r\n SelectedSessions: LineChartData;\r\n\r\n seriesPropertiesMapping2: { [index: string]: LineSerie } = {};\r\n\r\n loadSessionDetails(sessionId: number, serialNo: number, instanceid: string) {\r\n this.SessionDetails = null;\r\n requestAnimationFrame(async () => {\r\n this.SessionDetails = await this.adms.getSessionStats(this.be, sessionId?.toString(), serialNo?.toString(), instanceid);\r\n this.threadSelectionChanged(null);\r\n });\r\n }\r\n\r\n threadSelectionChanged(selection?: ItemsSelection<SessionThread>) {\r\n this.SelectedTopNodes = null;\r\n this.SelectedSessions = null;\r\n\r\n requestAnimationFrame(() => {\r\n let sessDet = (selection?.count || 0) == 0 ? this.SessionDetails : selection.items[0];\r\n\r\n this.SelectedTopNodes = sessDet.nodes;\r\n\r\n let series: LineSerie[] = []; \r\n let props = Object.keys(sessDet.sessions[0]);\r\n for (let i = 0; i < props.length; i++) {\r\n if (props[i] != 'sampletime') {\r\n let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null , null, \"sessions\");\r\n series.push(s);\r\n this.seriesPropertiesMapping2[props[i]] = s;\r\n }\r\n }\r\n \r\n for (let i = 0; i < sessDet.sessions.length; i++) {\r\n let itemref = sessDet.sessions[i];\r\n let theD = new Date(itemref.sampletime);\r\n \r\n for (let i = 0; i < props.length; i++)\r\n if (props[i] != 'sampletime')\r\n this.seriesPropertiesMapping2[props[i]].values.push(new DateValue(theD, itemref[props[i]]));\r\n }\r\n\r\n this.SelectedSessions = new LineChartData(series);\r\n\r\n });\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'Attività Principali' | localize: lc}}\r\n <span *ngIf=\"DirInfos && !DirInfosGlobal\"> - \r\n {{'' + DirInfos.cpus + ' ' + ('CPU' | localize: lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}} \r\n Load average: {{ DirInfos.lavg1 | number : '1.1-2' : 'it'}} {{ DirInfos.lavg5 | number : '1.1-2' : 'it'}} {{ DirInfos.lavg15 | number : '1.1-2' : 'it'}}\r\n </span> \r\n <span *ngIf=\"DirInfosGlobal\"> | \r\n {{'' + DirInfosGlobal.cpus + ' ' + ('CPU (Global)' | localize: lc) + (DirInfosGlobal.rssplan ? ' - ' + DirInfosGlobal.rssplan : '')}} \r\n Load average: {{ DirInfosGlobal.lavg1 | number : '1.1-2' : 'it'}} {{ DirInfosGlobal.lavg5 | number : '1.1-2' : 'it'}} {{ DirInfosGlobal.lavg15 | number : '1.1-2' : 'it'}}\r\n <span *ngIf=\"(DirInfosGlobal?.perinstancedata?.length || 0) > 0\">\r\n \r\n <a class=\"app-link app-pointer app-inline\" (click)=\"dlgDirInfos.show();\">[{{'Info per Istanza' | localize: lc}}...]</a>\r\n </span>\r\n </span> \r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 app-relative\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox> \r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n\r\n <div class=\"app-absolute app-right-25 app-top-40\">\r\n <div class=\"pull-right\">\r\n {{'Aggiorna ogni' | localize: lc}} <input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"seconds\" /> {{'secondo/i' | localize: lc}}\r\n </div>\r\n <div class=\"pull-right m-t-2 app-margin-right-5\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" name=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\r\n <div class=\"slider round\"></div>\r\n </label>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 app-margin-top-5\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico i Dati' | localize: lc}}</em></p>\r\n <div *ngIf=\"searchView\" class=\"row\">\r\n <div class=\"col-md-12 app-no-padding\">\r\n <div style=\"width: 100%; height: 290px\">\r\n <es-line-chart *ngIf=\"TopActiveSessions\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"TopActiveSessions\"\r\n [Legend]=\"true\" \r\n name=\"topactsession\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (onSelectionChanged)=\"dataSelectionChanged($event)\" (chartLoaded)=\"onChartLoaded($event)\"></es-line-chart>\r\n </div>\r\n </div>\r\n <div class=\"col-md-5\">\r\n <h5>{{'Prime Istruzioni' | localize: lc}}</h5>\r\n <es-table [(ngModel)]=\"TopNodes\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attività' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\" (click)=\"loadNodeDetails(node.profnodeid); dlgNodeDetails.show();\">{{node.profnodeid}}</span></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{node.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <h5>{{'Prime Sessioni' | localize: lc}}</h5>\r\n <es-table [(ngModel)]=\"TopSessions\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">ID</th>\r\n <th>{{'Utente' | localize: lc}}</th>\r\n <th>{{'Tenant' | localize : lc}}</th>\r\n <th>{{'Processo' | localize: lc}}</th>\r\n <th>{{'Attività' | localize: lc}}</th>\r\n <th>Cpu</th>\r\n <th>Wait</th>\r\n <th>DB</th>\r\n <th>Script</th>\r\n <th>Throttle</th>\r\n <th>Sleep</th>\r\n <th>Networking</th>\r\n <th>IO</th>\r\n </ng-template>\r\n\r\n <ng-template #body let-session>\r\n <td class=\"app-col-min\"><span class=\"app-link\" title=\"{{session.instanceid? (' - ' + session.instanceid) : ''}}\" (click)=\"loadSessionDetails(session.sid, session.serial, session.instanceid); dlgSessionDetails.show();\">{{session.sid}}</span></td>\r\n <td>{{session.user}}</td>\r\n <td>{{session.tenant}}</td>\r\n <td>{{session.bgprocess}}</td>\r\n <td>{{session.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.cpu | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.wait | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.db | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.script | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.throttle | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.sleep | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.net | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.io | number : '1.1-2' : 'it'}} %</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgDirInfos=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-feminist\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Dettaglio per Istanza' | localize: lc}}</h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgDirInfos.hide()\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"(DirInfosGlobal?.perinstancedata?.length || 0) > 0\">\r\n <div class=\"row\" *ngFor=\"let info of DirInfosGlobal.perinstancedata\">\r\n <div class=\"col-md-12\"> \r\n <strong>{{info.instance}}</strong>: \r\n {{'' + info.cpus + ' ' + ('CPU (Global)' | localize: lc) + (info.rssplan ? ' - ' + info.rssplan : '')}} \r\n Load average: {{ info.lavg1 | number : '1.1-2' : 'it'}} {{ info.lavg5 | number : '1.1-2' : 'it'}} {{ info.lavg15 | number : '1.1-2' : 'it'}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgDirInfos.hide()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <node-detail *ngIf=\"NodeDetails\" [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\r\n</div>\r\n\r\n<div bsModal #dlgSessionDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-feminist\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Dettaglio Sessione' | localize: lc}}<span *ngIf=\"SessionDetails\"> {{SessionDetails.sid}}</span></h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgSessionDetails.hide()\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"SessionDetails\">\r\n <div class=\"row\">\r\n <div *ngIf=\"SessionDetails.instanceid\" class=\"col-md-6\"><strong>{{'Istanza' | localize: lc}}</strong>: {{SessionDetails.instanceid}} </div>\r\n <div class=\"col-md-6\"><strong>{{'Seriale' | localize: lc}}</strong>: {{SessionDetails.serial}} </div>\r\n <div class=\"col-md-6\"><strong>{{'Stato' | localize: lc}}</strong>: {{SessionDetails.status}} </div>\r\n <div class=\"col-md-6\"><strong>{{'Tipo' | localize: lc}}</strong>: {{SessionDetails.type}}</div>\r\n <div class=\"col-md-6\"><strong>{{'Utente' | localize: lc}}</strong>: {{SessionDetails.user}} <span *ngIf=\"SessionDetails.tenant\">({{SessionDetails.tenant}})</span></div>\r\n </div>\r\n\r\n <div style=\"display: flex; width: 100%; margin-top: 15px;\">\r\n <div style=\"flex-grow: 0;display: flex;flex-direction: column\">\r\n <h5>Prime Istruzioni</h5>\r\n <div *ngIf=\"SelectedTopNodes\">\r\n <es-table [(ngModel)]=\"SelectedTopNodes\" [ArraymodeItemsPerPage]=\"10\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attività' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\"(click)=\"loadNodeDetails(node.profnodeid); dlgNodeDetails.show();\">{{node.profnodeid}}</span></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{(node.activity == \"NaN\" ? null : node.activity) | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n <div style=\"width: 15px;\"></div>\r\n <div style=\"flex-grow: 2;display: flex;flex-direction: column\">\r\n <h5>Attività</h5>\r\n <div *ngIf=\"SelectedSessions\" style=\"width: 100%; height: 290px\">\r\n <es-line-chart [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"SelectedSessions\"\r\n [Legend]=\"true\" \r\n name=\"session_details\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (chartLoaded)=\"onChartLoaded($event, true)\">\r\n </es-line-chart>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div style=\"display: flex; width: 100%;\">\r\n <div style=\"flex-grow: 1;\">\r\n <h5>Statistiche Thread</h5>\r\n <div>\r\n <es-table [(ngModel)]=\"SessionDetails.threads\" [ArraymodeItemsPerPage]=\"10\" [Selection]=\"true\" [SingleSelection]=\"true\" (onSelectionChanged)=\"threadSelectionChanged($event)\">\r\n <ng-template #header>\r\n <th>Thread</th>\r\n <th>Stato</th>\r\n <th>Tipo</th>\r\n <th>API</th>\r\n <th>Attesa corrente</th>\r\n <th>Nodo di attesa</th>\r\n <th>Attesa su</th>\r\n <th>Classe</th>\r\n <th>Par. 1</th>\r\n <th>Par. 2</th>\r\n <th>Par. 3</th>\r\n <th>Tempo Attesa</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-thread>\r\n <td>{{thread.tid}}</td>\r\n <td>{{thread.status}}</td>\r\n <td>{{thread.type}}</td>\r\n <td>{{thread.api}}</td>\r\n <td>{{thread.wait}}</td>\r\n <td>{{thread.waitnode}}</td>\r\n <td>{{thread.waiteventtype}}</td>\r\n <td>{{thread.waitclassname}}</td>\r\n <td>{{thread.waitpar1}}</td>\r\n <td>{{thread.waitpar2}}</td>\r\n <td>{{thread.waitpar3}}</td>\r\n <td>{{(thread.waittime == \"NaN\" ? null : thread.waittime) | number : '1.1-2' : 'it'}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgSessionDetails.hide()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class LocksView extends AppSearch<GenericItem>{\r\n constructor() { super(); }\r\n\r\n filtersid: string;\r\n filterlock: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmEnqLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Ricerca Lock Applicativi\", [\"Search Application Locks\"]);\r\n super.set(\"it->en\", \"Nome\", [\"Name\"]);\r\n super.set(\"it->en\", \"Carico i Lock Applicativi\", [\"Loading Application Locks\"]);\r\n super.set(\"it->en\", \"Globale\", [\"Global\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { ExportService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { LocksView } from \"../../models/components/LocksView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmEnqLoc } from \"./adm_enq.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { GenericItem } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"adm_enq\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmEnqLoc }],\r\n templateUrl: \"./adm_enq.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmEnqComponent {\r\n public locksView: LocksView = new LocksView();\r\n public storageSub: any;\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n public expExts: ExportService,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<LocksView>(\"HotEnqueue\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverenqueues`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotEnqueue\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: LocksView) {\r\n if (HotPotato) {\r\n this.locksView = HotPotato;\r\n this.POSTGetProcesses(this.locksView);\r\n }\r\n else {\r\n this.locksView = new LocksView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n if (resetPage)\r\n this.locksView.page = 1;\r\n\r\n this.POSTGetProcesses(this.locksView);\r\n }\r\n\r\n async POSTGetProcesses(data: LocksView) {\r\n this.locksView = await this.adms.getServerLocks(this.be, data);\r\n this.locksView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotEnqueue\", this.locksView).subscribe();\r\n }\r\n\r\n async prepareExport(callback) {\r\n var view = JSON.parse(JSON.stringify(this.locksView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let tmp = await this.adms.getServerLocks(this.be, view);\r\n callback(tmp.items, GenericItem);\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Ricerca Lock Applicativi' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <form role=\"form\">\n <div class=\"col-md-12 row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filtersid\" name=\"filtersid\" [Placeholder]=\"'SID'\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterlock\" name=\"filterlock\" [Placeholder]=\"'Nome' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterglobal\" name=\"filterglobal\"></form-checkbox> \n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"locksView.filterglobal = !locksView.filterglobal\">{{'Globale' | localize: lc}}</span>\n </div>\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </form>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!locksView) {\n <p><em>{{'Carico i Lock Applicativi' | localize: lc}}...</em></p>\n }\n @if (locksView) {\n <div>\n <es-table [(ngModel)]=\"locksView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"\n [ExportFileName]=\"'Application Locks.csv'\" [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\"></es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { Metric } from \"./Metric\";\r\n\r\nexport class MetricsView extends AppSearch<Metric> {\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n filtersid: string;\r\n filterserial: string;\r\n filtermetrics: string[];\r\n filterrealtime: boolean;\r\n fitlerinstance: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmMetricsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Metriche di Sistema\", [\"System Metrics\"]);\r\n super.set(\"it->en\", \"Cod. Sessione\", [\"Session ID\"]);\r\n super.set(\"it->en\", \"Seriale Sessione\", [\"Session Serial\"]);\r\n super.set(\"it->en\", \"Filtra Metriche...\", [\"Filter Metrics...\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"Aggiorna ogni\", [\"Update every\"]);\r\n super.set(\"it->en\", \"secondo/i\", [\"second/s\"]);\r\n super.set(\"it->en\", \"Istanza Metriche\", [\"Metrics Instance\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { BaseChartComponent } from \"@esfaenza/es-charts\";\r\nimport { DateService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { Metric } from \"../../models/components/Metric\";\r\nimport { MetricChart } from \"../../models/components/MetricChart\";\r\nimport { MetricsView } from \"../../models/components/MetricsView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmMetricsLoc } from \"./metrics_search.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"metrics_search\",\r\n providers: [{ provide: LocalizationService, useClass: AdmMetricsLoc }],\r\n templateUrl: \"./metrics_search.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmMetricsComponent {\r\n\r\n public Metrics: Metric[];\r\n private MetricsChartCache: { [name: string]: { chart: BaseChartComponent<any>, lastTs: Date } } = {};\r\n\r\n public searchView: MetricsView = new MetricsView();\r\n public storageSub: any;\r\n\r\n public autoUpdate: boolean = false;\r\n public seconds: string = \"5\";\r\n private be: string;\r\n\r\n constructor(\r\n public dateExts: DateService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n async dateChanged() {\r\n // Pulizia di tutti i parametri di ricerca dipendenti dalle date\r\n this.metricsToShow = [];\r\n this.Metrics = [];\r\n this.instanceRequired = false;\r\n this.Instances = [];\r\n this.selectedInstance = \"\";\r\n this.searchView.filtermetrics = [];\r\n\r\n this.Metrics = await this.adms.getMetricsList(this.be, this.searchView.filterfrom || \"\", this.searchView.filterto || \"\");\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<MetricsView>(\"HotSearchMetrics\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/metrics`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchMetrics\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: MetricsView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(this.searchView, false);\r\n }\r\n else {\r\n this.searchView = new MetricsView();\r\n this.sendSearch();\r\n }\r\n this.dateChanged();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n sendSearch(resetPage: boolean = true, update: boolean = false, searchViewOverride: MetricsView = null) {\r\n if (!update)\r\n this.MetricsChartCache = {};\r\n\r\n this.searchView.searchinprogress = true;\r\n // Questa ricerca prende i nomi distinct delle metriche quindi devo prendere tutto per forza\r\n this.searchView.itemsperpageoverride = 999999;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(searchViewOverride ?? this.searchView, update);\r\n }\r\n\r\n public Instances: KeyValue[] = []\r\n public selectedInstance = \"\";\r\n public instanceRequired: boolean = false;\r\n public metricsToShow: Metric[] = [];\r\n\r\n async POSTGetItems(data: MetricsView, update: boolean) {\r\n data.filterrealtime = update ? data.filterrealtime : !(!!data.filterfrom || !!data.filterto);\r\n\r\n let res = await this.adms.getMetrics(this.be, data);\r\n //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table\r\n if (!update) {\r\n this.selectedInstance = \"\";\r\n this.metricsToShow = [];\r\n this.searchView = res;\r\n this.searchView.items.forEach(m => {\r\n if (m.instance && !this.Instances.find(t => t.id == m.instance))\r\n this.Instances.push(new KeyValue(m.instance, m.instance));\r\n });\r\n this.instanceRequired = this.Instances.length > 1;\r\n if (this.Instances.length == 1) {\r\n this.selectedInstance = this.Instances[0].id;\r\n this.instanceSelected();\r\n }\r\n else\r\n this.instanceSelected(true);\r\n this.localStorage.setItem(\"HotSearchMetrics\", this.searchView).subscribe();\r\n }\r\n else {\r\n // Per ogni grafico di ogni metrica aggiungo tutti i valori che sono DOPO all'ultimo ts registrato per quel grafico\r\n res.items.forEach(m => {\r\n m.values.forEach(c => {\r\n let refm = this.MetricsChartCache[this.metricKey(m, c)];\r\n if (refm) {\r\n c.series.forEach(s => { s.values = s.values.filter(v => this.dateExts.getDateConvertion(v.d).isAfter(refm.lastTs)); });\r\n if (c.series.some(t => t.values.length > 0)) {\r\n refm.lastTs = c.series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n refm.chart.addData(c);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n this.searchView.searchinprogress = false;\r\n }\r\n\r\n instanceSelected(allowNull: boolean = false) {\r\n if (!this.selectedInstance && !allowNull)\r\n return;\r\n\r\n this.metricsToShow = this.searchView.items.filter(t => !this.selectedInstance || (t.instance == this.selectedInstance));\r\n }\r\n\r\n linkChartToMetric(metric: Metric, metricChart: MetricChart, chartComp: BaseChartComponent<any>) {\r\n this.MetricsChartCache[this.metricKey(metric, metricChart)] = { chart: chartComp, lastTs: metricChart.series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0] };\r\n }\r\n\r\n private metricKey(metric: Metric, value: MetricChart): string {\r\n return metric.name + \" - \" + value.xtitle + (metric.instance ? \" - \" + metric.instance : \"\");\r\n }\r\n\r\n // #region Gestione update automatico\r\n updateTimer: any;\r\n autoUpdateChanged() {\r\n if (!/^[1-9]\\d*$/.test(this.seconds))\r\n this.seconds = '10';\r\n const secondsInMs = parseInt(this.seconds, null) * 1000;\r\n if (this.autoUpdate) {\r\n this.sendSearch(false, true);\r\n this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);\r\n }\r\n else\r\n clearInterval(this.updateTimer);\r\n }\r\n // #endregion\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">\n {{'Metriche di Sistema' | localize: lc}}\n </span>\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12\">\n <form role=\"form\">\n <div class=\"row\">\n <div class=\"col-md-11\">\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-datetime [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\" (inputChange)=\"dateChanged();\"></form-datetime>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-datetime [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\" (inputChange)=\"dateChanged();\"></form-datetime>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtersid\" name=\"filtersid\" [Placeholder]=\"'Cod. Sessione' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterserial\" name=\"filterserial\" [Placeholder]=\"'Seriale Sessione' | localize: lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox> \n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\n </div>\n </div>\n <div class=\"col-md-12 row app-no-padding\">\n <div class=\"col-12 app-filter-wrapper\">\n <form-multiselect [readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtermetrics\" [IdField]=\"'name'\" [Display]=\"'{name}'\" name=\"filtermetrics\" [Placeholder]=\"'Filtra Metriche...' | localize: lc\" [Source]=\"Metrics\"></form-multiselect>\n </div>\n </div>\n <div class=\"clearfix\"></div>\n </div>\n <div class=\"col-md-1 app-no-padding\">\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n <div class=\"clearfix\"></div>\n </div>\n </form>\n <div class=\"app-col-12 app-margin-top-15\">\n <div class=\"pull-right\">\n {{'Aggiorna ogni' | localize: lc}} <input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"seconds\" /> {{'secondo/i' | localize: lc}}\n </div>\n <div class=\"pull-right m-t-2 app-margin-right-5\">\n <label class=\"switch\">\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" name=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\n <div class=\"slider round\"></div>\n </label>\n </div>\n <div class=\"clearfix\"></div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico i Dati' | localize: lc}}</em></p>\n }\n @if (searchView && instanceRequired) {\n <div>\n <form-select [Validation]=\"false\" [Label]=\"'Istanza Metriche' | localize: lc\" [(ngModel)]=\"selectedInstance\" name=\"instance\" [Source]=\"Instances\" (inputChange)=\"instanceSelected()\" required></form-select>\n </div>\n }\n @if (searchView && metricsToShow && metricsToShow.length > 0) {\n <div>\n <div class=\"col-md-12 app-padding-right-0 row app-margin-top-15\">\n @for (metric of metricsToShow; track metric; let i = $index) {\n @for (chart of metric.values; track chart; let z = $index) {\n <div class=\"col-md-4 app-no-padding app-simple-border\">\n <div style=\"width: 100%; height: 260px\">\n <es-line-chart [XTitle]=\"chart.xtitle\"\n [YTitle]=\"chart.ytitle\"\n [MinGridDistance]=\"65\"\n [Timeline]=\"false\"\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\n [MergeDatasets]=\"true\"\n [Data]=\"chart\"\n [Animations]=\"true\"\n [Legend]=\"chart.legend\"\n name=\"metric_{{i}}_chart_{{z}}\"\n (chartLoaded)=\"linkChartToMetric(metric, chart, $event);\"\n [DataGroupingThreshold]=\"99999999\">\n </es-line-chart>\n </div>\n </div>\n }\n }\n </div>\n <div class=\"clearfix\"></div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmLogsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Log del Server\", [\"Server Logs\"]);\r\n }\r\n}","// Angular\r\nimport { Component } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Localizzazione\r\nimport { AdmLogsLoc } from \"./adm_logs.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\n\r\n@Component({\r\n selector: \"adm_logs\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmLogsLoc }],\r\n templateUrl: \"./adm_logs.component.html\",\r\n styleUrls: [\"./adm_logs.component.scss\"],\r\n standalone: false\r\n})\r\nexport class AdmLogsComponent {\r\n public Log: string;\r\n\r\n public filterfrom: string = \"\";\r\n public filterto: string = \"\";\r\n public filterinstance: string = \"\";\r\n public filtertarget: string = \"\";\r\n\r\n public searchinprogress: boolean;\r\n private be: string;\r\n\r\n public AvailableInstances: KeyValue[];\r\n public AvailableTargets: KeyValue[];\r\n\r\n constructor(\r\n private intercom: InterComService,\r\n private lc: LocalizationService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n async ngOnInit() {\r\n this.instanceChanged();\r\n this.AvailableInstances = await this.adms.getInstances(this.be);\r\n\r\n await this.sendSearch();\r\n }\r\n\r\n async instanceChanged(){\r\n this.AvailableTargets = await this.adms.getLogTargets(this.be, this.filterinstance);\r\n }\r\n\r\n async sendSearch(){\r\n this.searchinprogress = true;\r\n this.Log = await this.adms.getServerLogs(this.be, this.filterfrom, this.filterto, this.filterinstance, this.filtertarget);\r\n this.searchinprogress = false;\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da'\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterto\" name=\"filterto\" [Placeholder]=\"'A'\"></form-date>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterinstance\" name=\"filterinstance\" [Placeholder]=\"'Istanza'\" [Source]=\"AvailableInstances\" (inputChange)=\"instanceChanged();\"></form-select>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filtertarget\" name=\"filtertarget\" [Placeholder]=\"'Target'\" [Source]=\"AvailableTargets\"></form-select>\n </div>\n <button [disabled]=\"searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20 app-margin-right-5\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </form>\n </div>\n @if (Log) {\n <p class=\"app-whitespace-prewrap app-log-monospace\" [innerHTML]=\"Log\"></p>\n }\n\n</div>","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class DynamicViewsView extends AppSearch<GenericItem> {\r\n constructor() { super(); }\r\n\r\n filtername: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmDynamicViewsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Ricerca Viste Dinamiche Applicative\", [\"Search Application Dynamic Views\"]);\r\n super.set(\"it->en\", \"Nome\", [\"Name\"]);\r\n super.set(\"it->en\", \"Carico le Viste Dinamiche Applicative\", [\"Loading Application Dynamic Views\"]);\r\n super.set(\"it->en\", \"Il nome della vista è obbligatorio per le operazioni di ricerca\", [\"View Name is mandatory for search operations\"]);\r\n super.set(\"it->en\", \"Nessun elemento trovato per la vista dinamica\", [\"No element found for Dynamic View\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\nimport { AppSearch } from \"@esfaenza/es-table\";\r\n\r\n// Applicazione\r\nimport { DynamicViewsView } from \"../../models/components/DynamicViewsView\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmDynamicViewsLoc } from \"./adm_dynamic_views.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { GenericItem } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"adm_dynamic_views\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmDynamicViewsLoc }],\r\n templateUrl: \"./adm_dynamic_views.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmDynamicViewsComponent {\r\n\r\n public searchView: DynamicViewsView = new DynamicViewsView();\r\n public Names: KeyValue[] = [];\r\n public storageSub: any;\r\n public badSearch: boolean = false;\r\n\r\n public currentName: string = \"\";\r\n\r\n // Staccato dalla view perché deve essere distrutta e ricreata di continuo\r\n public filterName:string = \"\";\r\n\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private intercom: InterComService,\r\n private localStorage: PreferencesService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n async ngOnInit() {\r\n this.Names = await this.adms.getDynamicViews(this.be);\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<DynamicViewsView>(\"HotDinamitato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverviews`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotDinamitato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: DynamicViewsView) {\r\n //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti\r\n //Altirmenti genero il modello nuovo normalmente\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems();\r\n }\r\n else {\r\n this.searchView = new DynamicViewsView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.searchView.filtername = this.filterName;\r\n this.POSTGetItems();\r\n }\r\n\r\n async prepareExportDynamicView(callback) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let tmp = await this.adms.getDynamicViewData(this.be, view);\r\n callback(tmp.items, GenericItem);\r\n }\r\n\r\n async POSTGetItems() {\r\n if (!this.searchView.filtername) {\r\n this.badSearch = true;\r\n AppSearch.reset(this.searchView);\r\n return;\r\n }\r\n else\r\n this.badSearch = false;\r\n\r\n // Per force-resettare l'estable\r\n if (this.currentName != this.searchView.filtername) {\r\n this.currentName = this.searchView.filtername;\r\n\r\n this.searchView = new DynamicViewsView();\r\n this.searchView.page = 1;\r\n this.searchView.filtername = this.currentName;\r\n }\r\n \r\n this.searchView = await this.adms.getDynamicViewData(this.be, this.searchView);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotDinamitato\", this.searchView).subscribe();\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Ricerca Viste Dinamiche Applicative' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterName\" name=\"filtername\" [Source]=\"Names\" [Placeholder]=\"'Nome' | localize: lc\"></form-select>\n </div>\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </form>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (badSearch) {\n <div class=\"card card-info app-white-text app-padding-10\">{{'Il nome della vista è obbligatorio per le operazioni di ricerca' | localize: lc}}</div>\n }\n @if (!badSearch) {\n @if (!searchView) {\n <p><em>{{'Carico le Viste Dinamiche Applicative' | localize: lc}}...</em></p>\n }\n @if (searchView && searchView.items.length > 0) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [AutoUpdate]=\"true\" [ExportFunction]=\"prepareExportDynamicView.bind(this)\" [Export]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"></es-table>\n </div>\n }\n @if (searchView && searchView.items.length == 0 && !searchView.searchinprogress) {\n <div class=\"card card-info app-white-text app-padding-10\">\n {{'Nessun elemento trovato per la vista dinamica' | localize: lc}} <strong>{{searchView.filtername}}</strong>\n </div>\n }\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class QueryView extends AppSearch<GenericItem>{\r\n constructor() { super(); }\r\n\r\n filterquery: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class MtdQueryLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Esecuzione Query Metadati\", [\"Metadata Query Execution\"]);\r\n super.set(\"it->en\", \"Query\", [\"Query\"]);\r\n super.set(\"it->en\", \"Carico i Risultati\", [\"Loading Results\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { ExportService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { QueryView } from \"../../models/components/QueryView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { MtdQueryLoc } from \"./mtd_query.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { GenericItem } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"adm_mtd_query\",\r\n viewProviders: [{ provide: LocalizationService, useClass: MtdQueryLoc }],\r\n templateUrl: \"./mtd_query.component.html\",\r\n standalone: false\r\n})\r\nexport class MtdQueryComponent {\r\n public searchView: QueryView = new QueryView();\r\n public storageSub: any;\r\n\r\n public searching: boolean = false;\r\n private be: string;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n public expExts: ExportService,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<QueryView>(\"HotQuery\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/metadataquery`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotQuery\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: QueryView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetSearch(this.searchView);\r\n }\r\n else {\r\n this.searchView = new QueryView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searching = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n if(!this.searchView.filterquery)\r\n return;\r\n\r\n this.POSTGetSearch(this.searchView);\r\n }\r\n\r\n async POSTGetSearch(data: QueryView) {\r\n this.searchView = await this.adms.getServerQuery(this.be, data);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotEnqueue\", this.searchView).subscribe();\r\n this.searching = false;\r\n }\r\n\r\n async prepareExport(callback) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let tmp = await this.adms.getServerQuery(this.be, view);\r\n callback(tmp.items, GenericItem);\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Esecuzione Query Metadati' | localize: lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <form role=\"form\">\n <div class=\"col-md-12 row app-first-filter-line\">\n <div class=\"col-xl-11 col-lg-11 col-md-11 app-filter-wrapper\">\n <form-textarea rows=\"3\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterquery\" name=\"filterquery\" [Placeholder]=\"'Query'\"></form-textarea>\n </div>\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\n </div>\n </form>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico i Risultati' | localize: lc}}...</em></p>\n }\n @if (searchView && !searching) {\n <div>\n <es-table [(ngModel)]=\"searchView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" [Export]=\"true\" [ExportFileName]=\"'Results.csv'\" [ExportFunction]=\"prepareExport.bind(this)\"></es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { SystemParameters } from \"./SystemParameters\";\r\n\r\nexport class SystemParametersView extends AppSearch<SystemParameters>{\r\n constructor() { super(); }\r\n\r\n filterparameter: string;\r\n filterlevel: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmSystemParametersLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Parametri di sistema\", [\"System Parameters\"]);\r\n super.set(\"it->en\", \"Nome parametro\", [\"Parameter Name\"]);\r\n super.set(\"it->en\", \"Carico Parametri di sistema\", [\"Loading System Parameters\"]);\r\n super.set(\"it->en\", \"Valore\", [\"Value\"]);\r\n super.set(\"it->en\", \"Valore Default\", [\"Default value\"]); \r\n super.set(\"it->en\", \"Descrizione\", [\"Description\"]);\r\n super.set(\"it->en\", \"Default\", [\"Default\"]); super.set(\"it->en\", \"Modificabile\", [\"Modifiable\"]);\r\n super.set(\"it->en\", \"Modifica parametro\", [\"Edit Parameter\"]);\r\n\r\n super.set(\"it->en\", \"Parametro di Sistema modificato con successo \", [\"System Parameter succesfully edited\"]);\r\n super.set(\"it->en\", \"Errori nella modifica del Parametro di Sistema\", [\"Errors editing System Parameter\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { NgForm } from \"@angular/forms\";\r\n\r\n// Configurazioni\r\nimport { InboundMessageTypes, InterComService, MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-feature.base.service\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { KeyValue } from \"@esfaenza/core/domain\";\r\n\r\n// Classi\r\nimport { SystemParametersView } from \"../../models/components/SystemParametersView\";\r\nimport { SystemParameters } from \"../../models/components/SystemParameters\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { firstValueFrom } from \"rxjs\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Loc\r\nimport { AdmSystemParametersLoc } from \"./adm_syspars.component.loc\";\r\n\r\n@Component({\r\n selector: \"adm_syspars\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmSystemParametersLoc }],\r\n templateUrl: \"./adm_syspars.component.html\",\r\n standalone: false\r\n})\r\nexport class AdmSystemParametersComponent {\r\n\r\n public searchView: SystemParametersView = new SystemParametersView();\r\n public storageSub: any;\r\n\r\n public LevelsSource: KeyValue[] = [];\r\n public lastSelectedLevel = \"\";\r\n\r\n private be: string;\r\n \r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n private msgExts: MessageService,\r\n private utiExts: UtilityService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n this.be = route.snapshot.params[\"be\"] || \"\";\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n async ngOnInit() {\r\n this.LevelsSource = [new KeyValue(\"SYS\", \"System\"), new KeyValue(\"SES\", \"Session\")];\r\n\r\n this.AvailableInstances = await this.adms.getInstances(this.be);\r\n\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await firstValueFrom(this.localStorage.getItem<SystemParametersView>(\"HotSysParConfiggato\"));\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/syspars`);\r\n this.route.snapshot.queryParams = [];\r\n await firstValueFrom(this.localStorage.removeItem(\"HotSysParConfiggato\"));\r\n }\r\n }\r\n\r\n init(HotPotato: SystemParametersView) {\r\n //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti\r\n //Altirmenti genero il modello nuovo normalmente\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n\r\n this.POSTGetItems(this.searchView);\r\n }\r\n else {\r\n this.searchView = new SystemParametersView();\r\n this.searchView.filterlevel = \"SES\";\r\n \r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n if (!this.searchView.filterlevel) {\r\n this.msgExts.simpleError(\"È obbligatorio specificare il filtro 'livello' per procedere alla ricerca\");\r\n return;\r\n }\r\n\r\n if (this.searchView.filterlevel == \"SES\") {\r\n this.searchView.filterglobal = false;\r\n }\r\n\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(this.searchView);\r\n }\r\n\r\n async POSTGetItems(data: SystemParametersView) {\r\n this.lastSelectedLevel = this.searchView.filterlevel;\r\n \r\n this.searchView = await this.adms.getSystemParameters(this.be, data);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotSysParConfiggato\", this.searchView).subscribe();\r\n }\r\n\r\n //*********************************************EDIT************************************\r\n\r\n ParOnEdit: SystemParameters = null;\r\n @ViewChild(\"editConfigForm\", { static: true }) editConfigForm: NgForm;\r\n\r\n AvailableInstances: KeyValue[] = [];\r\n\r\n setupEdit(item: SystemParameters) {\r\n this.utiExts.cleanForm(this.editConfigForm);\r\n setTimeout(() => {\r\n this.ParOnEdit = this.utiExts.deepClone(item);\r\n this.ParOnEdit.memory = true;\r\n });\r\n }\r\n\r\n submitForm() {\r\n this.adms.updateSystemParameter(this.be, this.ParOnEdit).then(t => {\r\n this.msgExts.manageStringResponse(t, this.lc.loc(\"Parametro di Sistema modificato con successo \"), this.lc.loc(\"Errori nella modifica del Parametro di Sistema\"), () => { this.sendSearch() });\r\n })\r\n return true;\r\n }\r\n\r\n //*********************************************RESET************************************\r\n\r\n setupReset(item: SystemParameters) {\r\n this.msgExts.simpleWarningWithChoice(\r\n this.lc.loc(\"Richiesta conferma\"),\r\n this.lc.loc(\"Si desidera procedere al reset del parametro??\"),\r\n async () => {\r\n let t = await this.adms.resetSystemParameter(this.be, item.parametername, this.lastSelectedLevel);\r\n this.msgExts.manageStringResponse(t, this.lc.loc(\"Parametro di Sistema resettato con successo \"), this.lc.loc(\"Errori nel reset del Parametro di Sistema\"), () => { this.sendSearch() });\r\n });\r\n }\r\n}","<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card app-overflow-visible\" widget>\n <div class=\"card-header\">\n <span class=\"text-uppercase\">{{'Parametri di sistema' | localize : lc}}</span>\n </div>\n <div class=\"card-body widget-body\">\n <div class=\"col-md-12 bottom-15\">\n <form role=\"form\">\n <div class=\"row app-first-filter-line\">\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterparameter\" name=\"filterparameter\" [Placeholder]=\"'Nome parametro' | localize : lc\"></form-input>\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterlevel\" name=\"filterlevel\" [Placeholder]=\"'Livello' | localize : lc\" [Source]=\"LevelsSource\"></form-select>\n </div>\n @if (searchView.filterlevel == 'SYS') {\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox> \n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\n </div>\n }\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"far fa-search\"></i></button>\n </div>\n </form>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n @if (!searchView) {\n <p><em>{{'Carico Parametri di sistema' | localize : lc}}...</em></p>\n }\n @if (searchView) {\n <div>\n <es-table [(ngModel)]=\"searchView\" (onSearchRequest)=\"sendSearch($event);\">\n <ng-template #header>\n <th class=\"app-col-min\"></th>\n <th class=\"app-col-min\"></th>\n <th class=\"app-nowrap\">{{'Nome parametro' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Valore' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Default' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Descrizione' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Modificabile' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Valore Default' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Modificabile a livello di Sessione' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Modificabile a livello di Sistema' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Modificato' | localize : lc}}</th>\n <th class=\"app-nowrap\">{{'Aggiustato' | localize : lc}}</th>\n </ng-template>\n <ng-template #body let-item>\n <td class=\"app-no-wrap app-right-0 app-padding-top-8\">\n @if (!item.isreadonly && ((lastSelectedLevel == 'SYS' && item.syseditable) || (lastSelectedLevel == 'SES' && item.seseditable))) {\n <a class=\"app-link far fa-edit\" (click)=\"setupEdit(item); dlgEdit.show();\"></a>\n }\n </td>\n <td class=\"app-no-wrap app-right-0 app-padding-top-8\">\n @if (!item.isreadonly && ((lastSelectedLevel == 'SYS' && item.syseditable) || (lastSelectedLevel == 'SES' && item.seseditable))) {\n <a class=\"app-link far fa-refresh\" (click)=\"setupReset(item);\"></a>\n }\n </td>\n <td class=\"app-nowrap\"><strong>{{item.parametername}}</strong></td>\n <td class=\"app-nowrap\">{{item.value}}</td>\n <td class=\"app-nowrap\" [class.text-success]=\"item.isdefault\" [class.text-danger]=\"!item.isdefault\">\n {{ item.isdefault ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n <td class=\"app-nowrap\">{{item.parameterdescription}}</td>\n <td class=\"app-nowrap\" [class.text-success]=\"!item.isreadonly\" [class.text-danger]=\"item.isreadonly\">\n {{ !item.isreadonly ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n <td class=\"app-nowrap\">{{item.defaultvalue}}</td>\n <td class=\"app-nowrap\" [class.text-success]=\"item.seseditable\" [class.text-danger]=\"!item.seseditable\">\n {{ item.seseditable ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n <td class=\"app-nowrap\" [class.text-success]=\"item.syseditable\" [class.text-danger]=\"!item.syseditable\">\n {{ item.syseditable ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n <td class=\"app-nowrap\">{{item.modified}}</td>\n <td class=\"app-nowrap\" [class.text-success]=\"item.adjusted\" [class.text-danger]=\"!item.adjusted\">\n {{ item.adjusted ? ('Sì' | localize : lc) : ('No' | localize : lc) }}\n </td>\n </ng-template>\n </es-table>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div esModal #dlgEdit=\"es-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\n <div class=\"modal-dialog modal-lg\" emaDraggable>\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title pull-left\">{{ 'Modifica parametro' | localize : lc }}</h5>\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgEdit.hide()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <form novalidate #editConfigForm=\"ngForm\" (ngSubmit)=\"editConfigForm.valid && submitForm() && dlgEdit.hide()\">\n @if (ParOnEdit) {\n <div class=\"modal-body\">\n <form-input [LabelInputRatio]=\"'3 9'\" [Label]=\"'Nome parametro' | localize : lc\" [(ngModel)]=\"ParOnEdit.parametername\" [disabled]=\"true\" name=\"parametername\"></form-input>\n <form-input [LabelInputRatio]=\"'3 9'\" [Label]=\"'Valore' | localize : lc\" [(ngModel)]=\"ParOnEdit.value\" name=\"value\" [Last]=\"lastSelectedLevel == 'SES'\"></form-input>\n @if (lastSelectedLevel == 'SYS') {\n <form-checkbox [LabelInputRatio]=\"'3 9'\" [Label]=\"'File Configurazione' | localize : lc\" [(ngModel)]=\"ParOnEdit.configfile\" name=\"configfile\"></form-checkbox>\n <form-checkbox [LabelInputRatio]=\"'3 9'\" [Label]=\"'Memoria' | localize : lc\" [(ngModel)]=\"ParOnEdit.memory\" name=\"memory\"></form-checkbox>\n <form-multiselect [LabelInputRatio]=\"'3 9'\" [Label]=\"'Applica solo a' | localize : lc\" [Source]=\"AvailableInstances\" name=\"instanceids\" [(ngModel)]=\"ParOnEdit.instanceids\" [Last]=\"true\"> </form-multiselect>\n }\n </div>\n }\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgEdit.hide()\">{{'Annulla' | localize : lc}}</button>\n <button type=\"submit\" contextAware class=\"btn btn-primary\">{{'Conferma' | localize : lc}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>","// Angular\r\nimport { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({ name: 'format_time' })\r\nexport class FormatTimePipe implements PipeTransform {\r\n\r\n constructor() { }\r\n\r\n transform(value: number | string) {\r\n return this.secondsToHms(value);\r\n }\r\n\r\n secondsToHms(d: number | string): string {\r\n d = Number(d);\r\n var h = Math.floor(d / 3600);\r\n var m = Math.floor(d % 3600 / 60);\r\n var s = Math.floor(d % 3600 % 60);\r\n \r\n var hDisplay = h > 0 ? h + \" h, \" : \"\";\r\n var mDisplay = m > 0 ? m + \" min, \" : \"\";\r\n var sDisplay = s > 0 ? s + \" sec\" : \"\";\r\n return hDisplay + mDisplay + sDisplay; \r\n }\r\n}","/** Chiave di questo modulo, da utilizzare per i messaggi */\r\nexport const MK_ADM = \"EsAdminModule\";\r\n\r\n/** Messaggi gestiti da questo modulo */\r\nexport enum AdmMessageTypes{\r\n Message\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { InterComService, InterComMessage } from \"@esfaenza/extensions\";\r\n\r\n// Modelli\r\nimport { AdmMessageTypes, MK_ADM } from \"./admin-feature-messages\";\r\n\r\ndeclare var myconfig;\r\n\r\n@Injectable()\r\nexport class AdminModuleCommService {\r\n\r\n constructor(private intercom: InterComService) { }\r\n\r\n public register() {\r\n this.intercom.register(MK_ADM);\r\n this.intercom.outbounds[MK_ADM].subscribe((t: InterComMessage) => { this.handleOutbound(t.type, t.message); });\r\n }\r\n\r\n private handleOutbound(type: AdmMessageTypes, message: any) {\r\n switch (type) {\r\n case AdmMessageTypes.Message:\r\n if (myconfig.DEBUG_MODE)\r\n console.log(\"@admin-feature outbound message: \" + message);\r\n break;\r\n }\r\n }\r\n}","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { RouterModule } from \"@angular/router\";\r\n\r\n// Libs\r\nimport { ModalModule } from \"ngx-bootstrap/modal\";\r\nimport { BsDropdownModule } from \"ngx-bootstrap/dropdown\";\r\nimport { TooltipModule } from \"ngx-bootstrap/tooltip\";\r\n\r\n// Esfaenza\r\nimport { EsTableModule } from \"@esfaenza/es-table\";\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\nimport { EsChartsModule } from \"@esfaenza/es-charts\";\r\nimport { EsGertrudeModule } from \"@esfaenza/gertrude\";\r\nimport { ExtensionsModule } from \"@esfaenza/extensions\";\r\nimport { LocalizationModule } from \"@esfaenza/localizations\";\r\nimport { ContextMenuModule } from \"@esfaenza/ngx-contextmenu\";\r\n\r\n// Components\r\nimport { AdmAuditsComponent } from \"./components/audits/adm_audits.component\";\r\nimport { AdmWrkComponent } from \"./components/workers/adm_wrk.component\";\r\nimport { AdmProfilerComponent } from \"./components/profiler/adm_profiler.component\";\r\nimport { AdmTopActivitiesComponent } from \"./components/topact/topact_search.component\";\r\nimport { AdmEnqComponent } from \"./components/enqueues/adm_enq.component\";\r\nimport { AdmMetricsComponent } from \"./components/metrics/metrics_search.component\";\r\nimport { AdmLogsComponent } from \"./components/logs/adm_logs.component\";\r\nimport { NodeDetailComponent } from \"./components/_shared/node_detail.component\";\r\nimport { AdmDynamicViewsComponent } from \"./components/dynamic_views/adm_dynamic_views.component\";\r\nimport { MtdQueryComponent } from \"./components/mtd_query/mtd_query.component\";\r\nimport { AdmSystemParametersComponent } from \"./components/syspars/adm_syspars.component\";\r\n\r\n// Pipes\r\nimport { FormatTimePipe } from \"./pipes/format_time.pipe\";\r\n\r\n// Communication Service\r\nimport { AdminModuleCommService } from \"./admin-feature.comms.service\";\r\n\r\n// Tokens\r\nimport { ADM_CONVERSATIONS } from \"./tokens\";\r\nimport { ComponentsModule } from \"@esfaenza/core/components\";\r\nimport { DirectivesModule } from \"@esfaenza/core/directives\";\r\n\r\ndeclare var myconfig;\r\n\r\nexport const routeConfig = [\r\n {\r\n path: \"\", children: [\r\n { path: \"serverworkers/:be\", component: AdmWrkComponent, data: { title: \"Ricerca Processi Applicativi\", internalNavigation: false } },\r\n { path: \"profiler/:be\", component: AdmProfilerComponent, data: { title: \"Profiler del Server\", internalNavigation: false } },\r\n { path: \"topact/:be\", component: AdmTopActivitiesComponent, data: { title: \"Attività Principali\", internalNavigation: false } },\r\n { path: \"metrics/:be\", component: AdmMetricsComponent, data: { title: \"Metriche di Sistema\", internalNavigation: false } },\r\n { path: \"serverlogs/:be\", component: AdmLogsComponent, data: { title: \"Log del Server\", internalNavigation: false } },\r\n { path: \"serveraudits/:be\", component: AdmAuditsComponent, data: { title: \"Ricerca Audit Applicativi\", internalNavigation: false } },\r\n { path: \"serverenqueues/:be\", component: AdmEnqComponent, data: { title: \"Ricerca Lock Applicativi\", internalNavigation: false } },\r\n { path: \"serverviews/:be\", component: AdmDynamicViewsComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } },\r\n { path: \"metadataquery/:be\", component: MtdQueryComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } },\r\n { path: \"serverworkers\", component: AdmWrkComponent, data: { title: \"Ricerca Processi Applicativi\", internalNavigation: false } },\r\n { path: \"profiler\", component: AdmProfilerComponent, data: { title: \"Profiler del Server\", internalNavigation: false } },\r\n { path: \"topact\", component: AdmTopActivitiesComponent, data: { title: \"Attività Principali\", internalNavigation: false } },\r\n { path: \"metrics\", component: AdmMetricsComponent, data: { title: \"Metriche di Sistema\", internalNavigation: false } },\r\n { path: \"serverlogs\", component: AdmLogsComponent, data: { title: \"Log del Server\", internalNavigation: false } },\r\n { path: \"serveraudits\", component: AdmAuditsComponent, data: { title: \"Ricerca Audit Applicativi\", internalNavigation: false } },\r\n { path: \"serverenqueues\", component: AdmEnqComponent, data: { title: \"Ricerca Lock Applicativi\", internalNavigation: false } },\r\n { path: \"serverviews\", component: AdmDynamicViewsComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } },\r\n { path: \"metadataquery\", component: MtdQueryComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } },\r\n { path: \"syspars\", component: AdmSystemParametersComponent, data: { title: \"Parametri di sistema\", internalNavigation: false } }]\r\n }\r\n];\r\n\r\nconst MODULES = [\r\n // Base\r\n CommonModule,\r\n FormsModule,\r\n\r\n // Bootstrap\r\n ModalModule,\r\n TooltipModule,\r\n BsDropdownModule,\r\n\r\n // Esfaenza e componenti visuali\r\n ContextMenuModule,\r\n LocalizationModule,\r\n ExtensionsModule,\r\n EsTableModule,\r\n FormsAndValidationsModule,\r\n EsGertrudeModule,\r\n EsChartsModule,\r\n ComponentsModule,\r\n DirectivesModule,\r\n\r\n RouterModule.forChild(routeConfig),\r\n];\r\n\r\nconst COMPONENTS = [\r\n AdmWrkComponent,\r\n AdmProfilerComponent,\r\n AdmTopActivitiesComponent,\r\n AdmDynamicViewsComponent,\r\n AdmLogsComponent,\r\n AdmAuditsComponent,\r\n AdmEnqComponent,\r\n AdmMetricsComponent,\r\n NodeDetailComponent,\r\n MtdQueryComponent,\r\n AdmSystemParametersComponent\r\n];\r\n\r\nconst PIPES = [\r\n FormatTimePipe\r\n]\r\n\r\n@NgModule({\r\n imports: [...MODULES, ...PIPES],\r\n declarations: [...COMPONENTS],\r\n providers: [\r\n AdminModuleCommService,\r\n { provide: ADM_CONVERSATIONS, useFactory: () => !!myconfig.TransactionTimeoutSeconds }\r\n ]\r\n})\r\nexport class AdmModule {\r\n constructor(private commService: AdminModuleCommService) {\r\n console.log(\"@esfaenza/admin-feature: BOOTSTRAP\");\r\n this.commService.register();\r\n }\r\n}","/*\r\n * Public API Surface of admin-feature\r\n */\r\n\r\nexport * from './lib/admin-feature.module';\r\nexport * from './lib/tokens';\r\nexport * from \"./lib/admin-feature-messages\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i6.AdminModuleBaseService","i8","i9","i10","i11","i3","i12.NodeDetailComponent","i4","i12","i13.NodeDetailComponent","i1","i4.AdminModuleBaseService","i5","i6","KeyValue","i1.AdminModuleCommService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGM,MAAO,UAAW,SAAQ,SAAgB,CAAA;AAC5C,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACxB;AAcH;;MCpBY,eAAe,GAA2B,IAAI,cAAc,CAAS,iBAAiB;MACtF,iBAAiB,GAA4B,IAAI,cAAc,CAAU,mBAAmB;;ACCnG,MAAO,WAAY,SAAQ,mBAAmB,CAAA;AAChD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC;QAEf,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,2BAA2B,EAAE,CAAC,2BAA2B,CAAC,CAAC;QAC/E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,WAAW,CAAC,CAAC;QACnD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC;QAChD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;QACvC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QACzC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC;QACnD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC;QAC/C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC;QAChD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,aAAa,CAAC,CAAC;QACpD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,aAAa,CAAC,CAAC;QACpD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,oCAAoC,EAAE,CAAC,4BAA4B,CAAC,CAAC;QACzF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,eAAe,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,2BAA2B,EAAE,CAAC,wBAAwB,CAAC,CAAC;QAC5E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC,iBAAiB,CAAC,CAAC;IACjE;+GArBS,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAX,WAAW,EAAA,CAAA,CAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACHD;AA0BA;AACA,MAAM,uCAAuC,GAAW,0CAA0C;AAClG,MAAM,8BAA8B,GAAW,uCAAuC;AACtF,MAAM,qBAAqB,GAAW,wBAAwB;AAC9D,MAAM,uBAAuB,GAAW,0BAA0B;AAClE,MAAM,wBAAwB,GAAW,0BAA0B;AACnE,MAAM,kCAAkC,GAAW,oCAAoC;AACvF,MAAM,8BAA8B,GAAW,iCAAiC;AAChF,MAAM,6BAA6B,GAAW,+BAA+B;AAC7E,MAAM,gCAAgC,GAAW,kCAAkC;AACnF,MAAM,4BAA4B,GAAW,8BAA8B;AAC3E,MAAM,4BAA4B,GAAW,8BAA8B;AAC3E,MAAM,0BAA0B,GAAW,6BAA6B;AACxE,MAAM,4BAA4B,GAAW,+BAA+B;AAC5E,MAAM,8BAA8B,GAAW,gCAAgC;AAC/E,MAAM,8BAA8B,GAAW,gCAAgC;AAC/E,MAAM,wBAAwB,GAAW,2BAA2B;AACpE,MAAM,8BAA8B,GAAW,iCAAiC;AAChF,MAAM,yBAAyB,GAAW,4BAA4B;AACtE,MAAM,4BAA4B,GAAW,+BAA+B;AAC5E,MAAM,iCAAiC,GAAW,mCAAmC;AACrF,MAAM,kCAAkC,GAAW,oCAAoC;AACvF,MAAM,iCAAiC,GAAW,oCAAoC;AACtF,MAAM,yBAAyB,GAAW,4BAA4B;AACtE,MAAM,0BAA0B,GAAW,6BAA6B;MAG3D,sBAAsB,CAAA;AAI/B,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC;IACpD;AAEO,IAAA,MAAM,gBAAgB,CAAC,EAAU,EAAE,EAAiB,EAAA;AACvD,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;AAEzC,QAAA,IAAI,GAAG,GAAkB,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAgB,8BAA8B,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACtH,QAAA,OAAO,GAAG;IACd;IAEO,MAAM,mBAAmB,CAAC,EAAU,EAAE,UAAkB,EAAE,GAAW,EAAE,MAAc,EAAE,MAAc,EAAA;AACxG,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU;AACpB,aAAA,GAAG,CAAC,YAAY,EAAE,UAAU,IAAI,EAAE;AAClC,aAAA,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE;AACpB,aAAA,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE;AAC1B,aAAA,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE;AAC1B,aAAA,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAExB,QAAA,IAAI,GAAG,GAAW,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,8BAA8B,EAAE,IAAI,CAAC,CAAC;AACnG,QAAA,OAAO,GAAG;IACd;IAEO,MAAM,aAAa,CAAC,EAAU,EAAE,UAAkB,EAAE,GAAW,EAAE,MAAc,EAAA;AAClF,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU;AACpB,aAAA,GAAG,CAAC,YAAY,EAAE,UAAU,IAAI,EAAE;AAClC,aAAA,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE;AACpB,aAAA,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE;AAC1B,aAAA,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAExB,QAAA,IAAI,GAAG,GAAW,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,wBAAwB,EAAE,IAAI,CAAC,CAAC;AAC7F,QAAA,OAAO,GAAG;IACd;IAEO,MAAM,4BAA4B,CAAC,EAAU,EAAE,UAAkB,EAAE,GAAW,EAAE,MAAc,EAAE,aAAqB,EAAA;AACxH,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU;AACpB,aAAA,GAAG,CAAC,YAAY,EAAE,UAAU,IAAI,EAAE;AAClC,aAAA,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE;AACpB,aAAA,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE;AAC1B,aAAA,GAAG,CAAC,gBAAgB,EAAE,aAAa,IAAI,EAAE;AACzC,aAAA,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAExB,QAAA,IAAI,GAAG,GAAW,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,uCAAuC,EAAE,IAAI,CAAC,CAAC;AAC5G,QAAA,OAAO,GAAG;IACd;IAEO,MAAM,iBAAiB,CAAC,EAAU,EAAA;AACrC,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAE/C,QAAA,IAAI,GAAG,GAAe,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,8BAA8B,EAAE,IAAI,CAAC,CAAC;AAC3G,QAAA,OAAO,GAAG;IACd;IAEO,MAAM,aAAa,CAAC,EAAU,EAAE,IAAY,EAAE,EAAU,EAAE,QAAgB,EAAE,MAAc,EAAA;QAC7F,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AACvJ,QAAA,IAAI,GAAG,GAAW,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,0BAA0B,EAAE,IAAI,CAAC,CAAC;AAC/F,QAAA,OAAO,GAAG;IACd;AAEO,IAAA,MAAM,gBAAgB,CAAC,EAAU,EAAE,EAAyB,EAAA;AAC/D,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAA,IAAI,GAAG,GAA0B,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAwB,8BAA8B,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACtI,QAAA,OAAO,GAAG;IACd;IAEO,MAAM,QAAQ,CAAC,EAAU,EAAA;AAC5B,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAA,IAAI,GAAG,GAAkB,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAgB,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,IAAqB,CAAC,CAAC,CAAC,CAAC;AACtK,QAAA,OAAO,GAAG;IACd;IAEO,MAAM,YAAY,CAAC,EAAU,EAAE,MAAc,EAAE,SAAkB,KAAK,EAAA;AACzE,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;AACjG,QAAA,IAAI,GAAG,GAAc,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAY,yBAAyB,EAAE,IAAI,CAAC,CAAC;AACpG,QAAA,OAAO,GAAG;IACd;IAEO,MAAM,eAAe,CAAC,EAAU,EAAE,GAAW,EAAE,MAAc,EAAE,QAAgB,EAAA;AAClF,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AACnI,QAAA,IAAI,GAAG,GAAiB,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,4BAA4B,EAAE,IAAI,CAAC,CAAC;AAC7G,QAAA,OAAO,GAAG;IACd;AAEO,IAAA,MAAM,oBAAoB,CAAC,EAAU,EAAE,EAAyB,EAAA;AACnE,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAA,IAAI,GAAG,GAA0B,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAwB,kCAAkC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAC1I,QAAA,OAAO,GAAG;IACd;IAEO,sBAAsB,CAAC,EAAU,EAAE,IAAY,EAAE,EAAU,EAAE,SAAkB,KAAK,EAAA;AACvF,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;QACjH,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,8BAA8B,EAAE,IAAI,CAAC;IACjE;AAEO,IAAA,MAAM,UAAU,CAAC,EAAU,EAAE,EAAe,EAAA;AAC/C,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAA,IAAI,GAAG,GAAgB,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAc,wBAAwB,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5G,QAAA,OAAO,GAAG;IACd;AAEO,IAAA,MAAM,cAAc,CAAC,EAAU,EAAE,IAAY,EAAE,EAAU,EAAA;AAC5D,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU;AACpB,aAAA,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE;AACtB,aAAA,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;AAClB,aAAA,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAExB,QAAA,IAAI,GAAG,GAAa,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAW,uBAAuB,EAAE,IAAI,CAAC,CAAC;QAChG,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3D;AAEO,IAAA,MAAM,cAAc,CAAC,EAAU,EAAE,EAAa,EAAA;AACjD,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAA,IAAI,GAAG,GAAc,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAY,4BAA4B,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5G,QAAA,OAAO,GAAG;IACd;AAEO,IAAA,MAAM,cAAc,CAAC,EAAU,EAAE,EAAa,EAAA;AACjD,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAA,IAAI,GAAG,GAAc,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAY,4BAA4B,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5G,QAAA,OAAO,GAAG;IACd;AAEO,IAAA,MAAM,kBAAkB,CAAC,EAAU,EAAE,EAAoB,EAAA;AAC5D,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAA,IAAI,GAAG,GAAqB,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAmB,gCAAgC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9H,QAAA,OAAO,GAAG;IACd;IAEO,MAAM,eAAe,CAAC,EAAU,EAAA;AACnC,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAA,IAAI,GAAG,GAAe,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,4BAA4B,EAAE,IAAI,CAAC,CAAC;AACzG,QAAA,OAAO,GAAG;IACd;AAEO,IAAA,MAAM,eAAe,CAAC,EAAU,EAAE,EAAc,EAAA;AACnD,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAA,IAAI,GAAG,GAAe,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAa,6BAA6B,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/G,QAAA,OAAO,GAAG;IACd;AAEQ,IAAA,MAAM,mBAAmB,CAAC,EAAU,EAAE,EAAwB,EAAA;AAClE,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAA,IAAI,GAAG,GAAyB,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAuB,iCAAiC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACvI,QAAA,OAAO,GAAG;IACd;IAEO,MAAM,YAAY,CAAC,EAAU,EAAA;AAChC,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAA,IAAI,GAAG,GAAe,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,yBAAyB,EAAE,IAAI,CAAC,CAAC;AACtG,QAAA,OAAO,GAAG;IACd;AAGO,IAAA,MAAM,aAAa,CAAC,EAAU,EAAE,QAAgB,EAAA;QACnD,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,IAAI,EAAE,CAAC;AAC/E,QAAA,IAAI,GAAG,GAAe,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,0BAA0B,EAAE,IAAI,CAAC,CAAC;AACvG,QAAA,OAAO,GAAG;IACd;AAEO,IAAA,MAAM,qBAAqB,CAAC,EAAU,EAAE,GAAqB,EAAA;AAChE,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAA,IAAI,GAAG,GAAW,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAS,kCAAkC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC7G,QAAA,OAAO,GAAG;IACd;AAEQ,IAAA,MAAM,oBAAoB,CAAC,EAAU,EAAE,KAAa,EAAE,KAAa,EAAA;AACvE,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU;AACpB,aAAA,GAAG,CAAC,OAAO,EAAE,KAAK;AAClB,aAAA,GAAG,CAAC,OAAO,EAAE,KAAK;AAClB,aAAA,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAExB,QAAA,IAAI,GAAG,GAAW,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,iCAAiC,EAAE,IAAI,CAAC,CAAC;AACtG,QAAA,OAAO,GAAG;IACd;+GAlLS,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADT,MAAM,EAAA,CAAA,CAAA;;4FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACpDlC;MA2Ba,kBAAkB,CAAA;AAU3B,IAAA,WAAA,CACW,EAAuB,EACtB,QAAyB,EACzB,YAAgC,EAChC,KAAqB,EACrB,QAAkB,EAClB,IAA4B,EAC7B,IAAsB,EACI,GAAW,EACV,iBAA0B,EAAA;QARrD,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,IAAI,GAAJ,IAAI;QACL,IAAA,CAAA,IAAI,GAAJ,IAAI;QACsB,IAAA,CAAA,GAAG,GAAH,GAAG;QACF,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;AAjBhD,QAAA,IAAA,CAAA,UAAU,GAAe,IAAI,UAAU,EAAE;QACzC,IAAA,CAAA,OAAO,GAAe,EAAE;QACxB,IAAA,CAAA,WAAW,GAAe,EAAE;QAC5B,IAAA,CAAA,gBAAgB,GAAY,KAAK;AAepC,QAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;AAE3C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAE9H,IAAI,CAAC,WAAW,GAAG;AACf,YAAA,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE;AACjC,YAAA,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE;AACnC,YAAA,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE;AACjC,YAAA,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE;AACrC,YAAA,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ;SACxC;QAED,IAAI,CAAC,OAAO,GAAG;AACX,YAAA,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;AACtD,YAAA,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;AACtD,YAAA,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;SACjD;IACL;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAG,EAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzG;IAEA,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;IACrC;IAEA,MAAM,IAAI,CAAC,aAAa,EAAA;AACpB,QAAA,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAa,cAAc,CAAC,CAAC,SAAS,EAAE;AAClF,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,GAAG,CAAA,aAAA,CAAe,CAAC;YAC7D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE;YACpC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE;QAClE;IACJ;AAEA,IAAA,IAAI,CAAC,SAAqB,EAAA;;;QAGtB,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;QAC1C;aACK;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE;YAClC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;AAC/F,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC7E,IAAI,CAAC,UAAU,EAAE;QACrB;IACJ;IAEA,UAAU,CAAC,YAAqB,IAAI,EAAA;AAChC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,SAAS;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;AAE5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;IAC1C;IAEA,MAAM,gBAAgB,CAAC,IAAgB,EAAA;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;AAChE,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE;IAC1E;+GAvFS,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAkBf,eAAe,EAAA,EAAA,EAAA,KAAA,EACf,iBAAiB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAnBpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B/B,w4OAqGM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,ED9Ea,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,EAAA,CAAA,CAAA;;4FAI/D,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,aAAA,EACP,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,cAE5D,KAAK,EAAA,QAAA,EAAA,w4OAAA,EAAA;;0BAoBZ,MAAM;2BAAC,eAAe;;0BACtB,MAAM;2BAAC,iBAAiB;;;ME9CpB,QAAQ,CAAA;IACjB,WAAA,CAAmB,EAAU,EAAS,WAAmB,EAAA;QAAtC,IAAA,CAAA,EAAE,GAAF,EAAE;QAAiB,IAAA,CAAA,WAAW,GAAX,WAAW;IAAY;AAChE;;ACAK,MAAO,aAAc,SAAQ,SAAsB,CAAA;AACrD,IAAA,WAAA,GAAA,EAAgB,KAAK,EAAE,CAAC,CAAC;AAgB5B;;ACfK,MAAO,SAAU,SAAQ,mBAAmB,CAAA;AAC9C,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC;QAEf,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,2CAA2C,EAAE,CAAC,oCAAoC,CAAC,CAAC;QACxG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,6CAA6C,EAAE,CAAC,gCAAgC,CAAC,CAAC;QACtG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,4BAA4B,EAAE,CAAC,uBAAuB,CAAC,CAAC;QAC5E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,yBAAyB,EAAE,CAAC,oBAAoB,CAAC,CAAC;QACtE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC;QACnD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,eAAe,CAAC,CAAC;QACtD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;QACvC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;QACnC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;QACnC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,wBAAwB,EAAE,CAAC,0BAA0B,CAAC,CAAC;QAC3E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,eAAe,CAAC,CAAC;QACzD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,8BAA8B,EAAE,CAAC,8BAA8B,CAAC,CAAC;QACrF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QACzC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,gDAAgD,EAAE,CAAC,iCAAiC,CAAC,CAAC;QAC1G,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,+BAA+B,EAAE,CAAC,+BAA+B,CAAC,CAAC;QACvF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,yBAAyB,EAAE,CAAC,0BAA0B,CAAC,CAAC;QAC5E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,4BAA4B,EAAE,CAAC,4BAA4B,CAAC,CAAC;QACjF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,cAAc,CAAC,CAAC;QACzD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qCAAqC,EAAE,CAAC,4BAA4B,CAAC,CAAC;QAC1F,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,8BAA8B,EAAE,CAAC,4BAA4B,CAAC,CAAC;QACnF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,oCAAoC,EAAE,CAAC,sBAAsB,CAAC,CAAC;QACnF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,4FAA4F,EAAE,CAAC,8FAA8F,CAAC,CAAC;IACvN;+GA7BS,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAT,SAAS,EAAA,CAAA,CAAA;;4FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB;;;ACHD;MA+Ba,eAAe,CAAA;AAexB,IAAA,WAAA,CACY,OAAuB,EACvB,OAAuB,EACxB,EAAuB,EACtB,YAAgC,EAChC,QAAyB,EACzB,KAAqB,EACrB,QAAkB,EAClB,IAA4B,EACH,GAAW,EAAA;QARpC,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,OAAO,GAAP,OAAO;QACR,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,IAAI,GAAJ,IAAI;QACqB,IAAA,CAAA,GAAG,GAAH,GAAG;QAtBhC,IAAA,CAAA,iBAAiB,GAAG,IAAI;AAEzB,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,aAAa,EAAE;QAC/C,IAAA,CAAA,UAAU,GAAiC,EAAE;QAE7C,IAAA,CAAA,WAAW,GAAW,EAAE;QAExB,IAAA,CAAA,KAAK,GAAe,EAAE;QACtB,IAAA,CAAA,MAAM,GAAe,EAAE;QACvB,IAAA,CAAA,WAAW,GAAe,EAAE;QAC5B,IAAA,CAAA,cAAc,GAAe,EAAE;;QAwItC,IAAA,CAAA,KAAK,GAAW,EAAE;QAClB,IAAA,CAAA,GAAG,GAAe,EAAE;QACpB,IAAA,CAAA,oBAAoB,GAAY,KAAK;AA5HjC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;AAC9H,QAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;QAE3C,IAAI,CAAC,UAAU,GAAG;YACd,IAAI,0BAA0B,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,0BAA0B,EAAE,EAAE,EAAE,eAAe,EAAE,GAAG,CAAC;YACxI,IAAI,0BAA0B,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,2BAA2B,EAAE,EAAE,EAAE,eAAe,EAAE,GAAG,CAAC;AAC7I,YAAA,IAAI,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;AAChG,YAAA,IAAI,0BAA0B,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,sBAAsB;SAChH;IACL;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAG;YACxD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACtC,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;IACrC;AAEA,IAAA,IAAI,CAAC,aAAa,EAAA;AACd,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACjH,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACxH,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,WAAW,EAAE,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtI,IAAI,CAAC,cAAc,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7F,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IAC9B;IAEA,MAAM,MAAM,CAAC,aAAa,EAAA;AACtB,QAAA,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAgB,eAAe,CAAC,CAAC,SAAS,EAAE;AACtF,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,GAAG,CAAA,cAAA,CAAgB,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE;YACpC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE;QACnE;IACJ;AAEA,IAAA,IAAI,CAAC,SAAwB,EAAA;QACzB,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;YAC3B,IAAI,CAAC,oBAAoB,EAAE;QAC/B;aACK;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,aAAa,EAAE;YACrC,IAAI,CAAC,UAAU,EAAE;QACrB;IACJ;IAEA,UAAU,CAAC,YAAqB,IAAI,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI;AACvC,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,EAAE;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,EAAE;AACpC,QAAA,IAAI,SAAS;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;QAE5B,IAAI,CAAC,oBAAoB,EAAE;IAC/B;AAEA,IAAA,MAAM,oBAAoB,GAAA;;;AAGtB,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAC1F,YAAA,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5D,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACtB,qBAAqB,CAAC,YAAW;AAC7B,gBAAA,IAAI,CAAC,iBAAiB,GAAG,cAAc,CAAC,YAAY;AACpD,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC;AAC3E,gBAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK;AACxC,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE;AAC3E,YAAA,CAAC,CAAC;QACN;aACK;YACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,IAAI,KAAK;AAC9D,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;AAC5E,YAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK;AACxC,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE;QAC3E;IACJ;IAEA,MAAM,aAAa,CAAC,QAAQ,EAAA;AACxB,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,QAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO;AACnC,QAAA,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;AACzD,QAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC;IACpC;IAEA,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IACxB;AAEA,IAAA,WAAW,CAAC,KAAgC,EAAA;AACxC,QAAA,QAAQ,KAAK,CAAC,EAAE;AACZ,YAAA,KAAK,UAAU;gBAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;gBAAE;AACvD,YAAA,KAAK,WAAW;gBAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;gBAAE;AACzD,YAAA,KAAK,MAAM;AAAE,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE;AAC3C,YAAA,KAAK,WAAW;AAAE,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE;;IAE5D;AAEA,IAAA,MAAM,aAAa,CAAC,OAAY,EAAE,OAAgB,EAAA;AAC9C,QAAA,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QACxQ,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,gDAAgD,CAAC,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IACtI;AAEA,IAAA,WAAW,CAAC,OAAY,EAAA;QACpB,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAChC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,oCAAoC,CAAC,EACjD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,4FAA4F,CAAC,EACzG,YAAW;YACP,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9O,YAAA,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,qCAAqC,CAAC,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACpK,QAAA,CAAC,CAAC;IACV;AAYA,IAAA,eAAe,CAAC,OAAY,EAAA;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC5B,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;QACpC;QACA,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;IAC3B;AAEA,IAAA,MAAM,kBAAkB,GAAA;AACpB,QAAA,IAAI,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;IACzD;IAEA,aAAa,GAAA;QACT,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;AACnC,QAAA,UAAU,CAAC,MAAK,EAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA,CAAC,CAAC,CAAC;IACzC;AAEA,IAAA,MAAM,UAAU,GAAA;AACZ,QAAA,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;AACnU,QAAA,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,2CAA2C,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,6CAA6C,CAAC,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACrL,QAAA,OAAO,IAAI;IACf;AAnLS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iRAwBZ,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAxBlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/B5B,+xRAuIM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,ED5Ga,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAA,CAAA,CAAA;;4FAI7D,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,aAAA,EACJ,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,cAE1D,KAAK,EAAA,QAAA,EAAA,+xRAAA,EAAA;;0BA0BZ,MAAM;2BAAC,eAAe;;sBAiI1B,SAAS;uBAAC,QAAQ;;sBAClB,SAAS;uBAAC,aAAa;;;AErLtB,MAAO,mBAAoB,SAAQ,mBAAmB,CAAA;AACxD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC;QACf,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC;QAC9C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC;QACnD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;QAC1C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QACtC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC;QAC/C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC;QAC/C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,WAAW,CAAC,CAAC;QACjD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,eAAe,CAAC,CAAC;QACzD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,YAAY,CAAC,CAAC;QAClD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC;QAC7D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,iBAAiB,CAAC,CAAC;QACzD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC,sBAAsB,CAAC,CAAC;QAClE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC,sBAAsB,CAAC,CAAC;QAClE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,sBAAsB,CAAC,CAAC;QACpE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,yBAAyB,EAAE,CAAC,0BAA0B,CAAC,CAAC;QAC5E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,uBAAuB,CAAC,CAAC;QACrE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,EAAE,CAAC,iBAAiB,CAAC,CAAC;QACjE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAClE;+GAtBS,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAnB,mBAAmB,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;ACEM,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB,CAAA;CAuC5B;AArCG,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,UAAU;AACL,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAEjB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,IAAI;AACL,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAEX,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,aAAa;AACL,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;AAEpB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,UAAU;AACR,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAEd,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,OAAO;AACN,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;AAEb,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,WAAW;AACN,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAEjB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,WAAW;AACP,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;AAEhB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,aAAa;AACT,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;AAEhB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,iBAAiB;AACD,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,KAAA,CAAA,CAAA;AAE5B,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,aAAa;AACP,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA;AAEnB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,kBAAkB;AACR,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA;AAEvB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,eAAe;AACN,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA;AAEtB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,mBAAmB;AACX,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;AAErB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,mBAAmB;AACZ,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;AAEpB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,qBAAqB;AACd,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;AAEpB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,yBAAyB;AACN,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,KAAA,CAAA,CAAA;AAEhC,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,qBAAqB;AACX,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA;AAEvB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,uBAAuB;AACd,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA;AAEtB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,oBAAoB;AACX,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA;AAtCb,gBAAgB,GAAA,UAAA,CAAA;IAD5B,kBAAkB,CAAC,mBAAmB;AAC1B,CAAA,EAAA,gBAAgB,CAuC5B;;ACzCK,MAAO,qBAAsB,SAAQ,SAA2B,CAAA;AAClE,IAAA,WAAA,GAAA,EAAgB,KAAK,EAAE,CAAC,CAAC;AAK5B;;ACLK,MAAO,uBAAwB,SAAQ,mBAAmB,CAAA;AAC5D,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC;QAEf,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAC/D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,cAAc,CAAC,CAAC;QACtD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC;QACnD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;QAC1C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QACtC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC;QAC/C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC;QAC/C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,WAAW,CAAC,CAAC;QACjD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,eAAe,CAAC,CAAC;QACzD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,YAAY,CAAC,CAAC;QAClD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC;QAC7D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,iBAAiB,CAAC,CAAC;QACzD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC,sBAAsB,CAAC,CAAC;QAClE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC,sBAAsB,CAAC,CAAC;QAClE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,sBAAsB,CAAC,CAAC;QACpE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,yBAAyB,EAAE,CAAC,0BAA0B,CAAC,CAAC;QAC5E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,uBAAuB,CAAC,CAAC;QACrE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,EAAE,CAAC,iBAAiB,CAAC,CAAC;QACjE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAClE;+GAxBS,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAvB,uBAAuB,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;;ACCK,MAAO,aAAc,SAAQ,mBAAmB,CAAA;AAClD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC;QAEf,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAC3D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,yBAAyB,EAAE,CAAC,uBAAuB,CAAC,CAAC;QACzE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,YAAY,CAAC,CAAC;QAClD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,6BAA6B,EAAE,CAAC,yBAAyB,CAAC,CAAC;QAC/E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,YAAY,CAAC,CAAC;QACpD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,uBAAuB,CAAC,CAAC;QACjE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,YAAY,CAAC,CAAC;QACtD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAC5D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,YAAY,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,cAAc,CAAC,CAAC;IACvD;+GAdS,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAb,aAAa,EAAA,CAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;ACHD;MAmBa,mBAAmB,CAAA;AAM5B,IAAA,WAAA,CAAmB,EAAuB,EAAA;QAAvB,IAAA,CAAA,EAAE,GAAF,EAAE;AAFX,QAAA,IAAA,CAAA,OAAO,GAA0B,IAAI,YAAY,EAAW;IAExB;IAE9C,QAAQ,GAAA;QACJ,IAAI,KAAK,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC;AAChG,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,YAAY,CAAC;YAC1C,IAAI,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAClD,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YACpD,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAChD,IAAI,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;YACxD,IAAI,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;YAC5D,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;YACtD,IAAI,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;YAC7D,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;AAClD,SAAA,CAAC;IACN;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;+GAzBS,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBhC,s6HAoFQ,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,YAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EDrEW,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,EAAA,CAAA,CAAA;;4FAIjE,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,aAAA,EACR,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,cAE9D,KAAK,EAAA,QAAA,EAAA,s6HAAA,EAAA;;sBAIhB;;sBAEA;;;AEvBL;MA4Ba,oBAAoB,CAAA;AAO7B,IAAA,WAAA,CACW,EAAuB,EACtB,YAAgC,EAChC,QAAkB,EAClB,QAAyB,EACzB,KAAqB,EACrB,IAA4B,EACH,GAAW,EAAA;QANrC,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,IAAI,GAAJ,IAAI;QACqB,IAAA,CAAA,GAAG,GAAH,GAAG;AAbjC,QAAA,IAAA,CAAA,UAAU,GAA0B,IAAI,qBAAqB,EAAE;AAclE,QAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;AAE3C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;IAClI;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAG;YACxD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACtC,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,IAAI,CAAC,WAAW,EAAA;AACZ,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;IAC5B;IAEA,MAAM,MAAM,CAAC,aAAa,EAAA;AACtB,QAAA,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAwB,oBAAoB,CAAC,CAAC,SAAS,EAAE;AACnG,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,GAAG,CAAA,SAAA,CAAW,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE;YACpC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,SAAS,EAAE;QACxE;IACJ;AAEA,IAAA,IAAI,CAAC,SAAgC,EAAA;QACjC,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QACtC;aACK;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,qBAAqB,EAAE;YAC7C,IAAI,CAAC,UAAU,EAAE;QACrB;IACJ;IAEA,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;IACrC;IAEA,UAAU,CAAC,YAAqB,IAAI,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI;AACvC,QAAA,IAAI,SAAS;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;AAE5B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;IACtC;IAEA,sBAAsB,GAAA;QAClB,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;IACjI;IAEA,MAAM,YAAY,CAAC,IAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;AACrE,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE;IAChF;IAEA,MAAM,aAAa,CAAC,YAAY,EAAA;AAC5B,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,QAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO;AACnC,QAAA,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;AAC7D,QAAA,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC;IAC7C;AAEA,IAAA,eAAe,CAAC,MAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,qBAAqB,CAAC,YAAW;AAC7B,YAAA,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC;AACpE,QAAA,CAAC,CAAC;IACN;AAzFS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iNAcjB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAdlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAJlB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,uBAAuB,EAAE,CAAC,0BCxBpF,s+LAwFM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD5DO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,SAAA,EACb,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,uBAAuB,EAAE,CAAC,cAEpE,KAAK,EAAA,QAAA,EAAA,s+LAAA,EAAA;;0BAgBZ,MAAM;2BAAC,eAAe;;;AEvCzB,MAAO,qBAAsB,SAAQ,SAAsB,CAAA;AAC7D,IAAA,WAAA,GAAA,EAAgB,KAAK,EAAE,CAAC,CAAC;AAO5B;;ACPK,MAAO,kBAAmB,SAAQ,mBAAmB,CAAA;AACvD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC;QACf,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAC3D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,WAAW,CAAC,CAAC;QACtD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,cAAc,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,cAAc,CAAC,CAAC;QACtD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,gBAAgB,CAAC,CAAC;QAC9D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC;QAC7D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC;QAC7C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC;QAC/C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QACzC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,cAAc,CAAC,CAAC;QACtD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC;QAC9C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAC1D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAEzD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC1C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;IAC3C;+GA1BS,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;ACHD;MA0Ca,yBAAyB,CAAA;AAgBlC,IAAA,WAAA,CACW,QAAqB,EACrB,EAAuB,EACtB,YAAgC,EAChC,QAAkB,EAClB,QAAyB,EACzB,KAAqB,EACrB,IAA4B,EACH,GAAW,EAAA;QAPrC,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,IAAI,GAAJ,IAAI;QACqB,IAAA,CAAA,GAAG,GAAH,GAAG;AAvBjC,QAAA,IAAA,CAAA,UAAU,GAA0B,IAAI,qBAAqB,EAAE;QAI/D,IAAA,CAAA,UAAU,GAAY,KAAK;QAC3B,IAAA,CAAA,OAAO,GAAW,GAAG;QAKpB,IAAA,CAAA,QAAQ,GAA+B,IAAI;AAEzC,QAAA,IAAA,CAAA,UAAU,GAA2B,IAAI,aAAa,CAAC,CAAC,CAAC;QA+HnE,IAAA,CAAA,uBAAuB,GAAmC,EAAE;AAC5D,QAAA,IAAA,CAAA,uBAAuB,GAAgC;YACnD,CAAC,SAAS,GAAG,KAAK;YAClB,CAAC,UAAU,GAAG,MAAM;YACpB,CAAC,YAAY,GAAG,WAAW;YAC3B,CAAC,QAAQ,GAAG,IAAI;YAChB,CAAC,SAAS,GAAG,SAAS;YACtB,CAAC,cAAc,GAAG,YAAY;YAC9B,CAAC,WAAW,GAAG,OAAO;YACtB,CAAC,QAAQ,GAAG;SACf;QA8FD,IAAA,CAAA,wBAAwB,GAAmC,EAAE;AA3NzD,QAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;AAE3C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;IAClI;IAEA,QAAQ,GAAA;;;;;AAOJ,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAG;YACxD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACtC,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,MAAM,oBAAoB,GAAA;AACtB,QAAA,IAAI,IAAI,GAAG,IAAI,qBAAqB,EAAE;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE;AACvB,QAAA,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;QACtD,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnD,IAAI,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;AACtC,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC;YAE9D,IAAI,CAAC,IAAI,CAAC,QAAQ;AACd,gBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE;iBACvC;gBACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjC,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI;gBAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC9B,oBAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI;YAC/B;QACJ;IACJ;AAEA,IAAA,IAAI,CAAC,WAAW,EAAA;AACZ,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;IAC5B;IAEA,MAAM,MAAM,CAAC,aAAa,EAAA;AACtB,QAAA,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAwB,iBAAiB,CAAC,CAAC,SAAS,EAAE;AAChG,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,GAAG,CAAA,OAAA,CAAS,CAAC;YACvD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE;YACpC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE;QACrE;IACJ;AAEA,IAAA,IAAI,CAAC,SAAgC,EAAA;QACjC,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;YAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;QAC7C;aACK;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,qBAAqB,EAAE;YAC7C,IAAI,CAAC,UAAU,EAAE;QACrB;IACJ;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;QAE1B,IAAI,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;IACrC;IAEA,MAAM,UAAU,CAAC,SAAA,GAAqB,IAAI,EAAE,MAAA,GAAkB,KAAK,EAAE,kBAAA,GAA4C,IAAI,EAAA;AACjH,QAAA,IAAI,EAAE,GAAG,kBAAkB,IAAI,IAAI,CAAC,UAAU;AAC9C,QAAA,IAAI,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ;AAChD,YAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE;QAErC,IAAI,2BAA2B,GAC/B,EAAE,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC3F,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAEtF,QAAA,EAAE,CAAC,cAAc,GAAG,2BAA2B;AAC/C,QAAA,EAAE,CAAC,gBAAgB,GAAG,IAAI;AAE1B,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC;IACjC;AAEA,IAAA,MAAM,YAAY,CAAC,IAA2B,EAAE,MAAe,EAAA;AAC3D,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE;AACvB,QAAA,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;;QAEzD,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,IAAI,CAAC,UAAU,GAAG,GAAG;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE;QAC7E;;AAEA,QAAA,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK;QACxC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC;IAC9C;AAEA,IAAA,eAAe,CAAC,MAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,qBAAqB,CAAC,YAAW;YAC7B,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;AAClG,QAAA,CAAC,CAAC;IACN;AAqBA,IAAA,cAAc,CAAC,MAAe,EAAE,kBAAmB,EAAE,QAAwB,EAAA;AACzE,QAAA,IAAI,SAAS,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI;AACnD,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI;AAE1D,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;AAC7D,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;YAC7B;QACJ;QAEA,IAAI,MAAM,GAAgB,EAAE;AAC5B,QAAA,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACjD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,YAAA,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE;gBAC1B,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC;AACzF,gBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC9C;QACJ;AAEA,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnD,IAAI,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;YACtC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AAEvC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBACjC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC1G,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtG;AAEA,QAAA,IAAI,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;YAC9B,IAAI,IAAI,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACjG,YAAA,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACvC,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;AAChC,gBAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/G;QACJ;aACK;YACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC/G,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/G;IACJ;IAIA,iBAAiB,GAAA;QACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAChC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACvB,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI;AACvD,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,MAAK,EAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC;QACxF;;AAEI,YAAA,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;IACvC;AAMA,IAAA,oBAAoB,CAAC,KAAiD,EAAA;QAClE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,KAAK,CAAC,IAAI;QACjJ,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,KAAK,CAAC,EAAE;AAEzI,QAAA,IAAI,gBAAgB,GAA0B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzF,QAAA,gBAAgB,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAAE;AACjH,QAAA,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAAE;QAC3G,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC;IACjD;AAEA,IAAA,aAAa,CAAC,KAA8B,EAAE,iBAAA,GAA6B,IAAI,EAAA;AAC3E,QAAA,IAAG,iBAAiB;AAChB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;QAE9B,IAAI,YAAY,GAAG,MAAK;YACnB,KAAK,CAAC,KAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9D,KAAK,CAAC,KAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE/D,YAAA,KAAK,CAAC,KAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC;AAC5D,QAAA,CAAC;AAED,QAAA,KAAK,CAAC,KAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,CAAC;IACzE;AAUA,IAAA,kBAAkB,CAAC,SAAiB,EAAE,QAAgB,EAAE,UAAkB,EAAA;AACtE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC1B,qBAAqB,CAAC,YAAW;YAC7B,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,UAAU,CAAC;AACvH,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AACrC,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,sBAAsB,CAAC,SAAyC,EAAA;AAC5D,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAE5B,qBAAqB,CAAC,MAAK;YACvB,IAAI,OAAO,GAAG,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAErF,YAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,KAAK;YAErC,IAAI,MAAM,GAAgB,EAAE;AAC5B,YAAA,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5C,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,gBAAA,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE;oBAC1B,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAG,IAAI,EAAE,UAAU,CAAC;AAC1F,oBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;oBACd,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC/C;YACJ;AAEA,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,IAAI,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACjC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AAEvC,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;AACjC,oBAAA,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY;wBACxB,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvG;YAEA,IAAI,CAAC,gBAAgB,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC;AAErD,QAAA,CAAC,CAAC;IACN;AA7RS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,8OAwBtB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAxBlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,SAAA,EAJvB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,0BCtC/E,2onBA2QM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDjOO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,SAAA,EACd,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,cAE/D,KAAK,EAAA,QAAA,EAAA,2onBAAA,EAAA;;0BA0BZ,MAAM;2BAAC,eAAe;;;AEhEzB,MAAO,SAAU,SAAQ,SAAsB,CAAA;AACjD,IAAA,WAAA,GAAA,EAAgB,KAAK,EAAE,CAAC,CAAC;AAK5B;;ACJK,MAAO,SAAU,SAAQ,mBAAmB,CAAA;AAC9C,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC;QACf,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,0BAA0B,EAAE,CAAC,0BAA0B,CAAC,CAAC;QAC7E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,2BAA2B,EAAE,CAAC,2BAA2B,CAAC,CAAC;QAC/E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC9C;+GAPS,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAT,SAAS,EAAA,CAAA,CAAA;;4FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB;;;ACHD;MAyBa,eAAe,CAAA;AAKxB,IAAA,WAAA,CACW,EAAuB,EACtB,YAAgC,EACjC,OAAsB,EACrB,QAAyB,EACzB,KAAqB,EACrB,QAAkB,EAClB,IAA4B,EACH,GAAW,EAAA;QAPrC,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,YAAY,GAAZ,YAAY;QACb,IAAA,CAAA,OAAO,GAAP,OAAO;QACN,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,IAAI,GAAJ,IAAI;QACqB,IAAA,CAAA,GAAG,GAAH,GAAG;AAZjC,QAAA,IAAA,CAAA,SAAS,GAAc,IAAI,SAAS,EAAE;AAazC,QAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;AAE3C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;IAClI;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAG,EAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzG;IAEA,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;IACrC;IAEA,MAAM,IAAI,CAAC,aAAa,EAAA;AACpB,QAAA,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAY,YAAY,CAAC,CAAC,SAAS,EAAE;AAC/E,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,GAAG,CAAA,eAAA,CAAiB,CAAC;YAC/D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE;YACpC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE;QAChE;IACJ;AAEA,IAAA,IAAI,CAAC,SAAoB,EAAA;QACrB,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;QACzC;aACK;AACD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE;YAChC,IAAI,CAAC,UAAU,EAAE;QACrB;IACJ;IAEA,UAAU,CAAC,YAAqB,IAAI,EAAA;AAChC,QAAA,IAAI,SAAS;AACT,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC;AAE3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;IACzC;IAEA,MAAM,gBAAgB,CAAC,IAAe,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;AAC9D,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,KAAK;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE;IACvE;IAEA,MAAM,aAAa,CAAC,QAAQ,EAAA;AACxB,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,QAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO;AACnC,QAAA,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;AACvD,QAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC;IACpC;AAtES,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,gPAaZ,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAblB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzB5B,otEAsCM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EDjBa,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAA,CAAA,CAAA;;4FAI7D,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,aAAA,EACJ,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,cAE1D,KAAK,EAAA,QAAA,EAAA,otEAAA,EAAA;;0BAeZ,MAAM;2BAAC,eAAe;;;AEnCzB,MAAO,WAAY,SAAQ,SAAiB,CAAA;AAC9C,IAAA,WAAA,GAAA,EAAgB,KAAK,EAAE,CAAC,CAAC;AAU5B;;ACVK,MAAO,aAAc,SAAQ,mBAAmB,CAAA;AAClD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC;QACf,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,gBAAgB,CAAC,CAAC;QAC9D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,YAAY,CAAC,CAAC;QACpD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,gBAAgB,CAAC,CAAC;QAC3D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAC,mBAAmB,CAAC,CAAC;QAChE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,cAAc,CAAC,CAAC;QACtD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,cAAc,CAAC,CAAC;QACtD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC;QAC9C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC;IACjE;+GAXS,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAb,aAAa,EAAA,CAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;ACHD;MA8Ba,mBAAmB,CAAA;AAY5B,IAAA,WAAA,CACW,QAAqB,EACrB,EAAuB,EACtB,YAAgC,EAChC,QAAkB,EAClB,QAAyB,EACzB,KAAqB,EACrB,IAA4B,EACH,GAAW,EAAA;QAPrC,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,IAAI,GAAJ,IAAI;QACqB,IAAA,CAAA,GAAG,GAAH,GAAG;QAjBhC,IAAA,CAAA,iBAAiB,GAAyE,EAAE;AAE7F,QAAA,IAAA,CAAA,UAAU,GAAgB,IAAI,WAAW,EAAE;QAG3C,IAAA,CAAA,UAAU,GAAY,KAAK;QAC3B,IAAA,CAAA,OAAO,GAAW,GAAG;QAiFrB,IAAA,CAAA,SAAS,GAAe,EAAE;QAC1B,IAAA,CAAA,gBAAgB,GAAG,EAAE;QACrB,IAAA,CAAA,gBAAgB,GAAY,KAAK;QACjC,IAAA,CAAA,aAAa,GAAa,EAAE;AAxE/B,QAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;AAE3C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;IAClI;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAG;YACxD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACtC,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,IAAI,CAAC,WAAW,EAAA;AACZ,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;IAC5B;AAEA,IAAA,MAAM,WAAW,GAAA;;AAEb,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,EAAE;AAElC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC5H;IAEA,MAAM,MAAM,CAAC,aAAa,EAAA;AACtB,QAAA,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAc,kBAAkB,CAAC,CAAC,SAAS,EAAE;AACvF,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,GAAG,CAAA,QAAA,CAAU,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE;YACpC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,SAAS,EAAE;QACtE;IACJ;AAEA,IAAA,IAAI,CAAC,SAAsB,EAAA;QACvB,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;YAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;QAC7C;aACK;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,WAAW,EAAE;YACnC,IAAI,CAAC,UAAU,EAAE;QACrB;QACA,IAAI,CAAC,WAAW,EAAE;IACtB;IAEA,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;IACrC;IAEA,UAAU,CAAC,YAAqB,IAAI,EAAE,SAAkB,KAAK,EAAE,qBAAkC,IAAI,EAAA;AACjG,QAAA,IAAI,CAAC,MAAM;AACP,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAE/B,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI;;AAEvC,QAAA,IAAI,CAAC,UAAU,CAAC,oBAAoB,GAAG,MAAM;AAC7C,QAAA,IAAI,SAAS;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;QAE5B,IAAI,CAAC,YAAY,CAAC,kBAAkB,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC;IACpE;AAOA,IAAA,MAAM,YAAY,CAAC,IAAiB,EAAE,MAAe,EAAA;QACjD,IAAI,CAAC,cAAc,GAAG,MAAM,GAAG,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AAE5F,QAAA,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;;QAEnD,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAC1B,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,YAAA,IAAI,CAAC,UAAU,GAAG,GAAG;YACrB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;gBAC9B,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC;AAC3D,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACjE,YAAA,CAAC,CAAC;YACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACjD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC5C,IAAI,CAAC,gBAAgB,EAAE;YAC3B;;AAEI,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE;QAC9E;aACK;;AAED,YAAA,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;AAClB,gBAAA,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAG;AACjB,oBAAA,IAAI,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACvD,IAAI,IAAI,EAAE;wBACN,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAG,EAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtH,wBAAA,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACzC,4BAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtG,4BAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;wBACzB;oBACJ;AACJ,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;QACN;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK;IAC5C;IAEA,gBAAgB,CAAC,YAAqB,KAAK,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,SAAS;YACpC;AAEJ,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3H;AAEA,IAAA,iBAAiB,CAAC,MAAc,EAAE,WAAwB,EAAE,SAAkC,EAAA;AAC1F,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IAClM;IAEQ,SAAS,CAAC,MAAc,EAAE,KAAkB,EAAA;QAChD,OAAO,MAAM,CAAC,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;IAChG;IAIA,iBAAiB,GAAA;QACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAChC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACvB,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI;AACvD,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,MAAK,EAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC;QACxF;;AAEI,YAAA,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;IACvC;AAlKS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,8OAoBhB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AApBlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EAJjB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,0BC1B1E,snMAoGM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDtEO,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,SAAA,EACf,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,cAE1D,KAAK,EAAA,QAAA,EAAA,snMAAA,EAAA;;0BAsBZ,MAAM;2BAAC,eAAe;;;AE9CzB,MAAO,UAAW,SAAQ,mBAAmB,CAAA;AAC/C,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC;QACf,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,aAAa,CAAC,CAAC;IAC1D;+GAJS,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAV,UAAU,EAAA,CAAA,CAAA;;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB;;;ACHD;MAoBa,gBAAgB,CAAA;AAczB,IAAA,WAAA,CACY,QAAyB,EACzB,EAAuB,EACvB,KAAqB,EACrB,IAA4B,EAAA;QAH5B,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,IAAI,GAAJ,IAAI;QAfT,IAAA,CAAA,UAAU,GAAW,EAAE;QACvB,IAAA,CAAA,QAAQ,GAAW,EAAE;QACrB,IAAA,CAAA,cAAc,GAAW,EAAE;QAC3B,IAAA,CAAA,YAAY,GAAW,EAAE;AAa5B,QAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;AAE3C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;IAClI;AAEA,IAAA,MAAM,QAAQ,GAAA;QACV,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AAE/D,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE;IAC3B;AAEA,IAAA,MAAM,eAAe,GAAA;AACjB,QAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC;IACvF;AAEA,IAAA,MAAM,UAAU,GAAA;AACZ,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAG,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC;AAC1H,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;IACjC;+GAvCS,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAW,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpB7B,wiDAwBM,EAAA,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EDTa,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAA,CAAA,CAAA;;4FAK9D,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,aAAA,EACL,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,cAG3D,KAAK,EAAA,QAAA,EAAA,wiDAAA,EAAA,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA;;;AEhBf,MAAO,gBAAiB,SAAQ,SAAsB,CAAA;AACxD,IAAA,WAAA,GAAA,EAAgB,KAAK,EAAE,CAAC,CAAC;AAG5B;;ACFK,MAAO,kBAAmB,SAAQ,mBAAmB,CAAA;AACvD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC;QAEf,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qCAAqC,EAAE,CAAC,kCAAkC,CAAC,CAAC;QAChG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,uCAAuC,EAAE,CAAC,mCAAmC,CAAC,CAAC;QACnG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iEAAiE,EAAE,CAAC,8CAA8C,CAAC,CAAC;QACxI,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,+CAA+C,EAAE,CAAC,mCAAmC,CAAC,CAAC;IAC/G;+GATS,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;ACHD;MA2Ba,wBAAwB,CAAA;AAcjC,IAAA,WAAA,CACW,EAAuB,EACtB,QAAyB,EACzB,YAAgC,EAChC,KAAqB,EACrB,QAAkB,EAClB,IAA4B,EACH,GAAW,EAAA;QANrC,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,IAAI,GAAJ,IAAI;QACqB,IAAA,CAAA,GAAG,GAAH,GAAG;AAnBjC,QAAA,IAAA,CAAA,UAAU,GAAqB,IAAI,gBAAgB,EAAE;QACrD,IAAA,CAAA,KAAK,GAAe,EAAE;QAEtB,IAAA,CAAA,SAAS,GAAY,KAAK;QAE1B,IAAA,CAAA,WAAW,GAAW,EAAE;;QAGxB,IAAA,CAAA,UAAU,GAAU,EAAE;AAYzB,QAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;AAE3C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;IAClI;AAEA,IAAA,MAAM,QAAQ,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAG,EAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzG;IAEA,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;IACrC;IAEA,MAAM,IAAI,CAAC,aAAa,EAAA;AACpB,QAAA,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAmB,eAAe,CAAC,CAAC,SAAS,EAAE;AACzF,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,GAAG,CAAA,YAAA,CAAc,CAAC;YAC5D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE;YACpC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE;QACnE;IACJ;AAEA,IAAA,IAAI,CAAC,SAA2B,EAAA;;;QAG5B,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;YAC3B,IAAI,CAAC,YAAY,EAAE;QACvB;aACK;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,EAAE;YACxC,IAAI,CAAC,UAAU,EAAE;QACrB;IACJ;IAEA,UAAU,CAAC,YAAqB,IAAI,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI;AACvC,QAAA,IAAI,SAAS;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;QAE5B,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;QAC5C,IAAI,CAAC,YAAY,EAAE;IACvB;IAEA,MAAM,wBAAwB,CAAC,QAAQ,EAAA;AACnC,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,QAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO;AACnC,QAAA,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;AAC3D,QAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC;IACpC;AAEA,IAAA,MAAM,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;YAChC;QACJ;;AAEI,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;QAG1B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;YAChD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU;AAE7C,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,EAAE;AACxC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;YACxB,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW;QACjD;AAEA,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;AAC9E,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE;IAC3E;AApGS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,iNAqBrB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AArBlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BrC,u2EA8CM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EDvBa,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,EAAA,CAAA,CAAA;;4FAItE,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,aAAA,EACd,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,cAEnE,KAAK,EAAA,QAAA,EAAA,u2EAAA,EAAA;;0BAuBZ,MAAM;2BAAC,eAAe;;;AE9CzB,MAAO,SAAU,SAAQ,SAAsB,CAAA;AACjD,IAAA,WAAA,GAAA,EAAgB,KAAK,EAAE,CAAC,CAAC;AAG5B;;ACFK,MAAO,WAAY,SAAQ,mBAAmB,CAAA;AAChD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC;QACf,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,2BAA2B,EAAE,CAAC,0BAA0B,CAAC,CAAC;QAC9E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;QACvC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAClE;+GANS,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAX,WAAW,EAAA,CAAA,CAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACHD;MAyBa,iBAAiB,CAAA;AAO1B,IAAA,WAAA,CACW,EAAuB,EACtB,YAAgC,EACjC,OAAsB,EACrB,QAAyB,EACzB,KAAqB,EACrB,QAAkB,EAClB,IAA4B,EACH,GAAW,EAAA;QAPrC,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,YAAY,GAAZ,YAAY;QACb,IAAA,CAAA,OAAO,GAAP,OAAO;QACN,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,IAAI,GAAJ,IAAI;QACqB,IAAA,CAAA,GAAG,GAAH,GAAG;AAdjC,QAAA,IAAA,CAAA,UAAU,GAAc,IAAI,SAAS,EAAE;QAGvC,IAAA,CAAA,SAAS,GAAY,KAAK;AAY7B,QAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;AAE3C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;IAClI;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAG,EAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzG;IAEA,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;IACrC;IAEA,MAAM,IAAI,CAAC,aAAa,EAAA;AACpB,QAAA,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAY,UAAU,CAAC,CAAC,SAAS,EAAE;AAC7E,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,GAAG,CAAA,cAAA,CAAgB,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE;YACpC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE;QAC9D;IACJ;AAEA,IAAA,IAAI,CAAC,SAAoB,EAAA;QACrB,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;QACvC;aACK;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,EAAE;YACjC,IAAI,CAAC,UAAU,EAAE;QACrB;IACJ;IAEA,UAAU,CAAC,YAAqB,IAAI,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,SAAS;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;AAE5B,QAAA,IAAG,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW;YAC3B;AAEJ,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;IACvC;IAEA,MAAM,aAAa,CAAC,IAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;AAC/D,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE;AACpE,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IAC1B;IAEA,MAAM,aAAa,CAAC,QAAQ,EAAA;AACxB,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,QAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO;AACnC,QAAA,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;AACvD,QAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC;IACpC;AA7ES,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,gPAed,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAflB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzB9B,w9CA8BM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EDTa,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,EAAA,CAAA,CAAA;;4FAI/D,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,aAAA,EACV,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,cAE5D,KAAK,EAAA,QAAA,EAAA,w9CAAA,EAAA;;0BAiBZ,MAAM;2BAAC,eAAe;;;AErCzB,MAAO,oBAAqB,SAAQ,SAA2B,CAAA;AACjE,IAAA,WAAA,GAAA,EAAgB,KAAK,EAAE,CAAC,CAAC;AAK5B;;ACLK,MAAO,sBAAuB,SAAQ,mBAAmB,CAAA;AAC3D,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC;QAEf,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,sBAAsB,EAAE,CAAC,mBAAmB,CAAC,CAAC;QAClE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,gBAAgB,CAAC,CAAC;QACzD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,6BAA6B,EAAE,CAAC,2BAA2B,CAAC,CAAC;QACjF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,eAAe,CAAC,CAAC;QACxD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC;QACnD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC;QAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,YAAY,CAAC,CAAC;QAChG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAC,gBAAgB,CAAC,CAAC;QAE7D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,+CAA+C,EAAE,CAAC,qCAAqC,CAAC,CAAC;QAC7G,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,gDAAgD,EAAE,CAAC,iCAAiC,CAAC,CAAC;IAC9G;+GAfS,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAtB,sBAAsB,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;ACHD;MA8Ba,4BAA4B,CAAA;AAUrC,IAAA,WAAA,CACW,EAAuB,EACtB,YAAgC,EAChC,QAAkB,EAClB,QAAyB,EACzB,KAAqB,EACrB,IAA4B,EAC5B,OAAuB,EACvB,OAAuB,EACE,GAAW,EAAA;QARrC,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,OAAO,GAAP,OAAO;QACkB,IAAA,CAAA,GAAG,GAAH,GAAG;AAjBjC,QAAA,IAAA,CAAA,UAAU,GAAyB,IAAI,oBAAoB,EAAE;QAG7D,IAAA,CAAA,YAAY,GAAe,EAAE;QAC7B,IAAA,CAAA,iBAAiB,GAAG,EAAE;;QAwF7B,IAAA,CAAA,SAAS,GAAqB,IAAI;QAGlC,IAAA,CAAA,kBAAkB,GAAe,EAAE;AA7E/B,QAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;AAE3C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;IAClI;AAEA,IAAA,MAAM,QAAQ,GAAA;QACV,IAAI,CAAC,YAAY,GAAG,CAAC,IAAIC,UAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,IAAIA,UAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAEnF,QAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AAE/D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAG;YACxD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACtC,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;IACrC;IAEA,MAAM,IAAI,CAAC,aAAa,EAAA;AACpB,QAAA,IAAI,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAuB,qBAAqB,CAAC,CAAC;AACvG,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,GAAG,CAAA,QAAA,CAAU,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE;YACpC,MAAM,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;QAC7E;IACJ;AAEA,IAAA,IAAI,CAAC,SAA+B,EAAA;;;QAGhC,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAE3B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QACtC;aACK;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,oBAAoB,EAAE;AAC5C,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,KAAK;YAEnC,IAAI,CAAC,UAAU,EAAE;QACrB;IACJ;IAEA,UAAU,CAAC,YAAqB,IAAI,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AAC9B,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,2EAA2E,CAAC;YACrG;QACJ;QAEA,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,KAAK,EAAE;AACtC,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,KAAK;QACxC;AAEA,QAAA,IAAI,SAAS;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;AAE5B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;IACtC;IAEA,MAAM,YAAY,CAAC,IAA0B,EAAA;QACzC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW;AAEpD,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;AACpE,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE;IACjF;AASA,IAAA,SAAS,CAAC,IAAsB,EAAA;QAC5B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;QAC3C,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI;AAChC,QAAA,CAAC,CAAC;IACN;IAEA,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAG;AAC9D,YAAA,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,+CAA+C,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,gDAAgD,CAAC,EAAE,MAAK,EAAG,IAAI,CAAC,UAAU,EAAE,CAAA,CAAC,CAAC,CAAC;AAClM,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACf;;AAIA,IAAA,UAAU,CAAC,IAAsB,EAAA;QAC7B,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAChC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC,EACjC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,gDAAgD,CAAC,EAC7D,YAAW;YACP,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACjG,YAAA,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,8CAA8C,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,2CAA2C,CAAC,EAAE,MAAK,EAAG,IAAI,CAAC,UAAU,EAAE,CAAA,CAAC,CAAC,CAAC;AAC5L,QAAA,CAAC,CAAC;IACV;AA5HS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,iRAmBzB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAnBlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BzC,+2PAsHM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,ED5Fa,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC,EAAA,CAAA,CAAA;;4FAI1E,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,aAAA,EACR,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC,cAEvE,KAAK,EAAA,QAAA,EAAA,+2PAAA,EAAA;;0BAqBZ,MAAM;2BAAC,eAAe;;sBA4E1B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;AE7HjD;MAIa,cAAc,CAAA;AAEvB,IAAA,WAAA,GAAA,EAAgB;AAEhB,IAAA,SAAS,CAAC,KAAsB,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IACnC;AAEA,IAAA,YAAY,CAAC,CAAkB,EAAA;AAC3B,QAAA,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;AAEjC,QAAA,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE;AACtC,QAAA,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,EAAE;AACxC,QAAA,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE;AACtC,QAAA,OAAO,QAAQ,GAAG,QAAQ,GAAG,QAAQ;IACzC;+GAlBS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,IAAI;mBAAC,EAAE,IAAI,EAAE,aAAa,EAAE;;;ACH7B;AACO,MAAM,MAAM,GAAG;AAEtB;IACY;AAAZ,CAAA,UAAY,eAAe,EAAA;AACvB,IAAA,eAAA,CAAA,eAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACX,CAAC,EAFW,eAAe,KAAf,eAAe,GAAA,EAAA,CAAA,CAAA;;ACJ3B;MAYa,sBAAsB,CAAA;AAE/B,IAAA,WAAA,CAAoB,QAAyB,EAAA;QAAzB,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAAqB;IAE1C,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAkB,KAAI,EAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAClH;IAEQ,cAAc,CAAC,IAAqB,EAAE,OAAY,EAAA;QACtD,QAAQ,IAAI;YACR,KAAK,eAAe,CAAC,OAAO;gBACxB,IAAI,QAAQ,CAAC,UAAU;AACnB,oBAAA,OAAO,CAAC,GAAG,CAAC,mCAAmC,GAAG,OAAO,CAAC;gBAC9D;;IAEZ;+GAhBS,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAtB,sBAAsB,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;ACXD;AA8CO,MAAM,WAAW,GAAG;AACzB,IAAA;AACE,QAAA,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE;AAClB,YAAA,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AACrI,YAAA,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AAC5H,YAAA,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,yBAAyB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AAC/H,YAAA,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AAC1H,YAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AACrH,YAAA,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AACpI,YAAA,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AAClI,YAAA,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,wBAAwB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,qCAAqC,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AACnJ,YAAA,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,qCAAqC,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AAC9I,YAAA,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AACjI,YAAA,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AACxH,YAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,yBAAyB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AAC3H,YAAA,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AACtH,YAAA,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AACjH,YAAA,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AAChI,YAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AAC9H,YAAA,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,wBAAwB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,qCAAqC,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AAC/I,YAAA,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,qCAAqC,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AAC1I,YAAA,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,4BAA4B,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,KAAK,EAAE;AAAG;AACpI;;AAGH,MAAM,OAAO,GAAG;;IAEd,YAAY;IACZ,WAAW;;IAGX,WAAW;IACX,aAAa;IACb,gBAAgB;;IAGhB,iBAAiB;IACjB,kBAAkB;IAClB,gBAAgB;IAChB,aAAa;IACb,yBAAyB;IACzB,gBAAgB;IAChB,cAAc;IACd,gBAAgB;IAChB,gBAAgB;AAEhB,IAAA,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;CACnC;AAED,MAAM,UAAU,GAAG;IACjB,eAAe;IACf,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB;IACxB,gBAAgB;IAChB,kBAAkB;IAClB,eAAe;IACf,mBAAmB;IACnB,mBAAmB;IACnB,iBAAiB;IACjB;CACD;AAED,MAAM,KAAK,GAAG;IACZ;CACD;MAUY,SAAS,CAAA;AACpB,IAAA,WAAA,CAAoB,WAAmC,EAAA;QAAnC,IAAA,CAAA,WAAW,GAAX,WAAW;AAC7B,QAAA,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC;AACjD,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;IAC7B;+GAJW,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,iBAzBpB,eAAe;YACf,oBAAoB;YACpB,yBAAyB;YACzB,wBAAwB;YACxB,gBAAgB;YAChB,kBAAkB;YAClB,eAAe;YACf,mBAAmB;YACnB,mBAAmB;YACnB,iBAAiB;YACjB,4BAA4B,CAAA,EAAA,OAAA,EAAA;;YAjC5B,YAAY;YACZ,WAAW;;YAGX,WAAW;YACX,aAAa;YACb,gBAAgB;;YAGhB,iBAAiB;YACjB,kBAAkB;YAClB,gBAAgB;YAChB,aAAa;YACb,yBAAyB;YACzB,gBAAgB;YAChB,cAAc;YACd,gBAAgB;AAChB,YAAA,gBAAgB,mBAoBhB,cAAc,CAAA,EAAA,CAAA,CAAA;AAWH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,EAAA,SAAA,EALT;YACT,sBAAsB;AACtB,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,yBAAyB;AACrF,SAAA,EAAA,OAAA,EAAA,CALY,OAAO,CAAA,EAAA,CAAA,CAAA;;4FAOT,SAAS,EAAA,UAAA,EAAA,CAAA;kBARrB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;AAC/B,oBAAA,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC;AAC7B,oBAAA,SAAS,EAAE;wBACT,sBAAsB;AACtB,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,yBAAyB;AACrF;AACF,iBAAA;;;ACxHD;;AAEG;;ACFH;;AAEG;;;;"}
|