SYMBOL INDEX (3373 symbols across 219 files) FILE: alerting/alert/alert.go type Alert (line 23) | type Alert struct method ValidateAndSetDefaults (line 76) | func (alert *Alert) ValidateAndSetDefaults() error { method GetDescription (line 93) | func (alert *Alert) GetDescription() string { method IsEnabled (line 102) | func (alert *Alert) IsEnabled() bool { method IsSendingOnResolved (line 110) | func (alert *Alert) IsSendingOnResolved() bool { method Checksum (line 119) | func (alert *Alert) Checksum() string { method ProviderOverrideAsBytes (line 131) | func (alert *Alert) ProviderOverrideAsBytes() []byte { FILE: alerting/alert/alert_test.go function TestAlert_ValidateAndSetDefaults (line 9) | func TestAlert_ValidateAndSetDefaults(t *testing.T) { function TestAlert_IsEnabled (line 111) | func TestAlert_IsEnabled(t *testing.T) { function TestAlert_GetDescription (line 123) | func TestAlert_GetDescription(t *testing.T) { function TestAlert_IsSendingOnResolved (line 132) | func TestAlert_IsSendingOnResolved(t *testing.T) { function TestAlert_Checksum (line 144) | func TestAlert_Checksum(t *testing.T) { FILE: alerting/alert/type.go type Type (line 5) | type Type constant TypeAWSSES (line 9) | TypeAWSSES Type = "aws-ses" constant TypeClickUp (line 12) | TypeClickUp Type = "clickup" constant TypeCustom (line 15) | TypeCustom Type = "custom" constant TypeDatadog (line 18) | TypeDatadog Type = "datadog" constant TypeDiscord (line 21) | TypeDiscord Type = "discord" constant TypeEmail (line 24) | TypeEmail Type = "email" constant TypeGitHub (line 27) | TypeGitHub Type = "github" constant TypeGitLab (line 30) | TypeGitLab Type = "gitlab" constant TypeGitea (line 33) | TypeGitea Type = "gitea" constant TypeGoogleChat (line 36) | TypeGoogleChat Type = "googlechat" constant TypeGotify (line 39) | TypeGotify Type = "gotify" constant TypeHomeAssistant (line 42) | TypeHomeAssistant Type = "homeassistant" constant TypeIFTTT (line 45) | TypeIFTTT Type = "ifttt" constant TypeIlert (line 48) | TypeIlert Type = "ilert" constant TypeIncidentIO (line 51) | TypeIncidentIO Type = "incident-io" constant TypeLine (line 54) | TypeLine Type = "line" constant TypeMatrix (line 57) | TypeMatrix Type = "matrix" constant TypeMattermost (line 60) | TypeMattermost Type = "mattermost" constant TypeMessagebird (line 63) | TypeMessagebird Type = "messagebird" constant TypeNewRelic (line 66) | TypeNewRelic Type = "newrelic" constant TypeN8N (line 69) | TypeN8N Type = "n8n" constant TypeNtfy (line 72) | TypeNtfy Type = "ntfy" constant TypeOpsgenie (line 75) | TypeOpsgenie Type = "opsgenie" constant TypePagerDuty (line 78) | TypePagerDuty Type = "pagerduty" constant TypePlivo (line 81) | TypePlivo Type = "plivo" constant TypePushover (line 84) | TypePushover Type = "pushover" constant TypeRocketChat (line 87) | TypeRocketChat Type = "rocketchat" constant TypeSendGrid (line 90) | TypeSendGrid Type = "sendgrid" constant TypeSignal (line 93) | TypeSignal Type = "signal" constant TypeSIGNL4 (line 96) | TypeSIGNL4 Type = "signl4" constant TypeSlack (line 99) | TypeSlack Type = "slack" constant TypeSplunk (line 102) | TypeSplunk Type = "splunk" constant TypeSquadcast (line 105) | TypeSquadcast Type = "squadcast" constant TypeTeams (line 108) | TypeTeams Type = "teams" constant TypeTeamsWorkflows (line 111) | TypeTeamsWorkflows Type = "teams-workflows" constant TypeTelegram (line 114) | TypeTelegram Type = "telegram" constant TypeTwilio (line 117) | TypeTwilio Type = "twilio" constant TypeVonage (line 120) | TypeVonage Type = "vonage" constant TypeWebex (line 123) | TypeWebex Type = "webex" constant TypeZapier (line 126) | TypeZapier Type = "zapier" constant TypeZulip (line 129) | TypeZulip Type = "zulip" FILE: alerting/config.go type Config (line 54) | type Config struct method GetAlertingProviderByAlertType (line 180) | func (config *Config) GetAlertingProviderByAlertType(alertType alert.T... method SetAlertingProviderToNil (line 199) | func (config *Config) SetAlertingProviderToNil(p provider.AlertProvide... FILE: alerting/provider/awsses/awsses.go constant CharSet (line 20) | CharSet = "UTF-8" type Config (line 29) | type Config struct method Validate (line 38) | func (cfg *Config) Validate() error { method Merge (line 50) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 69) | type AlertProvider struct method Validate (line 86) | func (provider *AlertProvider) Validate() error { method Send (line 100) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method createClient (line 136) | func (provider *AlertProvider) createClient(ctx context.Context, cfg *... method buildMessageSubjectAndBody (line 152) | func (provider *AlertProvider) buildMessageSubjectAndBody(ep *endpoint... method GetDefaultAlert (line 182) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 187) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 212) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 80) | type Override struct FILE: alerting/provider/awsses/awsses_test.go function TestAlertProvider_Validate (line 10) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_ValidateWithOverride (line 29) | func TestAlertProvider_ValidateWithOverride(t *testing.T) { function TestAlertProvider_buildRequestBody (line 69) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 120) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_getConfigWithOverrides (line 129) | func TestAlertProvider_getConfigWithOverrides(t *testing.T) { FILE: alerting/provider/clickup/clickup.go type Config (line 32) | type Config struct method Validate (line 44) | func (cfg *Config) Validate() error { method Merge (line 73) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 104) | type AlertProvider struct method Validate (line 121) | func (provider *AlertProvider) Validate() error { method Send (line 134) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method CreateTask (line 162) | func (provider *AlertProvider) CreateTask(cfg *Config, body map[string... method CloseTask (line 186) | func (provider *AlertProvider) CloseTask(cfg *Config, ep *endpoint.End... method UpdateTaskStatus (line 228) | func (provider *AlertProvider) UpdateTaskStatus(cfg *Config, taskID, s... method GetDefaultAlert (line 253) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 258) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 282) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 115) | type Override struct FILE: alerting/provider/clickup/clickup_test.go function TestAlertProvider_Validate (line 16) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_ValidateSetsDefaultAPIURL (line 50) | func TestAlertProvider_ValidateSetsDefaultAPIURL(t *testing.T) { function TestAlertProvider_Send (line 60) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 188) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 197) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/custom/custom.go type Config (line 21) | type Config struct method Validate (line 32) | func (cfg *Config) Validate() error { method Merge (line 39) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 62) | type AlertProvider struct method Validate (line 79) | func (provider *AlertProvider) Validate() error { method Send (line 83) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildHTTPRequest (line 101) | func (provider *AlertProvider) buildHTTPRequest(cfg *Config, ep *endpo... method GetAlertStatePlaceholderValue (line 152) | func (provider *AlertProvider) GetAlertStatePlaceholderValue(cfg *Conf... method GetDefaultAlert (line 166) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 171) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 196) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 73) | type Override struct FILE: alerting/provider/custom/custom_test.go function TestAlertProvider_Validate (line 15) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_Send (line 30) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildHTTPRequest (line 107) | func TestAlertProvider_buildHTTPRequest(t *testing.T) { function TestAlertProviderWithResultErrors_buildHTTPRequest (line 154) | func TestAlertProviderWithResultErrors_buildHTTPRequest(t *testing.T) { function TestAlertProvider_buildHTTPRequestWithCustomPlaceholder (line 210) | func TestAlertProvider_buildHTTPRequestWithCustomPlaceholder(t *testing.... function TestAlertProvider_buildHTTPRequestWithCustomPlaceholderAndResultConditions (line 264) | func TestAlertProvider_buildHTTPRequestWithCustomPlaceholderAndResultCon... function TestAlertProvider_GetAlertStatePlaceholderValueDefaults (line 327) | func TestAlertProvider_GetAlertStatePlaceholderValueDefaults(t *testing.... function TestAlertProvider_GetDefaultAlert (line 342) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 351) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/datadog/datadog.go type Config (line 23) | type Config struct method Validate (line 29) | func (cfg *Config) Validate() error { method Merge (line 36) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 49) | type AlertProvider struct method Validate (line 66) | func (provider *AlertProvider) Validate() error { method Send (line 80) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 124) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 181) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 186) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 211) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 60) | type Override struct type Body (line 113) | type Body struct FILE: alerting/provider/datadog/datadog_test.go function TestAlertProvider_Validate (line 15) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_Send (line 52) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 176) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { FILE: alerting/provider/discord/discord.go type Config (line 22) | type Config struct method Validate (line 28) | func (cfg *Config) Validate() error { method Merge (line 35) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 48) | type AlertProvider struct method Validate (line 64) | func (provider *AlertProvider) Validate() error { method Send (line 78) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 120) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 170) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 175) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 200) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 58) | type Override struct type Body (line 101) | type Body struct type Embed (line 106) | type Embed struct type Field (line 113) | type Field struct FILE: alerting/provider/discord/discord_test.go function TestAlertProvider_Validate (line 14) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_ValidateWithOverride (line 25) | func TestAlertProvider_ValidateWithOverride(t *testing.T) { function TestAlertProvider_Send (line 64) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildRequestBody (line 172) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 265) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 274) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/email/email.go type Config (line 24) | type Config struct method Validate (line 36) | func (cfg *Config) Validate() error { method Merge (line 49) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 74) | type AlertProvider struct method Validate (line 91) | func (provider *AlertProvider) Validate() error { method Send (line 105) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildMessageSubjectAndBody (line 143) | func (provider *AlertProvider) buildMessageSubjectAndBody(ep *endpoint... method GetDefaultAlert (line 180) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 185) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 210) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 85) | type Override struct FILE: alerting/provider/email/email_test.go function TestAlertProvider_Validate (line 10) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_ValidateWithNoCredentials (line 21) | func TestAlertProvider_ValidateWithNoCredentials(t *testing.T) { function TestAlertProvider_ValidateWithOverride (line 28) | func TestAlertProvider_ValidateWithOverride(t *testing.T) { function TestAlertProvider_buildRequestBody (line 71) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 152) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 161) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/gitea/gitea.go type Config (line 24) | type Config struct method Validate (line 38) | func (cfg *Config) Validate() error { method Merge (line 85) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 101) | type AlertProvider struct method Validate (line 109) | func (provider *AlertProvider) Validate() error { method Send (line 115) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildIssueBody (line 170) | func (provider *AlertProvider) buildIssueBody(ep *endpoint.Endpoint, a... method GetDefaultAlert (line 193) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 198) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 214) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... FILE: alerting/provider/gitea/gitea_test.go function isIgnorableTestError (line 16) | func isIgnorableTestError(err error) bool { function TestAlertProvider_Validate (line 27) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_Send (line 72) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildRequestBody (line 128) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 182) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 191) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/github/github.go type Config (line 24) | type Config struct method Validate (line 34) | func (cfg *Config) Validate() error { method Merge (line 81) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 91) | type AlertProvider struct method Validate (line 99) | func (provider *AlertProvider) Validate() error { method Send (line 105) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildIssueBody (line 143) | func (provider *AlertProvider) buildIssueBody(ep *endpoint.Endpoint, a... method GetDefaultAlert (line 166) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 171) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 187) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... FILE: alerting/provider/github/github_test.go function TestAlertProvider_Validate (line 15) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_Send (line 60) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildRequestBody (line 116) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 170) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 179) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/gitlab/gitlab.go constant DefaultSeverity (line 20) | DefaultSeverity = "critical" constant DefaultMonitoringTool (line 21) | DefaultMonitoringTool = "gatus" type Config (line 29) | type Config struct method Validate (line 38) | func (cfg *Config) Validate() error { method Merge (line 56) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 78) | type AlertProvider struct method Validate (line 86) | func (provider *AlertProvider) Validate() error { method Send (line 92) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildAlertBody (line 133) | func (provider *AlertProvider) buildAlertBody(cfg *Config, ep *endpoin... method GetDefaultAlert (line 180) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 185) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 201) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type AlertBody (line 119) | type AlertBody struct FILE: alerting/provider/gitlab/gitlab_test.go function TestAlertProvider_Validate (line 14) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_Send (line 54) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildAlertBody (line 111) | func TestAlertProvider_buildAlertBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 160) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 169) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/googlechat/googlechat.go type Config (line 22) | type Config struct method Validate (line 27) | func (cfg *Config) Validate() error { method Merge (line 34) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 44) | type AlertProvider struct method Validate (line 61) | func (provider *AlertProvider) Validate() error { method Send (line 75) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 141) | func (provider *AlertProvider) buildRequestBody(ep *endpoint.Endpoint,... method GetDefaultAlert (line 215) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 220) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 245) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 55) | type Override struct type Body (line 98) | type Body struct type Cards (line 102) | type Cards struct type Sections (line 106) | type Sections struct type Widgets (line 110) | type Widgets struct type KeyValue (line 115) | type KeyValue struct type Buttons (line 123) | type Buttons struct type TextButton (line 127) | type TextButton struct type OnClick (line 132) | type OnClick struct type OpenLink (line 136) | type OpenLink struct FILE: alerting/provider/googlechat/googlechat_test.go function TestAlertProvider_Validate (line 14) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_ValidateWithOverride (line 25) | func TestAlertProvider_ValidateWithOverride(t *testing.T) { function TestAlertProvider_Send (line 62) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildRequestBody (line 139) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 207) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 216) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/gotify/gotify.go constant DefaultPriority (line 17) | DefaultPriority = 5 type Config (line 24) | type Config struct method Validate (line 31) | func (cfg *Config) Validate() error { method Merge (line 44) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 60) | type AlertProvider struct method Validate (line 68) | func (provider *AlertProvider) Validate() error { method Send (line 73) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 103) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 137) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 142) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 158) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Body (line 96) | type Body struct FILE: alerting/provider/gotify/gotify_test.go function TestAlertProvider_Validate (line 12) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_buildRequestBody (line 48) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 108) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 115) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/homeassistant/homeassistant.go type Config (line 23) | type Config struct method Validate (line 28) | func (cfg *Config) Validate() error { method Merge (line 38) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 48) | type AlertProvider struct method Validate (line 65) | func (provider *AlertProvider) Validate() error { method Send (line 79) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 119) | func (provider *AlertProvider) buildRequestBody(ep *endpoint.Endpoint,... method GetDefaultAlert (line 166) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 171) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 193) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 59) | type Override struct type Body (line 103) | type Body struct FILE: alerting/provider/homeassistant/homeassistant_test.go function TestAlertProvider_Validate (line 14) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_ValidateWithOverride (line 29) | func TestAlertProvider_ValidateWithOverride(t *testing.T) { function TestAlertProvider_Send (line 55) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildRequestBody (line 122) | func TestAlertProvider_buildRequestBody(t *testing.T) { FILE: alerting/provider/ifttt/ifttt.go type Config (line 23) | type Config struct method Validate (line 28) | func (cfg *Config) Validate() error { method Merge (line 38) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 48) | type AlertProvider struct method Validate (line 65) | func (provider *AlertProvider) Validate() error { method Send (line 79) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 114) | func (provider *AlertProvider) buildRequestBody(ep *endpoint.Endpoint,... method GetDefaultAlert (line 154) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 159) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 184) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 59) | type Override struct type Body (line 107) | type Body struct FILE: alerting/provider/ifttt/ifttt_test.go function TestAlertProvider_Validate (line 15) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_Send (line 47) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 147) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { FILE: alerting/provider/ilert/ilert.go constant restAPIUrl (line 18) | restAPIUrl = "https://api.ilert.com/api/v1/events/gatus/" type Config (line 26) | type Config struct method Validate (line 30) | func (cfg *Config) Validate() error { method Merge (line 37) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 44) | type AlertProvider struct method Validate (line 59) | func (provider *AlertProvider) Validate() error { method Send (line 72) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 108) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 136) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 140) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 165) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 54) | type Override struct type Body (line 97) | type Body struct FILE: alerting/provider/ilert/ilert_test.go function TestAlertProvider_Validate (line 16) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_ValidateWithOverride (line 54) | func TestAlertProvider_ValidateWithOverride(t *testing.T) { function TestAlertProvider_Send (line 81) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_BuildRequestBody (line 160) | func TestAlertProvider_BuildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 224) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 233) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/incidentio/dedup.go function generateDeduplicationKey (line 14) | func generateDeduplicationKey(ep *endpoint.Endpoint, alert *alert.Alert)... FILE: alerting/provider/incidentio/incidentio.go constant restAPIUrl (line 22) | restAPIUrl = "https://api.incident.io/v2/alert_events/http/" type Config (line 32) | type Config struct method Validate (line 39) | func (cfg *Config) Validate() error { method Merge (line 52) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 68) | type AlertProvider struct method Validate (line 83) | func (provider *AlertProvider) Validate() error { method Send (line 96) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 141) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetConfig (line 194) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method GetDefaultAlert (line 219) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method ValidateOverrides (line 223) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 78) | type Override struct type Body (line 127) | type Body struct type Response (line 137) | type Response struct FILE: alerting/provider/incidentio/incidentio_test.go function TestAlertProvider_Validate (line 16) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_Send (line 85) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_BuildRequestBody (line 181) | func TestAlertProvider_BuildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 304) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 313) | func TestAlertProvider_GetConfig(t *testing.T) { function TestAlertProvider_ValidateWithOverride (line 408) | func TestAlertProvider_ValidateWithOverride(t *testing.T) { FILE: alerting/provider/line/line.go type Config (line 23) | type Config struct method Validate (line 28) | func (cfg *Config) Validate() error { method Merge (line 38) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 48) | type AlertProvider struct method Validate (line 65) | func (provider *AlertProvider) Validate() error { method Send (line 79) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 121) | func (provider *AlertProvider) buildRequestBody(ep *endpoint.Endpoint,... method GetDefaultAlert (line 160) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 165) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 190) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 59) | type Override struct type Body (line 110) | type Body struct type Message (line 115) | type Message struct FILE: alerting/provider/line/line_test.go function TestAlertProvider_Validate (line 14) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_Send (line 46) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 136) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function contains (line 145) | func contains(s, substr string) bool { FILE: alerting/provider/matrix/matrix.go constant defaultServerURL (line 19) | defaultServerURL = "https://matrix-client.matrix.org" type Config (line 27) | type Config struct method Validate (line 38) | func (cfg *Config) Validate() error { method Merge (line 51) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 64) | type AlertProvider struct method Validate (line 81) | func (provider *AlertProvider) Validate() error { method Send (line 95) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 137) | func (provider *AlertProvider) buildRequestBody(ep *endpoint.Endpoint,... method GetDefaultAlert (line 212) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 217) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 242) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 75) | type Override struct type Body (line 129) | type Body struct function buildPlaintextMessageBody (line 148) | func buildPlaintextMessageBody(ep *endpoint.Endpoint, alert *alert.Alert... function buildHTMLMessageBody (line 173) | func buildHTMLMessageBody(ep *endpoint.Endpoint, alert *alert.Alert, res... function randStringBytes (line 201) | func randStringBytes(n int) string { FILE: alerting/provider/matrix/matrix_test.go function TestAlertProvider_Validate (line 14) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_ValidateWithOverride (line 45) | func TestAlertProvider_ValidateWithOverride(t *testing.T) { function TestAlertProvider_Send (line 95) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildRequestBody (line 182) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 231) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 240) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/mattermost/mattermost.go type Config (line 22) | type Config struct method Validate (line 28) | func (cfg *Config) Validate() error { method Merge (line 35) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 48) | type AlertProvider struct method Validate (line 65) | func (provider *AlertProvider) Validate() error { method Send (line 79) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 126) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 178) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 183) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 208) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 59) | type Override struct type Body (line 102) | type Body struct type Attachment (line 110) | type Attachment struct type Field (line 119) | type Field struct FILE: alerting/provider/mattermost/mattermost_test.go function TestAlertProvider_Validate (line 14) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_ValidateWithOverride (line 25) | func TestAlertProvider_ValidateWithOverride(t *testing.T) { function TestAlertProvider_Send (line 62) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildRequestBody (line 139) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 189) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 198) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/messagebird/messagebird.go constant restAPIURL (line 17) | restAPIURL = "https://rest.messagebird.com/messages" type Config (line 25) | type Config struct method Validate (line 31) | func (cfg *Config) Validate() error { method Merge (line 44) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 57) | type AlertProvider struct method Validate (line 65) | func (provider *AlertProvider) Validate() error { method Send (line 71) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 102) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 118) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 123) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 139) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Body (line 95) | type Body struct FILE: alerting/provider/messagebird/messagebird_test.go function TestMessagebirdAlertProvider_IsValid (line 14) | func TestMessagebirdAlertProvider_IsValid(t *testing.T) { function TestAlertProvider_Send (line 31) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildRequestBody (line 108) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 158) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 167) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/n8n/n8n.go type Config (line 22) | type Config struct method Validate (line 27) | func (cfg *Config) Validate() error { method Merge (line 34) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 44) | type AlertProvider struct method Validate (line 59) | func (provider *AlertProvider) Validate() error { method Send (line 73) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 113) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 146) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 151) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 176) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 53) | type Override struct type Body (line 96) | type Body struct type ConditionResult (line 107) | type ConditionResult struct FILE: alerting/provider/n8n/n8n_test.go function TestAlertProvider_Validate (line 14) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_ValidateWithOverride (line 25) | func TestAlertProvider_ValidateWithOverride(t *testing.T) { function TestAlertProvider_Send (line 62) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildRequestBody (line 139) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 266) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 275) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/newrelic/newrelic.go type Config (line 24) | type Config struct method Validate (line 30) | func (cfg *Config) Validate() error { method Merge (line 40) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 53) | type AlertProvider struct method Validate (line 70) | func (provider *AlertProvider) Validate() error { method Send (line 84) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 135) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 182) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 187) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 212) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 64) | type Override struct type Event (line 120) | type Event struct FILE: alerting/provider/newrelic/newrelic_test.go function TestAlertProvider_Validate (line 15) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_Send (line 52) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 182) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { FILE: alerting/provider/ntfy/ntfy.go constant DefaultURL (line 20) | DefaultURL = "https://ntfy.sh" constant DefaultPriority (line 21) | DefaultPriority = 3 constant TokenPrefix (line 22) | TokenPrefix = "tk_" type Config (line 32) | type Config struct method Validate (line 43) | func (cfg *Config) Validate() error { method Merge (line 62) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 90) | type AlertProvider struct method Validate (line 107) | func (provider *AlertProvider) Validate() error { method Send (line 131) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 175) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 210) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 215) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 240) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 101) | type Override struct type Body (line 164) | type Body struct FILE: alerting/provider/ntfy/ntfy_test.go function TestAlertProvider_Validate (line 14) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_buildRequestBody (line 99) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_Send (line 181) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_GetConfig (line 304) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/opsgenie/opsgenie.go constant restAPI (line 20) | restAPI = "https://api.opsgenie.com/v2/alerts" type Config (line 27) | type Config struct method Validate (line 57) | func (cfg *Config) Validate() error { method Merge (line 76) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 97) | type AlertProvider struct method Validate (line 105) | func (provider *AlertProvider) Validate() error { method Send (line 112) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method sendAlertRequest (line 138) | func (provider *AlertProvider) sendAlertRequest(cfg *Config, ep *endpo... method closeAlert (line 143) | func (provider *AlertProvider) closeAlert(cfg *Config, ep *endpoint.En... method sendRequest (line 149) | func (provider *AlertProvider) sendRequest(cfg *Config, url, method st... method buildCreateRequestBody (line 172) | func (provider *AlertProvider) buildCreateRequestBody(cfg *Config, ep ... method buildCloseRequestBody (line 224) | func (provider *AlertProvider) buildCloseRequestBody(ep *endpoint.Endp... method GetDefaultAlert (line 232) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 237) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 253) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... function buildKey (line 258) | func buildKey(ep *endpoint.Endpoint) string { function toKebabCase (line 266) | func toKebabCase(val string) string { type alertCreateRequest (line 270) | type alertCreateRequest struct type alertCloseRequest (line 281) | type alertCloseRequest struct FILE: alerting/provider/opsgenie/opsgenie_test.go function TestAlertProvider_Validate (line 14) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_Send (line 25) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildCreateRequestBody (line 101) | func TestAlertProvider_buildCreateRequestBody(t *testing.T) { function TestAlertProvider_buildCloseRequestBody (line 277) | func TestAlertProvider_buildCloseRequestBody(t *testing.T) { function TestAlertProvider_GetConfig (line 322) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/pagerduty/pagerduty.go constant restAPIURL (line 19) | restAPIURL = "https://events.pagerduty.com/v2/enqueue" type Config (line 27) | type Config struct method Validate (line 31) | func (cfg *Config) Validate() error { method Merge (line 38) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 45) | type AlertProvider struct method Validate (line 62) | func (provider *AlertProvider) Validate() error { method Send (line 79) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 131) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 156) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 161) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 186) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 56) | type Override struct type Body (line 117) | type Body struct type Payload (line 124) | type Payload struct type pagerDutyResponsePayload (line 191) | type pagerDutyResponsePayload struct FILE: alerting/provider/pagerduty/pagerduty_test.go function TestAlertProvider_Validate (line 14) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_ValidateWithOverride (line 25) | func TestAlertProvider_ValidateWithOverride(t *testing.T) { function TestAlertProvider_Send (line 52) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildRequestBody (line 129) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 167) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 176) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/plivo/plivo.go type Config (line 26) | type Config struct method Validate (line 33) | func (cfg *Config) Validate() error { method Merge (line 49) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 65) | type AlertProvider struct method Validate (line 82) | func (provider *AlertProvider) Validate() error { method Send (line 96) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method sendSMS (line 112) | func (provider *AlertProvider) sendSMS(cfg *Config, to, message string... method buildMessage (line 141) | func (provider *AlertProvider) buildMessage(cfg *Config, ep *endpoint.... method GetDefaultAlert (line 150) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 155) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 180) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 76) | type Override struct FILE: alerting/provider/plivo/plivo_test.go function TestPlivoAlertProvider_IsValid (line 15) | func TestPlivoAlertProvider_IsValid(t *testing.T) { function TestAlertProvider_Send (line 113) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildMessage (line 200) | func TestAlertProvider_buildMessage(t *testing.T) { function TestAlertProvider_sendSMS (line 246) | func TestAlertProvider_sendSMS(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 307) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 316) | func TestAlertProvider_GetConfig(t *testing.T) { function TestConfig_Validate (line 419) | func TestConfig_Validate(t *testing.T) { function TestConfig_Merge (line 488) | func TestConfig_Merge(t *testing.T) { FILE: alerting/provider/provider.go type AlertProvider (line 49) | type AlertProvider interface type Config (line 63) | type Config interface function MergeProviderDefaultAlertIntoEndpointAlert (line 69) | func MergeProviderDefaultAlertIntoEndpointAlert(providerDefaultAlert, en... FILE: alerting/provider/provider_test.go function TestParseWithDefaultAlert (line 10) | func TestParseWithDefaultAlert(t *testing.T) { FILE: alerting/provider/pushover/pushover.go constant ApiURL (line 18) | ApiURL = "https://api.pushover.net/1/messages.json" constant defaultPriority (line 19) | defaultPriority = 0 type Config (line 29) | type Config struct method Validate (line 63) | func (cfg *Config) Validate() error { method Merge (line 85) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 113) | type AlertProvider struct method Validate (line 121) | func (provider *AlertProvider) Validate() error { method Send (line 127) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 163) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 204) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 209) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 225) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Body (line 150) | type Body struct FILE: alerting/provider/pushover/pushover_test.go function TestPushoverAlertProvider_IsValid (line 14) | func TestPushoverAlertProvider_IsValid(t *testing.T) { function TestAlertProvider_Send (line 49) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildRequestBody (line 126) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 212) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 221) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/rocketchat/rocketchat.go type Config (line 22) | type Config struct method Validate (line 27) | func (cfg *Config) Validate() error { method Merge (line 34) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 44) | type AlertProvider struct method Validate (line 61) | func (provider *AlertProvider) Validate() error { method Send (line 75) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 125) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 179) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 184) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 209) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 55) | type Override struct type Body (line 102) | type Body struct type Attachment (line 109) | type Attachment struct type Field (line 118) | type Field struct FILE: alerting/provider/rocketchat/rocketchat_test.go function TestAlertProvider_Validate (line 15) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_Send (line 47) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 157) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { FILE: alerting/provider/sendgrid/sendgrid.go constant ApiURL (line 19) | ApiURL = "https://api.sendgrid.com/v3/mail/send" type Config (line 29) | type Config struct method Validate (line 38) | func (cfg *Config) Validate() error { method Merge (line 51) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 67) | type AlertProvider struct method Validate (line 84) | func (provider *AlertProvider) Validate() error { method Send (line 98) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildSendGridPayload (line 148) | func (provider *AlertProvider) buildSendGridPayload(cfg *Config, subje... method buildMessageSubjectAndBody (line 178) | func (provider *AlertProvider) buildMessageSubjectAndBody(ep *endpoint... method GetDefaultAlert (line 215) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 220) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 245) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 78) | type Override struct type SendGridPayload (line 127) | type SendGridPayload struct type Personalization (line 134) | type Personalization struct type Email (line 138) | type Email struct type Content (line 142) | type Content struct FILE: alerting/provider/sendgrid/sendgrid_test.go function TestAlertProvider_Validate (line 15) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_ValidateWithOverride (line 26) | func TestAlertProvider_ValidateWithOverride(t *testing.T) { function TestAlertProvider_Send (line 107) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildSendGridPayload (line 174) | func TestAlertProvider_buildSendGridPayload(t *testing.T) { function TestAlertProvider_buildMessageSubjectAndBody (line 219) | func TestAlertProvider_buildMessageSubjectAndBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 300) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 309) | func TestAlertProvider_GetConfig(t *testing.T) { function TestConfig_Validate (line 440) | func TestConfig_Validate(t *testing.T) { function TestConfig_Merge (line 483) | func TestConfig_Merge(t *testing.T) { function TestConfig_MergeWithClientConfig (line 498) | func TestConfig_MergeWithClientConfig(t *testing.T) { FILE: alerting/provider/signal/signal.go type Config (line 25) | type Config struct method Validate (line 31) | func (cfg *Config) Validate() error { method Merge (line 47) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 60) | type AlertProvider struct method Validate (line 77) | func (provider *AlertProvider) Validate() error { method Send (line 91) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 128) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 163) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 168) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 193) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 71) | type Override struct type Body (line 121) | type Body struct FILE: alerting/provider/signal/signal_test.go function TestAlertProvider_Validate (line 15) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_Send (line 52) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 144) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { FILE: alerting/provider/signl4/signl4.go type Config (line 22) | type Config struct method Validate (line 26) | func (cfg *Config) Validate() error { method Merge (line 33) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 40) | type AlertProvider struct method Validate (line 57) | func (provider *AlertProvider) Validate() error { method Send (line 71) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 108) | func (provider *AlertProvider) buildRequestBody(ep *endpoint.Endpoint,... method GetDefaultAlert (line 151) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 156) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 181) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 51) | type Override struct type Body (line 99) | type Body struct FILE: alerting/provider/signl4/signl4_test.go function TestAlertProvider_Validate (line 14) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_ValidateWithOverride (line 25) | func TestAlertProvider_ValidateWithOverride(t *testing.T) { function TestAlertProvider_Send (line 62) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildRequestBody (line 139) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 224) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 233) | func TestAlertProvider_GetConfig(t *testing.T) { function TestAlertProvider_GetConfigWithInvalidAlertOverride (line 324) | func TestAlertProvider_GetConfigWithInvalidAlertOverride(t *testing.T) { function TestAlertProvider_ValidateWithDuplicateGroupOverride (line 356) | func TestAlertProvider_ValidateWithDuplicateGroupOverride(t *testing.T) { function TestAlertProvider_ValidateOverridesWithInvalidAlert (line 378) | func TestAlertProvider_ValidateOverridesWithInvalidAlert(t *testing.T) { FILE: alerting/provider/slack/slack.go type Config (line 22) | type Config struct method Validate (line 27) | func (cfg *Config) Validate() error { method Merge (line 34) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 44) | type AlertProvider struct method Validate (line 61) | func (provider *AlertProvider) Validate() error { method Send (line 75) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 118) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 167) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 172) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 197) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 55) | type Override struct type Body (line 98) | type Body struct type Attachment (line 103) | type Attachment struct type Field (line 111) | type Field struct FILE: alerting/provider/slack/slack_test.go function TestAlertProvider_Validate (line 14) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_ValidateWithOverride (line 25) | func TestAlertProvider_ValidateWithOverride(t *testing.T) { function TestAlertProvider_Send (line 62) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildRequestBody (line 139) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 234) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 243) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/splunk/splunk.go type Config (line 24) | type Config struct method Validate (line 32) | func (cfg *Config) Validate() error { method Merge (line 42) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 61) | type AlertProvider struct method Validate (line 78) | func (provider *AlertProvider) Validate() error { method Send (line 92) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 139) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 187) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 192) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 217) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 72) | type Override struct type Body (line 120) | type Body struct type Event (line 128) | type Event struct FILE: alerting/provider/splunk/splunk_test.go function TestAlertProvider_Validate (line 14) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_Send (line 51) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 148) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { FILE: alerting/provider/squadcast/squadcast.go type Config (line 22) | type Config struct method Validate (line 26) | func (cfg *Config) Validate() error { method Merge (line 33) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 40) | type AlertProvider struct method Validate (line 57) | func (provider *AlertProvider) Validate() error { method Send (line 71) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 107) | func (provider *AlertProvider) buildRequestBody(ep *endpoint.Endpoint,... method GetDefaultAlert (line 157) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 162) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 187) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 51) | type Override struct type Body (line 98) | type Body struct FILE: alerting/provider/squadcast/squadcast_test.go function TestAlertProvider_Validate (line 15) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_Send (line 42) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 134) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { FILE: alerting/provider/teams/teams.go type Config (line 22) | type Config struct method Validate (line 30) | func (cfg *Config) Validate() error { method Merge (line 37) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 50) | type AlertProvider struct method Validate (line 67) | func (provider *AlertProvider) Validate() error { method Send (line 81) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 119) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 163) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 168) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 193) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 61) | type Override struct type Body (line 104) | type Body struct type Section (line 113) | type Section struct FILE: alerting/provider/teams/teams_test.go function TestAlertProvider_Validate (line 14) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_ValidateWithOverride (line 25) | func TestAlertProvider_ValidateWithOverride(t *testing.T) { function TestAlertProvider_Send (line 62) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildRequestBody (line 139) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 200) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 209) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/teamsworkflows/teamsworkflows.go type Config (line 22) | type Config struct method Validate (line 27) | func (cfg *Config) Validate() error { method Merge (line 34) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 44) | type AlertProvider struct method Validate (line 61) | func (provider *AlertProvider) Validate() error { method Send (line 75) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 138) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 230) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 235) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 260) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 55) | type Override struct type AdaptiveCardBody (line 99) | type AdaptiveCardBody struct type CardBody (line 107) | type CardBody struct type MSTeamsBody (line 121) | type MSTeamsBody struct type FactSetBody (line 126) | type FactSetBody struct type Fact (line 132) | type Fact struct FILE: alerting/provider/teamsworkflows/teamsworkflows_test.go function TestAlertProvider_Validate (line 14) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_ValidateWithOverride (line 25) | func TestAlertProvider_ValidateWithOverride(t *testing.T) { function TestAlertProvider_Send (line 62) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildRequestBody (line 139) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 200) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 209) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/telegram/telegram.go constant ApiURL (line 17) | ApiURL = "https://api.telegram.org" type Config (line 25) | type Config struct method Validate (line 34) | func (cfg *Config) Validate() error { method Merge (line 47) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 66) | type AlertProvider struct method Validate (line 83) | func (provider *AlertProvider) Validate() error { method Send (line 97) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 128) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 164) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 169) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 194) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 77) | type Override struct type Body (line 120) | type Body struct FILE: alerting/provider/telegram/telegram_test.go function TestAlertProvider_Validate (line 14) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_Send (line 47) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildRequestBody (line 124) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 200) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 209) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/twilio/twilio.go type Config (line 26) | type Config struct method Validate (line 38) | func (cfg *Config) Validate() error { method Merge (line 54) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 76) | type AlertProvider struct method Validate (line 84) | func (provider *AlertProvider) Validate() error { method Send (line 89) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 114) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 147) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 152) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 168) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... FILE: alerting/provider/twilio/twilio_test.go function TestTwilioAlertProvider_IsValid (line 13) | func TestTwilioAlertProvider_IsValid(t *testing.T) { function TestAlertProvider_Send (line 31) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildRequestBody (line 108) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 175) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 184) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/vonage/vonage.go constant ApiURL (line 18) | ApiURL = "https://rest.nexmo.com/sms/json" type Config (line 28) | type Config struct method Validate (line 35) | func (cfg *Config) Validate() error { method Merge (line 51) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 67) | type AlertProvider struct method Validate (line 84) | func (provider *AlertProvider) Validate() error { method Send (line 98) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method sendSMS (line 115) | func (provider *AlertProvider) sendSMS(cfg *Config, to, message string... method buildMessage (line 170) | func (provider *AlertProvider) buildMessage(cfg *Config, ep *endpoint.... method GetDefaultAlert (line 179) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 184) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 209) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 78) | type Override struct type Response (line 154) | type Response struct type Message (line 159) | type Message struct FILE: alerting/provider/vonage/vonage_test.go function TestVonageAlertProvider_IsValid (line 15) | func TestVonageAlertProvider_IsValid(t *testing.T) { function TestVonageAlertProvider_IsValidWithOverride (line 33) | func TestVonageAlertProvider_IsValidWithOverride(t *testing.T) { function TestVonageAlertProvider_IsNotValidWithInvalidOverrideGroup (line 58) | func TestVonageAlertProvider_IsNotValidWithInvalidOverrideGroup(t *testi... function TestVonageAlertProvider_IsNotValidWithDuplicateOverrideGroup (line 83) | func TestVonageAlertProvider_IsNotValidWithDuplicateOverrideGroup(t *tes... function TestVonageAlertProvider_IsValidWithInvalidFrom (line 117) | func TestVonageAlertProvider_IsValidWithInvalidFrom(t *testing.T) { function TestVonageAlertProvider_IsValidWithInvalidTo (line 131) | func TestVonageAlertProvider_IsValidWithInvalidTo(t *testing.T) { function TestAlertProvider_Send (line 145) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_buildMessage (line 279) | func TestAlertProvider_buildMessage(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 339) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_GetConfig (line 348) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: alerting/provider/webex/webex.go type Config (line 22) | type Config struct method Validate (line 26) | func (cfg *Config) Validate() error { method Merge (line 33) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 40) | type AlertProvider struct method Validate (line 57) | func (provider *AlertProvider) Validate() error { method Send (line 71) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 105) | func (provider *AlertProvider) buildRequestBody(ep *endpoint.Endpoint,... method GetDefaultAlert (line 138) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 143) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 168) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 51) | type Override struct type Body (line 98) | type Body struct FILE: alerting/provider/webex/webex_test.go function TestAlertProvider_Validate (line 15) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_Send (line 42) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 127) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { FILE: alerting/provider/zapier/zapier.go type Config (line 23) | type Config struct method Validate (line 27) | func (cfg *Config) Validate() error { method Merge (line 34) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 41) | type AlertProvider struct method Validate (line 58) | func (provider *AlertProvider) Validate() error { method Send (line 72) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 117) | func (provider *AlertProvider) buildRequestBody(ep *endpoint.Endpoint,... method GetDefaultAlert (line 164) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 169) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 194) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 52) | type Override struct type Body (line 99) | type Body struct FILE: alerting/provider/zapier/zapier_test.go function TestAlertProvider_Validate (line 15) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_Send (line 42) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 155) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { FILE: alerting/provider/zulip/zulip.go type Config (line 25) | type Config struct method Validate (line 32) | func (cfg *Config) Validate() error { method Merge (line 48) | func (cfg *Config) Merge(override *Config) { type AlertProvider (line 64) | type AlertProvider struct method Validate (line 81) | func (provider *AlertProvider) Validate() error { method Send (line 95) | func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *aler... method buildRequestBody (line 122) | func (provider *AlertProvider) buildRequestBody(cfg *Config, ep *endpo... method GetDefaultAlert (line 150) | func (provider *AlertProvider) GetDefaultAlert() *alert.Alert { method GetConfig (line 155) | func (provider *AlertProvider) GetConfig(group string, alert *alert.Al... method ValidateOverrides (line 180) | func (provider *AlertProvider) ValidateOverrides(group string, alert *... type Override (line 75) | type Override struct FILE: alerting/provider/zulip/zulip_test.go function TestAlertProvider_Validate (line 16) | func TestAlertProvider_Validate(t *testing.T) { function TestAlertProvider_buildRequestBody (line 93) | func TestAlertProvider_buildRequestBody(t *testing.T) { function TestAlertProvider_GetDefaultAlert (line 219) | func TestAlertProvider_GetDefaultAlert(t *testing.T) { function TestAlertProvider_Send (line 228) | func TestAlertProvider_Send(t *testing.T) { function TestAlertProvider_GetConfig (line 339) | func TestAlertProvider_GetConfig(t *testing.T) { FILE: api/api.go type API (line 25) | type API struct method Router (line 43) | func (a *API) Router() *fiber.App { method createRouter (line 47) | func (a *API) createRouter(cfg *config.Config) *fiber.App { function New (line 29) | func New(cfg *config.Config) *API { FILE: api/api_test.go function TestNew (line 14) | func TestNew(t *testing.T) { FILE: api/badge.go constant badgeColorHexAwesome (line 21) | badgeColorHexAwesome = "#40cc11" constant badgeColorHexGreat (line 22) | badgeColorHexGreat = "#94cc11" constant badgeColorHexGood (line 23) | badgeColorHexGood = "#ccd311" constant badgeColorHexPassable (line 24) | badgeColorHexPassable = "#ccb311" constant badgeColorHexBad (line 25) | badgeColorHexBad = "#cc8111" constant badgeColorHexVeryBad (line 26) | badgeColorHexVeryBad = "#c7130a" constant HealthStatusUp (line 30) | HealthStatusUp = "up" constant HealthStatusDown (line 31) | HealthStatusDown = "down" constant HealthStatusUnknown (line 32) | HealthStatusUnknown = "?" function UptimeBadge (line 42) | func UptimeBadge(c *fiber.Ctx) error { function ResponseTimeBadge (line 79) | func ResponseTimeBadge(cfg *config.Config) fiber.Handler { function HealthBadge (line 116) | func HealthBadge(c *fiber.Ctx) error { function HealthBadgeShields (line 145) | func HealthBadgeShields(c *fiber.Ctx) error { function generateUptimeBadgeSVG (line 178) | func generateUptimeBadgeSVG(duration string, uptime float64) []byte { function getBadgeColorFromUptime (line 231) | func getBadgeColorFromUptime(uptime float64) string { function generateResponseTimeBadgeSVG (line 246) | func generateResponseTimeBadgeSVG(duration string, averageResponseTime i... function getBadgeColorFromResponseTime (line 296) | func getBadgeColorFromResponseTime(responseTime int, key string, cfg *co... function generateHealthBadgeSVG (line 310) | func generateHealthBadgeSVG(healthStatus string) []byte { function generateHealthBadgeShields (line 359) | func generateHealthBadgeShields(healthStatus string) ([]byte, error) { function getBadgeColorFromHealth (line 370) | func getBadgeColorFromHealth(healthStatus string) string { function getBadgeShieldsColorFromHealth (line 379) | func getBadgeShieldsColorFromHealth(healthStatus string) string { FILE: api/badge_test.go function TestBadge (line 17) | func TestBadge(t *testing.T) { function TestGetBadgeColorFromUptime (line 161) | func TestGetBadgeColorFromUptime(t *testing.T) { function TestGetBadgeColorFromResponseTime (line 216) | func TestGetBadgeColorFromResponseTime(t *testing.T) { function TestGetBadgeColorFromHealth (line 370) | func TestGetBadgeColorFromHealth(t *testing.T) { FILE: api/cache.go constant cacheTTL (line 10) | cacheTTL = 10 * time.Second FILE: api/chart.go constant timeFormat (line 19) | timeFormat = "3:04PM" function ResponseTimeChart (line 34) | func ResponseTimeChart(c *fiber.Ctx) error { function ResponseTimeHistory (line 130) | func ResponseTimeHistory(c *fiber.Ctx) error { FILE: api/chart_test.go function TestResponseTimeChart (line 15) | func TestResponseTimeChart(t *testing.T) { function TestResponseTimeHistory (line 85) | func TestResponseTimeHistory(t *testing.T) { FILE: api/config.go type ConfigHandler (line 12) | type ConfigHandler struct method GetConfig (line 17) | func (handler ConfigHandler) GetConfig(c *fiber.Ctx) error { FILE: api/config_test.go function TestConfigHandler_ServeHTTP (line 12) | func TestConfigHandler_ServeHTTP(t *testing.T) { FILE: api/custom_css.go type CustomCSSHandler (line 7) | type CustomCSSHandler struct method GetCustomCSS (line 11) | func (handler CustomCSSHandler) GetCustomCSS(c *fiber.Ctx) error { FILE: api/endpoint_status.go function EndpointStatuses (line 22) | func EndpointStatuses(cfg *config.Config) fiber.Handler { function getEndpointStatusesFromRemoteInstances (line 54) | func getEndpointStatusesFromRemoteInstances(remoteConfig *remote.Config)... function EndpointStatus (line 87) | func EndpointStatus(cfg *config.Config) fiber.Handler { FILE: api/endpoint_status_test.go function TestEndpointStatus (line 84) | func TestEndpointStatus(t *testing.T) { function TestEndpointStatuses (line 154) | func TestEndpointStatuses(t *testing.T) { FILE: api/external_endpoint.go function CreateExternalEndpointResult (line 18) | func CreateExternalEndpointResult(cfg *config.Config) fiber.Handler { FILE: api/external_endpoint_test.go function TestCreateExternalEndpointResult (line 18) | func TestCreateExternalEndpointResult(t *testing.T) { FILE: api/raw.go function UptimeRaw (line 14) | func UptimeRaw(c *fiber.Ctx) error { function ResponseTimeRaw (line 49) | func ResponseTimeRaw(c *fiber.Ctx) error { FILE: api/raw_test.go function TestRawDataEndpoint (line 16) | func TestRawDataEndpoint(t *testing.T) { FILE: api/spa.go function SinglePageApplication (line 13) | func SinglePageApplication(uiConfig *ui.Config) fiber.Handler { FILE: api/spa_test.go function TestSinglePageApplication (line 18) | func TestSinglePageApplication(t *testing.T) { FILE: api/suite_status.go function SuiteStatuses (line 14) | func SuiteStatuses(cfg *config.Config) fiber.Handler { function SuiteStatus (line 37) | func SuiteStatus(cfg *config.Config) fiber.Handler { FILE: api/suite_status_test.go function TestSuiteStatus (line 144) | func TestSuiteStatus(t *testing.T) { function TestSuiteStatus_SuiteNotInStoreButInConfig (line 214) | func TestSuiteStatus_SuiteNotInStoreButInConfig(t *testing.T) { function TestSuiteStatuses (line 366) | func TestSuiteStatuses(t *testing.T) { function TestSuiteStatuses_NoSuitesInStoreButExistInConfig (line 450) | func TestSuiteStatuses_NoSuitesInStoreButExistInConfig(t *testing.T) { function boolPtr (line 504) | func boolPtr(b bool) *bool { function contains (line 508) | func contains(s, substr string) bool { FILE: api/util.go constant DefaultPage (line 11) | DefaultPage = 1 constant DefaultPageSize (line 14) | DefaultPageSize = 50 function extractPageAndPageSizeFromRequest (line 17) | func extractPageAndPageSizeFromRequest(c *fiber.Ctx, maximumNumberOfResu... FILE: api/util_test.go function TestExtractPageAndPageSizeFromRequest (line 12) | func TestExtractPageAndPageSizeFromRequest(t *testing.T) { FILE: client/client.go constant dnsPort (line 34) | dnsPort = 53 function GetHTTPClient (line 47) | func GetHTTPClient(config *Config) *http.Client { function GetDomainExpiration (line 58) | func GetDomainExpiration(hostname string) (domainExpiration time.Duratio... function parseLocalAddressPlaceholder (line 92) | func parseLocalAddressPlaceholder(item string, localAddr net.Addr) string { function CanCreateNetworkConnection (line 98) | func CanCreateNetworkConnection(netType string, address string, body str... function CanCreateSCTPConnection (line 125) | func CanCreateSCTPConnection(address string, config *Config) bool { function CanPerformStartTLS (line 151) | func CanPerformStartTLS(address string, config *Config) (connected bool,... function CanPerformTLS (line 209) | func CanPerformTLS(address string, body string, config *Config) (connect... function CanCreateSSHConnection (line 251) | func CanCreateSSHConnection(address, username, password, privateKey stri... function CheckSSHBanner (line 289) | func CheckSSHBanner(address string, cfg *Config) (bool, int, error) { function ExecuteSSHCommand (line 318) | func ExecuteSSHCommand(sshClient *ssh.Client, body string, config *Confi... function Ping (line 355) | func Ping(address string, config *Config) (bool, time.Duration) { function ShouldRunPingerAsPrivileged (line 377) | func ShouldRunPingerAsPrivileged() bool { function QueryWebSocket (line 395) | func QueryWebSocket(address, body string, headers map[string]string, con... function QueryDNS (line 446) | func QueryDNS(queryType, queryName, url string) (connected bool, dnsRcod... function InjectHTTPClient (line 510) | func InjectHTTPClient(httpClient *http.Client) { function rdapQuery (line 515) | func rdapQuery(hostname string) (*whois.Response, error) { function reverseNameForIP (line 535) | func reverseNameForIP(ipStr string) (string, error) { FILE: client/client_test.go function TestGetHTTPClient (line 19) | func TestGetHTTPClient(t *testing.T) { function TestRdapQuery (line 45) | func TestRdapQuery(t *testing.T) { function TestGetDomainExpiration (line 60) | func TestGetDomainExpiration(t *testing.T) { function TestPing (line 88) | func TestPing(t *testing.T) { function TestShouldRunPingerAsPrivileged (line 136) | func TestShouldRunPingerAsPrivileged(t *testing.T) { function TestCanPerformStartTLS (line 162) | func TestCanPerformStartTLS(t *testing.T) { function TestCanPerformTLS (line 223) | func TestCanPerformTLS(t *testing.T) { function TestCanCreateConnection (line 292) | func TestCanCreateConnection(t *testing.T) { function TestHttpClientProvidesOAuth2BearerToken (line 307) | func TestHttpClientProvidesOAuth2BearerToken(t *testing.T) { function TestQueryWebSocket (line 363) | func TestQueryWebSocket(t *testing.T) { function TestTlsRenegotiation (line 375) | func TestTlsRenegotiation(t *testing.T) { function TestQueryDNS (line 419) | func TestQueryDNS(t *testing.T) { function TestCheckSSHBanner (line 549) | func TestCheckSSHBanner(t *testing.T) { FILE: client/config.go constant defaultTimeout (line 22) | defaultTimeout = 10 * time.Second function GetDefaultConfig (line 41) | func GetDefaultConfig() *Config { type Config (line 47) | type Config struct method ValidateAndSetDefaults (line 120) | func (c *Config) ValidateAndSetDefaults() error { method HasCustomDNSResolver (line 145) | func (c *Config) HasCustomDNSResolver() bool { method parseDNSResolver (line 150) | func (c *Config) parseDNSResolver() (*DNSResolverConfig, error) { method HasOAuth2Config (line 177) | func (c *Config) HasOAuth2Config() bool { method HasIAPConfig (line 182) | func (c *Config) HasIAPConfig() bool { method HasTLSConfig (line 187) | func (c *Config) HasTLSConfig() bool { method getHTTPClient (line 214) | func (c *Config) getHTTPClient() *http.Client { type DNSResolverConfig (line 89) | type DNSResolverConfig struct type OAuth2Config (line 96) | type OAuth2Config struct method isValid (line 197) | func (c *OAuth2Config) isValid() bool { type IAPConfig (line 104) | type IAPConfig struct method isValid (line 192) | func (c *IAPConfig) isValid() bool { type TLSConfig (line 109) | type TLSConfig struct method isValid (line 202) | func (t *TLSConfig) isValid() error { function validateIAPToken (line 289) | func validateIAPToken(ctx context.Context, c IAPConfig) bool { function configureIAP (line 310) | func configureIAP(httpClient *http.Client, c IAPConfig) *http.Client { function configureOAuth2 (line 327) | func configureOAuth2(httpClient *http.Client, c OAuth2Config) *http.Clie... function configureTLS (line 341) | func configureTLS(tlsConfig *tls.Config, c TLSConfig) *tls.Config { FILE: client/config_test.go function TestConfig_getHTTPClient (line 10) | func TestConfig_getHTTPClient(t *testing.T) { function TestConfig_ValidateAndSetDefaults_withCustomDNSResolver (line 40) | func TestConfig_ValidateAndSetDefaults_withCustomDNSResolver(t *testing.... function TestConfig_getHTTPClient_withCustomProxyURL (line 84) | func TestConfig_getHTTPClient_withCustomProxyURL(t *testing.T) { function TestConfig_TlsIsValid (line 110) | func TestConfig_TlsIsValid(t *testing.T) { FILE: client/grpc.go function PerformGRPCHealthCheck (line 18) | func PerformGRPCHealthCheck(address string, useTLS bool, cfg *Config) (b... FILE: config/announcement/announcement.go constant TypeOutage (line 11) | TypeOutage = "outage" constant TypeWarning (line 14) | TypeWarning = "warning" constant TypeInformation (line 17) | TypeInformation = "information" constant TypeOperational (line 20) | TypeOperational = "operational" constant TypeNone (line 23) | TypeNone = "none" type Announcement (line 47) | type Announcement struct method ValidateAndSetDefaults (line 63) | func (a *Announcement) ValidateAndSetDefaults() error { function SortByTimestamp (line 84) | func SortByTimestamp(announcements []*Announcement) { function ValidateAndSetDefaults (line 91) | func ValidateAndSetDefaults(announcements []*Announcement) error { FILE: config/announcement/announcement_test.go function TestAnnouncement_ValidateAndSetDefaults (line 9) | func TestAnnouncement_ValidateAndSetDefaults(t *testing.T) { function TestAnnouncement_ValidateAndSetDefaults_AllTypes (line 89) | func TestAnnouncement_ValidateAndSetDefaults_AllTypes(t *testing.T) { function TestSortByTimestamp (line 109) | func TestSortByTimestamp(t *testing.T) { function TestSortByTimestamp_WithArchivedField (line 130) | func TestSortByTimestamp_WithArchivedField(t *testing.T) { function TestValidateAndSetDefaults_Slice (line 155) | func TestValidateAndSetDefaults_Slice(t *testing.T) { function TestAnnouncement_ArchivedFieldDefaults (line 219) | func TestAnnouncement_ArchivedFieldDefaults(t *testing.T) { function TestValidateAndSetDefaults_EmptySlice (line 236) | func TestValidateAndSetDefaults_EmptySlice(t *testing.T) { FILE: config/config.go constant DefaultConfigurationFilePath (line 38) | DefaultConfigurationFilePath = "config/config.yaml" constant DefaultFallbackConfigurationFilePath (line 42) | DefaultFallbackConfigurationFilePath = "config/config.yml" constant DefaultConcurrency (line 45) | DefaultConcurrency = 3 type Config (line 63) | type Config struct method GetUniqueExtraMetricLabels (line 133) | func (config *Config) GetUniqueExtraMetricLabels() []string { method GetEndpointByKey (line 152) | func (config *Config) GetEndpointByKey(key string) *endpoint.Endpoint { method GetExternalEndpointByKey (line 162) | func (config *Config) GetExternalEndpointByKey(key string) *endpoint.E... method HasLoadedConfigurationBeenModified (line 174) | func (config *Config) HasLoadedConfigurationBeenModified() bool { method UpdateLastFileModTime (line 193) | func (config *Config) UpdateLastFileModTime() { function LoadConfiguration (line 199) | func LoadConfiguration(configPath string) (*Config, error) { function walkConfigDir (line 261) | func walkConfigDir(path string, fn fs.WalkDirFunc) error { function parseAndValidateConfigBytes (line 282) | func parseAndValidateConfigBytes(yamlBytes []byte) (config *Config, err ... function ValidateConnectivityConfig (line 348) | func ValidateConnectivityConfig(config *Config) error { function ValidateTunnelingConfig (line 358) | func ValidateTunnelingConfig(config *Config) error { function resolveTunnelForClientConfig (line 383) | func resolveTunnelForClientConfig(config *Config, clientConfig *client.C... function ValidateAnnouncementsConfig (line 408) | func ValidateAnnouncementsConfig(config *Config) error { function ValidateRemoteConfig (line 419) | func ValidateRemoteConfig(config *Config) error { function ValidateStorageConfig (line 428) | func ValidateStorageConfig(config *Config) error { function ValidateMaintenanceConfig (line 443) | func ValidateMaintenanceConfig(config *Config) error { function ValidateUIConfig (line 454) | func ValidateUIConfig(config *Config) error { function ValidateWebConfig (line 465) | func ValidateWebConfig(config *Config) error { function ValidateEndpointsConfig (line 474) | func ValidateEndpointsConfig(config *Config) error { function ValidateSuitesConfig (line 505) | func ValidateSuitesConfig(config *Config) error { function ValidateUniqueKeys (line 540) | func ValidateUniqueKeys(config *Config) error { function ValidateSecurityConfig (line 577) | func ValidateSecurityConfig(config *Config) error { function ValidateAlertingConfig (line 591) | func ValidateAlertingConfig(alertingConfig *alerting.Config, endpoints [... function ValidateAndSetConcurrencyDefaults (line 688) | func ValidateAndSetConcurrencyDefaults(config *Config) { FILE: config/config_test.go function TestLoadConfiguration (line 65) | func TestLoadConfiguration(t *testing.T) { function TestConfig_HasLoadedConfigurationBeenModified (line 296) | func TestConfig_HasLoadedConfigurationBeenModified(t *testing.T) { function TestParseAndValidateConfigBytes (line 348) | func TestParseAndValidateConfigBytes(t *testing.T) { function TestParseAndValidateConfigBytesDefault (line 502) | func TestParseAndValidateConfigBytesDefault(t *testing.T) { function TestParseAndValidateConfigBytesWithAddress (line 542) | func TestParseAndValidateConfigBytesWithAddress(t *testing.T) { function TestParseAndValidateConfigBytesWithPort (line 575) | func TestParseAndValidateConfigBytesWithPort(t *testing.T) { function TestParseAndValidateConfigBytesWithPortAndHost (line 608) | func TestParseAndValidateConfigBytesWithPortAndHost(t *testing.T) { function TestParseAndValidateConfigBytesWithInvalidPort (line 642) | func TestParseAndValidateConfigBytesWithInvalidPort(t *testing.T) { function TestParseAndValidateConfigBytesWithMetricsAndCustomUserAgentHeader (line 658) | func TestParseAndValidateConfigBytesWithMetricsAndCustomUserAgentHeader(... function TestParseAndValidateConfigBytesWithMetricsAndHostAndPort (line 695) | func TestParseAndValidateConfigBytesWithMetricsAndHostAndPort(t *testing... function TestParseAndValidateBadConfigBytes (line 733) | func TestParseAndValidateBadConfigBytes(t *testing.T) { function TestParseAndValidateConfigBytesWithAlerting (line 749) | func TestParseAndValidateConfigBytesWithAlerting(t *testing.T) { function TestParseAndValidateConfigBytesWithAlertingAndDefaultAlert (line 937) | func TestParseAndValidateConfigBytesWithAlertingAndDefaultAlert(t *testi... function TestParseAndValidateConfigBytesWithAlertingAndDefaultAlertAndMultipleAlertsOfSameTypeWithOverriddenParameters (line 1369) | func TestParseAndValidateConfigBytesWithAlertingAndDefaultAlertAndMultip... function TestParseAndValidateConfigBytesWithInvalidPagerDutyAlertingConfig (line 1450) | func TestParseAndValidateConfigBytesWithInvalidPagerDutyAlertingConfig(t... function TestParseAndValidateConfigBytesWithInvalidPushoverAlertingConfig (line 1477) | func TestParseAndValidateConfigBytesWithInvalidPushoverAlertingConfig(t ... function TestParseAndValidateConfigBytesWithCustomAlertingConfig (line 1504) | func TestParseAndValidateConfigBytesWithCustomAlertingConfig(t *testing.... function TestParseAndValidateConfigBytesWithCustomAlertingConfigAndCustomPlaceholderValues (line 1548) | func TestParseAndValidateConfigBytesWithCustomAlertingConfigAndCustomPla... function TestParseAndValidateConfigBytesWithCustomAlertingConfigAndOneCustomPlaceholderValue (line 1591) | func TestParseAndValidateConfigBytesWithCustomAlertingConfigAndOneCustom... function TestParseAndValidateConfigBytesWithInvalidEndpointName (line 1632) | func TestParseAndValidateConfigBytesWithInvalidEndpointName(t *testing.T) { function TestParseAndValidateConfigBytesWithDuplicateEndpointName (line 1645) | func TestParseAndValidateConfigBytesWithDuplicateEndpointName(t *testing... function TestParseAndValidateConfigBytesWithInvalidStorageConfig (line 1738) | func TestParseAndValidateConfigBytesWithInvalidStorageConfig(t *testing.... function TestParseAndValidateConfigBytesWithInvalidYAML (line 1753) | func TestParseAndValidateConfigBytesWithInvalidYAML(t *testing.T) { function TestParseAndValidateConfigBytesWithInvalidSecurityConfig (line 1768) | func TestParseAndValidateConfigBytesWithInvalidSecurityConfig(t *testing... function TestParseAndValidateConfigBytesWithValidSecurityConfig (line 1785) | func TestParseAndValidateConfigBytesWithValidSecurityConfig(t *testing.T) { function TestParseAndValidateConfigBytesWithLiteralDollarSign (line 1822) | func TestParseAndValidateConfigBytesWithLiteralDollarSign(t *testing.T) { function TestParseAndValidateConfigBytesWithNoEndpoints (line 1849) | func TestParseAndValidateConfigBytesWithNoEndpoints(t *testing.T) { function TestGetAlertingProviderByAlertType (line 1856) | func TestGetAlertingProviderByAlertType(t *testing.T) { function TestConfig_GetUniqueExtraMetricLabels (line 1953) | func TestConfig_GetUniqueExtraMetricLabels(t *testing.T) { function TestParseAndValidateConfigBytesWithDuplicateKeysAcrossEntityTypes (line 2064) | func TestParseAndValidateConfigBytesWithDuplicateKeysAcrossEntityTypes(t... function TestParseAndValidateConfigBytesWithSuites (line 2231) | func TestParseAndValidateConfigBytesWithSuites(t *testing.T) { function TestValidateTunnelingConfig (line 2443) | func TestValidateTunnelingConfig(t *testing.T) { function TestResolveTunnelForClientConfig (line 2569) | func TestResolveTunnelForClientConfig(t *testing.T) { FILE: config/connectivity/connectivity.go type Config (line 17) | type Config struct method ValidateAndSetDefaults (line 21) | func (c *Config) ValidateAndSetDefaults() error { type Checker (line 36) | type Checker struct method Check (line 44) | func (c *Checker) Check() bool { method IsConnected (line 49) | func (c *Checker) IsConnected() bool { FILE: config/connectivity/connectivity_test.go function TestConfig (line 9) | func TestConfig(t *testing.T) { function TestChecker_IsConnected (line 57) | func TestChecker_IsConnected(t *testing.T) { FILE: config/endpoint/common.go function validateEndpointNameGroupAndAlerts (line 19) | func validateEndpointNameGroupAndAlerts(name, group string, alerts []*al... FILE: config/endpoint/common_test.go function TestValidateEndpointNameGroupAndAlerts (line 10) | func TestValidateEndpointNameGroupAndAlerts(t *testing.T) { FILE: config/endpoint/condition.go constant maximumLengthBeforeTruncatingWhenComparedWithPattern (line 20) | maximumLengthBeforeTruncatingWhenComparedWithPattern = 25 type Condition (line 24) | type Condition method Validate (line 27) | func (c Condition) Validate() error { method evaluate (line 37) | func (c Condition) evaluate(result *Result, dontResolveFailedCondition... method hasBodyPlaceholder (line 96) | func (c Condition) hasBodyPlaceholder() bool { method hasDomainExpirationPlaceholder (line 102) | func (c Condition) hasDomainExpirationPlaceholder() bool { method hasIPPlaceholder (line 108) | func (c Condition) hasIPPlaceholder() bool { function isEqual (line 117) | func isEqual(first, second string) bool { function sanitizeAndResolveWithContext (line 174) | func sanitizeAndResolveWithContext(elements []string, result *Result, co... function sanitizeAndResolveNumericalWithContext (line 194) | func sanitizeAndResolveNumericalWithContext(list []string, result *Resul... function prettifyNumericalParameters (line 217) | func prettifyNumericalParameters(parameters []string, resolvedParameters... function formatDuration (line 241) | func formatDuration(d time.Duration) string { function prettify (line 259) | func prettify(parameters []string, resolvedParameters []string, operator... FILE: config/endpoint/condition_bench_test.go function BenchmarkCondition_evaluateWithBodyStringAny (line 7) | func BenchmarkCondition_evaluateWithBodyStringAny(b *testing.B) { function BenchmarkCondition_evaluateWithBodyStringAnyFailure (line 16) | func BenchmarkCondition_evaluateWithBodyStringAnyFailure(b *testing.B) { function BenchmarkCondition_evaluateWithBodyString (line 25) | func BenchmarkCondition_evaluateWithBodyString(b *testing.B) { function BenchmarkCondition_evaluateWithBodyStringFailure (line 34) | func BenchmarkCondition_evaluateWithBodyStringFailure(b *testing.B) { function BenchmarkCondition_evaluateWithBodyStringFailureInvalidPath (line 43) | func BenchmarkCondition_evaluateWithBodyStringFailureInvalidPath(b *test... function BenchmarkCondition_evaluateWithBodyStringLen (line 52) | func BenchmarkCondition_evaluateWithBodyStringLen(b *testing.B) { function BenchmarkCondition_evaluateWithBodyStringLenFailure (line 61) | func BenchmarkCondition_evaluateWithBodyStringLenFailure(b *testing.B) { function BenchmarkCondition_evaluateWithStatus (line 70) | func BenchmarkCondition_evaluateWithStatus(b *testing.B) { function BenchmarkCondition_evaluateWithStatusFailure (line 79) | func BenchmarkCondition_evaluateWithStatusFailure(b *testing.B) { FILE: config/endpoint/condition_result.go type ConditionResult (line 4) | type ConditionResult struct FILE: config/endpoint/condition_test.go function TestCondition_Validate (line 13) | func TestCondition_Validate(t *testing.T) { function TestCondition_evaluate (line 59) | func TestCondition_evaluate(t *testing.T) { function TestCondition_evaluateWithInvalidOperator (line 780) | func TestCondition_evaluateWithInvalidOperator(t *testing.T) { function TestConditionEvaluateWithInvalidContextPlaceholder (line 792) | func TestConditionEvaluateWithInvalidContextPlaceholder(t *testing.T) { function TestConditionEvaluateWithValidContextPlaceholder (line 818) | func TestConditionEvaluateWithValidContextPlaceholder(t *testing.T) { function TestConditionEvaluateWithMixedValidAndInvalidContext (line 841) | func TestConditionEvaluateWithMixedValidAndInvalidContext(t *testing.T) { FILE: config/endpoint/dns/dns.go type Config (line 19) | type Config struct method ValidateAndSetDefault (line 27) | func (d *Config) ValidateAndSetDefault() error { FILE: config/endpoint/dns/dns_test.go function TestConfig_ValidateAndSetDefault (line 7) | func TestConfig_ValidateAndSetDefault(t *testing.T) { function TestConfig_ValidateAndSetDefaultsWithInvalidDNSQueryType (line 18) | func TestConfig_ValidateAndSetDefaultsWithInvalidDNSQueryType(t *testing... FILE: config/endpoint/endpoint.go type Type (line 31) | type Type constant HostHeader (line 35) | HostHeader = "Host" constant ContentTypeHeader (line 38) | ContentTypeHeader = "Content-Type" constant UserAgentHeader (line 41) | UserAgentHeader = "User-Agent" constant GatusUserAgent (line 44) | GatusUserAgent = "Gatus/1.0" constant TypeDNS (line 46) | TypeDNS Type = "DNS" constant TypeTCP (line 47) | TypeTCP Type = "TCP" constant TypeSCTP (line 48) | TypeSCTP Type = "SCTP" constant TypeUDP (line 49) | TypeUDP Type = "UDP" constant TypeICMP (line 50) | TypeICMP Type = "ICMP" constant TypeSTARTTLS (line 51) | TypeSTARTTLS Type = "STARTTLS" constant TypeTLS (line 52) | TypeTLS Type = "TLS" constant TypeHTTP (line 53) | TypeHTTP Type = "HTTP" constant TypeGRPC (line 54) | TypeGRPC Type = "GRPC" constant TypeWS (line 55) | TypeWS Type = "WEBSOCKET" constant TypeSSH (line 56) | TypeSSH Type = "SSH" constant TypeUNKNOWN (line 57) | TypeUNKNOWN Type = "UNKNOWN" type Endpoint (line 81) | type Endpoint struct method IsEnabled (line 156) | func (e *Endpoint) IsEnabled() bool { method Type (line 164) | func (e *Endpoint) Type() Type { method ValidateAndSetDefaults (line 194) | func (e *Endpoint) ValidateAndSetDefaults() error { method DisplayName (line 267) | func (e *Endpoint) DisplayName() string { method Key (line 275) | func (e *Endpoint) Key() string { method Close (line 282) | func (e *Endpoint) Close() { method EvaluateHealth (line 289) | func (e *Endpoint) EvaluateHealth() *Result { method EvaluateHealthWithContext (line 294) | func (e *Endpoint) EvaluateHealthWithContext(context *gontext.Gontext)... method preprocessWithContext (line 370) | func (e *Endpoint) preprocessWithContext(result *Result, context *gont... method getParsedBody (line 418) | func (e *Endpoint) getParsedBody() string { method getIP (line 441) | func (e *Endpoint) getIP(result *Result) { method call (line 450) | func (e *Endpoint) call(result *Result) { method buildHTTPRequest (line 570) | func (e *Endpoint) buildHTTPRequest() *http.Request { method needsToReadBody (line 592) | func (e *Endpoint) needsToReadBody() bool { method needsToRetrieveDomainExpiration (line 610) | func (e *Endpoint) needsToRetrieveDomainExpiration() bool { method needsToRetrieveIP (line 620) | func (e *Endpoint) needsToRetrieveIP() bool { function replaceContextPlaceholders (line 396) | func replaceContextPlaceholders(input string, ctx *gontext.Gontext) (str... function hasHeader (line 630) | func hasHeader(headers map[string]string, name string) bool { FILE: config/endpoint/endpoint_test.go function TestHasHeader (line 24) | func TestHasHeader(t *testing.T) { function TestEndpoint (line 48) | func TestEndpoint(t *testing.T) { function TestEndpoint_ResolveSuccessfulConditions (line 295) | func TestEndpoint_ResolveSuccessfulConditions(t *testing.T) { function TestEndpoint_IsEnabled (line 320) | func TestEndpoint_IsEnabled(t *testing.T) { function TestEndpoint_Type (line 332) | func TestEndpoint_Type(t *testing.T) { function TestEndpoint_ValidateAndSetDefaults (line 442) | func TestEndpoint_ValidateAndSetDefaults(t *testing.T) { function TestEndpoint_ValidateAndSetDefaultsWithInvalidCondition (line 498) | func TestEndpoint_ValidateAndSetDefaultsWithInvalidCondition(t *testing.... function TestEndpoint_ValidateAndSetDefaultsWithClientConfig (line 509) | func TestEndpoint_ValidateAndSetDefaultsWithClientConfig(t *testing.T) { function TestEndpoint_ValidateAndSetDefaultsWithDNS (line 539) | func TestEndpoint_ValidateAndSetDefaultsWithDNS(t *testing.T) { function TestEndpoint_ValidateAndSetDefaultsWithSSH (line 558) | func TestEndpoint_ValidateAndSetDefaultsWithSSH(t *testing.T) { function TestEndpoint_ValidateAndSetDefaultsWithSimpleErrors (line 619) | func TestEndpoint_ValidateAndSetDefaultsWithSimpleErrors(t *testing.T) { function TestEndpoint_buildHTTPRequest (line 676) | func TestEndpoint_buildHTTPRequest(t *testing.T) { function TestEndpoint_buildHTTPRequestWithCustomUserAgent (line 699) | func TestEndpoint_buildHTTPRequestWithCustomUserAgent(t *testing.T) { function TestEndpoint_buildHTTPRequestWithHostHeader (line 725) | func TestEndpoint_buildHTTPRequestWithHostHeader(t *testing.T) { function TestEndpoint_buildHTTPRequestWithLowercaseUserAgent (line 749) | func TestEndpoint_buildHTTPRequestWithLowercaseUserAgent(t *testing.T) { function TestEndpoint_buildHTTPRequestWithLowercaseContentType (line 772) | func TestEndpoint_buildHTTPRequestWithLowercaseContentType(t *testing.T) { function TestEndpoint_buildHTTPRequestWithLowercaseHostHeader (line 798) | func TestEndpoint_buildHTTPRequestWithLowercaseHostHeader(t *testing.T) { function TestEndpoint_buildHTTPRequestWithGraphQLEnabled (line 819) | func TestEndpoint_buildHTTPRequestWithGraphQLEnabled(t *testing.T) { function TestIntegrationEvaluateHealth (line 853) | func TestIntegrationEvaluateHealth(t *testing.T) { function TestIntegrationEvaluateHealthWithErrorAndHideURL (line 880) | func TestIntegrationEvaluateHealthWithErrorAndHideURL(t *testing.T) { function TestIntegrationEvaluateHealthForDNS (line 908) | func TestIntegrationEvaluateHealthForDNS(t *testing.T) { function TestIntegrationEvaluateHealthForSSH (line 936) | func TestIntegrationEvaluateHealthForSSH(t *testing.T) { function TestIntegrationEvaluateHealthForICMP (line 985) | func TestIntegrationEvaluateHealthForICMP(t *testing.T) { function TestEndpoint_DisplayName (line 1007) | func TestEndpoint_DisplayName(t *testing.T) { function TestEndpoint_getIP (line 1016) | func TestEndpoint_getIP(t *testing.T) { function TestEndpoint_needsToReadBody (line 1029) | func TestEndpoint_needsToReadBody(t *testing.T) { function TestEndpoint_needsToRetrieveDomainExpiration (line 1087) | func TestEndpoint_needsToRetrieveDomainExpiration(t *testing.T) { function TestEndpoint_needsToRetrieveIP (line 1096) | func TestEndpoint_needsToRetrieveIP(t *testing.T) { function TestEndpoint_preprocessWithContext (line 1105) | func TestEndpoint_preprocessWithContext(t *testing.T) { function TestEndpoint_HideUIFeatures (line 1586) | func TestEndpoint_HideUIFeatures(t *testing.T) { FILE: config/endpoint/event.go type Event (line 8) | type Event struct type EventType (line 17) | type EventType function NewEventFromResult (line 31) | func NewEventFromResult(result *Result) *Event { FILE: config/endpoint/event_test.go function TestNewEventFromResult (line 7) | func TestNewEventFromResult(t *testing.T) { FILE: config/endpoint/external_endpoint.go type ExternalEndpoint (line 24) | type ExternalEndpoint struct method ValidateAndSetDefaults (line 54) | func (externalEndpoint *ExternalEndpoint) ValidateAndSetDefaults() err... method IsEnabled (line 69) | func (externalEndpoint *ExternalEndpoint) IsEnabled() bool { method DisplayName (line 77) | func (externalEndpoint *ExternalEndpoint) DisplayName() string { method Key (line 85) | func (externalEndpoint *ExternalEndpoint) Key() string { method ToEndpoint (line 90) | func (externalEndpoint *ExternalEndpoint) ToEndpoint() *Endpoint { FILE: config/endpoint/external_endpoint_test.go function TestExternalEndpoint_ValidateAndSetDefaults (line 12) | func TestExternalEndpoint_ValidateAndSetDefaults(t *testing.T) { function TestExternalEndpoint_IsEnabled (line 117) | func TestExternalEndpoint_IsEnabled(t *testing.T) { function TestExternalEndpoint_DisplayName (line 155) | func TestExternalEndpoint_DisplayName(t *testing.T) { function TestExternalEndpoint_Key (line 197) | func TestExternalEndpoint_Key(t *testing.T) { function TestExternalEndpoint_ToEndpoint (line 238) | func TestExternalEndpoint_ToEndpoint(t *testing.T) { function TestExternalEndpoint_ValidationEdgeCases (line 325) | func TestExternalEndpoint_ValidationEdgeCases(t *testing.T) { function boolPtr (line 378) | func boolPtr(b bool) *bool { FILE: config/endpoint/heartbeat/heartbeat.go type Config (line 7) | type Config struct FILE: config/endpoint/placeholder.go constant StatusPlaceholder (line 17) | StatusPlaceholder = "[STATUS]" constant IPPlaceholder (line 22) | IPPlaceholder = "[IP]" constant DNSRCodePlaceholder (line 27) | DNSRCodePlaceholder = "[DNS_RCODE]" constant ResponseTimePlaceholder (line 32) | ResponseTimePlaceholder = "[RESPONSE_TIME]" constant BodyPlaceholder (line 37) | BodyPlaceholder = "[BODY]" constant ConnectedPlaceholder (line 42) | ConnectedPlaceholder = "[CONNECTED]" constant CertificateExpirationPlaceholder (line 47) | CertificateExpirationPlaceholder = "[CERTIFICATE_EXPIRATION]" constant DomainExpirationPlaceholder (line 50) | DomainExpirationPlaceholder = "[DOMAIN_EXPIRATION]" constant ContextPlaceholder (line 54) | ContextPlaceholder = "[CONTEXT]" constant LengthFunctionPrefix (line 62) | LengthFunctionPrefix = "len(" constant HasFunctionPrefix (line 67) | HasFunctionPrefix = "has(" constant PatternFunctionPrefix (line 72) | PatternFunctionPrefix = "pat(" constant AnyFunctionPrefix (line 77) | AnyFunctionPrefix = "any(" constant FunctionSuffix (line 80) | FunctionSuffix = ")" constant InvalidConditionElementSuffix (line 86) | InvalidConditionElementSuffix = "(INVALID)" type functionType (line 90) | type functionType constant noFunction (line 96) | noFunction functionType = iota constant functionLen (line 97) | functionLen constant functionHas (line 98) | functionHas function ResolvePlaceholder (line 126) | func ResolvePlaceholder(placeholder string, result *Result, ctx *gontext... function extractFunctionWrapper (line 194) | func extractFunctionWrapper(placeholder string) (functionType, string) { function resolveJSONPathPlaceholder (line 207) | func resolveJSONPathPlaceholder(placeholder string, fn functionType, ori... function resolveContextPlaceholder (line 232) | func resolveContextPlaceholder(placeholder string, fn functionType, orig... function formatWithFunction (line 264) | func formatWithFunction(value string, fn functionType) string { FILE: config/endpoint/placeholder_test.go function TestResolvePlaceholder (line 10) | func TestResolvePlaceholder(t *testing.T) { function TestResolvePlaceholderWithoutContext (line 97) | func TestResolvePlaceholderWithoutContext(t *testing.T) { FILE: config/endpoint/result.go type Result (line 9) | type Result struct method AddError (line 69) | func (r *Result) AddError(error string) { FILE: config/endpoint/result_test.go function TestResult_AddError (line 7) | func TestResult_AddError(t *testing.T) { FILE: config/endpoint/ssh/ssh.go type Config (line 15) | type Config struct method Validate (line 22) | func (cfg *Config) Validate() error { FILE: config/endpoint/ssh/ssh_test.go function TestSSH_validatePasswordCfg (line 8) | func TestSSH_validatePasswordCfg(t *testing.T) { function TestSSH_validatePrivateKeyCfg (line 25) | func TestSSH_validatePrivateKeyCfg(t *testing.T) { FILE: config/endpoint/status.go type Status (line 7) | type Status struct function NewStatus (line 32) | func NewStatus(group, name string) *Status { FILE: config/endpoint/status_test.go function TestNewEndpointStatus (line 7) | func TestNewEndpointStatus(t *testing.T) { FILE: config/endpoint/ui/ui.go type Config (line 6) | type Config struct method ValidateAndSetDefaults (line 45) | func (config *Config) ValidateAndSetDefaults() error { type Badge (line 32) | type Badge struct type ResponseTime (line 36) | type ResponseTime struct function GetDefaultConfig (line 62) | func GetDefaultConfig() *Config { FILE: config/endpoint/ui/ui_test.go function TestValidateAndSetDefaults (line 8) | func TestValidateAndSetDefaults(t *testing.T) { FILE: config/endpoint/uptime.go type Uptime (line 5) | type Uptime struct type HourlyUptimeStatistics (line 13) | type HourlyUptimeStatistics struct function NewUptime (line 20) | func NewUptime() *Uptime { FILE: config/gontext/gontext.go type Gontext (line 16) | type Gontext struct method Get (line 37) | func (g *Gontext) Get(path string) (interface{}, error) { method Set (line 58) | func (g *Gontext) Set(path string, value interface{}) error { method GetAll (line 91) | func (g *Gontext) GetAll() map[string]interface{} { function New (line 22) | func New(initial map[string]interface{}) *Gontext { function deepCopyValue (line 103) | func deepCopyValue(v interface{}) interface{} { FILE: config/gontext/gontext_test.go function TestNew (line 8) | func TestNew(t *testing.T) { function TestGontext_Get (line 73) | func TestGontext_Get(t *testing.T) { function TestGontext_Set (line 181) | func TestGontext_Set(t *testing.T) { function TestGontext_SetOverrideBehavior (line 254) | func TestGontext_SetOverrideBehavior(t *testing.T) { function TestGontext_GetAll (line 292) | func TestGontext_GetAll(t *testing.T) { function TestGontext_ConcurrentAccess (line 335) | func TestGontext_ConcurrentAccess(t *testing.T) { function TestDeepCopyValue (line 374) | func TestDeepCopyValue(t *testing.T) { FILE: config/key/key.go function ConvertGroupAndNameToKey (line 6) | func ConvertGroupAndNameToKey(groupName, name string) string { function sanitize (line 10) | func sanitize(s string) string { FILE: config/key/key_bench_test.go function BenchmarkConvertGroupAndNameToKey (line 7) | func BenchmarkConvertGroupAndNameToKey(b *testing.B) { FILE: config/key/key_test.go function TestConvertGroupAndNameToKey (line 5) | func TestConvertGroupAndNameToKey(t *testing.T) { FILE: config/maintenance/maintenance.go type Config (line 34) | type Config struct method IsEnabled (line 57) | func (c *Config) IsEnabled() bool { method ValidateAndSetDefaults (line 68) | func (c *Config) ValidateAndSetDefaults() error { method IsUnderMaintenance (line 100) | func (c *Config) IsUnderMaintenance() bool { function GetDefaultConfig (line 49) | func GetDefaultConfig() *Config { function hhmmToDuration (line 127) | func hhmmToDuration(s string) (time.Duration, error) { function extractNumericalValueFromPotentiallyZeroPaddedString (line 146) | func extractNumericalValueFromPotentiallyZeroPaddedString(s string) (int... FILE: config/maintenance/maintenance_test.go function TestGetDefaultConfig (line 11) | func TestGetDefaultConfig(t *testing.T) { function TestConfig_ValidateAndSetDefaults (line 17) | func TestConfig_ValidateAndSetDefaults(t *testing.T) { function TestConfig_IsUnderMaintenance (line 176) | func TestConfig_IsUnderMaintenance(t *testing.T) { function normalizeHour (line 346) | func normalizeHour(hour int) int { function inTimezone (line 353) | func inTimezone(passedTime time.Time, timezone string, t *testing.T) tim... FILE: config/remote/remote.go type Config (line 11) | type Config struct method ValidateAndSetDefaults (line 24) | func (c *Config) ValidateAndSetDefaults() error { type Instance (line 19) | type Instance struct FILE: config/suite/result.go type Result (line 10) | type Result struct method AddError (line 37) | func (r *Result) AddError(err string) { method CalculateSuccess (line 42) | func (r *Result) CalculateSuccess() { FILE: config/suite/suite.go type Suite (line 36) | type Suite struct method IsEnabled (line 60) | func (s *Suite) IsEnabled() bool { method Key (line 68) | func (s *Suite) Key() string { method ValidateAndSetDefaults (line 73) | func (s *Suite) ValidateAndSetDefaults() error { method Execute (line 116) | func (s *Suite) Execute() *Result { function StoreResultValues (line 174) | func StoreResultValues(ctx *gontext.Gontext, mappings map[string]string,... function extractValueForStorage (line 201) | func extractValueForStorage(placeholder string, result *endpoint.Result)... FILE: config/suite/suite_status.go type Status (line 4) | type Status struct function NewStatus (line 19) | func NewStatus(s *Suite) *Status { FILE: config/suite/suite_test.go function TestSuite_ValidateAndSetDefaults (line 12) | func TestSuite_ValidateAndSetDefaults(t *testing.T) { function TestSuite_IsEnabled (line 100) | func TestSuite_IsEnabled(t *testing.T) { function TestSuite_Key (line 132) | func TestSuite_Key(t *testing.T) { function TestSuite_DefaultValues (line 164) | func TestSuite_DefaultValues(t *testing.T) { function boolPtr (line 193) | func boolPtr(b bool) *bool { function TestStoreResultValues (line 197) | func TestStoreResultValues(t *testing.T) { function TestStoreResultValuesWithInvalidPath (line 244) | func TestStoreResultValuesWithInvalidPath(t *testing.T) { function TestSuite_ExecuteWithAlwaysRunEndpoints (line 288) | func TestSuite_ExecuteWithAlwaysRunEndpoints(t *testing.T) { function TestSuite_ExecuteWithoutAlwaysRunEndpoints (line 346) | func TestSuite_ExecuteWithoutAlwaysRunEndpoints(t *testing.T) { function TestResult_AddError (line 391) | func TestResult_AddError(t *testing.T) { function TestResult_CalculateSuccess (line 415) | func TestResult_CalculateSuccess(t *testing.T) { FILE: config/tunneling/sshtunnel/sshtunnel.go type Config (line 13) | type Config struct method ValidateAndSetDefaults (line 23) | func (c *Config) ValidateAndSetDefaults() error { type SSHTunnel (line 43) | type SSHTunnel struct method Connect (line 72) | func (t *SSHTunnel) Connect() error { method connectUnsafe (line 80) | func (t *SSHTunnel) connectUnsafe() error { method Close (line 102) | func (t *SSHTunnel) Close() error { method Dial (line 114) | func (t *SSHTunnel) Dial(network, addr string) (net.Conn, error) { function New (line 53) | func New(config *Config) *SSHTunnel { FILE: config/tunneling/sshtunnel/sshtunnel_test.go function TestConfig_ValidateAndSetDefaults (line 7) | func TestConfig_ValidateAndSetDefaults(t *testing.T) { function TestNew (line 123) | func TestNew(t *testing.T) { function TestSSHTunnel_Close (line 140) | func TestSSHTunnel_Close(t *testing.T) { FILE: config/tunneling/tunneling.go type Config (line 12) | type Config struct method ValidateAndSetDefaults (line 21) | func (tc *Config) ValidateAndSetDefaults() error { method GetTunnel (line 34) | func (tc *Config) GetTunnel(name string) (*sshtunnel.SSHTunnel, error) { method Close (line 56) | func (tc *Config) Close() error { FILE: config/tunneling/tunneling_test.go function TestConfig_ValidateAndSetDefaults (line 9) | func TestConfig_ValidateAndSetDefaults(t *testing.T) { function TestConfig_GetTunnel (line 105) | func TestConfig_GetTunnel(t *testing.T) { function TestConfig_Close (line 151) | func TestConfig_Close(t *testing.T) { FILE: config/ui/ui.go constant defaultTitle (line 13) | defaultTitle = "Health Dashboard | Gatus" constant defaultDescription (line 14) | defaultDescription = "Gatus is an advanced automated status pag... constant defaultHeader (line 15) | defaultHeader = "Gatus" constant defaultDashboardHeading (line 16) | defaultDashboardHeading = "Health Dashboard" constant defaultDashboardSubheading (line 17) | defaultDashboardSubheading = "Monitor the health of your endpoints in r... constant defaultLogo (line 18) | defaultLogo = "" constant defaultLink (line 19) | defaultLink = "" constant defaultFavicon (line 20) | defaultFavicon = "/favicon.ico" constant defaultFavicon16 (line 21) | defaultFavicon16 = "/favicon-16x16.png" constant defaultFavicon32 (line 22) | defaultFavicon32 = "/favicon-32x32.png" constant defaultCustomCSS (line 23) | defaultCustomCSS = "" constant defaultSortBy (line 24) | defaultSortBy = "name" constant defaultFilterBy (line 25) | defaultFilterBy = "none" type Config (line 37) | type Config struct method IsDarkMode (line 57) | func (cfg *Config) IsDarkMode() bool { method ValidateAndSetDefaults (line 108) | func (cfg *Config) ValidateAndSetDefaults() error { type Button (line 65) | type Button struct method Validate (line 71) | func (btn *Button) Validate() error { type Favicon (line 78) | type Favicon struct function GetDefaultConfig (line 85) | func GetDefaultConfig() *Config { type ViewData (line 169) | type ViewData struct FILE: config/ui/ui_test.go function TestConfig_ValidateAndSetDefaults (line 9) | func TestConfig_ValidateAndSetDefaults(t *testing.T) { function TestButton_Validate (line 125) | func TestButton_Validate(t *testing.T) { function TestGetDefaultConfig (line 164) | func TestGetDefaultConfig(t *testing.T) { function TestConfig_ValidateAndSetDefaults_DefaultSortBy (line 186) | func TestConfig_ValidateAndSetDefaults_DefaultSortBy(t *testing.T) { function TestConfig_ValidateAndSetDefaults_DefaultFilterBy (line 238) | func TestConfig_ValidateAndSetDefaults_DefaultFilterBy(t *testing.T) { FILE: config/util.go function toPtr (line 4) | func toPtr[T any](value T) *T { FILE: config/web/web.go constant DefaultAddress (line 12) | DefaultAddress = "0.0.0.0" constant DefaultPort (line 15) | DefaultPort = 8080 constant DefaultReadBufferSize (line 18) | DefaultReadBufferSize = 8192 constant MinimumReadBufferSize (line 22) | MinimumReadBufferSize = 4096 type Config (line 26) | type Config struct method ValidateAndSetDefaults (line 63) | func (web *Config) ValidateAndSetDefaults() error { method HasTLS (line 89) | func (web *Config) HasTLS() bool { method SocketAddress (line 94) | func (web *Config) SocketAddress() string { type TLSConfig (line 45) | type TLSConfig struct method isValid (line 98) | func (t *TLSConfig) isValid() error { function GetDefaultConfig (line 54) | func GetDefaultConfig() *Config { FILE: config/web/web_test.go function TestGetDefaultConfig (line 7) | func TestGetDefaultConfig(t *testing.T) { function TestConfig_ValidateAndSetDefaults (line 23) | func TestConfig_ValidateAndSetDefaults(t *testing.T) { function TestConfig_SocketAddress (line 116) | func TestConfig_SocketAddress(t *testing.T) { function TestConfig_isValid (line 126) | func TestConfig_isValid(t *testing.T) { FILE: controller/controller.go function Handle (line 18) | func Handle(cfg *config.Config) { function Shutdown (line 44) | func Shutdown() { FILE: controller/controller_test.go function TestHandle (line 16) | func TestHandle(t *testing.T) { function TestHandleTLS (line 51) | func TestHandleTLS(t *testing.T) { function TestShutdown (line 95) | func TestShutdown(t *testing.T) { FILE: jsonpath/jsonpath.go function Eval (line 11) | func Eval(path string, b []byte) (string, int, error) { function walk (line 24) | func walk(path string, object interface{}) (string, int, error) { function extractValue (line 69) | func extractValue(currentKey string, value interface{}) interface{} { FILE: jsonpath/jsonpath_bench_test.go function BenchmarkEval (line 5) | func BenchmarkEval(b *testing.B) { FILE: jsonpath/jsonpath_test.go function TestEval (line 7) | func TestEval(t *testing.T) { FILE: main.go constant GatusConfigPathEnvVar (line 19) | GatusConfigPathEnvVar = "GATUS_CONFIG_PATH" constant GatusConfigFileEnvVar (line 20) | GatusConfigFileEnvVar = "GATUS_CONFIG_FILE" constant GatusLogLevelEnvVar (line 21) | GatusLogLevelEnvVar = "GATUS_LOG_LEVEL" function main (line 24) | func main() { function start (line 51) | func start(cfg *config.Config) { function stop (line 58) | func stop(cfg *config.Config) { function save (line 65) | func save() { function configureLogging (line 71) | func configureLogging() { function loadConfiguration (line 86) | func loadConfiguration() (*config.Config, error) { function initializeStorage (line 102) | func initializeStorage(cfg *config.Config) { function closeTunnels (line 218) | func closeTunnels(cfg *config.Config) { function listenToConfigurationFileChanges (line 226) | func listenToConfigurationFileChanges(cfg *config.Config) { FILE: metrics/metrics.go constant namespace (line 12) | namespace = "gatus" function UnregisterPrometheusMetrics (line 34) | func UnregisterPrometheusMetrics() { function InitializePrometheusMetrics (line 77) | func InitializePrometheusMetrics(cfg *config.Config, reg prometheus.Regi... function PublishMetricsForEndpoint (line 168) | func PublishMetricsForEndpoint(ep *endpoint.Endpoint, result *endpoint.R... function PublishMetricsForSuite (line 204) | func PublishMetricsForSuite(s *suite.Suite, result *suite.Result, extraL... FILE: metrics/metrics_test.go function TestInitializePrometheusMetrics (line 19) | func TestInitializePrometheusMetrics(t *testing.T) { function TestPublishMetricsForEndpoint_withExtraLabels (line 67) | func TestPublishMetricsForEndpoint_withExtraLabels(t *testing.T) { function TestPublishMetricsForEndpoint (line 114) | func TestPublishMetricsForEndpoint(t *testing.T) { function TestPublishMetricsForSuite (line 244) | func TestPublishMetricsForSuite(t *testing.T) { function TestPublishMetricsForSuite_NoGroup (line 302) | func TestPublishMetricsForSuite_NoGroup(t *testing.T) { FILE: pattern/pattern.go function Match (line 9) | func Match(pattern, s string) bool { FILE: pattern/pattern_bench_test.go function BenchmarkMatch (line 5) | func BenchmarkMatch(b *testing.B) { function BenchmarkMatchWithBackslash (line 14) | func BenchmarkMatchWithBackslash(b *testing.B) { FILE: pattern/pattern_test.go function TestMatch (line 8) | func TestMatch(t *testing.T) { function testMatch (line 30) | func testMatch(t *testing.T, pattern, key string, expectedToMatch bool) { FILE: security/basic.go type BasicConfig (line 4) | type BasicConfig struct method isValid (line 14) | func (c *BasicConfig) isValid() bool { FILE: security/basic_test.go function TestBasicConfig_IsValidUsingBcrypt (line 5) | func TestBasicConfig_IsValidUsingBcrypt(t *testing.T) { function TestBasicConfig_IsValidWhenPasswordIsInvalidUsingBcrypt (line 15) | func TestBasicConfig_IsValidWhenPasswordIsInvalidUsingBcrypt(t *testing.... FILE: security/config.go constant cookieNameState (line 16) | cookieNameState = "gatus_state" constant cookieNameNonce (line 17) | cookieNameNonce = "gatus_nonce" constant cookieNameSession (line 18) | cookieNameSession = "gatus_session" type Config (line 22) | type Config struct method ValidateAndSetDefaults (line 30) | func (c *Config) ValidateAndSetDefaults() bool { method RegisterHandlers (line 35) | func (c *Config) RegisterHandlers(router fiber.Router) error { method ApplySecurityMiddleware (line 48) | func (c *Config) ApplySecurityMiddleware(router fiber.Router) error { method IsAuthenticated (line 97) | func (c *Config) IsAuthenticated(ctx *fiber.Ctx) bool { FILE: security/config_test.go function TestConfig_ValidateAndSetDefaults (line 12) | func TestConfig_ValidateAndSetDefaults(t *testing.T) { function TestConfig_ApplySecurityMiddleware (line 22) | func TestConfig_ApplySecurityMiddleware(t *testing.T) { function TestConfig_RegisterHandlers (line 101) | func TestConfig_RegisterHandlers(t *testing.T) { FILE: security/oidc.go constant DefaultOIDCSessionTTL (line 17) | DefaultOIDCSessionTTL = 8 * time.Hour type OIDCConfig (line 21) | type OIDCConfig struct method ValidateAndSetDefaults (line 35) | func (c *OIDCConfig) ValidateAndSetDefaults() bool { method initialize (line 42) | func (c *OIDCConfig) initialize() error { method loginHandler (line 59) | func (c *OIDCConfig) loginHandler(ctx *fiber.Ctx) error { method callbackHandler (line 80) | func (c *OIDCConfig) callbackHandler(w http.ResponseWriter, r *http.Re... method setSessionCookie (line 139) | func (c *OIDCConfig) setSessionCookie(w http.ResponseWriter, idToken *... FILE: security/oidc_test.go function TestOIDCConfig_ValidateAndSetDefaults (line 12) | func TestOIDCConfig_ValidateAndSetDefaults(t *testing.T) { function TestOIDCConfig_callbackHandler (line 30) | func TestOIDCConfig_callbackHandler(t *testing.T) { function TestOIDCConfig_setSessionCookie (line 68) | func TestOIDCConfig_setSessionCookie(t *testing.T) { function TestOIDCConfig_setSessionCookieWithCustomTTL (line 77) | func TestOIDCConfig_setSessionCookieWithCustomTTL(t *testing.T) { FILE: storage/config.go constant DefaultMaximumNumberOfResults (line 8) | DefaultMaximumNumberOfResults = 100 constant DefaultMaximumNumberOfEvents (line 9) | DefaultMaximumNumberOfEvents = 50 type Config (line 18) | type Config struct method ValidateAndSetDefaults (line 42) | func (c *Config) ValidateAndSetDefaults() error { FILE: storage/store/common/paging/endpoint_status_params.go type EndpointStatusParams (line 4) | type EndpointStatusParams struct method WithEvents (line 17) | func (params *EndpointStatusParams) WithEvents(page, pageSize int) *En... method WithResults (line 24) | func (params *EndpointStatusParams) WithResults(page, pageSize int) *E... function NewEndpointStatusParams (line 12) | func NewEndpointStatusParams() *EndpointStatusParams { FILE: storage/store/common/paging/endpoint_status_params_test.go function TestNewEndpointStatusParams (line 5) | func TestNewEndpointStatusParams(t *testing.T) { FILE: storage/store/common/paging/suite_status_params.go type SuiteStatusParams (line 4) | type SuiteStatusParams struct method WithPagination (line 18) | func (params *SuiteStatusParams) WithPagination(page, pageSize int) *S... function NewSuiteStatusParams (line 10) | func NewSuiteStatusParams() *SuiteStatusParams { FILE: storage/store/common/paging/suite_status_params_test.go function TestNewSuiteStatusParams (line 7) | func TestNewSuiteStatusParams(t *testing.T) { function TestSuiteStatusParams_WithPagination (line 20) | func TestSuiteStatusParams_WithPagination(t *testing.T) { function TestSuiteStatusParams_ChainedMethods (line 85) | func TestSuiteStatusParams_ChainedMethods(t *testing.T) { function TestSuiteStatusParams_OverwritePagination (line 97) | func TestSuiteStatusParams_OverwritePagination(t *testing.T) { function TestSuiteStatusParams_ReturnsSelf (line 116) | func TestSuiteStatusParams_ReturnsSelf(t *testing.T) { FILE: storage/store/memory/memory.go type Store (line 20) | type Store struct method GetAllEndpointStatuses (line 46) | func (s *Store) GetAllEndpointStatuses(params *paging.EndpointStatusPa... method GetAllSuiteStatuses (line 63) | func (s *Store) GetAllSuiteStatuses(params *paging.SuiteStatusParams) ... method GetEndpointStatus (line 79) | func (s *Store) GetEndpointStatus(groupName, endpointName string, para... method GetEndpointStatusByKey (line 84) | func (s *Store) GetEndpointStatusByKey(key string, params *paging.Endp... method GetSuiteStatusByKey (line 95) | func (s *Store) GetSuiteStatusByKey(key string, params *paging.SuiteSt... method GetUptimeByKey (line 106) | func (s *Store) GetUptimeByKey(key string, from, to time.Time) (float6... method GetAverageResponseTimeByKey (line 137) | func (s *Store) GetAverageResponseTimeByKey(key string, from, to time.... method GetHourlyAverageResponseTimeByKey (line 167) | func (s *Store) GetHourlyAverageResponseTimeByKey(key string, from, to... method InsertEndpointResult (line 193) | func (s *Store) InsertEndpointResult(ep *endpoint.Endpoint, result *en... method InsertSuiteResult (line 211) | func (s *Store) InsertSuiteResult(su *suite.Suite, result *suite.Resul... method DeleteAllEndpointStatusesNotInKeys (line 238) | func (s *Store) DeleteAllEndpointStatusesNotInKeys(keys []string) int { method DeleteAllSuiteStatusesNotInKeys (line 250) | func (s *Store) DeleteAllSuiteStatusesNotInKeys(keys []string) int { method GetTriggeredEndpointAlert (line 269) | func (s *Store) GetTriggeredEndpointAlert(ep *endpoint.Endpoint, alert... method UpsertTriggeredEndpointAlert (line 277) | func (s *Store) UpsertTriggeredEndpointAlert(ep *endpoint.Endpoint, tr... method DeleteTriggeredEndpointAlert (line 284) | func (s *Store) DeleteTriggeredEndpointAlert(ep *endpoint.Endpoint, tr... method DeleteAllTriggeredAlertsNotInChecksumsByEndpoint (line 293) | func (s *Store) DeleteAllTriggeredAlertsNotInChecksumsByEndpoint(ep *e... method HasEndpointStatusNewerThan (line 298) | func (s *Store) HasEndpointStatusNewerThan(key string, timestamp time.... method Clear (line 319) | func (s *Store) Clear() { method Save (line 325) | func (s *Store) Save() error { method Close (line 330) | func (s *Store) Close() { function NewStore (line 34) | func NewStore(maximumNumberOfResults, maximumNumberOfEvents int) (*Store... FILE: storage/store/memory/memory_test.go function TestStore_SanityCheck (line 87) | func TestStore_SanityCheck(t *testing.T) { function TestStore_Save (line 128) | func TestStore_Save(t *testing.T) { function TestStore_HasEndpointStatusNewerThan (line 141) | func TestStore_HasEndpointStatusNewerThan(t *testing.T) { function TestStore_MixedEndpointsAndSuites (line 170) | func TestStore_MixedEndpointsAndSuites(t *testing.T) { function TestStore_EndpointStatusCastingSafety (line 642) | func TestStore_EndpointStatusCastingSafety(t *testing.T) { function TestStore_MaximumLimits (line 690) | func TestStore_MaximumLimits(t *testing.T) { function TestSuiteResultOrdering (line 787) | func TestSuiteResultOrdering(t *testing.T) { function TestStore_ConcurrentAccess (line 914) | func TestStore_ConcurrentAccess(t *testing.T) { FILE: storage/store/memory/uptime.go constant uptimeCleanUpThreshold (line 10) | uptimeCleanUpThreshold = 32 * 24 constant uptimeRetention (line 11) | uptimeRetention = 30 * 24 * time.Hour function processUptimeAfterResult (line 16) | func processUptimeAfterResult(uptime *endpoint.Uptime, result *endpoint.... FILE: storage/store/memory/uptime_bench_test.go function BenchmarkProcessUptimeAfterResult (line 10) | func BenchmarkProcessUptimeAfterResult(b *testing.B) { FILE: storage/store/memory/uptime_test.go function TestProcessUptimeAfterResult (line 11) | func TestProcessUptimeAfterResult(t *testing.T) { function TestAddResultUptimeIsCleaningUpAfterItself (line 46) | func TestAddResultUptimeIsCleaningUpAfterItself(t *testing.T) { function checkHourlyStatistics (line 63) | func checkHourlyStatistics(t *testing.T, hourlyUptimeStatistics *endpoin... FILE: storage/store/memory/util.go function ShallowCopyEndpointStatus (line 11) | func ShallowCopyEndpointStatus(ss *endpoint.Status, params *paging.Endpo... function ShallowCopySuiteStatus (line 42) | func ShallowCopySuiteStatus(ss *suite.Status, params *paging.SuiteStatus... function getStartAndEndIndex (line 62) | func getStartAndEndIndex(numberOfResults int, page, pageSize int) (int, ... function AddResult (line 81) | func AddResult(ss *endpoint.Status, result *endpoint.Result, maximumNumb... FILE: storage/store/memory/util_bench_test.go function BenchmarkShallowCopyEndpointStatus (line 11) | func BenchmarkShallowCopyEndpointStatus(b *testing.B) { FILE: storage/store/memory/util_test.go function TestAddResult (line 13) | func TestAddResult(t *testing.T) { function TestShallowCopyEndpointStatus (line 29) | func TestShallowCopyEndpointStatus(t *testing.T) { function TestShallowCopySuiteStatus (line 69) | func TestShallowCopySuiteStatus(t *testing.T) { FILE: storage/store/sql/specific_postgres.go method createPostgresSchema (line 3) | func (s *Store) createPostgresSchema() error { FILE: storage/store/sql/specific_sqlite.go method createSQLiteSchema (line 3) | func (s *Store) createSQLiteSchema() error { FILE: storage/store/sql/sql.go constant arraySeparator (line 31) | arraySeparator = "|~|" constant eventsAboveMaximumCleanUpThreshold (line 33) | eventsAboveMaximumCleanUpThreshold = 10 constant resultsAboveMaximumCleanUpThreshold (line 34) | resultsAboveMaximumCleanUpThreshold = 10 constant uptimeTotalEntriesMergeThreshold (line 36) | uptimeTotalEntriesMergeThreshold = 100 constant uptimeAgeCleanUpThreshold (line 37) | uptimeAgeCleanUpThreshold = 32 * 24 * time.Hour constant uptimeRetention (line 38) | uptimeRetention = 30 * 24 * time.Hour constant uptimeHourlyBuffer (line 39) | uptimeHourlyBuffer = 48 * time.Hour constant cacheTTL (line 41) | cacheTTL = 10 * time.Minute type Store (line 55) | type Store struct method createSchema (line 108) | func (s *Store) createSchema() error { method GetAllEndpointStatuses (line 117) | func (s *Store) GetAllEndpointStatuses(params *paging.EndpointStatusPa... method GetEndpointStatus (line 142) | func (s *Store) GetEndpointStatus(groupName, endpointName string, para... method GetEndpointStatusByKey (line 147) | func (s *Store) GetEndpointStatusByKey(key string, params *paging.Endp... method GetUptimeByKey (line 164) | func (s *Store) GetUptimeByKey(key string, from, to time.Time) (float6... method GetAverageResponseTimeByKey (line 189) | func (s *Store) GetAverageResponseTimeByKey(key string, from, to time.... method GetHourlyAverageResponseTimeByKey (line 214) | func (s *Store) GetHourlyAverageResponseTimeByKey(key string, from, to... method InsertEndpointResult (line 239) | func (s *Store) InsertEndpointResult(ep *endpoint.Endpoint, result *en... method DeleteAllEndpointStatusesNotInKeys (line 384) | func (s *Store) DeleteAllEndpointStatusesNotInKeys(keys []string) int { method GetTriggeredEndpointAlert (line 442) | func (s *Store) GetTriggeredEndpointAlert(ep *endpoint.Endpoint, alert... method UpsertTriggeredEndpointAlert (line 460) | func (s *Store) UpsertTriggeredEndpointAlert(ep *endpoint.Endpoint, tr... method DeleteTriggeredEndpointAlert (line 507) | func (s *Store) DeleteTriggeredEndpointAlert(ep *endpoint.Endpoint, tr... method DeleteAllTriggeredAlertsNotInChecksumsByEndpoint (line 516) | func (s *Store) DeleteAllTriggeredAlertsNotInChecksumsByEndpoint(ep *e... method HasEndpointStatusNewerThan (line 547) | func (s *Store) HasEndpointStatusNewerThan(key string, timestamp time.... method Clear (line 565) | func (s *Store) Clear() { method Save (line 573) | func (s *Store) Save() error { method Close (line 578) | func (s *Store) Close() { method insertEndpoint (line 587) | func (s *Store) insertEndpoint(tx *sql.Tx, ep *endpoint.Endpoint) (int... method insertEndpointEvent (line 603) | func (s *Store) insertEndpointEvent(tx *sql.Tx, endpointID int64, even... method insertEndpointResult (line 617) | func (s *Store) insertEndpointResult(tx *sql.Tx, endpointID int64, res... method insertEndpointResultWithSuiteID (line 622) | func (s *Store) insertEndpointResultWithSuiteID(tx *sql.Tx, endpointID... method insertConditionResults (line 650) | func (s *Store) insertConditionResults(tx *sql.Tx, endpointResultID in... method updateEndpointUptime (line 665) | func (s *Store) updateEndpointUptime(tx *sql.Tx, endpointID int64, res... method getAllEndpointKeys (line 689) | func (s *Store) getAllEndpointKeys(tx *sql.Tx) (keys []string, err err... method getEndpointStatusByKey (line 711) | func (s *Store) getEndpointStatusByKey(tx *sql.Tx, key string, paramet... method getEndpointIDGroupAndNameByKey (line 742) | func (s *Store) getEndpointIDGroupAndNameByKey(tx *sql.Tx, key string)... method getEndpointEventsByEndpointID (line 761) | func (s *Store) getEndpointEventsByEndpointID(tx *sql.Tx, endpointID i... method getEndpointResultsByEndpointID (line 791) | func (s *Store) getEndpointResultsByEndpointID(tx *sql.Tx, endpointID ... method getEndpointUptime (line 856) | func (s *Store) getEndpointUptime(tx *sql.Tx, endpointID int64, from, ... method getEndpointAverageResponseTime (line 883) | func (s *Store) getEndpointAverageResponseTime(tx *sql.Tx, endpointID ... method getEndpointHourlyAverageResponseTimes (line 910) | func (s *Store) getEndpointHourlyAverageResponseTimes(tx *sql.Tx, endp... method getEndpointID (line 937) | func (s *Store) getEndpointID(tx *sql.Tx, ep *endpoint.Endpoint) (int6... method getNumberOfEventsByEndpointID (line 949) | func (s *Store) getNumberOfEventsByEndpointID(tx *sql.Tx, endpointID i... method getNumberOfResultsByEndpointID (line 955) | func (s *Store) getNumberOfResultsByEndpointID(tx *sql.Tx, endpointID ... method getNumberOfUptimeEntriesByEndpointID (line 961) | func (s *Store) getNumberOfUptimeEntriesByEndpointID(tx *sql.Tx, endpo... method getAgeOfOldestEndpointUptimeEntry (line 967) | func (s *Store) getAgeOfOldestEndpointUptimeEntry(tx *sql.Tx, endpoint... method getLastEndpointResultSuccessValue (line 993) | func (s *Store) getLastEndpointResultSuccessValue(tx *sql.Tx, endpoint... method deleteOldEndpointEvents (line 1006) | func (s *Store) deleteOldEndpointEvents(tx *sql.Tx, endpointID int64) ... method deleteOldEndpointResults (line 1026) | func (s *Store) deleteOldEndpointResults(tx *sql.Tx, endpointID int64)... method deleteOldUptimeEntries (line 1045) | func (s *Store) deleteOldUptimeEntries(tx *sql.Tx, endpointID int64, m... method mergeHourlyUptimeEntriesOlderThanMergeThresholdIntoDailyUptimeEntries (line 1057) | func (s *Store) mergeHourlyUptimeEntriesOlderThanMergeThresholdIntoDai... method GetAllSuiteStatuses (line 1163) | func (s *Store) GetAllSuiteStatuses(params *paging.SuiteStatusParams) ... method GetSuiteStatusByKey (line 1228) | func (s *Store) GetSuiteStatusByKey(key string, params *paging.SuiteSt... method InsertSuiteResult (line 1285) | func (s *Store) InsertSuiteResult(su *suite.Suite, result *suite.Resul... method DeleteAllSuiteStatusesNotInKeys (line 1367) | func (s *Store) DeleteAllSuiteStatusesNotInKeys(keys []string) int { method getSuiteID (line 1425) | func (s *Store) getSuiteID(tx *sql.Tx, su *suite.Suite) (int64, error) { method insertSuite (line 1438) | func (s *Store) insertSuite(tx *sql.Tx, su *suite.Suite) (int64, error) { method getSuiteResults (line 1453) | func (s *Store) getSuiteResults(tx *sql.Tx, suiteID int64, page, pageS... method getNumberOfSuiteResultsByID (line 1605) | func (s *Store) getNumberOfSuiteResultsByID(tx *sql.Tx, suiteID int64)... method deleteOldSuiteResults (line 1612) | func (s *Store) deleteOldSuiteResults(tx *sql.Tx, suiteID int64) error { function NewStore (line 69) | func NewStore(driver, path string, caching bool, maximumNumberOfResults,... function generateCacheKey (line 1136) | func generateCacheKey(endpointKey string, p *paging.EndpointStatusParams... function extractKeyAndParamsFromCacheKey (line 1140) | func extractKeyAndParamsFromCacheKey(cacheKey string) (string, *paging.E... FILE: storage/store/sql/sql_test.go function TestNewStore (line 86) | func TestNewStore(t *testing.T) { function TestStore_InsertCleansUpOldUptimeEntriesProperly (line 100) | func TestStore_InsertCleansUpOldUptimeEntriesProperly(t *testing.T) { function TestStore_HourlyUptimeEntriesAreMergedIntoDailyUptimeEntriesProperly (line 157) | func TestStore_HourlyUptimeEntriesAreMergedIntoDailyUptimeEntriesProperl... function TestStore_getEndpointUptime (line 214) | func TestStore_getEndpointUptime(t *testing.T) { function TestStore_InsertCleansUpEventsAndResultsProperly (line 276) | func TestStore_InsertCleansUpEventsAndResultsProperly(t *testing.T) { function TestStore_InsertWithCaching (line 295) | func TestStore_InsertWithCaching(t *testing.T) { function TestStore_Persistence (line 329) | func TestStore_Persistence(t *testing.T) { function TestStore_Save (line 415) | func TestStore_Save(t *testing.T) { function TestStore_SanityCheck (line 425) | func TestStore_SanityCheck(t *testing.T) { function TestStore_InvalidTransaction (line 469) | func TestStore_InvalidTransaction(t *testing.T) { function TestStore_NoRows (line 527) | func TestStore_NoRows(t *testing.T) { function TestStore_BrokenSchema (line 541) | func TestStore_BrokenSchema(t *testing.T) { function TestCacheKey (line 643) | func TestCacheKey(t *testing.T) { function TestTriggeredEndpointAlertsPersistence (line 729) | func TestTriggeredEndpointAlertsPersistence(t *testing.T) { function TestStore_DeleteAllTriggeredAlertsNotInChecksumsByEndpoint (line 795) | func TestStore_DeleteAllTriggeredAlertsNotInChecksumsByEndpoint(t *testi... function TestStore_HasEndpointStatusNewerThan (line 857) | func TestStore_HasEndpointStatusNewerThan(t *testing.T) { function TestEventOrderingFix (line 893) | func TestEventOrderingFix(t *testing.T) { FILE: storage/store/store.go type Store (line 18) | type Store interface function Get (line 107) | func Get() Store { function Initialize (line 120) | func Initialize(cfg *storage.Config) error { function autoSave (line 154) | func autoSave(ctx context.Context, store Store, interval time.Duration) { FILE: storage/store/store_bench_test.go function BenchmarkStore_GetAllEndpointStatuses (line 15) | func BenchmarkStore_GetAllEndpointStatuses(b *testing.B) { function BenchmarkStore_Insert (line 84) | func BenchmarkStore_Insert(b *testing.B) { function BenchmarkStore_GetEndpointStatusByKey (line 156) | func BenchmarkStore_GetEndpointStatusByKey(b *testing.B) { FILE: storage/store/store_test.go type Scenario (line 88) | type Scenario struct function initStoresAndBaseScenarios (line 93) | func initStoresAndBaseScenarios(t *testing.T, testName string) []*Scenar... function cleanUp (line 122) | func cleanUp(scenarios []*Scenario) { function TestStore_GetEndpointStatusByKey (line 128) | func TestStore_GetEndpointStatusByKey(t *testing.T) { function TestStore_GetEndpointStatusForMissingStatusReturnsNil (line 173) | func TestStore_GetEndpointStatusForMissingStatusReturnsNil(t *testing.T) { function TestStore_GetAllEndpointStatuses (line 204) | func TestStore_GetAllEndpointStatuses(t *testing.T) { function TestStore_GetAllEndpointStatusesWithResultsAndEvents (line 264) | func TestStore_GetAllEndpointStatusesWithResultsAndEvents(t *testing.T) { function TestStore_GetEndpointStatusPage1IsHasMoreRecentResultsThanPage2 (line 296) | func TestStore_GetEndpointStatusPage1IsHasMoreRecentResultsThanPage2(t *... function TestStore_GetUptimeByKey (line 336) | func TestStore_GetUptimeByKey(t *testing.T) { function TestStore_GetAverageResponseTimeByKey (line 366) | func TestStore_GetAverageResponseTimeByKey(t *testing.T) { function TestStore_GetHourlyAverageResponseTimeByKey (line 423) | func TestStore_GetHourlyAverageResponseTimeByKey(t *testing.T) { function TestStore_Insert (line 462) | func TestStore_Insert(t *testing.T) { function TestStore_DeleteAllEndpointStatusesNotInKeys (line 540) | func TestStore_DeleteAllEndpointStatusesNotInKeys(t *testing.T) { function TestGet (line 573) | func TestGet(t *testing.T) { function TestInitialize (line 580) | func TestInitialize(t *testing.T) { function TestAutoSave (line 644) | func TestAutoSave(t *testing.T) { FILE: storage/type.go type Type (line 4) | type Type constant TypeMemory (line 7) | TypeMemory Type = "memory" constant TypeSQLite (line 8) | TypeSQLite Type = "sqlite" constant TypePostgres (line 9) | TypePostgres Type = "postgres" FILE: test/mock.go type MockRoundTripper (line 5) | type MockRoundTripper method RoundTrip (line 7) | func (f MockRoundTripper) RoundTrip(r *http.Request) (*http.Response, ... FILE: watchdog/alerting.go function HandleAlerting (line 16) | func HandleAlerting(ep *endpoint.Endpoint, result *endpoint.Result, aler... function handleAlertsToTrigger (line 27) | func handleAlertsToTrigger(ep *endpoint.Endpoint, result *endpoint.Resul... function handleAlertsToResolve (line 83) | func handleAlertsToResolve(ep *endpoint.Endpoint, result *endpoint.Resul... FILE: watchdog/alerting_test.go function TestHandleAlerting (line 35) | func TestHandleAlerting(t *testing.T) { function TestHandleAlertingWhenAlertingConfigIsNil (line 83) | func TestHandleAlertingWhenAlertingConfigIsNil(t *testing.T) { function TestHandleAlertingWithBadAlertProvider (line 89) | func TestHandleAlertingWithBadAlertProvider(t *testing.T) { function TestHandleAlertingWhenTriggeredAlertIsAlmostResolvedButendpointStartFailingAgain (line 115) | func TestHandleAlertingWhenTriggeredAlertIsAlmostResolvedButendpointStar... function TestHandleAlertingWhenTriggeredAlertIsResolvedButSendOnResolvedIsFalse (line 150) | func TestHandleAlertingWhenTriggeredAlertIsResolvedButSendOnResolvedIsFa... function TestHandleAlertingWhenTriggeredAlertIsResolvedPagerDuty (line 185) | func TestHandleAlertingWhenTriggeredAlertIsResolvedPagerDuty(t *testing.... function TestHandleAlertingWhenTriggeredAlertIsResolvedPushover (line 221) | func TestHandleAlertingWhenTriggeredAlertIsResolvedPushover(t *testing.T) { function TestHandleAlertingWithProviderThatReturnsAnError (line 258) | func TestHandleAlertingWithProviderThatReturnsAnError(t *testing.T) { function TestHandleAlertingWithProviderThatOnlyReturnsErrorOnResolve (line 572) | func TestHandleAlertingWithProviderThatOnlyReturnsErrorOnResolve(t *test... function TestHandleAlertingWithMinimumReminderInterval (line 625) | func TestHandleAlertingWithMinimumReminderInterval(t *testing.T) { function verify (line 667) | func verify(t *testing.T, ep *endpoint.Endpoint, expectedNumberOfFailure... FILE: watchdog/endpoint.go function monitorEndpoint (line 15) | func monitorEndpoint(ep *endpoint.Endpoint, cfg *config.Config, extraLab... function executeEndpoint (line 35) | func executeEndpoint(ep *endpoint.Endpoint, cfg *config.Config, extraLab... function UpdateEndpointStatus (line 75) | func UpdateEndpointStatus(ep *endpoint.Endpoint, result *endpoint.Result) { FILE: watchdog/external_endpoint.go function monitorExternalEndpointHeartbeat (line 14) | func monitorExternalEndpointHeartbeat(ee *endpoint.ExternalEndpoint, cfg... function executeExternalEndpointHeartbeat (line 28) | func executeExternalEndpointHeartbeat(ee *endpoint.ExternalEndpoint, cfg... FILE: watchdog/suite.go function monitorSuite (line 15) | func monitorSuite(s *suite.Suite, cfg *config.Config, extraLabels []stri... function executeSuite (line 33) | func executeSuite(s *suite.Suite, cfg *config.Config, extraLabels []stri... function UpdateSuiteStatus (line 80) | func UpdateSuiteStatus(s *suite.Suite, result *suite.Result) { FILE: watchdog/watchdog.go constant UnlimitedConcurrencyWeight (line 14) | UnlimitedConcurrencyWeight = 10000 function Monitor (line 27) | func Monitor(cfg *config.Config) { function Shutdown (line 62) | func Shutdown(cfg *config.Config) { FILE: web/app/src/utils/misc.js function combineClasses (line 4) | function combineClasses(...inputs) { FILE: web/static.go constant RootPath (line 11) | RootPath = "static" constant IndexPath (line 12) | IndexPath = RootPath + "/index.html" FILE: web/static/js/app.js function v (line 1) | function v(...e){return(0,p.m6)((0,m.W)(e))} method setup (line 1) | setup(e){const t=(0,g.j)("inline-flex items-center justify-center whites... method setup (line 1) | setup(e){return(e,t)=>((0,l.wg)(),(0,l.iD)("div",{class:(0,n.C_)((0,r.SU... method setup (line 1) | setup(e){return(e,t)=>((0,l.wg)(),(0,l.iD)("div",{class:(0,n.C_)((0,r.SU... method setup (line 1) | setup(e){return(e,t)=>((0,l.wg)(),(0,l.iD)("h3",{class:(0,n.C_)((0,r.SU)... method setup (line 1) | setup(e){return(e,t)=>((0,l.wg)(),(0,l.iD)("div",{class:(0,n.C_)((0,r.SU... function F (line 1) | function F(e,t){return(0,l.wg)(),(0,l.iD)("div",R,t[0]||(t[0]=[(0,l._)("... method setup (line 1) | setup(e){const t=(0,i.yj)(),s=e,a=(0,r.iH)(!0),o=(0,r.iH)(0),u=(0,r.iH)(... method setup (line 1) | setup(e){const t=e,s=(0,l.Fl)((()=>{const e={xs:"w-4 h-4",sm:"w-6 h-6",m... method setup (line 1) | setup(e){const t=(0,i.yj)(),s=(0,r.iH)(!1),a=(0,r.iH)({oidc:!1,authentic... method setup (line 1) | setup(e){const t=(0,g.j)("inline-flex items-center rounded-full border p... method setup (line 1) | setup(e){const t=e,s=(0,l.Fl)((()=>{switch(t.status){case"healthy":retur... method setup (line 1) | setup(e,{emit:t}){const s=(0,i.tv)(),o=e,u=t,d=(0,r.iH)(null),c=(0,l.Fl)... method setup (line 1) | setup(e,{emit:t}){const s=(0,i.tv)(),o=e,u=t,d=(0,r.iH)(null),c=(0,l.Fl)... method setup (line 1) | setup(e){return(t,s)=>((0,l.wg)(),(0,l.iD)("input",{class:(0,n.C_)((0,r.... method setup (line 1) | setup(e,{emit:t}){const s=e,a=t,o=(0,r.iH)(!1),i=(0,r.iH)(null),u=(0,r.i... method setup (line 1) | setup(e,{emit:t}){const s=(0,r.iH)(""),a=(0,r.iH)(localStorage.getItem("... method setup (line 1) | setup(e,{emit:t}){const s=t,o=[{value:"10",label:"10s"},{value:"30",labe... method setup (line 1) | setup(e){const t=e,s=(0,r.iH)(!1),a=()=>{s.value=!s.value},o={outage:{ic... method setup (line 1) | setup(e){const t=e,s=(0,r.iH)(!1),a={outage:{icon:ks.Z,background:"bg-re... method setup (line 1) | setup(e,{emit:t}){const s=e,a=(0,l.Fl)((()=>s.announcements?s.announceme... method setup (line 1) | setup(e,{emit:t}){const s=e,a=t,o=(0,r.iH)(s.currentPageProp),i=(0,l.Fl)... method setup (line 1) | setup(e){al.kL.register(al.uw,al.f$,al.od,al.jn,al.Dx,al.u,al.De,al.Gu,a... method setup (line 1) | setup(e,{emit:t}){const s=(0,i.tv)(),o=(0,i.yj)(),u=t,d=(0,r.iH)(null),c... method setup (line 1) | setup(e){const t=e,s=(0,l.Fl)((()=>{switch(t.step.status){case"success":... method setup (line 1) | setup(e){const t=e,s=(0,l.Fl)((()=>t.completedSteps)),a=(0,l.Fl)((()=>t.... method setup (line 1) | setup(e){const t=e,s=(0,l.Fl)((()=>{switch(t.step.status){case"success":... method setup (line 1) | setup(e){const t=(0,i.tv)(),s=(0,i.yj)(),a=(0,r.iH)(!1),o=(0,r.iH)(null)... function s (line 1) | function s(a){var l=t[a];if(void 0!==l)return l.exports;var n=t[a]={expo... FILE: web/static/js/chunk-vendors.js class s (line 6) | class s{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,thi... method constructor (line 6) | constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effe... method active (line 6) | get active(){return this._active} method pause (line 6) | pause(){if(this._active){let t,e;if(this._isPaused=!0,this.scopes)for(... method resume (line 6) | resume(){if(this._active&&this._isPaused){let t,e;if(this._isPaused=!1... method run (line 6) | run(t){if(this._active){const e=r;try{return r=this,t()}finally{r=e}}e... method on (line 6) | on(){1===++this._on&&(this.prevScope=r,r=this)} method off (line 6) | off(){this._on>0&&0===--this._on&&(r=this.prevScope,this.prevScope=voi... method stop (line 6) | stop(t){if(this._active){let e,n;for(this._active=!1,e=0,n=this.effect... function a (line 6) | function a(){return r} class c (line 6) | class c{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,t... method constructor (line 6) | constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.fl... method pause (line 6) | pause(){this.flags|=64} method resume (line 6) | resume(){64&this.flags&&(this.flags&=-65,l.has(this)&&(l.delete(this),... method notify (line 6) | notify(){2&this.flags&&!(32&this.flags)||8&this.flags||f(this)} method run (line 6) | run(){if(!(1&this.flags))return this.fn();this.flags|=2,T(this),m(this... method stop (line 6) | stop(){if(1&this.flags){for(let t=this.deps;t;t=t.nextDep)v(t);this.de... method trigger (line 6) | trigger(){64&this.flags?l.add(this):this.scheduler?this.scheduler():th... method runIfDirty (line 6) | runIfDirty(){x(this)&&this.run()} method dirty (line 6) | get dirty(){return x(this)} method constructor (line 230) | constructor(t,e){this._chart=t,this._properties=new Map,this.configure... method configure (line 230) | configure(t){if(!(0,i.i)(t))return;const e=Object.keys(i.d.animation),... method _animateOptions (line 230) | _animateOptions(t,e){const n=e.options,i=h(t,n);if(!i)return[];const r... method _createAnimations (line 230) | _createAnimations(t,e){const n=this._properties,i=[],r=t.$animations||... method update (line 230) | update(t,e){if(0===this._properties.size)return void Object.assign(t,e... function f (line 6) | function f(t,e=!1){if(t.flags|=8,e)return t.next=h,void(h=t);t.next=u,u=t} function p (line 6) | function p(){d++} function g (line 6) | function g(){if(--d>0)return;if(h){let t=h;h=void 0;while(t){const e=t.n... function m (line 6) | function m(t){for(let e=t.deps;e;e=e.nextDep)e.version=-1,e.prevActiveLi... function b (line 6) | function b(t){let e,n=t.depsTail,i=n;while(i){const t=i.prevDep;-1===i.v... function x (line 6) | function x(t){for(let e=t.deps;e;e=e.nextDep)if(e.dep.version!==e.versio... function y (line 6) | function y(t){if(4&t.flags&&!(16&t.flags))return;if(t.flags&=-17,t.globa... function v (line 6) | function v(t,e=!1){const{dep:n,prevSub:i,nextSub:r}=t;if(i&&(i.nextSub=r... function w (line 6) | function w(t){const{prevDep:e,nextDep:n}=t;e&&(e.nextDep=n,t.prevDep=voi... function M (line 6) | function M(){_.push(k),k=!1} function S (line 6) | function S(){const t=_.pop();k=void 0===t||t} function T (line 6) | function T(t){const{cleanup:e}=t;if(t.cleanup=void 0,e){const t=o;o=void... class C (line 6) | class C{constructor(t,e){this.sub=t,this.dep=e,this.version=e.version,th... method constructor (line 6) | constructor(t,e){this.sub=t,this.dep=e,this.version=e.version,this.nex... class A (line 6) | class A{constructor(t){this.computed=t,this.version=0,this.activeLink=vo... method constructor (line 6) | constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,t... method track (line 6) | track(t){if(!o||!k||o===this.computed)return;let e=this.activeLink;if(... method trigger (line 6) | trigger(t){this.version++,D++,this.notify(t)} method notify (line 6) | notify(t){p();try{0;for(let t=this.subs;t;t=t.prevSub)t.sub.notify()&&... function O (line 6) | function O(t){if(t.dep.sc++,4&t.sub.flags){const e=t.dep.computed;if(e&&... function L (line 6) | function L(t,e,n){if(k&&o){let e=P.get(t);e||P.set(t,e=new Map);let i=e.... function z (line 6) | function z(t,e,n,r,o,s){const a=P.get(t);if(!a)return void D++;const l=t... method override (line 230) | static override(t){Object.assign(z.prototype,t)} method constructor (line 230) | constructor(t){this.options=t||{}} method init (line 230) | init(){} method formats (line 230) | formats(){return L()} method parse (line 230) | parse(){return L()} method format (line 230) | format(){return L()} method add (line 230) | add(){return L()} method diff (line 230) | diff(){return L()} method startOf (line 230) | startOf(){return L()} method endOf (line 230) | endOf(){return L()} function N (line 6) | function N(t){const e=Mt(t);return e===t?e:(L(e,"iterate",I),kt(t)?e:e.m... function F (line 6) | function F(t){return L(t=Mt(t),"iterate",I),t} method [Symbol.iterator] (line 6) | [Symbol.iterator](){return H(this,Symbol.iterator,Tt)} method concat (line 6) | concat(...t){return N(this).concat(...t.map((t=>(0,i.kJ)(t)?N(t):t)))} method entries (line 6) | entries(){return H(this,"entries",(t=>(t[1]=Tt(t[1]),t)))} method every (line 6) | every(t,e){return $(this,"every",t,e,void 0,arguments)} method filter (line 6) | filter(t,e){return $(this,"filter",t,e,(t=>t.map(Tt)),arguments)} method find (line 6) | find(t,e){return $(this,"find",t,e,Tt,arguments)} method findIndex (line 6) | findIndex(t,e){return $(this,"findIndex",t,e,void 0,arguments)} method findLast (line 6) | findLast(t,e){return $(this,"findLast",t,e,Tt,arguments)} method findLastIndex (line 6) | findLastIndex(t,e){return $(this,"findLastIndex",t,e,void 0,arguments)} method forEach (line 6) | forEach(t,e){return $(this,"forEach",t,e,void 0,arguments)} method includes (line 6) | includes(...t){return Y(this,"includes",t)} method indexOf (line 6) | indexOf(...t){return Y(this,"indexOf",t)} method join (line 6) | join(t){return N(this).join(t)} method lastIndexOf (line 6) | lastIndexOf(...t){return Y(this,"lastIndexOf",t)} method map (line 6) | map(t,e){return $(this,"map",t,e,void 0,arguments)} method pop (line 6) | pop(){return V(this,"pop")} method push (line 6) | push(...t){return V(this,"push",t)} method reduce (line 6) | reduce(t,...e){return B(this,"reduce",t,e)} method reduceRight (line 6) | reduceRight(t,...e){return B(this,"reduceRight",t,e)} method shift (line 6) | shift(){return V(this,"shift")} method some (line 6) | some(t,e){return $(this,"some",t,e,void 0,arguments)} method splice (line 6) | splice(...t){return V(this,"splice",t)} method toReversed (line 6) | toReversed(){return N(this).toReversed()} method toSorted (line 6) | toSorted(t){return N(this).toSorted(t)} method toSpliced (line 6) | toSpliced(...t){return N(this).toSpliced(...t)} method unshift (line 6) | unshift(...t){return V(this,"unshift",t)} method values (line 6) | values(){return H(this,"values",Tt)} function H (line 6) | function H(t,e,n){const i=F(t),r=i[e]();return i===t||kt(t)||(r._next=r.... function $ (line 6) | function $(t,e,n,i,r,o){const s=F(t),a=s!==t&&!kt(t),l=s[e];if(l!==W[e])... function B (line 6) | function B(t,e,n,i){const r=F(t);let o=n;return r!==t&&(kt(t)?n.length>3... function Y (line 6) | function Y(t,e,n){const i=Mt(t);L(i,"iterate",I);const r=i[e](...n);retu... function V (line 6) | function V(t,e,n=[]){M(),p();const i=Mt(t)[e].apply(t,n);return g(),S(),i} function X (line 6) | function X(t){(0,i.yk)(t)||(t=String(t));const e=Mt(this);return L(e,"ha... class G (line 6) | class G{constructor(t=!1,e=!1){this._isReadonly=t,this._isShallow=e}get(... method constructor (line 6) | constructor(t=!1,e=!1){this._isReadonly=t,this._isShallow=e} method get (line 6) | get(t,e,n){if("__v_skip"===e)return t["__v_skip"];const r=this._isRead... class Z (line 6) | class Z extends G{constructor(t=!1){super(!1,t)}set(t,e,n,r){let o=t[e];... method constructor (line 6) | constructor(t=!1){super(!1,t)} method set (line 6) | set(t,e,n,r){let o=t[e];if(!this._isShallow){const e=wt(o);if(kt(n)||w... method deleteProperty (line 6) | deleteProperty(t,e){const n=(0,i.RI)(t,e),r=t[e],o=Reflect.deletePrope... method has (line 6) | has(t,e){const n=Reflect.has(t,e);return(0,i.yk)(e)&&q.has(e)||L(t,"ha... method ownKeys (line 6) | ownKeys(t){return L(t,"iterate",(0,i.kJ)(t)?"length":E),Reflect.ownKey... class Q (line 6) | class Q extends G{constructor(t=!1){super(!0,t)}set(t,e){return!0}delete... method constructor (line 6) | constructor(t=!1){super(!0,t)} method set (line 6) | set(t,e){return!0} method deleteProperty (line 6) | deleteProperty(t,e){return!0} function it (line 6) | function it(t,e,n){return function(...r){const o=this["__v_raw"],s=Mt(o)... function rt (line 6) | function rt(t){return function(...e){return"delete"!==t&&("clear"===t?vo... function ot (line 6) | function ot(t,e){const n={get(n){const r=this["__v_raw"],o=Mt(r),s=Mt(n)... function st (line 6) | function st(t,e){const n=ot(t,e);return(e,r,o)=>"__v_isReactive"===r?!t:... function pt (line 6) | function pt(t){switch(t){case"Object":case"Array":return 1;case"Map":cas... method run (line 244) | run(t,e,n,i){const r=this.parse(t,e,n,i);return r?{setter:new dt(r.val... method validate (line 244) | validate(t,e,n){return!0} function gt (line 6) | function gt(t){return t["__v_skip"]||!Object.isExtensible(t)?0:pt((0,i.W... method parse (line 244) | parse(t,e,n){switch(e){case"G":case"GG":case"GGG":return n.era(t,{widt... method set (line 244) | set(t,e,n){return e.era=n,t.setFullYear(n,0,1),t.setHours(0,0,0,0),t} function mt (line 6) | function mt(t){return wt(t)?t:yt(t,!1,J,at,ut)} function bt (line 6) | function bt(t){return yt(t,!1,tt,lt,ht)} function xt (line 6) | function xt(t){return yt(t,!0,K,ct,dt)} function yt (line 6) | function yt(t,e,n,r,o){if(!(0,i.Kn)(t))return t;if(t["__v_raw"]&&(!e||!t... function vt (line 6) | function vt(t){return wt(t)?vt(t["__v_raw"]):!(!t||!t["__v_isReactive"])} function wt (line 6) | function wt(t){return!(!t||!t["__v_isReadonly"])} function kt (line 6) | function kt(t){return!(!t||!t["__v_isShallow"])} function _t (line 6) | function _t(t){return!!t&&!!t["__v_raw"]} function Mt (line 6) | function Mt(t){const e=t&&t["__v_raw"];return e?Mt(e):t} function St (line 6) | function St(t){return!(0,i.RI)(t,"__v_skip")&&Object.isExtensible(t)&&(0... function Ct (line 6) | function Ct(t){return!!t&&!0===t["__v_isRef"]} function At (line 6) | function At(t){return Pt(t,!1)} function Ot (line 6) | function Ot(t){return Pt(t,!0)} method parse (line 244) | parse(t,e,n){const i=t=>({year:t,isTwoDigitYear:"YY"===e});switch(e){c... method validate (line 244) | validate(t,e){return e.isTwoDigitYear||e.year>0} method set (line 244) | set(t,e,n,i){const r=At(t,i);if(n.isTwoDigitYear){const e=St(n.year,r)... function Pt (line 6) | function Pt(t,e){return Ct(t)?t:new Et(t,e)} method acquireContext (line 230) | acquireContext(t,e){const n=t&&t.getContext&&t.getContext("2d");return... method releaseContext (line 230) | releaseContext(t){const e=t.canvas;if(!e[dt])return!1;const n=e[dt].in... method addEventListener (line 230) | addEventListener(t,e,n){this.removeEventListener(t,e);const i=t.$proxi... method removeEventListener (line 230) | removeEventListener(t,e){const n=t.$proxies||(t.$proxies={}),i=n[e];if... method getDevicePixelRatio (line 230) | getDevicePixelRatio(){return window.devicePixelRatio} method getMaximumSize (line 230) | getMaximumSize(t,e,n,r){return(0,i.G)(t,e,n,r)} method isAttached (line 230) | isAttached(t){const e=t&&(0,i.I)(t);return!(!e||!e.isConnected)} class Et (line 6) | class Et{constructor(t,e){this.dep=new A,this["__v_isRef"]=!0,this["__v_... method constructor (line 6) | constructor(t,e){this.dep=new A,this["__v_isRef"]=!0,this["__v_isShall... method value (line 6) | get value(){return this.dep.track(),this._value} method value (line 6) | set value(t){const e=this._rawValue,n=this["__v_isShallow"]||kt(t)||wt... method parse (line 244) | parse(t,e){return _t("R"===e?4:e.length,t)} method set (line 244) | set(t,e,n){const i=u(t,0);return i.setFullYear(n,0,4),i.setHours(0,0,0... function Rt (line 6) | function Rt(t){return Ct(t)?t.value:t} method tooltipPosition (line 230) | tooltipPosition(t){const{x:e,y:n}=this.getProps(["x","y"],t);return{x:... method hasValue (line 230) | hasValue(){return(0,i.x)(this.x)&&(0,i.x)(this.y)} method getProps (line 230) | getProps(t,e){const n=this.$animations;if(!e||!n)return this;const i={... method parse (line 244) | parse(t,e){return _t("u"===e?4:e.length,t)} method set (line 244) | set(t,e,n){return t.setFullYear(n,0,1),t.setHours(0,0,0,0),t} function Lt (line 6) | function Lt(t){return vt(t)?t:new Proxy(t,It)} method parse (line 244) | parse(t,e,n){switch(e){case"q":case"qq":return kt(e.length,t);case"qo"... method validate (line 244) | validate(t,e){return e>=1&&e<=4} method set (line 244) | set(t,e,n){return t.setMonth(3*(n-1),1),t.setHours(0,0,0,0),t} class zt (line 6) | class zt{constructor(t,e,n){this.fn=t,this.setter=e,this._value=void 0,t... method constructor (line 6) | constructor(t,e,n){this.fn=t,this.setter=e,this._value=void 0,this.dep... method notify (line 6) | notify(){if(this.flags|=16,!(8&this.flags||o===this))return f(this,!0)... method value (line 6) | get value(){const t=this.dep.track();return y(this),t&&(t.version=this... method value (line 6) | set value(t){this.setter&&this.setter(t)} method parse (line 244) | parse(t,e,n){const i=t=>t-1;switch(e){case"M":return xt(yt(mt.month,t)... method validate (line 244) | validate(t,e){return e>=0&&e<=11} method set (line 244) | set(t,e,n){return t.setMonth(n,1),t.setHours(0,0,0,0),t} function Nt (line 6) | function Nt(t,e,n=!1){let r,o;(0,i.mf)(t)?r=t:(r=t.get,o=t.set);const s=... method parse (line 244) | parse(t,e,n){const i=t=>t-1;switch(e){case"L":return xt(yt(mt.month,t)... method validate (line 244) | validate(t,e){return e>=0&&e<=11} method set (line 244) | set(t,e,n){return t.setMonth(n,1),t.setHours(0,0,0,0),t} function Wt (line 6) | function Wt(t,e=!1,n=Ht){if(n){let e=jt.get(n);e||jt.set(n,e=[]),e.push(... method parse (line 244) | parse(t,e,n){switch(e){case"w":return yt(mt.week,t);case"wo":return n.... method validate (line 244) | validate(t,e){return e>=1&&e<=53} method set (line 244) | set(t,e,n,i){return Ct(Ht(t,n,i),i)} function $t (line 6) | function $t(t,e,n=i.kT){const{immediate:r,deep:o,once:s,scheduler:l,augm... function Bt (line 6) | function Bt(t,e=1/0,n){if(e<=0||!(0,i.Kn)(t)||t["__v_skip"])return t;if(... function o (line 6) | function o(t,e,n,i){try{return i?t(...i):t()}catch(r){a(r,e,n)}} function s (line 6) | function s(t,e,n,i){if((0,r.mf)(t)){const s=o(t,e,n,i);return s&&(0,r.tI... method constructor (line 6) | constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effe... method active (line 6) | get active(){return this._active} method pause (line 6) | pause(){if(this._active){let t,e;if(this._isPaused=!0,this.scopes)for(... method resume (line 6) | resume(){if(this._active&&this._isPaused){let t,e;if(this._isPaused=!1... method run (line 6) | run(t){if(this._active){const e=r;try{return r=this,t()}finally{r=e}}e... method on (line 6) | on(){1===++this._on&&(this.prevScope=r,r=this)} method off (line 6) | off(){this._on>0&&0===--this._on&&(r=this.prevScope,this.prevScope=voi... method stop (line 6) | stop(t){if(this._active){let e,n;for(this._active=!1,e=0,n=this.effect... function a (line 6) | function a(t,e,n,s=!0){const a=e?e.vnode:null,{errorHandler:c,throwUnhan... function l (line 6) | function l(t,e,n,i=!0,r=!1){if(r)throw t;console.error(t)} method constructor (line 230) | constructor(t,e,n,r){const o=e[n];r=(0,i.a)([t.to,r,o,t.from]);const s... method active (line 230) | active(){return this._active} method update (line 230) | update(t,e,n){if(this._active){this._notify(!1);const r=this._target[t... method cancel (line 230) | cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._no... method tick (line 230) | tick(t){const e=t-this._start,n=this._duration,i=this._prop,r=this._fr... method wait (line 230) | wait(){const t=this._promises||(this._promises=[]);return new Promise(... method _notify (line 230) | _notify(t){const e=t?"res":"rej",n=this._promises||[];for(let i=0;i>>1,r=c[i],o=_... function x (line 6) | function x(t){if(!(1&t.flags)){const e=_(t),n=c[c.length-1];!n||!(2&t.fl... function y (line 6) | function y(){g||(g=p.then(M))} function v (line 6) | function v(t){(0,r.kJ)(t)?h.push(...t):d&&-1===t.id?d.splice(f+1,0,t):1&... function w (line 6) | function w(t,e,n=u+1){for(0;n_(t)-_(e... function M (line 6) | function M(t){r.dG;try{for(u=0;u{i._... method constructor (line 6) | constructor(t,e){this.sub=t,this.dep=e,this.version=e.version,this.nex... function A (line 6) | function A(t,e){if(null===S)return t;const n=Ln(S),o=t.dirs||(t.dirs=[])... method constructor (line 6) | constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,t... method track (line 6) | track(t){if(!o||!k||o===this.computed)return;let e=this.activeLink;if(... method trigger (line 6) | trigger(t){this.version++,D++,this.notify(t)} method notify (line 6) | notify(t){p();try{0;for(let t=this.subs;t;t=t.prevSub)t.sub.notify()&&... function O (line 6) | function O(t,e,n,r){const o=t.dirs,a=e&&e.dirs;for(let l=0;l(0,r.l7)({name:t.name},e,{setup:t... function B (line 7) | function B(t){t.ids=[t.ids[0]+t.ids[2]+++"-",0,0]} function Y (line 7) | function Y(t,e,n,s,a=!1){if((0,r.kJ)(t))return void t.forEach(((t,i)=>Y(... function q (line 8) | function q(t,e){return(0,r.kJ)(t)?t.some((t=>q(t,e))):(0,r.HD)(t)?t.spli... method constructor (line 237) | constructor(t){if(t instanceof q)return t;const e=typeof t;let n;"obje... method valid (line 237) | get valid(){return this._valid} method rgb (line 237) | get rgb(){var t=Y(this._rgb);return t&&(t.a=a(t.a)),t} method rgb (line 237) | set rgb(t){this._rgb=V(t)} method rgbString (line 237) | rgbString(){return this._valid?j(this._rgb):void 0} method hexString (line 237) | hexString(){return this._valid?b(this._rgb):void 0} method hslString (line 237) | hslString(){return this._valid?P(this._rgb):void 0} method mix (line 237) | mix(t,e){if(t){const n=this.rgb,i=t.rgb;let r;const o=e===r?.5:e,s=2*o... method interpolate (line 237) | interpolate(t,e){return t&&(this._rgb=$(this._rgb,t._rgb,e)),this} method clone (line 237) | clone(){return new q(this.rgb)} method alpha (line 237) | alpha(t){return this._rgb.a=s(t),this} method clearer (line 237) | clearer(t){const e=this._rgb;return e.a*=1-t,this} method greyscale (line 237) | greyscale(){const t=this._rgb,e=i(.3*t.r+.59*t.g+.11*t.b);return t.r=t... method opaquer (line 237) | opaquer(t){const e=this._rgb;return e.a*=1+t,this} method negate (line 237) | negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,... method lighten (line 237) | lighten(t){return B(this._rgb,2,t),this} method darken (line 237) | darken(t){return B(this._rgb,2,-t),this} method saturate (line 237) | saturate(t){return B(this._rgb,1,t),this} method desaturate (line 237) | desaturate(t){return B(this._rgb,1,-t),this} method rotate (line 237) | rotate(t){return O(this._rgb,t),this} function X (line 8) | function X(t,e){Z(t,"a",e)} function G (line 8) | function G(t,e){Z(t,"da",e)} method constructor (line 6) | constructor(t=!1,e=!1){this._isReadonly=t,this._isShallow=e} method get (line 6) | get(t,e,n){if("__v_skip"===e)return t["__v_skip"];const r=this._isRead... function Z (line 8) | function Z(t,e,n=yn){const i=t.__wdc||(t.__wdc=()=>{let e=n;while(e){if(... method constructor (line 6) | constructor(t=!1){super(!1,t)} method set (line 6) | set(t,e,n,r){let o=t[e];if(!this._isShallow){const e=wt(o);if(kt(n)||w... method deleteProperty (line 6) | deleteProperty(t,e){const n=(0,i.RI)(t,e),r=t[e],o=Reflect.deletePrope... method has (line 6) | has(t,e){const n=Reflect.has(t,e);return(0,i.yk)(e)&&q.has(e)||L(t,"ha... method ownKeys (line 6) | ownKeys(t){return L(t,"iterate",(0,i.kJ)(t)?"length":E),Reflect.ownKey... function Q (line 8) | function Q(t,e,n,i){const o=tt(e,t,i,!0);at((()=>{(0,r.Od)(i[e],o)}),n)} method constructor (line 6) | constructor(t=!1){super(!0,t)} method set (line 6) | set(t,e){return!0} method deleteProperty (line 6) | deleteProperty(t,e){return!0} function J (line 8) | function J(t){t.shapeFlag&=-257,t.shapeFlag&=-513} function K (line 8) | function K(t){return 128&t.shapeFlag?t.ssContent:t} function tt (line 8) | function tt(t,e,n=yn,r=!1){if(n){const o=n[t]||(n[t]=[]),a=e.__weh||(e._... function ht (line 8) | function ht(t,e=yn){tt("ec",t,e)} method acquireContext (line 230) | acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null} method updateConfig (line 230) | updateConfig(t){t.options.animation=!1} method validate (line 244) | validate(t,e){return!0} function ft (line 8) | function ft(t,e){return mt(dt,t,!0,e)||t} method constructor (line 244) | constructor(t,e){super(),this.context=t||(t=>u(e,t))} method set (line 244) | set(t,e){return e.timestampIsSet?t:u(t,lt(t,this.context))} function gt (line 8) | function gt(t){return(0,r.HD)(t)?mt(dt,t,!1)||t:t||pt} method parse (line 244) | parse(t,e,n){switch(e){case"G":case"GG":case"GGG":return n.era(t,{widt... method set (line 244) | set(t,e,n){return e.era=n,t.setFullYear(n,0,1),t.setHours(0,0,0,0),t} function mt (line 8) | function mt(t,e,n=!0,i=!1){const o=S||yn;if(o){const n=o.type;if(t===dt)... function bt (line 8) | function bt(t,e){return t&&(t[e]||t[(0,r._A)(e)]||t[(0,r.kC)((0,r._A)(e)... function xt (line 8) | function xt(t,e,n,o){let s;const a=n&&n[o],l=(0,r.kJ)(t);if(l||(0,r.HD)(... function yt (line 8) | function yt(t,e,n={},i,o){if(S.ce||S.parent&&V(S.parent)&&S.parent.ce)re... function vt (line 8) | function vt(t){return t.some((t=>!Ke(t)||t.type!==$e&&!(t.type===He&&!vt... method get (line 8) | get({_:t},e){if("__v_skip"===e)return!0;const{ctx:n,setupState:o,data:s,... method set (line 8) | set({_:t},e,n){const{data:i,setupState:o,ctx:s}=t;return _t(o,e)?(o[e]=n... method has (line 8) | has({_:{data:t,setupState:e,accessCache:n,ctx:i,appContext:o,propsOption... method defineProperty (line 8) | defineProperty(t,e,n){return null!=n.get?t._.accessCache[e]=0:(0,r.RI)(n... function St (line 8) | function St(t){return(0,r.kJ)(t)?t.reduce(((t,e)=>(t[e]=null,t)),{}):t} function Dt (line 8) | function Dt(t){const e=Pt(t),n=t.proxy,o=t.ctx;Tt=!1,e.beforeCreate&&At(... method parse (line 244) | parse(t,e,n){const i=t=>({year:t,isTwoDigitYear:"yy"===e});switch(e){c... method validate (line 244) | validate(t,e){return e.isTwoDigitYear||e.year>0} method set (line 244) | set(t,e,n){const i=t.getFullYear();if(n.isTwoDigitYear){const e=St(n.y... function Ct (line 8) | function Ct(t,e,n=r.dG){(0,r.kJ)(t)&&(t=zt(t));for(const o in t){const n... function At (line 8) | function At(t,e,n){s((0,r.kJ)(t)?t.map((t=>t.bind(e.proxy))):t.bind(e.pr... function Ot (line 8) | function Ot(t,e,n,i){let o=i.includes(".")?De(n,i):()=>n[i];if((0,r.HD)(... method parse (line 244) | parse(t,e,n){const i=t=>({year:t,isTwoDigitYear:"YY"===e});switch(e){c... method validate (line 244) | validate(t,e){return e.isTwoDigitYear||e.year>0} method set (line 244) | set(t,e,n,i){const r=At(t,i);if(n.isTwoDigitYear){const e=St(n.year,r)... function Pt (line 8) | function Pt(t){const e=t.type,{mixins:n,extends:i}=e,{mixins:o,optionsCa... method acquireContext (line 230) | acquireContext(t,e){const n=t&&t.getContext&&t.getContext("2d");return... method releaseContext (line 230) | releaseContext(t){const e=t.canvas;if(!e[dt])return!1;const n=e[dt].in... method addEventListener (line 230) | addEventListener(t,e,n){this.removeEventListener(t,e);const i=t.$proxi... method removeEventListener (line 230) | removeEventListener(t,e){const n=t.$proxies||(t.$proxies={}),i=n[e];if... method getDevicePixelRatio (line 230) | getDevicePixelRatio(){return window.devicePixelRatio} method getMaximumSize (line 230) | getMaximumSize(t,e,n,r){return(0,i.G)(t,e,n,r)} method isAttached (line 230) | isAttached(t){const e=t&&(0,i.I)(t);return!(!e||!e.isConnected)} function Et (line 8) | function Et(t,e,n,i=!1){const{mixins:r,extends:o}=e;o&&Et(t,o,n,!0),r&&r... method constructor (line 6) | constructor(t,e){this.dep=new A,this["__v_isRef"]=!0,this["__v_isShall... method value (line 6) | get value(){return this.dep.track(),this._value} method value (line 6) | set value(t){const e=this._rawValue,n=this["__v_isShallow"]||kt(t)||wt... method parse (line 244) | parse(t,e){return _t("R"===e?4:e.length,t)} method set (line 244) | set(t,e,n){const i=u(t,0);return i.setFullYear(n,0,4),i.setHours(0,0,0... function It (line 8) | function It(t,e){return e?t?function(){return(0,r.l7)((0,r.mf)(t)?t.call... method parse (line 244) | parse(t,e,n){switch(e){case"Q":case"QQ":return kt(e.length,t);case"Qo"... method validate (line 244) | validate(t,e){return e>=1&&e<=4} method set (line 244) | set(t,e,n){return t.setMonth(3*(n-1),1),t.setHours(0,0,0,0),t} function Lt (line 8) | function Lt(t,e){return Ft(zt(t),zt(e))} method parse (line 244) | parse(t,e,n){switch(e){case"q":case"qq":return kt(e.length,t);case"qo"... method validate (line 244) | validate(t,e){return e>=1&&e<=4} method set (line 244) | set(t,e,n){return t.setMonth(3*(n-1),1),t.setHours(0,0,0,0),t} function zt (line 8) | function zt(t){if((0,r.kJ)(t)){const e={};for(let n=0;nt-1;switch(e){case"M":return xt(yt(mt.month,t)... method validate (line 244) | validate(t,e){return e>=0&&e<=11} method set (line 244) | set(t,e,n){return t.setMonth(n,1),t.setHours(0,0,0,0),t} function Nt (line 8) | function Nt(t,e){return t?[...new Set([].concat(t,e))]:e} method parse (line 244) | parse(t,e,n){const i=t=>t-1;switch(e){case"L":return xt(yt(mt.month,t)... method validate (line 244) | validate(t,e){return e>=0&&e<=11} method set (line 244) | set(t,e,n){return t.setMonth(n,1),t.setHours(0,0,0,0),t} function Ft (line 8) | function Ft(t,e){return t?(0,r.l7)(Object.create(null),t,e):e} function jt (line 8) | function jt(t,e){return t?(0,r.kJ)(t)&&(0,r.kJ)(e)?[...new Set([...t,...... function Ht (line 8) | function Ht(t,e){if(!t)return e;if(!e)return t;const n=(0,r.l7)(Object.c... function Wt (line 8) | function Wt(){return{app:null,config:{isNativeTag:r.NO,performance:!1,gl... method parse (line 244) | parse(t,e,n){switch(e){case"w":return yt(mt.week,t);case"wo":return n.... method validate (line 244) | validate(t,e){return e>=1&&e<=53} method set (line 244) | set(t,e,n,i){return Ct(Ht(t,n,i),i)} function Bt (line 8) | function Bt(t,e){return function(n,i=null){(0,r.mf)(n)||(n=(0,r.l7)({},n... function Vt (line 8) | function Vt(t,e){if(yn){let n=yn.provides;const i=yn.parent&&yn.parent.p... function Ut (line 8) | function Ut(t,e,n=!1){const i=vn();if(i||Yt){let o=Yt?Yt._context.provid... method parse (line 244) | parse(t,e,n){switch(e){case"I":return yt(mt.week,t);case"Io":return n.... method validate (line 244) | validate(t,e){return e>=1&&e<=53} method set (line 244) | set(t,e,n){return Pt(Vt(t,n))} function Zt (line 8) | function Zt(t,e,n,r=!1){const o={},s=Xt();t.propsDefaults=Object.create(... method parse (line 244) | parse(t,e,n){switch(e){case"D":case"DD":return yt(mt.dayOfYear,t);case... method validate (line 244) | validate(t,e){const n=t.getFullYear(),i=Tt(n);return i?e>=1&&e<=366:e>... method set (line 244) | set(t,e,n){return t.setMonth(0,n),t.setHours(0,0,0,0),t} function Qt (line 8) | function Qt(t,e,n,o){const{props:s,attrs:a,vnode:{patchFlag:l}}=t,c=(0,i... function Jt (line 8) | function Jt(t,e,n,o){const[s,a]=t.propsOptions;let l,c=!1;if(e)for(let i... function Kt (line 8) | function Kt(t,e,n,i,o,s){const a=t[n];if(null!=a){const t=(0,r.RI)(a,"de... method constructor (line 230) | constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void... method init (line 230) | init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,... method parse (line 230) | parse(t,e){return t} method getUserBounds (line 230) | getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:n,_suggestedMa... method getMinMax (line 230) | getMinMax(t){let e,{min:n,max:r,minDefined:o,maxDefined:s}=this.getUse... method getPadding (line 230) | getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,ri... method getTicks (line 230) | getTicks(){return this.ticks} method getLabels (line 230) | getLabels(){const t=this.chart.data;return this.options.labels||(this.... method getLabelItems (line 230) | getLabelItems(t=this.chart.chartArea){const e=this._labelItems||(this.... method beforeLayout (line 230) | beforeLayout(){this._cache={},this._dataLimitsCached=!1} method beforeUpdate (line 230) | beforeUpdate(){(0,i.Q)(this.options.beforeUpdate,[this])} method update (line 230) | update(t,e,n){const{beginAtZero:r,grace:o,ticks:s}=this.options,a=s.sa... method configure (line 230) | configure(){let t,e,n=this.options.reverse;this.isHorizontal()?(t=this... method afterUpdate (line 230) | afterUpdate(){(0,i.Q)(this.options.afterUpdate,[this])} method beforeSetDimensions (line 230) | beforeSetDimensions(){(0,i.Q)(this.options.beforeSetDimensions,[this])} method setDimensions (line 230) | setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.lef... method afterSetDimensions (line 230) | afterSetDimensions(){(0,i.Q)(this.options.afterSetDimensions,[this])} method _callHooks (line 230) | _callHooks(t){this.chart.notifyPlugins(t,this.getContext()),(0,i.Q)(th... method beforeDataLimits (line 230) | beforeDataLimits(){this._callHooks("beforeDataLimits")} method determineDataLimits (line 230) | determineDataLimits(){} method afterDataLimits (line 230) | afterDataLimits(){this._callHooks("afterDataLimits")} method beforeBuildTicks (line 230) | beforeBuildTicks(){this._callHooks("beforeBuildTicks")} method buildTicks (line 230) | buildTicks(){return[]} method afterBuildTicks (line 230) | afterBuildTicks(){this._callHooks("afterBuildTicks")} method beforeTickToLabelConversion (line 230) | beforeTickToLabelConversion(){(0,i.Q)(this.options.beforeTickToLabelCo... method generateTickLabels (line 230) | generateTickLabels(t){const e=this.options.ticks;let n,r,o;for(n=0,r=t... method afterTickToLabelConversion (line 230) | afterTickToLabelConversion(){(0,i.Q)(this.options.afterTickToLabelConv... method beforeCalculateLabelRotation (line 230) | beforeCalculateLabelRotation(){(0,i.Q)(this.options.beforeCalculateLab... method calculateLabelRotation (line 230) | calculateLabelRotation(){const t=this.options,e=t.ticks,n=Bt(this.tick... method afterCalculateLabelRotation (line 230) | afterCalculateLabelRotation(){(0,i.Q)(this.options.afterCalculateLabel... method afterAutoSkip (line 230) | afterAutoSkip(){} method beforeFit (line 230) | beforeFit(){(0,i.Q)(this.options.beforeFit,[this])} method fit (line 230) | fit(){const t={width:0,height:0},{chart:e,options:{ticks:n,title:r,gri... method _calculatePadding (line 230) | _calculatePadding(t,e,n,i){const{ticks:{align:r,padding:o},position:s}... method _handleMargins (line 230) | _handleMargins(){this._margins&&(this._margins.left=Math.max(this.padd... method afterFit (line 230) | afterFit(){(0,i.Q)(this.options.afterFit,[this])} method isHorizontal (line 230) | isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||... method isFullSize (line 230) | isFullSize(){return this.options.fullSize} method _convertTicksToLabels (line 230) | _convertTicksToLabels(t){let e,n;for(this.beforeTickToLabelConversion(... method _getLabelSizes (line 230) | _getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ti... method _computeLabelSizes (line 230) | _computeLabelSizes(t,e,n){const{ctx:r,_longestTextCache:o}=this,s=[],a... method getLabelForValue (line 230) | getLabelForValue(t){return t} method getPixelForValue (line 230) | getPixelForValue(t,e){return NaN} method getValueForPixel (line 230) | getValueForPixel(t){} method getPixelForTick (line 230) | getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:th... method getPixelForDecimal (line 230) | getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._start... method getDecimalForPixel (line 230) | getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return... method getBasePixel (line 230) | getBasePixel(){return this.getPixelForValue(this.getBaseValue())} method getBaseValue (line 230) | getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0} method getContext (line 230) | getContext(t){const e=this.ticks||[];if(t>=0&&t=0&&e<=6} method set (line 244) | set(t,e,n,i){return t=Jt(t,n,i),t.setHours(0,0,0,0),t} function ee (line 8) | function ee(t,e,n=!1){const i=n?te:e.propsCache,o=i.get(t);if(o)return o... method parse (line 244) | parse(t,e,n,i){const r=t=>{const e=7*Math.floor((t-1)/7);return(t+i.we... method validate (line 244) | validate(t,e){return e>=0&&e<=6} method set (line 244) | set(t,e,n,i){return t=Jt(t,n,i),t.setHours(0,0,0,0),t} function ne (line 8) | function ne(t){return"$"!==t[0]&&!(0,r.Gg)(t)} method inRange (line 258) | inRange(t,e,n,i){return y({x:t,y:e},{rect:this.getProps(["x","y","x2",... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const e=this.options,n=!(0,r.h)(this._visible)||this._visible;... method resolveElementProperties (line 258) | resolveElementProperties(t,e){let n;if(I(e))n=mt(t,e);else{const{cente... function he (line 8) | function he(){"boolean"!==typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__... method parse (line 244) | parse(t,e,n){switch(e){case"k":return yt(mt.hour24h,t);case"ko":return... method validate (line 244) | validate(t,e){return e>=1&&e<=24} method set (line 244) | set(t,e,n){const i=n<=24?n%24:n;return t.setHours(i,0,0,0),t} function fe (line 8) | function fe(t){return pe(t)} method parse (line 244) | parse(t,e,n){switch(e){case"s":return yt(mt.second,t);case"so":return ... method validate (line 244) | validate(t,e){return e>=0&&e<=59} method set (line 244) | set(t,e,n){return t.setSeconds(n,0),t} method inRange (line 258) | inRange(t,e,n,i){const r=(this.options.borderWidth+this.options.hitTol... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const{x:e,y:n,x2:i,y2:r,cp:o,options:s}=this;if(t.save(),!V(t,... method label (line 258) | get label(){return this.elements&&this.elements[0]} method resolveElementProperties (line 258) | resolveElementProperties(t,e){const n=yt(t,e),{x:i,y:o,x2:s,y2:a}=n,l=... function pe (line 8) | function pe(t,e){he();const n=(0,r.E9)();n.__VUE__=!0;const{insert:o,rem... method parse (line 244) | parse(t,e){const n=t=>Math.trunc(t*Math.pow(10,3-e.length));return xt(... method set (line 244) | set(t,e,n){return t.setMilliseconds(n),t} function ge (line 8) | function ge({type:t,props:e},n){return"svg"===n&&"foreignObject"===t||"m... function me (line 8) | function me({effect:t,job:e},n){n?(t.flags|=32,e.flags|=4):(t.flags&=-33... method parse (line 244) | parse(t,e){switch(e){case"X":return vt(bt.basicOptionalMinutes,t);case... method set (line 244) | set(t,e,n){return e.timestampIsSet?t:u(t,t.getTime()-ge(t)-n)} function be (line 8) | function be(t,e){return(!t||t&&!t.pendingBranch)&&e&&!e.persisted} method parse (line 244) | parse(t,e){switch(e){case"x":return vt(bt.basicOptionalMinutes,t);case... method set (line 244) | set(t,e,n){return e.timestampIsSet?t:u(t,t.getTime()-ge(t)-n)} function xe (line 8) | function xe(t,e,n=!1){const i=t.children,o=e.children;if((0,r.kJ)(i)&&(0... method parse (line 244) | parse(t){return wt(t)} method set (line 244) | set(t,e,n){return[u(t,1e3*n),{timestampIsSet:!0}]} function ye (line 8) | function ye(t){const e=t.slice(),n=[0];let i,r,o,s,a;const l=t.length;fo... method parse (line 244) | parse(t){return wt(t)} method set (line 244) | set(t,e,n){return[u(t,n),{timestampIsSet:!0}]} function ve (line 8) | function ve(t){const e=t.subTree.component;if(e)return e.asyncDep&&!e.as... function we (line 8) | function we(t){if(t)for(let e=0;e{let e=t;for(let t=0;t[[`datasets.${t}`,""]]))} method datasetAnimationScopeKeys (line 230) | datasetAnimationScopeKeys(t,e){return Se(`${t}.transition.${e}`,(()=>[... method datasetElementScopeKeys (line 230) | datasetElementScopeKeys(t,e){return Se(`${t}-${e}`,(()=>[[`datasets.${... method pluginScopeKeys (line 230) | pluginScopeKeys(t){const e=t.id,n=this.type;return Se(`${n}-plugin-${e... method _cachedScopes (line 230) | _cachedScopes(t,e){const n=this._scopeCache;let i=n.get(t);return i&&!... method getOptionScopes (line 230) | getOptionScopes(t,e,n){const{options:r,type:o}=this,s=this._cachedScop... method chartOptionScopes (line 230) | chartOptionScopes(){const{options:t,type:e}=this;return[t,i.a3[e]||{},... method resolveNamedOptions (line 230) | resolveNamedOptions(t,e,n,r=[""]){const o={$shared:!0},{resolver:s,sub... method createResolver (line 230) | createResolver(t,e,n=[""],r){const{resolver:o}=Ce(this._resolverCache,... function Ae (line 8) | function Ae(t,e,...n){if(t.isUnmounted)return;const i=t.vnode.props||r.k... function Oe (line 8) | function Oe(t,e,n=!1){const i=e.emitsCache,o=i.get(t);if(void 0!==o)retu... function Pe (line 8) | function Pe(t,e){return!(!t||!(0,r.F7)(e))&&(e=e.slice(2).replace(/Once$... function Ee (line 8) | function Ee(t){const{type:e,vnode:n,proxy:i,withProxy:o,propsOptions:[s]... function Le (line 8) | function Le(t,e,n){const{props:i,children:r,component:o}=t,{props:s,chil... method inRange (line 258) | inRange(t,e,n,i){const o=this.options.rotation,s=(this.options.borderW... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const{width:e,height:n,centerX:i,centerY:o,options:s}=this;t.s... method label (line 258) | get label(){return this.elements&&this.elements[0]} method resolveElementProperties (line 258) | resolveElementProperties(t,e){return vt(t,e)} function ze (line 8) | function ze(t,e,n){const i=Object.keys(e);if(i.length!==Object.keys(t).l... function Ne (line 8) | function Ne({vnode:t,parent:e},n){while(e){const i=e.subTree;if(i.suspen... method inRange (line 258) | inRange(t,e,n,i){const{x:r,y:o,x2:s,y2:a,width:l}=this.getProps(["x","... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const e=this.options,n=e.borderWidth;if(e.radius<.1)return;t.s... method resolveElementProperties (line 258) | resolveElementProperties(t,e){const n=xt(t,e);return n.initProperties=... function je (line 8) | function je(t,e){e&&e.pendingBranch?(0,r.kJ)(t)?e.effects.push(...t):e.e... function Ue (line 8) | function Ue(t=!1){Ye.push(Ve=t?null:[])} function qe (line 8) | function qe(){Ye.pop(),Ve=Ye[Ye.length-1]||null} function Ge (line 8) | function Ge(t,e=!1){Xe+=t,t<0&&Ve&&e&&(Ve.hasOnce=!0)} function Ze (line 8) | function Ze(t){return t.dynamicChildren=Xe>0?Ve||r.Z6:null,qe(),Xe>0&&Ve... function Qe (line 8) | function Qe(t,e,n,i,r,o){return Ze(rn(t,e,n,i,r,o,!0))} function Je (line 8) | function Je(t,e,n,i,r){return Ze(on(t,e,n,i,r,!0))} function Ke (line 8) | function Ke(t){return!!t&&!0===t.__v_isVNode} function tn (line 8) | function tn(t,e){return t.type===e.type&&t.key===e.key} function rn (line 8) | function rn(t,e=null,n=null,i=0,o=null,s=(t===He?0:1),a=!1,l=!1){const c... function sn (line 8) | function sn(t,e=null,n=null,o=0,s=null,a=!1){if(t&&t!==pt||(t=$e),Ke(t))... function an (line 8) | function an(t){return t?(0,i.X3)(t)||Gt(t)?(0,r.l7)({},t):t:null} function ln (line 8) | function ln(t,e,n=!1,i=!1){const{props:o,ref:s,patchFlag:a,children:l,tr... function cn (line 8) | function cn(t=" ",e=0){return on(We,null,t,e)} function un (line 8) | function un(t="",e=!1){return e?(Ue(),Je($e,null,t)):on($e,null,t)} function hn (line 8) | function hn(t){return null==t||"boolean"===typeof t?on($e):(0,r.kJ)(t)?o... function dn (line 8) | function dn(t){return null===t.el&&-1!==t.patchFlag||t.memo?t:ln(t)} function fn (line 8) | function fn(t,e){let n=0;const{shapeFlag:i}=t;if(null==e)e=null;else if(... function pn (line 8) | function pn(...t){const e={};for(let n=0;n{t.exposed=e||{}};return{attrs:new Proxy(t.att... function Ln (line 8) | function Ln(t){return t.exposed?t.exposeProxy||(t.exposeProxy=new Proxy(... function zn (line 8) | function zn(t,e=!0){return(0,r.mf)(t)?t.displayName||t.name:t.name||e&&t... function Nn (line 8) | function Nn(t){return(0,r.mf)(t)&&"__vccOpts"in t} function jn (line 8) | function jn(t,e,n){const i=arguments.length;return 2===i?(0,r.Kn)(e)&&!(... method constructor (line 230) | constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hov... method update (line 230) | update(t,e,n){this.maxWidth=t,this.maxHeight=e,this._margins=n,this.se... method setDimensions (line 230) | setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.lef... method buildLabels (line 230) | buildLabels(){const t=this.options.labels||{};let e=(0,i.Q)(t.generate... method fit (line 230) | fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width... method _fitRows (line 230) | _fitRows(t,e,n,i){const{ctx:r,maxWidth:o,options:{labels:{padding:s}}}... method _fitCols (line 230) | _fitCols(t,e,n,i){const{ctx:r,maxHeight:o,options:{labels:{padding:s}}... method adjustHitBoxes (line 230) | adjustHitBoxes(){if(!this.options.display)return;const t=this._compute... method isHorizontal (line 230) | isHorizontal(){return"top"===this.options.position||"bottom"===this.op... method draw (line 230) | draw(){if(this.options.display){const t=this.ctx;(0,i.Y)(t,this),this.... method _draw (line 230) | _draw(){const{options:t,columnSizes:e,lineWidths:n,ctx:r}=this,{align:... method drawTitle (line 230) | drawTitle(){const t=this.options,e=t.title,n=(0,i.a0)(e.font),r=(0,i.E... method _computeTitleHeight (line 230) | _computeTitleHeight(){const t=this.options.title,e=(0,i.a0)(t.font),n=... method _getLegendItemAt (line 230) | _getLegendItemAt(t,e){let n,r,o;if((0,i.ak)(t,this.left,this.right)&&(... method handleEvent (line 230) | handleEvent(t){const e=this.options;if(!Yn(t.type,e))return;const n=th... method setScopeId (line 14) | setScopeId(t,e){t.setAttribute(e,"")} method insertStaticContent (line 14) | insertStaticContent(t,e,n,i,r,o){const s=n?n.previousSibling:e.lastChild... function g (line 14) | function g(t,e,n){const i=t[f];i&&(e=(e?[e,...i]:[...i]).join(" ")),null... function v (line 14) | function v(t,e,n){const i=t.style,o=(0,r.HD)(n);let s=!1;if(n&&!o){if(e)... function k (line 14) | function k(t,e,n){if((0,r.kJ)(n))n.forEach((n=>k(t,e,n)));else if(null==... function S (line 14) | function S(t,e){const n=M[e];if(n)return n;let i=(0,r._A)(e);if("filter"... function D (line 14) | function D(t,e,n,i,o,s=(0,r.Pq)(e)){i&&e.startsWith("xlink:")?null==n?t.... function C (line 14) | function C(t,e,n,i,o){if("innerHTML"===e||"textContent"===e)return void(... method constructor (line 6) | constructor(t,e){this.sub=t,this.dep=e,this.version=e.version,this.nex... function A (line 14) | function A(t,e,n,i){t.addEventListener(e,n,i)} method constructor (line 6) | constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,t... method track (line 6) | track(t){if(!o||!k||o===this.computed)return;let e=this.activeLink;if(... method trigger (line 6) | trigger(t){this.version++,D++,this.notify(t)} method notify (line 6) | notify(t){p();try{0;for(let t=this.subs;t;t=t.prevSub)t.sub.notify()&&... function O (line 14) | function O(t,e,n,i){t.removeEventListener(e,n,i)} function E (line 14) | function E(t,e,n,i,r=null){const o=t[P]||(t[P]={}),s=o[e];if(i&&s)s.valu... function I (line 14) | function I(t){let e;if(R.test(t)){let n;e={};while(n=t.match(R))t=t.slic... method initialize (line 230) | initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,su... method update (line 230) | update(t){const e=this._cachedMeta,{dataset:n,data:r=[],_dataset:o}=e,... method updateElements (line 230) | updateElements(t,e,n,r){const o="reset"===r,{iScale:s,vScale:a,_stacke... method getMaxOverflow (line 230) | getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,n=e.options&&e.o... method draw (line 230) | draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.cha... function F (line 14) | function F(t,e){const n=t=>{if(t._vts){if(t._vts<=n.attached)return}else... function j (line 14) | function j(t,e){if((0,r.kJ)(e)){const n=t.stopImmediatePropagation;retur... function $ (line 14) | function $(t,e,n,i){if(i)return"innerHTML"===e||"textContent"===e||!!(e ... method created (line 16) | created(t,{value:e,modifiers:{number:n}},o){const s=(0,r.DM)(e);A(t,"cha... method mounted (line 16) | mounted(t,{value:e}){U(t,e)} method beforeUpdate (line 16) | beforeUpdate(t,e,n){t[Y]=B(n)} method updated (line 16) | updated(t,{value:e}){t._assigning||U(t,e)} function U (line 16) | function U(t,e){const n=t.multiple,i=(0,r.kJ)(e);if(!n||i||(0,r.DM)(e)){... function q (line 16) | function q(t){return"_value"in t?t._value:t.value} method constructor (line 237) | constructor(t){if(t instanceof q)return t;const e=typeof t;let n;"obje... method valid (line 237) | get valid(){return this._valid} method rgb (line 237) | get rgb(){var t=Y(this._rgb);return t&&(t.a=a(t.a)),t} method rgb (line 237) | set rgb(t){this._rgb=V(t)} method rgbString (line 237) | rgbString(){return this._valid?j(this._rgb):void 0} method hexString (line 237) | hexString(){return this._valid?b(this._rgb):void 0} method hslString (line 237) | hslString(){return this._valid?P(this._rgb):void 0} method mix (line 237) | mix(t,e){if(t){const n=this.rgb,i=t.rgb;let r;const o=e===r?.5:e,s=2*o... method interpolate (line 237) | interpolate(t,e){return t&&(this._rgb=$(this._rgb,t._rgb,e)),this} method clone (line 237) | clone(){return new q(this.rgb)} method alpha (line 237) | alpha(t){return this._rgb.a=s(t),this} method clearer (line 237) | clearer(t){const e=this._rgb;return e.a*=1-t,this} method greyscale (line 237) | greyscale(){const t=this._rgb,e=i(.3*t.r+.59*t.g+.11*t.b);return t.r=t... method opaquer (line 237) | opaquer(t){const e=this._rgb;return e.a*=1+t,this} method negate (line 237) | negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,... method lighten (line 237) | lighten(t){return B(this._rgb,2,t),this} method darken (line 237) | darken(t){return B(this._rgb,2,-t),this} method saturate (line 237) | saturate(t){return B(this._rgb,1,t),this} method desaturate (line 237) | desaturate(t){return B(this._rgb,1,-t),this} method rotate (line 237) | rotate(t){return O(this._rgb,t),this} function et (line 16) | function et(){return tt||(tt=(0,i.Us)(K))} function it (line 16) | function it(t){return t instanceof SVGElement?"svg":"function"===typeof ... function rt (line 16) | function rt(t){if((0,r.HD)(t)){const e=document.querySelector(t);return ... function i (line 23) | function i(t){const e=Object.create(null);for(const n of t.split(","))e[... function U (line 23) | function U(t){if(p(t)){const e={};for(let n=0;n{if... method constructor (line 6) | constructor(t=!1){super(!1,t)} method set (line 6) | set(t,e,n,r){let o=t[e];if(!this._isShallow){const e=wt(o);if(kt(n)||w... method deleteProperty (line 6) | deleteProperty(t,e){const n=(0,i.RI)(t,e),r=t[e],o=Reflect.deletePrope... method has (line 6) | has(t,e){const n=Reflect.has(t,e);return(0,i.yk)(e)&&q.has(e)||L(t,"ha... method ownKeys (line 6) | ownKeys(t){return L(t,"iterate",(0,i.kJ)(t)?"length":E),Reflect.ownKey... function Q (line 23) | function Q(t){let e="";if(v(t))e=t;else if(p(t))for(let n=0;nnt(t,e)))} class r (line 230) | class r{constructor(){this._request=null,this._charts=new Map,this._runn... method constructor (line 230) | constructor(){this._request=null,this._charts=new Map,this._running=!1... method _notify (line 230) | _notify(t,e,n,i){const r=e.listeners[i],o=e.duration;r.forEach((i=>i({... method _refresh (line 230) | _refresh(){this._request||(this._running=!0,this._request=i.r.call(win... method _update (line 230) | _update(t=Date.now()){let e=0;this._charts.forEach(((n,i)=>{if(!n.runn... method _getAnims (line 230) | _getAnims(t){const e=this._charts;let n=e.get(t);return n||(n={running... method listen (line 230) | listen(t,e,n){this._getAnims(t).listeners[e].push(n)} method add (line 230) | add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)} method has (line 230) | has(t){return this._getAnims(t).items.length>0} method start (line 230) | start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now... method running (line 230) | running(t){if(!this._running)return!1;const e=this._charts.get(t);retu... method stop (line 230) | stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;cons... method remove (line 230) | remove(t){return this._charts.delete(t)} method boolean (line 230) | boolean(t,e,n){return n>.5?e:t} method color (line 230) | color(t,e,n){const r=(0,i.c)(t||s),o=r.valid&&(0,i.c)(e||s);return o&&o.... method number (line 230) | number(t,e,n){return t+(e-t)*n} class l (line 230) | class l{constructor(t,e,n,r){const o=e[n];r=(0,i.a)([t.to,r,o,t.from]);c... method constructor (line 230) | constructor(t,e,n,r){const o=e[n];r=(0,i.a)([t.to,r,o,t.from]);const s... method active (line 230) | active(){return this._active} method update (line 230) | update(t,e,n){if(this._active){this._notify(!1);const r=this._target[t... method cancel (line 230) | cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._no... method tick (line 230) | tick(t){const e=t-this._start,n=this._duration,i=this._prop,r=this._fr... method wait (line 230) | wait(){const t=this._promises||(this._promises=[]);return new Promise(... method _notify (line 230) | _notify(t){const e=t?"res":"rej",n=this._promises||[];for(let i=0;in[t].a... function S (line 230) | function S(t,e){return(0,i.j)(t,{active:!1,dataset:void 0,datasetIndex:e... function T (line 230) | function T(t,e,n){return(0,i.j)(t,{active:!1,dataIndex:e,parsed:void 0,r... function D (line 230) | function D(t,e){const n=t.controller.index,i=t.vScale&&t.vScale.axis;if(... class P (line 230) | class P{static defaults={};static datasetElementType=null;static dataEle... method constructor (line 230) | constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cache... method initialize (line 230) | initialize(){const t=this._cachedMeta;this.configure(),this.linkScales... method updateIndex (line 230) | updateIndex(t){this.index!==t&&D(this._cachedMeta),this.index=t} method linkScales (line 230) | linkScales(){const t=this.chart,e=this._cachedMeta,n=this.getDataset()... method getDataset (line 230) | getDataset(){return this.chart.data.datasets[this.index]} method getMeta (line 230) | getMeta(){return this.chart.getDatasetMeta(this.index)} method getScaleForId (line 230) | getScaleForId(t){return this.chart.scales[t]} method _getOtherScale (line 230) | _getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScal... method reset (line 230) | reset(){this._update("reset")} method _destroy (line 230) | _destroy(){const t=this._cachedMeta;this._data&&(0,i.u)(this._data,thi... method _dataCheck (line 230) | _dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),n=this._d... method addElements (line 230) | addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetE... method buildOrUpdateElements (line 230) | buildOrUpdateElements(t){const e=this._cachedMeta,n=this.getDataset();... method configure (line 230) | configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type)... method parse (line 230) | parse(t,e){const{_cachedMeta:n,_data:r}=this,{iScale:o,_stacked:s}=n,a... method parsePrimitiveData (line 230) | parsePrimitiveData(t,e,n,i){const{iScale:r,vScale:o}=t,s=r.axis,a=o.ax... method parseArrayData (line 230) | parseArrayData(t,e,n,i){const{xScale:r,yScale:o}=t,s=new Array(i);let ... method parseObjectData (line 230) | parseObjectData(t,e,n,r){const{xScale:o,yScale:s}=t,{xAxisKey:a="x",yA... method getParsed (line 230) | getParsed(t){return this._cachedMeta._parsed[t]} method getDataElement (line 230) | getDataElement(t){return this._cachedMeta.data[t]} method applyStack (line 230) | applyStack(t,e,n){const i=this.chart,r=this._cachedMeta,o=e[t.axis],s=... method updateRangeFromParsed (line 230) | updateRangeFromParsed(t,e,n,i){const r=n[e.axis];let o=null===r?NaN:r;... method getMinMax (line 230) | getMinMax(t,e){const n=this._cachedMeta,r=n._parsed,o=n._sorted&&t===n... method getAllParsedValues (line 230) | getAllParsedValues(t){const e=this._cachedMeta._parsed,n=[];let r,o,s;... method getMaxOverflow (line 230) | getMaxOverflow(){return!1} method getLabelAndValue (line 230) | getLabelAndValue(t){const e=this._cachedMeta,n=e.iScale,i=e.vScale,r=t... method _update (line 230) | _update(t){const e=this._cachedMeta;this.update(t||"default"),e._clip=... method update (line 230) | update(t){} method draw (line 230) | draw(){const t=this._ctx,e=this.chart,n=this._cachedMeta,i=n.data||[],... method getStyle (line 230) | getStyle(t,e){const n=e?"active":"default";return void 0===t&&this._ca... method getContext (line 230) | getContext(t,e,n){const i=this.getDataset();let r;if(t>=0&&t0&&!... method getLabelAndValue (line 230) | getLabelAndValue(t){const e=this._cachedMeta,n=this.chart,r=n.data.lab... method getMaxBorderWidth (line 230) | getMaxBorderWidth(t){let e=0;const n=this.chart;let i,r,o,s,a;if(!t)fo... method getMaxOffset (line 230) | getMaxOffset(t){let e=0;for(let n=0,i=t.length;nt.pos===e))} function G (line 230) | function G(t,e){return t.filter((t=>-1===q.indexOf(t.pos)&&t.box.axis===... method constructor (line 6) | constructor(t=!1,e=!1){this._isReadonly=t,this._isShallow=e} method get (line 6) | get(t,e,n){if("__v_skip"===e)return t["__v_skip"];const r=this._isRead... function Z (line 230) | function Z(t,e){return t.sort(((t,n)=>{const i=e?n:t,r=e?t:n;return i.we... method constructor (line 6) | constructor(t=!1){super(!1,t)} method set (line 6) | set(t,e,n,r){let o=t[e];if(!this._isShallow){const e=wt(o);if(kt(n)||w... method deleteProperty (line 6) | deleteProperty(t,e){const n=(0,i.RI)(t,e),r=t[e],o=Reflect.deletePrope... method has (line 6) | has(t,e){const n=Reflect.has(t,e);return(0,i.yk)(e)&&q.has(e)||L(t,"ha... method ownKeys (line 6) | ownKeys(t){return L(t,"iterate",(0,i.kJ)(t)?"length":E),Reflect.ownKey... function Q (line 230) | function Q(t){const e=[];let n,i,r,o,s,a;for(n=0,i=(t||[]).length;nt.box.fullSize)),!0),i=Z(X(... function et (line 230) | function et(t,e,n,i){return Math.max(t[n],e[n])+Math.max(t[i],e[i])} function nt (line 230) | function nt(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.le... function it (line 230) | function it(t,e,n,r){const{pos:o,box:s}=n,a=t.maxPadding;if(!(0,i.i)(o))... function rt (line 230) | function rt(t){const e=t.maxPadding;function n(n){const i=Math.max(e[n]-... function ot (line 230) | function ot(t,e){const n=e.maxPadding;function i(t){const i={left:0,top:... function st (line 230) | function st(t,e,n,i){const r=[];let o,s,a,l,c,u;for(o=0,s=t.length,c=0;o... function at (line 230) | function at(t,e,n,i,r){t.top=n,t.left=e,t.right=e+i,t.bottom=n+r,t.width... function lt (line 230) | function lt(t,e,n,r){const o=n.padding;let{x:s,y:a}=e;for(const l of t){... method addBox (line 230) | addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e... method removeBox (line 230) | removeBox(t,e){const n=t.boxes?t.boxes.indexOf(e):-1;-1!==n&&t.boxes.spl... method configure (line 230) | configure(t,e,n){e.fullSize=n.fullSize,e.position=n.position,e.weight=n.... method update (line 230) | update(t,e,n,r){if(!t)return;const o=(0,i.E)(t.options.layout.padding),s... class ut (line 230) | class ut{acquireContext(t,e){}releaseContext(t){return!1}addEventListene... method acquireContext (line 230) | acquireContext(t,e){} method releaseContext (line 230) | releaseContext(t){return!1} method addEventListener (line 230) | addEventListener(t,e,n){} method removeEventListener (line 230) | removeEventListener(t,e,n){} method getDevicePixelRatio (line 230) | getDevicePixelRatio(){return 1} method getMaximumSize (line 230) | getMaximumSize(t,e,n,i){return e=Math.max(0,e||t.width),n=n||t.height,... method isAttached (line 230) | isAttached(t){return!0} method updateConfig (line 230) | updateConfig(t){} class ht (line 230) | class ht extends ut{acquireContext(t){return t&&t.getContext&&t.getConte... method acquireContext (line 230) | acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null} method updateConfig (line 230) | updateConfig(t){t.options.animation=!1} method validate (line 244) | validate(t,e){return!0} function gt (line 230) | function gt(t,e){const n=t.style,r=t.getAttribute("height"),o=t.getAttri... method parse (line 244) | parse(t,e,n){switch(e){case"G":case"GG":case"GGG":return n.era(t,{widt... method set (line 244) | set(t,e,n){return e.era=n,t.setFullYear(n,0,1),t.setHours(0,0,0,0),t} function bt (line 230) | function bt(t,e,n){t&&t.addEventListener(e,n,mt)} function xt (line 230) | function xt(t,e,n){t&&t.canvas&&t.canvas.removeEventListener(e,n,mt)} function yt (line 230) | function yt(t,e){const n=ft[t.type]||t.type,{x:r,y:o}=(0,i.z)(t,e);retur... function vt (line 230) | function vt(t,e){for(const n of t)if(n===e||n.contains(e))return!0} function wt (line 230) | function wt(t,e,n){const i=t.canvas,r=new MutationObserver((t=>{let e=!1... function kt (line 230) | function kt(t,e,n){const i=t.canvas,r=new MutationObserver((t=>{let e=!1... function St (line 230) | function St(){const t=window.devicePixelRatio;t!==Mt&&(Mt=t,_t.forEach((... function Tt (line 230) | function Tt(t,e){_t.size||window.addEventListener("resize",St),_t.set(t,e)} function Dt (line 230) | function Dt(t){_t.delete(t),_t.size||window.removeEventListener("resize"... method parse (line 244) | parse(t,e,n){const i=t=>({year:t,isTwoDigitYear:"yy"===e});switch(e){c... method validate (line 244) | validate(t,e){return e.isTwoDigitYear||e.year>0} method set (line 244) | set(t,e,n){const i=t.getFullYear();if(n.isTwoDigitYear){const e=St(n.y... function Ct (line 230) | function Ct(t,e,n){const r=t.canvas,o=r&&(0,i.I)(r);if(!o)return;const s... function At (line 230) | function At(t,e,n){n&&n.disconnect(),"resize"===e&&Dt(t)} function Ot (line 230) | function Ot(t,e,n){const r=t.canvas,o=(0,i.L)((e=>{null!==t.ctx&&n(yt(e,... method parse (line 244) | parse(t,e,n){const i=t=>({year:t,isTwoDigitYear:"YY"===e});switch(e){c... method validate (line 244) | validate(t,e){return e.isTwoDigitYear||e.year>0} method set (line 244) | set(t,e,n,i){const r=At(t,i);if(n.isTwoDigitYear){const e=St(n.year,r)... class Pt (line 230) | class Pt extends ut{acquireContext(t,e){const n=t&&t.getContext&&t.getCo... method acquireContext (line 230) | acquireContext(t,e){const n=t&&t.getContext&&t.getContext("2d");return... method releaseContext (line 230) | releaseContext(t){const e=t.canvas;if(!e[dt])return!1;const n=e[dt].in... method addEventListener (line 230) | addEventListener(t,e,n){this.removeEventListener(t,e);const i=t.$proxi... method removeEventListener (line 230) | removeEventListener(t,e){const n=t.$proxies||(t.$proxies={}),i=n[e];if... method getDevicePixelRatio (line 230) | getDevicePixelRatio(){return window.devicePixelRatio} method getMaximumSize (line 230) | getMaximumSize(t,e,n,r){return(0,i.G)(t,e,n,r)} method isAttached (line 230) | isAttached(t){const e=t&&(0,i.I)(t);return!(!e||!e.isConnected)} function Et (line 230) | function Et(t){return!(0,i.M)()||"undefined"!==typeof OffscreenCanvas&&t... method constructor (line 6) | constructor(t,e){this.dep=new A,this["__v_isRef"]=!0,this["__v_isShall... method value (line 6) | get value(){return this.dep.track(),this._value} method value (line 6) | set value(t){const e=this._rawValue,n=this["__v_isShallow"]||kt(t)||wt... method parse (line 244) | parse(t,e){return _t("R"===e?4:e.length,t)} method set (line 244) | set(t,e,n){const i=u(t,0);return i.setFullYear(n,0,4),i.setHours(0,0,0... class Rt (line 230) | class Rt{static defaults={};static defaultRoutes=void 0;x;y;active=!1;op... method tooltipPosition (line 230) | tooltipPosition(t){const{x:e,y:n}=this.getProps(["x","y"],t);return{x:... method hasValue (line 230) | hasValue(){return(0,i.x)(this.x)&&(0,i.x)(this.y)} method getProps (line 230) | getProps(t,e){const n=this.$animations;if(!e||!n)return this;const i={... method parse (line 244) | parse(t,e){return _t("u"===e?4:e.length,t)} method set (line 244) | set(t,e,n){return t.setFullYear(n,0,1),t.setHours(0,0,0,0),t} function It (line 230) | function It(t,e){const n=t.options.ticks,r=Lt(t),o=Math.min(n.maxTicksLi... method parse (line 244) | parse(t,e,n){switch(e){case"Q":case"QQ":return kt(e.length,t);case"Qo"... method validate (line 244) | validate(t,e){return e>=1&&e<=4} method set (line 244) | set(t,e,n){return t.setMonth(3*(n-1),1),t.setHours(0,0,0,0),t} function Lt (line 230) | function Lt(t){const e=t.options.offset,n=t._tickSize(),i=t._length/n+(e... method parse (line 244) | parse(t,e,n){switch(e){case"q":case"qq":return kt(e.length,t);case"qo"... method validate (line 244) | validate(t,e){return e>=1&&e<=4} method set (line 244) | set(t,e,n){return t.setMonth(3*(n-1),1),t.setHours(0,0,0,0),t} function zt (line 230) | function zt(t,e,n){const r=Ht(t),o=e.length/n;if(!r)return Math.max(o,1)... method constructor (line 6) | constructor(t,e,n){this.fn=t,this.setter=e,this._value=void 0,this.dep... method notify (line 6) | notify(){if(this.flags|=16,!(8&this.flags||o===this))return f(this,!0)... method value (line 6) | get value(){const t=this.dep.track();return y(this),t&&(t.version=this... method value (line 6) | set value(t){this.setter&&this.setter(t)} method parse (line 244) | parse(t,e,n){const i=t=>t-1;switch(e){case"M":return xt(yt(mt.month,t)... method validate (line 244) | validate(t,e){return e>=0&&e<=11} method set (line 244) | set(t,e,n){return t.setMonth(n,1),t.setHours(0,0,0,0),t} function Nt (line 230) | function Nt(t){const e=[];let n,i;for(n=0,i=t.length;nt-1;switch(e){case"L":return xt(yt(mt.month,t)... method validate (line 244) | validate(t,e){return e>=0&&e<=11} method set (line 244) | set(t,e,n){return t.setMonth(n,1),t.setHours(0,0,0,0),t} function Ft (line 230) | function Ft(t,e,n,i){let r,o=0,s=n[0];for(i=Math.ceil(i),r=0;r{const n=t.gc,i=n.length/2;let r;if(i>e){... method parse (line 244) | parse(t,e,n){switch(e){case"I":return yt(mt.week,t);case"Io":return n.... method validate (line 244) | validate(t,e){return e>=1&&e<=53} method set (line 244) | set(t,e,n){return Pt(Vt(t,n))} function qt (line 230) | function qt(t){return t.drawTicks?t.tickLength:0} function Xt (line 230) | function Xt(t,e){if(!t.display)return 0;const n=(0,i.a0)(t.font,e),r=(0,... method inRange (line 258) | inRange(t,e,n,i){const{x:o,y:s}=h({x:t,y:e},this.getCenterPoint(i),(0,... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){t.save(),Y(t,this.getCenterPoint(),this.options.rotation),X(t,... method label (line 258) | get label(){return this.elements&&this.elements[0]} method resolveElementProperties (line 258) | resolveElementProperties(t,e){return vt(t,e)} function Gt (line 230) | function Gt(t,e){return(0,i.j)(t,{scale:e,type:"scale"})} method parse (line 244) | parse(t,e,n){switch(e){case"d":return yt(mt.date,t);case"do":return n.... method validate (line 244) | validate(t,e){const n=t.getFullYear(),i=Tt(n),r=t.getMonth();return i?... method set (line 244) | set(t,e,n){return t.setDate(n),t.setHours(0,0,0,0),t} method inRange (line 258) | inRange(t,e,n,i){return y({x:t,y:e},{rect:this.getProps(["x","y","x2",... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const e=this.options;e.display&&e.content&&(ee(t,this),t.save(... method resolveElementProperties (line 258) | resolveElementProperties(t,e){const n=Zt(t,e);if(!n)return{};const{con... function Zt (line 230) | function Zt(t,e,n){return(0,i.j)(t,{tick:n,index:e,type:"tick"})} method parse (line 244) | parse(t,e,n){switch(e){case"D":case"DD":return yt(mt.dayOfYear,t);case... method validate (line 244) | validate(t,e){const n=t.getFullYear(),i=Tt(n);return i?e>=1&&e<=366:e>... method set (line 244) | set(t,e,n){return t.setMonth(0,n),t.setHours(0,0,0,0),t} function Qt (line 230) | function Qt(t,e,n){let r=(0,i.a1)(t);return(n&&"right"!==e||!n&&"right"=... function Jt (line 230) | function Jt(t,e,n,r){const{top:o,left:s,bottom:a,right:l,chart:c}=t,{cha... class Kt (line 230) | class Kt extends Rt{constructor(t){super(),this.id=t.id,this.type=t.type... method constructor (line 230) | constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void... method init (line 230) | init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,... method parse (line 230) | parse(t,e){return t} method getUserBounds (line 230) | getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:n,_suggestedMa... method getMinMax (line 230) | getMinMax(t){let e,{min:n,max:r,minDefined:o,maxDefined:s}=this.getUse... method getPadding (line 230) | getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,ri... method getTicks (line 230) | getTicks(){return this.ticks} method getLabels (line 230) | getLabels(){const t=this.chart.data;return this.options.labels||(this.... method getLabelItems (line 230) | getLabelItems(t=this.chart.chartArea){const e=this._labelItems||(this.... method beforeLayout (line 230) | beforeLayout(){this._cache={},this._dataLimitsCached=!1} method beforeUpdate (line 230) | beforeUpdate(){(0,i.Q)(this.options.beforeUpdate,[this])} method update (line 230) | update(t,e,n){const{beginAtZero:r,grace:o,ticks:s}=this.options,a=s.sa... method configure (line 230) | configure(){let t,e,n=this.options.reverse;this.isHorizontal()?(t=this... method afterUpdate (line 230) | afterUpdate(){(0,i.Q)(this.options.afterUpdate,[this])} method beforeSetDimensions (line 230) | beforeSetDimensions(){(0,i.Q)(this.options.beforeSetDimensions,[this])} method setDimensions (line 230) | setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.lef... method afterSetDimensions (line 230) | afterSetDimensions(){(0,i.Q)(this.options.afterSetDimensions,[this])} method _callHooks (line 230) | _callHooks(t){this.chart.notifyPlugins(t,this.getContext()),(0,i.Q)(th... method beforeDataLimits (line 230) | beforeDataLimits(){this._callHooks("beforeDataLimits")} method determineDataLimits (line 230) | determineDataLimits(){} method afterDataLimits (line 230) | afterDataLimits(){this._callHooks("afterDataLimits")} method beforeBuildTicks (line 230) | beforeBuildTicks(){this._callHooks("beforeBuildTicks")} method buildTicks (line 230) | buildTicks(){return[]} method afterBuildTicks (line 230) | afterBuildTicks(){this._callHooks("afterBuildTicks")} method beforeTickToLabelConversion (line 230) | beforeTickToLabelConversion(){(0,i.Q)(this.options.beforeTickToLabelCo... method generateTickLabels (line 230) | generateTickLabels(t){const e=this.options.ticks;let n,r,o;for(n=0,r=t... method afterTickToLabelConversion (line 230) | afterTickToLabelConversion(){(0,i.Q)(this.options.afterTickToLabelConv... method beforeCalculateLabelRotation (line 230) | beforeCalculateLabelRotation(){(0,i.Q)(this.options.beforeCalculateLab... method calculateLabelRotation (line 230) | calculateLabelRotation(){const t=this.options,e=t.ticks,n=Bt(this.tick... method afterCalculateLabelRotation (line 230) | afterCalculateLabelRotation(){(0,i.Q)(this.options.afterCalculateLabel... method afterAutoSkip (line 230) | afterAutoSkip(){} method beforeFit (line 230) | beforeFit(){(0,i.Q)(this.options.beforeFit,[this])} method fit (line 230) | fit(){const t={width:0,height:0},{chart:e,options:{ticks:n,title:r,gri... method _calculatePadding (line 230) | _calculatePadding(t,e,n,i){const{ticks:{align:r,padding:o},position:s}... method _handleMargins (line 230) | _handleMargins(){this._margins&&(this._margins.left=Math.max(this.padd... method afterFit (line 230) | afterFit(){(0,i.Q)(this.options.afterFit,[this])} method isHorizontal (line 230) | isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||... method isFullSize (line 230) | isFullSize(){return this.options.fullSize} method _convertTicksToLabels (line 230) | _convertTicksToLabels(t){let e,n;for(this.beforeTickToLabelConversion(... method _getLabelSizes (line 230) | _getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ti... method _computeLabelSizes (line 230) | _computeLabelSizes(t,e,n){const{ctx:r,_longestTextCache:o}=this,s=[],a... method getLabelForValue (line 230) | getLabelForValue(t){return t} method getPixelForValue (line 230) | getPixelForValue(t,e){return NaN} method getValueForPixel (line 230) | getValueForPixel(t){} method getPixelForTick (line 230) | getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:th... method getPixelForDecimal (line 230) | getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._start... method getDecimalForPixel (line 230) | getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return... method getBasePixel (line 230) | getBasePixel(){return this.getPixelForValue(this.getBaseValue())} method getBaseValue (line 230) | getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0} method getContext (line 230) | getContext(t){const e=this.ticks||[];if(t>=0&&t=0&&e<=6} method set (line 244) | set(t,e,n,i){return t=Jt(t,n,i),t.setHours(0,0,0,0),t} class te (line 230) | class te{constructor(t,e,n){this.type=t,this.scope=e,this.override=n,thi... method constructor (line 230) | constructor(t,e,n){this.type=t,this.scope=e,this.override=n,this.items... method isForType (line 230) | isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prot... method register (line 230) | register(t){const e=Object.getPrototypeOf(t);let n;ie(e)&&(n=this.regi... method get (line 230) | get(t){return this.items[t]} method unregister (line 230) | unregister(t){const e=this.items,n=t.id,r=this.scope;n in e&&delete e[... method parse (line 244) | parse(t,e,n,i){const r=t=>{const e=7*Math.floor((t-1)/7);return(t+i.we... method validate (line 244) | validate(t,e){return e>=0&&e<=6} method set (line 244) | set(t,e,n,i){return t=Jt(t,n,i),t.setHours(0,0,0,0),t} function ee (line 230) | function ee(t,e,n){const r=(0,i.a4)(Object.create(null),[n?i.d.get(n):{}... method parse (line 244) | parse(t,e,n,i){const r=t=>{const e=7*Math.floor((t-1)/7);return(t+i.we... method validate (line 244) | validate(t,e){return e>=0&&e<=6} method set (line 244) | set(t,e,n,i){return t=Jt(t,n,i),t.setHours(0,0,0,0),t} function ne (line 230) | function ne(t,e){Object.keys(e).forEach((n=>{const r=n.split("."),o=r.po... method inRange (line 258) | inRange(t,e,n,i){return y({x:t,y:e},{rect:this.getProps(["x","y","x2",... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const e=this.options,n=!(0,r.h)(this._visible)||this._visible;... method resolveElementProperties (line 258) | resolveElementProperties(t,e){let n;if(I(e))n=mt(t,e);else{const{cente... function ie (line 230) | function ie(t){return"id"in t&&"defaults"in t} class re (line 230) | class re{constructor(){this.controllers=new te(P,"datasets",!0),this.ele... method constructor (line 230) | constructor(){this.controllers=new te(P,"datasets",!0),this.elements=n... method add (line 230) | add(...t){this._each("register",t)} method remove (line 230) | remove(...t){this._each("unregister",t)} method addControllers (line 230) | addControllers(...t){this._each("register",t,this.controllers)} method addElements (line 230) | addElements(...t){this._each("register",t,this.elements)} method addPlugins (line 230) | addPlugins(...t){this._each("register",t,this.plugins)} method addScales (line 230) | addScales(...t){this._each("register",t,this.scales)} method getController (line 230) | getController(t){return this._get(t,this.controllers,"controller")} method getElement (line 230) | getElement(t){return this._get(t,this.elements,"element")} method getPlugin (line 230) | getPlugin(t){return this._get(t,this.plugins,"plugin")} method getScale (line 230) | getScale(t){return this._get(t,this.scales,"scale")} method removeControllers (line 230) | removeControllers(...t){this._each("unregister",t,this.controllers)} method removeElements (line 230) | removeElements(...t){this._each("unregister",t,this.elements)} method removePlugins (line 230) | removePlugins(...t){this._each("unregister",t,this.plugins)} method removeScales (line 230) | removeScales(...t){this._each("unregister",t,this.scales)} method _each (line 230) | _each(t,e,n){[...e].forEach((e=>{const r=n||this._getRegistryForType(e... method _exec (line 230) | _exec(t,e,n){const r=(0,i.a5)(t);(0,i.Q)(n["before"+r],[],n),e[t](n),(... method _getRegistryForType (line 230) | _getRegistryForType(t){for(let e=0;e0===t?7:t;switch(e){case"i":case"ii":return kt... method validate (line 244) | validate(t,e){return e>=1&&e<=7} method set (line 244) | set(t,e,n){return t=ie(t,n),t.setHours(0,0,0,0),t} class se (line 230) | class se{constructor(){this._init=void 0}notify(t,e,n,i){if("beforeInit"... method constructor (line 230) | constructor(){this._init=void 0} method notify (line 230) | notify(t,e,n,i){if("beforeInit"===e&&(this._init=this._createDescripto... method _notify (line 230) | _notify(t,e,n,r){r=r||{};for(const o of t){const t=o.plugin,s=t[n],a=[... method invalidate (line 230) | invalidate(){(0,i.k)(this._cache)||(this._oldCache=this._cache,this._c... method _descriptors (line 230) | _descriptors(t){if(this._cache)return this._cache;const e=this._cache=... method _createDescriptors (line 230) | _createDescriptors(t,e){const n=t&&t.config,r=(0,i.v)(n.options&&n.opt... method _notifyStateChanges (line 230) | _notifyStateChanges(t){const e=this._oldCache||[],n=this._cache,i=(t,e... method parse (line 244) | parse(t,e,n){switch(e){case"b":case"bb":case"bbb":return n.dayPeriod(t... method set (line 244) | set(t,e,n){return t.setHours(Mt(n),0,0,0),t} function ae (line 230) | function ae(t){const e={},n=[],i=Object.keys(oe.plugins.items);for(let o... method parse (line 244) | parse(t,e,n){switch(e){case"B":case"BB":case"BBB":return n.dayPeriod(t... method set (line 244) | set(t,e,n){return t.setHours(Mt(n),0,0,0),t} function le (line 230) | function le(t,e){return e||!1!==t?!0===t?{}:t:null} method parse (line 244) | parse(t,e,n){switch(e){case"h":return yt(mt.hour12h,t);case"ho":return... method validate (line 244) | validate(t,e){return e>=1&&e<=12} method set (line 244) | set(t,e,n){const i=t.getHours()>=12;return i&&n<12?t.setHours(n+12,0,0... function ce (line 230) | function ce(t,{plugins:e,localIds:n},i,r){const o=[],s=t.getContext();fo... method parse (line 244) | parse(t,e,n){switch(e){case"H":return yt(mt.hour23h,t);case"Ho":return... method validate (line 244) | validate(t,e){return e>=0&&e<=23} method set (line 244) | set(t,e,n){return t.setHours(n,0,0,0),t} function ue (line 230) | function ue(t,{plugin:e,local:n},i,r){const o=t.pluginScopeKeys(e),s=t.g... method parse (line 244) | parse(t,e,n){switch(e){case"K":return yt(mt.hour11h,t);case"Ko":return... method validate (line 244) | validate(t,e){return e>=0&&e<=11} method set (line 244) | set(t,e,n){const i=t.getHours()>=12;return i&&n<12?t.setHours(n+12,0,0... function he (line 230) | function he(t,e){const n=i.d.datasets[t]||{},r=(e.datasets||{})[t]||{};r... method parse (line 244) | parse(t,e,n){switch(e){case"k":return yt(mt.hour24h,t);case"ko":return... method validate (line 244) | validate(t,e){return e>=1&&e<=24} method set (line 244) | set(t,e,n){const i=n<=24?n%24:n;return t.setHours(i,0,0,0),t} function de (line 230) | function de(t,e){let n=t;return"_index_"===t?n=e:"_value_"===t&&(n="x"==... method parse (line 244) | parse(t,e,n){switch(e){case"m":return yt(mt.minute,t);case"mo":return ... method validate (line 244) | validate(t,e){return e>=0&&e<=59} method set (line 244) | set(t,e,n){return t.setMinutes(n,0,0),t} function fe (line 230) | function fe(t,e){return t===e?"_index_":"_value_"} method parse (line 244) | parse(t,e,n){switch(e){case"s":return yt(mt.second,t);case"so":return ... method validate (line 244) | validate(t,e){return e>=0&&e<=59} method set (line 244) | set(t,e,n){return t.setSeconds(n,0),t} method inRange (line 258) | inRange(t,e,n,i){const r=(this.options.borderWidth+this.options.hitTol... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const{x:e,y:n,x2:i,y2:r,cp:o,options:s}=this;if(t.save(),!V(t,... method label (line 258) | get label(){return this.elements&&this.elements[0]} method resolveElementProperties (line 258) | resolveElementProperties(t,e){const n=yt(t,e),{x:i,y:o,x2:s,y2:a}=n,l=... function pe (line 230) | function pe(t){if("x"===t||"y"===t||"r"===t)return t} method parse (line 244) | parse(t,e){const n=t=>Math.trunc(t*Math.pow(10,3-e.length));return xt(... method set (line 244) | set(t,e,n){return t.setMilliseconds(n),t} function ge (line 230) | function ge(t){return"top"===t||"bottom"===t?"x":"left"===t||"right"===t... function me (line 230) | function me(t,...e){if(pe(t))return t;for(const n of e){const e=n.axis||... method parse (line 244) | parse(t,e){switch(e){case"X":return vt(bt.basicOptionalMinutes,t);case... method set (line 244) | set(t,e,n){return e.timestampIsSet?t:u(t,t.getTime()-ge(t)-n)} function be (line 230) | function be(t,e,n){if(n[e+"AxisID"]===t)return{axis:e}} method parse (line 244) | parse(t,e){switch(e){case"x":return vt(bt.basicOptionalMinutes,t);case... method set (line 244) | set(t,e,n){return e.timestampIsSet?t:u(t,t.getTime()-ge(t)-n)} function xe (line 230) | function xe(t,e){if(e.data&&e.data.datasets){const n=e.data.datasets.fil... method parse (line 244) | parse(t){return wt(t)} method set (line 244) | set(t,e,n){return[u(t,1e3*n),{timestampIsSet:!0}]} function ye (line 230) | function ye(t,e){const n=i.a3[t.type]||{scales:{}},r=e.scales||{},o=he(t... method parse (line 244) | parse(t){return wt(t)} method set (line 244) | set(t,e,n){return[u(t,n),{timestampIsSet:!0}]} function ve (line 230) | function ve(t){const e=t.options||(t.options={});e.plugins=(0,i.v)(e.plu... function we (line 230) | function we(t){return t=t||{},t.datasets=t.datasets||[],t.labels=t.label... function ke (line 230) | function ke(t){return t=t||{},t.data=we(t.data),ve(t),t} function Se (line 230) | function Se(t,e){let n=_e.get(t);return n||(n=e(),_e.set(t,n),Me.add(n)),n} class De (line 230) | class De{constructor(t){this._config=ke(t),this._scopeCache=new Map,this... method constructor (line 230) | constructor(t){this._config=ke(t),this._scopeCache=new Map,this._resol... method platform (line 230) | get platform(){return this._config.platform} method type (line 230) | get type(){return this._config.type} method type (line 230) | set type(t){this._config.type=t} method data (line 230) | get data(){return this._config.data} method data (line 230) | set data(t){this._config.data=we(t)} method options (line 230) | get options(){return this._config.options} method options (line 230) | set options(t){this._config.options=t} method plugins (line 230) | get plugins(){return this._config.plugins} method update (line 230) | update(){const t=this._config;this.clearCache(),ve(t)} method clearCache (line 230) | clearCache(){this._scopeCache.clear(),this._resolverCache.clear()} method datasetScopeKeys (line 230) | datasetScopeKeys(t){return Se(t,(()=>[[`datasets.${t}`,""]]))} method datasetAnimationScopeKeys (line 230) | datasetAnimationScopeKeys(t,e){return Se(`${t}.transition.${e}`,(()=>[... method datasetElementScopeKeys (line 230) | datasetElementScopeKeys(t,e){return Se(`${t}-${e}`,(()=>[[`datasets.${... method pluginScopeKeys (line 230) | pluginScopeKeys(t){const e=t.id,n=this.type;return Se(`${n}-plugin-${e... method _cachedScopes (line 230) | _cachedScopes(t,e){const n=this._scopeCache;let i=n.get(t);return i&&!... method getOptionScopes (line 230) | getOptionScopes(t,e,n){const{options:r,type:o}=this,s=this._cachedScop... method chartOptionScopes (line 230) | chartOptionScopes(){const{options:t,type:e}=this;return[t,i.a3[e]||{},... method resolveNamedOptions (line 230) | resolveNamedOptions(t,e,n,r=[""]){const o={$shared:!0},{resolver:s,sub... method createResolver (line 230) | createResolver(t,e,n=[""],r){const{resolver:o}=Ce(this._resolverCache,... function Ce (line 230) | function Ce(t,e,n){let r=t.get(e);r||(r=new Map,t.set(e,r));const o=n.jo... function Oe (line 230) | function Oe(t,e){const{isScriptable:n,isIndexable:r}=(0,i.aa)(t);for(con... function Re (line 230) | function Re(t,e){return"top"===t||"bottom"===t||-1===Ee.indexOf(t)&&"x"=... function Ie (line 230) | function Ie(t,e){return function(n,i){return n[t]===i[t]?n[e]-i[e]:n[t]-... method constructor (line 244) | constructor(t,e){this.animation=void 0,this.backgroundColor="rgba(0,0,... method set (line 244) | set(t,e){return Re(this,t,e)} method get (line 244) | get(t){return Ee(this,t)} method describe (line 244) | describe(t,e){return Re(Pe,t,e)} method override (line 244) | override(t,e){return Re(Oe,t,e)} method route (line 244) | route(t,e,n,i){const r=Ee(this,t),o=Ee(this,n),s="_"+e;Object.definePr... method apply (line 244) | apply(t){t.forEach((t=>t(this)))} function Le (line 230) | function Le(t){const e=t.chart,n=e.options.animation;e.notifyPlugins("af... method inRange (line 258) | inRange(t,e,n,i){const o=this.options.rotation,s=(this.options.borderW... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const{width:e,height:n,centerX:i,centerY:o,options:s}=this;t.s... method label (line 258) | get label(){return this.elements&&this.elements[0]} method resolveElementProperties (line 258) | resolveElementProperties(t,e){return vt(t,e)} function ze (line 230) | function ze(t){const e=t.chart,n=e.options.animation;(0,i.Q)(n&&n.onProg... function Ne (line 230) | function Ne(t){return(0,i.M)()&&"string"===typeof t?t=document.getElemen... method inRange (line 258) | inRange(t,e,n,i){const{x:r,y:o,x2:s,y2:a,width:l}=this.getProps(["x","... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const e=this.options,n=e.borderWidth;if(e.radius<.1)return;t.s... method resolveElementProperties (line 258) | resolveElementProperties(t,e){const n=xt(t,e);return n.initProperties=... function He (line 230) | function He(t,e,n){const i=Object.keys(t);for(const r of i){const i=+r;i... function We (line 230) | function We(t,e,n,i){return n&&"mouseout"!==t.type?i?e:t:null} class $e (line 230) | class $e{static defaults=i.d;static instances=Fe;static overrides=i.a3;s... method register (line 230) | static register(...t){oe.add(...t),Be()} method unregister (line 230) | static unregister(...t){oe.remove(...t),Be()} method constructor (line 230) | constructor(t,e){const n=this.config=new De(e),r=Ne(t),s=je(r);if(s)th... method aspectRatio (line 230) | get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},... method data (line 230) | get data(){return this.config.data} method data (line 230) | set data(t){this.config.data=t} method options (line 230) | get options(){return this._options} method options (line 230) | set options(t){this.config.options=t} method registry (line 230) | get registry(){return oe} method _initialize (line 230) | _initialize(){return this.notifyPlugins("beforeInit"),this.options.res... method clear (line 230) | clear(){return(0,i.af)(this.canvas,this.ctx),this} method stop (line 230) | stop(){return o.stop(this),this} method resize (line 230) | resize(t,e){o.running(this)?this._resizeBeforeDraw={width:t,height:e}:... method _resize (line 230) | _resize(t,e){const n=this.options,r=this.canvas,o=n.maintainAspectRati... method ensureScalesHaveIDs (line 230) | ensureScalesHaveIDs(){const t=this.options,e=t.scales||{};(0,i.F)(e,((... method buildOrUpdateScales (line 230) | buildOrUpdateScales(){const t=this.options,e=t.scales,n=this.scales,r=... method _updateMetasets (line 230) | _updateMetasets(){const t=this._metasets,e=this.data.datasets.length,n... method _removeUnreferencedMetasets (line 230) | _removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:e}}=thi... method buildOrUpdateControllers (line 230) | buildOrUpdateControllers(){const t=[],e=this.data.datasets;let n,r;for... method _resetElements (line 230) | _resetElements(){(0,i.F)(this.data.datasets,((t,e)=>{this.getDatasetMe... method reset (line 230) | reset(){this._resetElements(),this.notifyPlugins("reset")} method update (line 230) | update(t){const e=this.config;e.update();const n=this._options=e.creat... method _updateScales (line 230) | _updateScales(){(0,i.F)(this.scales,(t=>{ct.removeBox(this,t)})),this.... method _checkEventBindings (line 230) | _checkEventBindings(){const t=this.options,e=new Set(Object.keys(this.... method _updateHiddenIndices (line 230) | _updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniform... method _getUniformDataChanges (line 230) | _getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)re... method _updateLayout (line 230) | _updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable... method _updateDatasets (line 230) | _updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{... method _updateDataset (line 230) | _updateDataset(t,e){const n=this.getDatasetMeta(t),i={meta:n,index:t,m... method render (line 230) | render(){!1!==this.notifyPlugins("beforeRender",{cancelable:!0})&&(o.h... method draw (line 230) | draw(){let t;if(this._resizeBeforeDraw){const{width:t,height:e}=this._... method _getSortedDatasetMetas (line 230) | _getSortedDatasetMetas(t){const e=this._sortedMetasets,n=[];let i,r;fo... method getSortedVisibleDatasetMetas (line 230) | getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)} method _drawDatasets (line 230) | _drawDatasets(){if(!1===this.notifyPlugins("beforeDatasetsDraw",{cance... method _drawDataset (line 230) | _drawDataset(t){const e=this.ctx,n={meta:t,index:t.index,cancelable:!0... method isPointInArea (line 230) | isPointInArea(t){return(0,i.C)(t,this.chartArea,this._minPadding)} method getElementsAtEventForMode (line 230) | getElementsAtEventForMode(t,e,n,i){const r=U.modes[e];return"function"... method getDatasetMeta (line 230) | getDatasetMeta(t){const e=this.data.datasets[t],n=this._metasets;let i... method getContext (line 230) | getContext(){return this.$context||(this.$context=(0,i.j)(null,{chart:... method getVisibleDatasetCount (line 230) | getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().le... method isDatasetVisible (line 230) | isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const... method setDatasetVisibility (line 230) | setDatasetVisibility(t,e){const n=this.getDatasetMeta(t);n.hidden=!e} method toggleDataVisibility (line 230) | toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]} method getDataVisibility (line 230) | getDataVisibility(t){return!this._hiddenIndices[t]} method _updateVisibility (line 230) | _updateVisibility(t,e,n){const r=n?"show":"hide",o=this.getDatasetMeta... method hide (line 230) | hide(t,e){this._updateVisibility(t,e,!1)} method show (line 230) | show(t,e){this._updateVisibility(t,e,!0)} method _destroyDatasetMeta (line 230) | _destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.co... method _stop (line 230) | _stop(){let t,e;for(this.stop(),o.remove(this),t=0,e=this.data.dataset... method destroy (line 230) | destroy(){this.notifyPlugins("beforeDestroy");const{canvas:t,ctx:e}=th... method toBase64Image (line 230) | toBase64Image(...t){return this.canvas.toDataURL(...t)} method bindEvents (line 230) | bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindRe... method bindUserEvents (line 230) | bindUserEvents(){const t=this._listeners,e=this.platform,n=(n,i)=>{e.a... method bindResponsiveEvents (line 230) | bindResponsiveEvents(){this._responsiveListeners||(this._responsiveLis... method unbindEvents (line 230) | unbindEvents(){(0,i.F)(this._listeners,((t,e)=>{this.platform.removeEv... method updateHoverStyle (line 230) | updateHoverStyle(t,e,n){const i=n?"set":"remove";let r,o,s,a;for("data... method getActiveElements (line 230) | getActiveElements(){return this._active||[]} method setActiveElements (line 230) | setActiveElements(t){const e=this._active||[],n=t.map((({datasetIndex:... method notifyPlugins (line 230) | notifyPlugins(t,e,n){return this._plugins.notify(this,t,e,n)} method isPluginEnabled (line 230) | isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin... method _updateHoverStyles (line 230) | _updateHoverStyles(t,e,n){const i=this.options.hover,r=(t,e)=>t.filter... method _eventHandler (line 230) | _eventHandler(t,e){const n={event:t,replay:e,cancelable:!0,inChartArea... method _handleEvent (line 230) | _handleEvent(t,e,n){const{_active:r=[],options:o}=this,s=e,a=this._get... method _getActiveElements (line 230) | _getActiveElements(t,e,n,i){if("mouseout"===t.type)return[];if(!n)retu... function Be (line 230) | function Be(){return(0,i.F)($e.instances,(t=>t._plugins.invalidate()))} function Ye (line 230) | function Ye(t,e,n=e){t.lineCap=(0,i.v)(n.borderCapStyle,e.borderCapStyle... function Ve (line 230) | function Ve(t,e,n){t.lineTo(n.x,n.y)} function Ue (line 230) | function Ue(t){return t.stepped?i.at:t.tension||"monotone"===t.cubicInte... function qe (line 230) | function qe(t,e,n={}){const i=t.length,{start:r=0,end:o=i-1}=n,{start:s,... function Xe (line 230) | function Xe(t,e,n,i){const{points:r,options:o}=e,{count:s,start:a,loop:l... function Ge (line 230) | function Ge(t,e,n,i){const r=e.points,{count:o,start:s,ilen:a}=qe(r,n,i)... function Ze (line 230) | function Ze(t){const e=t.options,n=e.borderDash&&e.borderDash.length,i=!... function Qe (line 230) | function Qe(t){return t.stepped?i.aq:t.tension||"monotone"===t.cubicInte... function Je (line 230) | function Je(t,e,n,i){let r=e._path;r||(r=e._path=new Path2D,e.path(r,n,i... function Ke (line 230) | function Ke(t,e,n,i){const{segments:r,options:o}=e,s=Ze(e);for(const a o... function en (line 230) | function en(t,e,n,i){tn&&!e.options.segment?Je(t,e,n,i):Ke(t,e,n,i)} class nn (line 230) | class nn extends Rt{static id="line";static defaults={borderCapStyle:"bu... method constructor (line 230) | constructor(t){super(),this.animated=!0,this.options=void 0,this._char... method updateControlPoints (line 230) | updateControlPoints(t,e){const n=this.options;if((n.tension||"monotone... method points (line 230) | set points(t){this._points=t,delete this._segments,delete this._path,t... method points (line 230) | get points(){return this._points} method segments (line 230) | get segments(){return this._segments||(this._segments=(0,i.ao)(this,th... method first (line 230) | first(){const t=this.segments,e=this.points;return t.length&&e[t[0].st... method last (line 230) | last(){const t=this.segments,e=this.points,n=t.length;return n&&e[t[n-... method interpolate (line 230) | interpolate(t,e){const n=this.options,r=t[e],o=this.points,s=(0,i.ap)(... method pathSegment (line 230) | pathSegment(t,e,n){const i=Ze(this);return i(t,this,e,n)} method path (line 230) | path(t,e,n){const i=this.segments,r=Ze(this);let o=this._loop;e=e||0,n... method draw (line 230) | draw(t,e,n,i){const r=this.options||{},o=this.points||[];o.length&&r.b... function rn (line 230) | function rn(t,e,n,i){const r=t.options,{[n]:o}=t.getProps([n],i);return ... class on (line 230) | class on extends Rt{static id="point";parsed;skip;stop;static defaults={... method constructor (line 230) | constructor(t){super(),this.options=void 0,this.parsed=void 0,this.ski... method inRange (line 230) | inRange(t,e,n){const i=this.options,{x:r,y:o}=this.getProps(["x","y"],... method inXRange (line 230) | inXRange(t,e){return rn(this,t,"x",e)} method inYRange (line 230) | inYRange(t,e){return rn(this,t,"y",e)} method getCenterPoint (line 230) | getCenterPoint(t){const{x:e,y:n}=this.getProps(["x","y"],t);return{x:e... method size (line 230) | size(t){t=t||this.options||{};let e=t.radius||0;e=Math.max(e,e&&t.hove... method draw (line 230) | draw(t,e){const n=this.options;this.skip||n.radius<.1||!(0,i.C)(this,e... method getRange (line 230) | getRange(){const t=this.options||{};return t.radius+t.hitRadius} function sn (line 230) | function sn(t,e,n){const r=t.segments,o=t.points,s=e.points,a=[];for(con... function an (line 230) | function an(t,e,n,r){if(r)return;let o=e[t],s=n[t];return"angle"===t&&(o... function ln (line 230) | function ln(t,e){const{x:n=null,y:i=null}=t||{},r=e.points,o=[];return e... function cn (line 230) | function cn(t,e,n){for(;e>t;e--){const t=n[e];if(!isNaN(t.x)&&!isNaN(t.y... function un (line 230) | function un(t,e,n,i){return t&&e?i(t[n],e[n]):t?t[n]:e?e[n]:0} function hn (line 230) | function hn(t,e){let n=[],r=!1;return(0,i.b)(t)?(r=!0,n=t):n=ln(t,e),n.l... function dn (line 230) | function dn(t){return t&&!1!==t.fill} function fn (line 230) | function fn(t,e,n){const r=t[e];let o=r.fill;const s=[e];let a;if(!n)ret... function pn (line 230) | function pn(t,e,n){const r=xn(t);if((0,i.i)(r))return!isNaN(r.value)&&r;... function gn (line 230) | function gn(t,e,n,i){return"-"!==t&&"+"!==t||(n=e+n),!(n===e||n<0||n>=i)... function mn (line 230) | function mn(t,e){let n=null;return"start"===t?n=e.bottom:"end"===t?n=e.t... function bn (line 230) | function bn(t,e,n){let r;return r="start"===t?n:"end"===t?e.options.reve... function xn (line 230) | function xn(t){const e=t.options,n=e.fill;let r=(0,i.v)(n&&n.target,n);r... function yn (line 230) | function yn(t){const{scale:e,index:n,line:i}=t,r=[],o=i.segments,s=i.poi... function vn (line 230) | function vn(t,e){const n=[],i=t.getMatchingVisibleMetas("line");for(let ... function wn (line 230) | function wn(t,e,n){const i=[];for(let r=0;rt.height-i/2... function ei (line 230) | function ei(t,e,n,i){const{x:r,width:o}=i,s=n.caretSize+n.caretPadding;r... function ni (line 230) | function ni(t,e,n,i){const{x:r,width:o}=n,{width:s,chartArea:{left:a,rig... function ii (line 230) | function ii(t,e,n){const i=n.yAlign||e.yAlign||ti(t,n);return{xAlign:n.x... function ri (line 230) | function ri(t,e){let{x:n,width:i}=t;return"right"===e?n-=i:"center"===e&... function oi (line 230) | function oi(t,e,n){let{y:i,height:r}=t;return"top"===e?i+=n:i-="bottom"=... function si (line 230) | function si(t,e,n,r){const{caretSize:o,caretPadding:s,cornerRadius:a}=t,... function ai (line 230) | function ai(t,e,n){const r=(0,i.E)(n.padding);return"center"===e?t.x+t.w... function li (line 230) | function li(t){return Zn([],Qn(t))} function ci (line 230) | function ci(t,e,n){return(0,i.j)(t,{tooltip:e,tooltipItems:n,type:"toolt... function ui (line 230) | function ui(t,e){const n=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tool... method title (line 230) | title(t){if(t.length>0){const e=t[0],n=e.chart.data.labels,i=n?n.length:... method label (line 230) | label(t){if(this&&this.options&&"dataset"===this.options.mode)return t.l... method labelColor (line 230) | labelColor(t){const e=t.chart.getDatasetMeta(t.datasetIndex),n=e.control... method labelTextColor (line 230) | labelTextColor(){return this.options.bodyColor} method labelPointStyle (line 230) | labelPointStyle(t){const e=t.chart.getDatasetMeta(t.datasetIndex),n=e.co... function di (line 230) | function di(t,e,n,i){const r=t[e].call(n,i);return"undefined"===typeof r... class fi (line 230) | class fi extends Rt{static positioners=Gn;constructor(t){super(),this.op... method constructor (line 230) | constructor(t){super(),this.opacity=0,this._active=[],this._eventPosit... method initialize (line 230) | initialize(t){this.options=t,this._cachedAnimations=void 0,this.$conte... method _resolveAnimations (line 230) | _resolveAnimations(){const t=this._cachedAnimations;if(t)return t;cons... method getContext (line 230) | getContext(){return this.$context||(this.$context=ci(this.chart.getCon... method getTitle (line 230) | getTitle(t,e){const{callbacks:n}=e,i=di(n,"beforeTitle",this,t),r=di(n... method getBeforeBody (line 230) | getBeforeBody(t,e){return li(di(e.callbacks,"beforeBody",this,t))} method getBody (line 230) | getBody(t,e){const{callbacks:n}=e,r=[];return(0,i.F)(t,(t=>{const e={b... method getAfterBody (line 230) | getAfterBody(t,e){return li(di(e.callbacks,"afterBody",this,t))} method getFooter (line 230) | getFooter(t,e){const{callbacks:n}=e,i=di(n,"beforeFooter",this,t),r=di... method _createItems (line 230) | _createItems(t){const e=this._active,n=this.chart.data,r=[],o=[],s=[];... method update (line 230) | update(t,e){const n=this.options.setContext(this.getContext()),i=this.... method drawCaret (line 230) | drawCaret(t,e,n,i){const r=this.getCaretPosition(t,n,i);e.lineTo(r.x1,... method getCaretPosition (line 230) | getCaretPosition(t,e,n){const{xAlign:r,yAlign:o}=this,{caretSize:s,cor... method drawTitle (line 230) | drawTitle(t,e,n){const r=this.title,o=r.length;let s,a,l;if(o){const c... method _drawColorBox (line 230) | _drawColorBox(t,e,n,r,o){const s=this.labelColors[n],a=this.labelPoint... method drawBody (line 230) | drawBody(t,e,n){const{body:r}=this,{bodySpacing:o,bodyAlign:s,displayC... method drawFooter (line 230) | drawFooter(t,e,n){const r=this.footer,o=r.length;let s,a;if(o){const l... method drawBackground (line 230) | drawBackground(t,e,n,r){const{xAlign:o,yAlign:s}=this,{x:a,y:l}=t,{wid... method _updateAnimationTarget (line 230) | _updateAnimationTarget(t){const e=this.chart,n=this.$animations,i=n&&n... method _willRender (line 230) | _willRender(){return!!this.opacity} method draw (line 230) | draw(t){const e=this.options.setContext(this.getContext());let n=this.... method getActiveElements (line 230) | getActiveElements(){return this._active||[]} method setActiveElements (line 230) | setActiveElements(t,e){const n=this._active,r=t.map((({datasetIndex:t,... method handleEvent (line 230) | handleEvent(t,e,n=!0){if(e&&this._ignoreReplayEvents)return!1;this._ig... method _getActiveElements (line 230) | _getActiveElements(t,e,n,i){const r=this.options;if("mouseout"===t.typ... method _positionChanged (line 230) | _positionChanged(t,e){const{caretX:n,caretY:i,options:r}=this,o=Gn[r.p... method afterInit (line 230) | afterInit(t,e,n){n&&(t.tooltip=new fi({chart:t,options:n}))} method beforeUpdate (line 230) | beforeUpdate(t,e,n){t.tooltip&&t.tooltip.initialize(n)} method reset (line 230) | reset(t,e,n){t.tooltip&&t.tooltip.initialize(n)} method afterDraw (line 230) | afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const n={tooltip:e... method afterEvent (line 230) | afterEvent(t,e){if(t.tooltip){const n=e.replay;t.tooltip.handleEvent(e.e... function mi (line 230) | function mi(t,e,n,i){const r=t.indexOf(e);if(-1===r)return gi(t,e,n,i);c... function xi (line 230) | function xi(t){const e=this.getLabels();return t>=0&&te.length-1?null:th... method getValueForPixel (line 230) | getValueForPixel(t){return Math.round(this._startValue+this.getDecimal... method getBasePixel (line 230) | getBasePixel(){return this.bottom} function vi (line 230) | function vi(t,e){const n=[],r=1e-14,{bounds:o,step:s,min:a,max:l,precisi... function wi (line 230) | function wi(t,e,{horizontal:n,minRotation:r}){const o=(0,i.t)(r),s=(n?Ma... class ki (line 230) | class ki extends Kt{constructor(t){super(t),this.start=void 0,this.end=v... method constructor (line 230) | constructor(t){super(t),this.start=void 0,this.end=void 0,this._startV... method parse (line 230) | parse(t,e){return(0,i.k)(t)||("number"===typeof t||t instanceof Number... method handleTickRangeOptions (line 230) | handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined... method getTickLimit (line 230) | getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:n,stepS... method computeTickLimit (line 230) | computeTickLimit(){return Number.POSITIVE_INFINITY} method buildTicks (line 230) | buildTicks(){const t=this.options,e=t.ticks;let n=this.getTickLimit();... method configure (line 230) | configure(){const t=this.ticks;let e=this.min,n=this.max;if(super.conf... method getLabelForValue (line 230) | getLabelForValue(t){return(0,i.o)(t,this.chart.options.locale,this.opt... class _i (line 230) | class _i extends ki{static id="linear";static defaults={ticks:{callback:... method determineDataLimits (line 230) | determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=(... method computeTickLimit (line 230) | computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.hei... method getPixelForValue (line 230) | getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-thi... method getValueForPixel (line 230) | getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)... function Ti (line 230) | function Ti(t,e){return t-e} function Di (line 230) | function Di(t,e){if((0,i.k)(e))return null;const n=t._adapter,{parser:r,... function Ci (line 230) | function Ci(t,e,n,i){const r=Si.length;for(let o=Si.indexOf(t);o=Si.indexOf(n);o--){const... function Oi (line 230) | function Oi(t){for(let e=Si.indexOf(t)+1,n=Si.length;e0&&0===--this._on&&(r=this.prevScope,this.prevScope=voi... method stop (line 6) | stop(t){if(this._active){let e,n;for(this._active=!1,e=0,n=this.effect... function a (line 237) | function a(t){return r(i(t/2.55)/100,0,1)} function l (line 237) | function l(t){return r(i(100*t),0,100)} method constructor (line 230) | constructor(t,e,n,r){const o=e[n];r=(0,i.a)([t.to,r,o,t.from]);const s... method active (line 230) | active(){return this._active} method update (line 230) | update(t,e,n){if(this._active){this._notify(!1);const r=this._target[t... method cancel (line 230) | cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._no... method tick (line 230) | tick(t){const e=t-this._start,n=this._duration,i=this._prop,r=this._fr... method wait (line 230) | wait(){const t=this._promises||(this._promises=[]);return new Promise(... method _notify (line 230) | _notify(t){const e=t?"res":"rej",n=this._promises||[];for(let i=0;in-i*Mat... function v (line 237) | function v(t,e,n){const i=(i,r=(i+t/60)%6)=>n-n*e*Math.max(Math.min(r,4-... function w (line 237) | function w(t,e,n){const i=y(t,1,.5);let r;for(e+n>1&&(r=1/(e+n),e*=r,n*=... function k (line 237) | function k(t,e,n,i,r){return t===r?(e-n)/i+(e=0&&t=0;r-... function st (line 244) | function st(t,e){let n,i,r,o;if(!t||!e||t.length!==e.length)return!1;for... function at (line 244) | function at(t){if(Q(t))return t.map(at);if(J(t)){const e=Object.create(n... function lt (line 244) | function lt(t){return-1===["__proto__","prototype","constructor"].indexO... function ct (line 244) | function ct(t,e,n,i){if(!lt(t))return;const r=e[t],o=n[t];J(r)&&J(o)?ut(... function ut (line 244) | function ut(t,e,n){const i=Q(e)?e:[e],r=i.length;if(!J(t))return t;n=n||... method acquireContext (line 230) | acquireContext(t,e){} method releaseContext (line 230) | releaseContext(t){return!1} method addEventListener (line 230) | addEventListener(t,e,n){} method removeEventListener (line 230) | removeEventListener(t,e,n){} method getDevicePixelRatio (line 230) | getDevicePixelRatio(){return 1} method getMaximumSize (line 230) | getMaximumSize(t,e,n,i){return e=Math.max(0,e||t.width),n=n||t.height,... method isAttached (line 230) | isAttached(t){return!0} method updateConfig (line 230) | updateConfig(t){} function ht (line 244) | function ht(t,e){return ut(t,e,{merger:dt})} method acquireContext (line 230) | acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null} method updateConfig (line 230) | updateConfig(t){t.options.animation=!1} method validate (line 244) | validate(t,e){return!0} function dt (line 244) | function dt(t,e,n){if(!lt(t))return;const i=e[t],r=n[t];J(i)&&J(r)?ht(i,... method constructor (line 244) | constructor(t,e,n,i,r){super(),this.value=t,this.validateValue=e,this.... method validate (line 244) | validate(t,e){return this.validateValue(t,this.value,e)} method set (line 244) | set(t,e,n){return this.setValue(t,e,this.value,n)} function pt (line 244) | function pt(t){const e=t.split("."),n=[];let i="";for(const r of e)i+=r,... method run (line 244) | run(t,e,n,i){const r=this.parse(t,e,n,i);return r?{setter:new dt(r.val... method validate (line 244) | validate(t,e,n){return!0} function gt (line 244) | function gt(t){const e=pt(t);return t=>{for(const n of e){if(""===n)brea... method parse (line 244) | parse(t,e,n){switch(e){case"G":case"GG":case"GGG":return n.era(t,{widt... method set (line 244) | set(t,e,n){return e.era=n,t.setFullYear(n,0,1),t.setHours(0,0,0,0),t} function mt (line 244) | function mt(t,e){const n=ft[e]||(ft[e]=gt(e));return n(t)} function bt (line 244) | function bt(t){return t.charAt(0).toUpperCase()+t.slice(1)} function wt (line 244) | function wt(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"... function Et (line 244) | function Et(t,e,n){return Math.abs(t-e)=1&&e<=4} method set (line 244) | set(t,e,n){return t.setMonth(3*(n-1),1),t.setHours(0,0,0,0),t} function Lt (line 244) | function Lt(t){return"symbol"===typeof t||"object"===typeof t&&null!==t&... method parse (line 244) | parse(t,e,n){switch(e){case"q":case"qq":return kt(e.length,t);case"qo"... method validate (line 244) | validate(t,e){return e>=1&&e<=4} method set (line 244) | set(t,e,n){return t.setMonth(3*(n-1),1),t.setHours(0,0,0,0),t} function zt (line 244) | function zt(t){return!Lt(t)&&!isNaN(parseFloat(t))&&isFinite(t)} method constructor (line 6) | constructor(t,e,n){this.fn=t,this.setter=e,this._value=void 0,this.dep... method notify (line 6) | notify(){if(this.flags|=16,!(8&this.flags||o===this))return f(this,!0)... method value (line 6) | get value(){const t=this.dep.track();return y(this),t&&(t.version=this... method value (line 6) | set value(t){this.setter&&this.setter(t)} method parse (line 244) | parse(t,e,n){const i=t=>t-1;switch(e){case"M":return xt(yt(mt.month,t)... method validate (line 244) | validate(t,e){return e>=0&&e<=11} method set (line 244) | set(t,e,n){return t.setMonth(n,1),t.setHours(0,0,0,0),t} function Nt (line 244) | function Nt(t,e){const n=Math.round(t);return n-e<=t&&n+e>=t} method parse (line 244) | parse(t,e,n){const i=t=>t-1;switch(e){case"L":return xt(yt(mt.month,t)... method validate (line 244) | validate(t,e){return e>=0&&e<=11} method set (line 244) | set(t,e,n){return t.setMonth(n,1),t.setHours(0,0,0,0),t} function Ft (line 244) | function Ft(t,e,n){let i,r,o;for(i=0,r=t.length;i=1&&e<=53} method set (line 244) | set(t,e,n,i){return Ct(Ht(t,n,i),i)} function $t (line 244) | function $t(t,e){const n=e.x-t.x,i=e.y-t.y,r=Math.sqrt(n*n+i*i);let o=Ma... function Bt (line 244) | function Bt(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))} function Yt (line 244) | function Yt(t,e){return(t-e+Mt)%_t-kt} function Vt (line 244) | function Vt(t){return(t%_t+_t)%_t} function Ut (line 244) | function Ut(t,e,n,i){const r=Vt(t),o=Vt(e),s=Vt(n),a=Vt(o-r),l=Vt(s-r),c... method parse (line 244) | parse(t,e,n){switch(e){case"I":return yt(mt.week,t);case"Io":return n.... method validate (line 244) | validate(t,e){return e>=1&&e<=53} method set (line 244) | set(t,e,n){return Pt(Vt(t,n))} function qt (line 244) | function qt(t,e,n){return Math.max(e,Math.min(n,t))} function Xt (line 244) | function Xt(t){return qt(t,-32768,32767)} method inRange (line 258) | inRange(t,e,n,i){const{x:o,y:s}=h({x:t,y:e},this.getCenterPoint(i),(0,... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){t.save(),Y(t,this.getCenterPoint(),this.options.rotation),X(t,... method label (line 258) | get label(){return this.elements&&this.elements[0]} method resolveElementProperties (line 258) | resolveElementProperties(t,e){return vt(t,e)} function Gt (line 244) | function Gt(t,e,n,i=1e-6){return t>=Math.min(e,n)-i&&t<=Math.max(e,n)+i} method parse (line 244) | parse(t,e,n){switch(e){case"d":return yt(mt.date,t);case"do":return n.... method validate (line 244) | validate(t,e){const n=t.getFullYear(),i=Tt(n),r=t.getMonth();return i?... method set (line 244) | set(t,e,n){return t.setDate(n),t.setHours(0,0,0,0),t} method inRange (line 258) | inRange(t,e,n,i){return y({x:t,y:e},{rect:this.getProps(["x","y","x2",... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const e=this.options;e.display&&e.content&&(ee(t,this),t.save(... method resolveElementProperties (line 258) | resolveElementProperties(t,e){const n=Zt(t,e);if(!n)return{};const{con... function Zt (line 244) | function Zt(t,e,n){n=n||(n=>t[n]1)i... method parse (line 244) | parse(t,e,n){switch(e){case"D":case"DD":return yt(mt.dayOfYear,t);case... method validate (line 244) | validate(t,e){const n=t.getFullYear(),i=Tt(n);return i?e>=1&&e<=366:e>... method set (line 244) | set(t,e,n){return t.setMonth(0,n),t.setHours(0,0,0,0),t} function Kt (line 244) | function Kt(t,e,n){let i=0,r=t.length;while(ii&&t... method constructor (line 230) | constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void... method init (line 230) | init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,... method parse (line 230) | parse(t,e){return t} method getUserBounds (line 230) | getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:n,_suggestedMa... method getMinMax (line 230) | getMinMax(t){let e,{min:n,max:r,minDefined:o,maxDefined:s}=this.getUse... method getPadding (line 230) | getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,ri... method getTicks (line 230) | getTicks(){return this.ticks} method getLabels (line 230) | getLabels(){const t=this.chart.data;return this.options.labels||(this.... method getLabelItems (line 230) | getLabelItems(t=this.chart.chartArea){const e=this._labelItems||(this.... method beforeLayout (line 230) | beforeLayout(){this._cache={},this._dataLimitsCached=!1} method beforeUpdate (line 230) | beforeUpdate(){(0,i.Q)(this.options.beforeUpdate,[this])} method update (line 230) | update(t,e,n){const{beginAtZero:r,grace:o,ticks:s}=this.options,a=s.sa... method configure (line 230) | configure(){let t,e,n=this.options.reverse;this.isHorizontal()?(t=this... method afterUpdate (line 230) | afterUpdate(){(0,i.Q)(this.options.afterUpdate,[this])} method beforeSetDimensions (line 230) | beforeSetDimensions(){(0,i.Q)(this.options.beforeSetDimensions,[this])} method setDimensions (line 230) | setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.lef... method afterSetDimensions (line 230) | afterSetDimensions(){(0,i.Q)(this.options.afterSetDimensions,[this])} method _callHooks (line 230) | _callHooks(t){this.chart.notifyPlugins(t,this.getContext()),(0,i.Q)(th... method beforeDataLimits (line 230) | beforeDataLimits(){this._callHooks("beforeDataLimits")} method determineDataLimits (line 230) | determineDataLimits(){} method afterDataLimits (line 230) | afterDataLimits(){this._callHooks("afterDataLimits")} method beforeBuildTicks (line 230) | beforeBuildTicks(){this._callHooks("beforeBuildTicks")} method buildTicks (line 230) | buildTicks(){return[]} method afterBuildTicks (line 230) | afterBuildTicks(){this._callHooks("afterBuildTicks")} method beforeTickToLabelConversion (line 230) | beforeTickToLabelConversion(){(0,i.Q)(this.options.beforeTickToLabelCo... method generateTickLabels (line 230) | generateTickLabels(t){const e=this.options.ticks;let n,r,o;for(n=0,r=t... method afterTickToLabelConversion (line 230) | afterTickToLabelConversion(){(0,i.Q)(this.options.afterTickToLabelConv... method beforeCalculateLabelRotation (line 230) | beforeCalculateLabelRotation(){(0,i.Q)(this.options.beforeCalculateLab... method calculateLabelRotation (line 230) | calculateLabelRotation(){const t=this.options,e=t.ticks,n=Bt(this.tick... method afterCalculateLabelRotation (line 230) | afterCalculateLabelRotation(){(0,i.Q)(this.options.afterCalculateLabel... method afterAutoSkip (line 230) | afterAutoSkip(){} method beforeFit (line 230) | beforeFit(){(0,i.Q)(this.options.beforeFit,[this])} method fit (line 230) | fit(){const t={width:0,height:0},{chart:e,options:{ticks:n,title:r,gri... method _calculatePadding (line 230) | _calculatePadding(t,e,n,i){const{ticks:{align:r,padding:o},position:s}... method _handleMargins (line 230) | _handleMargins(){this._margins&&(this._margins.left=Math.max(this.padd... method afterFit (line 230) | afterFit(){(0,i.Q)(this.options.afterFit,[this])} method isHorizontal (line 230) | isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||... method isFullSize (line 230) | isFullSize(){return this.options.fullSize} method _convertTicksToLabels (line 230) | _convertTicksToLabels(t){let e,n;for(this.beforeTickToLabelConversion(... method _getLabelSizes (line 230) | _getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ti... method _computeLabelSizes (line 230) | _computeLabelSizes(t,e,n){const{ctx:r,_longestTextCache:o}=this,s=[],a... method getLabelForValue (line 230) | getLabelForValue(t){return t} method getPixelForValue (line 230) | getPixelForValue(t,e){return NaN} method getValueForPixel (line 230) | getValueForPixel(t){} method getPixelForTick (line 230) | getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:th... method getPixelForDecimal (line 230) | getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._start... method getDecimalForPixel (line 230) | getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return... method getBasePixel (line 230) | getBasePixel(){return this.getPixelForValue(this.getBaseValue())} method getBaseValue (line 230) | getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0} method getContext (line 230) | getContext(t){const e=this.ticks||[];if(t>=0&&t=0&&e<=6} method set (line 244) | set(t,e,n,i){return t=Jt(t,n,i),t.setHours(0,0,0,0),t} function ee (line 244) | function ee(t,e){t._chartjs?t._chartjs.listeners.push(e):(Object.defineP... method parse (line 244) | parse(t,e,n,i){const r=t=>{const e=7*Math.floor((t-1)/7);return(t+i.we... method validate (line 244) | validate(t,e){return e>=0&&e<=6} method set (line 244) | set(t,e,n,i){return t=Jt(t,n,i),t.setHours(0,0,0,0),t} function ne (line 244) | function ne(t,e){const n=t._chartjs;if(!n)return;const i=n.listeners,r=i... method inRange (line 258) | inRange(t,e,n,i){return y({x:t,y:e},{rect:this.getProps(["x","y","x2",... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const e=this.options,n=!(0,r.h)(this._visible)||this._visible;... method resolveElementProperties (line 258) | resolveElementProperties(t,e){let n;if(I(e))n=mt(t,e);else{const{cente... function ie (line 244) | function ie(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)} function oe (line 244) | function oe(t,e){let n=[],i=!1;return function(...r){n=r,i||(i=!0,re.cal... method parse (line 244) | parse(t,e,n){switch(e){case"a":case"aa":case"aaa":return n.dayPeriod(t... method set (line 244) | set(t,e,n){return t.setHours(Mt(n),0,0,0),t} function se (line 244) | function se(t,e){let n;return function(...i){return e?(clearTimeout(n),n... method constructor (line 230) | constructor(){this._init=void 0} method notify (line 230) | notify(t,e,n,i){if("beforeInit"===e&&(this._init=this._createDescripto... method _notify (line 230) | _notify(t,e,n,r){r=r||{};for(const o of t){const t=o.plugin,s=t[n],a=[... method invalidate (line 230) | invalidate(){(0,i.k)(this._cache)||(this._oldCache=this._cache,this._c... method _descriptors (line 230) | _descriptors(t){if(this._cache)return this._cache;const e=this._cache=... method _createDescriptors (line 230) | _createDescriptors(t,e){const n=t&&t.config,r=(0,i.v)(n.options&&n.opt... method _notifyStateChanges (line 230) | _notifyStateChanges(t){const e=this._oldCache||[],n=this._cache,i=(t,e... method parse (line 244) | parse(t,e,n){switch(e){case"b":case"bb":case"bbb":return n.dayPeriod(t... method set (line 244) | set(t,e,n){return t.setHours(Mt(n),0,0,0),t} function ue (line 244) | function ue(t,e,n){const i=e.length;let r=0,o=i;if(t._sorted){const{iSca... method parse (line 244) | parse(t,e,n){switch(e){case"K":return yt(mt.hour11h,t);case"Ko":return... method validate (line 244) | validate(t,e){return e>=0&&e<=11} method set (line 244) | set(t,e,n){const i=t.getHours()>=12;return i&&n<12?t.setHours(n+12,0,0... function he (line 244) | function he(t){const{xScale:e,yScale:n,_scaleRanges:i}=t,r={xmin:e.min,x... method parse (line 244) | parse(t,e,n){switch(e){case"k":return yt(mt.hour24h,t);case"ko":return... method validate (line 244) | validate(t,e){return e>=1&&e<=24} method set (line 244) | set(t,e,n){const i=n<=24?n%24:n;return t.setHours(i,0,0,0),t} method easeInOutElastic (line 244) | easeInOutElastic(t){const e=.1125,n=.45;return de(t)?t:t<.5?.5*fe(2*t,e,... method easeInBack (line 244) | easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)} method easeOutBack (line 244) | easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1} method easeInOutBack (line 244) | easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*... method easeOutBounce (line 244) | easeOutBounce(t){const e=7.5625,n=2.75;return t<1/n?e*t*t:t<2/n?e*(t-=1.... function me (line 244) | function me(t){if(t&&"object"===typeof t){const e=t.toString();return"[o... method parse (line 244) | parse(t,e){switch(e){case"X":return vt(bt.basicOptionalMinutes,t);case... method set (line 244) | set(t,e,n){return e.timestampIsSet?t:u(t,t.getTime()-ge(t)-n)} function be (line 244) | function be(t){return me(t)?t:new q(t)} method parse (line 244) | parse(t,e){switch(e){case"x":return vt(bt.basicOptionalMinutes,t);case... method set (line 244) | set(t,e,n){return e.timestampIsSet?t:u(t,t.getTime()-ge(t)-n)} function xe (line 244) | function xe(t){return me(t)?t:new q(t).saturate(.5).darken(.1).hexString()} method parse (line 244) | parse(t){return wt(t)} method set (line 244) | set(t,e,n){return[u(t,1e3*n),{timestampIsSet:!0}]} function we (line 244) | function we(t){t.set("animation",{delay:void 0,duration:1e3,easing:"ease... function ke (line 244) | function ke(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bot... function Me (line 244) | function Me(t,e){e=e||{};const n=t+JSON.stringify(e);let i=_e.get(n);ret... function Se (line 244) | function Se(t,e,n){return Me(e,n).format(t)} method values (line 244) | values(t){return Q(t)?t:""+t} method numeric (line 244) | numeric(t,e,n){if(0===t)return"0";const i=this.chart.options.locale;let ... method logarithmic (line 244) | logarithmic(t,e,n){if(0===t)return"0";const i=n[e].significand||t/Math.p... function De (line 244) | function De(t,e){let n=e.length>3?e[2].value-e[1].value:e[1].value-e[0].... method constructor (line 230) | constructor(t){this._config=ke(t),this._scopeCache=new Map,this._resol... method platform (line 230) | get platform(){return this._config.platform} method type (line 230) | get type(){return this._config.type} method type (line 230) | set type(t){this._config.type=t} method data (line 230) | get data(){return this._config.data} method data (line 230) | set data(t){this._config.data=we(t)} method options (line 230) | get options(){return this._config.options} method options (line 230) | set options(t){this._config.options=t} method plugins (line 230) | get plugins(){return this._config.plugins} method update (line 230) | update(){const t=this._config;this.clearCache(),ve(t)} method clearCache (line 230) | clearCache(){this._scopeCache.clear(),this._resolverCache.clear()} method datasetScopeKeys (line 230) | datasetScopeKeys(t){return Se(t,(()=>[[`datasets.${t}`,""]]))} method datasetAnimationScopeKeys (line 230) | datasetAnimationScopeKeys(t,e){return Se(`${t}.transition.${e}`,(()=>[... method datasetElementScopeKeys (line 230) | datasetElementScopeKeys(t,e){return Se(`${t}-${e}`,(()=>[[`datasets.${... method pluginScopeKeys (line 230) | pluginScopeKeys(t){const e=t.id,n=this.type;return Se(`${n}-plugin-${e... method _cachedScopes (line 230) | _cachedScopes(t,e){const n=this._scopeCache;let i=n.get(t);return i&&!... method getOptionScopes (line 230) | getOptionScopes(t,e,n){const{options:r,type:o}=this,s=this._cachedScop... method chartOptionScopes (line 230) | chartOptionScopes(){const{options:t,type:e}=this;return[t,i.a3[e]||{},... method resolveNamedOptions (line 230) | resolveNamedOptions(t,e,n,r=[""]){const o={$shared:!0},{resolver:s,sub... method createResolver (line 230) | createResolver(t,e,n=[""],r){const{resolver:o}=Ce(this._resolverCache,... function Ae (line 244) | function Ae(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZer... function Ee (line 244) | function Ee(t,e){if(!e)return t;const n=e.split(".");for(let i=0,r=n.len... function Re (line 244) | function Re(t,e,n){return"string"===typeof e?ut(Ee(t,e),n):ut(Ee(t,""),e)} class Ie (line 244) | class Ie{constructor(t,e){this.animation=void 0,this.backgroundColor="rg... method constructor (line 244) | constructor(t,e){this.animation=void 0,this.backgroundColor="rgba(0,0,... method set (line 244) | set(t,e){return Re(this,t,e)} method get (line 244) | get(t){return Ee(this,t)} method describe (line 244) | describe(t,e){return Re(Pe,t,e)} method override (line 244) | override(t,e){return Re(Oe,t,e)} method route (line 244) | route(t,e,n,i){const r=Ee(this,t),o=Ee(this,n),s="_"+e;Object.definePr... method apply (line 244) | apply(t){t.forEach((t=>t(this)))} function ze (line 244) | function ze(t){return!t||Z(t.size)||Z(t.family)?null:(t.style?t.style+" ... function Ne (line 244) | function Ne(t,e,n,i,r){let o=e[r];return o||(o=e[r]=t.measureText(r).wid... method inRange (line 258) | inRange(t,e,n,i){const{x:r,y:o,x2:s,y2:a,width:l}=this.getProps(["x","... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const e=this.options,n=e.borderWidth;if(e.radius<.1)return;t.s... method resolveElementProperties (line 258) | resolveElementProperties(t,e){const n=xt(t,e);return n.initProperties=... function Fe (line 244) | function Fe(t,e,n,i){i=i||{};let r=i.data=i.data||{},o=i.garbageCollect=... method inRange (line 258) | inRange(t,e,n,i){if("x"!==n&&"y"!==n)return this.options.radius>=.1&&t... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const{elements:e,options:n}=this;t.save(),t.beginPath(),t.fill... method resolveElementProperties (line 258) | resolveElementProperties(t,e){const n=xt(t,e),{sides:i,rotation:o}=e,s... function je (line 244) | function je(t,e,n){const i=t.currentDevicePixelRatio,r=0!==n?Math.max(n/... function He (line 244) | function He(t,e){(e||t)&&(e=e||t.getContext("2d"),e.save(),e.resetTransf... function We (line 244) | function We(t,e,n,i){$e(t,e,n,i,null)} function $e (line 244) | function $e(t,e,n,i,r){let o,s,a,l,c,u,h,d;const f=e.pointStyle,p=e.rota... method register (line 230) | static register(...t){oe.add(...t),Be()} method unregister (line 230) | static unregister(...t){oe.remove(...t),Be()} method constructor (line 230) | constructor(t,e){const n=this.config=new De(e),r=Ne(t),s=je(r);if(s)th... method aspectRatio (line 230) | get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},... method data (line 230) | get data(){return this.config.data} method data (line 230) | set data(t){this.config.data=t} method options (line 230) | get options(){return this._options} method options (line 230) | set options(t){this.config.options=t} method registry (line 230) | get registry(){return oe} method _initialize (line 230) | _initialize(){return this.notifyPlugins("beforeInit"),this.options.res... method clear (line 230) | clear(){return(0,i.af)(this.canvas,this.ctx),this} method stop (line 230) | stop(){return o.stop(this),this} method resize (line 230) | resize(t,e){o.running(this)?this._resizeBeforeDraw={width:t,height:e}:... method _resize (line 230) | _resize(t,e){const n=this.options,r=this.canvas,o=n.maintainAspectRati... method ensureScalesHaveIDs (line 230) | ensureScalesHaveIDs(){const t=this.options,e=t.scales||{};(0,i.F)(e,((... method buildOrUpdateScales (line 230) | buildOrUpdateScales(){const t=this.options,e=t.scales,n=this.scales,r=... method _updateMetasets (line 230) | _updateMetasets(){const t=this._metasets,e=this.data.datasets.length,n... method _removeUnreferencedMetasets (line 230) | _removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:e}}=thi... method buildOrUpdateControllers (line 230) | buildOrUpdateControllers(){const t=[],e=this.data.datasets;let n,r;for... method _resetElements (line 230) | _resetElements(){(0,i.F)(this.data.datasets,((t,e)=>{this.getDatasetMe... method reset (line 230) | reset(){this._resetElements(),this.notifyPlugins("reset")} method update (line 230) | update(t){const e=this.config;e.update();const n=this._options=e.creat... method _updateScales (line 230) | _updateScales(){(0,i.F)(this.scales,(t=>{ct.removeBox(this,t)})),this.... method _checkEventBindings (line 230) | _checkEventBindings(){const t=this.options,e=new Set(Object.keys(this.... method _updateHiddenIndices (line 230) | _updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniform... method _getUniformDataChanges (line 230) | _getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)re... method _updateLayout (line 230) | _updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable... method _updateDatasets (line 230) | _updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{... method _updateDataset (line 230) | _updateDataset(t,e){const n=this.getDatasetMeta(t),i={meta:n,index:t,m... method render (line 230) | render(){!1!==this.notifyPlugins("beforeRender",{cancelable:!0})&&(o.h... method draw (line 230) | draw(){let t;if(this._resizeBeforeDraw){const{width:t,height:e}=this._... method _getSortedDatasetMetas (line 230) | _getSortedDatasetMetas(t){const e=this._sortedMetasets,n=[];let i,r;fo... method getSortedVisibleDatasetMetas (line 230) | getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)} method _drawDatasets (line 230) | _drawDatasets(){if(!1===this.notifyPlugins("beforeDatasetsDraw",{cance... method _drawDataset (line 230) | _drawDataset(t){const e=this.ctx,n={meta:t,index:t.index,cancelable:!0... method isPointInArea (line 230) | isPointInArea(t){return(0,i.C)(t,this.chartArea,this._minPadding)} method getElementsAtEventForMode (line 230) | getElementsAtEventForMode(t,e,n,i){const r=U.modes[e];return"function"... method getDatasetMeta (line 230) | getDatasetMeta(t){const e=this.data.datasets[t],n=this._metasets;let i... method getContext (line 230) | getContext(){return this.$context||(this.$context=(0,i.j)(null,{chart:... method getVisibleDatasetCount (line 230) | getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().le... method isDatasetVisible (line 230) | isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const... method setDatasetVisibility (line 230) | setDatasetVisibility(t,e){const n=this.getDatasetMeta(t);n.hidden=!e} method toggleDataVisibility (line 230) | toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]} method getDataVisibility (line 230) | getDataVisibility(t){return!this._hiddenIndices[t]} method _updateVisibility (line 230) | _updateVisibility(t,e,n){const r=n?"show":"hide",o=this.getDatasetMeta... method hide (line 230) | hide(t,e){this._updateVisibility(t,e,!1)} method show (line 230) | show(t,e){this._updateVisibility(t,e,!0)} method _destroyDatasetMeta (line 230) | _destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.co... method _stop (line 230) | _stop(){let t,e;for(this.stop(),o.remove(this),t=0,e=this.data.dataset... method destroy (line 230) | destroy(){this.notifyPlugins("beforeDestroy");const{canvas:t,ctx:e}=th... method toBase64Image (line 230) | toBase64Image(...t){return this.canvas.toDataURL(...t)} method bindEvents (line 230) | bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindRe... method bindUserEvents (line 230) | bindUserEvents(){const t=this._listeners,e=this.platform,n=(n,i)=>{e.a... method bindResponsiveEvents (line 230) | bindResponsiveEvents(){this._responsiveListeners||(this._responsiveLis... method unbindEvents (line 230) | unbindEvents(){(0,i.F)(this._listeners,((t,e)=>{this.platform.removeEv... method updateHoverStyle (line 230) | updateHoverStyle(t,e,n){const i=n?"set":"remove";let r,o,s,a;for("data... method getActiveElements (line 230) | getActiveElements(){return this._active||[]} method setActiveElements (line 230) | setActiveElements(t){const e=this._active||[],n=t.map((({datasetIndex:... method notifyPlugins (line 230) | notifyPlugins(t,e,n){return this._plugins.notify(this,t,e,n)} method isPluginEnabled (line 230) | isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin... method _updateHoverStyles (line 230) | _updateHoverStyles(t,e,n){const i=this.options.hover,r=(t,e)=>t.filter... method _eventHandler (line 230) | _eventHandler(t,e){const n={event:t,replay:e,cancelable:!0,inChartArea... method _handleEvent (line 230) | _handleEvent(t,e,n){const{_active:r=[],options:o}=this,s=e,a=this._get... method _getActiveElements (line 230) | _getActiveElements(t,e,n,i){if("mouseout"===t.type)return[];if(!n)retu... function Be (line 244) | function Be(t,e,n){return n=n||.5,!e||t&&t.x>e.left-n&&t.x0&&""!==o... function Je (line 244) | function Je(t,e){const{x:n,y:i,w:r,h:o,radius:s}=e;t.arc(n+s.topLeft,i+s... function en (line 244) | function en(t,e){const n=(""+t).match(Ke);if(!n||"normal"===n[1])return ... function rn (line 244) | function rn(t,e){const n={},i=J(e),r=i?Object.keys(e):e,o=J(t)?i?n=>et(t... function on (line 244) | function on(t){return rn(t,{top:"y",right:"x",bottom:"y",left:"x"})} method constructor (line 230) | constructor(t){super(),this.options=void 0,this.parsed=void 0,this.ski... method inRange (line 230) | inRange(t,e,n){const i=this.options,{x:r,y:o}=this.getProps(["x","y"],... method inXRange (line 230) | inXRange(t,e){return rn(this,t,"x",e)} method inYRange (line 230) | inYRange(t,e){return rn(this,t,"y",e)} method getCenterPoint (line 230) | getCenterPoint(t){const{x:e,y:n}=this.getProps(["x","y"],t);return{x:e... method size (line 230) | size(t){t=t||this.options||{};let e=t.radius||0;e=Math.max(e,e&&t.hove... method draw (line 230) | draw(t,e){const n=this.options;this.skip||n.radius<.1||!(0,i.C)(this,e... method getRange (line 230) | getRange(){const t=this.options||{};return t.radius+t.hitRadius} function sn (line 244) | function sn(t){return rn(t,["topLeft","topRight","bottomLeft","bottomRig... function an (line 244) | function an(t){const e=on(t);return e.width=e.left+e.right,e.height=e.to... function ln (line 244) | function ln(t,e){t=t||{},e=e||Le.font;let n=et(t.size,e.size);"string"==... function cn (line 244) | function cn(t,e,n,i){let r,o,s,a=!0;for(r=0,o=t.length;rn&&0===... function hn (line 244) | function hn(t,e){return Object.assign(Object.create(t),e)} function dn (line 244) | function dn(t,e=[""],n,i,r=(()=>t[0])){const o=n||t;"undefined"===typeof... function fn (line 244) | function fn(t,e,n,i){const r={_cacheable:!1,_proxy:t,_context:e,_subProx... function pn (line 244) | function pn(t,e={scriptable:!0,indexable:!0}){const{_scriptable:n=e.scri... function bn (line 244) | function bn(t,e,n){if(Object.prototype.hasOwnProperty.call(t,e)||"constr... function xn (line 244) | function xn(t,e,n){const{_proxy:i,_context:r,_subProxy:o,_descriptors:s}... function yn (line 244) | function yn(t,e,n,i){const{_proxy:r,_context:o,_subProxy:s,_stack:a}=n;i... function vn (line 244) | function vn(t,e,n,i){const{_proxy:r,_context:o,_subProxy:s,_descriptors:... function wn (line 244) | function wn(t,e,n){return yt(t)?t(e,n):t} function _n (line 244) | function _n(t,e,n,i,r){for(const o of e){const e=kn(n,o);if(e){t.add(e);... method constructor (line 230) | constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius} method pathSegment (line 230) | pathSegment(t,e,n){const{x:r,y:o,radius:s}=this;return e=e||{start:0,e... method interpolate (line 230) | interpolate(t){const{x:e,y:n,radius:i}=this,r=t.angle;return{x:e+Math.... function Mn (line 244) | function Mn(t,e,n,i){const r=e._rootScopes,o=wn(e._fallback,n,i),s=[...t... function Sn (line 244) | function Sn(t,e,n,i,r){while(n)n=_n(t,e,n,i,r);return n} function Tn (line 244) | function Tn(t,e,n){const i=t._getTarget();e in i||(i[e]={});const r=i[e]... function Dn (line 244) | function Dn(t,e,n,i){let r;for(const o of e)if(r=Cn(gn(o,t),n),"undefine... function Cn (line 244) | function Cn(t,e){for(const n of e){if(!n)continue;const e=n[t];if("undef... function An (line 244) | function An(t){let e=t._keys;return e||(e=t._keys=On(t._scopes)),e} function On (line 244) | function On(t){const e=new Set;for(const n of t)for(const t of Object.ke... function Pn (line 244) | function Pn(t,e,n,i){const{iScale:r}=t,{key:o="r"}=this._parsing,s=new A... function Ln (line 244) | function Ln(t,e,n,i){const r=t.skip?e:t,o=e,s=n.skip?e:n,a=Bt(o,r),l=Bt(... function zn (line 244) | function zn(t,e,n){const i=t.length;let r,o,s,a,l,c=Rn(t,0);for(let u=0;... function Nn (line 244) | function Nn(t,e,n="x"){const i=In(n),r=t.length;let o,s,a,l=Rn(t,0);for(... function Fn (line 244) | function Fn(t,e="x"){const n=In(e),i=t.length,r=Array(i).fill(0),o=Array... function jn (line 244) | function jn(t,e,n){return Math.max(Math.min(t,n),e)} method constructor (line 230) | constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hov... method update (line 230) | update(t,e,n){this.maxWidth=t,this.maxHeight=e,this._margins=n,this.se... method setDimensions (line 230) | setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.lef... method buildLabels (line 230) | buildLabels(){const t=this.options.labels||{};let e=(0,i.Q)(t.generate... method fit (line 230) | fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width... method _fitRows (line 230) | _fitRows(t,e,n,i){const{ctx:r,maxWidth:o,options:{labels:{padding:s}}}... method _fitCols (line 230) | _fitCols(t,e,n,i){const{ctx:r,maxHeight:o,options:{labels:{padding:s}}... method adjustHitBoxes (line 230) | adjustHitBoxes(){if(!this.options.display)return;const t=this._compute... method isHorizontal (line 230) | isHorizontal(){return"top"===this.options.position||"bottom"===this.op... method draw (line 230) | draw(){if(this.options.display){const t=this.ctx;(0,i.Y)(t,this),this.... method _draw (line 230) | _draw(){const{options:t,columnSizes:e,lineWidths:n,ctx:r}=this,{align:... method drawTitle (line 230) | drawTitle(){const t=this.options,e=t.title,n=(0,i.a0)(e.font),r=(0,i.E... method _computeTitleHeight (line 230) | _computeTitleHeight(){const t=this.options.title,e=(0,i.a0)(t.font),n=... method _getLegendItemAt (line 230) | _getLegendItemAt(t,e){let n,r,o;if((0,i.ak)(t,this.left,this.right)&&(... method handleEvent (line 230) | handleEvent(t){const e=this.options;if(!Yn(t.type,e))return;const n=th... function Hn (line 244) | function Hn(t,e){let n,i,r,o,s,a=Be(t[0],e);for(n=0,i=t.length;n!t.ski... function $n (line 244) | function $n(){return"undefined"!==typeof window&&"undefined"!==typeof do... function Bn (line 244) | function Bn(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.to... function Yn (line 244) | function Yn(t,e,n){let i;return"string"===typeof t?(i=parseInt(t,10),-1!... function Un (line 244) | function Un(t,e){return Vn(t).getPropertyValue(e)} method constructor (line 230) | constructor(t){super(),this.chart=t.chart,this.options=t.options,this.... method update (line 230) | update(t,e){const n=this.options;if(this.left=0,this.top=0,!n.display)... method isHorizontal (line 230) | isHorizontal(){const t=this.options.position;return"top"===t||"bottom"... method _drawArgs (line 230) | _drawArgs(t){const{top:e,left:n,bottom:r,right:o,options:s}=this,a=s.a... method draw (line 230) | draw(){const t=this.ctx,e=this.options;if(!e.display)return;const n=(0... function Xn (line 244) | function Xn(t,e,n){const i={};n=n?"-"+n:"";for(let r=0;r<4;r++){const o=... function Zn (line 244) | function Zn(t,e){const n=t.touches,i=n&&n.length?n[0]:t,{offsetX:r,offse... function Qn (line 244) | function Qn(t,e){if("native"in t)return t;const{canvas:n,currentDevicePi... function Jn (line 244) | function Jn(t,e,n){let i,r;if(void 0===e||void 0===n){const o=t&&Bn(t);i... function ti (line 244) | function ti(t,e,n,i){const r=Vn(t),o=Xn(r,"margin"),s=Yn(r.maxWidth,t,"c... function ei (line 244) | function ei(t,e,n){const i=e||1,r=Kn(t.height*i),o=Kn(t.width*i);t.heigh... method passive (line 244) | get passive(){return t=!0,!1} function ii (line 244) | function ii(t,e){const n=Un(t,e),i=n&&n.match(/^(\d+)(\.\d+)?px$/);retur... function ri (line 244) | function ri(t,e,n,i){return{x:t.x+n*(e.x-t.x),y:t.y+n*(e.y-t.y)}} function oi (line 244) | function oi(t,e,n,i){return{x:t.x+n*(e.x-t.x),y:"middle"===i?n<.5?t.y:e.... function si (line 244) | function si(t,e,n,i){const r={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},s... method x (line 244) | x(n){return t+t+e-n} method setWidth (line 244) | setWidth(t){e=t} method textAlign (line 244) | textAlign(t){return"center"===t?t:"right"===t?"left":"right"} method xPlus (line 244) | xPlus(t,e){return t-e} method leftForLtr (line 244) | leftForLtr(t,e){return t-e} method x (line 244) | x(t){return t} method setWidth (line 244) | setWidth(t){} method textAlign (line 244) | textAlign(t){return t} method xPlus (line 244) | xPlus(t,e){return t+e} method leftForLtr (line 244) | leftForLtr(t,e){return t} function ci (line 244) | function ci(t,e,n){return t?ai(e,n):li()} function ui (line 244) | function ui(t,e){let n,i;"ltr"!==e&&"rtl"!==e||(n=t.canvas.style,i=[n.ge... function hi (line 244) | function hi(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.... function di (line 244) | function di(t){return"angle"===t?{between:Ut,compare:Yt,normalize:Vt}:{b... function fi (line 244) | function fi({start:t,end:e,count:n,loop:i,style:r}){return{start:t%n,end... method constructor (line 230) | constructor(t){super(),this.opacity=0,this._active=[],this._eventPosit... method initialize (line 230) | initialize(t){this.options=t,this._cachedAnimations=void 0,this.$conte... method _resolveAnimations (line 230) | _resolveAnimations(){const t=this._cachedAnimations;if(t)return t;cons... method getContext (line 230) | getContext(){return this.$context||(this.$context=ci(this.chart.getCon... method getTitle (line 230) | getTitle(t,e){const{callbacks:n}=e,i=di(n,"beforeTitle",this,t),r=di(n... method getBeforeBody (line 230) | getBeforeBody(t,e){return li(di(e.callbacks,"beforeBody",this,t))} method getBody (line 230) | getBody(t,e){const{callbacks:n}=e,r=[];return(0,i.F)(t,(t=>{const e={b... method getAfterBody (line 230) | getAfterBody(t,e){return li(di(e.callbacks,"afterBody",this,t))} method getFooter (line 230) | getFooter(t,e){const{callbacks:n}=e,i=di(n,"beforeFooter",this,t),r=di... method _createItems (line 230) | _createItems(t){const e=this._active,n=this.chart.data,r=[],o=[],s=[];... method update (line 230) | update(t,e){const n=this.options.setContext(this.getContext()),i=this.... method drawCaret (line 230) | drawCaret(t,e,n,i){const r=this.getCaretPosition(t,n,i);e.lineTo(r.x1,... method getCaretPosition (line 230) | getCaretPosition(t,e,n){const{xAlign:r,yAlign:o}=this,{caretSize:s,cor... method drawTitle (line 230) | drawTitle(t,e,n){const r=this.title,o=r.length;let s,a,l;if(o){const c... method _drawColorBox (line 230) | _drawColorBox(t,e,n,r,o){const s=this.labelColors[n],a=this.labelPoint... method drawBody (line 230) | drawBody(t,e,n){const{body:r}=this,{bodySpacing:o,bodyAlign:s,displayC... method drawFooter (line 230) | drawFooter(t,e,n){const r=this.footer,o=r.length;let s,a;if(o){const l... method drawBackground (line 230) | drawBackground(t,e,n,r){const{xAlign:o,yAlign:s}=this,{x:a,y:l}=t,{wid... method _updateAnimationTarget (line 230) | _updateAnimationTarget(t){const e=this.chart,n=this.$animations,i=n&&n... method _willRender (line 230) | _willRender(){return!!this.opacity} method draw (line 230) | draw(t){const e=this.options.setContext(this.getContext());let n=this.... method getActiveElements (line 230) | getActiveElements(){return this._active||[]} method setActiveElements (line 230) | setActiveElements(t,e){const n=this._active,r=t.map((({datasetIndex:t,... method handleEvent (line 230) | handleEvent(t,e,n=!0){if(e&&this._ignoreReplayEvents)return!1;this._ig... method _getActiveElements (line 230) | _getActiveElements(t,e,n,i){const r=this.options;if("mouseout"===t.typ... method _positionChanged (line 230) | _positionChanged(t,e){const{caretX:n,caretY:i,options:r}=this,o=Gn[r.p... function pi (line 244) | function pi(t,e,n){const{property:i,start:r,end:o}=n,{between:s,normaliz... function gi (line 244) | function gi(t,e,n){if(!n)return[t];const{property:i,start:r,end:o}=n,s=e... function mi (line 244) | function mi(t,e){const n=[],i=t.segments;for(let r=0;re.length-1?null:th... method getValueForPixel (line 230) | getValueForPixel(t){return Math.round(this._startValue+this.getDecimal... method getBasePixel (line 230) | getBasePixel(){return this.bottom} function vi (line 244) | function vi(t,e,n,i){return i&&i.setContext&&n?wi(t,e,n,i):e} function wi (line 244) | function wi(t,e,n,i){const r=t._chart.getContext(),o=ki(t.options),{_dat... function ki (line 244) | function ki(t){return{backgroundColor:t.backgroundColor,borderCapStyle:t... method constructor (line 230) | constructor(t){super(t),this.start=void 0,this.end=void 0,this._startV... method parse (line 230) | parse(t,e){return(0,i.k)(t)||("number"===typeof t||t instanceof Number... method handleTickRangeOptions (line 230) | handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined... method getTickLimit (line 230) | getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:n,stepS... method computeTickLimit (line 230) | computeTickLimit(){return Number.POSITIVE_INFINITY} method buildTicks (line 230) | buildTicks(){const t=this.options,e=t.ticks;let n=this.getTickLimit();... method configure (line 230) | configure(){const t=this.ticks;let e=this.min,n=this.max;if(super.conf... method getLabelForValue (line 230) | getLabelForValue(t){return(0,i.o)(t,this.chart.options.locale,this.opt... function _i (line 244) | function _i(t,e){if(!e)return!1;const n=[],i=function(t,e){return me(e)?... method determineDataLimits (line 230) | determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=(... method computeTickLimit (line 230) | computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.hei... method getPixelForValue (line 230) | getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-thi... method getValueForPixel (line 230) | getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)... function Mi (line 244) | function Mi(t,e,n){return t.options.clip?t[n]:e[n]} function Si (line 244) | function Si(t,e){const{xScale:n,yScale:i}=t;return n&&i?{left:Mi(n,e,"le... function Ti (line 244) | function Ti(t,e){const n=e._clip;if(n.disabled)return!1;const i=Si(e,t.c... function u (line 244) | function u(t,e){return"function"===typeof t?t(e):t&&"object"===typeof t&... function h (line 244) | function h(t,e){return u(e||t,t)} function p (line 244) | function p(t){return(e={})=>{const n=e.width?String(e.width):t.defaultWi... function w (line 244) | function w(t){return(e,n)=>{const i=n?.context?String(n.context):"standa... function O (line 244) | function O(t){return(e,n={})=>{const i=n.width,r=i&&t.matchPatterns[i]||... function P (line 244) | function P(t,e){for(const n in t)if(Object.prototype.hasOwnProperty.call... method constructor (line 230) | constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cache... method initialize (line 230) | initialize(){const t=this._cachedMeta;this.configure(),this.linkScales... method updateIndex (line 230) | updateIndex(t){this.index!==t&&D(this._cachedMeta),this.index=t} method linkScales (line 230) | linkScales(){const t=this.chart,e=this._cachedMeta,n=this.getDataset()... method getDataset (line 230) | getDataset(){return this.chart.data.datasets[this.index]} method getMeta (line 230) | getMeta(){return this.chart.getDatasetMeta(this.index)} method getScaleForId (line 230) | getScaleForId(t){return this.chart.scales[t]} method _getOtherScale (line 230) | _getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScal... method reset (line 230) | reset(){this._update("reset")} method _destroy (line 230) | _destroy(){const t=this._cachedMeta;this._data&&(0,i.u)(this._data,thi... method _dataCheck (line 230) | _dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),n=this._d... method addElements (line 230) | addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetE... method buildOrUpdateElements (line 230) | buildOrUpdateElements(t){const e=this._cachedMeta,n=this.getDataset();... method configure (line 230) | configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type)... method parse (line 230) | parse(t,e){const{_cachedMeta:n,_data:r}=this,{iScale:o,_stacked:s}=n,a... method parsePrimitiveData (line 230) | parsePrimitiveData(t,e,n,i){const{iScale:r,vScale:o}=t,s=r.axis,a=o.ax... method parseArrayData (line 230) | parseArrayData(t,e,n,i){const{xScale:r,yScale:o}=t,s=new Array(i);let ... method parseObjectData (line 230) | parseObjectData(t,e,n,r){const{xScale:o,yScale:s}=t,{xAxisKey:a="x",yA... method getParsed (line 230) | getParsed(t){return this._cachedMeta._parsed[t]} method getDataElement (line 230) | getDataElement(t){return this._cachedMeta.data[t]} method applyStack (line 230) | applyStack(t,e,n){const i=this.chart,r=this._cachedMeta,o=e[t.axis],s=... method updateRangeFromParsed (line 230) | updateRangeFromParsed(t,e,n,i){const r=n[e.axis];let o=null===r?NaN:r;... method getMinMax (line 230) | getMinMax(t,e){const n=this._cachedMeta,r=n._parsed,o=n._sorted&&t===n... method getAllParsedValues (line 230) | getAllParsedValues(t){const e=this._cachedMeta._parsed,n=[];let r,o,s;... method getMaxOverflow (line 230) | getMaxOverflow(){return!1} method getLabelAndValue (line 230) | getLabelAndValue(t){const e=this._cachedMeta,n=e.iScale,i=e.vScale,r=t... method _update (line 230) | _update(t){const e=this._cachedMeta;this.update(t||"default"),e._clip=... method update (line 230) | update(t){} method draw (line 230) | draw(){const t=this._ctx,e=this.chart,n=this._cachedMeta,i=n.data||[],... method getStyle (line 230) | getStyle(t,e){const n=e?"active":"default";return void 0===t&&this._ca... method getContext (line 230) | getContext(t,e,n){const i=this.getDataset();let r;if(t>=0&&t{const i=e.match(t.matchPattern);if(!i)ret... method generateLabels (line 230) | generateLabels(t){const e=t.data,{labels:{pointStyle:n,textAlign:i,col... method onClick (line 230) | onClick(t,e,n){n.chart.toggleDataVisibility(e.index),n.chart.update()} method constructor (line 230) | constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadi... method linkScales (line 230) | linkScales(){} method parse (line 230) | parse(t,e){const n=this.getDataset().data,r=this._cachedMeta;if(!1===t... method _getRotation (line 230) | _getRotation(){return(0,i.t)(this.options.rotation-90)} method _getCircumference (line 230) | _getCircumference(){return(0,i.t)(this.options.circumference)} method _getRotationExtents (line 230) | _getRotationExtents(){let t=i.T,e=-i.T;for(let n=0;n0&&!... method getLabelAndValue (line 230) | getLabelAndValue(t){const e=this._cachedMeta,n=this.chart,r=n.data.lab... method getMaxBorderWidth (line 230) | getMaxBorderWidth(t){let e=0;const n=this.chart;let i,r,o,s,a;if(!t)fo... method getMaxOffset (line 230) | getMaxOffset(t){let e=0;for(let n=0,i=t.length;nu(e,t))} method set (line 244) | set(t,e){return e.timestampIsSet?t:u(t,lt(t,this.context))} class pt (line 244) | class pt{run(t,e,n,i){const r=this.parse(t,e,n,i);return r?{setter:new d... method run (line 244) | run(t,e,n,i){const r=this.parse(t,e,n,i);return r?{setter:new dt(r.val... method validate (line 244) | validate(t,e,n){return!0} class gt (line 244) | class gt extends pt{priority=140;parse(t,e,n){switch(e){case"G":case"GG"... method parse (line 244) | parse(t,e,n){switch(e){case"G":case"GG":case"GGG":return n.era(t,{widt... method set (line 244) | set(t,e,n){return e.era=n,t.setFullYear(n,0,1),t.setHours(0,0,0,0),t} function xt (line 244) | function xt(t,e){return t?{value:e(t.value),rest:t.rest}:t} function yt (line 244) | function yt(t,e){const n=e.match(t);return n?{value:parseInt(n[0],10),re... function vt (line 244) | function vt(t,e){const n=e.match(t);if(!n)return null;if("Z"===n[0])retu... function wt (line 244) | function wt(t){return yt(mt.anyDigitsSigned,t)} function kt (line 244) | function kt(t,e){switch(t){case 1:return yt(mt.singleDigit,e);case 2:ret... function _t (line 244) | function _t(t,e){switch(t){case 1:return yt(mt.singleDigitSigned,e);case... function Mt (line 244) | function Mt(t){switch(t){case"morning":return 4;case"evening":return 17;... function St (line 244) | function St(t,e){const n=e>0,i=n?e:1-e;let r;if(i<=50)r=t||100;else{cons... function Tt (line 244) | function Tt(t){return t%400===0||t%4===0&&t%100!==0} class Dt (line 244) | class Dt extends pt{priority=130;incompatibleTokens=["Y","R","u","w","I"... method parse (line 244) | parse(t,e,n){const i=t=>({year:t,isTwoDigitYear:"yy"===e});switch(e){c... method validate (line 244) | validate(t,e){return e.isTwoDigitYear||e.year>0} method set (line 244) | set(t,e,n){const i=t.getFullYear();if(n.isTwoDigitYear){const e=St(n.y... function Ct (line 244) | function Ct(t,e){const n=st(),i=e?.weekStartsOn??e?.locale?.options?.wee... function At (line 244) | function At(t,e){const n=h(t,e?.in),i=n.getFullYear(),r=st(),o=e?.firstW... class Ot (line 244) | class Ot extends pt{priority=130;parse(t,e,n){const i=t=>({year:t,isTwoD... method parse (line 244) | parse(t,e,n){const i=t=>({year:t,isTwoDigitYear:"YY"===e});switch(e){c... method validate (line 244) | validate(t,e){return e.isTwoDigitYear||e.year>0} method set (line 244) | set(t,e,n,i){const r=At(t,i);if(n.isTwoDigitYear){const e=St(n.year,r)... function Pt (line 244) | function Pt(t,e){return Ct(t,{...e,weekStartsOn:1})} method acquireContext (line 230) | acquireContext(t,e){const n=t&&t.getContext&&t.getContext("2d");return... method releaseContext (line 230) | releaseContext(t){const e=t.canvas;if(!e[dt])return!1;const n=e[dt].in... method addEventListener (line 230) | addEventListener(t,e,n){this.removeEventListener(t,e);const i=t.$proxi... method removeEventListener (line 230) | removeEventListener(t,e){const n=t.$proxies||(t.$proxies={}),i=n[e];if... method getDevicePixelRatio (line 230) | getDevicePixelRatio(){return window.devicePixelRatio} method getMaximumSize (line 230) | getMaximumSize(t,e,n,r){return(0,i.G)(t,e,n,r)} method isAttached (line 230) | isAttached(t){const e=t&&(0,i.I)(t);return!(!e||!e.isConnected)} class Et (line 244) | class Et extends pt{priority=130;parse(t,e){return _t("R"===e?4:e.length... method constructor (line 6) | constructor(t,e){this.dep=new A,this["__v_isRef"]=!0,this["__v_isShall... method value (line 6) | get value(){return this.dep.track(),this._value} method value (line 6) | set value(t){const e=this._rawValue,n=this["__v_isShallow"]||kt(t)||wt... method parse (line 244) | parse(t,e){return _t("R"===e?4:e.length,t)} method set (line 244) | set(t,e,n){const i=u(t,0);return i.setFullYear(n,0,4),i.setHours(0,0,0... class Rt (line 244) | class Rt extends pt{priority=130;parse(t,e){return _t("u"===e?4:e.length... method tooltipPosition (line 230) | tooltipPosition(t){const{x:e,y:n}=this.getProps(["x","y"],t);return{x:... method hasValue (line 230) | hasValue(){return(0,i.x)(this.x)&&(0,i.x)(this.y)} method getProps (line 230) | getProps(t,e){const n=this.$animations;if(!e||!n)return this;const i={... method parse (line 244) | parse(t,e){return _t("u"===e?4:e.length,t)} method set (line 244) | set(t,e,n){return t.setFullYear(n,0,1),t.setHours(0,0,0,0),t} class It (line 244) | class It extends pt{priority=120;parse(t,e,n){switch(e){case"Q":case"QQ"... method parse (line 244) | parse(t,e,n){switch(e){case"Q":case"QQ":return kt(e.length,t);case"Qo"... method validate (line 244) | validate(t,e){return e>=1&&e<=4} method set (line 244) | set(t,e,n){return t.setMonth(3*(n-1),1),t.setHours(0,0,0,0),t} class Lt (line 244) | class Lt extends pt{priority=120;parse(t,e,n){switch(e){case"q":case"qq"... method parse (line 244) | parse(t,e,n){switch(e){case"q":case"qq":return kt(e.length,t);case"qo"... method validate (line 244) | validate(t,e){return e>=1&&e<=4} method set (line 244) | set(t,e,n){return t.setMonth(3*(n-1),1),t.setHours(0,0,0,0),t} class zt (line 244) | class zt extends pt{incompatibleTokens=["Y","R","q","Q","L","w","I","D",... method constructor (line 6) | constructor(t,e,n){this.fn=t,this.setter=e,this._value=void 0,this.dep... method notify (line 6) | notify(){if(this.flags|=16,!(8&this.flags||o===this))return f(this,!0)... method value (line 6) | get value(){const t=this.dep.track();return y(this),t&&(t.version=this... method value (line 6) | set value(t){this.setter&&this.setter(t)} method parse (line 244) | parse(t,e,n){const i=t=>t-1;switch(e){case"M":return xt(yt(mt.month,t)... method validate (line 244) | validate(t,e){return e>=0&&e<=11} method set (line 244) | set(t,e,n){return t.setMonth(n,1),t.setHours(0,0,0,0),t} class Nt (line 244) | class Nt extends pt{priority=110;parse(t,e,n){const i=t=>t-1;switch(e){c... method parse (line 244) | parse(t,e,n){const i=t=>t-1;switch(e){case"L":return xt(yt(mt.month,t)... method validate (line 244) | validate(t,e){return e>=0&&e<=11} method set (line 244) | set(t,e,n){return t.setMonth(n,1),t.setHours(0,0,0,0),t} function Ft (line 244) | function Ft(t,e){const n=st(),i=e?.firstWeekContainsDate??e?.locale?.opt... function jt (line 244) | function jt(t,e){const n=h(t,e?.in),i=+Ct(n,e)-+Ft(n,e);return Math.roun... function Ht (line 244) | function Ht(t,e,n){const i=h(t,n?.in),r=jt(i,n)-e;return i.setDate(i.get... class Wt (line 244) | class Wt extends pt{priority=100;parse(t,e,n){switch(e){case"w":return y... method parse (line 244) | parse(t,e,n){switch(e){case"w":return yt(mt.week,t);case"wo":return n.... method validate (line 244) | validate(t,e){return e>=1&&e<=53} method set (line 244) | set(t,e,n,i){return Ct(Ht(t,n,i),i)} function $t (line 244) | function $t(t,e){const n=h(t,e?.in),i=n.getFullYear(),r=u(n,0);r.setFull... function Bt (line 244) | function Bt(t,e){const n=$t(t,e),i=u(e?.in||t,0);return i.setFullYear(n,... function Yt (line 244) | function Yt(t,e){const n=h(t,e?.in),i=+Pt(n)-+Bt(n);return Math.round(i/... function Vt (line 244) | function Vt(t,e,n){const i=h(t,n?.in),r=Yt(i,n)-e;return i.setDate(i.get... class Ut (line 244) | class Ut extends pt{priority=100;parse(t,e,n){switch(e){case"I":return y... method parse (line 244) | parse(t,e,n){switch(e){case"I":return yt(mt.week,t);case"Io":return n.... method validate (line 244) | validate(t,e){return e>=1&&e<=53} method set (line 244) | set(t,e,n){return Pt(Vt(t,n))} class Gt (line 244) | class Gt extends pt{priority=90;subPriority=1;parse(t,e,n){switch(e){cas... method parse (line 244) | parse(t,e,n){switch(e){case"d":return yt(mt.date,t);case"do":return n.... method validate (line 244) | validate(t,e){const n=t.getFullYear(),i=Tt(n),r=t.getMonth();return i?... method set (line 244) | set(t,e,n){return t.setDate(n),t.setHours(0,0,0,0),t} method inRange (line 258) | inRange(t,e,n,i){return y({x:t,y:e},{rect:this.getProps(["x","y","x2",... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const e=this.options;e.display&&e.content&&(ee(t,this),t.save(... method resolveElementProperties (line 258) | resolveElementProperties(t,e){const n=Zt(t,e);if(!n)return{};const{con... class Zt (line 244) | class Zt extends pt{priority=90;subpriority=1;parse(t,e,n){switch(e){cas... method parse (line 244) | parse(t,e,n){switch(e){case"D":case"DD":return yt(mt.dayOfYear,t);case... method validate (line 244) | validate(t,e){const n=t.getFullYear(),i=Tt(n);return i?e>=1&&e<=366:e>... method set (line 244) | set(t,e,n){return t.setMonth(0,n),t.setHours(0,0,0,0),t} function Qt (line 244) | function Qt(t,e,n){const i=h(t,n?.in);return isNaN(e)?u(n?.in||t,NaN):e?... function Jt (line 244) | function Jt(t,e,n){const i=st(),r=n?.weekStartsOn??n?.locale?.options?.w... class Kt (line 244) | class Kt extends pt{priority=90;parse(t,e,n){switch(e){case"E":case"EE":... method constructor (line 230) | constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void... method init (line 230) | init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,... method parse (line 230) | parse(t,e){return t} method getUserBounds (line 230) | getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:n,_suggestedMa... method getMinMax (line 230) | getMinMax(t){let e,{min:n,max:r,minDefined:o,maxDefined:s}=this.getUse... method getPadding (line 230) | getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,ri... method getTicks (line 230) | getTicks(){return this.ticks} method getLabels (line 230) | getLabels(){const t=this.chart.data;return this.options.labels||(this.... method getLabelItems (line 230) | getLabelItems(t=this.chart.chartArea){const e=this._labelItems||(this.... method beforeLayout (line 230) | beforeLayout(){this._cache={},this._dataLimitsCached=!1} method beforeUpdate (line 230) | beforeUpdate(){(0,i.Q)(this.options.beforeUpdate,[this])} method update (line 230) | update(t,e,n){const{beginAtZero:r,grace:o,ticks:s}=this.options,a=s.sa... method configure (line 230) | configure(){let t,e,n=this.options.reverse;this.isHorizontal()?(t=this... method afterUpdate (line 230) | afterUpdate(){(0,i.Q)(this.options.afterUpdate,[this])} method beforeSetDimensions (line 230) | beforeSetDimensions(){(0,i.Q)(this.options.beforeSetDimensions,[this])} method setDimensions (line 230) | setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.lef... method afterSetDimensions (line 230) | afterSetDimensions(){(0,i.Q)(this.options.afterSetDimensions,[this])} method _callHooks (line 230) | _callHooks(t){this.chart.notifyPlugins(t,this.getContext()),(0,i.Q)(th... method beforeDataLimits (line 230) | beforeDataLimits(){this._callHooks("beforeDataLimits")} method determineDataLimits (line 230) | determineDataLimits(){} method afterDataLimits (line 230) | afterDataLimits(){this._callHooks("afterDataLimits")} method beforeBuildTicks (line 230) | beforeBuildTicks(){this._callHooks("beforeBuildTicks")} method buildTicks (line 230) | buildTicks(){return[]} method afterBuildTicks (line 230) | afterBuildTicks(){this._callHooks("afterBuildTicks")} method beforeTickToLabelConversion (line 230) | beforeTickToLabelConversion(){(0,i.Q)(this.options.beforeTickToLabelCo... method generateTickLabels (line 230) | generateTickLabels(t){const e=this.options.ticks;let n,r,o;for(n=0,r=t... method afterTickToLabelConversion (line 230) | afterTickToLabelConversion(){(0,i.Q)(this.options.afterTickToLabelConv... method beforeCalculateLabelRotation (line 230) | beforeCalculateLabelRotation(){(0,i.Q)(this.options.beforeCalculateLab... method calculateLabelRotation (line 230) | calculateLabelRotation(){const t=this.options,e=t.ticks,n=Bt(this.tick... method afterCalculateLabelRotation (line 230) | afterCalculateLabelRotation(){(0,i.Q)(this.options.afterCalculateLabel... method afterAutoSkip (line 230) | afterAutoSkip(){} method beforeFit (line 230) | beforeFit(){(0,i.Q)(this.options.beforeFit,[this])} method fit (line 230) | fit(){const t={width:0,height:0},{chart:e,options:{ticks:n,title:r,gri... method _calculatePadding (line 230) | _calculatePadding(t,e,n,i){const{ticks:{align:r,padding:o},position:s}... method _handleMargins (line 230) | _handleMargins(){this._margins&&(this._margins.left=Math.max(this.padd... method afterFit (line 230) | afterFit(){(0,i.Q)(this.options.afterFit,[this])} method isHorizontal (line 230) | isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||... method isFullSize (line 230) | isFullSize(){return this.options.fullSize} method _convertTicksToLabels (line 230) | _convertTicksToLabels(t){let e,n;for(this.beforeTickToLabelConversion(... method _getLabelSizes (line 230) | _getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ti... method _computeLabelSizes (line 230) | _computeLabelSizes(t,e,n){const{ctx:r,_longestTextCache:o}=this,s=[],a... method getLabelForValue (line 230) | getLabelForValue(t){return t} method getPixelForValue (line 230) | getPixelForValue(t,e){return NaN} method getValueForPixel (line 230) | getValueForPixel(t){} method getPixelForTick (line 230) | getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:th... method getPixelForDecimal (line 230) | getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._start... method getDecimalForPixel (line 230) | getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return... method getBasePixel (line 230) | getBasePixel(){return this.getPixelForValue(this.getBaseValue())} method getBaseValue (line 230) | getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0} method getContext (line 230) | getContext(t){const e=this.ticks||[];if(t>=0&&t=0&&e<=6} method set (line 244) | set(t,e,n,i){return t=Jt(t,n,i),t.setHours(0,0,0,0),t} class te (line 244) | class te extends pt{priority=90;parse(t,e,n,i){const r=t=>{const e=7*Mat... method constructor (line 230) | constructor(t,e,n){this.type=t,this.scope=e,this.override=n,this.items... method isForType (line 230) | isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prot... method register (line 230) | register(t){const e=Object.getPrototypeOf(t);let n;ie(e)&&(n=this.regi... method get (line 230) | get(t){return this.items[t]} method unregister (line 230) | unregister(t){const e=this.items,n=t.id,r=this.scope;n in e&&delete e[... method parse (line 244) | parse(t,e,n,i){const r=t=>{const e=7*Math.floor((t-1)/7);return(t+i.we... method validate (line 244) | validate(t,e){return e>=0&&e<=6} method set (line 244) | set(t,e,n,i){return t=Jt(t,n,i),t.setHours(0,0,0,0),t} class ee (line 244) | class ee extends pt{priority=90;parse(t,e,n,i){const r=t=>{const e=7*Mat... method parse (line 244) | parse(t,e,n,i){const r=t=>{const e=7*Math.floor((t-1)/7);return(t+i.we... method validate (line 244) | validate(t,e){return e>=0&&e<=6} method set (line 244) | set(t,e,n,i){return t=Jt(t,n,i),t.setHours(0,0,0,0),t} function ne (line 244) | function ne(t,e){const n=h(t,e?.in).getDay();return 0===n?7:n} method inRange (line 258) | inRange(t,e,n,i){return y({x:t,y:e},{rect:this.getProps(["x","y","x2",... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const e=this.options,n=!(0,r.h)(this._visible)||this._visible;... method resolveElementProperties (line 258) | resolveElementProperties(t,e){let n;if(I(e))n=mt(t,e);else{const{cente... function ie (line 244) | function ie(t,e,n){const i=h(t,n?.in),r=ne(i,n),o=e-r;return Qt(i,o,n)} class re (line 244) | class re extends pt{priority=90;parse(t,e,n){const i=t=>0===t?7:t;switch... method constructor (line 230) | constructor(){this.controllers=new te(P,"datasets",!0),this.elements=n... method add (line 230) | add(...t){this._each("register",t)} method remove (line 230) | remove(...t){this._each("unregister",t)} method addControllers (line 230) | addControllers(...t){this._each("register",t,this.controllers)} method addElements (line 230) | addElements(...t){this._each("register",t,this.elements)} method addPlugins (line 230) | addPlugins(...t){this._each("register",t,this.plugins)} method addScales (line 230) | addScales(...t){this._each("register",t,this.scales)} method getController (line 230) | getController(t){return this._get(t,this.controllers,"controller")} method getElement (line 230) | getElement(t){return this._get(t,this.elements,"element")} method getPlugin (line 230) | getPlugin(t){return this._get(t,this.plugins,"plugin")} method getScale (line 230) | getScale(t){return this._get(t,this.scales,"scale")} method removeControllers (line 230) | removeControllers(...t){this._each("unregister",t,this.controllers)} method removeElements (line 230) | removeElements(...t){this._each("unregister",t,this.elements)} method removePlugins (line 230) | removePlugins(...t){this._each("unregister",t,this.plugins)} method removeScales (line 230) | removeScales(...t){this._each("unregister",t,this.scales)} method _each (line 230) | _each(t,e,n){[...e].forEach((e=>{const r=n||this._getRegistryForType(e... method _exec (line 230) | _exec(t,e,n){const r=(0,i.a5)(t);(0,i.Q)(n["before"+r],[],n),e[t](n),(... method _getRegistryForType (line 230) | _getRegistryForType(t){for(let e=0;e0===t?7:t;switch(e){case"i":case"ii":return kt... method validate (line 244) | validate(t,e){return e>=1&&e<=7} method set (line 244) | set(t,e,n){return t=ie(t,n),t.setHours(0,0,0,0),t} class oe (line 244) | class oe extends pt{priority=80;parse(t,e,n){switch(e){case"a":case"aa":... method parse (line 244) | parse(t,e,n){switch(e){case"a":case"aa":case"aaa":return n.dayPeriod(t... method set (line 244) | set(t,e,n){return t.setHours(Mt(n),0,0,0),t} class se (line 244) | class se extends pt{priority=80;parse(t,e,n){switch(e){case"b":case"bb":... method constructor (line 230) | constructor(){this._init=void 0} method notify (line 230) | notify(t,e,n,i){if("beforeInit"===e&&(this._init=this._createDescripto... method _notify (line 230) | _notify(t,e,n,r){r=r||{};for(const o of t){const t=o.plugin,s=t[n],a=[... method invalidate (line 230) | invalidate(){(0,i.k)(this._cache)||(this._oldCache=this._cache,this._c... method _descriptors (line 230) | _descriptors(t){if(this._cache)return this._cache;const e=this._cache=... method _createDescriptors (line 230) | _createDescriptors(t,e){const n=t&&t.config,r=(0,i.v)(n.options&&n.opt... method _notifyStateChanges (line 230) | _notifyStateChanges(t){const e=this._oldCache||[],n=this._cache,i=(t,e... method parse (line 244) | parse(t,e,n){switch(e){case"b":case"bb":case"bbb":return n.dayPeriod(t... method set (line 244) | set(t,e,n){return t.setHours(Mt(n),0,0,0),t} class ae (line 244) | class ae extends pt{priority=80;parse(t,e,n){switch(e){case"B":case"BB":... method parse (line 244) | parse(t,e,n){switch(e){case"B":case"BB":case"BBB":return n.dayPeriod(t... method set (line 244) | set(t,e,n){return t.setHours(Mt(n),0,0,0),t} class le (line 244) | class le extends pt{priority=70;parse(t,e,n){switch(e){case"h":return yt... method parse (line 244) | parse(t,e,n){switch(e){case"h":return yt(mt.hour12h,t);case"ho":return... method validate (line 244) | validate(t,e){return e>=1&&e<=12} method set (line 244) | set(t,e,n){const i=t.getHours()>=12;return i&&n<12?t.setHours(n+12,0,0... class ce (line 244) | class ce extends pt{priority=70;parse(t,e,n){switch(e){case"H":return yt... method parse (line 244) | parse(t,e,n){switch(e){case"H":return yt(mt.hour23h,t);case"Ho":return... method validate (line 244) | validate(t,e){return e>=0&&e<=23} method set (line 244) | set(t,e,n){return t.setHours(n,0,0,0),t} class ue (line 244) | class ue extends pt{priority=70;parse(t,e,n){switch(e){case"K":return yt... method parse (line 244) | parse(t,e,n){switch(e){case"K":return yt(mt.hour11h,t);case"Ko":return... method validate (line 244) | validate(t,e){return e>=0&&e<=11} method set (line 244) | set(t,e,n){const i=t.getHours()>=12;return i&&n<12?t.setHours(n+12,0,0... class he (line 244) | class he extends pt{priority=70;parse(t,e,n){switch(e){case"k":return yt... method parse (line 244) | parse(t,e,n){switch(e){case"k":return yt(mt.hour24h,t);case"ko":return... method validate (line 244) | validate(t,e){return e>=1&&e<=24} method set (line 244) | set(t,e,n){const i=n<=24?n%24:n;return t.setHours(i,0,0,0),t} class de (line 244) | class de extends pt{priority=60;parse(t,e,n){switch(e){case"m":return yt... method parse (line 244) | parse(t,e,n){switch(e){case"m":return yt(mt.minute,t);case"mo":return ... method validate (line 244) | validate(t,e){return e>=0&&e<=59} method set (line 244) | set(t,e,n){return t.setMinutes(n,0,0),t} class fe (line 244) | class fe extends pt{priority=50;parse(t,e,n){switch(e){case"s":return yt... method parse (line 244) | parse(t,e,n){switch(e){case"s":return yt(mt.second,t);case"so":return ... method validate (line 244) | validate(t,e){return e>=0&&e<=59} method set (line 244) | set(t,e,n){return t.setSeconds(n,0),t} method inRange (line 258) | inRange(t,e,n,i){const r=(this.options.borderWidth+this.options.hitTol... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const{x:e,y:n,x2:i,y2:r,cp:o,options:s}=this;if(t.save(),!V(t,... method label (line 258) | get label(){return this.elements&&this.elements[0]} method resolveElementProperties (line 258) | resolveElementProperties(t,e){const n=yt(t,e),{x:i,y:o,x2:s,y2:a}=n,l=... class pe (line 244) | class pe extends pt{priority=30;parse(t,e){const n=t=>Math.trunc(t*Math.... method parse (line 244) | parse(t,e){const n=t=>Math.trunc(t*Math.pow(10,3-e.length));return xt(... method set (line 244) | set(t,e,n){return t.setMilliseconds(n),t} function ge (line 244) | function ge(t){const e=h(t),n=new Date(Date.UTC(e.getFullYear(),e.getMon... class me (line 244) | class me extends pt{priority=10;parse(t,e){switch(e){case"X":return vt(b... method parse (line 244) | parse(t,e){switch(e){case"X":return vt(bt.basicOptionalMinutes,t);case... method set (line 244) | set(t,e,n){return e.timestampIsSet?t:u(t,t.getTime()-ge(t)-n)} class be (line 244) | class be extends pt{priority=10;parse(t,e){switch(e){case"x":return vt(b... method parse (line 244) | parse(t,e){switch(e){case"x":return vt(bt.basicOptionalMinutes,t);case... method set (line 244) | set(t,e,n){return e.timestampIsSet?t:u(t,t.getTime()-ge(t)-n)} class xe (line 244) | class xe extends pt{priority=40;parse(t){return wt(t)}set(t,e,n){return[... method parse (line 244) | parse(t){return wt(t)} method set (line 244) | set(t,e,n){return[u(t,1e3*n),{timestampIsSet:!0}]} class ye (line 244) | class ye extends pt{priority=20;parse(t){return wt(t)}set(t,e,n){return[... method parse (line 244) | parse(t){return wt(t)} method set (line 244) | set(t,e,n){return[u(t,n),{timestampIsSet:!0}]} function De (line 244) | function De(t,e,n,i){const r=()=>u(i?.in||n,NaN),o=at(),s=i?.locale??o.l... method constructor (line 230) | constructor(t){this._config=ke(t),this._scopeCache=new Map,this._resol... method platform (line 230) | get platform(){return this._config.platform} method type (line 230) | get type(){return this._config.type} method type (line 230) | set type(t){this._config.type=t} method data (line 230) | get data(){return this._config.data} method data (line 230) | set data(t){this._config.data=we(t)} method options (line 230) | get options(){return this._config.options} method options (line 230) | set options(t){this._config.options=t} method plugins (line 230) | get plugins(){return this._config.plugins} method update (line 230) | update(){const t=this._config;this.clearCache(),ve(t)} method clearCache (line 230) | clearCache(){this._scopeCache.clear(),this._resolverCache.clear()} method datasetScopeKeys (line 230) | datasetScopeKeys(t){return Se(t,(()=>[[`datasets.${t}`,""]]))} method datasetAnimationScopeKeys (line 230) | datasetAnimationScopeKeys(t,e){return Se(`${t}.transition.${e}`,(()=>[... method datasetElementScopeKeys (line 230) | datasetElementScopeKeys(t,e){return Se(`${t}-${e}`,(()=>[[`datasets.${... method pluginScopeKeys (line 230) | pluginScopeKeys(t){const e=t.id,n=this.type;return Se(`${n}-plugin-${e... method _cachedScopes (line 230) | _cachedScopes(t,e){const n=this._scopeCache;let i=n.get(t);return i&&!... method getOptionScopes (line 230) | getOptionScopes(t,e,n){const{options:r,type:o}=this,s=this._cachedScop... method chartOptionScopes (line 230) | chartOptionScopes(){const{options:t,type:e}=this;return[t,i.a3[e]||{},... method resolveNamedOptions (line 230) | resolveNamedOptions(t,e,n,r=[""]){const o={$shared:!0},{resolver:s,sub... method createResolver (line 230) | createResolver(t,e,n=[""],r){const{resolver:o}=Ce(this._resolverCache,... function Ce (line 244) | function Ce(t){return t.match(_e)[1].replace(Me,"'")} function Ae (line 244) | function Ae(t,e){const n=()=>u(e?.in,NaN),i=e?.additionalDigits??2,r=Ie(... function Ie (line 244) | function Ie(t){const e={},n=t.split(Oe.dateTimeDelimiter);let i;if(n.len... method constructor (line 244) | constructor(t,e){this.animation=void 0,this.backgroundColor="rgba(0,0,... method set (line 244) | set(t,e){return Re(this,t,e)} method get (line 244) | get(t){return Ee(this,t)} method describe (line 244) | describe(t,e){return Re(Pe,t,e)} method override (line 244) | override(t,e){return Re(Oe,t,e)} method route (line 244) | route(t,e,n,i){const r=Ee(this,t),o=Ee(this,n),s="_"+e;Object.definePr... method apply (line 244) | apply(t){t.forEach((t=>t(this)))} function Le (line 244) | function Le(t,e){const n=new RegExp("^(?:(\\d{4}|[+-]\\d{"+(4+e)+"})|(\\... method inRange (line 258) | inRange(t,e,n,i){const o=this.options.rotation,s=(this.options.borderW... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const{width:e,height:n,centerX:i,centerY:o,options:s}=this;t.s... method label (line 258) | get label(){return this.elements&&this.elements[0]} method resolveElementProperties (line 258) | resolveElementProperties(t,e){return vt(t,e)} function ze (line 244) | function ze(t,e){if(null===e)return new Date(NaN);const n=t.match(Pe);if... function Ne (line 244) | function Ne(t){return t?parseInt(t):1} method inRange (line 258) | inRange(t,e,n,i){const{x:r,y:o,x2:s,y2:a,width:l}=this.getProps(["x","... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const e=this.options,n=e.borderWidth;if(e.radius<.1)return;t.s... method resolveElementProperties (line 258) | resolveElementProperties(t,e){const n=xt(t,e);return n.initProperties=... function Fe (line 244) | function Fe(t){const e=t.match(Ee);if(!e)return NaN;const n=je(e[1]),i=j... method inRange (line 258) | inRange(t,e,n,i){if("x"!==n&&"y"!==n)return this.options.radius>=.1&&t... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const{elements:e,options:n}=this;t.save(),t.beginPath(),t.fill... method resolveElementProperties (line 258) | resolveElementProperties(t,e){const n=xt(t,e),{sides:i,rotation:o}=e,s... function je (line 244) | function je(t){return t&&parseFloat(t.replace(",","."))||0} function He (line 244) | function He(t){if("Z"===t)return 0;const e=t.match(Re);if(!e)return 0;co... function We (line 244) | function We(t,e,n){const i=new Date(0);i.setUTCFullYear(t,0,4);const r=i... function Be (line 244) | function Be(t){return t%400===0||t%4===0&&t%100!==0} function Ye (line 244) | function Ye(t,e,n){return e>=0&&e<=11&&n>=1&&n<=($e[e]||(Be(t)?29:28))} function Ve (line 244) | function Ve(t,e){return e>=1&&e<=(Be(t)?366:365)} function Ue (line 244) | function Ue(t,e,n){return e>=1&&e<=53&&n>=0&&n<=6} function qe (line 244) | function qe(t,e,n){return 24===t?0===e&&0===n:n>=0&&n<60&&e>=0&&e<60&&t>... function Xe (line 244) | function Xe(t,e){return e>=0&&e<=59} function Ge (line 244) | function Ge(t){return t instanceof Date||"object"===typeof t&&"[object D... function Ze (line 244) | function Ze(t){return!(!Ge(t)&&"number"!==typeof t||isNaN(+h(t)))} function Qe (line 244) | function Qe(t,...e){const n=u.bind(null,t||e.find((t=>"object"===typeof ... function Je (line 244) | function Je(t,e){const n=h(t,e?.in);return n.setHours(0,0,0,0),n} function Ke (line 244) | function Ke(t,e,n){const[i,r]=Qe(n?.in,t,e),s=Je(i),a=Je(r),l=+s-ge(s),c... function tn (line 244) | function tn(t,e){const n=h(t,e?.in);return n.setFullYear(n.getFullYear()... function en (line 244) | function en(t,e){const n=h(t,e?.in),i=Ke(n,tn(n)),r=i+1;return r} function nn (line 244) | function nn(t,e){const n=t<0?"-":"",i=Math.abs(t).toString().padStart(e,... method constructor (line 230) | constructor(t){super(),this.animated=!0,this.options=void 0,this._char... method updateControlPoints (line 230) | updateControlPoints(t,e){const n=this.options;if((n.tension||"monotone... method points (line 230) | set points(t){this._points=t,delete this._segments,delete this._path,t... method points (line 230) | get points(){return this._points} method segments (line 230) | get segments(){return this._segments||(this._segments=(0,i.ao)(this,th... method first (line 230) | first(){const t=this.segments,e=this.points;return t.length&&e[t[0].st... method last (line 230) | last(){const t=this.segments,e=this.points,n=t.length;return n&&e[t[n-... method interpolate (line 230) | interpolate(t,e){const n=this.options,r=t[e],o=this.points,s=(0,i.ap)(... method pathSegment (line 230) | pathSegment(t,e,n){const i=Ze(this);return i(t,this,e,n)} method path (line 230) | path(t,e,n){const i=this.segments,r=Ze(this);let o=this._loop;e=e||0,n... method draw (line 230) | draw(t,e,n,i){const r=this.options||{},o=this.points||[];o.length&&r.b... method y (line 244) | y(t,e){const n=t.getFullYear(),i=n>0?n:1-n;return nn("yy"===e?i%100:i,e.... method M (line 244) | M(t,e){const n=t.getMonth();return"M"===e?String(n+1):nn(n+1,2)} method d (line 244) | d(t,e){return nn(t.getDate(),e.length)} method a (line 244) | a(t,e){const n=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":r... method h (line 244) | h(t,e){return nn(t.getHours()%12||12,e.length)} method H (line 244) | H(t,e){return nn(t.getHours(),e.length)} method m (line 244) | m(t,e){return nn(t.getMinutes(),e.length)} method s (line 244) | s(t,e){return nn(t.getSeconds(),e.length)} method constructor (line 6) | constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effe... method active (line 6) | get active(){return this._active} method pause (line 6) | pause(){if(this._active){let t,e;if(this._isPaused=!0,this.scopes)for(... method resume (line 6) | resume(){if(this._active&&this._isPaused){let t,e;if(this._isPaused=!1... method run (line 6) | run(t){if(this._active){const e=r;try{return r=this,t()}finally{r=e}}e... method on (line 6) | on(){1===++this._on&&(this.prevScope=r,r=this)} method off (line 6) | off(){this._on>0&&0===--this._on&&(r=this.prevScope,this.prevScope=voi... method stop (line 6) | stop(t){if(this._active){let e,n;for(this._active=!1,e=0,n=this.effect... method S (line 244) | S(t,e){const n=e.length,i=t.getMilliseconds(),r=Math.trunc(i*Math.pow(10... function an (line 244) | function an(t,e=""){const n=t>0?"-":"+",i=Math.abs(t),r=Math.trunc(i/60)... function ln (line 244) | function ln(t,e){if(t%60===0){const e=t>0?"-":"+";return e+nn(Math.abs(t... function cn (line 244) | function cn(t,e=""){const n=t>0?"-":"+",i=Math.abs(t),r=nn(Math.trunc(i/... function gn (line 244) | function gn(t,e,n){const i=st(),r=n?.locale??i.locale??q,o=n?.firstWeekC... function mn (line 244) | function mn(t){const e=t.match(dn);return e?e[1].replace(fn,"'"):t} function bn (line 244) | function bn(t,e,n){return u(n?.in||t,+h(t)+e)} function xn (line 244) | function xn(t,e,n){return bn(t,1e3*e,n)} function yn (line 244) | function yn(t,e,n){const i=h(t,n?.in);return i.setTime(i.getTime()+e*s),i} function vn (line 244) | function vn(t,e,n){return bn(t,e*a,n)} function wn (line 244) | function wn(t,e,n){return Qt(t,7*e,n)} function kn (line 244) | function kn(t,e,n){const i=h(t,n?.in);if(isNaN(e))return u(n?.in||t,NaN)... function _n (line 244) | function _n(t,e,n){return kn(t,3*e,n)} method constructor (line 230) | constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius} method pathSegment (line 230) | pathSegment(t,e,n){const{x:r,y:o,radius:s}=this;return e=e||{start:0,e... method interpolate (line 230) | interpolate(t){const{x:e,y:n,radius:i}=this,r=t.angle;return{x:e+Math.... function Mn (line 244) | function Mn(t,e,n){return kn(t,12*e,n)} function Sn (line 244) | function Sn(t,e){return+h(t)-+h(e)} function Tn (line 244) | function Tn(t){return e=>{const n=t?Math[t]:Math.trunc,i=n(e);return 0==... function Dn (line 244) | function Dn(t,e,n){const i=Sn(t,e)/1e3;return Tn(n?.roundingMethod)(i)} function Cn (line 244) | function Cn(t,e,n){const i=Sn(t,e)/s;return Tn(n?.roundingMethod)(i)} function An (line 244) | function An(t,e,n){const[i,r]=Qe(n?.in,t,e),o=(+i-+r)/a;return Tn(n?.rou... function On (line 244) | function On(t,e,n){const[i,r]=Qe(n?.in,t,e),o=Pn(i,r),s=Math.abs(Ke(i,r)... function Pn (line 244) | function Pn(t,e){const n=t.getFullYear()-e.getFullYear()||t.getMonth()-e... function En (line 244) | function En(t,e,n){const i=On(t,e,n)/7;return Tn(n?.roundingMethod)(i)} function Rn (line 244) | function Rn(t,e){const n=+h(t)-+h(e);return n<0?-1:n>0?1:n} function In (line 244) | function In(t,e,n){const[i,r]=Qe(n?.in,t,e),o=i.getFullYear()-r.getFullY... function Ln (line 244) | function Ln(t,e){const n=h(t,e?.in);return n.setHours(23,59,59,999),n} function zn (line 244) | function zn(t,e){const n=h(t,e?.in),i=n.getMonth();return n.setFullYear(... function Nn (line 244) | function Nn(t,e){const n=h(t,e?.in);return+Ln(n,e)===+zn(n,e)} function Fn (line 244) | function Fn(t,e,n){const[i,r,o]=Qe(n?.in,t,t,e),s=Rn(r,o),a=Math.abs(In(... function jn (line 244) | function jn(t,e,n){const i=Fn(t,e,n)/3;return Tn(n?.roundingMethod)(i)} method constructor (line 230) | constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hov... method update (line 230) | update(t,e,n){this.maxWidth=t,this.maxHeight=e,this._margins=n,this.se... method setDimensions (line 230) | setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.lef... method buildLabels (line 230) | buildLabels(){const t=this.options.labels||{};let e=(0,i.Q)(t.generate... method fit (line 230) | fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width... method _fitRows (line 230) | _fitRows(t,e,n,i){const{ctx:r,maxWidth:o,options:{labels:{padding:s}}}... method _fitCols (line 230) | _fitCols(t,e,n,i){const{ctx:r,maxHeight:o,options:{labels:{padding:s}}... method adjustHitBoxes (line 230) | adjustHitBoxes(){if(!this.options.display)return;const t=this._compute... method isHorizontal (line 230) | isHorizontal(){return"top"===this.options.position||"bottom"===this.op... method draw (line 230) | draw(){if(this.options.display){const t=this.ctx;(0,i.Y)(t,this),this.... method _draw (line 230) | _draw(){const{options:t,columnSizes:e,lineWidths:n,ctx:r}=this,{align:... method drawTitle (line 230) | drawTitle(){const t=this.options,e=t.title,n=(0,i.a0)(e.font),r=(0,i.E... method _computeTitleHeight (line 230) | _computeTitleHeight(){const t=this.options.title,e=(0,i.a0)(t.font),n=... method _getLegendItemAt (line 230) | _getLegendItemAt(t,e){let n,r,o;if((0,i.ak)(t,this.left,this.right)&&(... method handleEvent (line 230) | handleEvent(t){const e=this.options;if(!Yn(t.type,e))return;const n=th... function Hn (line 244) | function Hn(t,e,n){const[i,r]=Qe(n?.in,t,e);return i.getFullYear()-r.get... function Wn (line 244) | function Wn(t,e,n){const[i,r]=Qe(n?.in,t,e),o=Rn(i,r),s=Math.abs(Hn(i,r)... function $n (line 244) | function $n(t,e){const n=h(t,e?.in);return n.setMilliseconds(0),n} function Bn (line 244) | function Bn(t,e){const n=h(t,e?.in);return n.setSeconds(0,0),n} function Yn (line 244) | function Yn(t,e){const n=h(t,e?.in);return n.setMinutes(0,0,0),n} function Vn (line 244) | function Vn(t,e){const n=h(t,e?.in);return n.setDate(1),n.setHours(0,0,0... function Un (line 244) | function Un(t,e){const n=h(t,e?.in),i=n.getMonth(),r=i-i%3;return n.setM... method constructor (line 230) | constructor(t){super(),this.chart=t.chart,this.options=t.options,this.... method update (line 230) | update(t,e){const n=this.options;if(this.left=0,this.top=0,!n.display)... method isHorizontal (line 230) | isHorizontal(){const t=this.options.position;return"top"===t||"bottom"... method _drawArgs (line 230) | _drawArgs(t){const{top:e,left:n,bottom:r,right:o,options:s}=this,a=s.a... method draw (line 230) | draw(){const t=this.ctx,e=this.options;if(!e.display)return;const n=(0... function qn (line 244) | function qn(t,e){const n=h(t,e?.in);return n.setMilliseconds(999),n} function Xn (line 244) | function Xn(t,e){const n=h(t,e?.in);return n.setSeconds(59,999),n} function Gn (line 244) | function Gn(t,e){const n=h(t,e?.in);return n.setMinutes(59,59,999),n} function Zn (line 244) | function Zn(t,e){const n=st(),i=e?.weekStartsOn??e?.locale?.options?.wee... function Qn (line 244) | function Qn(t,e){const n=h(t,e?.in),i=n.getMonth(),r=i-i%3+3;return n.se... function Jn (line 244) | function Jn(t,e){const n=h(t,e?.in),i=n.getFullYear();return n.setFullYe... method point (line 258) | point(t,e){return c(t,e,{intersect:!0})} method nearest (line 258) | nearest(t,e,n){return u(t,e,n)} method x (line 258) | x(t,e,n){return c(t,e,{intersect:n.intersect,axis:"x"})} method y (line 258) | y(t,e,n){return c(t,e,{intersect:n.intersect,axis:"y"})} function s (line 258) | function s(t,e,n){const i=o.modes[n.mode]||o.modes.nearest;return i(t,e,n)} method constructor (line 6) | constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effe... method active (line 6) | get active(){return this._active} method pause (line 6) | pause(){if(this._active){let t,e;if(this._isPaused=!0,this.scopes)for(... method resume (line 6) | resume(){if(this._active&&this._isPaused){let t,e;if(this._isPaused=!1... method run (line 6) | run(t){if(this._active){const e=r;try{return r=this,t()}finally{r=e}}e... method on (line 6) | on(){1===++this._on&&(this.prevScope=r,r=this)} method off (line 6) | off(){this._on>0&&0===--this._on&&(r=this.prevScope,this.prevScope=voi... method stop (line 6) | stop(t){if(this._active){let e,n;for(this._active=!1,e=0,n=this.effect... function a (line 258) | function a(t,e,n){return"x"!==n&&"y"!==n?t.inRange(e.x,e.y,"x",!0)||t.in... function l (line 258) | function l(t,e,n){return"x"===n?{x:t.x,y:e.y}:"y"===n?{x:e.x,y:t.y}:e} method constructor (line 230) | constructor(t,e,n,r){const o=e[n];r=(0,i.a)([t.to,r,o,t.from]);const s... method active (line 230) | active(){return this._active} method update (line 230) | update(t,e,n){if(this._active){this._notify(!1);const r=this._target[t... method cancel (line 230) | cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._no... method tick (line 230) | tick(t){const e=t-this._start,n=this._duration,i=this._prop,r=this._fr... method wait (line 230) | wait(){const t=this._promises||(this._promises=[]);return new Promise(... method _notify (line 230) | _notify(t){const e=t?"res":"rej",n=this._promises||[];for(let i=0;in.intersect?t.inRange(e.x,e.y):a(t... method constructor (line 6) | constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.fl... method pause (line 6) | pause(){this.flags|=64} method resume (line 6) | resume(){64&this.flags&&(this.flags&=-65,l.has(this)&&(l.delete(this),... method notify (line 6) | notify(){2&this.flags&&!(32&this.flags)||8&this.flags||f(this)} method run (line 6) | run(){if(!(1&this.flags))return this.fn();this.flags|=2,T(this),m(this... method stop (line 6) | stop(){if(1&this.flags){for(let t=this.deps;t;t=t.nextDep)v(t);this.de... method trigger (line 6) | trigger(){64&this.flags?l.add(this):this.scheduler?this.scheduler():th... method runIfDirty (line 6) | runIfDirty(){x(this)&&this.run()} method dirty (line 6) | get dirty(){return x(this)} method constructor (line 230) | constructor(t,e){this._chart=t,this._properties=new Map,this.configure... method configure (line 230) | configure(t){if(!(0,i.i)(t))return;const e=Object.keys(i.d.animation),... method _animateOptions (line 230) | _animateOptions(t,e){const n=e.options,i=h(t,n);if(!i)return[];const r... method _createAnimations (line 230) | _createAnimations(t,e){const n=this._properties,i=[],r=t.$animations||... method update (line 230) | update(t,e){if(0===this._properties.size)return void Object.assign(t,e... function u (line 258) | function u(t,e,n){let i=Number.POSITIVE_INFINITY;return c(t,e,n).reduce(... function h (line 258) | function h(t,e,n){const i=Math.cos(n),r=Math.sin(n),o=e.x,s=e.y;return{x... function m (line 258) | function m(t,e,n){for(const i of Object.keys(t))t[i]=p(t[i],e,n);return t} function b (line 258) | function b(t,e,n,i){return!(!t||!e||n<=0)&&Math.pow(t.x-e.x,2)+Math.pow(... function x (line 258) | function x(t,{x:e,y:n,x2:i,y2:r},o,{borderWidth:s,hitTolerance:a}){const... function y (line 258) | function y(t,{rect:e,center:n},i,{rotation:o,borderWidth:s,hitTolerance:... function v (line 258) | function v(t,e){const{centerX:n,centerY:i}=t.getProps(["centerX","center... function w (line 258) | function w(t,e,n,i=!0){const r=n.split(".");let o=0;for(const s of e.spl... function D (line 258) | function D(t,e){return"start"===e?0:"end"===e?t:k(e)?M(e)*t:t/2} function C (line 258) | function C(t,e,n=!0){return"number"===typeof e?e:k(e)?(n?M(e):_(e))*t:t} method constructor (line 6) | constructor(t,e){this.sub=t,this.dep=e,this.version=e.version,this.nex... function A (line 258) | function A(t,e){const{x:n,width:i}=t,r=e.textAlign;return"center"===r?n+... method constructor (line 6) | constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,t... method track (line 6) | track(t){if(!o||!k||o===this.computed)return;let e=this.activeLink;if(... method trigger (line 6) | trigger(t){this.version++,D++,this.notify(t)} method notify (line 6) | notify(t){p();try{0;for(let t=this.subs;t;t=t.prevSub)t.sub.notify()&&... function O (line 258) | function O(t,e,{borderWidth:n,position:i,xAdjust:o,yAdjust:s},a){const l... function P (line 258) | function P(t,e="center"){return(0,r.i)(t)?{x:(0,r.v)(t.x,e),y:(0,r.v)(t.... method constructor (line 230) | constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cache... method initialize (line 230) | initialize(){const t=this._cachedMeta;this.configure(),this.linkScales... method updateIndex (line 230) | updateIndex(t){this.index!==t&&D(this._cachedMeta),this.index=t} method linkScales (line 230) | linkScales(){const t=this.chart,e=this._cachedMeta,n=this.getDataset()... method getDataset (line 230) | getDataset(){return this.chart.data.datasets[this.index]} method getMeta (line 230) | getMeta(){return this.chart.getDatasetMeta(this.index)} method getScaleForId (line 230) | getScaleForId(t){return this.chart.scales[t]} method _getOtherScale (line 230) | _getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScal... method reset (line 230) | reset(){this._update("reset")} method _destroy (line 230) | _destroy(){const t=this._cachedMeta;this._data&&(0,i.u)(this._data,thi... method _dataCheck (line 230) | _dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),n=this._d... method addElements (line 230) | addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetE... method buildOrUpdateElements (line 230) | buildOrUpdateElements(t){const e=this._cachedMeta,n=this.getDataset();... method configure (line 230) | configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type)... method parse (line 230) | parse(t,e){const{_cachedMeta:n,_data:r}=this,{iScale:o,_stacked:s}=n,a... method parsePrimitiveData (line 230) | parsePrimitiveData(t,e,n,i){const{iScale:r,vScale:o}=t,s=r.axis,a=o.ax... method parseArrayData (line 230) | parseArrayData(t,e,n,i){const{xScale:r,yScale:o}=t,s=new Array(i);let ... method parseObjectData (line 230) | parseObjectData(t,e,n,r){const{xScale:o,yScale:s}=t,{xAxisKey:a="x",yA... method getParsed (line 230) | getParsed(t){return this._cachedMeta._parsed[t]} method getDataElement (line 230) | getDataElement(t){return this._cachedMeta.data[t]} method applyStack (line 230) | applyStack(t,e,n){const i=this.chart,r=this._cachedMeta,o=e[t.axis],s=... method updateRangeFromParsed (line 230) | updateRangeFromParsed(t,e,n,i){const r=n[e.axis];let o=null===r?NaN:r;... method getMinMax (line 230) | getMinMax(t,e){const n=this._cachedMeta,r=n._parsed,o=n._sorted&&t===n... method getAllParsedValues (line 230) | getAllParsedValues(t){const e=this._cachedMeta._parsed,n=[];let r,o,s;... method getMaxOverflow (line 230) | getMaxOverflow(){return!1} method getLabelAndValue (line 230) | getLabelAndValue(t){const e=this._cachedMeta,n=e.iScale,i=e.vScale,r=t... method _update (line 230) | _update(t){const e=this._cachedMeta;this.update(t||"default"),e._clip=... method update (line 230) | update(t){} method draw (line 230) | draw(){const t=this._ctx,e=this.chart,n=this._cachedMeta,i=n.data||[],... method getStyle (line 230) | getStyle(t,e){const n=e?"active":"default";return void 0===t&&this._ca... method getContext (line 230) | getContext(t,e,n){const i=this.getDataset();let r;if(t>=0&&t0&&!... method getLabelAndValue (line 230) | getLabelAndValue(t){const e=this._cachedMeta,n=this.chart,r=n.data.lab... method getMaxBorderWidth (line 230) | getMaxBorderWidth(t){let e=0;const n=this.chart;let i,r,o,s,a;if(!t)fo... method getMaxOffset (line 230) | getMaxOffset(t){let e=0;for(let n=0,i=t.length;n{(0,r.a7)(t[e])?(i=!0,n[... function F (line 258) | function F(t,e){const n=e.type||"line";return T[n](t)} function j (line 258) | function j(t,e,n){const i=(0,r.Q)(n.init,[{chart:t,properties:e,options:... function B (line 258) | function B(t){if(t&&"object"===typeof t){const e=t.toString();return"[ob... function Y (line 258) | function Y(t,{x:e,y:n},i){i&&(t.translate(e,n),t.rotate((0,r.t)(i)),t.tr... function V (line 258) | function V(t,e){if(e&&e.borderWidth)return t.lineCap=e.borderCapStyle||"... function U (line 258) | function U(t,e){t.shadowColor=e.backgroundShadowColor,t.shadowBlur=e.sha... function q (line 258) | function q(t,e){const n=e.content;if(B(n)){const t={width:C(n.width,e.wi... method constructor (line 237) | constructor(t){if(t instanceof q)return t;const e=typeof t;let n;"obje... method valid (line 237) | get valid(){return this._valid} method rgb (line 237) | get rgb(){var t=Y(this._rgb);return t&&(t.a=a(t.a)),t} method rgb (line 237) | set rgb(t){this._rgb=V(t)} method rgbString (line 237) | rgbString(){return this._valid?j(this._rgb):void 0} method hexString (line 237) | hexString(){return this._valid?b(this._rgb):void 0} method hslString (line 237) | hslString(){return this._valid?P(this._rgb):void 0} method mix (line 237) | mix(t,e){if(t){const n=this.rgb,i=t.rgb;let r;const o=e===r?.5:e,s=2*o... method interpolate (line 237) | interpolate(t,e){return t&&(this._rgb=$(this._rgb,t._rgb,e)),this} method clone (line 237) | clone(){return new q(this.rgb)} method alpha (line 237) | alpha(t){return this._rgb.a=s(t),this} method clearer (line 237) | clearer(t){const e=this._rgb;return e.a*=1-t,this} method greyscale (line 237) | greyscale(){const t=this._rgb,e=i(.3*t.r+.59*t.g+.11*t.b);return t.r=t... method opaquer (line 237) | opaquer(t){const e=this._rgb;return e.a*=1+t,this} method negate (line 237) | negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,... method lighten (line 237) | lighten(t){return B(this._rgb,2,t),this} method darken (line 237) | darken(t){return B(this._rgb,2,-t),this} method saturate (line 237) | saturate(t){return B(this._rgb,1,t),this} method desaturate (line 237) | desaturate(t){return B(this._rgb,1,-t),this} method rotate (line 237) | rotate(t){return O(this._rgb,t),this} function X (line 258) | function X(t,e,n){const{x:i,y:o,width:s,height:a}=e;t.save(),U(t,n);cons... function G (line 258) | function G(t,e,n,i){const o=n.content;if(B(o))return t.save(),t.globalAl... method constructor (line 6) | constructor(t=!1,e=!1){this._isReadonly=t,this._isShallow=e} method get (line 6) | get(t,e,n){if("__v_skip"===e)return t["__v_skip"];const r=this._isRead... function Z (line 258) | function Z(t,e){if(e.textStrokeWidth>0)return t.lineJoin="round",t.miter... method constructor (line 6) | constructor(t=!1){super(!1,t)} method set (line 6) | set(t,e,n,r){let o=t[e];if(!this._isShallow){const e=wt(o);if(kt(n)||w... method deleteProperty (line 6) | deleteProperty(t,e){const n=(0,i.RI)(t,e),r=t[e],o=Reflect.deletePrope... method has (line 6) | has(t,e){const n=Reflect.has(t,e);return(0,i.yk)(e)&&q.has(e)||L(t,"ha... method ownKeys (line 6) | ownKeys(t){return L(t,"iterate",(0,i.kJ)(t)?"length":E),Reflect.ownKey... function Q (line 258) | function Q(t,e,n,i){const{radius:o,options:s}=e,a=s.pointStyle,l=s.rotat... method constructor (line 6) | constructor(t=!1){super(!0,t)} method set (line 6) | set(t,e){return!0} method deleteProperty (line 6) | deleteProperty(t,e){return!0} function J (line 258) | function J(t,{x:e,y:n,radius:i,rotation:o,style:s,rad:a}){let l,c,u,h;sw... function K (line 258) | function K(t,e,n,i){t.save();const r=e.length;let o=0,s=i;for(let a=0;a<... function tt (line 258) | function tt(t,{x:e,y:n},i,r){t.beginPath();let o=0;i.forEach((function(i... function et (line 258) | function et(t,{x:e,y:n},i,{fonts:r,colors:o}){let s=0;i.forEach((functio... function nt (line 258) | function nt(t,e){const n=(0,r.x)(t)?t:e;return(0,r.x)(n)?p(n,0,1):1} function rt (line 258) | function rt(t,e){const{pointX:n,pointY:i,options:o}=e,s=o.callout,a=s&&s... function ot (line 258) | function ot(t,e){const{x:n,y:i,x2:r,y2:o}=t,s=st(t,e);let a,l;return"lef... function st (line 258) | function st(t,e){const{width:n,height:i,options:r}=t,o=r.callout.margin+... function at (line 258) | function at(t,e,n){const{y:i,width:r,height:o,options:s}=t,a=s.callout.s... function lt (line 258) | function lt(t,e){const n=e.side;return"left"===t||"top"===t?-n:n} function ct (line 258) | function ct(t,e){const n=e.position;return it.includes(n)?n:ut(t,e)} function ut (line 258) | function ut(t,e){const{x:n,y:i,x2:o,y2:s,width:a,height:l,pointX:c,point... method acquireContext (line 230) | acquireContext(t,e){} method releaseContext (line 230) | releaseContext(t){return!1} method addEventListener (line 230) | addEventListener(t,e,n){} method removeEventListener (line 230) | removeEventListener(t,e,n){} method getDevicePixelRatio (line 230) | getDevicePixelRatio(){return 1} method getMaximumSize (line 230) | getMaximumSize(t,e,n,i){return e=Math.max(0,e||t.width),n=n||t.height,... method isAttached (line 230) | isAttached(t){return!0} method updateConfig (line 230) | updateConfig(t){} function ht (line 258) | function ht(t,e,n){const{pointX:i,pointY:r}=t,o=e.margin;let s=i,a=r;ret... method acquireContext (line 230) | acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null} method updateConfig (line 230) | updateConfig(t){t.options.animation=!1} method validate (line 244) | validate(t,e){return!0} function ft (line 258) | function ft(t,e,n){return e="number"===typeof e?e:t.parse(e),(0,r.g)(e)?... method constructor (line 244) | constructor(t,e){super(),this.context=t||(t=>u(e,t))} method set (line 244) | set(t,e){return e.timestampIsSet?t:u(t,lt(t,this.context))} function pt (line 258) | function pt(t,e,n){const i=e[n];if(i||"scaleID"===n)return i;const r=n.c... method run (line 244) | run(t,e,n,i){const r=this.parse(t,e,n,i);return r?{setter:new dt(r.val... method validate (line 244) | validate(t,e,n){return!0} function gt (line 258) | function gt(t,e){if(t){const n=t.options.reverse,i=ft(t,e.min,n?e.end:e.... method parse (line 244) | parse(t,e,n){switch(e){case"G":case"GG":case"GGG":return n.era(t,{widt... method set (line 244) | set(t,e,n){return e.era=n,t.setFullYear(n,0,1),t.setHours(0,0,0,0),t} function mt (line 258) | function mt(t,e){const{chartArea:n,scales:i}=t,r=i[pt(i,e,"xScaleID")],o... function bt (line 258) | function bt(t,e){const n=t.scales,i=n[pt(n,e,"xScaleID")],r=n[pt(n,e,"yS... function xt (line 258) | function xt(t,e){if(!I(e)){const n=bt(t,e);let i=e.radius;i&&!isNaN(i)||... function yt (line 258) | function yt(t,e){const{scales:n,chartArea:i}=t,r=n[e.scaleID],o={x:i.lef... function vt (line 258) | function vt(t,e){const n=bt(t,e);return n.initProperties=z(t,n,e),n.elem... function wt (line 258) | function wt(t,e){const n=mt(t,e),i=2*e.radius;return{x:n.x-e.radius+e.xA... function kt (line 258) | function kt(t,e){const n=gt(t,e)||e;return{start:Math.min(n.start,n.end)... function _t (line 258) | function _t(t,e,n){const i=ft(t,n.value,NaN),r=ft(t,n.endValue,i);t.isHo... function Mt (line 258) | function Mt(t,e,n){for(const i of Object.keys(dt)){const r=t[pt(t,n,i)];... function St (line 258) | function St({properties:t,options:e},n,i,r){const{x:o,x2:s,width:a}=t;re... function Tt (line 258) | function Tt({properties:t,options:e},n,i,r){const{y:o,y2:s,height:a}=t;r... function Dt (line 258) | function Dt(t,e){const{start:n,end:i,borderWidth:r}=t,{position:o,paddin... method parse (line 244) | parse(t,e,n){const i=t=>({year:t,isTwoDigitYear:"yy"===e});switch(e){c... method validate (line 244) | validate(t,e){return e.isTwoDigitYear||e.year>0} method set (line 244) | set(t,e,n){const i=t.getFullYear();if(n.isTwoDigitYear){const e=St(n.y... function Ct (line 258) | function Ct(t,e,n){const i=n.label;i.backgroundColor="transparent",i.cal... function Pt (line 258) | function Pt(t,e,n){e.listened=N(n,Ot,e.listeners),e.moveListened=!1,At.f... method acquireContext (line 230) | acquireContext(t,e){const n=t&&t.getContext&&t.getContext("2d");return... method releaseContext (line 230) | releaseContext(t){const e=t.canvas;if(!e[dt])return!1;const n=e[dt].in... method addEventListener (line 230) | addEventListener(t,e,n){this.removeEventListener(t,e);const i=t.$proxi... method removeEventListener (line 230) | removeEventListener(t,e){const n=t.$proxies||(t.$proxies={}),i=n[e];if... method getDevicePixelRatio (line 230) | getDevicePixelRatio(){return window.devicePixelRatio} method getMaximumSize (line 230) | getMaximumSize(t,e,n,r){return(0,i.G)(t,e,n,r)} method isAttached (line 230) | isAttached(t){const e=t&&(0,i.I)(t);return!(!e||!e.isConnected)} function Et (line 258) | function Et(t,e,n){if(t.listened)switch(e.type){case"mousemove":case"mou... method constructor (line 6) | constructor(t,e){this.dep=new A,this["__v_isRef"]=!0,this["__v_isShall... method value (line 6) | get value(){return this.dep.track(),this._value} method value (line 6) | set value(t){const e=this._rawValue,n=this["__v_isShallow"]||kt(t)||wt... method parse (line 244) | parse(t,e){return _t("R"===e?4:e.length,t)} method set (line 244) | set(t,e,n){const i=u(t,0);return i.setFullYear(n,0,4),i.setHours(0,0,0... function Rt (line 258) | function Rt(t,e,n){if(!t.moveListened)return;let i;i="mousemove"===e.typ... method tooltipPosition (line 230) | tooltipPosition(t){const{x:e,y:n}=this.getProps(["x","y"],t);return{x:... method hasValue (line 230) | hasValue(){return(0,i.x)(this.x)&&(0,i.x)(this.y)} method getProps (line 230) | getProps(t,e){const n=this.$animations;if(!e||!n)return this;const i={... method parse (line 244) | parse(t,e){return _t("u"===e?4:e.length,t)} method set (line 244) | set(t,e,n){return t.setFullYear(n,0,1),t.setHours(0,0,0,0),t} function It (line 258) | function It({state:t,event:e},n,i,r){let o;for(const s of i)r.indexOf(s)... method parse (line 244) | parse(t,e,n){switch(e){case"Q":case"QQ":return kt(e.length,t);case"Qo"... method validate (line 244) | validate(t,e){return e>=1&&e<=4} method set (line 244) | set(t,e,n){return t.setMonth(3*(n-1),1),t.setHours(0,0,0,0),t} function Lt (line 258) | function Lt(t,e,n){const i=t.listeners,r=s(t.visibleElements,e,n.interac... method parse (line 244) | parse(t,e,n){switch(e){case"q":case"qq":return kt(e.length,t);case"qo"... method validate (line 244) | validate(t,e){return e>=1&&e<=4} method set (line 244) | set(t,e,n){return t.setMonth(3*(n-1),1),t.setHours(0,0,0,0),t} function zt (line 258) | function zt(t,e,n){return!0===(0,r.Q)(t,[e.$context,n])} method constructor (line 6) | constructor(t,e,n){this.fn=t,this.setter=e,this._value=void 0,this.dep... method notify (line 6) | notify(){if(this.flags|=16,!(8&this.flags||o===this))return f(this,!0)... method value (line 6) | get value(){const t=this.dep.track();return y(this),t&&(t.version=this... method value (line 6) | set value(t){this.setter&&this.setter(t)} method parse (line 244) | parse(t,e,n){const i=t=>t-1;switch(e){case"M":return xt(yt(mt.month,t)... method validate (line 244) | validate(t,e){return e>=0&&e<=11} method set (line 244) | set(t,e,n){return t.setMonth(n,1),t.setHours(0,0,0,0),t} function Ft (line 258) | function Ft(t,e,n){const i=e.visibleElements;e.hooked=N(n,Nt,e.hooks),e.... function jt (line 258) | function jt(t,e,n){if(t.hooked){const i=e.options[n]||t.hooks[n];return(... function Ht (line 258) | function Ht(t,e,n){const i=Ut(t.scales,e,n);let o=$t(e,i,"min","suggeste... function Wt (line 258) | function Wt(t,e){for(const n of t)Yt(n,e)} method parse (line 244) | parse(t,e,n){switch(e){case"w":return yt(mt.week,t);case"wo":return n.... method validate (line 244) | validate(t,e){return e>=1&&e<=53} method set (line 244) | set(t,e,n,i){return Ct(Ht(t,n,i),i)} function $t (line 258) | function $t(t,e,n,i){if((0,r.g)(e[n])&&!Bt(t.options,n,i)){const i=t[n]!... function Bt (line 258) | function Bt(t,e,n){return(0,r.h)(t[e])||(0,r.h)(t[n])} function Yt (line 258) | function Yt(t,e){for(const n of["scaleID","xScaleID","yScaleID"]){const ... function Vt (line 258) | function Vt(t,e){if("scaleID"===e)return!0;const n=e.charAt(0);for(const... function Ut (line 258) | function Ut(t,e,n){const i=e.axis,o=e.id,s=i+"ScaleID",a={min:(0,r.v)(e.... method parse (line 244) | parse(t,e,n){switch(e){case"I":return yt(mt.week,t);case"Io":return n.... method validate (line 244) | validate(t,e){return e>=1&&e<=53} method set (line 244) | set(t,e,n){return Pt(Vt(t,n))} function qt (line 258) | function qt(t,e,n,i){for(const o of n){const n=t[o];if((0,r.h)(n)){const... class Xt (line 258) | class Xt extends i.W_{inRange(t,e,n,i){const{x:o,y:s}=h({x:t,y:e},this.g... method inRange (line 258) | inRange(t,e,n,i){const{x:o,y:s}=h({x:t,y:e},this.getCenterPoint(i),(0,... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){t.save(),Y(t,this.getCenterPoint(),this.options.rotation),X(t,... method label (line 258) | get label(){return this.elements&&this.elements[0]} method resolveElementProperties (line 258) | resolveElementProperties(t,e){return vt(t,e)} class Gt (line 258) | class Gt extends i.W_{inRange(t,e,n,i){return y({x:t,y:e},{rect:this.get... method parse (line 244) | parse(t,e,n){switch(e){case"d":return yt(mt.date,t);case"do":return n.... method validate (line 244) | validate(t,e){const n=t.getFullYear(),i=Tt(n),r=t.getMonth();return i?... method set (line 244) | set(t,e,n){return t.setDate(n),t.setHours(0,0,0,0),t} method inRange (line 258) | inRange(t,e,n,i){return y({x:t,y:e},{rect:this.getProps(["x","y","x2",... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const e=this.options;e.display&&e.content&&(ee(t,this),t.save(... method resolveElementProperties (line 258) | resolveElementProperties(t,e){const n=Zt(t,e);if(!n)return{};const{con... function Zt (line 258) | function Zt(t,e){return t.getSortedVisibleDatasetMetas().reduce((functio... method parse (line 244) | parse(t,e,n){switch(e){case"D":case"DD":return yt(mt.dayOfYear,t);case... method validate (line 244) | validate(t,e){const n=t.getFullYear(),i=Tt(n);return i?e>=1&&e<=366:e>... method set (line 244) | set(t,e,n){return t.setMonth(0,n),t.setHours(0,0,0,0),t} function Qt (line 258) | function Qt(t,e,n){if(!e.autoHide)return!0;for(let i=0;ie.length-1?null:th... method getPixelForDecimal (line 230) | getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._start... method getDecimalForPixel (line 230) | getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return... method getBasePixel (line 230) | getBasePixel(){return this.getPixelForValue(this.getBaseValue())} method getBaseValue (line 230) | getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0} method getContext (line 230) | getContext(t){const e=this.ticks||[];if(t>=0&&t=0&&e<=6} method set (line 244) | set(t,e,n,i){return t=Jt(t,n,i),t.setHours(0,0,0,0),t} function te (line 258) | function te(t,e,n,i){const o=Math.pow(n-t,2),s=Math.pow(i,2),a=-2*e,l=Ma... method constructor (line 230) | constructor(t,e,n){this.type=t,this.scope=e,this.override=n,this.items... method isForType (line 230) | isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prot... method register (line 230) | register(t){const e=Object.getPrototypeOf(t);let n;ie(e)&&(n=this.regi... method get (line 230) | get(t){return this.items[t]} method unregister (line 230) | unregister(t){const e=this.items,n=t.id,r=this.scope;n in e&&delete e[... method parse (line 244) | parse(t,e,n,i){const r=t=>{const e=7*Math.floor((t-1)/7);return(t+i.we... method validate (line 244) | validate(t,e){return e>=0&&e<=6} method set (line 244) | set(t,e,n,i){return t=Jt(t,n,i),t.setHours(0,0,0,0),t} function ee (line 258) | function ee(t,e){const{_centerX:n,_centerY:i,_radius:r,_startAngle:o,_en... method parse (line 244) | parse(t,e,n,i){const r=t=>{const e=7*Math.floor((t-1)/7);return(t+i.we... method validate (line 244) | validate(t,e){return e>=0&&e<=6} method set (line 244) | set(t,e,n,i){return t=Jt(t,n,i),t.setHours(0,0,0,0),t} class ne (line 258) | class ne extends i.W_{inRange(t,e,n,i){return y({x:t,y:e},{rect:this.get... method inRange (line 258) | inRange(t,e,n,i){return y({x:t,y:e},{rect:this.getProps(["x","y","x2",... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const e=this.options,n=!(0,r.h)(this._visible)||this._visible;... method resolveElementProperties (line 258) | resolveElementProperties(t,e){let n;if(I(e))n=mt(t,e);else{const{cente... function ie (line 258) | function ie({x:t,y:e,width:n,height:i,options:o}){const s=o.borderWidth/... class fe (line 258) | class fe extends i.W_{inRange(t,e,n,i){const r=(this.options.borderWidth... method parse (line 244) | parse(t,e,n){switch(e){case"s":return yt(mt.second,t);case"so":return ... method validate (line 244) | validate(t,e){return e>=0&&e<=59} method set (line 244) | set(t,e,n){return t.setSeconds(n,0),t} method inRange (line 258) | inRange(t,e,n,i){const r=(this.options.borderWidth+this.options.hitTol... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const{x:e,y:n,x2:i,y2:r,cp:o,options:s}=this;if(t.save(),!V(t,... method label (line 258) | get label(){return this.elements&&this.elements[0]} method resolveElementProperties (line 258) | resolveElementProperties(t,e){const n=yt(t,e),{x:i,y:o,x2:s,y2:a}=n,l=... function ge (line 258) | function ge(t,{mouseX:e,mouseY:n},i,{hitSize:r,useFinalPosition:o}){cons... function me (line 258) | function me({x:t,y:e,x2:n,y2:i},{top:r,right:o,bottom:s,left:a}){return!... method parse (line 244) | parse(t,e){switch(e){case"X":return vt(bt.basicOptionalMinutes,t);case... method set (line 244) | set(t,e,n){return e.timestampIsSet?t:u(t,t.getTime()-ge(t)-n)} function be (line 258) | function be({x:t,y:e},n,{top:i,right:r,bottom:o,left:s}){return t[[`datasets.${t}`,""]]))} method datasetAnimationScopeKeys (line 230) | datasetAnimationScopeKeys(t,e){return Se(`${t}.transition.${e}`,(()=>[... method datasetElementScopeKeys (line 230) | datasetElementScopeKeys(t,e){return Se(`${t}-${e}`,(()=>[[`datasets.${... method pluginScopeKeys (line 230) | pluginScopeKeys(t){const e=t.id,n=this.type;return Se(`${n}-plugin-${e... method _cachedScopes (line 230) | _cachedScopes(t,e){const n=this._scopeCache;let i=n.get(t);return i&&!... method getOptionScopes (line 230) | getOptionScopes(t,e,n){const{options:r,type:o}=this,s=this._cachedScop... method chartOptionScopes (line 230) | chartOptionScopes(){const{options:t,type:e}=this;return[t,i.a3[e]||{},... method resolveNamedOptions (line 230) | resolveNamedOptions(t,e,n,r=[""]){const o={$shared:!0},{resolver:s,sub... method createResolver (line 230) | createResolver(t,e,n=[""],r){const{resolver:o}=Ce(this._resolverCache,... function Ce (line 258) | function Ce(t,e){const{size:n,min:i,max:r,padding:o}=e,s=n/2;return n>r-... function Ae (line 258) | function Ae(t){const e=t.options,n=e.arrowHeads&&e.arrowHeads.start,i=e.... function Oe (line 258) | function Oe(t,e){if(!e||!e.display)return 0;const{length:n,width:i}=e,r=... function Pe (line 258) | function Pe(t,e,n,i){if(!i||!i.display)return;const{length:r,width:o,fil... function Ee (line 258) | function Ee(t,e,n){const{x:i,y:r,x2:o,y2:s,centerX:a,centerY:l}=t,c=Math... function Re (line 258) | function Re(t,{x:e,y:n},{angle:i,adjust:r},o){o&&o.display&&(t.save(),t.... function Ie (line 258) | function Ie(t,e,n,i){const{x:o,y:s,x2:a,y2:l,options:c}=e,{startOpts:u,e... method constructor (line 244) | constructor(t,e){this.animation=void 0,this.backgroundColor="rgba(0,0,... method set (line 244) | set(t,e){return Re(this,t,e)} method get (line 244) | get(t){return Ee(this,t)} method describe (line 244) | describe(t,e){return Re(Pe,t,e)} method override (line 244) | override(t,e){return Re(Oe,t,e)} method route (line 244) | route(t,e,n,i){const r=Ee(this,t),o=Ee(this,n),s="_"+e;Object.definePr... method apply (line 244) | apply(t){t.forEach((t=>t(this)))} class Le (line 258) | class Le extends i.W_{inRange(t,e,n,i){const o=this.options.rotation,s=(... method inRange (line 258) | inRange(t,e,n,i){const o=this.options.rotation,s=(this.options.borderW... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const{width:e,height:n,centerX:i,centerY:o,options:s}=this;t.s... method label (line 258) | get label(){return this.elements&&this.elements[0]} method resolveElementProperties (line 258) | resolveElementProperties(t,e){return vt(t,e)} function ze (line 258) | function ze(t,e,n,i){const{width:o,height:s,centerX:a,centerY:l}=e,c=o/2... class Ne (line 258) | class Ne extends i.W_{inRange(t,e,n,i){const{x:r,y:o,x2:s,y2:a,width:l}=... method inRange (line 258) | inRange(t,e,n,i){const{x:r,y:o,x2:s,y2:a,width:l}=this.getProps(["x","... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const e=this.options,n=e.borderWidth;if(e.radius<.1)return;t.s... method resolveElementProperties (line 258) | resolveElementProperties(t,e){const n=xt(t,e);return n.initProperties=... class Fe (line 258) | class Fe extends i.W_{inRange(t,e,n,i){if("x"!==n&&"y"!==n)return this.o... method inRange (line 258) | inRange(t,e,n,i){if("x"!==n&&"y"!==n)return this.options.radius>=.1&&t... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const{elements:e,options:n}=this;t.save(),t.beginPath(),t.fill... method resolveElementProperties (line 258) | resolveElementProperties(t,e){const n=xt(t,e),{sides:i,rotation:o}=e,s... function je (line 258) | function je({centerX:t,centerY:e},{radius:n,borderWidth:i,hitTolerance:r... function He (line 258) | function He(t,e,n,i){let r=!1,o=t[t.length-1].getProps(["bX","bY"],i);fo... function Ue (line 258) | function Ue(t="line"){return We[t]?t:(console.warn(`Unknown annotation t... function qe (line 258) | function qe(t,e,n,i){const o=Ge(t,n.animations,i),s=e.annotations,a=en(e... function Xe (line 258) | function Xe(t){return isNaN(t.x)||isNaN(t.y)} function Ge (line 258) | function Ge(t,e,n){return"reset"===n||"none"===n||"resize"===n?$e:new i.... function Ze (line 258) | function Ze(t,e,n,i){const r=t.elements||(t.elements=[]);r.length=e.leng... function Qe (line 258) | function Qe(t,e,n,i){const r=We[Ue(n)];let o=t[e];return o&&o instanceof... function Je (line 258) | function Je(t){const e=We[Ue(t.type)],n={};n.id=t.id,n.type=t.type,n.dra... function Ke (line 258) | function Ke(t,e){const n={};for(const i of Object.keys(e)){const o=e[i],... function tn (line 258) | function tn(t,e,n,i){return e.$context||(e.$context=Object.assign(Object... function en (line 258) | function en(t,e){const n=e.length,i=t.length;if(ii({... method _refresh (line 230) | _refresh(){this._request||(this._running=!0,this._request=i.r.call(win... method _update (line 230) | _update(t=Date.now()){let e=0;this._charts.forEach(((n,i)=>{if(!n.runn... method _getAnims (line 230) | _getAnims(t){const e=this._charts;let n=e.get(t);return n||(n={running... method listen (line 230) | listen(t,e,n){this._getAnims(t).listeners[e].push(n)} method add (line 230) | add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)} method has (line 230) | has(t){return this._getAnims(t).items.length>0} method start (line 230) | start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now... method running (line 230) | running(t){if(!this._running)return!1;const e=this._charts.get(t);retu... method stop (line 230) | stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;cons... method remove (line 230) | remove(t){return this._charts.delete(t)} function D (line 260) | function D(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);fo... function C (line 260) | function C(t){return function(){for(var e=arguments.length,n=new Array(e... method constructor (line 6) | constructor(t,e){this.sub=t,this.dep=e,this.version=e.version,this.nex... function A (line 260) | function A(t,e){let n=arguments.length>2&&void 0!==arguments[2]?argument... method constructor (line 6) | constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,t... method track (line 6) | track(t){if(!o||!k||o===this.computed)return;let e=this.activeLink;if(... method trigger (line 6) | trigger(t){this.version++,D++,this.notify(t)} method notify (line 6) | notify(t){p();try{0;for(let t=this.subs;t;t=t.prevSub)t.sub.notify()&&... function O (line 260) | function O(t){for(let e=0;e=0&&t0&&void 0!==arguments[0]?arguments[... function i (line 260) | function i(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null... function o (line 260) | function o(t){r=t} function a (line 260) | function a(t,e=""){let n="string"==typeof t?t:t.source,i={replace:(t,e)=... function mt (line 260) | function mt(t,e){if(e){if(c.escapeTest.test(t))return t.replace(c.escape... function bt (line 260) | function bt(t){try{t=encodeURI(t).replace(c.percentDecode,"%")}catch{ret... function xt (line 260) | function xt(t,e){let n=t.replace(c.findPipe,((t,e,n)=>{let i=!1,r=e;for(... function yt (line 260) | function yt(t,e,n){let i=t.length;if(0===i)return"";let r=0;for(;r0)retu... method code (line 260) | code(t){let e=this.rules.block.code.exec(t);if(e){let t=e[0].replace(thi... method fences (line 260) | fences(t){let e=this.rules.block.fences.exec(t);if(e){let t=e[0],n=kt(t,... method heading (line 260) | heading(t){let e=this.rules.block.heading.exec(t);if(e){let t=e[2].trim(... method hr (line 260) | hr(t){let e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:yt(e[0... method blockquote (line 260) | blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let t=yt(e... method list (line 260) | list(t){let e=this.rules.block.list.exec(t);if(e){let n=e[1].trim(),i=n.... method html (line 260) | html(t){let e=this.rules.block.html.exec(t);if(e)return{type:"html",bloc... method def (line 260) | def(t){let e=this.rules.block.def.exec(t);if(e){let t=e[1].toLowerCase()... method table (line 260) | table(t){let e=this.rules.block.table.exec(t);if(!e||!this.rules.other.t... method lheading (line 260) | lheading(t){let e=this.rules.block.lheading.exec(t);if(e)return{type:"he... method paragraph (line 260) | paragraph(t){let e=this.rules.block.paragraph.exec(t);if(e){let t="\n"==... method text (line 260) | text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:... method escape (line 260) | escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escap... method tag (line 260) | tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.... method link (line 260) | link(t){let e=this.rules.inline.link.exec(t);if(e){let t=e[2].trim();if(... method reflink (line 260) | reflink(t,e){let n;if((n=this.rules.inline.reflink.exec(t))||(n=this.rul... method emStrong (line 260) | emStrong(t,e,n=""){let i=this.rules.inline.emStrongLDelim.exec(t);if(!(!... method codespan (line 260) | codespan(t){let e=this.rules.inline.code.exec(t);if(e){let t=e[2].replac... method br (line 260) | br(t){let e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}} method del (line 260) | del(t){let e=this.rules.inline.del.exec(t);if(e)return{type:"del",raw:e[... method autolink (line 260) | autolink(t){let e=this.rules.inline.autolink.exec(t);if(e){let t,n;retur... method url (line 260) | url(t){let e;if(e=this.rules.inline.url.exec(t)){let t,n;if("@"===e[2])t... method inlineText (line 260) | inlineText(t){let e=this.rules.inline.text.exec(t);if(e){let t=this.lexe... method constructor (line 260) | constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this... method rules (line 260) | static get rules(){return{block:dt,inline:ft}} method lex (line 260) | static lex(e,n){return new t(n).lex(e)} method lexInline (line 260) | static lexInline(e,n){return new t(n).inlineTokens(e)} method lex (line 260) | lex(t){t=t.replace(c.carriageReturn,"\n"),this.blockTokens(t,this.tokens... method blockTokens (line 260) | blockTokens(t,e=[],n=!1){for(this.options.pedantic&&(t=t.replace(c.tabCh... method inline (line 260) | inline(t,e=[]){return this.inlineQueue.push({src:t,tokens:e}),e} method inlineTokens (line 260) | inlineTokens(t,e=[]){let n,i=t,r=null;if(this.tokens.links){let t=Object... method constructor (line 260) | constructor(t){this.options=t||r} method space (line 260) | space(t){return""} method code (line 260) | code({text:t,lang:e,escaped:n}){let i=(e||"").match(c.notSpaceStart)?.[0... method blockquote (line 260) | blockquote({tokens:t}){return`
\n${this.parser.parse(t)}${this.parser.parseInline(t)}<... method hr (line 260) | hr(t){return"
\n"} method list (line 260) | list(t){let e=t.ordered,n=t.start,i="";for(let s=0;s${this.parser.parseInline(t)}

\n`} method table (line 260) | table(t){let e="",n="";for(let r=0;r\n${t}\n`} method tablecell (line 260) | tablecell(t){let e=this.parser.parseInline(t.tokens),n=t.header?"th":"td... method strong (line 260) | strong({tokens:t}){return`${this.parser.parseInline(t)}`} method em (line 260) | em({tokens:t}){return`${this.parser.parseInline(t)}`} method codespan (line 260) | codespan({text:t}){return`${mt(t,!0)}`} method br (line 260) | br(t){return"
"} method del (line 260) | del({tokens:t}){return`${this.parser.parseInline(t)}`} method link (line 260) | link({href:t,title:e,tokens:n}){let i=this.parser.parseInline(n),r=bt(t)... method image (line 260) | image({href:t,title:e,text:n,tokens:i}){i&&(n=this.parser.parseInline(i,... method text (line 260) | text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"... method strong (line 260) | strong({text:t}){return t} method em (line 260) | em({text:t}){return t} method codespan (line 260) | codespan({text:t}){return t} method del (line 260) | del({text:t}){return t} method html (line 260) | html({text:t}){return t} method text (line 260) | text({text:t}){return t} method link (line 260) | link({text:t}){return""+t} method image (line 260) | image({text:t}){return""+t} method br (line 260) | br(){return""} method constructor (line 260) | constructor(t){this.options=t||r,this.options.renderer=this.options.rend... method parse (line 260) | static parse(e,n){return new t(n).parse(e)} method parseInline (line 260) | static parseInline(e,n){return new t(n).parseInline(e)} method parse (line 260) | parse(t,e=!0){let n="";for(let i=0;i{let i={...n},r={...this.defaults,...i},o=... method onError (line 260) | onError(t,e){return n=>{if(n.message+="\nPlease report this to https://g... function Pt (line 260) | function Pt(t,e){return Ot.parse(t,e)} method acquireContext (line 230) | acquireContext(t,e){const n=t&&t.getContext&&t.getContext("2d");return... method releaseContext (line 230) | releaseContext(t){const e=t.canvas;if(!e[dt])return!1;const n=e[dt].in... method addEventListener (line 230) | addEventListener(t,e,n){this.removeEventListener(t,e);const i=t.$proxi... method removeEventListener (line 230) | removeEventListener(t,e){const n=t.$proxies||(t.$proxies={}),i=n[e];if... method getDevicePixelRatio (line 230) | getDevicePixelRatio(){return window.devicePixelRatio} method getMaximumSize (line 230) | getMaximumSize(t,e,n,r){return(0,i.G)(t,e,n,r)} method isAttached (line 230) | isAttached(t){const e=t&&(0,i.I)(t);return!(!e||!e.isConnected)} method get (line 260) | get(t){let e=n.get(t);return void 0!==e?e:void 0!==(e=i.get(t))?(r(t,e),... method set (line 260) | set(t,e){n.has(t)?n.set(t,e):r(t,e)} function k (line 260) | function k(){let t,e,n=0,i="";while(n... function u (line 260) | function u(t){return(0,o.X3)(t)?(0,o.IU)(t):t} function h (line 260) | function h(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[... function d (line 260) | function d(t,e){const n=t.options;n&&e&&Object.assign(n,e)} function f (line 260) | function f(t,e){t.labels=e} function p (line 260) | function p(t,e,n){const i=[];t.datasets=e.map((e=>{const r=t.datasets.fi... function g (line 260) | function g(t,e){const n={labels:[],datasets:[]};return f(n,t.labels),p(n... method setup (line 260) | setup(t,e){let{expose:n,slots:s}=e;const a=(0,o.iH)(null),l=(0,o.XI)(nul... function b (line 260) | function b(t,e){return i.kL.register(e),(0,r.aZ)({props:s,setup(e,n){let... function s (line 266) | function s(t){return"object"===typeof t||"displayName"in t||"props"in t|... method constructor (line 6) | constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effe... method active (line 6) | get active(){return this._active} method pause (line 6) | pause(){if(this._active){let t,e;if(this._isPaused=!0,this.scopes)for(... method resume (line 6) | resume(){if(this._active&&this._isPaused){let t,e;if(this._isPaused=!1... method run (line 6) | run(t){if(this._active){const e=r;try{return r=this,t()}finally{r=e}}e... method on (line 6) | on(){1===++this._on&&(this.prevScope=r,r=this)} method off (line 6) | off(){this._on>0&&0===--this._on&&(r=this.prevScope,this.prevScope=voi... method stop (line 6) | stop(t){if(this._active){let e,n;for(this._active=!1,e=0,n=this.effect... function a (line 266) | function a(t){return t.__esModule||"Module"===t[Symbol.toStringTag]||t.d... function c (line 266) | function c(t,e){const n={};for(const i in e){const r=e[i];n[i]=h(r)?r.ma... method constructor (line 6) | constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.fl... method pause (line 6) | pause(){this.flags|=64} method resume (line 6) | resume(){64&this.flags&&(this.flags&=-65,l.has(this)&&(l.delete(this),... method notify (line 6) | notify(){2&this.flags&&!(32&this.flags)||8&this.flags||f(this)} method run (line 6) | run(){if(!(1&this.flags))return this.fn();this.flags|=2,T(this),m(this... method stop (line 6) | stop(){if(1&this.flags){for(let t=this.deps;t;t=t.nextDep)v(t);this.de... method trigger (line 6) | trigger(){64&this.flags?l.add(this):this.scheduler?this.scheduler():th... method runIfDirty (line 6) | runIfDirty(){x(this)&&this.run()} method dirty (line 6) | get dirty(){return x(this)} method constructor (line 230) | constructor(t,e){this._chart=t,this._properties=new Map,this.configure... method configure (line 230) | configure(t){if(!(0,i.i)(t))return;const e=Object.keys(i.d.animation),... method _animateOptions (line 230) | _animateOptions(t,e){const n=e.options,i=h(t,n);if(!i)return[];const r... method _createAnimations (line 230) | _createAnimations(t,e){const n=this._properties,i=[],r=t.$animations||... method update (line 230) | update(t,e){if(0===this._properties.size)return void Object.assign(t,e... function T (line 266) | function T(t){return encodeURI(""+t).replace(_,"|").replace(x,"[").repla... function D (line 266) | function D(t){return T(t).replace(k,"{").replace(M,"}").replace(v,"^")} function C (line 266) | function C(t){return T(t).replace(b,"%2B").replace(S,"+").replace(d,"%23... method constructor (line 6) | constructor(t,e){this.sub=t,this.dep=e,this.version=e.version,this.nex... function A (line 266) | function A(t){return C(t).replace(g,"%3D")} method constructor (line 6) | constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,t... method track (line 6) | track(t){if(!o||!k||o===this.computed)return;let e=this.activeLink;if(... method trigger (line 6) | trigger(t){this.version++,D++,this.notify(t)} method notify (line 6) | notify(t){p();try{0;for(let t=this.subs;t;t=t.prevSub)t.sub.notify()&&... function O (line 266) | function O(t){return T(t).replace(d,"%23").replace(m,"%3F")} function P (line 266) | function P(t){return null==t?"":O(t).replace(p,"%2F")} method constructor (line 230) | constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cache... method initialize (line 230) | initialize(){const t=this._cachedMeta;this.configure(),this.linkScales... method updateIndex (line 230) | updateIndex(t){this.index!==t&&D(this._cachedMeta),this.index=t} method linkScales (line 230) | linkScales(){const t=this.chart,e=this._cachedMeta,n=this.getDataset()... method getDataset (line 230) | getDataset(){return this.chart.data.datasets[this.index]} method getMeta (line 230) | getMeta(){return this.chart.getDatasetMeta(this.index)} method getScaleForId (line 230) | getScaleForId(t){return this.chart.scales[t]} method _getOtherScale (line 230) | _getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScal... method reset (line 230) | reset(){this._update("reset")} method _destroy (line 230) | _destroy(){const t=this._cachedMeta;this._data&&(0,i.u)(this._data,thi... method _dataCheck (line 230) | _dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),n=this._d... method addElements (line 230) | addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetE... method buildOrUpdateElements (line 230) | buildOrUpdateElements(t){const e=this._cachedMeta,n=this.getDataset();... method configure (line 230) | configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type)... method parse (line 230) | parse(t,e){const{_cachedMeta:n,_data:r}=this,{iScale:o,_stacked:s}=n,a... method parsePrimitiveData (line 230) | parsePrimitiveData(t,e,n,i){const{iScale:r,vScale:o}=t,s=r.axis,a=o.ax... method parseArrayData (line 230) | parseArrayData(t,e,n,i){const{xScale:r,yScale:o}=t,s=new Array(i);let ... method parseObjectData (line 230) | parseObjectData(t,e,n,r){const{xScale:o,yScale:s}=t,{xAxisKey:a="x",yA... method getParsed (line 230) | getParsed(t){return this._cachedMeta._parsed[t]} method getDataElement (line 230) | getDataElement(t){return this._cachedMeta.data[t]} method applyStack (line 230) | applyStack(t,e,n){const i=this.chart,r=this._cachedMeta,o=e[t.axis],s=... method updateRangeFromParsed (line 230) | updateRangeFromParsed(t,e,n,i){const r=n[e.axis];let o=null===r?NaN:r;... method getMinMax (line 230) | getMinMax(t,e){const n=this._cachedMeta,r=n._parsed,o=n._sorted&&t===n... method getAllParsedValues (line 230) | getAllParsedValues(t){const e=this._cachedMeta._parsed,n=[];let r,o,s;... method getMaxOverflow (line 230) | getMaxOverflow(){return!1} method getLabelAndValue (line 230) | getLabelAndValue(t){const e=this._cachedMeta,n=e.iScale,i=e.vScale,r=t... method _update (line 230) | _update(t){const e=this._cachedMeta;this.update(t||"default"),e._clip=... method update (line 230) | update(t){} method draw (line 230) | draw(){const t=this._ctx,e=this.chart,n=this._cachedMeta,i=n.data||[],... method getStyle (line 230) | getStyle(t,e){const n=e?"active":"default";return void 0===t&&this._ca... method getContext (line 230) | getContext(t,e,n){const i=this.getDataset();let r;if(t>=0&&tt===e[n... function B (line 266) | function B(t,e){if(t.startsWith("/"))return t;if(!t)return e;const n=e.s... function q (line 266) | function q(t){if(!t)if(o){const e=document.querySelector("base");t=e&&e.... method constructor (line 237) | constructor(t){if(t instanceof q)return t;const e=typeof t;let n;"obje... method valid (line 237) | get valid(){return this._valid} method rgb (line 237) | get rgb(){var t=Y(this._rgb);return t&&(t.a=a(t.a)),t} method rgb (line 237) | set rgb(t){this._rgb=V(t)} method rgbString (line 237) | rgbString(){return this._valid?j(this._rgb):void 0} method hexString (line 237) | hexString(){return this._valid?b(this._rgb):void 0} method hslString (line 237) | hslString(){return this._valid?P(this._rgb):void 0} method mix (line 237) | mix(t,e){if(t){const n=this.rgb,i=t.rgb;let r;const o=e===r?.5:e,s=2*o... method interpolate (line 237) | interpolate(t,e){return t&&(this._rgb=$(this._rgb,t._rgb,e)),this} method clone (line 237) | clone(){return new q(this.rgb)} method alpha (line 237) | alpha(t){return this._rgb.a=s(t),this} method clearer (line 237) | clearer(t){const e=this._rgb;return e.a*=1-t,this} method greyscale (line 237) | greyscale(){const t=this._rgb,e=i(.3*t.r+.59*t.g+.11*t.b);return t.r=t... method opaquer (line 237) | opaquer(t){const e=this._rgb;return e.a*=1+t,this} method negate (line 237) | negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,... method lighten (line 237) | lighten(t){return B(this._rgb,2,t),this} method darken (line 237) | darken(t){return B(this._rgb,2,-t),this} method saturate (line 237) | saturate(t){return B(this._rgb,1,t),this} method desaturate (line 237) | desaturate(t){return B(this._rgb,1,-t),this} method rotate (line 237) | rotate(t){return O(this._rgb,t),this} function G (line 266) | function G(t,e){return t.replace(X,"#")+e} method constructor (line 6) | constructor(t=!1,e=!1){this._isReadonly=t,this._isShallow=e} method get (line 6) | get(t,e,n){if("__v_skip"===e)return t["__v_skip"];const r=this._isRead... function Z (line 266) | function Z(t,e){const n=document.documentElement.getBoundingClientRect()... method constructor (line 6) | constructor(t=!1){super(!1,t)} method set (line 6) | set(t,e,n,r){let o=t[e];if(!this._isShallow){const e=wt(o);if(kt(n)||w... method deleteProperty (line 6) | deleteProperty(t,e){const n=(0,i.RI)(t,e),r=t[e],o=Reflect.deletePrope... method has (line 6) | has(t,e){const n=Reflect.has(t,e);return(0,i.yk)(e)&&q.has(e)||L(t,"ha... method ownKeys (line 6) | ownKeys(t){return L(t,"iterate",(0,i.kJ)(t)?"length":E),Reflect.ownKey... function J (line 266) | function J(t){let e;if("el"in t){const n=t.el,i="string"===typeof n&&n.s... function K (line 266) | function K(t,e){const n=history.state?history.state.position-e:-1;return... function et (line 266) | function et(t,e){tt.set(t,e)} function nt (line 266) | function nt(t){const e=tt.get(t);return tt.delete(t),e} function rt (line 266) | function rt(t,e){const{pathname:n,search:i,hash:r}=e,o=t.indexOf("#");if... function ot (line 266) | function ot(t,e,n,i){let r=[],o=[],s=null;const a=({state:o})=>{const a=... function st (line 266) | function st(t,e,n,i=!1,r=!1){return{back:t,current:e,forward:n,replaced:... function at (line 266) | function at(t){const{history:e,location:n}=window,i={value:rt(t,n)},r={v... function lt (line 266) | function lt(t){t=q(t);const e=at(t),n=ot(t,e.state,e.location,e.replace)... function ct (line 266) | function ct(t){return"string"===typeof t||t&&"object"===typeof t} function ut (line 266) | function ut(t){return"string"===typeof t||"symbol"===typeof t} method acquireContext (line 230) | acquireContext(t,e){} method releaseContext (line 230) | releaseContext(t){return!1} method addEventListener (line 230) | addEventListener(t,e,n){} method removeEventListener (line 230) | removeEventListener(t,e,n){} method getDevicePixelRatio (line 230) | getDevicePixelRatio(){return 1} method getMaximumSize (line 230) | getMaximumSize(t,e,n,i){return e=Math.max(0,e||t.width),n=n||t.height,... method isAttached (line 230) | isAttached(t){return!0} method updateConfig (line 230) | updateConfig(t){} function ft (line 266) | function ft(t,e){return l(new Error,{type:t,[ht]:!0},e)} method constructor (line 244) | constructor(t,e){super(),this.context=t||(t=>u(e,t))} method set (line 244) | set(t,e){return e.timestampIsSet?t:u(t,lt(t,this.context))} function pt (line 266) | function pt(t,e){return t instanceof Error&&ht in t&&(null==e||!!(t.type... method run (line 244) | run(t,e,n,i){const r=this.parse(t,e,n,i);return r?{setter:new dt(r.val... method validate (line 244) | validate(t,e,n){return!0} function xt (line 266) | function xt(t,e){const n=l({},mt,e),i=[];let r=n.start?"^":"";const o=[]... function yt (line 266) | function yt(t,e){let n=0;while(n0&&e[e.length-1]<0} function Mt (line 266) | function Mt(t){if(!t)return[[]];if("/"===t)return[[kt]];if(!t.startsWith... function St (line 266) | function St(t,e,n){const i=xt(Mt(t.path),n);const r=l(i,{record:t,parent... function Tt (line 266) | function Tt(t,e){const n=[],i=new Map;function r(t){return i.get(t)}func... function Dt (line 266) | function Dt(t,e){const n={};for(const i of e)i in t&&(n[i]=t[i]);return n} method parse (line 244) | parse(t,e,n){const i=t=>({year:t,isTwoDigitYear:"yy"===e});switch(e){c... method validate (line 244) | validate(t,e){return e.isTwoDigitYear||e.year>0} method set (line 244) | set(t,e,n){const i=t.getFullYear();if(n.isTwoDigitYear){const e=St(n.y... function Ct (line 266) | function Ct(t){const e={path:t.path,redirect:t.redirect,name:t.name,meta... function At (line 266) | function At(t){const e={},n=t.props||!1;if("component"in t)e.default=n;e... function Ot (line 266) | function Ot(t){while(t){if(t.record.aliasOf)return!0;t=t.parent}return!1} method parse (line 244) | parse(t,e,n){const i=t=>({year:t,isTwoDigitYear:"YY"===e});switch(e){c... method validate (line 244) | validate(t,e){return e.isTwoDigitYear||e.year>0} method set (line 244) | set(t,e,n,i){const r=At(t,i);if(n.isTwoDigitYear){const e=St(n.year,r)... function Pt (line 266) | function Pt(t){return t.reduce(((t,e)=>l(t,e.meta)),{})} method acquireContext (line 230) | acquireContext(t,e){const n=t&&t.getContext&&t.getContext("2d");return... method releaseContext (line 230) | releaseContext(t){const e=t.canvas;if(!e[dt])return!1;const n=e[dt].in... method addEventListener (line 230) | addEventListener(t,e,n){this.removeEventListener(t,e);const i=t.$proxi... method removeEventListener (line 230) | removeEventListener(t,e){const n=t.$proxies||(t.$proxies={}),i=n[e];if... method getDevicePixelRatio (line 230) | getDevicePixelRatio(){return window.devicePixelRatio} method getMaximumSize (line 230) | getMaximumSize(t,e,n,r){return(0,i.G)(t,e,n,r)} method isAttached (line 230) | isAttached(t){const e=t&&(0,i.I)(t);return!(!e||!e.isConnected)} function Et (line 266) | function Et(t,e){const n={};for(const i in t)n[i]=i in e?e[i]:t[i];retur... method constructor (line 6) | constructor(t,e){this.dep=new A,this["__v_isRef"]=!0,this["__v_isShall... method value (line 6) | get value(){return this.dep.track(),this._value} method value (line 6) | set value(t){const e=this._rawValue,n=this["__v_isShallow"]||kt(t)||wt... method parse (line 244) | parse(t,e){return _t("R"===e?4:e.length,t)} method set (line 244) | set(t,e,n){const i=u(t,0);return i.setFullYear(n,0,4),i.setHours(0,0,0... function Rt (line 266) | function Rt(t,e){let n=0,i=e.length;while(n!==i){const r=n+i>>1,o=vt(t,e... method tooltipPosition (line 230) | tooltipPosition(t){const{x:e,y:n}=this.getProps(["x","y"],t);return{x:... method hasValue (line 230) | hasValue(){return(0,i.x)(this.x)&&(0,i.x)(this.y)} method getProps (line 230) | getProps(t,e){const n=this.$animations;if(!e||!n)return this;const i={... method parse (line 244) | parse(t,e){return _t("u"===e?4:e.length,t)} method set (line 244) | set(t,e,n){return t.setFullYear(n,0,1),t.setHours(0,0,0,0),t} function It (line 266) | function It(t){let e=t;while(e=e.parent)if(Lt(e)&&0===vt(t,e))return e} method parse (line 244) | parse(t,e,n){switch(e){case"Q":case"QQ":return kt(e.length,t);case"Qo"... method validate (line 244) | validate(t,e){return e>=1&&e<=4} method set (line 244) | set(t,e,n){return t.setMonth(3*(n-1),1),t.setHours(0,0,0,0),t} function Lt (line 266) | function Lt({record:t}){return!!(t.name||t.components&&Object.keys(t.com... method parse (line 244) | parse(t,e,n){switch(e){case"q":case"qq":return kt(e.length,t);case"qo"... method validate (line 244) | validate(t,e){return e>=1&&e<=4} method set (line 244) | set(t,e,n){return t.setMonth(3*(n-1),1),t.setHours(0,0,0,0),t} function zt (line 266) | function zt(t){const e={};if(""===t||"?"===t)return e;const n="?"===t[0]... method constructor (line 6) | constructor(t,e,n){this.fn=t,this.setter=e,this._value=void 0,this.dep... method notify (line 6) | notify(){if(this.flags|=16,!(8&this.flags||o===this))return f(this,!0)... method value (line 6) | get value(){const t=this.dep.track();return y(this),t&&(t.version=this... method value (line 6) | set value(t){this.setter&&this.setter(t)} method parse (line 244) | parse(t,e,n){const i=t=>t-1;switch(e){case"M":return xt(yt(mt.month,t)... method validate (line 244) | validate(t,e){return e>=0&&e<=11} method set (line 244) | set(t,e,n){return t.setMonth(n,1),t.setHours(0,0,0,0),t} function Nt (line 266) | function Nt(t){let e="";for(let n in t){const i=t[n];if(n=A(n),null==i){... method parse (line 244) | parse(t,e,n){const i=t=>t-1;switch(e){case"L":return xt(yt(mt.month,t)... method validate (line 244) | validate(t,e){return e>=0&&e<=11} method set (line 244) | set(t,e,n){return t.setMonth(n,1),t.setHours(0,0,0,0),t} function Ft (line 266) | function Ft(t){const e={};for(const n in t){const i=t[n];void 0!==i&&(e[... function Yt (line 266) | function Yt(){let t=[];function e(e){return t.push(e),()=>{const n=t.ind... function Vt (line 266) | function Vt(t,e,n,i,r,o=(t=>t())){const s=i&&(i.enterCallbacks[r]=i.ente... function Ut (line 266) | function Ut(t,e,n,i,r=(t=>t())){const o=[];for(const l of t){0;for(const... method parse (line 244) | parse(t,e,n){switch(e){case"I":return yt(mt.week,t);case"Io":return n.... method validate (line 244) | validate(t,e){return e>=1&&e<=53} method set (line 244) | set(t,e,n){return Pt(Vt(t,n))} function qt (line 266) | function qt(t){const e=(0,i.f3)(Wt),n=(0,i.f3)($t);const o=(0,i.Fl)((()=... function Xt (line 266) | function Xt(t){return 1===t.length?t[0]:t} method inRange (line 258) | inRange(t,e,n,i){const{x:o,y:s}=h({x:t,y:e},this.getCenterPoint(i),(0,... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){t.save(),Y(t,this.getCenterPoint(),this.options.rotation),X(t,... method label (line 258) | get label(){return this.elements&&this.elements[0]} method resolveElementProperties (line 258) | resolveElementProperties(t,e){return vt(t,e)} method setup (line 266) | setup(t,{slots:e}){const n=(0,r.qj)(qt(t)),{options:o}=(0,i.f3)(Wt),s=(0... function Qt (line 266) | function Qt(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defa... function Jt (line 266) | function Jt(t,e){for(const n in e){const i=e[n],r=t[n];if("string"===typ... function Kt (line 266) | function Kt(t){return t?t.aliasOf?t.aliasOf.path:t.path:""} method constructor (line 230) | constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void... method init (line 230) | init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,... method parse (line 230) | parse(t,e){return t} method getUserBounds (line 230) | getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:n,_suggestedMa... method getMinMax (line 230) | getMinMax(t){let e,{min:n,max:r,minDefined:o,maxDefined:s}=this.getUse... method getPadding (line 230) | getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,ri... method getTicks (line 230) | getTicks(){return this.ticks} method getLabels (line 230) | getLabels(){const t=this.chart.data;return this.options.labels||(this.... method getLabelItems (line 230) | getLabelItems(t=this.chart.chartArea){const e=this._labelItems||(this.... method beforeLayout (line 230) | beforeLayout(){this._cache={},this._dataLimitsCached=!1} method beforeUpdate (line 230) | beforeUpdate(){(0,i.Q)(this.options.beforeUpdate,[this])} method update (line 230) | update(t,e,n){const{beginAtZero:r,grace:o,ticks:s}=this.options,a=s.sa... method configure (line 230) | configure(){let t,e,n=this.options.reverse;this.isHorizontal()?(t=this... method afterUpdate (line 230) | afterUpdate(){(0,i.Q)(this.options.afterUpdate,[this])} method beforeSetDimensions (line 230) | beforeSetDimensions(){(0,i.Q)(this.options.beforeSetDimensions,[this])} method setDimensions (line 230) | setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.lef... method afterSetDimensions (line 230) | afterSetDimensions(){(0,i.Q)(this.options.afterSetDimensions,[this])} method _callHooks (line 230) | _callHooks(t){this.chart.notifyPlugins(t,this.getContext()),(0,i.Q)(th... method beforeDataLimits (line 230) | beforeDataLimits(){this._callHooks("beforeDataLimits")} method determineDataLimits (line 230) | determineDataLimits(){} method afterDataLimits (line 230) | afterDataLimits(){this._callHooks("afterDataLimits")} method beforeBuildTicks (line 230) | beforeBuildTicks(){this._callHooks("beforeBuildTicks")} method buildTicks (line 230) | buildTicks(){return[]} method afterBuildTicks (line 230) | afterBuildTicks(){this._callHooks("afterBuildTicks")} method beforeTickToLabelConversion (line 230) | beforeTickToLabelConversion(){(0,i.Q)(this.options.beforeTickToLabelCo... method generateTickLabels (line 230) | generateTickLabels(t){const e=this.options.ticks;let n,r,o;for(n=0,r=t... method afterTickToLabelConversion (line 230) | afterTickToLabelConversion(){(0,i.Q)(this.options.afterTickToLabelConv... method beforeCalculateLabelRotation (line 230) | beforeCalculateLabelRotation(){(0,i.Q)(this.options.beforeCalculateLab... method calculateLabelRotation (line 230) | calculateLabelRotation(){const t=this.options,e=t.ticks,n=Bt(this.tick... method afterCalculateLabelRotation (line 230) | afterCalculateLabelRotation(){(0,i.Q)(this.options.afterCalculateLabel... method afterAutoSkip (line 230) | afterAutoSkip(){} method beforeFit (line 230) | beforeFit(){(0,i.Q)(this.options.beforeFit,[this])} method fit (line 230) | fit(){const t={width:0,height:0},{chart:e,options:{ticks:n,title:r,gri... method _calculatePadding (line 230) | _calculatePadding(t,e,n,i){const{ticks:{align:r,padding:o},position:s}... method _handleMargins (line 230) | _handleMargins(){this._margins&&(this._margins.left=Math.max(this.padd... method afterFit (line 230) | afterFit(){(0,i.Q)(this.options.afterFit,[this])} method isHorizontal (line 230) | isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||... method isFullSize (line 230) | isFullSize(){return this.options.fullSize} method _convertTicksToLabels (line 230) | _convertTicksToLabels(t){let e,n;for(this.beforeTickToLabelConversion(... method _getLabelSizes (line 230) | _getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ti... method _computeLabelSizes (line 230) | _computeLabelSizes(t,e,n){const{ctx:r,_longestTextCache:o}=this,s=[],a... method getLabelForValue (line 230) | getLabelForValue(t){return t} method getPixelForValue (line 230) | getPixelForValue(t,e){return NaN} method getValueForPixel (line 230) | getValueForPixel(t){} method getPixelForTick (line 230) | getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:th... method getPixelForDecimal (line 230) | getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._start... method getDecimalForPixel (line 230) | getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return... method getBasePixel (line 230) | getBasePixel(){return this.getPixelForValue(this.getBaseValue())} method getBaseValue (line 230) | getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0} method getContext (line 230) | getContext(t){const e=this.ticks||[];if(t>=0&&t=0&&e<=6} method set (line 244) | set(t,e,n,i){return t=Jt(t,n,i),t.setHours(0,0,0,0),t} method setup (line 266) | setup(t,{attrs:e,slots:n}){const o=(0,i.f3)(Bt),s=(0,i.Fl)((()=>t.route|... function ne (line 266) | function ne(t,e){if(!t)return null;const n=t(e);return 1===n.length?n[0]:n} method inRange (line 258) | inRange(t,e,n,i){return y({x:t,y:e},{rect:this.getProps(["x","y","x2",... method getCenterPoint (line 258) | getCenterPoint(t){return v(this,t)} method draw (line 258) | draw(t){const e=this.options,n=!(0,r.h)(this._visible)||this._visible;... method resolveElementProperties (line 258) | resolveElementProperties(t,e){let n;if(I(e))n=mt(t,e);else{const{cente... function re (line 266) | function re(t){const e=Tt(t.routes,t),n=t.parseQuery||zt,s=t.stringifyQu... method constructor (line 230) | constructor(){this.controllers=new te(P,"datasets",!0),this.elements=n... method add (line 230) | add(...t){this._each("register",t)} method remove (line 230) | remove(...t){this._each("unregister",t)} method addControllers (line 230) | addControllers(...t){this._each("register",t,this.controllers)} method addElements (line 230) | addElements(...t){this._each("register",t,this.elements)} method addPlugins (line 230) | addPlugins(...t){this._each("register",t,this.plugins)} method addScales (line 230) | addScales(...t){this._each("register",t,this.scales)} method getController (line 230) | getController(t){return this._get(t,this.controllers,"controller")} method getElement (line 230) | getElement(t){return this._get(t,this.elements,"element")} method getPlugin (line 230) | getPlugin(t){return this._get(t,this.plugins,"plugin")} method getScale (line 230) | getScale(t){return this._get(t,this.scales,"scale")} method removeControllers (line 230) | removeControllers(...t){this._each("unregister",t,this.controllers)} method removeElements (line 230) | removeElements(...t){this._each("unregister",t,this.elements)} method removePlugins (line 230) | removePlugins(...t){this._each("unregister",t,this.plugins)} method removeScales (line 230) | removeScales(...t){this._each("unregister",t,this.scales)} method _each (line 230) | _each(t,e,n){[...e].forEach((e=>{const r=n||this._getRegistryForType(e... method _exec (line 230) | _exec(t,e,n){const r=(0,i.a5)(t);(0,i.Q)(n["before"+r],[],n),e[t](n),(... method _getRegistryForType (line 230) | _getRegistryForType(t){for(let e=0;e0===t?7:t;switch(e){case"i":case"ii":return kt... method validate (line 244) | validate(t,e){return e>=1&&e<=7} method set (line 244) | set(t,e,n){return t=ie(t,n),t.setHours(0,0,0,0),t} function oe (line 266) | function oe(t,e){const n=[],i=[],r=[],o=Math.max(e.matched.length,t.matc... method parse (line 244) | parse(t,e,n){switch(e){case"a":case"aa":case"aaa":return n.dayPeriod(t... method set (line 244) | set(t,e,n){return t.setHours(Mt(n),0,0,0),t} function se (line 266) | function se(){return(0,i.f3)(Wt)} method constructor (line 230) | constructor(){this._init=void 0} method notify (line 230) | notify(t,e,n,i){if("beforeInit"===e&&(this._init=this._createDescripto... method _notify (line 230) | _notify(t,e,n,r){r=r||{};for(const o of t){const t=o.plugin,s=t[n],a=[... method invalidate (line 230) | invalidate(){(0,i.k)(this._cache)||(this._oldCache=this._cache,this._c... method _descriptors (line 230) | _descriptors(t){if(this._cache)return this._cache;const e=this._cache=... method _createDescriptors (line 230) | _createDescriptors(t,e){const n=t&&t.config,r=(0,i.v)(n.options&&n.opt... method _notifyStateChanges (line 230) | _notifyStateChanges(t){const e=this._oldCache||[],n=this._cache,i=(t,e... method parse (line 244) | parse(t,e,n){switch(e){case"b":case"bb":case"bbb":return n.dayPeriod(t... method set (line 244) | set(t,e,n){return t.setHours(Mt(n),0,0,0),t} function ae (line 266) | function ae(t){return(0,i.f3)($t)} method parse (line 244) | parse(t,e,n){switch(e){case"B":case"BB":case"BBB":return n.dayPeriod(t... method set (line 244) | set(t,e,n){return t.setHours(Mt(n),0,0,0),t} FILE: web/static_test.go function TestEmbed (line 9) | func TestEmbed(t *testing.T) {