@esfaenza/admin-module 13.1.0-beta1 → 13.1.0-beta10

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-module/src/lib/communications/base/BaseModuleCommunicationsConsumer.ts","../../../projects/admin-module/src/lib/communications/implementation/NoOpCommunicationsConsumer.ts","../../../projects/admin-module/src/lib/tokens.ts","../../../projects/admin-module/src/lib/components/profiler/adm_profiler.component.loc.ts","../../../projects/admin-module/src/lib/components/topact/topact_search.component.loc.ts","../../../projects/admin-module/src/lib/components/workers/adm_wrk.component.loc.ts","../../../projects/admin-module/src/lib/components/audits/adm_audits.component.loc.ts","../../../projects/admin-module/src/lib/components/enqueues/adm_enq.component.loc.ts","../../../projects/admin-module/src/lib/components/metrics/metrics_search.component.loc.ts","../../../projects/admin-module/src/lib/models/shared/KeyValue.ts","../../../projects/admin-module/src/lib/models/shared/Locale.ts","../../../projects/admin-module/src/lib/models/externals/Repository.ts","../../../projects/admin-module/src/lib/models/components/Lock.loc.ts","../../../projects/admin-module/src/lib/models/components/ProfilerDataNode.loc.ts","../../../projects/admin-module/src/lib/models/components/ProcessesView.ts","../../../projects/admin-module/src/lib/models/components/ProfilerDataNode.ts","../../../projects/admin-module/src/lib/models/components/ProfilerDataNodesView.ts","../../../projects/admin-module/src/lib/models/components/TopNode.ts","../../../projects/admin-module/src/lib/models/components/TopSession.ts","../../../projects/admin-module/src/lib/models/components/ActiveSession.ts","../../../projects/admin-module/src/lib/models/components/TopActivity.ts","../../../projects/admin-module/src/lib/models/components/TopActivitiesDataView.ts","../../../projects/admin-module/src/lib/models/components/Audit.ts","../../../projects/admin-module/src/lib/models/components/AuditsView.ts","../../../projects/admin-module/src/lib/models/components/Lock.ts","../../../projects/admin-module/src/lib/models/components/LocksView.ts","../../../projects/admin-module/src/lib/models/components/DirectorInfos.ts","../../../projects/admin-module/src/lib/models/components/MetricsView.ts","../../../projects/admin-module/src/lib/models/components/MetricChart.ts","../../../projects/admin-module/src/lib/models/components/Metric.ts","../../../projects/admin-module/src/lib/components/profiler/adm_profiler.component.ts","../../../projects/admin-module/src/lib/components/profiler/adm_profiler.component.html","../../../projects/admin-module/src/lib/components/logs/adm_logs.component.ts","../../../projects/admin-module/src/lib/components/logs/adm_logs.component.html","../../../projects/admin-module/src/lib/components/topact/topact_search.component.ts","../../../projects/admin-module/src/lib/components/topact/topact_search.component.html","../../../projects/admin-module/src/lib/components/workers/adm_wrk.component.ts","../../../projects/admin-module/src/lib/components/workers/adm_wrk.component.html","../../../projects/admin-module/src/lib/components/audits/adm_audits.component.ts","../../../projects/admin-module/src/lib/components/audits/adm_audits.component.html","../../../projects/admin-module/src/lib/components/enqueues/adm_enq.component.ts","../../../projects/admin-module/src/lib/components/enqueues/adm_enq.component.html","../../../projects/admin-module/src/lib/components/metrics/metrics_search.component.ts","../../../projects/admin-module/src/lib/components/metrics/metrics_search.component.html","../../../projects/admin-module/src/lib/admin-module.module.ts","../../../projects/admin-module/src/public-api.ts","../../../projects/admin-module/src/esfaenza-admin-module.ts"],"sourcesContent":["export abstract class BaseModuleCommunicationsConsumer {\r\n public abstract handleNavigation(routeTitle: string, subNavigation: boolean);\r\n}","import { BaseModuleCommunicationsConsumer } from \"../base/BaseModuleCommunicationsConsumer\";\r\n\r\nexport class NoOpCommunicationsConsumer extends BaseModuleCommunicationsConsumer{\r\n public handleNavigation(routeTitle: string, subNavigation: boolean) {\r\n console.log(\"Navigated on page \" + routeTitle + \" subNavigation: \" + subNavigation);\r\n }\r\n \r\n}","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const ADM_LOCALE: InjectionToken<string> = new InjectionToken<string>('ADM_LOCALE');\r\nexport const ADM_BACKEND_URL: InjectionToken<string> = new InjectionToken<string>('ADM_BACKEND_URL');\r\nexport const ADM_VIEW_PERMISSIONS: InjectionToken<string> = new InjectionToken<string>('ADM_VIEW_PERMISSIONS');","import { Injectable, Inject } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\nimport { ADM_LOCALE } from \"../../tokens\";\r\n\r\n@Injectable()\r\nexport class AdmProfilerComponentLoc extends LocalizationService {\r\n constructor(@Inject(ADM_LOCALE) LOC_LOCALE: string) {\r\n super(LOC_LOCALE);\r\n\r\n super.set(\"en->it\", \"Profiler Search\", [\"Ricerca dati Profiler\"]);\r\n super.set(\"en->it\", \"Loading Data\", [\"Carico i Dati\"]);\r\n super.set(\"en->it\", \"ID\", [\"ID\"]);\r\n super.set(\"en->it\", \"Description\", [\"Descrizione\"]);\r\n super.set(\"en->it\", \"Calls\", [\"Chiamate\"]);\r\n super.set(\"en->it\", \"Time\", [\"Tempo\"]);\r\n super.set(\"en->it\", \"Peak Time\", [\"Tempo Max\"]);\r\n super.set(\"en->it\", \"Min. Time\", [\"Tempo Min\"]);\r\n super.set(\"en->it\", \"Avg. Time\", [\"Tempo Medio\"]);\r\n super.set(\"en->it\", \"Specific Time\", [\"Tempo Specifico\"]);\r\n super.set(\"en->it\", \"Percentage\", [\"Percentuale\"]);\r\n super.set(\"en->it\", \"Calls for Period\", [\"Chiamate Periodo\"]);\r\n super.set(\"en->it\", \"Time for Period\", [\"Tempo Periodo\"]);\r\n super.set(\"en->it\", \"Peak Time for Period\", [\"Tempo Max Periodo\"]);\r\n super.set(\"en->it\", \"Min. Time for Period\", [\"Tempo Min Periodo\"]);\r\n super.set(\"en->it\", \"Avg. Time for Period\", [\"Tempo Medio Periodo\"]);\r\n super.set(\"en->it\", \"Specific Time for Period\", [\"Tempo Specifico Periodo\"]);\r\n super.set(\"en->it\", \"Percentage for Period\", [\"Percentuale Periodo\"]);\r\n }\r\n}","import { Injectable, Inject } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\nimport { ADM_LOCALE } from \"../../tokens\";\r\n\r\n@Injectable()\r\nexport class AdmTopActivitieLoc extends LocalizationService {\r\n constructor(@Inject(ADM_LOCALE) LOC_LOCALE: string) {\r\n super(LOC_LOCALE);\r\n super.set(\"en->it\", \"Active Sessions\", [\"Sessioni Attive\"]);\r\n super.set(\"en->it\", \"Top Nodes\", [\"Prime Istruzioni\"]);\r\n super.set(\"en->it\", \"Top Sessions\", [\"Prime Sessioni\"]);\r\n super.set(\"en->it\", \"Loading Data\", [\"Carico i Dati\"]);\r\n super.set(\"en->it\", \"Top Activities\", [\"Attivita' Principali\"]);\r\n \r\n super.set(\"en->it\", \"Node Description\", [\"Descrizione Nodo\"]);\r\n super.set(\"en->it\", \"Node\", [\"Nodo\"]);\r\n super.set(\"en->it\", \"Activity\", [\"Attivita'\"]);\r\n super.set(\"en->it\", \"Limit\", [\"Limite\"]);\r\n super.set(\"en->it\", \"Node Type\", [\"Tipo Nodo\"]);\r\n\r\n super.set(\"en->it\", \"User\", [\"Utente\"]);\r\n super.set(\"en->it\", \"Tenant\", [\"Tenant\"]);\r\n super.set(\"en->it\", \"Process\", [\"Processo\"]);\r\n\r\n super.set(\"en->it\", \"Update every\", [\"Aggiorna ogni\"]);\r\n super.set(\"en->it\", \"second/s\", [\"secondo/i\"]);\r\n super.set(\"en->it\", \"Maximum Threads\", [\"Thread Massimi\"]);\r\n super.set(\"en->it\", \"CPUs\", [\"CPU\"]);\r\n \r\n }\r\n}","import { Injectable, Inject } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\nimport { ADM_LOCALE } from \"../../tokens\";\r\n\r\n@Injectable()\r\nexport class AdmWrkLoc extends LocalizationService {\r\n constructor(@Inject(ADM_LOCALE) LOC_LOCALE: string) {\r\n super(LOC_LOCALE);\r\n\r\n super.set(\"en->it\", \"Consumer Group succesfully changed\", [\"Gruppo di Consumo modificato con successo\"]);\r\n super.set(\"en->it\", \"Errors changing Consumer Group\", [\"Errori nella modifica del Gruppo di Consumo\"]);\r\n super.set(\"en->it\", \"Change Consumer Group\", [\"Modifica Gruppo di Consumo\"]);\r\n super.set(\"en->it\", \"New Consumer Group\", [\"Nuovo Gruppo di Consumo\"]);\r\n\r\n super.set(\"en->it\", \"State\", [\"Stato\"]);\r\n super.set(\"en->it\", \"Global\", [\"Globale\"]);\r\n super.set(\"en->it\", \"Search Application Processes\", [\"Ricerca Processi Applicativi\"]);\r\n super.set(\"en->it\", \"Tenant\", [\"Operatore\"]);\r\n super.set(\"en->it\", \"Errors toggling Process Tracing\", [\"Errori nella modifica del Tracing del Processo\"]);\r\n super.set(\"en->it\", \"User\", [\"Utente\"]);\r\n super.set(\"en->it\", \"Loading Application Processes\", [\"Carico i Processi Applicativi\"]);\r\n super.set(\"en->it\", \"Activate Process Tracing\", [\"Attiva Tracing Processo\"]);\r\n super.set(\"en->it\", \"Deactivate Process Tracing\", [\"Disattiva Tracing Progetto\"]);\r\n super.set(\"en->it\", \"Kill Process\", [\"Ammazza Processo\"]);\r\n super.set(\"en->it\", \"Errors killing the Process\", [\"Errori durante la Kill del Processo\"]);\r\n super.set(\"en->it\", \"Process succesfully killed\", [\"Processo ucciso con successo\"]);\r\n super.set(\"en->it\", \"Confirm Process Kill\", [\"Conferma Terminazione del Processo\"]);\r\n super.set(\"en->it\", \"Are you sure you wish to kill the selected process? The associated user will be disconnected\", [\"Sei sicuro di voler Terminare il processo selezionato? L'utente relativo sara' disconnesso\"]);\r\n }\r\n}","import { Injectable, Inject } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\nimport { ADM_LOCALE } from \"../../tokens\";\r\n\r\n@Injectable()\r\nexport class AdmAuditLoc extends LocalizationService {\r\n constructor(@Inject(ADM_LOCALE) LOC_LOCALE: string) {\r\n super(LOC_LOCALE);\r\n\r\n super.set(\"en->it\", \"Search Application Audits\", [\"Ricerca Audit Applicativi\"]);\r\n super.set(\"en->it\", \"User\", [\"Utente\"]);\r\n super.set(\"en->it\", \"REST Call\", [\"Chiamata REST\"]);\r\n super.set(\"en->it\", \"Update\", [\"Aggiornamento\"]);\r\n super.set(\"en->it\", \"Route\", [\"Route\"]);\r\n super.set(\"en->it\", \"Action\", [\"Azione\"]);\r\n super.set(\"en->it\", \"HTTP Method\", [\"Metodo HTTP\"]);\r\n super.set(\"en->it\", \"Arguments\", [\"Argomenti\"]);\r\n super.set(\"en->it\", \"Object ID\", [\"ID Oggetto\"]);\r\n super.set(\"en->it\", \"Object Type\", [\"Tipo Oggetto\"]);\r\n super.set(\"en->it\", \"Object Data\", [\"Dati Oggetto\"]);\r\n super.set(\"en->it\", \"Loading Application Audits\", [\"Carico gli Audit dell'Applicazione\"]);\r\n super.set(\"en->it\", \"Date\", [\"Data\"]);\r\n super.set(\"en->it\", \"HTTP Response\", [\"Risposta HTTP\"]);\r\n super.set(\"en->it\", \"Application Error Code\", [\"Codice Errore Applicativo\"]);\r\n }\r\n}","import { Injectable, Inject } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\nimport { ADM_LOCALE } from \"../../tokens\";\r\n\r\n@Injectable()\r\nexport class AdmEnqLoc extends LocalizationService {\r\n constructor(@Inject(ADM_LOCALE) LOC_LOCALE: string) {\r\n super(LOC_LOCALE);\r\n super.set(\"en->it\", \"Search Application Locks\", [\"Ricerca Lock Applicativi\"]);\r\n super.set(\"en->it\", \"Name\", [\"Nome\"]);\r\n super.set(\"en->it\", \"Loading Application Locks\", [\"Carico i Lock Applicativi\"]);\r\n super.set(\"en->it\", \"Global\", [\"Globale\"]);\r\n }\r\n}","import { Injectable, Inject } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\nimport { ADM_LOCALE } from \"../../tokens\";\r\n\r\n@Injectable()\r\nexport class AdmMetricsLoc extends LocalizationService {\r\n constructor(@Inject(ADM_LOCALE) LOC_LOCALE: string) {\r\n super(LOC_LOCALE);\r\n super.set(\"en->it\", \"System Metrics\", [\"Metriche di Sistema\"]);\r\n super.set(\"en->it\", \"Session ID\", [\"Cod. Sessione\"]);\r\n super.set(\"en->it\", \"Session Serial\", [\"Seriale Sessione\"]);\r\n super.set(\"en->it\", \"Filter Metrics...\", [\"Filtra Metriche...\"]);\r\n super.set(\"en->it\", \"Loading Data\", [\"Carico i Dati\"]);\r\n super.set(\"en->it\", \"Update every\", [\"Aggiorna ogni\"]);\r\n super.set(\"en->it\", \"second/s\", [\"secondo/i\"]);\r\n super.set(\"en->it\", \"Metrics Instance\", [\"Istanza Metriche\"]);\r\n }\r\n}","export class KeyValue {\r\n constructor(public id: string, public description: string) { }\r\n}","declare var myconfig;\r\n\r\nexport const Locale: string = localStorage.getItem(\"LOCALE\") || myconfig.LOCALE;","export const Repository = {\r\n GET_Adm_ChangeProcessConsumerGroup: \"/api/Adm/ChangeProcessConsumerGroup\",\r\n GET_Adm_ClearAllCaches: \"/api/Adm/ClearAllCaches\",\r\n GET_Adm_GetConsumerGroups: \"/api/Adm/GetConsumerGroups#cache\",\r\n GET_Adm_GetInfos: \"/api/Adm/GetInfos\",\r\n GET_Adm_GetMetrics: \"/api/Adm/GetMetrics\",\r\n POST_Adm_GetMetrics: \"/api/Adm/GetMetrics\",\r\n POST_Adm_GetProfilerDataNodes: \"/api/Adm/GetProfilerDataNodes\",\r\n POST_Adm_GetServerAudits: \"/api/Adm/GetServerAudits\",\r\n POST_Adm_GetServerLocks: \"/api/Adm/GetServerLocks\",\r\n GET_Adm_GetServerLogs: \"/api/Adm/GetServerLogs\",\r\n POST_Adm_GetServerWorkers: \"/api/Adm/GetServerWorkers\",\r\n POST_Adm_GetTopActivities: \"/api/Adm/GetTopActivities\",\r\n GET_Adm_GetWorkerStatus: \"/api/Adm/GetWorkerStatus\",\r\n GET_Adm_InvalidateServerSideCache: \"/api/Adm/InvalidateServerSideCache\",\r\n GET_Adm_KillProcess: \"/api/Adm/KillProcess\",\r\n GET_Adm_SetProcessTracing: \"/api/Adm/SetProcessTracing\",\r\n GET_Adm_StartWorker: \"/api/Adm/StartWorker\",\r\n GET_Adm_StopWorker: \"/api/Adm/StopWorker\"\r\n}","export const Lock_loc = {\r\n 'ID': { 'en-US': \"ID\", 'it-IT': \"ID\" },\r\n 'Description': { 'en-US': \"Description\", 'it-IT': \"Descrizione\" },\r\n 'Hold Mode': { 'en-US': \"Hold Mode\", 'it-IT': \"Modalità Hold\" },\r\n 'Request Mode': { 'en-US': \"Request Mode\", 'it-IT': \"Modalità Richiesta\" },\r\n 'Parameter 1': { 'en-US': \"Parameter 1\", 'it-IT': \"Parametro 1\" },\r\n 'Parameter 2': { 'en-US': \"Parameter 2\", 'it-IT': \"Parametro 2\" },\r\n 'Tenant Level Lock': { 'en-US': \"Tenant Level Lock\", 'it-IT': \"Lock a livello Tenant\" },\r\n 'Tenant': { 'en-US': \"Tenant\", 'it-IT': \"Tenant\" },\r\n 'Grant Time': { 'en-US': \"Grant Time\", 'it-IT': \"Istante Concessione\" },\r\n 'Blocked on SID': { 'en-US': \"Blocked on SID\", 'it-IT': \"Bloccato su SID\" }\r\n}","export const ProfilerDataNode_loc = {\r\n 'Parent ID': { 'en-US': \"Parent ID\", 'it-IT': \"ID Padre\" },\r\n 'ID': { 'en-US': \"ID\", 'it-IT': \"ID\" },\r\n 'Description': { 'en-US': \"Description\", 'it-IT': \"Descrizione\" },\r\n 'Calls': { 'en-US': \"Calls\", 'it-IT': \"Chiamate\" },\r\n 'Time': { 'en-US': \"Time\", 'it-IT': \"Tempo\" },\r\n 'Peak Time': { 'en-US': \"Peak Time\", 'it-IT': \"Tempo Max\" },\r\n 'Min. Time': { 'en-US': \"Min. Time\", 'it-IT': \"Tempo Min\" },\r\n 'Avg. Time': { 'en-US': \"Avg. Time\", 'it-IT': \"Tempo Medio\" },\r\n 'Specific Time': { 'en-US': \"Specific Time\", 'it-IT': \"Tempo Specifico\" },\r\n 'Percentage': { 'en-US': \"Percentage\", 'it-IT': \"Percentuale\" },\r\n 'Calls for Period': { 'en-US': \"Calls for Period\", 'it-IT': \"Chiamate Periodo\" },\r\n 'Time for Period': { 'en-US': \"Time for Period\", 'it-IT': \"Tempo Periodo\" },\r\n 'Peak Time for Period': { 'en-US': \"Peak Time for Period\", 'it-IT': \"Tempo Max Periodo\" },\r\n 'Min. Time for Period': { 'en-US': \"Min. Time for Period\", 'it-IT': \"Tempo Min Periodo\" },\r\n 'Avg. Time for Period': { 'en-US': \"Avg. Time for Period\", 'it-IT': \"Tempo Medio Periodo\" },\r\n 'Specific Time for Period': { 'en-US': \"Specific Time for Period\", 'it-IT': \"Tempo Specifico Periodo\" },\r\n 'Percentage for Period': { 'en-US': \"Percentage for Period\", 'it-IT': \"Percentuale Periodo\" }\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}","import { autoserialize } from \"cerialize\";\r\nimport { Export } from \"@esfaenza/extensions\";\r\nimport { Locale } from \"../../models\";\r\nimport { ProfilerDataNode_loc } from \"../\";\r\n\r\nexport class ProfilerDataNode {\r\n @Export(10, ProfilerDataNode_loc[\"Parent ID\"][Locale])\r\n @autoserialize parentid: string;\r\n @Export(20, ProfilerDataNode_loc[\"ID\"][Locale])\r\n @autoserialize id: string;\r\n @Export(30, ProfilerDataNode_loc[\"Description\"][Locale])\r\n @autoserialize description: string;\r\n @Export(40, ProfilerDataNode_loc[\"Calls\"][Locale])\r\n @autoserialize calls: number;\r\n @Export(50, ProfilerDataNode_loc[\"Time\"][Locale])\r\n @autoserialize time: number;\r\n @Export(60, ProfilerDataNode_loc[\"Peak Time\"][Locale])\r\n @autoserialize peaktime: number;\r\n @Export(70, ProfilerDataNode_loc[\"Min. Time\"][Locale])\r\n @autoserialize mintime: number;\r\n @Export(80, ProfilerDataNode_loc[\"Avg. Time\"][Locale])\r\n @autoserialize avgtime: number;\r\n @Export(90, ProfilerDataNode_loc[\"Specific Time\"][Locale])\r\n @autoserialize timewithoutchildren: number;\r\n @Export(100, ProfilerDataNode_loc[\"Percentage\"][Locale])\r\n @autoserialize percentage: number;\r\n @Export(110, ProfilerDataNode_loc[\"Calls for Period\"][Locale])\r\n @autoserialize snapdeltacalls: number;\r\n @Export(120, ProfilerDataNode_loc[\"Time for Period\"][Locale])\r\n @autoserialize snapdeltatime: number;\r\n @Export(130, ProfilerDataNode_loc[\"Peak Time for Period\"][Locale])\r\n @autoserialize snappeaktime: number;\r\n @Export(140, ProfilerDataNode_loc[\"Min. Time for Period\"][Locale])\r\n @autoserialize snapmintime: number;\r\n @Export(150, ProfilerDataNode_loc[\"Avg. Time for Period\"][Locale])\r\n @autoserialize snapavgtime: number;\r\n @Export(160, ProfilerDataNode_loc[\"Specific Time for Period\"][Locale])\r\n @autoserialize snaptimewithoutchildren: number;\r\n @Export(170, ProfilerDataNode_loc[\"Percentage for Period\"][Locale])\r\n @autoserialize snappercentage: number;\r\n}","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { ProfilerDataNode } from \"../\";\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}","export class TopNode {\r\n activity: number;\r\n profnodeid: string;\r\n nodetypename: string;\r\n profnodedesc: string;\r\n}","export class TopSession {\r\n activity: number;\r\n cpu: number;\r\n wait: number;\r\n db: number;\r\n script: number;\r\n throttle: number;\r\n sleep: number;\r\n net: number;\r\n io: number;\r\n\r\n sid: number;\r\n user: string;\r\n tenant: string;\r\n bgprocess: string;\r\n}","export class ActiveSession {\r\n sampletime: Date;\r\n cputime: number;\r\n waittime: number;\r\n scripttime: number;\r\n dbtime: number;\r\n nettime: number;\r\n throttletime: number;\r\n sleeptime: number;\r\n iotime: number;\r\n}","import { ActiveSession, TopSession, TopNode } from \"../\";\r\n\r\nexport class TopActivity {\r\n actsessions: ActiveSession[];\r\n topsessions: TopSession[];\r\n topnodes: TopNode[];\r\n}","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { TopActivity } from \"../\";\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}","export class Audit {\r\n timestamp: Date;\r\n user: string;\r\n action: string;\r\n httpmethod: string;\r\n route: string;\r\n args: string;\r\n httpresponse: string;\r\n apperrorcode: string;\r\n objecttype: string;\r\n objectid: string;\r\n objectdata: string;\r\n}\r\n\r\n","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { Audit } from \"../\";\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 filterhttp: string;\r\n filterargs: string;\r\n filterobjid: string;\r\n filterobjtype: string;\r\n}","import { autoserialize, autoserializeAs } from \"cerialize\";\r\nimport { Export } from \"@esfaenza/extensions\";\r\nimport { Locale } from \"../../models\";\r\nimport { Lock_loc } from \"../\";\r\n\r\nexport class Lock {\r\n @Export(10, Lock_loc[\"ID\"][Locale])\r\n @autoserialize id: string;\r\n @Export(20, Lock_loc[\"Description\"][Locale])\r\n @autoserialize description: string;\r\n @Export(30, Lock_loc[\"Hold Mode\"][Locale])\r\n @autoserialize holdmode: string;\r\n @Export(40, Lock_loc[\"Request Mode\"][Locale])\r\n @autoserialize requestmode: string;\r\n @Export(50, Lock_loc[\"Parameter 1\"][Locale])\r\n @autoserialize p1: string;\r\n @Export(60, Lock_loc[\"Parameter 2\"][Locale])\r\n @autoserialize p2: string;\r\n @Export(70, Lock_loc[\"Tenant Level Lock\"][Locale])\r\n @autoserialize tenantlock: boolean;\r\n @Export(80, Lock_loc[\"Tenant\"][Locale])\r\n @autoserialize tenant: string;\r\n @Export(90, Lock_loc[\"Blocked on SID\"][Locale])\r\n @autoserialize blockedon: string;\r\n @Export(100, Lock_loc[\"Grant Time\"][Locale], \"DD/MM/YYYY HH:mm:ss\")\r\n @autoserializeAs(Date) granttime: Date;\r\n}","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\nimport { Lock } from \"../\";\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}","export class DirectorInfos {\r\n rssplan: string;\r\n threads: number;\r\n cpus: number;\r\n}","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}","import { LineChartData } from \"@esfaenza/es-charts\";\r\n\r\nexport class MetricChart extends LineChartData {\r\n xtitle: string;\r\n ytitle: string;\r\n legend: boolean;\r\n}","import { MetricChart } from \"./MetricChart\";\r\n\r\nexport class Metric {\r\n instance: string;\r\n name: string;\r\n values: MetricChart[];\r\n}","// Angular\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { Component, Inject } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { ExportService } from \"@esfaenza/extensions\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Classi\r\nimport { ProfilerDataNode, ProfilerDataNodesView, Repository } from \"../../models\";\r\n\r\n// Applicazione\r\nimport { AdmProfilerComponentLoc } from \"../\";\r\n\r\n// Chiamate ai Repository\r\nimport { BaseModuleCommunicationsConsumer } from \"../../communications/base/BaseModuleCommunicationsConsumer\";\r\nimport { ADM_BACKEND_URL } from \"../../tokens\";\r\n\r\n@Component({\r\n selector: \"adm_profiler\",\r\n providers: [\r\n { provide: LocalizationService, useClass: AdmProfilerComponentLoc }\r\n ],\r\n templateUrl: \"./adm_profiler.component.html\"\r\n})\r\nexport class AdmProfilerComponent {\r\n public searchView: ProfilerDataNodesView = new ProfilerDataNodesView();\r\n public storageSub: any;\r\n\r\n constructor(\r\n private expExts: ExportService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private _state: BaseModuleCommunicationsConsumer,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n @Inject(ADM_BACKEND_URL) private backend: string) {\r\n\r\n this._state.handleNavigation(this.route.snapshot.data[\"title\"], false);\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/adm/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 //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(this.backend + Repository[\"POST_Adm_GetProfilerDataNodes\"], this.searchView);\r\n }\r\n else {\r\n this.searchView = new ProfilerDataNodesView();\r\n\r\n //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata\r\n setTimeout(() => 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.backend + Repository[\"POST_Adm_GetProfilerDataNodes\"], this.searchView);\r\n }\r\n\r\n POSTGetItems(url: string, data: ProfilerDataNodesView) {\r\n this.http.post<ProfilerDataNodesView>(url, data).subscribe(t => {\r\n this.searchView = t;\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotSearchProfilato\", this.searchView).subscribe();\r\n });\r\n }\r\n\r\n prepareExport(dataCallBack) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n this.http.post<ProfilerDataNodesView>(this.backend + Repository[\"POST_Adm_GetProfilerDataNodes\"], view).subscribe(t => {\r\n let items: ProfilerDataNode[] = this.expExts.deserializeForExport(t.items, ProfilerDataNode);\r\n dataCallBack(items);\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\">{{'Profiler Search' | localize : lc}}</span>&nbsp;\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\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-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress\" 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 </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [Hierarchy]=\"true\" [UseCustomCells]=\"true\" [ParentKey]=\"'parentid'\" [OwnKey]=\"'id'\" [StartsExpanded]=\"false\"\r\n [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\" [ExportFileName]=\"'Profiler Export.csv'\" [HidePaging]=\"true\"\r\n (onSearchRequest)=\"sendSearch($event);\">\r\n <ng-template #header>\r\n <th es-th=\"1\" class=\"app-nowrap\">{{'ID' | localize : lc}}</th>\r\n <th es-th=\"2\" class=\"app-nowrap\">{{'Description' | localize : lc}}</th>\r\n <th es-th=\"3\" class=\"app-nowrap\">{{'Calls' | localize : lc}}</th>\r\n <th es-th=\"4\" class=\"app-nowrap\">{{'Time' | localize : lc}}</th>\r\n <th es-th=\"5\" class=\"app-nowrap\">{{'Peak Time' | localize : lc}}</th>\r\n <th es-th=\"6\" class=\"app-nowrap\">{{'Min. Time' | localize : lc}}</th>\r\n <th es-th=\"7\" class=\"app-nowrap\">{{'Avg. Time' | localize : lc}}</th>\r\n <th es-th=\"8\" class=\"app-nowrap\">{{'Specific Time' | localize : lc}}</th>\r\n <th es-th=\"9\" class=\"app-nowrap\">{{'Percentage' | localize : lc}}</th>\r\n <th es-th=\"10\" class=\"app-nowrap\">{{'Calls for Period' | localize : lc}}</th>\r\n <th es-th=\"11\" class=\"app-nowrap\">{{'Time for Period' | localize : lc}}</th>\r\n <th es-th=\"12\" class=\"app-nowrap\">{{'Peak Time for Period' | localize : lc}}</th>\r\n <th es-th=\"13\" class=\"app-nowrap\">{{'Min. Time for Period' | localize : lc}}</th>\r\n <th es-th=\"14\" class=\"app-nowrap\">{{'Avg. Time for Period' | localize : lc}}</th>\r\n <th es-th=\"15\" class=\"app-nowrap\">{{'Specific Time for Period' | localize : lc}}</th>\r\n <th es-th=\"16\" class=\"app-nowrap\">{{'Percentage for Period' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-item>\r\n <td es-td=\"1\" class=\"app-nowrap\">{{item.id}}</td>\r\n <td es-td=\"2\" class=\"app-nowrap\"><span title=\"{{item.description}}\">{{item.description.length <= 50 ? item.description : item.description.substr(0,50) + \"[...]\"}}</span></td>\r\n <td es-td=\"3\" class=\"app-nowrap\">{{item.calls}}</td>\r\n <td es-td=\"4\" class=\"app-nowrap\">{{item.time}}</td>\r\n <td es-td=\"5\" class=\"app-nowrap\">{{item.peaktime}}</td>\r\n <td es-td=\"6\" class=\"app-nowrap\">{{item.mintime}}</td>\r\n <td es-td=\"7\" class=\"app-nowrap\">{{item.avgtime}}</td>\r\n <td es-td=\"8\" class=\"app-nowrap\">{{item.timewithoutchildren}}</td>\r\n <td es-td=\"9\" class=\"app-nowrap\">{{item.percentage}}</td>\r\n <td es-td=\"10\" class=\"app-nowrap\">{{item.snapdeltacalls}}</td>\r\n <td es-td=\"11\" class=\"app-nowrap\">{{item.snapdeltatime}}</td>\r\n <td es-td=\"12\" class=\"app-nowrap\">{{item.snappeaktime}}</td>\r\n <td es-td=\"13\" class=\"app-nowrap\">{{item.snapmintime}}</td>\r\n <td es-td=\"14\" class=\"app-nowrap\">{{item.snapavgtime}}</td>\r\n <td es-td=\"15\" class=\"app-nowrap\">{{item.snaptimewithoutchildren}}</td>\r\n <td es-td=\"16\" class=\"app-nowrap\">{{item.snappercentage}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Component, Inject } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Chiamate ai Repository\r\nimport { BaseModuleCommunicationsConsumer } from \"../../communications/base/BaseModuleCommunicationsConsumer\";\r\nimport { Repository } from \"../../models\";\r\nimport { ADM_BACKEND_URL } from \"../../tokens\";\r\n\r\n@Component({\r\n selector: \"adm_logs\",\r\n templateUrl: \"./adm_logs.component.html\"\r\n})\r\n\r\nexport class AdmLogsComponent {\r\n public Log: string;\r\n\r\n constructor(\r\n private _state: BaseModuleCommunicationsConsumer,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n @Inject(ADM_BACKEND_URL) private backend: string) {\r\n\r\n this._state.handleNavigation(this.route.snapshot.data[\"title\"], false);\r\n }\r\n\r\n ngOnInit() {\r\n this.http.get<string>(this.backend + Repository[\"GET_Adm_GetServerLogs\"]).subscribe(t => { this.Log = t; });\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12 bottom-15\">\r\n <p *ngIf=\"Log\" class=\"app-whitespace-prewrap\" [innerHTML]=\"Log\"></p>\r\n </div>\r\n</div>","// Angular\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { Component, Inject } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { BaseChartComponent, DateValue, Limit, LineChartData, LineSerie } from \"@esfaenza/es-charts\";\r\nimport { DateService } from \"@esfaenza/extensions\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Classi\r\nimport { DirectorInfos, Repository, TopActivitiesDataView, TopNode, TopSession } from \"../../models\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport * as am4charts from \"@amcharts/amcharts4/charts\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\n// Applicazione\r\nimport { AdmTopActivitieLoc } from \"../\";\r\n\r\n// Chiamate ai Repository\r\nimport { BaseModuleCommunicationsConsumer } from \"../../communications/base/BaseModuleCommunicationsConsumer\";\r\nimport { ADM_BACKEND_URL } from \"../../tokens\";\r\n\r\n/**\r\n * Dichiarazione della variabile globale dayjs. L'onere di \"crearla\" è affidato all'applicazione che utilizza questa libreria, \r\n * che dovrà importare lo script globale di dayjs nella CLI\r\n */\r\n declare var dayjs: any;\r\n\r\n@Component({\r\n selector: \"topact_search\",\r\n providers: [\r\n { provide: LocalizationService, useClass: AdmTopActivitieLoc }\r\n ],\r\n templateUrl: \"./topact_search.component.html\"\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;\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 _state: BaseModuleCommunicationsConsumer,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n @Inject(ADM_BACKEND_URL) private backend: string) {\r\n\r\n this._state.handleNavigation(this.route.snapshot.data[\"title\"], false);\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<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/adm/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 //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(this.backend + Repository[\"POST_Adm_GetTopActivities\"], this.searchView, false);\r\n }\r\n else {\r\n this.searchView = new TopActivitiesDataView();\r\n\r\n //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata\r\n setTimeout(() => 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, update: boolean = false, searchViewOverride: TopActivitiesDataView = null) {\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(this.backend + Repository[\"POST_Adm_GetTopActivities\"], searchViewOverride ?? this.searchView, update);\r\n }\r\n\r\n POSTGetItems(url: string, data: TopActivitiesDataView, update: boolean) {\r\n\r\n this.http.post<TopActivitiesDataView>(url, data).subscribe(async (t) => {\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 = t;\r\n this.localStorage.setItem(\"HotSearchTopAct\", this.searchView).subscribe();\r\n }\r\n var dirinfos = await this.getDirectorInfos();\r\n this.searchView.searchinprogress = false;\r\n this.reviewBindings(update, t, dirinfos);\r\n });\r\n }\r\n\r\n getDirectorInfos(): Promise<DirectorInfos> {\r\n return this.http.get<DirectorInfos>(this.backend + Repository[\"GET_Adm_GetInfos\"]).pipe(map(res => { return res; })).toPromise();\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 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;\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(\"Maximum Threads\")));\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(\"Maximum Threads\")));\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) {\r\n this.ChartInstance = chart;\r\n chart.Chart.events.on(\"ready\", () => {\r\n (<am4charts.XYChart>chart.Chart).xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));\r\n (<am4charts.XYChart>chart.Chart).yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));\r\n setTimeout(() => {\r\n (<am4charts.XYChart>chart.Chart).xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));\r\n (<am4charts.XYChart>chart.Chart).yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));\r\n\r\n // 500 millisecondi è più o meno il tempo di prima animazione del grafico. Finito questo si resetta lo zoom\r\n }, 500);\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 {{'Top Activities' | localize : lc}}\r\n <span *ngIf=\"DirInfos\">&nbsp;-&nbsp;{{'' + DirInfos.cpus + ' ' + ('CPUs' | localize : lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}}</span>&nbsp;\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]=\"'From' | 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]=\"'To' | localize : lc\"></form-datetime>\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 {{'Update every' | localize : lc}}&nbsp;<input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"secs\" />&nbsp;{{'second/s' | 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\" (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>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView\" class=\"row\">\r\n <div class=\"col-md-12 app-no-padding\">\r\n <!--<h5 class=\"app-margin-top-5\">{{'Active Sessions' | localize : lc}}</h5>-->\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 [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>{{'Top Nodes' | localize : lc}}</h5>\r\n <es-table [(ngModel)]=\"TopNodes\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Node' | localize : lc}}</th>\r\n <th>{{'Node Description' | localize : lc}}</th>\r\n <th class=\"app-col-min\">{{'Activity' | localize : lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Node Type' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><strong>{{node.profnodeid}}</strong></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 </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <h5>{{'Top Sessions' | 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>{{'User' | localize : lc}}</th>\r\n <th>{{'Tenant' | localize : lc}}</th>\r\n <th>{{'Process' | localize : lc}}</th>\r\n <th>{{'Activity' | 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><strong>{{session.sid}}</strong></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>","// Angular\r\nimport { Component, Inject, ViewChild } from \"@angular/core\";\r\nimport { HttpParams } from \"@angular/common/http\";\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 { MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { EsTableOperationDefinition } from \"@esfaenza/es-table\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Classi\r\nimport { KeyValue, ProcessesView, Repository } from \"../../models\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { ModalDirective } from \"ngx-bootstrap/modal\";\r\n\r\n// Applicazione\r\nimport { AdmWrkLoc } from \"../\";\r\nimport { BaseModuleCommunicationsConsumer } from \"../../communications/base/BaseModuleCommunicationsConsumer\";\r\nimport { ADM_BACKEND_URL } from \"../../tokens\";\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})\r\nexport class AdmWrkComponent {\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 constructor(\r\n private utiExts: UtilityService, \r\n private msgExts: MessageService, \r\n public lc: LocalizationService, \r\n private localStorage: PreferencesService, \r\n private _state: BaseModuleCommunicationsConsumer, \r\n private http: HTTPService, \r\n private route: ActivatedRoute, \r\n private location: Location, \r\n @Inject(ADM_BACKEND_URL) private backend: string) {\r\n\r\n this._state.handleNavigation(this.route.snapshot.data[\"title\"], false);\r\n\r\n this.DynamicOps = [\r\n new EsTableOperationDefinition(\"trace_on\", this.lc.loc(\"Activate Process Tracing\"), \"fa fa-circle text-danger\", \"\", \"trace_enabled\", \"N\"),\r\n new EsTableOperationDefinition(\"trace_off\", this.lc.loc(\"Deactivate Process Tracing\"), \"fa fa-circle text-success\", \"\", \"trace_enabled\", \"Y\"),\r\n new EsTableOperationDefinition(\"kill\", this.lc.loc(\"Kill Process\"), \"fa fa-ban text-danger\"),\r\n new EsTableOperationDefinition(\"change_cg\", this.lc.loc(\"Change Consumer Group\"), \"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 async Init(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/adm/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 //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.POSTGetProcesses(this.backend + Repository[\"POST_Adm_GetServerWorkers\"], this.searchView);\r\n }\r\n else {\r\n this.searchView = new ProcessesView();\r\n\r\n //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata\r\n setTimeout(() => 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.POSTGetProcesses(this.backend + Repository[\"POST_Adm_GetServerWorkers\"], this.searchView);\r\n }\r\n\r\n POSTGetProcesses(url: string, data: ProcessesView) {\r\n this.http.post<ProcessesView>(url, data).subscribe(t => {\r\n this.searchView = t;\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotProcessato\", this.searchView).subscribe();\r\n });\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 toggleTracing(process: any, tracing: boolean) {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", process.properties[\"inst_id\"])\r\n .set(\"sid\", process.properties[\"sid\"])\r\n .set(\"serial\", process.properties[\"serial\"])\r\n .set(\"enable\", tracing.toString());\r\n this.http.get<string>(this.backend + Repository[\"GET_Adm_SetProcessTracing\"], pars).subscribe(t => {\r\n this.msgExts.manageStringResponse(t, \"\", this.lc.loc(\"Errors toggling Process Tracing\"), () => this.sendSearch());\r\n });\r\n }\r\n\r\n killProcess(process: any) {\r\n this.msgExts.simpleWarningWithChoice(\r\n this.lc.loc(\"Confirm Process Kill\"),\r\n this.lc.loc(\"Are you sure you wish to kill the selected process? The associated user will be disconnected\"),\r\n () => {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", process.properties[\"inst_id\"])\r\n .set(\"sid\", process.properties[\"sid\"])\r\n .set(\"serial\", process.properties[\"serial\"]);\r\n this.http.get<string>(this.backend + Repository[\"GET_Adm_KillProcess\"], pars).subscribe(t => {\r\n this.msgExts.manageStringResponse(t, this.lc.loc(\"Process succesfully killed\"), this.lc.loc(\"Errors killing the Process\"), () => this.sendSearch());\r\n });\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 loadCgDictionaries() {\r\n this.http.get<KeyValue[]>(this.backend + Repository[\"GET_Adm_GetConsumerGroups\"]).subscribe(t => this.CGs = t);\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 doChangeCg() {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", this.ProcessOnEdit.properties[\"inst_id\"])\r\n .set(\"sid\", this.ProcessOnEdit.properties[\"sid\"])\r\n .set(\"serial\", this.ProcessOnEdit.properties[\"serial\"])\r\n .set(\"consumer_group\", this.newCg);\r\n this.http.get<string>(this.backend + Repository[\"GET_Adm_ChangeProcessConsumerGroup\"], pars).subscribe(t => {\r\n this.msgExts.manageStringResponse(t, this.lc.loc(\"Consumer Group succesfully changed\"), this.lc.loc(\"Errors changing Consumer Group\"), () => this.sendSearch());\r\n });\r\n\r\n return true;\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\">{{'Search Application Processes' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12\">\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-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertenant\" name=\"filterTenant\" [Placeholder]=\"'Tenant' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filterUser\" [Placeholder]=\"'User' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterstate\" name=\"filterState\" [Placeholder]=\"'State' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper app-padding-top-10\">\r\n <form-checkbox [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\r\n <span class=\"app-pointer\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Global' | localize : lc}}</span>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress\" 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 </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Processes' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [DynamicOperations]=\"DynamicOps\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" (onDynamicOperation)=\"onOperation($event)\">\r\n <span class=\"app-nowrap\" *td=\"'full_wait_stack'; let value\">\r\n <span class=\"fa fa-list app-pointer\" (click)=\"valueToShow = value; dlgValue.show();\"></span>&nbsp;\r\n {{value.length > 70 ? value.substr(0, 67) + '...' : value}}\r\n </span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-15\">\r\n <button class=\"btn btn-secondary pull-left\" type=\"button\" (click)=\"back()\">{{'Back' | localize : lc}}</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgChangeCg=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-lg\" cdkDrag>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\" cdkDragHandle>\r\n <h4 class=\"modal-title pull-left\">{{'Change Consumer Group' | localize : lc}}</h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgChangeCg.hide()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n <form novalidate #cgFrom=\"ngForm\" (ngSubmit)=\"cgFrom.valid && doChangeCg() && dlgChangeCg.hide()\">\r\n <div class=\"modal-body\">\r\n <form-select [Label]=\"'New Consumer Group' | localize : lc\" [(ngModel)]=\"newCg\" name=\"newcg\" [Source]=\"CGs\" required [Last]=\"true\"></form-select>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-5\" (click)=\"dlgChangeCg.hide()\">{{'Close' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">{{'Confirm' | localize : lc}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<div bsModal #dlgValue=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-xl\" app-draggable=\".modal-header\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title pull-left\">\r\n Full Wait Stack\r\n </h5>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgValue.hide()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body app-padidng-bottom-20 app-padding-top-20\">\r\n <span class=\"app-wrap\">\r\n {{valueToShow}}\r\n </span>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgValue.hide()\">Chiudi</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { Component, Inject } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Classi\r\nimport { KeyValue, AuditsView, Repository } from \"../../models\";\r\n\r\n// Applicazione\r\nimport { AdmAuditLoc } from \"../\";\r\n\r\n// Chiamate ai Repository\r\nimport { BaseModuleCommunicationsConsumer } from \"../../communications/base/BaseModuleCommunicationsConsumer\";\r\nimport { ADM_BACKEND_URL } from \"../../tokens\";\r\n\r\n/**\r\n * Dichiarazione della variabile globale dayjs. L'onere di \"crearla\" è affidato all'applicazione che utilizza questa libreria, \r\n * che dovrà importare lo script globale di dayjs nella CLI\r\n */\r\n declare var dayjs: any;\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})\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 constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private _state: BaseModuleCommunicationsConsumer,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n @Inject(ADM_BACKEND_URL) private backend: string) {\r\n\r\n this._state.handleNavigation(this.route.snapshot.data[\"title\"], false);\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(\"REST Call\") },\r\n { id: \"U\", description: this.lc.loc(\"Update\") },\r\n { id: \"D\", description: this.lc.loc(\"Delete\") }\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 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/adm/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\r\n this.POSTGetProcesses(this.backend + Repository[\"POST_Adm_GetServerAudits\"], 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\r\n //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata\r\n setTimeout(() => 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.backend + Repository[\"POST_Adm_GetServerAudits\"], this.searchView);\r\n }\r\n\r\n POSTGetProcesses(url: string, data: AuditsView) {\r\n this.http.post<AuditsView>(url, data).subscribe(t => {\r\n this.searchView = t;\r\n this.searchInProgress = false;\r\n this.localStorage.setItem(\"HotAudittato\", this.searchView).subscribe();\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\">{{'Search Application Audits' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'User' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Action' | localize : lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'HTTP Method' | localize : lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Arguments' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'Object ID' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Object Type' | localize : lc\"></form-input>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Audits' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [UseCustomCells]=\"true\"\r\n [HiddenColumns] =\"true\" [ColumnsOrdering]=\"true\" [OrderByColumn]=\"true\"\r\n [MultipleOrderingDirectives]=\"true\"\r\n (onSearchRequest)=\"sendSearch($event);\">\r\n <ng-template #header>\r\n <th es-th=\"Timestamp\" class=\"app-nowrap\">{{'Date' | localize : lc}}</th>\r\n <th es-th=\"User\" class=\"app-nowrap\">{{'User' | localize : lc}}</th>\r\n <th es-th=\"Action\" class=\"app-nowrap\">{{'Action' | localize : lc}}</th>\r\n <th es-th=\"HttpMethod\" class=\"app-nowrap\">{{'HTTP Method' | localize : lc}}</th>\r\n <th es-th=\"Route\" class=\"app-nowrap\">{{'Route' | localize : lc}}</th>\r\n <th es-th=\"Args\" class=\"app-nowrap\">{{'Arguments' | localize : lc}}</th>\r\n <th es-th=\"HttpResponse\" class=\"app-nowrap\">{{'HTTP Response' | localize : lc}}</th>\r\n <th es-th=\"NonStdErrorMessage\" class=\"app-nowrap\">{{'Application Error Code' | localize : lc}}</th>\r\n <th es-th=\"ObjectType\" class=\"app-nowrap\">{{'Object Type' | localize : lc}}</th>\r\n <th es-th=\"ObjectId\" class=\"app-nowrap\">{{'Object ID' | localize : lc}}</th>\r\n <th es-th=\"ObjectData\" class=\"app-nowrap\">{{'Object Data' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-pro>\r\n <td es-td=\"Timestamp\" class=\"app-nowrap\"><strong>{{pro.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong></td>\r\n <td es-td=\"User\" class=\"app-nowrap\">{{pro.user}}</td>\r\n <td es-td=\"Action\" class=\"app-nowrap\">{{pro.action}}</td>\r\n <td es-td=\"HttpMethod\" class=\"app-nowrap\">{{pro.httpmethod}}</td>\r\n <td es-td=\"Route\" class=\"app-nowrap\">{{pro.route}}</td>\r\n <td es-td=\"Args\" class=\"app-nowrap\">{{pro.args}}</td>\r\n <td es-td=\"HttpResponse\" class=\"app-nowrap\">{{pro.httpresponse}}</td>\r\n <td es-td=\"NonStdErrorMessage\" class=\"app-nowrap\">{{pro.mdmerrorcode}}</td>\r\n <td es-td=\"ObjectType\" class=\"app-nowrap\">{{pro.objecttype}}</td>\r\n <td es-td=\"ObjectId\" class=\"app-nowrap\">{{pro.objectid}}</td>\r\n <td es-td=\"ObjectData\" class=\"app-nowrap\">{{pro.objectdata}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { Component, Inject } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { ExportService } from \"@esfaenza/extensions\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Classi\r\nimport { LocksView, Repository } from \"../../models\";\r\n\r\n// Applicazione\r\nimport { AdmEnqLoc } from \"../\";\r\n\r\n// Chiamate ai Repository\r\nimport { BaseModuleCommunicationsConsumer } from \"../../communications/base/BaseModuleCommunicationsConsumer\";\r\nimport { ADM_BACKEND_URL } from \"../../tokens\";\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})\r\nexport class AdmEnqComponent {\r\n public locksView: LocksView = new LocksView();\r\n public storageSub: any;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n public expExts: ExportService,\r\n private _state: BaseModuleCommunicationsConsumer,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n @Inject(ADM_BACKEND_URL) private backend: string) {\r\n\r\n this._state.handleNavigation(this.route.snapshot.data[\"title\"], false);\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 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/adm/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 //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.locksView = HotPotato;\r\n\r\n this.POSTGetProcesses(this.backend + Repository[\"POST_Adm_GetServerLocks\"], this.locksView);\r\n }\r\n else {\r\n this.locksView = new LocksView();\r\n\r\n //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata\r\n setTimeout(() => 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.backend + Repository[\"POST_Adm_GetServerLocks\"], this.locksView);\r\n }\r\n\r\n POSTGetProcesses(url: string, data: LocksView) {\r\n this.http.post<LocksView>(url, data).subscribe(t => {\r\n this.locksView = t;\r\n this.localStorage.setItem(\"HotEnqueue\", this.locksView).subscribe();\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\">{{'Search Application Locks' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <form role=\"form\">\r\n <div class=\"col-md-12 row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filtersid\" name=\"filtersid\" [Placeholder]=\"'SID'\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterlock\" name=\"filterlock\" [Placeholder]=\"'Name' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper app-padding-top-10\">\r\n <form-checkbox [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\r\n <span class=\"app-pointer\" (click)=\"locksView.filterglobal = !locksView.filterglobal\">{{'Global' | localize : lc}}</span>\r\n </div>\r\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>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!locksView\"><em>{{'Loading Application Locks' | localize : lc}}...</em></p>\r\n <div *ngIf=\"locksView\">\r\n <es-table [(ngModel)]=\"locksView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"></es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { HttpParams } from \"@angular/common/http\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { Component, Inject } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { DateService } from \"@esfaenza/extensions\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { BaseChartComponent } from \"@esfaenza/es-charts\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Classi\r\nimport { Metric, MetricChart, MetricsView, KeyValue, Repository} from \"../../models\";\r\n\r\n// Applicazione\r\nimport { AdmMetricsLoc } from \"../\";\r\n\r\n// Chiamate ai Repository\r\nimport { BaseModuleCommunicationsConsumer } from \"../../communications/base/BaseModuleCommunicationsConsumer\";\r\nimport { ADM_BACKEND_URL } from \"../../tokens\";\r\n\r\n/**\r\n * Dichiarazione della variabile globale dayjs. L'onere di \"crearla\" è affidato all'applicazione che utilizza questa libreria, \r\n * che dovrà importare lo script globale di dayjs nella CLI\r\n */\r\n declare var dayjs: any;\r\n\r\n@Component({\r\n selector: \"metrics_search\",\r\n providers: [\r\n { provide: LocalizationService, useClass: AdmMetricsLoc }\r\n ],\r\n templateUrl: \"./metrics_search.component.html\"\r\n})\r\nexport class AdmMetricsComponent {\r\n\r\n public Metrics: Metric[];\r\n private MetricsChartCache: { [name: string]: { chart: BaseChartComponent, 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\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 _state: BaseModuleCommunicationsConsumer,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n @Inject(ADM_BACKEND_URL) private backend: string) {\r\n\r\n this._state.handleNavigation(this.route.snapshot.data[\"title\"], false);\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 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 var pars = new HttpParams().set(\"from\", this.searchView.filterfrom || \"\").set(\"to\", this.searchView.filterto || \"\")\r\n this.http.get<Metric[]>(this.backend + Repository[\"GET_Adm_GetMetrics\"], pars).subscribe(t => this.Metrics = t);\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/adm/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 //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(this.backend + Repository[\"POST_Adm_GetMetrics\"], this.searchView, false);\r\n }\r\n else {\r\n this.searchView = new MetricsView();\r\n\r\n //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata\r\n setTimeout(() => 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(this.backend + Repository[\"POST_Adm_GetMetrics\"], 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 POSTGetItems(url: string, data: MetricsView, update: boolean) {\r\n data.filterrealtime = update ? data.filterrealtime : !(!!data.filterfrom || !!data.filterto);\r\n\r\n this.http.post<MetricsView>(url, data).subscribe(async (t) => {\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 = t;\r\n this.searchView.items.forEach(m => {\r\n if (!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 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 t.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\r\n instanceSelected() {\r\n if (!this.selectedInstance)\r\n return;\r\n\r\n this.metricsToShow = this.searchView.items.filter(t => t.instance == this.selectedInstance);\r\n }\r\n\r\n linkChartToMetric(metric: Metric, metricChart: MetricChart, chartComp: BaseChartComponent) {\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;\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\">\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 {{'System Metrics' | localize : lc}}\r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding 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]=\"'From' | localize : lc\" (inputChange)=\"dateChanged();\"></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]=\"'To' | localize : lc\" (inputChange)=\"dateChanged();\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtersid\" name=\"filtersid\" [Placeholder]=\"'Session ID' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterserial\" name=\"filterserial\" [Placeholder]=\"'Session Serial' | localize : lc\"></form-input>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-12 app-filter-wrapper\">\r\n <form-multiselect [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtermetrics\" [IdField]=\"'name'\" [Display]=\"'{name}'\" name=\"filtermetrics\" [SelectLabel]=\"'Filter Metrics...' | localize : lc\" [Source]=\"Metrics\"></form-multiselect>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\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>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </form>\r\n <div class=\"app-col-12 app-margin-top-15\">\r\n <div class=\"pull-right\">\r\n {{'Update every' | localize : lc}}&nbsp;<input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" />&nbsp;{{'second/s' | 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\" (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 <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView && instanceRequired\">\r\n <form-select [Validation]=\"false\" [Label]=\"'Metrics Instance' | localize : lc\" [(ngModel)]=\"selectedInstance\" name=\"instance\" [Source]=\"Instances\" (inputChange)=\"instanceSelected()\" required></form-select>\r\n </div>\r\n <div *ngIf=\"searchView && metricsToShow && metricsToShow.length > 0\">\r\n <div class=\"col-md-12 app-padding-right-0 row app-margin-top-15\">\r\n <ng-container *ngFor=\"let metric of metricsToShow; let i = index\">\r\n <div class=\"col-md-4 app-no-padding app-simple-border\" *ngFor=\"let chart of metric.values; let z = index\">\r\n <div style=\"width: 100%; height: 260px\">\r\n <es-line-chart [XTitle]=\"chart.xtitle\"\r\n [YTitle]=\"chart.ytitle\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"chart\"\r\n [Animations]=\"true\"\r\n [Legend]=\"chart.legend\"\r\n name=\"metric_{{i}}_chart_{{z}}\"\r\n (chartLoaded)=\"linkChartToMetric(metric, chart, $event);\"\r\n [DataGroupingThreshold]=\"99999999\">\r\n </es-line-chart>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \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>","// Angular\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { RouterModule } from \"@angular/router\";\n\n// Material\nimport { MatIconModule } from '@angular/material/icon'\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDayjsDateModule } from '@esfaenza/material-dayjs-adapter';\nimport { MatInputModule } from \"@angular/material/input\";\n\n// Libs\nimport { NgxMatDatetimePickerModule } from '@angular-material-components/datetime-picker';\nimport { ModalModule } from \"ngx-bootstrap/modal\";\n\n// Abilitando questi import va in Maximum call stack size exceeded. Vedere\n// https://stackoverflow.com/questions/62769793/maximum-call-stack-size-exceeded-in-angular-9-ng-build-prod-for-a-library\n// Esfaenza\nimport { EsTableModule } from \"@esfaenza/es-table\";\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\nimport { EsChartsModule } from \"@esfaenza/es-charts\";\n\n// Models\nimport { BaseModuleCommunicationsConsumer } from \"./communications/base/BaseModuleCommunicationsConsumer\";\nimport { NoOpCommunicationsConsumer } from \"./communications/implementation/NoOpCommunicationsConsumer\";\nimport { AdminModuleConfig } from \"./models/configuration/AdminModuleConfig\";\nimport { ADM_BACKEND_URL, ADM_LOCALE } from \"./tokens\";\n\n// Components\nimport {\n AdmWrkComponent,\n AdmProfilerComponent,\n AdmTopActivitiesComponent,\n AdmLogsComponent,\n AdmAuditsComponent,\n AdmEnqComponent,\n AdmMetricsComponent\n} from \"./components\";\n\nimport { EsGertrudeModule } from \"@esfaenza/gertrude\";\nimport { LocalizationModule } from \"@esfaenza/localizations\";\nimport { ContextMenuModule } from \"@esfaenza/ngx-contextmenu\";\nimport { CsvModule } from \"@ctrl/ngx-csv\";\nimport { BsDropdownModule } from \"ngx-bootstrap/dropdown\";\nimport { TooltipModule } from \"ngx-bootstrap/tooltip\";\n\ndeclare var myconfig;\n\nexport const routeConfig = [\n {\n path: \"\", children: [\n { path: \"serverworkers\", component: AdmWrkComponent, data: { title: \"Search Application Processes\", internalNavigation: false } },\n { path: \"profiler\", component: AdmProfilerComponent, data: { title: \"Server Profiler\", internalNavigation: false } },\n { path: \"topact\", component: AdmTopActivitiesComponent, data: { title: \"Top Activities\", internalNavigation: false } },\n { path: \"metrics\", component: AdmMetricsComponent, data: { title: \"System Metrics\", internalNavigation: false } },\n { path: \"serverlogs\", component: AdmLogsComponent, data: { title: \"Server Logs\", internalNavigation: false } },\n { path: \"serveraudits\", component: AdmAuditsComponent, data: { title: \"Search Application Audits\", internalNavigation: false } },\n { path: \"serverenqueues\", component: AdmEnqComponent, data: { title: \"Search Application Locks\", internalNavigation: false } },\n ]\n }\n];\n\n\nconst MODULES = [\n CommonModule,\n FormsModule,\n ModalModule,\n MatInputModule,\n MatDatepickerModule,\n MatDayjsDateModule,\n MatIconModule,\n RouterModule,\n NgxMatDatetimePickerModule,\n\n ContextMenuModule,\n CsvModule,\n BsDropdownModule,\n TooltipModule,\n LocalizationModule,\n EsTableModule,\n FormsAndValidationsModule,\n EsGertrudeModule,\n EsChartsModule,\n EsTableModule,\n FormsAndValidationsModule,\n EsChartsModule,\n FormsAndValidationsModule,\n EsChartsModule,\n\n RouterModule.forChild(routeConfig),\n];\n\nconst COMPONENTS = [\n AdmWrkComponent,\n AdmProfilerComponent,\n AdmTopActivitiesComponent,\n AdmLogsComponent,\n AdmAuditsComponent,\n AdmEnqComponent,\n AdmMetricsComponent\n];\n\n@NgModule({\n imports: [...MODULES],\n declarations: [...COMPONENTS],\n providers: [\n\n ]\n})\nexport class AdmModule {\n static forRoot(config: AdminModuleConfig): ModuleWithProviders<AdmModule> {\n return {\n ngModule: AdmModule,\n providers: [\n { provide: ADM_LOCALE, useValue: config.locale || myconfig?.LOCALE || 'it-IT' },\n { provide: ADM_BACKEND_URL, useValue: config.appUrl },\n { provide: BaseModuleCommunicationsConsumer, useClass: config?.communicationsConsumer || NoOpCommunicationsConsumer },\n ]\n };\n }\n}","/*\n * Public API Surface of admin-module\n */\n\nexport * from './lib/admin-module.module';\n//export * from './lib/communications/base/BaseModuleCommunicationsConsumer';\n//export * from './lib/models/configuration/AdminModuleConfig';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"esfaenza-admin-module.mjs","sources":["../../../projects/admin-module/src/lib/tokens.ts","../../../projects/admin-module/src/lib/components/profiler/adm_profiler.component.loc.ts","../../../projects/admin-module/src/lib/components/topact/topact_search.component.loc.ts","../../../projects/admin-module/src/lib/components/workers/adm_wrk.component.loc.ts","../../../projects/admin-module/src/lib/components/audits/adm_audits.component.loc.ts","../../../projects/admin-module/src/lib/components/enqueues/adm_enq.component.loc.ts","../../../projects/admin-module/src/lib/components/metrics/metrics_search.component.loc.ts","../../../projects/admin-module/src/lib/models/shared/KeyValue.ts","../../../projects/admin-module/src/lib/models/shared/Locale.ts","../../../projects/admin-module/src/lib/models/externals/Repository.ts","../../../projects/admin-module/src/lib/models/components/Lock.loc.ts","../../../projects/admin-module/src/lib/models/components/ProfilerDataNode.loc.ts","../../../projects/admin-module/src/lib/models/components/ProcessesView.ts","../../../projects/admin-module/src/lib/models/components/ProfilerDataNode.ts","../../../projects/admin-module/src/lib/models/components/ProfilerDataNodesView.ts","../../../projects/admin-module/src/lib/models/components/TopNode.ts","../../../projects/admin-module/src/lib/models/components/TopSession.ts","../../../projects/admin-module/src/lib/models/components/ActiveSession.ts","../../../projects/admin-module/src/lib/models/components/TopActivity.ts","../../../projects/admin-module/src/lib/models/components/TopActivitiesDataView.ts","../../../projects/admin-module/src/lib/models/components/Audit.ts","../../../projects/admin-module/src/lib/models/components/AuditsView.ts","../../../projects/admin-module/src/lib/models/components/Lock.ts","../../../projects/admin-module/src/lib/models/components/LocksView.ts","../../../projects/admin-module/src/lib/models/components/DirectorInfos.ts","../../../projects/admin-module/src/lib/models/components/MetricsView.ts","../../../projects/admin-module/src/lib/models/components/MetricChart.ts","../../../projects/admin-module/src/lib/models/components/Metric.ts","../../../projects/admin-module/src/lib/communications/base/BaseModuleCommunicationsConsumer.ts","../../../projects/admin-module/src/lib/components/profiler/adm_profiler.component.ts","../../../projects/admin-module/src/lib/components/profiler/adm_profiler.component.html","../../../projects/admin-module/src/lib/components/logs/adm_logs.component.ts","../../../projects/admin-module/src/lib/components/logs/adm_logs.component.html","../../../projects/admin-module/src/lib/components/topact/topact_search.component.ts","../../../projects/admin-module/src/lib/components/topact/topact_search.component.html","../../../projects/admin-module/src/lib/components/workers/adm_wrk.component.ts","../../../projects/admin-module/src/lib/components/workers/adm_wrk.component.html","../../../projects/admin-module/src/lib/components/audits/adm_audits.component.ts","../../../projects/admin-module/src/lib/components/audits/adm_audits.component.html","../../../projects/admin-module/src/lib/components/enqueues/adm_enq.component.ts","../../../projects/admin-module/src/lib/components/enqueues/adm_enq.component.html","../../../projects/admin-module/src/lib/components/metrics/metrics_search.component.ts","../../../projects/admin-module/src/lib/components/metrics/metrics_search.component.html","../../../projects/admin-module/src/lib/admin-module.module.ts","../../../projects/admin-module/src/public-api.ts","../../../projects/admin-module/src/esfaenza-admin-module.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const ADM_LOCALE: InjectionToken<string> = new InjectionToken<string>('ADM_LOCALE');\r\nexport const ADM_BACKEND_URL: InjectionToken<string> = new InjectionToken<string>('ADM_BACKEND_URL');","import { Injectable, Inject } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\nimport { ADM_LOCALE } from \"../../tokens\";\r\n\r\n@Injectable()\r\nexport class AdmProfilerComponentLoc extends LocalizationService {\r\n constructor(@Inject(ADM_LOCALE) LOC_LOCALE: string) {\r\n super(LOC_LOCALE);\r\n\r\n super.set(\"en->it\", \"Profiler Search\", [\"Ricerca dati Profiler\"]);\r\n super.set(\"en->it\", \"Loading Data\", [\"Carico i Dati\"]);\r\n super.set(\"en->it\", \"ID\", [\"ID\"]);\r\n super.set(\"en->it\", \"Description\", [\"Descrizione\"]);\r\n super.set(\"en->it\", \"Calls\", [\"Chiamate\"]);\r\n super.set(\"en->it\", \"Time\", [\"Tempo\"]);\r\n super.set(\"en->it\", \"Peak Time\", [\"Tempo Max\"]);\r\n super.set(\"en->it\", \"Min. Time\", [\"Tempo Min\"]);\r\n super.set(\"en->it\", \"Avg. Time\", [\"Tempo Medio\"]);\r\n super.set(\"en->it\", \"Specific Time\", [\"Tempo Specifico\"]);\r\n super.set(\"en->it\", \"Percentage\", [\"Percentuale\"]);\r\n super.set(\"en->it\", \"Calls for Period\", [\"Chiamate Periodo\"]);\r\n super.set(\"en->it\", \"Time for Period\", [\"Tempo Periodo\"]);\r\n super.set(\"en->it\", \"Peak Time for Period\", [\"Tempo Max Periodo\"]);\r\n super.set(\"en->it\", \"Min. Time for Period\", [\"Tempo Min Periodo\"]);\r\n super.set(\"en->it\", \"Avg. Time for Period\", [\"Tempo Medio Periodo\"]);\r\n super.set(\"en->it\", \"Specific Time for Period\", [\"Tempo Specifico Periodo\"]);\r\n super.set(\"en->it\", \"Percentage for Period\", [\"Percentuale Periodo\"]);\r\n }\r\n}","import { Injectable, Inject } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\nimport { ADM_LOCALE } from \"../../tokens\";\r\n\r\n@Injectable()\r\nexport class AdmTopActivitieLoc extends LocalizationService {\r\n constructor(@Inject(ADM_LOCALE) LOC_LOCALE: string) {\r\n super(LOC_LOCALE);\r\n super.set(\"en->it\", \"Active Sessions\", [\"Sessioni Attive\"]);\r\n super.set(\"en->it\", \"Top Nodes\", [\"Prime Istruzioni\"]);\r\n super.set(\"en->it\", \"Top Sessions\", [\"Prime Sessioni\"]);\r\n super.set(\"en->it\", \"Loading Data\", [\"Carico i Dati\"]);\r\n super.set(\"en->it\", \"Top Activities\", [\"Attivita' Principali\"]);\r\n \r\n super.set(\"en->it\", \"Node Description\", [\"Descrizione Nodo\"]);\r\n super.set(\"en->it\", \"Node\", [\"Nodo\"]);\r\n super.set(\"en->it\", \"Activity\", [\"Attivita'\"]);\r\n super.set(\"en->it\", \"Limit\", [\"Limite\"]);\r\n super.set(\"en->it\", \"Node Type\", [\"Tipo Nodo\"]);\r\n\r\n super.set(\"en->it\", \"User\", [\"Utente\"]);\r\n super.set(\"en->it\", \"Tenant\", [\"Tenant\"]);\r\n super.set(\"en->it\", \"Process\", [\"Processo\"]);\r\n\r\n super.set(\"en->it\", \"Update every\", [\"Aggiorna ogni\"]);\r\n super.set(\"en->it\", \"second/s\", [\"secondo/i\"]);\r\n super.set(\"en->it\", \"Maximum Threads\", [\"Thread Massimi\"]);\r\n super.set(\"en->it\", \"CPUs\", [\"CPU\"]);\r\n \r\n }\r\n}","import { Injectable, Inject } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\nimport { ADM_LOCALE } from \"../../tokens\";\r\n\r\n@Injectable()\r\nexport class AdmWrkLoc extends LocalizationService {\r\n constructor(@Inject(ADM_LOCALE) LOC_LOCALE: string) {\r\n super(LOC_LOCALE);\r\n\r\n super.set(\"en->it\", \"Consumer Group succesfully changed\", [\"Gruppo di Consumo modificato con successo\"]);\r\n super.set(\"en->it\", \"Errors changing Consumer Group\", [\"Errori nella modifica del Gruppo di Consumo\"]);\r\n super.set(\"en->it\", \"Change Consumer Group\", [\"Modifica Gruppo di Consumo\"]);\r\n super.set(\"en->it\", \"New Consumer Group\", [\"Nuovo Gruppo di Consumo\"]);\r\n\r\n super.set(\"en->it\", \"State\", [\"Stato\"]);\r\n super.set(\"en->it\", \"Global\", [\"Globale\"]);\r\n super.set(\"en->it\", \"Search Application Processes\", [\"Ricerca Processi Applicativi\"]);\r\n super.set(\"en->it\", \"Tenant\", [\"Operatore\"]);\r\n super.set(\"en->it\", \"Errors toggling Process Tracing\", [\"Errori nella modifica del Tracing del Processo\"]);\r\n super.set(\"en->it\", \"User\", [\"Utente\"]);\r\n super.set(\"en->it\", \"Loading Application Processes\", [\"Carico i Processi Applicativi\"]);\r\n super.set(\"en->it\", \"Activate Process Tracing\", [\"Attiva Tracing Processo\"]);\r\n super.set(\"en->it\", \"Deactivate Process Tracing\", [\"Disattiva Tracing Progetto\"]);\r\n super.set(\"en->it\", \"Kill Process\", [\"Ammazza Processo\"]);\r\n super.set(\"en->it\", \"Errors killing the Process\", [\"Errori durante la Kill del Processo\"]);\r\n super.set(\"en->it\", \"Process succesfully killed\", [\"Processo ucciso con successo\"]);\r\n super.set(\"en->it\", \"Confirm Process Kill\", [\"Conferma Terminazione del Processo\"]);\r\n super.set(\"en->it\", \"Are you sure you wish to kill the selected process? The associated user will be disconnected\", [\"Sei sicuro di voler Terminare il processo selezionato? L'utente relativo sara' disconnesso\"]);\r\n }\r\n}","import { Injectable, Inject } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\nimport { ADM_LOCALE } from \"../../tokens\";\r\n\r\n@Injectable()\r\nexport class AdmAuditLoc extends LocalizationService {\r\n constructor(@Inject(ADM_LOCALE) LOC_LOCALE: string) {\r\n super(LOC_LOCALE);\r\n\r\n super.set(\"en->it\", \"Search Application Audits\", [\"Ricerca Audit Applicativi\"]);\r\n super.set(\"en->it\", \"User\", [\"Utente\"]);\r\n super.set(\"en->it\", \"REST Call\", [\"Chiamata REST\"]);\r\n super.set(\"en->it\", \"Update\", [\"Aggiornamento\"]);\r\n super.set(\"en->it\", \"Route\", [\"Route\"]);\r\n super.set(\"en->it\", \"Action\", [\"Azione\"]);\r\n super.set(\"en->it\", \"HTTP Method\", [\"Metodo HTTP\"]);\r\n super.set(\"en->it\", \"Arguments\", [\"Argomenti\"]);\r\n super.set(\"en->it\", \"Object ID\", [\"ID Oggetto\"]);\r\n super.set(\"en->it\", \"Object Type\", [\"Tipo Oggetto\"]);\r\n super.set(\"en->it\", \"Object Data\", [\"Dati Oggetto\"]);\r\n super.set(\"en->it\", \"Loading Application Audits\", [\"Carico gli Audit dell'Applicazione\"]);\r\n super.set(\"en->it\", \"Date\", [\"Data\"]);\r\n super.set(\"en->it\", \"HTTP Response\", [\"Risposta HTTP\"]);\r\n super.set(\"en->it\", \"Application Error Code\", [\"Codice Errore Applicativo\"]);\r\n }\r\n}","import { Injectable, Inject } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\nimport { ADM_LOCALE } from \"../../tokens\";\r\n\r\n@Injectable()\r\nexport class AdmEnqLoc extends LocalizationService {\r\n constructor(@Inject(ADM_LOCALE) LOC_LOCALE: string) {\r\n super(LOC_LOCALE);\r\n super.set(\"en->it\", \"Search Application Locks\", [\"Ricerca Lock Applicativi\"]);\r\n super.set(\"en->it\", \"Name\", [\"Nome\"]);\r\n super.set(\"en->it\", \"Loading Application Locks\", [\"Carico i Lock Applicativi\"]);\r\n super.set(\"en->it\", \"Global\", [\"Globale\"]);\r\n }\r\n}","import { Injectable, Inject } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\nimport { ADM_LOCALE } from \"../../tokens\";\r\n\r\n@Injectable()\r\nexport class AdmMetricsLoc extends LocalizationService {\r\n constructor(@Inject(ADM_LOCALE) LOC_LOCALE: string) {\r\n super(LOC_LOCALE);\r\n super.set(\"en->it\", \"System Metrics\", [\"Metriche di Sistema\"]);\r\n super.set(\"en->it\", \"Session ID\", [\"Cod. Sessione\"]);\r\n super.set(\"en->it\", \"Session Serial\", [\"Seriale Sessione\"]);\r\n super.set(\"en->it\", \"Filter Metrics...\", [\"Filtra Metriche...\"]);\r\n super.set(\"en->it\", \"Loading Data\", [\"Carico i Dati\"]);\r\n super.set(\"en->it\", \"Update every\", [\"Aggiorna ogni\"]);\r\n super.set(\"en->it\", \"second/s\", [\"secondo/i\"]);\r\n super.set(\"en->it\", \"Metrics Instance\", [\"Istanza Metriche\"]);\r\n }\r\n}","export class KeyValue {\r\n constructor(public id: string, public description: string) { }\r\n}","declare var myconfig;\r\n\r\nexport const Locale: string = localStorage.getItem(\"LOCALE\") || myconfig.LOCALE;","export const Repository = {\r\n GET_Adm_ChangeProcessConsumerGroup: \"/api/Adm/ChangeProcessConsumerGroup\",\r\n GET_Adm_ClearAllCaches: \"/api/Adm/ClearAllCaches\",\r\n GET_Adm_GetConsumerGroups: \"/api/Adm/GetConsumerGroups#cache\",\r\n GET_Adm_GetInfos: \"/api/Adm/GetInfos\",\r\n GET_Adm_GetMetrics: \"/api/Adm/GetMetrics\",\r\n POST_Adm_GetMetrics: \"/api/Adm/GetMetrics\",\r\n POST_Adm_GetProfilerDataNodes: \"/api/Adm/GetProfilerDataNodes\",\r\n POST_Adm_GetServerAudits: \"/api/Adm/GetServerAudits\",\r\n POST_Adm_GetServerLocks: \"/api/Adm/GetServerLocks\",\r\n GET_Adm_GetServerLogs: \"/api/Adm/GetServerLogs\",\r\n POST_Adm_GetServerWorkers: \"/api/Adm/GetServerWorkers\",\r\n POST_Adm_GetTopActivities: \"/api/Adm/GetTopActivities\",\r\n GET_Adm_GetWorkerStatus: \"/api/Adm/GetWorkerStatus\",\r\n GET_Adm_InvalidateServerSideCache: \"/api/Adm/InvalidateServerSideCache\",\r\n GET_Adm_KillProcess: \"/api/Adm/KillProcess\",\r\n GET_Adm_SetProcessTracing: \"/api/Adm/SetProcessTracing\",\r\n GET_Adm_StartWorker: \"/api/Adm/StartWorker\",\r\n GET_Adm_StopWorker: \"/api/Adm/StopWorker\"\r\n}","export const Lock_loc = {\r\n 'ID': { 'en-US': \"ID\", 'it-IT': \"ID\" },\r\n 'Description': { 'en-US': \"Description\", 'it-IT': \"Descrizione\" },\r\n 'Hold Mode': { 'en-US': \"Hold Mode\", 'it-IT': \"Modalità Hold\" },\r\n 'Request Mode': { 'en-US': \"Request Mode\", 'it-IT': \"Modalità Richiesta\" },\r\n 'Parameter 1': { 'en-US': \"Parameter 1\", 'it-IT': \"Parametro 1\" },\r\n 'Parameter 2': { 'en-US': \"Parameter 2\", 'it-IT': \"Parametro 2\" },\r\n 'Tenant Level Lock': { 'en-US': \"Tenant Level Lock\", 'it-IT': \"Lock a livello Tenant\" },\r\n 'Tenant': { 'en-US': \"Tenant\", 'it-IT': \"Tenant\" },\r\n 'Grant Time': { 'en-US': \"Grant Time\", 'it-IT': \"Istante Concessione\" },\r\n 'Blocked on SID': { 'en-US': \"Blocked on SID\", 'it-IT': \"Bloccato su SID\" }\r\n}","export const ProfilerDataNode_loc = {\r\n 'Parent ID': { 'en-US': \"Parent ID\", 'it-IT': \"ID Padre\" },\r\n 'ID': { 'en-US': \"ID\", 'it-IT': \"ID\" },\r\n 'Description': { 'en-US': \"Description\", 'it-IT': \"Descrizione\" },\r\n 'Calls': { 'en-US': \"Calls\", 'it-IT': \"Chiamate\" },\r\n 'Time': { 'en-US': \"Time\", 'it-IT': \"Tempo\" },\r\n 'Peak Time': { 'en-US': \"Peak Time\", 'it-IT': \"Tempo Max\" },\r\n 'Min. Time': { 'en-US': \"Min. Time\", 'it-IT': \"Tempo Min\" },\r\n 'Avg. Time': { 'en-US': \"Avg. Time\", 'it-IT': \"Tempo Medio\" },\r\n 'Specific Time': { 'en-US': \"Specific Time\", 'it-IT': \"Tempo Specifico\" },\r\n 'Percentage': { 'en-US': \"Percentage\", 'it-IT': \"Percentuale\" },\r\n 'Calls for Period': { 'en-US': \"Calls for Period\", 'it-IT': \"Chiamate Periodo\" },\r\n 'Time for Period': { 'en-US': \"Time for Period\", 'it-IT': \"Tempo Periodo\" },\r\n 'Peak Time for Period': { 'en-US': \"Peak Time for Period\", 'it-IT': \"Tempo Max Periodo\" },\r\n 'Min. Time for Period': { 'en-US': \"Min. Time for Period\", 'it-IT': \"Tempo Min Periodo\" },\r\n 'Avg. Time for Period': { 'en-US': \"Avg. Time for Period\", 'it-IT': \"Tempo Medio Periodo\" },\r\n 'Specific Time for Period': { 'en-US': \"Specific Time for Period\", 'it-IT': \"Tempo Specifico Periodo\" },\r\n 'Percentage for Period': { 'en-US': \"Percentage for Period\", 'it-IT': \"Percentuale Periodo\" }\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}","import { autoserialize } from \"cerialize\";\r\nimport { Export } from \"@esfaenza/extensions\";\r\nimport { Locale } from \"../../models\";\r\nimport { ProfilerDataNode_loc } from \"../\";\r\n\r\nexport class ProfilerDataNode {\r\n @Export(10, ProfilerDataNode_loc[\"Parent ID\"][Locale])\r\n @autoserialize parentid: string;\r\n @Export(20, ProfilerDataNode_loc[\"ID\"][Locale])\r\n @autoserialize id: string;\r\n @Export(30, ProfilerDataNode_loc[\"Description\"][Locale])\r\n @autoserialize description: string;\r\n @Export(40, ProfilerDataNode_loc[\"Calls\"][Locale])\r\n @autoserialize calls: number;\r\n @Export(50, ProfilerDataNode_loc[\"Time\"][Locale])\r\n @autoserialize time: number;\r\n @Export(60, ProfilerDataNode_loc[\"Peak Time\"][Locale])\r\n @autoserialize peaktime: number;\r\n @Export(70, ProfilerDataNode_loc[\"Min. Time\"][Locale])\r\n @autoserialize mintime: number;\r\n @Export(80, ProfilerDataNode_loc[\"Avg. Time\"][Locale])\r\n @autoserialize avgtime: number;\r\n @Export(90, ProfilerDataNode_loc[\"Specific Time\"][Locale])\r\n @autoserialize timewithoutchildren: number;\r\n @Export(100, ProfilerDataNode_loc[\"Percentage\"][Locale])\r\n @autoserialize percentage: number;\r\n @Export(110, ProfilerDataNode_loc[\"Calls for Period\"][Locale])\r\n @autoserialize snapdeltacalls: number;\r\n @Export(120, ProfilerDataNode_loc[\"Time for Period\"][Locale])\r\n @autoserialize snapdeltatime: number;\r\n @Export(130, ProfilerDataNode_loc[\"Peak Time for Period\"][Locale])\r\n @autoserialize snappeaktime: number;\r\n @Export(140, ProfilerDataNode_loc[\"Min. Time for Period\"][Locale])\r\n @autoserialize snapmintime: number;\r\n @Export(150, ProfilerDataNode_loc[\"Avg. Time for Period\"][Locale])\r\n @autoserialize snapavgtime: number;\r\n @Export(160, ProfilerDataNode_loc[\"Specific Time for Period\"][Locale])\r\n @autoserialize snaptimewithoutchildren: number;\r\n @Export(170, ProfilerDataNode_loc[\"Percentage for Period\"][Locale])\r\n @autoserialize snappercentage: number;\r\n}","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { ProfilerDataNode } from \"../\";\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}","export class TopNode {\r\n activity: number;\r\n profnodeid: string;\r\n nodetypename: string;\r\n profnodedesc: string;\r\n}","export class TopSession {\r\n activity: number;\r\n cpu: number;\r\n wait: number;\r\n db: number;\r\n script: number;\r\n throttle: number;\r\n sleep: number;\r\n net: number;\r\n io: number;\r\n\r\n sid: number;\r\n user: string;\r\n tenant: string;\r\n bgprocess: string;\r\n}","export class ActiveSession {\r\n sampletime: Date;\r\n cputime: number;\r\n waittime: number;\r\n scripttime: number;\r\n dbtime: number;\r\n nettime: number;\r\n throttletime: number;\r\n sleeptime: number;\r\n iotime: number;\r\n}","import { ActiveSession, TopSession, TopNode } from \"../\";\r\n\r\nexport class TopActivity {\r\n actsessions: ActiveSession[];\r\n topsessions: TopSession[];\r\n topnodes: TopNode[];\r\n}","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { TopActivity } from \"../\";\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}","export class Audit {\r\n timestamp: Date;\r\n user: string;\r\n action: string;\r\n httpmethod: string;\r\n route: string;\r\n args: string;\r\n httpresponse: string;\r\n apperrorcode: string;\r\n objecttype: string;\r\n objectid: string;\r\n objectdata: string;\r\n}\r\n\r\n","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { Audit } from \"../\";\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 filterhttp: string;\r\n filterargs: string;\r\n filterobjid: string;\r\n filterobjtype: string;\r\n}","import { autoserialize, autoserializeAs } from \"cerialize\";\r\nimport { Export } from \"@esfaenza/extensions\";\r\nimport { Locale } from \"../../models\";\r\nimport { Lock_loc } from \"../\";\r\n\r\nexport class Lock {\r\n @Export(10, Lock_loc[\"ID\"][Locale])\r\n @autoserialize id: string;\r\n @Export(20, Lock_loc[\"Description\"][Locale])\r\n @autoserialize description: string;\r\n @Export(30, Lock_loc[\"Hold Mode\"][Locale])\r\n @autoserialize holdmode: string;\r\n @Export(40, Lock_loc[\"Request Mode\"][Locale])\r\n @autoserialize requestmode: string;\r\n @Export(50, Lock_loc[\"Parameter 1\"][Locale])\r\n @autoserialize p1: string;\r\n @Export(60, Lock_loc[\"Parameter 2\"][Locale])\r\n @autoserialize p2: string;\r\n @Export(70, Lock_loc[\"Tenant Level Lock\"][Locale])\r\n @autoserialize tenantlock: boolean;\r\n @Export(80, Lock_loc[\"Tenant\"][Locale])\r\n @autoserialize tenant: string;\r\n @Export(90, Lock_loc[\"Blocked on SID\"][Locale])\r\n @autoserialize blockedon: string;\r\n @Export(100, Lock_loc[\"Grant Time\"][Locale], \"DD/MM/YYYY HH:mm:ss\")\r\n @autoserializeAs(Date) granttime: Date;\r\n}","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\nimport { Lock } from \"../\";\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}","export class DirectorInfos {\r\n rssplan: string;\r\n threads: number;\r\n cpus: number;\r\n}","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}","import { LineChartData } from \"@esfaenza/es-charts\";\r\n\r\nexport class MetricChart extends LineChartData {\r\n xtitle: string;\r\n ytitle: string;\r\n legend: boolean;\r\n}","import { MetricChart } from \"./MetricChart\";\r\n\r\nexport class Metric {\r\n instance: string;\r\n name: string;\r\n values: MetricChart[];\r\n}","export abstract class BaseModuleCommunicationsConsumer {\r\n public abstract handleNavigation(routeTitle: string, subNavigation: boolean);\r\n}","// Angular\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { Component, Inject } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { ExportService } from \"@esfaenza/extensions\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Classi\r\nimport { ProfilerDataNode, ProfilerDataNodesView, Repository } from \"../../models\";\r\n\r\n// Applicazione\r\nimport { AdmProfilerComponentLoc } from \"../\";\r\n\r\n// Chiamate ai Repository\r\nimport { BaseModuleCommunicationsConsumer } from \"../../communications/base/BaseModuleCommunicationsConsumer\";\r\nimport { ADM_BACKEND_URL } from \"../../tokens\";\r\n\r\n@Component({\r\n selector: \"adm_profiler\",\r\n providers: [\r\n { provide: LocalizationService, useClass: AdmProfilerComponentLoc }\r\n ],\r\n templateUrl: \"./adm_profiler.component.html\"\r\n})\r\nexport class AdmProfilerComponent {\r\n public searchView: ProfilerDataNodesView = new ProfilerDataNodesView();\r\n public storageSub: any;\r\n\r\n constructor(\r\n private expExts: ExportService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private _state: BaseModuleCommunicationsConsumer,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n @Inject(ADM_BACKEND_URL) private backend: string) {\r\n\r\n this._state.handleNavigation(this.route.snapshot.data[\"title\"], false);\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/adm/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 //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(this.backend + Repository[\"POST_Adm_GetProfilerDataNodes\"], this.searchView);\r\n }\r\n else {\r\n this.searchView = new ProfilerDataNodesView();\r\n\r\n //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata\r\n setTimeout(() => 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.backend + Repository[\"POST_Adm_GetProfilerDataNodes\"], this.searchView);\r\n }\r\n\r\n POSTGetItems(url: string, data: ProfilerDataNodesView) {\r\n this.http.post<ProfilerDataNodesView>(url, data).subscribe(t => {\r\n this.searchView = t;\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotSearchProfilato\", this.searchView).subscribe();\r\n });\r\n }\r\n\r\n prepareExport(dataCallBack) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n this.http.post<ProfilerDataNodesView>(this.backend + Repository[\"POST_Adm_GetProfilerDataNodes\"], view).subscribe(t => {\r\n let items: ProfilerDataNode[] = this.expExts.deserializeForExport(t.items, ProfilerDataNode);\r\n dataCallBack(items);\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\">{{'Profiler Search' | localize : lc}}</span>&nbsp;\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\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-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress\" 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 </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [Hierarchy]=\"true\" [UseCustomCells]=\"true\" [ParentKey]=\"'parentid'\" [OwnKey]=\"'id'\" [StartsExpanded]=\"false\"\r\n [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\" [ExportFileName]=\"'Profiler Export.csv'\" [HidePaging]=\"true\"\r\n (onSearchRequest)=\"sendSearch($event);\">\r\n <ng-template #header>\r\n <th es-th=\"1\" class=\"app-nowrap\">{{'ID' | localize : lc}}</th>\r\n <th es-th=\"2\" class=\"app-nowrap\">{{'Description' | localize : lc}}</th>\r\n <th es-th=\"3\" class=\"app-nowrap\">{{'Calls' | localize : lc}}</th>\r\n <th es-th=\"4\" class=\"app-nowrap\">{{'Time' | localize : lc}}</th>\r\n <th es-th=\"5\" class=\"app-nowrap\">{{'Peak Time' | localize : lc}}</th>\r\n <th es-th=\"6\" class=\"app-nowrap\">{{'Min. Time' | localize : lc}}</th>\r\n <th es-th=\"7\" class=\"app-nowrap\">{{'Avg. Time' | localize : lc}}</th>\r\n <th es-th=\"8\" class=\"app-nowrap\">{{'Specific Time' | localize : lc}}</th>\r\n <th es-th=\"9\" class=\"app-nowrap\">{{'Percentage' | localize : lc}}</th>\r\n <th es-th=\"10\" class=\"app-nowrap\">{{'Calls for Period' | localize : lc}}</th>\r\n <th es-th=\"11\" class=\"app-nowrap\">{{'Time for Period' | localize : lc}}</th>\r\n <th es-th=\"12\" class=\"app-nowrap\">{{'Peak Time for Period' | localize : lc}}</th>\r\n <th es-th=\"13\" class=\"app-nowrap\">{{'Min. Time for Period' | localize : lc}}</th>\r\n <th es-th=\"14\" class=\"app-nowrap\">{{'Avg. Time for Period' | localize : lc}}</th>\r\n <th es-th=\"15\" class=\"app-nowrap\">{{'Specific Time for Period' | localize : lc}}</th>\r\n <th es-th=\"16\" class=\"app-nowrap\">{{'Percentage for Period' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-item>\r\n <td es-td=\"1\" class=\"app-nowrap\">{{item.id}}</td>\r\n <td es-td=\"2\" class=\"app-nowrap\"><span title=\"{{item.description}}\">{{item.description.length <= 50 ? item.description : item.description.substr(0,50) + \"[...]\"}}</span></td>\r\n <td es-td=\"3\" class=\"app-nowrap\">{{item.calls}}</td>\r\n <td es-td=\"4\" class=\"app-nowrap\">{{item.time}}</td>\r\n <td es-td=\"5\" class=\"app-nowrap\">{{item.peaktime}}</td>\r\n <td es-td=\"6\" class=\"app-nowrap\">{{item.mintime}}</td>\r\n <td es-td=\"7\" class=\"app-nowrap\">{{item.avgtime}}</td>\r\n <td es-td=\"8\" class=\"app-nowrap\">{{item.timewithoutchildren}}</td>\r\n <td es-td=\"9\" class=\"app-nowrap\">{{item.percentage}}</td>\r\n <td es-td=\"10\" class=\"app-nowrap\">{{item.snapdeltacalls}}</td>\r\n <td es-td=\"11\" class=\"app-nowrap\">{{item.snapdeltatime}}</td>\r\n <td es-td=\"12\" class=\"app-nowrap\">{{item.snappeaktime}}</td>\r\n <td es-td=\"13\" class=\"app-nowrap\">{{item.snapmintime}}</td>\r\n <td es-td=\"14\" class=\"app-nowrap\">{{item.snapavgtime}}</td>\r\n <td es-td=\"15\" class=\"app-nowrap\">{{item.snaptimewithoutchildren}}</td>\r\n <td es-td=\"16\" class=\"app-nowrap\">{{item.snappercentage}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Component, Inject } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Chiamate ai Repository\r\nimport { BaseModuleCommunicationsConsumer } from \"../../communications/base/BaseModuleCommunicationsConsumer\";\r\nimport { Repository } from \"../../models\";\r\nimport { ADM_BACKEND_URL } from \"../../tokens\";\r\n\r\n@Component({\r\n selector: \"adm_logs\",\r\n templateUrl: \"./adm_logs.component.html\"\r\n})\r\n\r\nexport class AdmLogsComponent {\r\n public Log: string;\r\n\r\n constructor(\r\n private _state: BaseModuleCommunicationsConsumer,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n @Inject(ADM_BACKEND_URL) private backend: string) {\r\n\r\n this._state.handleNavigation(this.route.snapshot.data[\"title\"], false);\r\n }\r\n\r\n ngOnInit() {\r\n this.http.get<string>(this.backend + Repository[\"GET_Adm_GetServerLogs\"]).subscribe(t => { this.Log = t; });\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12 bottom-15\">\r\n <p *ngIf=\"Log\" class=\"app-whitespace-prewrap\" [innerHTML]=\"Log\"></p>\r\n </div>\r\n</div>","// Angular\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { Component, Inject } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { BaseChartComponent, DateValue, Limit, LineChartData, LineSerie } from \"@esfaenza/es-charts\";\r\nimport { DateService } from \"@esfaenza/extensions\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Classi\r\nimport { DirectorInfos, Repository, TopActivitiesDataView, TopNode, TopSession } from \"../../models\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport * as am4charts from \"@amcharts/amcharts4/charts\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\n// Applicazione\r\nimport { AdmTopActivitieLoc } from \"../\";\r\n\r\n// Chiamate ai Repository\r\nimport { BaseModuleCommunicationsConsumer } from \"../../communications/base/BaseModuleCommunicationsConsumer\";\r\nimport { ADM_BACKEND_URL } from \"../../tokens\";\r\n\r\n/**\r\n * Dichiarazione della variabile globale dayjs. L'onere di \"crearla\" è affidato all'applicazione che utilizza questa libreria, \r\n * che dovrà importare lo script globale di dayjs nella CLI\r\n */\r\n declare var dayjs: any;\r\n\r\n@Component({\r\n selector: \"topact_search\",\r\n providers: [\r\n { provide: LocalizationService, useClass: AdmTopActivitieLoc }\r\n ],\r\n templateUrl: \"./topact_search.component.html\"\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;\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 _state: BaseModuleCommunicationsConsumer,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n @Inject(ADM_BACKEND_URL) private backend: string) {\r\n\r\n this._state.handleNavigation(this.route.snapshot.data[\"title\"], false);\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<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/adm/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 //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(this.backend + Repository[\"POST_Adm_GetTopActivities\"], this.searchView, false);\r\n }\r\n else {\r\n this.searchView = new TopActivitiesDataView();\r\n\r\n //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata\r\n setTimeout(() => 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, update: boolean = false, searchViewOverride: TopActivitiesDataView = null) {\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(this.backend + Repository[\"POST_Adm_GetTopActivities\"], searchViewOverride ?? this.searchView, update);\r\n }\r\n\r\n POSTGetItems(url: string, data: TopActivitiesDataView, update: boolean) {\r\n\r\n this.http.post<TopActivitiesDataView>(url, data).subscribe(async (t) => {\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 = t;\r\n this.localStorage.setItem(\"HotSearchTopAct\", this.searchView).subscribe();\r\n }\r\n var dirinfos = await this.getDirectorInfos();\r\n this.searchView.searchinprogress = false;\r\n this.reviewBindings(update, t, dirinfos);\r\n });\r\n }\r\n\r\n getDirectorInfos(): Promise<DirectorInfos> {\r\n return this.http.get<DirectorInfos>(this.backend + Repository[\"GET_Adm_GetInfos\"]).pipe(map(res => { return res; })).toPromise();\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 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;\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(\"Maximum Threads\")));\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(\"Maximum Threads\")));\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) {\r\n this.ChartInstance = chart;\r\n chart.Chart.events.on(\"ready\", () => {\r\n (<am4charts.XYChart>chart.Chart).xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));\r\n (<am4charts.XYChart>chart.Chart).yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));\r\n setTimeout(() => {\r\n (<am4charts.XYChart>chart.Chart).xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));\r\n (<am4charts.XYChart>chart.Chart).yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));\r\n\r\n // 500 millisecondi è più o meno il tempo di prima animazione del grafico. Finito questo si resetta lo zoom\r\n }, 500);\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 {{'Top Activities' | localize : lc}}\r\n <span *ngIf=\"DirInfos\">&nbsp;-&nbsp;{{'' + DirInfos.cpus + ' ' + ('CPUs' | localize : lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}}</span>&nbsp;\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]=\"'From' | 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]=\"'To' | localize : lc\"></form-datetime>\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 {{'Update every' | localize : lc}}&nbsp;<input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"secs\" />&nbsp;{{'second/s' | 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\" (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>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView\" class=\"row\">\r\n <div class=\"col-md-12 app-no-padding\">\r\n <!--<h5 class=\"app-margin-top-5\">{{'Active Sessions' | localize : lc}}</h5>-->\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 [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>{{'Top Nodes' | localize : lc}}</h5>\r\n <es-table [(ngModel)]=\"TopNodes\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Node' | localize : lc}}</th>\r\n <th>{{'Node Description' | localize : lc}}</th>\r\n <th class=\"app-col-min\">{{'Activity' | localize : lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Node Type' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><strong>{{node.profnodeid}}</strong></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 </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <h5>{{'Top Sessions' | 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>{{'User' | localize : lc}}</th>\r\n <th>{{'Tenant' | localize : lc}}</th>\r\n <th>{{'Process' | localize : lc}}</th>\r\n <th>{{'Activity' | 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><strong>{{session.sid}}</strong></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>","// Angular\r\nimport { Component, Inject, ViewChild } from \"@angular/core\";\r\nimport { HttpParams } from \"@angular/common/http\";\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 { MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { EsTableOperationDefinition } from \"@esfaenza/es-table\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Classi\r\nimport { KeyValue, ProcessesView, Repository } from \"../../models\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { ModalDirective } from \"ngx-bootstrap/modal\";\r\n\r\n// Applicazione\r\nimport { AdmWrkLoc } from \"../\";\r\nimport { BaseModuleCommunicationsConsumer } from \"../../communications/base/BaseModuleCommunicationsConsumer\";\r\nimport { ADM_BACKEND_URL } from \"../../tokens\";\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})\r\nexport class AdmWrkComponent {\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 constructor(\r\n private utiExts: UtilityService, \r\n private msgExts: MessageService, \r\n public lc: LocalizationService, \r\n private localStorage: PreferencesService, \r\n private _state: BaseModuleCommunicationsConsumer, \r\n private http: HTTPService, \r\n private route: ActivatedRoute, \r\n private location: Location, \r\n @Inject(ADM_BACKEND_URL) private backend: string) {\r\n\r\n this._state.handleNavigation(this.route.snapshot.data[\"title\"], false);\r\n\r\n this.DynamicOps = [\r\n new EsTableOperationDefinition(\"trace_on\", this.lc.loc(\"Activate Process Tracing\"), \"fa fa-circle text-danger\", \"\", \"trace_enabled\", \"N\"),\r\n new EsTableOperationDefinition(\"trace_off\", this.lc.loc(\"Deactivate Process Tracing\"), \"fa fa-circle text-success\", \"\", \"trace_enabled\", \"Y\"),\r\n new EsTableOperationDefinition(\"kill\", this.lc.loc(\"Kill Process\"), \"fa fa-ban text-danger\"),\r\n new EsTableOperationDefinition(\"change_cg\", this.lc.loc(\"Change Consumer Group\"), \"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 async Init(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/adm/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 //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.POSTGetProcesses(this.backend + Repository[\"POST_Adm_GetServerWorkers\"], this.searchView);\r\n }\r\n else {\r\n this.searchView = new ProcessesView();\r\n\r\n //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata\r\n setTimeout(() => 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.POSTGetProcesses(this.backend + Repository[\"POST_Adm_GetServerWorkers\"], this.searchView);\r\n }\r\n\r\n POSTGetProcesses(url: string, data: ProcessesView) {\r\n this.http.post<ProcessesView>(url, data).subscribe(t => {\r\n this.searchView = t;\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotProcessato\", this.searchView).subscribe();\r\n });\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 toggleTracing(process: any, tracing: boolean) {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", process.properties[\"inst_id\"])\r\n .set(\"sid\", process.properties[\"sid\"])\r\n .set(\"serial\", process.properties[\"serial\"])\r\n .set(\"enable\", tracing.toString());\r\n this.http.get<string>(this.backend + Repository[\"GET_Adm_SetProcessTracing\"], pars).subscribe(t => {\r\n this.msgExts.manageStringResponse(t, \"\", this.lc.loc(\"Errors toggling Process Tracing\"), () => this.sendSearch());\r\n });\r\n }\r\n\r\n killProcess(process: any) {\r\n this.msgExts.simpleWarningWithChoice(\r\n this.lc.loc(\"Confirm Process Kill\"),\r\n this.lc.loc(\"Are you sure you wish to kill the selected process? The associated user will be disconnected\"),\r\n () => {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", process.properties[\"inst_id\"])\r\n .set(\"sid\", process.properties[\"sid\"])\r\n .set(\"serial\", process.properties[\"serial\"]);\r\n this.http.get<string>(this.backend + Repository[\"GET_Adm_KillProcess\"], pars).subscribe(t => {\r\n this.msgExts.manageStringResponse(t, this.lc.loc(\"Process succesfully killed\"), this.lc.loc(\"Errors killing the Process\"), () => this.sendSearch());\r\n });\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 loadCgDictionaries() {\r\n this.http.get<KeyValue[]>(this.backend + Repository[\"GET_Adm_GetConsumerGroups\"]).subscribe(t => this.CGs = t);\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 doChangeCg() {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", this.ProcessOnEdit.properties[\"inst_id\"])\r\n .set(\"sid\", this.ProcessOnEdit.properties[\"sid\"])\r\n .set(\"serial\", this.ProcessOnEdit.properties[\"serial\"])\r\n .set(\"consumer_group\", this.newCg);\r\n this.http.get<string>(this.backend + Repository[\"GET_Adm_ChangeProcessConsumerGroup\"], pars).subscribe(t => {\r\n this.msgExts.manageStringResponse(t, this.lc.loc(\"Consumer Group succesfully changed\"), this.lc.loc(\"Errors changing Consumer Group\"), () => this.sendSearch());\r\n });\r\n\r\n return true;\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\">{{'Search Application Processes' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12\">\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-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertenant\" name=\"filterTenant\" [Placeholder]=\"'Tenant' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filterUser\" [Placeholder]=\"'User' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterstate\" name=\"filterState\" [Placeholder]=\"'State' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper app-padding-top-10\">\r\n <form-checkbox [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\r\n <span class=\"app-pointer\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Global' | localize : lc}}</span>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress\" 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 </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Processes' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [DynamicOperations]=\"DynamicOps\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" (onDynamicOperation)=\"onOperation($event)\">\r\n <span class=\"app-nowrap\" *td=\"'full_wait_stack'; let value\">\r\n <span class=\"fa fa-list app-pointer\" (click)=\"valueToShow = value; dlgValue.show();\"></span>&nbsp;\r\n {{value.length > 70 ? value.substr(0, 67) + '...' : value}}\r\n </span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-15\">\r\n <button class=\"btn btn-secondary pull-left\" type=\"button\" (click)=\"back()\">{{'Back' | localize : lc}}</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgChangeCg=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-lg\" cdkDrag>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\" cdkDragHandle>\r\n <h4 class=\"modal-title pull-left\">{{'Change Consumer Group' | localize : lc}}</h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgChangeCg.hide()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n <form novalidate #cgFrom=\"ngForm\" (ngSubmit)=\"cgFrom.valid && doChangeCg() && dlgChangeCg.hide()\">\r\n <div class=\"modal-body\">\r\n <form-select [Label]=\"'New Consumer Group' | localize : lc\" [(ngModel)]=\"newCg\" name=\"newcg\" [Source]=\"CGs\" required [Last]=\"true\"></form-select>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-5\" (click)=\"dlgChangeCg.hide()\">{{'Close' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">{{'Confirm' | localize : lc}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<div bsModal #dlgValue=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-xl\" app-draggable=\".modal-header\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title pull-left\">\r\n Full Wait Stack\r\n </h5>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgValue.hide()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body app-padidng-bottom-20 app-padding-top-20\">\r\n <span class=\"app-wrap\">\r\n {{valueToShow}}\r\n </span>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgValue.hide()\">Chiudi</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { Component, Inject } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Classi\r\nimport { KeyValue, AuditsView, Repository } from \"../../models\";\r\n\r\n// Applicazione\r\nimport { AdmAuditLoc } from \"../\";\r\n\r\n// Chiamate ai Repository\r\nimport { BaseModuleCommunicationsConsumer } from \"../../communications/base/BaseModuleCommunicationsConsumer\";\r\nimport { ADM_BACKEND_URL } from \"../../tokens\";\r\n\r\n/**\r\n * Dichiarazione della variabile globale dayjs. L'onere di \"crearla\" è affidato all'applicazione che utilizza questa libreria, \r\n * che dovrà importare lo script globale di dayjs nella CLI\r\n */\r\n declare var dayjs: any;\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})\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 constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private _state: BaseModuleCommunicationsConsumer,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n @Inject(ADM_BACKEND_URL) private backend: string) {\r\n\r\n this._state.handleNavigation(this.route.snapshot.data[\"title\"], false);\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(\"REST Call\") },\r\n { id: \"U\", description: this.lc.loc(\"Update\") },\r\n { id: \"D\", description: this.lc.loc(\"Delete\") }\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 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/adm/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\r\n this.POSTGetProcesses(this.backend + Repository[\"POST_Adm_GetServerAudits\"], 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\r\n //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata\r\n setTimeout(() => 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.backend + Repository[\"POST_Adm_GetServerAudits\"], this.searchView);\r\n }\r\n\r\n POSTGetProcesses(url: string, data: AuditsView) {\r\n this.http.post<AuditsView>(url, data).subscribe(t => {\r\n this.searchView = t;\r\n this.searchInProgress = false;\r\n this.localStorage.setItem(\"HotAudittato\", this.searchView).subscribe();\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\">{{'Search Application Audits' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'User' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Action' | localize : lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'HTTP Method' | localize : lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Arguments' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'Object ID' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Object Type' | localize : lc\"></form-input>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Audits' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [UseCustomCells]=\"true\"\r\n [HiddenColumns] =\"true\" [ColumnsOrdering]=\"true\" [OrderByColumn]=\"true\"\r\n [MultipleOrderingDirectives]=\"true\"\r\n (onSearchRequest)=\"sendSearch($event);\">\r\n <ng-template #header>\r\n <th es-th=\"Timestamp\" class=\"app-nowrap\">{{'Date' | localize : lc}}</th>\r\n <th es-th=\"User\" class=\"app-nowrap\">{{'User' | localize : lc}}</th>\r\n <th es-th=\"Action\" class=\"app-nowrap\">{{'Action' | localize : lc}}</th>\r\n <th es-th=\"HttpMethod\" class=\"app-nowrap\">{{'HTTP Method' | localize : lc}}</th>\r\n <th es-th=\"Route\" class=\"app-nowrap\">{{'Route' | localize : lc}}</th>\r\n <th es-th=\"Args\" class=\"app-nowrap\">{{'Arguments' | localize : lc}}</th>\r\n <th es-th=\"HttpResponse\" class=\"app-nowrap\">{{'HTTP Response' | localize : lc}}</th>\r\n <th es-th=\"NonStdErrorMessage\" class=\"app-nowrap\">{{'Application Error Code' | localize : lc}}</th>\r\n <th es-th=\"ObjectType\" class=\"app-nowrap\">{{'Object Type' | localize : lc}}</th>\r\n <th es-th=\"ObjectId\" class=\"app-nowrap\">{{'Object ID' | localize : lc}}</th>\r\n <th es-th=\"ObjectData\" class=\"app-nowrap\">{{'Object Data' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-pro>\r\n <td es-td=\"Timestamp\" class=\"app-nowrap\"><strong>{{pro.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong></td>\r\n <td es-td=\"User\" class=\"app-nowrap\">{{pro.user}}</td>\r\n <td es-td=\"Action\" class=\"app-nowrap\">{{pro.action}}</td>\r\n <td es-td=\"HttpMethod\" class=\"app-nowrap\">{{pro.httpmethod}}</td>\r\n <td es-td=\"Route\" class=\"app-nowrap\">{{pro.route}}</td>\r\n <td es-td=\"Args\" class=\"app-nowrap\">{{pro.args}}</td>\r\n <td es-td=\"HttpResponse\" class=\"app-nowrap\">{{pro.httpresponse}}</td>\r\n <td es-td=\"NonStdErrorMessage\" class=\"app-nowrap\">{{pro.mdmerrorcode}}</td>\r\n <td es-td=\"ObjectType\" class=\"app-nowrap\">{{pro.objecttype}}</td>\r\n <td es-td=\"ObjectId\" class=\"app-nowrap\">{{pro.objectid}}</td>\r\n <td es-td=\"ObjectData\" class=\"app-nowrap\">{{pro.objectdata}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { Component, Inject } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { ExportService } from \"@esfaenza/extensions\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Classi\r\nimport { LocksView, Repository } from \"../../models\";\r\n\r\n// Applicazione\r\nimport { AdmEnqLoc } from \"../\";\r\n\r\n// Chiamate ai Repository\r\nimport { BaseModuleCommunicationsConsumer } from \"../../communications/base/BaseModuleCommunicationsConsumer\";\r\nimport { ADM_BACKEND_URL } from \"../../tokens\";\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})\r\nexport class AdmEnqComponent {\r\n public locksView: LocksView = new LocksView();\r\n public storageSub: any;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n public expExts: ExportService,\r\n private _state: BaseModuleCommunicationsConsumer,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n @Inject(ADM_BACKEND_URL) private backend: string) {\r\n\r\n this._state.handleNavigation(this.route.snapshot.data[\"title\"], false);\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 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/adm/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 //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.locksView = HotPotato;\r\n\r\n this.POSTGetProcesses(this.backend + Repository[\"POST_Adm_GetServerLocks\"], this.locksView);\r\n }\r\n else {\r\n this.locksView = new LocksView();\r\n\r\n //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata\r\n setTimeout(() => 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.backend + Repository[\"POST_Adm_GetServerLocks\"], this.locksView);\r\n }\r\n\r\n POSTGetProcesses(url: string, data: LocksView) {\r\n this.http.post<LocksView>(url, data).subscribe(t => {\r\n this.locksView = t;\r\n this.localStorage.setItem(\"HotEnqueue\", this.locksView).subscribe();\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\">{{'Search Application Locks' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <form role=\"form\">\r\n <div class=\"col-md-12 row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filtersid\" name=\"filtersid\" [Placeholder]=\"'SID'\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterlock\" name=\"filterlock\" [Placeholder]=\"'Name' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper app-padding-top-10\">\r\n <form-checkbox [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\r\n <span class=\"app-pointer\" (click)=\"locksView.filterglobal = !locksView.filterglobal\">{{'Global' | localize : lc}}</span>\r\n </div>\r\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>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!locksView\"><em>{{'Loading Application Locks' | localize : lc}}...</em></p>\r\n <div *ngIf=\"locksView\">\r\n <es-table [(ngModel)]=\"locksView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"></es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { HttpParams } from \"@angular/common/http\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { Component, Inject } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { DateService } from \"@esfaenza/extensions\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { BaseChartComponent } from \"@esfaenza/es-charts\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Classi\r\nimport { Metric, MetricChart, MetricsView, KeyValue, Repository} from \"../../models\";\r\n\r\n// Applicazione\r\nimport { AdmMetricsLoc } from \"../\";\r\n\r\n// Chiamate ai Repository\r\nimport { BaseModuleCommunicationsConsumer } from \"../../communications/base/BaseModuleCommunicationsConsumer\";\r\nimport { ADM_BACKEND_URL } from \"../../tokens\";\r\n\r\n/**\r\n * Dichiarazione della variabile globale dayjs. L'onere di \"crearla\" è affidato all'applicazione che utilizza questa libreria, \r\n * che dovrà importare lo script globale di dayjs nella CLI\r\n */\r\n declare var dayjs: any;\r\n\r\n@Component({\r\n selector: \"metrics_search\",\r\n providers: [\r\n { provide: LocalizationService, useClass: AdmMetricsLoc }\r\n ],\r\n templateUrl: \"./metrics_search.component.html\"\r\n})\r\nexport class AdmMetricsComponent {\r\n\r\n public Metrics: Metric[];\r\n private MetricsChartCache: { [name: string]: { chart: BaseChartComponent, 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\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 _state: BaseModuleCommunicationsConsumer,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n @Inject(ADM_BACKEND_URL) private backend: string) {\r\n\r\n this._state.handleNavigation(this.route.snapshot.data[\"title\"], false);\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 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 var pars = new HttpParams().set(\"from\", this.searchView.filterfrom || \"\").set(\"to\", this.searchView.filterto || \"\")\r\n this.http.get<Metric[]>(this.backend + Repository[\"GET_Adm_GetMetrics\"], pars).subscribe(t => this.Metrics = t);\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/adm/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 //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(this.backend + Repository[\"POST_Adm_GetMetrics\"], this.searchView, false);\r\n }\r\n else {\r\n this.searchView = new MetricsView();\r\n\r\n //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata\r\n setTimeout(() => 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(this.backend + Repository[\"POST_Adm_GetMetrics\"], 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 POSTGetItems(url: string, data: MetricsView, update: boolean) {\r\n data.filterrealtime = update ? data.filterrealtime : !(!!data.filterfrom || !!data.filterto);\r\n\r\n this.http.post<MetricsView>(url, data).subscribe(async (t) => {\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 = t;\r\n this.searchView.items.forEach(m => {\r\n if (!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 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 t.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\r\n instanceSelected() {\r\n if (!this.selectedInstance)\r\n return;\r\n\r\n this.metricsToShow = this.searchView.items.filter(t => t.instance == this.selectedInstance);\r\n }\r\n\r\n linkChartToMetric(metric: Metric, metricChart: MetricChart, chartComp: BaseChartComponent) {\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;\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\">\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 {{'System Metrics' | localize : lc}}\r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding 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]=\"'From' | localize : lc\" (inputChange)=\"dateChanged();\"></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]=\"'To' | localize : lc\" (inputChange)=\"dateChanged();\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtersid\" name=\"filtersid\" [Placeholder]=\"'Session ID' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterserial\" name=\"filterserial\" [Placeholder]=\"'Session Serial' | localize : lc\"></form-input>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-12 app-filter-wrapper\">\r\n <form-multiselect [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtermetrics\" [IdField]=\"'name'\" [Display]=\"'{name}'\" name=\"filtermetrics\" [SelectLabel]=\"'Filter Metrics...' | localize : lc\" [Source]=\"Metrics\"></form-multiselect>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\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>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </form>\r\n <div class=\"app-col-12 app-margin-top-15\">\r\n <div class=\"pull-right\">\r\n {{'Update every' | localize : lc}}&nbsp;<input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" />&nbsp;{{'second/s' | 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\" (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 <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView && instanceRequired\">\r\n <form-select [Validation]=\"false\" [Label]=\"'Metrics Instance' | localize : lc\" [(ngModel)]=\"selectedInstance\" name=\"instance\" [Source]=\"Instances\" (inputChange)=\"instanceSelected()\" required></form-select>\r\n </div>\r\n <div *ngIf=\"searchView && metricsToShow && metricsToShow.length > 0\">\r\n <div class=\"col-md-12 app-padding-right-0 row app-margin-top-15\">\r\n <ng-container *ngFor=\"let metric of metricsToShow; let i = index\">\r\n <div class=\"col-md-4 app-no-padding app-simple-border\" *ngFor=\"let chart of metric.values; let z = index\">\r\n <div style=\"width: 100%; height: 260px\">\r\n <es-line-chart [XTitle]=\"chart.xtitle\"\r\n [YTitle]=\"chart.ytitle\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"chart\"\r\n [Animations]=\"true\"\r\n [Legend]=\"chart.legend\"\r\n name=\"metric_{{i}}_chart_{{z}}\"\r\n (chartLoaded)=\"linkChartToMetric(metric, chart, $event);\"\r\n [DataGroupingThreshold]=\"99999999\">\r\n </es-line-chart>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \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>","// Angular\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { LOCALE_ID, NgModule } from \"@angular/core\";\nimport { RouterModule } from \"@angular/router\";\n\n// Material\nimport { MatIconModule } from '@angular/material/icon'\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { DayJsDateAdapter, MatDayjsDateModule } from \"@esfaenza/material-dayjs-adapter\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from \"@angular/material/core\";\n\n// Libs\nimport { NgxMatDatetimePickerModule } from '@angular-material-components/datetime-picker';\nimport { ModalModule } from \"ngx-bootstrap/modal\";\nimport { CsvModule } from \"@ctrl/ngx-csv\";\nimport { BsDropdownModule } from \"ngx-bootstrap/dropdown\";\nimport { TooltipModule } from \"ngx-bootstrap/tooltip\";\n\n// Esfaenza\nimport { EsTableModule } from \"@esfaenza/es-table\";\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\nimport { EsChartsModule } from \"@esfaenza/es-charts\";\nimport { EsGertrudeModule } from \"@esfaenza/gertrude\";\nimport { LocalizationModule } from \"@esfaenza/localizations\";\nimport { ContextMenuModule } from \"@esfaenza/ngx-contextmenu\";\n\n// Components\nimport {\n AdmWrkComponent,\n AdmProfilerComponent,\n AdmTopActivitiesComponent,\n AdmLogsComponent,\n AdmAuditsComponent,\n AdmEnqComponent,\n AdmMetricsComponent\n} from \"./components\";\n\ndeclare var myconfig;\n\nexport const routeConfig = [\n {\n path: \"\", children: [\n { path: \"serverworkers\", component: AdmWrkComponent, data: { title: \"Search Application Processes\", internalNavigation: false } },\n { path: \"profiler\", component: AdmProfilerComponent, data: { title: \"Server Profiler\", internalNavigation: false } },\n { path: \"topact\", component: AdmTopActivitiesComponent, data: { title: \"Top Activities\", internalNavigation: false } },\n { path: \"metrics\", component: AdmMetricsComponent, data: { title: \"System Metrics\", internalNavigation: false } },\n { path: \"serverlogs\", component: AdmLogsComponent, data: { title: \"Server Logs\", internalNavigation: false } },\n { path: \"serveraudits\", component: AdmAuditsComponent, data: { title: \"Search Application Audits\", internalNavigation: false } },\n { path: \"serverenqueues\", component: AdmEnqComponent, data: { title: \"Search Application Locks\", internalNavigation: false } },\n ]\n }\n];\n\nconst MODULES = [\n // Base\n CommonModule,\n FormsModule,\n\n // Material\n MatDatepickerModule,\n MatDayjsDateModule,\n MatIconModule,\n MatInputModule,\n\n // Bootstrap\n ModalModule,\n TooltipModule,\n BsDropdownModule,\n CsvModule,\n\n // Esfaenza e componenti visuali\n ContextMenuModule,\n LocalizationModule,\n EsTableModule,\n FormsAndValidationsModule,\n EsGertrudeModule,\n EsChartsModule,\n EsTableModule,\n FormsAndValidationsModule,\n EsChartsModule,\n FormsAndValidationsModule,\n EsChartsModule,\n NgxMatDatetimePickerModule,\n\n RouterModule.forChild(routeConfig),\n];\n\nconst COMPONENTS = [\n AdmWrkComponent,\n AdmProfilerComponent,\n AdmTopActivitiesComponent,\n AdmLogsComponent,\n AdmAuditsComponent,\n AdmEnqComponent,\n AdmMetricsComponent\n];\n\n//Il formato in Display è sempre quello italiano quindi mi faccio pochi problemi di localizzazione e imposto quello\nconst formats = {\n parse: { dateInput: 'DD/MM/YYYY' },\n display: {\n dateInput: 'DD/MM/YYYY',\n monthYearLabel: 'MM YYYY',\n dateA11yLabel: 'DD/MM/YYYY',\n monthYearA11yLabel: 'MM YYYY',\n }\n}\n\n@NgModule({\n imports: [...MODULES],\n declarations: [...COMPONENTS],\n providers: [\n { provide: LOCALE_ID, useValue: myconfig.SMALL_LOCALE },\n { provide: MAT_DATE_LOCALE, useValue: myconfig.LOCALE },\n { provide: MAT_DATE_FORMATS, useValue: formats },\n { provide: DateAdapter, useClass: DayJsDateAdapter, deps: [MAT_DATE_LOCALE] }\n ]\n})\nexport class AdmModule { }","/*\n * Public API Surface of admin-module\n */\n\nexport * from './lib/admin-module.module';\nexport * from './lib/tokens';\nexport * from './lib/communications/base/BaseModuleCommunicationsConsumer';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAEa,UAAU,GAA2B,IAAI,cAAc,CAAS,YAAY,EAAE;MAC9E,eAAe,GAA2B,IAAI,cAAc,CAAS,iBAAiB;;MCGtF,gCAAgC,mBAAmB;IAC5D,YAAgC,UAAkB;QAC9C,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAClE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QACpD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QAClD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC1D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QACnD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC9D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QAC1D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,sBAAsB,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACnE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,sBAAsB,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACnE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,sBAAsB,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,0BAA0B,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAC7E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC;KACzE;;oHAtBQ,uBAAuB,kBACZ,UAAU;wHADrB,uBAAuB;2FAAvB,uBAAuB;kBADnC,UAAU;;;8BAEM,MAAM;+BAAC,UAAU;;;;MCDrB,2BAA2B,mBAAmB;IACvD,YAAgC,UAAkB;QAC9C,KAAK,CAAC,UAAU,CAAC,CAAC;QAClB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACxD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAEhE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC9D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAC/C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAEhD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAE7C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAC/C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC3D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;KAExC;;+GAxBQ,kBAAkB,kBACP,UAAU;mHADrB,kBAAkB;2FAAlB,kBAAkB;kBAD9B,UAAU;;;8BAEM,MAAM;+BAAC,UAAU;;;;MCDrB,kBAAkB,mBAAmB;IAC9C,YAAgC,UAAkB;QAC9C,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,oCAAoC,EAAE,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACzG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,gCAAgC,EAAE,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACvG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,EAAE,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAC7E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAEvE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,8BAA8B,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACtF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAC7C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iCAAiC,EAAE,CAAC,gDAAgD,CAAC,CAAC,CAAC;QAC3G,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,+BAA+B,EAAE,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACxF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,0BAA0B,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAC7E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,4BAA4B,EAAE,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAClF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC1D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,4BAA4B,EAAE,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC3F,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,4BAA4B,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACpF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,sBAAsB,EAAE,CAAC,oCAAoC,CAAC,CAAC,CAAC;QACpF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,8FAA8F,EAAE,CAAC,4FAA4F,CAAC,CAAC,CAAC;KACvN;;sGAvBQ,SAAS,kBACE,UAAU;0GADrB,SAAS;2FAAT,SAAS;kBADrB,UAAU;;;8BAEM,MAAM;+BAAC,UAAU;;;;MCDrB,oBAAoB,mBAAmB;IAChD,YAAgC,UAAkB;QAC9C,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,2BAA2B,EAAE,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAChF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QACpD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QACjD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QACpD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QACjD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,4BAA4B,EAAE,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC1F,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QACxD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,wBAAwB,EAAE,CAAC,2BAA2B,CAAC,CAAC,CAAC;KAChF;;wGAnBQ,WAAW,kBACA,UAAU;4GADrB,WAAW;2FAAX,WAAW;kBADvB,UAAU;;;8BAEM,MAAM;+BAAC,UAAU;;;;MCDrB,kBAAkB,mBAAmB;IAC9C,YAAgC,UAAkB;QAC9C,KAAK,CAAC,UAAU,CAAC,CAAC;QAClB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,0BAA0B,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAC9E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,2BAA2B,EAAE,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAChF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;KAC9C;;sGAPQ,SAAS,kBACE,UAAU;0GADrB,SAAS;2FAAT,SAAS;kBADrB,UAAU;;;8BAEM,MAAM;+BAAC,UAAU;;;;MCDrB,sBAAsB,mBAAmB;IAClD,YAAgC,UAAkB;QAC9C,KAAK,CAAC,UAAU,CAAC,CAAC;QAClB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC/D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACjE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAC/C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;KACjE;;0GAXQ,aAAa,kBACF,UAAU;8GADrB,aAAa;2FAAb,aAAa;kBADzB,UAAU;;;8BAEM,MAAM;+BAAC,UAAU;;;;MCPrB,QAAQ;IACjB,YAAmB,EAAU,EAAS,WAAmB;QAAtC,OAAE,GAAF,EAAE,CAAQ;QAAS,gBAAW,GAAX,WAAW,CAAQ;KAAK;;;ACC3D,MAAM,MAAM,GAAW,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM;;ACFxE,MAAM,UAAU,GAAG;IACtB,kCAAkC,EAAE,qCAAqC;IACzE,sBAAsB,EAAE,yBAAyB;IACjD,yBAAyB,EAAE,kCAAkC;IAC7D,gBAAgB,EAAE,mBAAmB;IACrC,kBAAkB,EAAE,qBAAqB;IACzC,mBAAmB,EAAE,qBAAqB;IAC1C,6BAA6B,EAAE,+BAA+B;IAC9D,wBAAwB,EAAE,0BAA0B;IACpD,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,wBAAwB;IAC/C,yBAAyB,EAAE,2BAA2B;IACtD,yBAAyB,EAAE,2BAA2B;IACtD,uBAAuB,EAAE,0BAA0B;IACnD,iCAAiC,EAAE,oCAAoC;IACvE,mBAAmB,EAAE,sBAAsB;IAC3C,yBAAyB,EAAE,4BAA4B;IACvD,mBAAmB,EAAE,sBAAsB;IAC3C,kBAAkB,EAAE,qBAAqB;CAC5C;;ACnBM,MAAM,QAAQ,GAAG;IACpB,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IACtC,aAAa,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE;IACjE,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE;IAC/D,cAAc,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,oBAAoB,EAAE;IAC1E,aAAa,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE;IACjE,aAAa,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE;IACjE,mBAAmB,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,uBAAuB,EAAE;IACvF,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;IAClD,YAAY,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE;IACvE,gBAAgB,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,iBAAiB,EAAE;CAC9E;;ACXM,MAAM,oBAAoB,GAAG;IAChC,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE;IAC1D,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IACtC,aAAa,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE;IACjE,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE;IAClD,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;IAC7C,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE;IAC3D,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE;IAC3D,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE;IAC7D,eAAe,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB,EAAE;IACzE,YAAY,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE;IAC/D,kBAAkB,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,kBAAkB,EAAE;IAChF,iBAAiB,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,eAAe,EAAE;IAC3E,sBAAsB,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,mBAAmB,EAAE;IACzF,sBAAsB,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,mBAAmB,EAAE;IACzF,sBAAsB,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,qBAAqB,EAAE;IAC3F,0BAA0B,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE,OAAO,EAAE,yBAAyB,EAAE;IACvG,uBAAuB,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,qBAAqB,EAAE;CAChG;;MChBY,sBAAsB,SAAsB;IACrD,gBAAgB,KAAK,EAAE,CAAC,EAAE;;;MCEjB,gBAAgB;CAmC5B;AAjCkB;IADd,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;IACrD,aAAa;kDAAkB;AAEjB;IADd,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9C,aAAa;4CAAY;AAEX;IADd,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;IACvD,aAAa;qDAAqB;AAEpB;IADd,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IACjD,aAAa;+CAAe;AAEd;IADd,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;IAChD,aAAa;8CAAc;AAEb;IADd,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;IACrD,aAAa;kDAAkB;AAEjB;IADd,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;IACrD,aAAa;iDAAiB;AAEhB;IADd,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;IACrD,aAAa;iDAAiB;AAEhB;IADd,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;IACzD,aAAa;6DAA6B;AAE5B;IADd,MAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;IACvD,aAAa;oDAAoB;AAEnB;IADd,MAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7D,aAAa;wDAAwB;AAEvB;IADd,MAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5D,aAAa;uDAAuB;AAEtB;IADd,MAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;IACjE,aAAa;sDAAsB;AAErB;IADd,MAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;IACjE,aAAa;qDAAqB;AAEpB;IADd,MAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;IACjE,aAAa;qDAAqB;AAEpB;IADd,MAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;IACrE,aAAa;iEAAiC;AAEhC;IADd,MAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;IAClE,aAAa;wDAAwB;;MCpC7B,8BAA8B,SAA2B;IAClE,gBAAgB,KAAK,EAAE,CAAC,EAAE;;;MCJjB,OAAO;;;MCAP,UAAU;;;MCAV,aAAa;;;MCEb,WAAW;;;MCCX,8BAA8B,SAAsB;IAC7D,gBAAgB,KAAK,EAAE,CAAC,EAAE;;;MCJjB,KAAK;;;MCGL,mBAAmB,SAAgB;IAC5C;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACxB;;;MCHQ,IAAI;CAqBhB;AAnBkB;IADd,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;IAClC,aAAa;gCAAY;AAEX;IADd,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3C,aAAa;yCAAqB;AAEpB;IADd,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;IACzC,aAAa;sCAAkB;AAEjB;IADd,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5C,aAAa;yCAAqB;AAEpB;IADd,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3C,aAAa;gCAAY;AAEX;IADd,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3C,aAAa;gCAAY;AAEX;IADd,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;IACjD,aAAa;wCAAqB;AAEpB;IADd,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;IACtC,aAAa;oCAAgB;AAEf;IADd,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9C,aAAa;uCAAmB;AAEV;IADtB,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAClE,eAAe,CAAC,IAAI,CAAC;uCAAiB;;MCtB9B,kBAAkB,SAAsB;IACjD,gBAAgB,KAAK,EAAE,CAAC,EAAE;;;MCJjB,aAAa;;;MCGb,oBAAoB,SAAiB;IAC9C,gBAAgB,KAAK,EAAE,CAAC,EAAE;;;MCFjB,oBAAoB,aAAa;;;MCAjC,MAAM;;;MCFG,gCAAgC;;;MC4BzC,oBAAoB;IAI7B,YACY,OAAsB,EACvB,EAAuB,EACtB,YAAgC,EAChC,QAAkB,EAClB,MAAwC,EACxC,IAAiB,EACjB,KAAqB,EACI,OAAe;QAPxC,YAAO,GAAP,OAAO,CAAe;QACvB,OAAE,GAAF,EAAE,CAAqB;QACtB,iBAAY,GAAZ,YAAY,CAAoB;QAChC,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAkC;QACxC,SAAI,GAAJ,IAAI,CAAa;QACjB,UAAK,GAAL,KAAK,CAAgB;QACI,YAAO,GAAP,OAAO,CAAQ;QAX7C,eAAU,GAA0B,IAAI,qBAAqB,EAAE,CAAC;QAanE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;KAC1E;IAED,QAAQ;QACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM;YACrD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;SACtC,CAAC,CAAC;KACN;IAED,IAAI,CAAC,WAAW;QACZ,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;KAC5B;IAEK,MAAM,CAAC,aAAa;;YACtB,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAwB,oBAAoB,CAAC,CAAC,SAAS,EAAE,CAAC;YACpG,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;gBACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACnB;iBAAM;gBACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;gBAClD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC;gBACrC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,SAAS,EAAE,CAAC;aACxE;SACJ;KAAA;IAED,IAAI,CAAC,SAAgC;;;QAGjC,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,+BAA+B,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SAClG;aACI;YACD,IAAI,CAAC,UAAU,GAAG,IAAI,qBAAqB,EAAE,CAAC;;YAG9C,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SACvC;KACJ;IAED,WAAW;QACP,IAAI,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KACrC;IAED,UAAU,CAAC,YAAqB,IAAI;QAChC,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC;QACxC,IAAI,SAAS;YACT,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;QAE7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,+BAA+B,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAClG;IAED,YAAY,CAAC,GAAW,EAAE,IAA2B;QACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAwB,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;YACxD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;SAChF,CAAC,CAAC;KACN;IAED,aAAa,CAAC,YAAY;QACtB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAwB,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,+BAA+B,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;YAC/G,IAAI,KAAK,GAAuB,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAC7F,YAAY,CAAC,KAAK,CAAC,CAAC;SACvB,CAAC,CAAC;KACN;;iHAnFQ,oBAAoB,kPAYjB,eAAe;qGAZlB,oBAAoB,uCALlB;QACP,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,uBAAuB,EAAE;KACtE,0BCzBL,ykMAsEM;2FD1CO,oBAAoB;kBAPhC,SAAS;+BACI,cAAc,aACb;wBACP,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,uBAAuB,EAAE;qBACtE;;;8BAeI,MAAM;+BAAC,eAAe;;;;MEvBlB,gBAAgB;IAGzB,YACY,MAAwC,EACxC,IAAiB,EACjB,KAAqB,EACI,OAAe;QAHxC,WAAM,GAAN,MAAM,CAAkC;QACxC,SAAI,GAAJ,IAAI,CAAa;QACjB,UAAK,GAAL,KAAK,CAAgB;QACI,YAAO,GAAP,OAAO,CAAQ;QAEhD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;KAC1E;IAED,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;KAC/G;;6GAdQ,gBAAgB,wHAOb,eAAe;iGAPlB,gBAAgB,gDCjB7B,2KAIM;2FDaO,gBAAgB;kBAL5B,SAAS;+BACI,UAAU;;;8BAWf,MAAM;+BAAC,eAAe;;;;MEelB,yBAAyB;IAUlC,YACW,QAAqB,EACrB,EAAuB,EACtB,YAAgC,EAChC,QAAkB,EAClB,MAAwC,EACxC,IAAiB,EACjB,KAAqB,EACI,OAAe;QAPzC,aAAQ,GAAR,QAAQ,CAAa;QACrB,OAAE,GAAF,EAAE,CAAqB;QACtB,iBAAY,GAAZ,YAAY,CAAoB;QAChC,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAkC;QACxC,SAAI,GAAJ,IAAI,CAAa;QACjB,UAAK,GAAL,KAAK,CAAgB;QACI,YAAO,GAAP,OAAO,CAAQ;QAjB7C,eAAU,GAA0B,IAAI,qBAAqB,EAAE,CAAC;QAIhE,eAAU,GAAY,KAAK,CAAC;QAC5B,YAAO,GAAW,GAAG,CAAC;QA2F7B,4BAAuB,GAAmC,EAAE,CAAC;QAC7D,4BAAuB,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,IAAI;SACnB,CAAC;QAvFE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;KAC1E;IAED,QAAQ;QACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM;YACrD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;SACtC,CAAC,CAAC;KACN;IAED,IAAI,CAAC,WAAW;QACZ,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;KAC5B;IAEK,MAAM,CAAC,aAAa;;YACtB,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAwB,iBAAiB,CAAC,CAAC,SAAS,EAAE,CAAC;YACjG,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;gBACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACnB;iBAAM;gBACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;gBAChD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC;gBACrC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,CAAC;aACrE;SACJ;KAAA;IAED,IAAI,CAAC,SAAgC;;;QAGjC,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,2BAA2B,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;SACrG;aACI;YACD,IAAI,CAAC,UAAU,GAAG,IAAI,qBAAqB,EAAE,CAAC;;YAG9C,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SACvC;KACJ;IAED,WAAW;QACP,IAAI,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KACrC;IAED,UAAU,CAAC,YAAqB,IAAI,EAAE,SAAkB,KAAK,EAAE,qBAA4C,IAAI;QAC3G,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC;QACxC,IAAI,SAAS;YACT,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;QAE7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,2BAA2B,CAAC,EAAE,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;KAC5H;IAED,YAAY,CAAC,GAAW,EAAE,IAA2B,EAAE,MAAe;QAElE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAwB,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAO,CAAC;;YAE/D,IAAI,CAAC,MAAM,EAAE;gBACT,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;aAC7E;YACD,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;SAC5C,CAAA,CAAC,CAAC;KACN;IAED,gBAAgB;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAgB,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;KACpI;IAoBD,cAAc,CAAC,MAAe,EAAE,kBAAmB,EAAE,QAAwB;QACzE,IAAI,SAAS,GAAG,CAAC,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;YAC7D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,OAAO;SACV;QAED,IAAI,MAAM,GAAgB,EAAE,CAAC;QAC7B,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,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,CAAC;gBAC1F,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACf,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aAC9C;SACJ;QAED,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,CAAC;YACvC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAExC,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,CAAC;SACtG;QAED,IAAI,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;YAC9B,IAAI,IAAI,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACnG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;gBACvC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACjC,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,CAAC;aAC/G;SACJ;aACI;YACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACjH,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,CAAC;SAC/G;KACJ;IAID,iBAAiB;QACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAChC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;QACxD,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;SACxF;;YAEG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACvC;IAMD,oBAAoB,CAAC,KAAiD;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,CAAC;QAClJ,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,CAAC;QAE1I,IAAI,gBAAgB,GAA0B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1F,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,CAAC;QAClH,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,CAAC;QAC5G,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;KACjD;IAED,aAAa,CAAC,KAAyB;QACnC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE;YACP,KAAK,CAAC,KAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACvE,KAAK,CAAC,KAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAC3F,UAAU,CAAC;gBACa,KAAK,CAAC,KAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;gBACvE,KAAK,CAAC,KAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;;aAG9F,EAAE,GAAG,CAAC,CAAC;SACX,CAAC,CAAC;KACN;;sHAhMQ,yBAAyB,gPAkBtB,eAAe;0GAlBlB,yBAAyB,wCALvB;QACP,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAE;KACjE,0BCpCL,ikRAqHM;2FD9EO,yBAAyB;kBAPrC,SAAS;+BACI,eAAe,aACd;wBACP,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAE;qBACjE;;;8BAqBI,MAAM;+BAAC,eAAe;;;;ME3BlB,eAAe;IAOxB,YACY,OAAuB,EACvB,OAAuB,EACxB,EAAuB,EACtB,YAAgC,EAChC,MAAwC,EACxC,IAAiB,EACjB,KAAqB,EACrB,QAAkB,EACO,OAAe;QARxC,YAAO,GAAP,OAAO,CAAgB;QACvB,YAAO,GAAP,OAAO,CAAgB;QACxB,OAAE,GAAF,EAAE,CAAqB;QACtB,iBAAY,GAAZ,YAAY,CAAoB;QAChC,WAAM,GAAN,MAAM,CAAkC;QACxC,SAAI,GAAJ,IAAI,CAAa;QACjB,UAAK,GAAL,KAAK,CAAgB;QACrB,aAAQ,GAAR,QAAQ,CAAU;QACO,YAAO,GAAP,OAAO,CAAQ;QAd7C,eAAU,GAAkB,IAAI,aAAa,EAAE,CAAC;QAChD,eAAU,GAAiC,EAAE,CAAC;QAE9C,gBAAW,GAAW,EAAE,CAAC;;QAuHhC,UAAK,GAAW,EAAE,CAAC;QACnB,QAAG,GAAe,EAAE,CAAC;QACrB,yBAAoB,GAAY,KAAK,CAAC;QA5GlC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QAEvE,IAAI,CAAC,UAAU,GAAG;YACd,IAAI,0BAA0B,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAE,0BAA0B,EAAE,EAAE,EAAE,eAAe,EAAE,GAAG,CAAC;YACzI,IAAI,0BAA0B,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,2BAA2B,EAAE,EAAE,EAAE,eAAe,EAAE,GAAG,CAAC;YAC7I,IAAI,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,uBAAuB,CAAC;YAC5F,IAAI,0BAA0B,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,sBAAsB,CAAC;SAC5G,CAAC;KACL;IAED,QAAQ;QACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM;YACrD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;SACtC,CAAC,CAAC;KACN;IAED,WAAW;QACP,IAAI,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KACrC;IAEK,IAAI,CAAC,aAAa;;YACpB,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAgB,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC;YACvF,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;gBACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACnB;iBAAM;gBACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;gBACvD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC;gBACrC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC;aACnE;SACJ;KAAA;IAED,IAAI,CAAC,SAAwB;;;QAGzB,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAE5B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,2BAA2B,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SAClG;aACI;YACD,IAAI,CAAC,UAAU,GAAG,IAAI,aAAa,EAAE,CAAC;;YAGtC,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SACvC;KACJ;IAED,UAAU,CAAC,YAAqB,IAAI;QAChC,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC;QACxC,IAAI,SAAS;YACT,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;QAE7B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,2BAA2B,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAClG;IAED,gBAAgB,CAAC,GAAW,EAAE,IAAmB;QAC7C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAgB,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;SAC3E,CAAC,CAAC;KACN;IAED,IAAI;QACA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACxB;IAED,WAAW,CAAC,KAAgC;QACxC,QAAQ,KAAK,CAAC,EAAE;YACZ,KAAK,UAAU;gBAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAAC,MAAM;YAC7D,KAAK,WAAW;gBAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAAC,MAAM;YAC/D,KAAK,MAAM;gBAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAAC,MAAM;YACjD,KAAK,WAAW;gBAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAAC,MAAM;SAC7D;KACJ;IAED,aAAa,CAAC,OAAY,EAAE,OAAgB;QACxC,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE;aACtB,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;aAChD,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;aACrC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aAC3C,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,2BAA2B,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;YAC3F,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,iCAAiC,CAAC,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SACrH,CAAC,CAAC;KACN;IAED,WAAW,CAAC,OAAY;QACpB,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAChC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,sBAAsB,CAAC,EACnC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,8FAA8F,CAAC,EAC3G;YACI,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE;iBACtB,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;iBAChD,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;iBACrC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;gBACrF,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;aACvJ,CAAC,CAAC;SACN,CAAC,CAAC;KACV;IAYD,eAAe,CAAC,OAAY;QACxB,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;SACpC;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KAC3B;IAED,kBAAkB;QACd,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,2BAA2B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;KAClH;IAED,aAAa;QACT,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnC,UAAU,CAAC,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA,EAAE,CAAC,CAAC;KACzC;IAED,UAAU;QACN,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE;aACtB,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;aAC3D,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;aAChD,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aACtD,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,oCAAoC,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;YACpG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,oCAAoC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,gCAAgC,CAAC,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SACnK,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;KACf;;4GAlKQ,eAAe,iRAgBZ,eAAe;gGAhBlB,eAAe,8OC9B5B,g/LA6FM,+uFDlEa,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;2FAG7D,eAAe;kBAL3B,SAAS;+BACI,SAAS,iBACJ,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;;;8BAmBjE,MAAM;+BAAC,eAAe;;yBAiHN,MAAM;sBAA1B,SAAS;uBAAC,QAAQ;gBACO,WAAW;sBAApC,SAAS;uBAAC,aAAa;;;MEjIf,kBAAkB;IAQ3B,YACW,EAAuB,EACtB,YAAgC,EAChC,MAAwC,EACxC,IAAiB,EACjB,KAAqB,EACrB,QAAkB,EACO,OAAe;QANzC,OAAE,GAAF,EAAE,CAAqB;QACtB,iBAAY,GAAZ,YAAY,CAAoB;QAChC,WAAM,GAAN,MAAM,CAAkC;QACxC,SAAI,GAAJ,IAAI,CAAa;QACjB,UAAK,GAAL,KAAK,CAAgB;QACrB,aAAQ,GAAR,QAAQ,CAAU;QACO,YAAO,GAAP,OAAO,CAAQ;QAb7C,eAAU,GAAe,IAAI,UAAU,EAAE,CAAC;QAC1C,YAAO,GAAe,EAAE,CAAC;QACzB,gBAAW,GAAe,EAAE,CAAC;QAC7B,qBAAgB,GAAY,KAAK,CAAC;QAYrC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QAEvE,IAAI,CAAC,WAAW,GAAG;YACf,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE;YACjC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE;YACnC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE;YACjC,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE;YACrC,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;SAC1C,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG;YACX,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YAClD,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC/C,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;SAClD,CAAC;KACL;IAED,QAAQ;QACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM;YACrD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;SACtC,CAAC,CAAC;KACN;IAED,WAAW;QACP,IAAI,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KACrC;IAEK,IAAI,CAAC,aAAa;;YACpB,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAa,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC;YACnF,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;gBACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACnB;iBAAM;gBACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;gBACtD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC;gBACrC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC;aAClE;SACJ;KAAA;IAED,IAAI,CAAC,SAAqB;;;QAGtB,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAE5B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,0BAA0B,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACjG;aACI;YACD,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;YACnC,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,CAAC;YAChG,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;;YAG9E,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SACvC;KACJ;IAED,UAAU,CAAC,YAAqB,IAAI;QAChC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,SAAS;YACT,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;QAE7B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,0BAA0B,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KACjG;IAED,gBAAgB,CAAC,GAAW,EAAE,IAAgB;QAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAa,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;SAC1E,CAAC,CAAC;KACN;;+GAzFQ,kBAAkB,qNAef,eAAe;mGAflB,kBAAkB,kDC/B/B,k/PA0FM,o0ED9Da,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;2FAG/D,kBAAkB;kBAL9B,SAAS;+BACI,YAAY,iBACP,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;;;8BAkBnE,MAAM;+BAAC,eAAe;;;;MEpBlB,eAAe;IAIxB,YACW,EAAuB,EACtB,YAAgC,EACjC,OAAsB,EACrB,MAAwC,EACxC,IAAiB,EACjB,KAAqB,EACrB,QAAkB,EACO,OAAe;QAPzC,OAAE,GAAF,EAAE,CAAqB;QACtB,iBAAY,GAAZ,YAAY,CAAoB;QACjC,YAAO,GAAP,OAAO,CAAe;QACrB,WAAM,GAAN,MAAM,CAAkC;QACxC,SAAI,GAAJ,IAAI,CAAa;QACjB,UAAK,GAAL,KAAK,CAAgB;QACrB,aAAQ,GAAR,QAAQ,CAAU;QACO,YAAO,GAAP,OAAO,CAAQ;QAX7C,cAAS,GAAc,IAAI,SAAS,EAAE,CAAC;QAa1C,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;KAC1E;IAED,QAAQ;QACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM;YACrD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;SACtC,CAAC,CAAC;KACN;IAED,WAAW;QACP,IAAI,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KACrC;IAEK,IAAI,CAAC,aAAa;;YACpB,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAY,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC;YAChF,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;gBACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACnB;iBAAM;gBACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,2BAA2B,CAAC,CAAC;gBACxD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC;gBACrC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC;aAChE;SACJ;KAAA;IAED,IAAI,CAAC,SAAoB;;;QAGrB,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAE3B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,yBAAyB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SAC/F;aACI;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;;YAGjC,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SACvC;KACJ;IAED,UAAU,CAAC,YAAqB,IAAI;QAChC,IAAI,SAAS;YACT,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;QAE5B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,yBAAyB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;KAC/F;IAED,gBAAgB,CAAC,GAAW,EAAE,IAAe;QACzC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAY,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;YAC5C,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;SACvE,CAAC,CAAC;KACN;;4GApEQ,eAAe,kPAYZ,eAAe;gGAZlB,eAAe,+CC1B5B,k0EAiCM,inEDVa,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;2FAG7D,eAAe;kBAL3B,SAAS;+BACI,SAAS,iBACJ,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;;;8BAejE,MAAM;+BAAC,eAAe;;;;MEFlB,mBAAmB;IAW5B,YACW,QAAqB,EACrB,EAAuB,EACtB,YAAgC,EAChC,QAAkB,EAClB,MAAwC,EACxC,IAAiB,EACjB,KAAqB,EACI,OAAe;QAPzC,aAAQ,GAAR,QAAQ,CAAa;QACrB,OAAE,GAAF,EAAE,CAAqB;QACtB,iBAAY,GAAZ,YAAY,CAAoB;QAChC,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAkC;QACxC,SAAI,GAAJ,IAAI,CAAa;QACjB,UAAK,GAAL,KAAK,CAAgB;QACI,YAAO,GAAP,OAAO,CAAQ;QAhB5C,sBAAiB,GAAoE,EAAE,CAAC;QAEzF,eAAU,GAAgB,IAAI,WAAW,EAAE,CAAC;QAG5C,eAAU,GAAY,KAAK,CAAC;QAC5B,YAAO,GAAW,GAAG,CAAC;QAoFtB,cAAS,GAAe,EAAE,CAAA;QAC1B,qBAAgB,GAAG,EAAE,CAAC;QACtB,qBAAgB,GAAY,KAAK,CAAC;QAClC,kBAAa,GAAa,EAAE,CAAC;QA3EhC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;KAC1E;IAED,QAAQ;QACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM;YACrD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;SACtC,CAAC,CAAC;KACN;IAED,IAAI,CAAC,WAAW;QACZ,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;KAC5B;IAED,WAAW;;QAEP,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,EAAE,CAAC;QAEnC,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;QACnH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAW,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;KACnH;IAEK,MAAM,CAAC,aAAa;;YACtB,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAc,kBAAkB,CAAC,CAAC,SAAS,EAAE,CAAC;YACxF,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;gBACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACnB;iBAAM;gBACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;gBACjD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC;gBACrC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,SAAS,EAAE,CAAC;aACtE;SACJ;KAAA;IAED,IAAI,CAAC,SAAsB;;;QAGvB,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;SAC/F;aACI;YACD,IAAI,CAAC,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC;;YAGpC,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SACvC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;IAED,WAAW;QACP,IAAI,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KACrC;IAED,UAAU,CAAC,YAAqB,IAAI,EAAE,SAAkB,KAAK,EAAE,qBAAkC,IAAI;QACjG,IAAG,CAAC,MAAM;YACN,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAEhC,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC;;QAExC,IAAI,CAAC,UAAU,CAAC,oBAAoB,GAAG,MAAM,CAAC;QAC9C,IAAI,SAAS;YACT,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;QAE7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,qBAAqB,CAAC,EAAE,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;KACtH;IAOD,YAAY,CAAC,GAAW,EAAE,IAAiB,EAAE,MAAe;QACxD,IAAI,CAAC,cAAc,GAAG,MAAM,GAAG,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE7F,IAAI,CAAC,IAAI,CAAC,IAAI,CAAc,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAO,CAAC;;YAErD,IAAI,CAAC,MAAM,EAAE;gBACT,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;gBAC3B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;gBACxB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC;wBAC7C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACjE,CAAC,CAAC;gBACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;gBAClD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7C,IAAI,CAAC,gBAAgB,EAAE,CAAC;iBAC3B;gBACD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;aAC9E;iBACI;;gBAED,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACb,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;wBACd,IAAI,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBACxD,IAAI,IAAI,EAAE;4BACN,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,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,EAAE,CAAC,CAAC;4BACvH,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;gCACzC,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,CAAC;gCACvG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;6BACzB;yBACJ;qBACJ,CAAC,CAAC;iBACN,CAAC,CAAC;aACN;YACD,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK,CAAC;SAC5C,CAAA,CAAC,CAAC;KACN;IAED,gBAAgB;QACZ,IAAI,CAAC,IAAI,CAAC,gBAAgB;YACtB,OAAO;QAEX,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC/F;IAED,iBAAiB,CAAC,MAAc,EAAE,WAAwB,EAAE,SAA6B;QACrF,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,CAAC;KAClM;IAEO,SAAS,CAAC,MAAc,EAAE,KAAkB;QAChD,OAAO,MAAM,CAAC,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;KACvE;IAID,iBAAiB;QACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAChC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;QACxD,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;SACxF;;YAEG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACvC;;gHApKQ,mBAAmB,gPAmBhB,eAAe;oGAnBlB,mBAAmB,yCALjB;QACP,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE;KAC5D,0BCjCL,q9NAyFM;2FDrDO,mBAAmB;kBAP/B,SAAS;+BACI,gBAAgB,aACf;wBACP,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE;qBAC5D;;;8BAsBI,MAAM;+BAAC,eAAe;;;;AEvD/B;MAyCa,WAAW,GAAG;IACzB;QACE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE;YACjB,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;YACjI,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;YACpH,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,yBAAyB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;YACtH,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;YACjH,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;YAC9G,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;YAChI,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;SAChI;KACF;EACD;AAEF,MAAM,OAAO,GAAG;;IAEd,YAAY;IACZ,WAAW;;IAGX,mBAAmB;IACnB,kBAAkB;IAClB,aAAa;IACb,cAAc;;IAGd,WAAW;IACX,aAAa;IACb,gBAAgB;IAChB,SAAS;;IAGT,iBAAiB;IACjB,kBAAkB;IAClB,aAAa;IACb,yBAAyB;IACzB,gBAAgB;IAChB,cAAc;IACd,aAAa;IACb,yBAAyB;IACzB,cAAc;IACd,yBAAyB;IACzB,cAAc;IACd,0BAA0B;IAE1B,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;CACnC,CAAC;AAEF,MAAM,UAAU,GAAG;IACjB,eAAe;IACf,oBAAoB;IACpB,yBAAyB;IACzB,gBAAgB;IAChB,kBAAkB;IAClB,eAAe;IACf,mBAAmB;CACpB,CAAC;AAEF;AACA,MAAM,OAAO,GAAG;IACd,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE;IAClC,OAAO,EAAE;QACP,SAAS,EAAE,YAAY;QACvB,cAAc,EAAE,SAAS;QACzB,aAAa,EAAE,YAAY;QAC3B,kBAAkB,EAAE,SAAS;KAC9B;CACF,CAAA;MAYY,SAAS;;sGAAT,SAAS;uGAAT,SAAS,iBA9BpB,eAAe;QACf,oBAAoB;QACpB,yBAAyB;QACzB,gBAAgB;QAChB,kBAAkB;QAClB,eAAe;QACf,mBAAmB;;QAvCnB,YAAY;QACZ,WAAW;;QAGX,mBAAmB;QACnB,kBAAkB;QAClB,aAAa;QACb,cAAc;;QAGd,WAAW;QACX,aAAa;QACb,gBAAgB;QAChB,SAAS;;QAGT,iBAAiB;QACjB,kBAAkB;QAClB,aAAa;QACb,yBAAyB;QACzB,gBAAgB;QAChB,cAAc;QACd,aAAa;QACb,yBAAyB;QACzB,cAAc;QACd,yBAAyB;QACzB,cAAc;QACd,0BAA0B;;uGAoCf,SAAS,aAPT;QACT,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAAE;QACvD,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE;QACvD,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE;QAChD,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE;KAC9E,YAPQ,CAAC,GAAG,OAAO,CAAC;2FASV,SAAS;kBAVrB,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;oBACrB,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC;oBAC7B,SAAS,EAAE;wBACT,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAAE;wBACvD,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE;wBACvD,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE;wBAChD,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE;qBAC9E;iBACF;;;ACvHD;;;;ACAA;;;;;;"}