From 9246237cf15bb04db950bea45d9c5f140e3bc71a Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 4 Nov 2024 18:12:29 +0000 Subject: [PATCH 01/57] skip flaky suite (#192640) --- .../public/components/case_view/components/user_list.test.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/cases/public/components/case_view/components/user_list.test.tsx b/x-pack/plugins/cases/public/components/case_view/components/user_list.test.tsx index 7254f7f500f63..b1601e471915f 100644 --- a/x-pack/plugins/cases/public/components/case_view/components/user_list.test.tsx +++ b/x-pack/plugins/cases/public/components/case_view/components/user_list.test.tsx @@ -20,7 +20,8 @@ jest.mock('../../../common/navigation/hooks'); const useCaseViewNavigationMock = useCaseViewNavigation as jest.Mock; -describe('UserList ', () => { +// FLAKY: https://github.com/elastic/kibana/issues/192640 +describe.skip('UserList ', () => { const title = basicCase.title; const caseLink = 'https://example.com/cases/test'; const user = { From 76f6ec0f9bb4b3568e57273223f0e75912d06ce8 Mon Sep 17 00:00:00 2001 From: Melissa Alvarez Date: Mon, 4 Nov 2024 11:54:28 -0700 Subject: [PATCH 02/57] [ML] AIOps Log rate analysis: switch to Rerun analysis copy if search bar search changes (#198179) ## Summary Related meta issue: https://github.com/elastic/kibana/issues/196660 Corresponds to item: `UI: should switch to Rerun analysis copy if we change up the search in the search bar, otherwise hover data in the main chart doesn't really match anymore` https://github.com/user-attachments/assets/cf689b0e-4e07-4fd8-b5ec-74e3a4dea0f6 ### Checklist Delete any items that are not applicable to this PR. - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [ ] Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/)) - [ ] Any UI touched in this PR does not create any new axe failures (run axe in browser: [FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/), [Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US)) - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server)) - [ ] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) Co-authored-by: Elastic Machine --- .../log_rate_analysis_results.tsx | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_results.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_results.tsx index b97019c4b4d29..ad8e7740b505d 100644 --- a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_results.tsx +++ b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_results.tsx @@ -183,6 +183,7 @@ export const LogRateAnalysisResults: FC = ({ // to be able to track it across rerenders. const analysisStartTime = useRef(window.performance.now()); const abortCtrl = useRef(new AbortController()); + const previousSearchQuery = useRef(searchQuery); const [groupResults, setGroupResults] = useState(false); const [overrides, setOverrides] = useState( @@ -386,6 +387,19 @@ export const LogRateAnalysisResults: FC = ({ [data.significantItemsGroups] ); + const searchQueryUpdated = useMemo(() => { + let searchQueryChanged = false; + if ( + !isRunning && + previousSearchQuery.current !== undefined && + !isEqual(previousSearchQuery.current, searchQuery) + ) { + searchQueryChanged = true; + } + previousSearchQuery.current = searchQuery; + return searchQueryChanged; + }, [searchQuery, isRunning]); + const shouldRerunAnalysis = useMemo( () => currentAnalysisWindowParameters !== undefined && @@ -426,7 +440,7 @@ export const LogRateAnalysisResults: FC = ({ onRefresh={() => startHandler(false)} onCancel={cancelHandler} onReset={onReset} - shouldRerunAnalysis={shouldRerunAnalysis} + shouldRerunAnalysis={shouldRerunAnalysis || searchQueryUpdated} analysisInfo={} > From 185bbf79d1d8418099a8b3dbb88e94dd02a1e7da Mon Sep 17 00:00:00 2001 From: Yan Savitski Date: Mon, 4 Nov 2024 20:07:39 +0100 Subject: [PATCH 03/57] [Search] [Playground] [Bug] Fix flaky test (#198126) Fix Flaky FTR test. The reason for flaky issue was related to getting state from the session --- .../apps/search_playground/playground_overview.ess.ts | 1 + .../search/search_playground/playground_overview.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/x-pack/test/functional/apps/search_playground/playground_overview.ess.ts b/x-pack/test/functional/apps/search_playground/playground_overview.ess.ts index e64fafd4b010f..34b223075667d 100644 --- a/x-pack/test/functional/apps/search_playground/playground_overview.ess.ts +++ b/x-pack/test/functional/apps/search_playground/playground_overview.ess.ts @@ -110,6 +110,7 @@ export default function (ftrContext: FtrProviderContext) { before(async () => { await createConnector(); await createIndex(); + await pageObjects.searchPlayground.session.setSession(); await browser.refresh(); }); diff --git a/x-pack/test_serverless/functional/test_suites/search/search_playground/playground_overview.ts b/x-pack/test_serverless/functional/test_suites/search/search_playground/playground_overview.ts index 44d96d565fec2..e1570d2191378 100644 --- a/x-pack/test_serverless/functional/test_suites/search/search_playground/playground_overview.ts +++ b/x-pack/test_serverless/functional/test_suites/search/search_playground/playground_overview.ts @@ -117,11 +117,11 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); }); - // FLAKY: https://github.com/elastic/kibana/issues/189314 - describe.skip('with existing indices', () => { + describe('with existing indices', () => { before(async () => { await createConnector(); await createIndex(); + await pageObjects.searchPlayground.session.setSession(); await browser.refresh(); }); From 962082ead77fbd0c23a64347f9fa19e7424c400b Mon Sep 17 00:00:00 2001 From: Janki Salvi <117571355+js-jankisalvi@users.noreply.github.com> Date: Mon, 4 Nov 2024 19:13:33 +0000 Subject: [PATCH 04/57] [ResponseOps][New Rule Form] Fix new rule form issues with basic license (#198036) ## Summary Fixes below issues from new rule form leftovers https://github.com/elastic/kibana/issues/196235?reload=1?reload=1
On basic license, if I hover on unsupported connectors, a tooltip explains the reasoning. This is not happening for rule types. We should do the same for the rule types ![Screenshot 2024-10-28 at 15 44 26](https://github.com/user-attachments/assets/522a9a54-fa41-48e2-a749-58a465eb2543)
On basic license, I can edit a rule that is not available on the basic. This leads to a bunch of errors in edit mode. The same is happening on main. We should prevent accessing this kind of rule types. ![Screenshot 2024-10-28 at 15 44 57](https://github.com/user-attachments/assets/9a016ef2-aaf2-4d3f-8161-70bcb89f3334)
### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --- .../components/rule_type_list.test.tsx | 4 ++ .../components/rule_type_list.tsx | 58 +++++++++++++------ .../components/rules_list_table.tsx | 1 + 3 files changed, 45 insertions(+), 18 deletions(-) diff --git a/packages/kbn-alerts-ui-shared/src/rule_type_modal/components/rule_type_list.test.tsx b/packages/kbn-alerts-ui-shared/src/rule_type_modal/components/rule_type_list.test.tsx index 175d90924586c..7003b06875659 100644 --- a/packages/kbn-alerts-ui-shared/src/rule_type_modal/components/rule_type_list.test.tsx +++ b/packages/kbn-alerts-ui-shared/src/rule_type_modal/components/rule_type_list.test.tsx @@ -9,6 +9,7 @@ import React from 'react'; import { render, screen, within } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { RuleTypeList } from './rule_type_list'; import { RuleTypeWithDescription } from '../types'; @@ -93,5 +94,8 @@ describe('RuleTypeList', () => { expect(secondRuleInList).not.toBeDisabled(); const thirdRuleInList = within(ruleListEl[2]).getByRole('button', { name: 'Rule Type 2' }); expect(thirdRuleInList).toBeDisabled(); + + await userEvent.hover(ruleListEl[2]); + expect(await screen.findByText('This rule requires a platinum license.')).toBeInTheDocument(); }); }); diff --git a/packages/kbn-alerts-ui-shared/src/rule_type_modal/components/rule_type_list.tsx b/packages/kbn-alerts-ui-shared/src/rule_type_modal/components/rule_type_list.tsx index 4e21e428f3c5c..91710dbdfade5 100644 --- a/packages/kbn-alerts-ui-shared/src/rule_type_modal/components/rule_type_list.tsx +++ b/packages/kbn-alerts-ui-shared/src/rule_type_modal/components/rule_type_list.tsx @@ -20,6 +20,7 @@ import { EuiEmptyPrompt, EuiButton, useEuiTheme, + EuiToolTip, } from '@elastic/eui'; import { omit } from 'lodash'; import { PRODUCER_DISPLAY_NAMES } from '../../common/i18n'; @@ -86,6 +87,28 @@ export const RuleTypeList: React.FC = ({ const onClickAll = useCallback(() => onFilterByProducer(null), [onFilterByProducer]); + const ruleCard = (rule: RuleTypeWithDescription) => ( + onSelectRuleType(rule.id)} + description={rule.description} + style={{ marginRight: '8px', flexGrow: 0 }} + data-test-subj={`${rule.id}-SelectOption`} + isDisabled={!rule.enabledInLicense} + > + + {producerToDisplayName(rule.producer)} + + + ); + return ( = ({ )} {ruleTypesList.map((rule) => ( - onSelectRuleType(rule.id)} - description={rule.description} - style={{ marginRight: '8px', flexGrow: 0 }} - data-test-subj={`${rule.id}-SelectOption`} - isDisabled={rule.enabledInLicense === false} - > - - {producerToDisplayName(rule.producer)} - - + <>{ruleCard(rule)} + + )} ))} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list_table.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list_table.tsx index ee3ee18152e47..88f22f9687ea6 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list_table.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list_table.tsx @@ -750,6 +750,7 @@ export const RulesListTable = (props: RulesListTableProps) => { 'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.editAriaLabel', { defaultMessage: 'Edit' } )} + disabled={!rule.enabledInLicense} />
) : null} From 744ddafa2b36144633e0095391baece512e6eb2f Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 5 Nov 2024 06:26:54 +1100 Subject: [PATCH 05/57] Unauthorized route migration for routes owned by security-scalability (#198352) --- .../server/routes/analyze_logs_routes.ts | 7 +++++++ .../server/routes/build_integration_routes.ts | 7 +++++++ .../server/routes/categorization_routes.ts | 7 +++++++ .../integration_assistant/server/routes/cel_routes.ts | 7 +++++++ .../integration_assistant/server/routes/ecs_routes.ts | 7 +++++++ .../integration_assistant/server/routes/pipeline_routes.ts | 7 +++++++ .../integration_assistant/server/routes/related_routes.ts | 7 +++++++ 7 files changed, 49 insertions(+) diff --git a/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts b/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts index 04ba66acbebfb..34f05fcc82025 100644 --- a/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts @@ -36,6 +36,13 @@ export function registerAnalyzeLogsRoutes( .addVersion( { version: '1', + security: { + authz: { + enabled: false, + reason: + 'This route is opted out from authorization because the privileges are not defined yet.', + }, + }, validate: { request: { body: buildRouteValidationWithZod(AnalyzeLogsRequestBody), diff --git a/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts b/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts index 6d7e5155a3d23..f62d6d55f933d 100644 --- a/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts @@ -25,6 +25,13 @@ export function registerIntegrationBuilderRoutes( .addVersion( { version: '1', + security: { + authz: { + enabled: false, + reason: + 'This route is opted out from authorization because the privileges are not defined yet.', + }, + }, validate: { request: { body: buildRouteValidationWithZod(BuildIntegrationRequestBody), diff --git a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts b/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts index 10d72b92563fe..5f63ed9c7bf3c 100644 --- a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts @@ -40,6 +40,13 @@ export function registerCategorizationRoutes( .addVersion( { version: '1', + security: { + authz: { + enabled: false, + reason: + 'This route is opted out from authorization because the privileges are not defined yet.', + }, + }, validate: { request: { body: buildRouteValidationWithZod(CategorizationRequestBody), diff --git a/x-pack/plugins/integration_assistant/server/routes/cel_routes.ts b/x-pack/plugins/integration_assistant/server/routes/cel_routes.ts index 5f417bbc0aec9..9ce16c3909119 100644 --- a/x-pack/plugins/integration_assistant/server/routes/cel_routes.ts +++ b/x-pack/plugins/integration_assistant/server/routes/cel_routes.ts @@ -32,6 +32,13 @@ export function registerCelInputRoutes(router: IRouter Date: Mon, 4 Nov 2024 13:45:20 -0600 Subject: [PATCH 06/57] [ci] Run checks before tests (#198452) Should be the last group to move before tests for now. The intent has been to move steps that fit in the build window to run before tests start. Catching errors before parallel steps should help reduce the number of test runs with known issues. --- .buildkite/pipelines/on_merge.yml | 56 +++++++++---------- .../pipelines/pull_request/apm_cypress.yml | 2 + .buildkite/pipelines/pull_request/base.yml | 47 ++++++++-------- .../pipelines/pull_request/deploy_cloud.yml | 2 + .../pull_request/exploratory_view_plugin.yml | 2 + .buildkite/pipelines/pull_request/fips.yml | 2 + .../pipelines/pull_request/fleet_cypress.yml | 2 + .../pull_request/inventory_cypress.yml | 2 + .../pipelines/pull_request/kbn_handlebars.yml | 2 + .../observability_onboarding_cypress.yml | 2 + .../pull_request/profiling_cypress.yml | 2 + .../pipelines/pull_request/response_ops.yml | 2 + .../pull_request/response_ops_cases.yml | 2 + .../security_solution/ai_assistant.yml | 4 ++ .../cloud_security_posture.yml | 4 ++ .../security_solution/cypress_burn.yml | 8 +++ .../security_solution/defend_workflows.yml | 4 ++ .../security_solution/detection_engine.yml | 8 +++ .../security_solution/entity_analytics.yml | 4 ++ .../security_solution/explore.yml | 4 ++ .../security_solution/investigations.yml | 4 ++ .../security_solution/osquery_cypress.yml | 4 ++ .../security_solution/playwright.yml | 4 ++ .../security_solution/rule_management.yml | 8 +++ .../pipelines/pull_request/slo_plugin_e2e.yml | 2 + .../pull_request/synthetics_plugin.yml | 2 + .../pipelines/pull_request/uptime_plugin.yml | 2 + .../pipelines/pull_request/ux_plugin_e2e.yml | 2 + 28 files changed, 138 insertions(+), 51 deletions(-) diff --git a/.buildkite/pipelines/on_merge.yml b/.buildkite/pipelines/on_merge.yml index 5518e1f8ed83c..d5ffcf7067c36 100644 --- a/.buildkite/pipelines/on_merge.yml +++ b/.buildkite/pipelines/on_merge.yml @@ -45,6 +45,20 @@ steps: - exit_status: '-1' limit: 3 + - command: .buildkite/scripts/steps/checks.sh + label: 'Checks' + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-prod + provider: gcp + machineType: n2-standard-2 + preemptible: true + timeout_in_minutes: 60 + retry: + automatic: + - exit_status: '-1' + limit: 3 + - command: .buildkite/scripts/steps/lint.sh label: 'Linting' agents: @@ -89,6 +103,20 @@ steps: - exit_status: '-1' limit: 3 + - command: .buildkite/scripts/steps/checks/capture_oas_snapshot.sh + label: 'Check OAS Snapshot' + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-prod + provider: gcp + machineType: n2-standard-4 + preemptible: true + timeout_in_minutes: 60 + retry: + automatic: + - exit_status: '-1' + limit: 3 + - wait - command: .buildkite/scripts/steps/on_merge_api_docs.sh @@ -454,34 +482,6 @@ steps: provider: gcp machineType: n2-standard-2 - - command: .buildkite/scripts/steps/checks.sh - label: 'Checks' - agents: - image: family/kibana-ubuntu-2004 - imageProject: elastic-images-prod - provider: gcp - machineType: n2-standard-2 - preemptible: true - timeout_in_minutes: 60 - retry: - automatic: - - exit_status: '-1' - limit: 3 - - - command: .buildkite/scripts/steps/checks/capture_oas_snapshot.sh - label: 'Check OAS Snapshot' - agents: - image: family/kibana-ubuntu-2004 - imageProject: elastic-images-prod - provider: gcp - machineType: n2-standard-4 - preemptible: true - timeout_in_minutes: 60 - retry: - automatic: - - exit_status: '-1' - limit: 3 - - command: .buildkite/scripts/steps/storybooks/build_and_upload.sh label: 'Build Storybooks' agents: diff --git a/.buildkite/pipelines/pull_request/apm_cypress.yml b/.buildkite/pipelines/pull_request/apm_cypress.yml index c0cb60dbc986b..97935cc3489d1 100644 --- a/.buildkite/pipelines/pull_request/apm_cypress.yml +++ b/.buildkite/pipelines/pull_request/apm_cypress.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 120 parallelism: 1 # TODO: Set parallelism when apm_cypress handles it retry: diff --git a/.buildkite/pipelines/pull_request/base.yml b/.buildkite/pipelines/pull_request/base.yml index fc3e2ce388bf5..e7b593f464b54 100644 --- a/.buildkite/pipelines/pull_request/base.yml +++ b/.buildkite/pipelines/pull_request/base.yml @@ -32,6 +32,18 @@ steps: - exit_status: '-1' limit: 3 + - command: .buildkite/scripts/steps/checks.sh + label: 'Checks' + key: checks + agents: + machineType: n2-standard-2 + preemptible: true + timeout_in_minutes: 60 + retry: + automatic: + - exit_status: '-1' + limit: 3 + - command: .buildkite/scripts/steps/lint.sh label: 'Linting' agents: @@ -56,6 +68,18 @@ steps: - exit_status: '-1' limit: 3 + - command: .buildkite/scripts/steps/checks/capture_oas_snapshot.sh + label: 'Check OAS Snapshot' + agents: + machineType: n2-standard-4 + preemptible: true + key: check_oas_snapshot + timeout_in_minutes: 60 + retry: + automatic: + - exit_status: '-1' + limit: 3 + - command: .buildkite/scripts/steps/check_types.sh label: 'Check Types' agents: @@ -99,29 +123,6 @@ steps: - exit_status: '*' limit: 1 - - command: .buildkite/scripts/steps/checks.sh - label: 'Checks' - key: checks - agents: - machineType: n2-standard-2 - preemptible: true - timeout_in_minutes: 60 - retry: - automatic: - - exit_status: '-1' - limit: 3 - - - command: .buildkite/scripts/steps/checks/capture_oas_snapshot.sh - label: 'Check OAS Snapshot' - agents: - machineType: n2-standard-4 - preemptible: true - timeout_in_minutes: 60 - retry: - automatic: - - exit_status: '-1' - limit: 3 - - command: .buildkite/scripts/steps/api_docs/build_api_docs.sh label: 'Build API Docs' agents: diff --git a/.buildkite/pipelines/pull_request/deploy_cloud.yml b/.buildkite/pipelines/pull_request/deploy_cloud.yml index 6b42037b95953..565c5af3bb0c1 100644 --- a/.buildkite/pipelines/pull_request/deploy_cloud.yml +++ b/.buildkite/pipelines/pull_request/deploy_cloud.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 30 soft_fail: true retry: diff --git a/.buildkite/pipelines/pull_request/exploratory_view_plugin.yml b/.buildkite/pipelines/pull_request/exploratory_view_plugin.yml index c46edb528987a..05fc218080cd4 100644 --- a/.buildkite/pipelines/pull_request/exploratory_view_plugin.yml +++ b/.buildkite/pipelines/pull_request/exploratory_view_plugin.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 artifact_paths: - 'x-pack/plugins/observability_solution/exploratory_view/e2e/.journeys/**/*' diff --git a/.buildkite/pipelines/pull_request/fips.yml b/.buildkite/pipelines/pull_request/fips.yml index 1a759e1288328..4f906e4420c8f 100644 --- a/.buildkite/pipelines/pull_request/fips.yml +++ b/.buildkite/pipelines/pull_request/fips.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 soft_fail: true retry: diff --git a/.buildkite/pipelines/pull_request/fleet_cypress.yml b/.buildkite/pipelines/pull_request/fleet_cypress.yml index d20591728b788..50912cc16e5a8 100644 --- a/.buildkite/pipelines/pull_request/fleet_cypress.yml +++ b/.buildkite/pipelines/pull_request/fleet_cypress.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 50 parallelism: 6 retry: diff --git a/.buildkite/pipelines/pull_request/inventory_cypress.yml b/.buildkite/pipelines/pull_request/inventory_cypress.yml index 7028b55808ca6..3cd96de506288 100644 --- a/.buildkite/pipelines/pull_request/inventory_cypress.yml +++ b/.buildkite/pipelines/pull_request/inventory_cypress.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 120 parallelism: 1 retry: diff --git a/.buildkite/pipelines/pull_request/kbn_handlebars.yml b/.buildkite/pipelines/pull_request/kbn_handlebars.yml index 36901a5d5c552..187058d238682 100644 --- a/.buildkite/pipelines/pull_request/kbn_handlebars.yml +++ b/.buildkite/pipelines/pull_request/kbn_handlebars.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 5 retry: automatic: diff --git a/.buildkite/pipelines/pull_request/observability_onboarding_cypress.yml b/.buildkite/pipelines/pull_request/observability_onboarding_cypress.yml index 8906cc72fa81f..b0d438064d51e 100644 --- a/.buildkite/pipelines/pull_request/observability_onboarding_cypress.yml +++ b/.buildkite/pipelines/pull_request/observability_onboarding_cypress.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 120 retry: automatic: diff --git a/.buildkite/pipelines/pull_request/profiling_cypress.yml b/.buildkite/pipelines/pull_request/profiling_cypress.yml index 100e42206b3a1..8ed98a4fbc736 100644 --- a/.buildkite/pipelines/pull_request/profiling_cypress.yml +++ b/.buildkite/pipelines/pull_request/profiling_cypress.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 120 parallelism: 2 retry: diff --git a/.buildkite/pipelines/pull_request/response_ops.yml b/.buildkite/pipelines/pull_request/response_ops.yml index f09beb168259f..9ac20e86f6660 100644 --- a/.buildkite/pipelines/pull_request/response_ops.yml +++ b/.buildkite/pipelines/pull_request/response_ops.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 120 parallelism: 9 retry: diff --git a/.buildkite/pipelines/pull_request/response_ops_cases.yml b/.buildkite/pipelines/pull_request/response_ops_cases.yml index 5382ab6017fa6..27289c864e2c1 100644 --- a/.buildkite/pipelines/pull_request/response_ops_cases.yml +++ b/.buildkite/pipelines/pull_request/response_ops_cases.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 120 retry: automatic: diff --git a/.buildkite/pipelines/pull_request/security_solution/ai_assistant.yml b/.buildkite/pipelines/pull_request/security_solution/ai_assistant.yml index e8fa983f5ff63..ca185a684d0c7 100644 --- a/.buildkite/pipelines/pull_request/security_solution/ai_assistant.yml +++ b/.buildkite/pipelines/pull_request/security_solution/ai_assistant.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 1 retry: @@ -25,9 +27,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 1 retry: diff --git a/.buildkite/pipelines/pull_request/security_solution/cloud_security_posture.yml b/.buildkite/pipelines/pull_request/security_solution/cloud_security_posture.yml index d2f1571f9d93f..e1ba84bf4f661 100644 --- a/.buildkite/pipelines/pull_request/security_solution/cloud_security_posture.yml +++ b/.buildkite/pipelines/pull_request/security_solution/cloud_security_posture.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 1 retry: @@ -25,9 +27,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 1 retry: diff --git a/.buildkite/pipelines/pull_request/security_solution/cypress_burn.yml b/.buildkite/pipelines/pull_request/security_solution/cypress_burn.yml index 24c7fad53ddd2..90c20eaca256f 100644 --- a/.buildkite/pipelines/pull_request/security_solution/cypress_burn.yml +++ b/.buildkite/pipelines/pull_request/security_solution/cypress_burn.yml @@ -9,9 +9,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 soft_fail: true parallelism: 1 @@ -28,9 +30,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 soft_fail: true parallelism: 1 @@ -45,9 +49,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 1 retry: @@ -62,9 +68,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 50 soft_fail: true retry: diff --git a/.buildkite/pipelines/pull_request/security_solution/defend_workflows.yml b/.buildkite/pipelines/pull_request/security_solution/defend_workflows.yml index ecb07ce4c22a1..0692c26f57176 100644 --- a/.buildkite/pipelines/pull_request/security_solution/defend_workflows.yml +++ b/.buildkite/pipelines/pull_request/security_solution/defend_workflows.yml @@ -9,9 +9,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 20 retry: @@ -29,9 +31,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 14 retry: diff --git a/.buildkite/pipelines/pull_request/security_solution/detection_engine.yml b/.buildkite/pipelines/pull_request/security_solution/detection_engine.yml index ad3c4dd230cee..91b3ff7e6b7ff 100644 --- a/.buildkite/pipelines/pull_request/security_solution/detection_engine.yml +++ b/.buildkite/pipelines/pull_request/security_solution/detection_engine.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 5 retry: @@ -25,9 +27,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 2 retry: @@ -43,9 +47,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 5 retry: @@ -61,9 +67,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 2 retry: diff --git a/.buildkite/pipelines/pull_request/security_solution/entity_analytics.yml b/.buildkite/pipelines/pull_request/security_solution/entity_analytics.yml index 2f1d30ab97d07..d031c8f382a49 100644 --- a/.buildkite/pipelines/pull_request/security_solution/entity_analytics.yml +++ b/.buildkite/pipelines/pull_request/security_solution/entity_analytics.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 3 retry: @@ -25,9 +27,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 2 retry: diff --git a/.buildkite/pipelines/pull_request/security_solution/explore.yml b/.buildkite/pipelines/pull_request/security_solution/explore.yml index 5fb3ed443e037..3805c8e37f905 100644 --- a/.buildkite/pipelines/pull_request/security_solution/explore.yml +++ b/.buildkite/pipelines/pull_request/security_solution/explore.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 2 retry: @@ -25,9 +27,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 2 retry: diff --git a/.buildkite/pipelines/pull_request/security_solution/investigations.yml b/.buildkite/pipelines/pull_request/security_solution/investigations.yml index c238c8936ad7f..bcabf31f70e8b 100644 --- a/.buildkite/pipelines/pull_request/security_solution/investigations.yml +++ b/.buildkite/pipelines/pull_request/security_solution/investigations.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 7 retry: @@ -25,9 +27,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 8 retry: diff --git a/.buildkite/pipelines/pull_request/security_solution/osquery_cypress.yml b/.buildkite/pipelines/pull_request/security_solution/osquery_cypress.yml index 790d28ff4c472..c2de20aa5975d 100644 --- a/.buildkite/pipelines/pull_request/security_solution/osquery_cypress.yml +++ b/.buildkite/pipelines/pull_request/security_solution/osquery_cypress.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 8 retry: @@ -25,9 +27,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 8 retry: diff --git a/.buildkite/pipelines/pull_request/security_solution/playwright.yml b/.buildkite/pipelines/pull_request/security_solution/playwright.yml index 213021e02ca06..c92506297ea07 100644 --- a/.buildkite/pipelines/pull_request/security_solution/playwright.yml +++ b/.buildkite/pipelines/pull_request/security_solution/playwright.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 1 retry: @@ -25,9 +27,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 1 retry: diff --git a/.buildkite/pipelines/pull_request/security_solution/rule_management.yml b/.buildkite/pipelines/pull_request/security_solution/rule_management.yml index 8e43f0f4530ef..e247dc2972620 100644 --- a/.buildkite/pipelines/pull_request/security_solution/rule_management.yml +++ b/.buildkite/pipelines/pull_request/security_solution/rule_management.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 5 retry: @@ -25,9 +27,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 1 retry: @@ -43,9 +47,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 4 retry: @@ -61,9 +67,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 parallelism: 2 retry: diff --git a/.buildkite/pipelines/pull_request/slo_plugin_e2e.yml b/.buildkite/pipelines/pull_request/slo_plugin_e2e.yml index 3d1a4f9b46f41..2cf1126cf1f5d 100644 --- a/.buildkite/pipelines/pull_request/slo_plugin_e2e.yml +++ b/.buildkite/pipelines/pull_request/slo_plugin_e2e.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 30 artifact_paths: - 'x-pack/plugins/observability_solution/slo/e2e/.journeys/**/*' diff --git a/.buildkite/pipelines/pull_request/synthetics_plugin.yml b/.buildkite/pipelines/pull_request/synthetics_plugin.yml index f5d6b841a953d..b4079b9fac307 100644 --- a/.buildkite/pipelines/pull_request/synthetics_plugin.yml +++ b/.buildkite/pipelines/pull_request/synthetics_plugin.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 artifact_paths: - 'x-pack/plugins/observability_solution/synthetics/e2e/.journeys/**/*' diff --git a/.buildkite/pipelines/pull_request/uptime_plugin.yml b/.buildkite/pipelines/pull_request/uptime_plugin.yml index a03915ef77099..4c1e05d7476fd 100644 --- a/.buildkite/pipelines/pull_request/uptime_plugin.yml +++ b/.buildkite/pipelines/pull_request/uptime_plugin.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 artifact_paths: - 'x-pack/plugins/observability_solution/synthetics/e2e/.journeys/**/*' diff --git a/.buildkite/pipelines/pull_request/ux_plugin_e2e.yml b/.buildkite/pipelines/pull_request/ux_plugin_e2e.yml index cd95f44fa2e86..4bade14464f35 100644 --- a/.buildkite/pipelines/pull_request/ux_plugin_e2e.yml +++ b/.buildkite/pipelines/pull_request/ux_plugin_e2e.yml @@ -7,9 +7,11 @@ steps: depends_on: - build - quick_checks + - checks - linting - linting_with_types - check_types + - check_oas_snapshot timeout_in_minutes: 60 artifact_paths: - 'x-pack/plugins/observability_solution/ux/e2e/.journeys/**/*' From 9efe20e1e1c25e707d21baf33a6d8fd861697f75 Mon Sep 17 00:00:00 2001 From: Alexi Doak <109488926+doakalexi@users.noreply.github.com> Date: Mon, 4 Nov 2024 11:47:52 -0800 Subject: [PATCH 07/57] [ResponseOps] Remove 7.x deprecated kibana.yml settings (#198435) Resolves https://github.com/elastic/kibana/issues/194622 ## Summary Removes the following deprecated configuration settings: - `xpack.actions.customHostSettings.ssl.rejectUnauthorized` - `xpack.actions.whitelistedHosts` - `xpack.actions.rejectUnauthorized` - `xpack.actions.proxyRejectUnauthorizedCertificates` - `xpack.alerts.healthCheck` - `xpack.alerts.invalidateApiKeysTask.interval` - `xpack.alerts.invalidateApiKeysTask.removalDelay` - `xpack.alerting.defaultRuleTaskTimeout` --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- docs/settings/alert-action-settings.asciidoc | 14 --- .../resources/base/bin/kibana-docker | 6 -- .../actions_client/actions_client.test.ts | 2 - .../actions/server/actions_config.test.ts | 21 ---- .../plugins/actions/server/actions_config.ts | 8 +- x-pack/plugins/actions/server/config.test.ts | 8 -- x-pack/plugins/actions/server/config.ts | 12 --- x-pack/plugins/actions/server/index.test.ts | 61 ----------- x-pack/plugins/actions/server/index.ts | 100 +----------------- .../axios_utils_connection.test.ts | 3 - .../axios_utils_proxy.test.ts | 3 - .../server/lib/custom_host_settings.test.ts | 13 --- .../actions/server/lib/get_custom_agents.ts | 5 +- x-pack/plugins/actions/server/plugin.test.ts | 6 -- x-pack/plugins/actions/tsconfig.json | 1 - x-pack/plugins/alerting/server/index.ts | 14 --- .../connector_types/email/send_email.test.ts | 5 +- .../connector_types/email/send_email.ts | 5 +- .../alerting_api_integration/common/config.ts | 3 - .../actions/connector_types/stack/webhook.ts | 18 ---- .../actions/connector_types/stack/webhook.ts | 18 ---- 21 files changed, 6 insertions(+), 320 deletions(-) delete mode 100644 x-pack/plugins/actions/server/index.test.ts diff --git a/docs/settings/alert-action-settings.asciidoc b/docs/settings/alert-action-settings.asciidoc index db36248ef194f..e0fa3f0aab860 100644 --- a/docs/settings/alert-action-settings.asciidoc +++ b/docs/settings/alert-action-settings.asciidoc @@ -112,11 +112,6 @@ A boolean value indicating that TLS must be used for this connection. The options `smtp.ignoreTLS` and `smtp.requireTLS` can not both be set to true. Default: `false`. -`xpack.actions.customHostSettings[n].ssl.rejectUnauthorized`:: -deprecated:[8.0.0] Use <> instead. A boolean value indicating whether to bypass server certificate validation. -Overrides the general `xpack.actions.rejectUnauthorized` configuration -for requests made for this hostname/port. - [[action-config-custom-host-verification-mode]] `xpack.actions.customHostSettings[n].ssl.verificationMode` {ess-icon}:: Controls the verification of the server certificate that {kib} receives when making an outbound SSL/TLS connection to the host server. Valid values are `full`, `certificate`, and `none`. Use `full` to perform hostname verification, `certificate` to skip hostname verification, and `none` to skip verification. Default: `full`. <>. Overrides the general `xpack.actions.ssl.verificationMode` configuration @@ -198,19 +193,10 @@ By default, no hosts will use the proxy, but if an action's hostname is in this `xpack.actions.proxyHeaders` {ess-icon}:: Specifies HTTP headers for the proxy, if using a proxy for actions. Default: {}. -`xpack.actions.proxyRejectUnauthorizedCertificates` {ess-icon}:: -deprecated:[8.0.0] Use <> instead. Set to `false` to bypass certificate validation for the proxy, if using a proxy for actions. Default: `true`. - [[action-config-proxy-verification-mode]]`xpack.actions.ssl.proxyVerificationMode` {ess-icon}:: Controls the verification for the proxy server certificate that Kibana receives when making an outbound SSL/TLS connection to the proxy server. Valid values are `full`, `certificate`, and `none`. Use `full` to perform hostname verification, `certificate` to skip hostname verification, and `none` to skip verification. Default: `full`. <>. -`xpack.actions.rejectUnauthorized` {ess-icon}:: -deprecated:[8.0.0] Use <> instead. Set to `false` to bypass certificate validation for actions. Default: `true`. -+ -As an alternative to setting `xpack.actions.rejectUnauthorized`, you can use the setting -`xpack.actions.customHostSettings` to set SSL options for specific servers. - [[action-config-verification-mode]] `xpack.actions.ssl.verificationMode` {ess-icon}:: Controls the verification for the server certificate that {hosted-ems} receives when making an outbound SSL/TLS connection for actions. Valid values are `full`, `certificate`, and `none`. Use `full` to perform hostname verification, `certificate` to skip hostname verification, and `none` to skip verification. Default: `full`. <>. diff --git a/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker b/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker index fbe64258a5704..b814538466d73 100755 --- a/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker +++ b/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker @@ -221,16 +221,13 @@ kibana_vars=( xpack.actions.proxyBypassHosts xpack.actions.proxyHeaders xpack.actions.proxyOnlyHosts - xpack.actions.proxyRejectUnauthorizedCertificates xpack.actions.proxyUrl - xpack.actions.rejectUnauthorized xpack.actions.responseTimeout xpack.actions.ssl.proxyVerificationMode xpack.actions.ssl.verificationMode xpack.alerting.healthCheck.interval xpack.alerting.invalidateApiKeysTask.interval xpack.alerting.invalidateApiKeysTask.removalDelay - xpack.alerting.defaultRuleTaskTimeout xpack.alerting.rules.run.timeout xpack.alerting.rules.run.ruleTypeOverrides xpack.alerting.cancelAlertsOnRuleTimeout @@ -240,9 +237,6 @@ kibana_vars=( xpack.alerting.rules.run.alerts.max xpack.alerting.rules.run.actions.connectorTypeOverrides xpack.alerting.maxScheduledPerMinute - xpack.alerts.healthCheck.interval - xpack.alerts.invalidateApiKeysTask.interval - xpack.alerts.invalidateApiKeysTask.removalDelay xpack.apm.indices.error xpack.apm.indices.metric xpack.apm.indices.onboarding diff --git a/x-pack/plugins/actions/server/actions_client/actions_client.test.ts b/x-pack/plugins/actions/server/actions_client/actions_client.test.ts index 3421e381d07b6..99bcbf15ecfb9 100644 --- a/x-pack/plugins/actions/server/actions_client/actions_client.test.ts +++ b/x-pack/plugins/actions/server/actions_client/actions_client.test.ts @@ -575,8 +575,6 @@ describe('create()', () => { allowedHosts: ['*'], preconfiguredAlertHistoryEsIndex: false, preconfigured: {}, - proxyRejectUnauthorizedCertificates: true, // legacy - rejectUnauthorized: true, // legacy proxyBypassHosts: undefined, proxyOnlyHosts: undefined, maxResponseContentLength: new ByteSizeValue(1000000), diff --git a/x-pack/plugins/actions/server/actions_config.test.ts b/x-pack/plugins/actions/server/actions_config.test.ts index 2b5c4efc283b6..ce16aca508af6 100644 --- a/x-pack/plugins/actions/server/actions_config.test.ts +++ b/x-pack/plugins/actions/server/actions_config.test.ts @@ -30,8 +30,6 @@ const defaultActionsConfig: ActionsConfig = { enabledActionTypes: [], preconfiguredAlertHistoryEsIndex: false, preconfigured: {}, - proxyRejectUnauthorizedCertificates: true, // legacy - rejectUnauthorized: true, // legacy maxResponseContentLength: new ByteSizeValue(1000000), responseTimeout: moment.duration(60000), ssl: { @@ -318,25 +316,6 @@ describe('getProxySettings', () => { expect(proxySettings?.proxyUrl).toBe(config.proxyUrl); }); - test('returns proper verificationMode values, beased on the legacy config option proxyRejectUnauthorizedCertificates', () => { - const configTrue: ActionsConfig = { - ...defaultActionsConfig, - proxyUrl: 'https://proxy.elastic.co', - proxyRejectUnauthorizedCertificates: true, - }; - let proxySettings = getActionsConfigurationUtilities(configTrue).getProxySettings(); - expect(proxySettings?.proxySSLSettings.verificationMode).toBe('full'); - - const configFalse: ActionsConfig = { - ...defaultActionsConfig, - proxyUrl: 'https://proxy.elastic.co', - proxyRejectUnauthorizedCertificates: false, - ssl: {}, - }; - proxySettings = getActionsConfigurationUtilities(configFalse).getProxySettings(); - expect(proxySettings?.proxySSLSettings.verificationMode).toBe('none'); - }); - test('returns proper verificationMode value, based on the SSL proxy configuration', () => { const configTrue: ActionsConfig = { ...defaultActionsConfig, diff --git a/x-pack/plugins/actions/server/actions_config.ts b/x-pack/plugins/actions/server/actions_config.ts index e77c0528d16a1..30c96b4b6a998 100644 --- a/x-pack/plugins/actions/server/actions_config.ts +++ b/x-pack/plugins/actions/server/actions_config.ts @@ -122,10 +122,7 @@ function getProxySettingsFromConfig(config: ActionsConfig): undefined | ProxySet proxyBypassHosts: arrayAsSet(config.proxyBypassHosts), proxyOnlyHosts: arrayAsSet(config.proxyOnlyHosts), proxyHeaders: config.proxyHeaders, - proxySSLSettings: getSSLSettingsFromConfig( - config.ssl?.proxyVerificationMode, - config.proxyRejectUnauthorizedCertificates - ), + proxySSLSettings: getSSLSettingsFromConfig(config.ssl?.proxyVerificationMode), }; } @@ -200,8 +197,7 @@ export function getActionsConfigurationUtilities( isActionTypeEnabled, getProxySettings: () => getProxySettingsFromConfig(config), getResponseSettings: () => getResponseSettingsFromConfig(config), - getSSLSettings: () => - getSSLSettingsFromConfig(config.ssl?.verificationMode, config.rejectUnauthorized), + getSSLSettings: () => getSSLSettingsFromConfig(config.ssl?.verificationMode), ensureUriAllowed(uri: string) { if (!isUriAllowed(uri)) { throw new Error(allowListErrorMessage(AllowListingField.URL, uri)); diff --git a/x-pack/plugins/actions/server/config.test.ts b/x-pack/plugins/actions/server/config.test.ts index 4034fc5cb50b5..01bcd867fda53 100644 --- a/x-pack/plugins/actions/server/config.test.ts +++ b/x-pack/plugins/actions/server/config.test.ts @@ -35,8 +35,6 @@ describe('config validation', () => { "microsoftGraphApiUrl": "https://graph.microsoft.com/v1.0", "preconfigured": Object {}, "preconfiguredAlertHistoryEsIndex": false, - "proxyRejectUnauthorizedCertificates": true, - "rejectUnauthorized": true, "responseTimeout": "PT1M", "usage": Object { "url": "https://usage-api.usage-api/api/v1/usage", @@ -56,8 +54,6 @@ describe('config validation', () => { }, }, }, - proxyRejectUnauthorizedCertificates: false, - rejectUnauthorized: false, }; expect(configSchema.validate(config)).toMatchInlineSnapshot(` Object { @@ -85,8 +81,6 @@ describe('config validation', () => { }, }, "preconfiguredAlertHistoryEsIndex": false, - "proxyRejectUnauthorizedCertificates": false, - "rejectUnauthorized": false, "responseTimeout": "PT1M", "usage": Object { "url": "https://usage-api.usage-api/api/v1/usage", @@ -224,8 +218,6 @@ describe('config validation', () => { "microsoftGraphApiUrl": "https://graph.microsoft.com/v1.0", "preconfigured": Object {}, "preconfiguredAlertHistoryEsIndex": false, - "proxyRejectUnauthorizedCertificates": true, - "rejectUnauthorized": true, "responseTimeout": "PT1M", "ssl": Object { "proxyVerificationMode": "none", diff --git a/x-pack/plugins/actions/server/config.ts b/x-pack/plugins/actions/server/config.ts index f475c05424df4..f16a9830678cd 100644 --- a/x-pack/plugins/actions/server/config.ts +++ b/x-pack/plugins/actions/server/config.ts @@ -44,10 +44,6 @@ const customHostSettingsSchema = schema.object({ ), ssl: schema.maybe( schema.object({ - /** - * @deprecated in favor of `verificationMode` - **/ - rejectUnauthorized: schema.maybe(schema.boolean()), verificationMode: schema.maybe( schema.oneOf( [schema.literal('none'), schema.literal('certificate'), schema.literal('full')], @@ -98,16 +94,8 @@ export const configSchema = schema.object({ }), proxyUrl: schema.maybe(schema.string()), proxyHeaders: schema.maybe(schema.recordOf(schema.string(), schema.string())), - /** - * @deprecated in favor of `ssl.proxyVerificationMode` - **/ - proxyRejectUnauthorizedCertificates: schema.boolean({ defaultValue: true }), proxyBypassHosts: schema.maybe(schema.arrayOf(schema.string({ hostname: true }))), proxyOnlyHosts: schema.maybe(schema.arrayOf(schema.string({ hostname: true }))), - /** - * @deprecated in favor of `ssl.verificationMode` - **/ - rejectUnauthorized: schema.boolean({ defaultValue: true }), ssl: schema.maybe( schema.object({ verificationMode: schema.maybe( diff --git a/x-pack/plugins/actions/server/index.test.ts b/x-pack/plugins/actions/server/index.test.ts deleted file mode 100644 index 43f69da15de2f..0000000000000 --- a/x-pack/plugins/actions/server/index.test.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { config } from '.'; -import { applyDeprecations, configDeprecationFactory } from '@kbn/config'; -import { configDeprecationsMock } from '@kbn/core/server/mocks'; - -const CONFIG_PATH = 'xpack.actions'; -const applyStackAlertDeprecations = (settings: Record = {}) => { - const deprecations = config.deprecations!(configDeprecationFactory); - const deprecationMessages: string[] = []; - const _config = { - [CONFIG_PATH]: settings, - }; - const { config: migrated, changedPaths } = applyDeprecations( - _config, - deprecations.map((deprecation) => ({ - deprecation, - path: CONFIG_PATH, - context: configDeprecationsMock.createContext(), - })), - () => - ({ message }) => - deprecationMessages.push(message) - ); - return { - messages: deprecationMessages, - migrated, - changedPaths, - }; -}; - -describe('index', () => { - describe('deprecations', () => { - it('should properly unset deprecated configs', () => { - const { messages, changedPaths } = applyStackAlertDeprecations({ - customHostSettings: [{ ssl: { rejectUnauthorized: false } }], - rejectUnauthorized: false, - proxyRejectUnauthorizedCertificates: false, - }); - expect(changedPaths.unset).toStrictEqual([ - 'xpack.actions.customHostSettings.ssl.rejectUnauthorized', - 'xpack.actions.rejectUnauthorized', - 'xpack.actions.proxyRejectUnauthorizedCertificates', - ]); - expect(messages.length).toBe(3); - expect(messages[0]).toBe( - '"xpack.actions.customHostSettings[].ssl.rejectUnauthorized" is deprecated.Use "xpack.actions.customHostSettings[].ssl.verificationMode" instead, with the setting "verificationMode:full" eql to "rejectUnauthorized:true", and "verificationMode:none" eql to "rejectUnauthorized:false".' - ); - expect(messages[1]).toBe( - '"xpack.actions.rejectUnauthorized" is deprecated. Use "xpack.actions.ssl.verificationMode" instead, with the setting "verificationMode:full" eql to "rejectUnauthorized:true", and "verificationMode:none" eql to "rejectUnauthorized:false".' - ); - expect(messages[2]).toBe( - '"xpack.actions.proxyRejectUnauthorizedCertificates" is deprecated. Use "xpack.actions.ssl.proxyVerificationMode" instead, with the setting "proxyVerificationMode:full" eql to "rejectUnauthorized:true",and "proxyVerificationMode:none" eql to "rejectUnauthorized:false".' - ); - }); - }); -}); diff --git a/x-pack/plugins/actions/server/index.ts b/x-pack/plugins/actions/server/index.ts index 1d5aa22ba07cf..d391911ff0fc3 100644 --- a/x-pack/plugins/actions/server/index.ts +++ b/x-pack/plugins/actions/server/index.ts @@ -4,10 +4,9 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { get } from 'lodash'; import type { PublicMethodsOf } from '@kbn/utility-types'; import { PluginInitializerContext, PluginConfigDescriptor } from '@kbn/core/server'; -import { configSchema, ActionsConfig, CustomHostSettings } from './config'; +import { configSchema, ActionsConfig } from './config'; import { ActionsClient as ActionsClientClass } from './actions_client'; import { ActionsAuthorization as ActionsAuthorizationClass } from './authorization/actions_authorization'; @@ -51,103 +50,6 @@ export const config: PluginConfigDescriptor = { exposeToBrowser: { email: { domain_allowlist: true }, }, - deprecations: ({ renameFromRoot, unused }) => [ - renameFromRoot('xpack.actions.whitelistedHosts', 'xpack.actions.allowedHosts', { - level: 'warning', - }), - (settings, fromPath, addDeprecation) => { - const actions = get(settings, fromPath); - const customHostSettings = actions?.customHostSettings ?? []; - if ( - customHostSettings.find( - (customHostSchema: CustomHostSettings) => - Object.hasOwn(customHostSchema, 'ssl') && - Object.hasOwn(customHostSchema.ssl ?? {}, 'rejectUnauthorized') - ) - ) { - addDeprecation({ - level: 'warning', - configPath: 'xpack.actions.customHostSettings.ssl.rejectUnauthorized', - message: - `"xpack.actions.customHostSettings[].ssl.rejectUnauthorized" is deprecated.` + - `Use "xpack.actions.customHostSettings[].ssl.verificationMode" instead, ` + - `with the setting "verificationMode:full" eql to "rejectUnauthorized:true", ` + - `and "verificationMode:none" eql to "rejectUnauthorized:false".`, - correctiveActions: { - manualSteps: [ - `Remove "xpack.actions.customHostSettings[].ssl.rejectUnauthorized" from your kibana configs.`, - `Use "xpack.actions.customHostSettings[].ssl.verificationMode" ` + - `with the setting "verificationMode:full" eql to "rejectUnauthorized:true", ` + - `and "verificationMode:none" eql to "rejectUnauthorized:false".`, - ], - }, - }); - return { - unset: [ - { - path: `xpack.actions.customHostSettings.ssl.rejectUnauthorized`, - }, - ], - }; - } - }, - (settings, fromPath, addDeprecation) => { - const actions = get(settings, fromPath); - if (Object.hasOwn(actions ?? {}, 'rejectUnauthorized')) { - addDeprecation({ - level: 'warning', - configPath: `${fromPath}.rejectUnauthorized`, - message: - `"xpack.actions.rejectUnauthorized" is deprecated. Use "xpack.actions.ssl.verificationMode" instead, ` + - `with the setting "verificationMode:full" eql to "rejectUnauthorized:true", ` + - `and "verificationMode:none" eql to "rejectUnauthorized:false".`, - correctiveActions: { - manualSteps: [ - `Remove "xpack.actions.rejectUnauthorized" from your kibana configs.`, - `Use "xpack.actions.ssl.verificationMode" ` + - `with the setting "verificationMode:full" eql to "rejectUnauthorized:true", ` + - `and "verificationMode:none" eql to "rejectUnauthorized:false".`, - ], - }, - }); - return { - unset: [ - { - path: `xpack.actions.rejectUnauthorized`, - }, - ], - }; - } - }, - (settings, fromPath, addDeprecation) => { - const actions = get(settings, fromPath); - if (Object.hasOwn(actions ?? {}, 'proxyRejectUnauthorizedCertificates')) { - addDeprecation({ - level: 'warning', - configPath: `${fromPath}.proxyRejectUnauthorizedCertificates`, - message: - `"xpack.actions.proxyRejectUnauthorizedCertificates" is deprecated. Use "xpack.actions.ssl.proxyVerificationMode" instead, ` + - `with the setting "proxyVerificationMode:full" eql to "rejectUnauthorized:true",` + - `and "proxyVerificationMode:none" eql to "rejectUnauthorized:false".`, - correctiveActions: { - manualSteps: [ - `Remove "xpack.actions.proxyRejectUnauthorizedCertificates" from your kibana configs.`, - `Use "xpack.actions.ssl.proxyVerificationMode" ` + - `with the setting "proxyVerificationMode:full" eql to "rejectUnauthorized:true",` + - `and "proxyVerificationMode:none" eql to "rejectUnauthorized:false".`, - ], - }, - }); - return { - unset: [ - { - path: `xpack.actions.proxyRejectUnauthorizedCertificates`, - }, - ], - }; - } - }, - ], }; export { urlAllowListValidator } from './sub_action_framework/helpers'; diff --git a/x-pack/plugins/actions/server/integration_tests/axios_utils_connection.test.ts b/x-pack/plugins/actions/server/integration_tests/axios_utils_connection.test.ts index 3a4101bb9f152..a0454cb2bbc18 100644 --- a/x-pack/plugins/actions/server/integration_tests/axios_utils_connection.test.ts +++ b/x-pack/plugins/actions/server/integration_tests/axios_utils_connection.test.ts @@ -461,7 +461,6 @@ async function rejectUnauthorizedTargetProxyTest(opts: RunTestOptions) { await runWithSetup(opts, async (target, proxyInstance, axiosDefaults) => { const acu = getACUfromConfig({ proxyUrl: proxyInstance.url, - rejectUnauthorized: false, customHostSettings: [{ url: target.url, ssl: { verificationMode: 'none' } }], }); @@ -676,14 +675,12 @@ const BaseActionsConfig: ActionsConfig = { preconfigured: {}, proxyUrl: undefined, proxyHeaders: undefined, - proxyRejectUnauthorizedCertificates: true, ssl: { proxyVerificationMode: 'full', verificationMode: 'full', }, proxyBypassHosts: undefined, proxyOnlyHosts: undefined, - rejectUnauthorized: true, maxResponseContentLength: ByteSizeValue.parse('1mb'), responseTimeout: momentDuration(1000 * 30), customHostSettings: undefined, diff --git a/x-pack/plugins/actions/server/integration_tests/axios_utils_proxy.test.ts b/x-pack/plugins/actions/server/integration_tests/axios_utils_proxy.test.ts index 1c1d411111253..97a917d6b6893 100644 --- a/x-pack/plugins/actions/server/integration_tests/axios_utils_proxy.test.ts +++ b/x-pack/plugins/actions/server/integration_tests/axios_utils_proxy.test.ts @@ -366,7 +366,6 @@ async function rejectUnauthorizedTargetProxyTest(opts: RunTestOptions) { await runWithSetup(opts, async (target, proxyInstance, axiosDefaults) => { const acu = getACUfromConfig({ proxyUrl: proxyInstance.url, - rejectUnauthorized: false, customHostSettings: [{ url: target.url, ssl: { verificationMode: 'none' } }], }); @@ -582,14 +581,12 @@ const BaseActionsConfig: ActionsConfig = { preconfigured: {}, proxyUrl: undefined, proxyHeaders: undefined, - proxyRejectUnauthorizedCertificates: true, ssl: { proxyVerificationMode: 'full', verificationMode: 'full', }, proxyBypassHosts: undefined, proxyOnlyHosts: undefined, - rejectUnauthorized: true, maxResponseContentLength: ByteSizeValue.parse('1mb'), responseTimeout: momentDuration(1000 * 30), customHostSettings: undefined, diff --git a/x-pack/plugins/actions/server/lib/custom_host_settings.test.ts b/x-pack/plugins/actions/server/lib/custom_host_settings.test.ts index 0a9d9c6df31e7..f9173f5e007d0 100644 --- a/x-pack/plugins/actions/server/lib/custom_host_settings.test.ts +++ b/x-pack/plugins/actions/server/lib/custom_host_settings.test.ts @@ -74,8 +74,6 @@ describe('custom_host_settings', () => { enabledActionTypes: [], preconfiguredAlertHistoryEsIndex: false, preconfigured: {}, - proxyRejectUnauthorizedCertificates: true, - rejectUnauthorized: true, maxResponseContentLength: new ByteSizeValue(1000000), responseTimeout: moment.duration(60000), enableFooterInEmail: true, @@ -119,14 +117,12 @@ describe('custom_host_settings', () => { url: 'https://elastic.co:443', ssl: { certificateAuthoritiesData: 'xyz', - rejectUnauthorized: false, }, }, { url: 'smtp://mail.elastic.com:25', ssl: { certificateAuthoritiesData: 'abc', - rejectUnauthorized: true, }, smtp: { ignoreTLS: true, @@ -473,15 +469,9 @@ describe('custom_host_settings', () => { customHostSettings: [ { url: 'https://almost.purrfect.com/', - ssl: { - rejectUnauthorized: true, - }, }, { url: 'https://almost.purrfect.com:443', - ssl: { - rejectUnauthorized: false, - }, }, ], }; @@ -491,9 +481,6 @@ describe('custom_host_settings', () => { customHostSettings: [ { url: 'https://almost.purrfect.com:443', - ssl: { - rejectUnauthorized: true, - }, }, ], }; diff --git a/x-pack/plugins/actions/server/lib/get_custom_agents.ts b/x-pack/plugins/actions/server/lib/get_custom_agents.ts index 26b1495902eb1..c433bec18a54b 100644 --- a/x-pack/plugins/actions/server/lib/get_custom_agents.ts +++ b/x-pack/plugins/actions/server/lib/get_custom_agents.ts @@ -59,10 +59,7 @@ export function getCustomAgents( agentOptions.ca = sslSettings.certificateAuthoritiesData; } - const sslSettingsFromConfig = getSSLSettingsFromConfig( - sslSettings.verificationMode, - sslSettings.rejectUnauthorized - ); + const sslSettingsFromConfig = getSSLSettingsFromConfig(sslSettings.verificationMode); // see: src/core/server/elasticsearch/legacy/elasticsearch_client_config.ts // This is where the global rejectUnauthorized is overridden by a custom host const customHostNodeSSLOptions = getNodeSSLOptions( diff --git a/x-pack/plugins/actions/server/plugin.test.ts b/x-pack/plugins/actions/server/plugin.test.ts index 4ff87aa0459ef..f5de52810b162 100644 --- a/x-pack/plugins/actions/server/plugin.test.ts +++ b/x-pack/plugins/actions/server/plugin.test.ts @@ -50,10 +50,8 @@ function getConfig(overrides = {}) { secrets: {}, }, }, - proxyRejectUnauthorizedCertificates: true, proxyBypassHosts: undefined, proxyOnlyHosts: undefined, - rejectUnauthorized: true, maxResponseContentLength: new ByteSizeValue(1000000), responseTimeout: moment.duration('60s'), enableFooterInEmail: true, @@ -80,8 +78,6 @@ describe('Actions Plugin', () => { allowedHosts: ['*'], preconfiguredAlertHistoryEsIndex: false, preconfigured: {}, - proxyRejectUnauthorizedCertificates: true, - rejectUnauthorized: true, maxResponseContentLength: new ByteSizeValue(1000000), responseTimeout: moment.duration(60000), enableFooterInEmail: true, @@ -587,8 +583,6 @@ describe('Actions Plugin', () => { secrets: {}, }, }, - proxyRejectUnauthorizedCertificates: true, - rejectUnauthorized: true, maxResponseContentLength: new ByteSizeValue(1000000), responseTimeout: moment.duration(60000), enableFooterInEmail: true, diff --git a/x-pack/plugins/actions/tsconfig.json b/x-pack/plugins/actions/tsconfig.json index 384aba6a6b014..8a3c56a472064 100644 --- a/x-pack/plugins/actions/tsconfig.json +++ b/x-pack/plugins/actions/tsconfig.json @@ -24,7 +24,6 @@ "@kbn/i18n", "@kbn/utility-types", "@kbn/config-schema", - "@kbn/config", "@kbn/core-saved-objects-server", "@kbn/es-query", "@kbn/apm-utils", diff --git a/x-pack/plugins/alerting/server/index.ts b/x-pack/plugins/alerting/server/index.ts index 2f5cd3994e436..2cb2c212a91ba 100644 --- a/x-pack/plugins/alerting/server/index.ts +++ b/x-pack/plugins/alerting/server/index.ts @@ -84,20 +84,6 @@ export const config: PluginConfigDescriptor = { rules: { run: { alerts: { max: true } } }, }, deprecations: ({ renameFromRoot, deprecate }) => [ - renameFromRoot('xpack.alerts.healthCheck', 'xpack.alerting.healthCheck', { level: 'warning' }), - renameFromRoot( - 'xpack.alerts.invalidateApiKeysTask.interval', - 'xpack.alerting.invalidateApiKeysTask.interval', - { level: 'warning' } - ), - renameFromRoot( - 'xpack.alerts.invalidateApiKeysTask.removalDelay', - 'xpack.alerting.invalidateApiKeysTask.removalDelay', - { level: 'warning' } - ), - renameFromRoot('xpack.alerting.defaultRuleTaskTimeout', 'xpack.alerting.rules.run.timeout', { - level: 'warning', - }), deprecate('maxEphemeralActionsPerAlert', 'a future version', { level: 'warning', message: `Configuring "xpack.alerting.maxEphemeralActionsPerAlert" is deprecated and will be removed in a future version. Remove this setting to increase action execution resiliency.`, diff --git a/x-pack/plugins/stack_connectors/server/connector_types/email/send_email.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/email/send_email.test.ts index 77de60660a975..de5a94a4c39c9 100644 --- a/x-pack/plugins/stack_connectors/server/connector_types/email/send_email.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/email/send_email.test.ts @@ -758,7 +758,6 @@ describe('send_email module', () => { url: 'smtp://example.com:1025', ssl: { certificateAuthoritiesData: 'ca cert data goes here', - rejectUnauthorized: true, }, smtp: { ignoreTLS: true, @@ -786,7 +785,7 @@ describe('send_email module', () => { "secure": false, "tls": Object { "ca": "ca cert data goes here", - "rejectUnauthorized": true, + "rejectUnauthorized": false, }, }, ] @@ -811,7 +810,6 @@ describe('send_email module', () => { url: 'smtp://example.com:1025', ssl: { certificateAuthoritiesData: 'ca cert data goes here', - rejectUnauthorized: true, }, smtp: { requireTLS: true, @@ -837,7 +835,6 @@ describe('send_email module', () => { "secure": false, "tls": Object { "ca": "ca cert data goes here", - "rejectUnauthorized": true, }, }, ] diff --git a/x-pack/plugins/stack_connectors/server/connector_types/email/send_email.ts b/x-pack/plugins/stack_connectors/server/connector_types/email/send_email.ts index 199d96f352389..06ae036f40b2c 100644 --- a/x-pack/plugins/stack_connectors/server/connector_types/email/send_email.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/email/send_email.ts @@ -289,10 +289,7 @@ function getTransportConfig( tlsConfig.ca = sslSettings?.certificateAuthoritiesData; } - const sslSettingsFromConfig = getSSLSettingsFromConfig( - sslSettings?.verificationMode, - sslSettings?.rejectUnauthorized - ); + const sslSettingsFromConfig = getSSLSettingsFromConfig(sslSettings?.verificationMode); const nodeTLSOptions = getNodeSSLOptions(logger, sslSettingsFromConfig.verificationMode); if (!transportConfig.tls) { transportConfig.tls = { ...tlsConfig, ...nodeTLSOptions }; diff --git a/x-pack/test/alerting_api_integration/common/config.ts b/x-pack/test/alerting_api_integration/common/config.ts index 3ff3def3f4b70..b8a576f99b8d0 100644 --- a/x-pack/test/alerting_api_integration/common/config.ts +++ b/x-pack/test/alerting_api_integration/common/config.ts @@ -88,7 +88,6 @@ export function createTestConfig(name: string, options: CreateTestConfigOptions) verificationMode = 'full', preconfiguredAlertHistoryEsIndex = false, customizeLocalHostSsl = false, - rejectUnauthorized = true, // legacy emailDomainsAllowed = undefined, testFiles = undefined, reportName = undefined, @@ -128,7 +127,6 @@ export function createTestConfig(name: string, options: CreateTestConfigOptions) ? [ `--xpack.actions.proxyUrl=http://localhost:${proxyPort}`, `--xpack.actions.proxyOnlyHosts=${JSON.stringify(proxyHosts)}`, - '--xpack.actions.proxyRejectUnauthorizedCertificates=false', ] : [ `--xpack.actions.proxyUrl=http://elastic.co`, @@ -212,7 +210,6 @@ export function createTestConfig(name: string, options: CreateTestConfigOptions) `--xpack.alerting.enableFrameworkAlerts=true`, `--xpack.alerting.rulesSettings.cacheInterval=10000`, `--xpack.actions.enabledActionTypes=${JSON.stringify(enabledActionTypes)}`, - `--xpack.actions.rejectUnauthorized=${rejectUnauthorized}`, `--xpack.actions.microsoftGraphApiUrl=${servers.kibana.protocol}://${servers.kibana.hostname}:${servers.kibana.port}/api/_actions-FTS-external-service-simulators/exchange/users/test@/sendMail`, `--xpack.actions.ssl.verificationMode=${verificationMode}`, ...actionsProxyUrl, diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/actions/connector_types/stack/webhook.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/connector_types/stack/webhook.ts index 03cdc6b966a75..d25ac1a5f135f 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/actions/connector_types/stack/webhook.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/connector_types/stack/webhook.ts @@ -100,24 +100,6 @@ export default function webhookTest({ getService }: FtrProviderContext) { }); describe('ssl customization', () => { - it('should handle the xpack.actions.rejectUnauthorized: false', async () => { - const connectorId = 'custom.ssl.noCustom'; - const port = await getPortOfConnector(connectorId); - const server = await createTlsWebhookServer(port); - const { status, body } = await supertest - .post(`/api/actions/connector/${connectorId}/_execute`) - .set('kbn-xsrf', 'test') - .send({ - params: { - body: 'foo', - }, - }); - expect(status).to.eql(200); - server.close(); - - expect(body.status).to.eql('ok'); - }); - it('should handle the customized rejectUnauthorized: false', async () => { const connectorId = 'custom.ssl.rejectUnauthorizedFalse'; const port = await getPortOfConnector(connectorId); diff --git a/x-pack/test/alerting_api_integration/spaces_only_legacy/tests/actions/connector_types/stack/webhook.ts b/x-pack/test/alerting_api_integration/spaces_only_legacy/tests/actions/connector_types/stack/webhook.ts index d0865e5160fe5..b1d56f600585d 100644 --- a/x-pack/test/alerting_api_integration/spaces_only_legacy/tests/actions/connector_types/stack/webhook.ts +++ b/x-pack/test/alerting_api_integration/spaces_only_legacy/tests/actions/connector_types/stack/webhook.ts @@ -126,24 +126,6 @@ export default function webhookTest({ getService }: FtrProviderContext) { }); describe('ssl customization', () => { - it('should handle the xpack.actions.rejectUnauthorized: false', async () => { - const connectorId = 'custom.ssl.noCustom'; - const port = await getPortOfConnector(connectorId); - const server = await createTlsWebhookServer(port); - const { status, body } = await supertest - .post(`/api/actions/connector/${connectorId}/_execute`) - .set('kbn-xsrf', 'test') - .send({ - params: { - body: 'foo', - }, - }); - expect(status).to.eql(200); - server.close(); - - expect(body.status).to.eql('ok'); - }); - it('should handle the customized rejectUnauthorized: false', async () => { const connectorId = 'custom.ssl.rejectUnauthorizedFalse'; const port = await getPortOfConnector(connectorId); From 2de0e05af2d73e6fb319479368e03f69658d1673 Mon Sep 17 00:00:00 2001 From: Jason Rhodes Date: Mon, 4 Nov 2024 15:13:15 -0500 Subject: [PATCH 08/57] Update CODEOWNERS for @kbn/typed-react-router-config (#198569) Removes obs-ux-management and replaces with obx-ux-infra_services-team, based on this count of imports for this package: ``` 4 observability_ai_assistant_app 38 apm 1 ux 12 profiling 5 inventory 5 observability_ai_assistant_management ``` Got these stats with these two steps: ```sh ag -Q "@kbn/typed-react-router-config" --ignore="*target*" --ignore="*tsconfig.json" -c ./x-pack/plugins | tee typed-react-router-config-USAGE.log cat typed-react-router-config-USAGE.log | cut -d "/" -f 4-4 | uniq -c ``` --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Elastic Machine --- .github/CODEOWNERS | 2 +- packages/kbn-typed-react-router-config/kibana.jsonc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 0498e01164700..523e860db1491 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -954,7 +954,7 @@ packages/kbn-triggers-actions-ui-types @elastic/response-ops packages/kbn-try-in-console @elastic/search-kibana packages/kbn-ts-projects @elastic/kibana-operations packages/kbn-ts-type-check-cli @elastic/kibana-operations -packages/kbn-typed-react-router-config @elastic/obs-knowledge-team @elastic/obs-ux-management-team +packages/kbn-typed-react-router-config @elastic/obs-knowledge-team @elastic/obs-ux-infra_services-team packages/kbn-ui-actions-browser @elastic/appex-sharedux x-pack/examples/ui_actions_enhanced_examples @elastic/appex-sharedux src/plugins/ui_actions_enhanced @elastic/appex-sharedux diff --git a/packages/kbn-typed-react-router-config/kibana.jsonc b/packages/kbn-typed-react-router-config/kibana.jsonc index 0462d28238890..c004d263a6046 100644 --- a/packages/kbn-typed-react-router-config/kibana.jsonc +++ b/packages/kbn-typed-react-router-config/kibana.jsonc @@ -1,5 +1,5 @@ { "type": "shared-common", "id": "@kbn/typed-react-router-config", - "owner": ["@elastic/obs-knowledge-team", "@elastic/obs-ux-management-team"] + "owner": ["@elastic/obs-knowledge-team", "@elastic/obs-ux-infra_services-team"] } From 1a100a4f527a0384079c6d4fca876cc5d1e6bb83 Mon Sep 17 00:00:00 2001 From: Jon Date: Mon, 4 Nov 2024 14:36:09 -0600 Subject: [PATCH 09/57] [ci] Remove local SSDs (#198618) There doesn't appear to be much performance benefit from attaching SSDs to these steps https://buildkite.com/elastic/kibana-artifacts-snapshot/builds/4953 --- .buildkite/pipeline-utils/agent_images.ts | 2 +- .buildkite/pipelines/artifacts.yml | 16 ---------------- .../pipelines/chrome_forward_testing.yml | 4 ---- .../verify_es_serverless_image.yml | 2 -- .buildkite/pipelines/on_merge.yml | 4 ---- .buildkite/pipelines/pointer_compression.yml | 4 ---- .../security_solution/cypress_burn.yml | 4 ---- .../security_solution/defend_workflows.yml | 4 ---- .../mki_periodic_defend_workflows.yml | 18 ------------------ .../mki_quality_gate_defend_workflows.yml | 2 -- 10 files changed, 1 insertion(+), 59 deletions(-) diff --git a/.buildkite/pipeline-utils/agent_images.ts b/.buildkite/pipeline-utils/agent_images.ts index a87ea8dca6234..821a0a6b92ecf 100644 --- a/.buildkite/pipeline-utils/agent_images.ts +++ b/.buildkite/pipeline-utils/agent_images.ts @@ -58,7 +58,7 @@ const expandAgentQueue = (queueName: string = 'n2-4-spot') => { const additionalProps = { spot: { preemptible: true }, - virt: { localSsdInterface: 'nvme', enableNestedVirtualization: true, localSsds: 1 }, + virt: { enableNestedVirtualization: true }, }[addition] || {}; return { diff --git a/.buildkite/pipelines/artifacts.yml b/.buildkite/pipelines/artifacts.yml index b6f873ad2bd14..4765077287615 100644 --- a/.buildkite/pipelines/artifacts.yml +++ b/.buildkite/pipelines/artifacts.yml @@ -21,8 +21,6 @@ steps: imageProject: elastic-images-prod provider: gcp enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 timeout_in_minutes: 30 retry: @@ -37,8 +35,6 @@ steps: imageProject: elastic-images-prod provider: gcp enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 timeout_in_minutes: 30 retry: @@ -53,8 +49,6 @@ steps: imageProject: elastic-images-prod provider: gcp enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 timeout_in_minutes: 30 retry: @@ -68,8 +62,6 @@ steps: image: family/kibana-ubuntu-2004 imageProject: elastic-images-prod provider: gcp - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-2 timeout_in_minutes: 30 retry: @@ -83,8 +75,6 @@ steps: image: family/kibana-ubuntu-2004 imageProject: elastic-images-prod provider: gcp - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-2 timeout_in_minutes: 30 retry: @@ -111,8 +101,6 @@ steps: image: family/kibana-ubuntu-2004 imageProject: elastic-images-prod provider: gcp - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-2 timeout_in_minutes: 30 retry: @@ -129,8 +117,6 @@ steps: image: family/kibana-ubuntu-2004 imageProject: elastic-images-prod provider: gcp - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-2 timeout_in_minutes: 60 if: "build.env('RELEASE_BUILD') == null || build.env('RELEASE_BUILD') == '' || build.env('RELEASE_BUILD') == 'false'" @@ -156,7 +142,5 @@ steps: image: family/kibana-ubuntu-2004 imageProject: elastic-images-prod provider: gcp - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-2 timeout_in_minutes: 30 diff --git a/.buildkite/pipelines/chrome_forward_testing.yml b/.buildkite/pipelines/chrome_forward_testing.yml index daf928cf2c162..eb80625a73d77 100644 --- a/.buildkite/pipelines/chrome_forward_testing.yml +++ b/.buildkite/pipelines/chrome_forward_testing.yml @@ -317,8 +317,6 @@ steps: label: 'Defend Workflows Cypress Tests' agents: enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 depends_on: - build @@ -333,8 +331,6 @@ steps: label: 'Defend Workflows Cypress Tests on Serverless' agents: enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 depends_on: - build diff --git a/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml b/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml index 6b72b5af240d2..fa8162ca93c0e 100644 --- a/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml +++ b/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml @@ -206,8 +206,6 @@ steps: imageProject: elastic-images-prod provider: gcp enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 depends_on: build timeout_in_minutes: 60 diff --git a/.buildkite/pipelines/on_merge.yml b/.buildkite/pipelines/on_merge.yml index d5ffcf7067c36..65c7f0095f063 100644 --- a/.buildkite/pipelines/on_merge.yml +++ b/.buildkite/pipelines/on_merge.yml @@ -446,8 +446,6 @@ steps: imageProject: elastic-images-prod provider: gcp enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 timeout_in_minutes: 60 parallelism: 20 @@ -463,8 +461,6 @@ steps: imageProject: elastic-images-prod provider: gcp enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 timeout_in_minutes: 60 parallelism: 14 diff --git a/.buildkite/pipelines/pointer_compression.yml b/.buildkite/pipelines/pointer_compression.yml index 41598b3faed1f..29f0b75ca4184 100644 --- a/.buildkite/pipelines/pointer_compression.yml +++ b/.buildkite/pipelines/pointer_compression.yml @@ -362,8 +362,6 @@ steps: imageProject: elastic-images-prod provider: gcp enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 depends_on: - build @@ -381,8 +379,6 @@ steps: imageProject: elastic-images-prod provider: gcp enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 depends_on: - build diff --git a/.buildkite/pipelines/pull_request/security_solution/cypress_burn.yml b/.buildkite/pipelines/pull_request/security_solution/cypress_burn.yml index 90c20eaca256f..8b2e8e3d09f0d 100644 --- a/.buildkite/pipelines/pull_request/security_solution/cypress_burn.yml +++ b/.buildkite/pipelines/pull_request/security_solution/cypress_burn.yml @@ -3,8 +3,6 @@ steps: label: '[Soft fail] Defend Workflows Cypress Tests, burning changed specs' agents: enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 depends_on: - build @@ -24,8 +22,6 @@ steps: label: '[Soft fail] Defend Workflows Cypress Tests on Serverless, burning changed specs' agents: enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 depends_on: - build diff --git a/.buildkite/pipelines/pull_request/security_solution/defend_workflows.yml b/.buildkite/pipelines/pull_request/security_solution/defend_workflows.yml index 0692c26f57176..7cffb9017b527 100644 --- a/.buildkite/pipelines/pull_request/security_solution/defend_workflows.yml +++ b/.buildkite/pipelines/pull_request/security_solution/defend_workflows.yml @@ -3,8 +3,6 @@ steps: label: 'Defend Workflows Cypress Tests' agents: enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 depends_on: - build @@ -25,8 +23,6 @@ steps: label: 'Defend Workflows Cypress Tests on Serverless' agents: enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 depends_on: - build diff --git a/.buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_defend_workflows.yml b/.buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_defend_workflows.yml index 5795c8f61f30f..5106d619f95e5 100644 --- a/.buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_defend_workflows.yml +++ b/.buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_defend_workflows.yml @@ -10,8 +10,6 @@ steps: imageProject: elastic-images-prod provider: gcp enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 preemptible: true timeout_in_minutes: 300 @@ -32,8 +30,6 @@ steps: # imageProject: elastic-images-prod # provider: gcp # enableNestedVirtualization: true -# localSsds: 1 -# localSsdInterface: nvme # machineType: n2-standard-4 # timeout_in_minutes: 120 # retry: @@ -49,8 +45,6 @@ steps: # imageProject: elastic-images-prod # provider: gcp # enableNestedVirtualization: true -# localSsds: 1 -# localSsdInterface: nvme # machineType: n2-standard-4 # timeout_in_minutes: 120 # retry: @@ -66,8 +60,6 @@ steps: # imageProject: elastic-images-prod # provider: gcp # enableNestedVirtualization: true -# localSsds: 1 -# localSsdInterface: nvme # machineType: n2-standard-4 # timeout_in_minutes: 120 # retry: @@ -83,8 +75,6 @@ steps: # imageProject: elastic-images-prod # provider: gcp # enableNestedVirtualization: true -# localSsds: 1 -# localSsdInterface: nvme # machineType: n2-standard-4 # timeout_in_minutes: 120 # retry: @@ -100,8 +90,6 @@ steps: imageProject: elastic-images-prod provider: gcp enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 preemptible: true timeout_in_minutes: 120 @@ -118,8 +106,6 @@ steps: imageProject: elastic-images-prod provider: gcp enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 preemptible: true timeout_in_minutes: 120 @@ -136,8 +122,6 @@ steps: imageProject: elastic-images-prod provider: gcp enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 preemptible: true timeout_in_minutes: 120 @@ -157,8 +141,6 @@ steps: imageProject: elastic-images-prod provider: gcp enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 preemptible: true timeout_in_minutes: 300 diff --git a/.buildkite/pipelines/security_solution_quality_gate/mki_quality_gate/mki_quality_gate_defend_workflows.yml b/.buildkite/pipelines/security_solution_quality_gate/mki_quality_gate/mki_quality_gate_defend_workflows.yml index e59ca507e4003..3d30e78583409 100644 --- a/.buildkite/pipelines/security_solution_quality_gate/mki_quality_gate/mki_quality_gate_defend_workflows.yml +++ b/.buildkite/pipelines/security_solution_quality_gate/mki_quality_gate/mki_quality_gate_defend_workflows.yml @@ -7,8 +7,6 @@ steps: imageProject: elastic-images-prod provider: gcp enableNestedVirtualization: true - localSsds: 1 - localSsdInterface: nvme machineType: n2-standard-4 timeout_in_minutes: 300 parallelism: 1 From 0aec5a82dbf0e27d1ca7d416e54e028e629f3a1c Mon Sep 17 00:00:00 2001 From: Philippe Oberti Date: Mon, 4 Nov 2024 15:02:07 -0600 Subject: [PATCH 10/57] [Security Solution][Alert Details] - remove flyout tour introduced in 8.14 (#198708) ## Summary We [added](https://github.com/elastic/kibana/pull/180318) a guided tour to the expandable flyout back in `8.14`. It is time to remove it as enough users have seen it. No UI changes other than the tour not showing up. ### How to test - clear local storage (more specifically remove the `securitySolution.documentDetails.newFeaturesTour.v8.14` key - open a alert or event details flyout and verify that the tour does not show up ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios Should help solve https://github.com/elastic/kibana/issues/197492 --- x-pack/plugins/fleet/cypress/tasks/common.ts | 1 - .../osquery/cypress/tasks/navigation.ts | 2 - .../security_solution/common/constants.ts | 1 - .../left/components/tour.test.tsx | 122 ----------- .../document_details/left/components/tour.tsx | 32 --- .../flyout/document_details/left/index.tsx | 2 - .../left/tabs/insights_tab.tsx | 22 +- .../document_details/left/tabs/test_ids.ts | 4 - .../right/components/tour.test.tsx | 125 ----------- .../right/components/tour.tsx | 90 -------- .../flyout/document_details/right/index.tsx | 2 - .../flyout/document_details/right/tabs.tsx | 17 +- .../flyout/document_details/right/test_ids.ts | 1 - .../shared/components/flyout_tour.test.tsx | 117 ---------- .../shared/components/flyout_tour.tsx | 160 -------------- .../shared/components/test_ids.ts | 1 - .../shared/utils/tour_step_config.tsx | 199 ------------------ .../shared/components/flyout_navigation.tsx | 3 +- .../flyout/shared/components/test_ids.ts | 1 - .../translations/translations/fr-FR.json | 19 -- .../translations/translations/ja-JP.json | 19 -- .../translations/translations/zh-CN.json | 20 -- 22 files changed, 14 insertions(+), 946 deletions(-) delete mode 100644 x-pack/plugins/security_solution/public/flyout/document_details/left/components/tour.test.tsx delete mode 100644 x-pack/plugins/security_solution/public/flyout/document_details/left/components/tour.tsx delete mode 100644 x-pack/plugins/security_solution/public/flyout/document_details/right/components/tour.test.tsx delete mode 100644 x-pack/plugins/security_solution/public/flyout/document_details/right/components/tour.tsx delete mode 100644 x-pack/plugins/security_solution/public/flyout/document_details/shared/components/flyout_tour.test.tsx delete mode 100644 x-pack/plugins/security_solution/public/flyout/document_details/shared/components/flyout_tour.tsx delete mode 100644 x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/tour_step_config.tsx diff --git a/x-pack/plugins/fleet/cypress/tasks/common.ts b/x-pack/plugins/fleet/cypress/tasks/common.ts index cf161640bf03f..2bf201b11a498 100644 --- a/x-pack/plugins/fleet/cypress/tasks/common.ts +++ b/x-pack/plugins/fleet/cypress/tasks/common.ts @@ -67,7 +67,6 @@ export const internalRequest = ({ const NEW_FEATURES_TOUR_STORAGE_KEYS = { RULE_MANAGEMENT_PAGE: 'securitySolution.rulesManagementPage.newFeaturesTour.v8.9', TIMELINES: 'securitySolution.security.timelineFlyoutHeader.saveTimelineTour', - FLYOUT: 'securitySolution.documentDetails.newFeaturesTour.v8.14', }; const disableNewFeaturesTours = (window: Window) => { diff --git a/x-pack/plugins/osquery/cypress/tasks/navigation.ts b/x-pack/plugins/osquery/cypress/tasks/navigation.ts index 72107207d7a8c..a0747706ffc15 100644 --- a/x-pack/plugins/osquery/cypress/tasks/navigation.ts +++ b/x-pack/plugins/osquery/cypress/tasks/navigation.ts @@ -45,8 +45,6 @@ export enum NAV_SEARCH_INPUT_OSQUERY_RESULTS { export const NEW_FEATURES_TOUR_STORAGE_KEYS = { RULE_MANAGEMENT_PAGE: 'securitySolution.rulesManagementPage.newFeaturesTour.v8.13', TIMELINES: 'securitySolution.security.timelineFlyoutHeader.saveTimelineTour', - TIMELINE: 'securitySolution.timeline.newFeaturesTour.v8.12', - FLYOUT: 'securitySolution.documentDetails.newFeaturesTour.v8.14', KNOWLEDGE_BASE: 'elasticAssistant.knowledgeBase.newFeaturesTour.v8.16', }; diff --git a/x-pack/plugins/security_solution/common/constants.ts b/x-pack/plugins/security_solution/common/constants.ts index 68aaf7bf9cf04..137afe7ba9112 100644 --- a/x-pack/plugins/security_solution/common/constants.ts +++ b/x-pack/plugins/security_solution/common/constants.ts @@ -424,7 +424,6 @@ export const RULES_TABLE_MAX_PAGE_SIZE = 100; export const NEW_FEATURES_TOUR_STORAGE_KEYS = { RULE_MANAGEMENT_PAGE: 'securitySolution.rulesManagementPage.newFeaturesTour.v8.13', TIMELINES: 'securitySolution.security.timelineFlyoutHeader.saveTimelineTour', - FLYOUT: 'securitySolution.documentDetails.newFeaturesTour.v8.14', }; export const RULE_DETAILS_EXECUTION_LOG_TABLE_SHOW_METRIC_COLUMNS_STORAGE_KEY = diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/tour.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/tour.test.tsx deleted file mode 100644 index bb288b5c7afaa..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/tour.test.tsx +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { render, waitFor, fireEvent } from '@testing-library/react'; -import { LeftPanelTour } from './tour'; -import { DocumentDetailsContext } from '../../shared/context'; -import { mockContextValue } from '../../shared/mocks/mock_context'; -import { - createMockStore, - createSecuritySolutionStorageMock, - TestProviders, -} from '../../../../common/mock'; -import { useKibana as mockUseKibana } from '../../../../common/lib/kibana/__mocks__'; -import { useKibana } from '../../../../common/lib/kibana'; -import { FLYOUT_TOUR_CONFIG_ANCHORS } from '../../shared/utils/tour_step_config'; -import { FLYOUT_TOUR_TEST_ID } from '../../shared/components/test_ids'; -import { useWhichFlyout } from '../../shared/hooks/use_which_flyout'; -import { Flyouts } from '../../shared/constants/flyouts'; - -jest.mock('../../../../common/lib/kibana'); -jest.mock('../../shared/hooks/use_which_flyout'); - -const mockedUseKibana = mockUseKibana(); - -const { storage: storageMock } = createSecuritySolutionStorageMock(); -const mockStore = createMockStore(undefined, undefined, undefined, { - ...storageMock, -}); - -const renderLeftPanelTour = (context: DocumentDetailsContext = mockContextValue) => - render( - - - - {Object.values(FLYOUT_TOUR_CONFIG_ANCHORS).map((i, idx) => ( -
- ))} - - - ); - -describe('', () => { - beforeEach(() => { - (useKibana as jest.Mock).mockReturnValue({ - ...mockedUseKibana, - services: { - ...mockedUseKibana.services, - storage: storageMock, - }, - }); - (useWhichFlyout as jest.Mock).mockReturnValue(Flyouts.securitySolution); - - storageMock.clear(); - }); - - it('should render left panel tour for alerts starting as step 4', async () => { - storageMock.set('securitySolution.documentDetails.newFeaturesTour.v8.14', { - currentTourStep: 4, - isTourActive: true, - }); - - const { getByText, getByTestId } = renderLeftPanelTour(); - await waitFor(() => { - expect(getByTestId(`${FLYOUT_TOUR_TEST_ID}-4`)).toBeVisible(); - }); - fireEvent.click(getByText('Next')); - await waitFor(() => { - expect(getByTestId(`${FLYOUT_TOUR_TEST_ID}-5`)).toBeVisible(); - }); - await waitFor(() => { - expect(getByText('Finish')).toBeVisible(); - }); - }); - - it('should not render left panel tour for preview', () => { - storageMock.set('securitySolution.documentDetails.newFeaturesTour.v8.14', { - currentTourStep: 3, - isTourActive: true, - }); - - const { queryByTestId, queryByText } = renderLeftPanelTour({ - ...mockContextValue, - isPreview: true, - }); - expect(queryByTestId(`${FLYOUT_TOUR_TEST_ID}-4`)).not.toBeInTheDocument(); - expect(queryByText('Next')).not.toBeInTheDocument(); - }); - - it('should not render left panel tour for non-alerts', async () => { - storageMock.set('securitySolution.documentDetails.newFeaturesTour.v8.14', { - currentTourStep: 3, - isTourActive: true, - }); - - const { queryByTestId, queryByText } = renderLeftPanelTour({ - ...mockContextValue, - getFieldsData: () => '', - }); - expect(queryByTestId(`${FLYOUT_TOUR_TEST_ID}-4`)).not.toBeInTheDocument(); - expect(queryByText('Next')).not.toBeInTheDocument(); - }); - - it('should not render left panel tour for flyout in timeline', () => { - (useWhichFlyout as jest.Mock).mockReturnValue(Flyouts.timeline); - storageMock.set('securitySolution.documentDetails.newFeaturesTour.v8.14', { - currentTourStep: 3, - isTourActive: true, - }); - - const { queryByTestId, queryByText } = renderLeftPanelTour({ - ...mockContextValue, - isPreview: true, - }); - expect(queryByTestId(`${FLYOUT_TOUR_TEST_ID}-4`)).not.toBeInTheDocument(); - expect(queryByText('Next')).not.toBeInTheDocument(); - }); -}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/tour.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/tour.tsx deleted file mode 100644 index 196d9113457a3..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/tour.tsx +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { memo, useMemo } from 'react'; -import { useWhichFlyout } from '../../shared/hooks/use_which_flyout'; -import { getField } from '../../shared/utils'; -import { EventKind } from '../../shared/constants/event_kinds'; -import { useDocumentDetailsContext } from '../../shared/context'; -import { getLeftSectionTourSteps } from '../../shared/utils/tour_step_config'; -import { Flyouts } from '../../shared/constants/flyouts'; -import { FlyoutTour } from '../../shared/components/flyout_tour'; - -/** - * Guided tour for the left panel in details flyout - */ -export const LeftPanelTour = memo(() => { - const { getFieldsData, isPreview } = useDocumentDetailsContext(); - const eventKind = getField(getFieldsData('event.kind')); - const isAlert = eventKind === EventKind.signal; - const isTimelineFlyoutOpen = useWhichFlyout() === Flyouts.timeline; - const showTour = isAlert && !isPreview && !isTimelineFlyoutOpen; - - const tourStepContent = useMemo(() => getLeftSectionTourSteps(), []); - - return showTour ? : null; -}); - -LeftPanelTour.displayName = 'LeftPanelTour'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/index.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/index.tsx index 32b0b10d61ffd..56375426c5f68 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/left/index.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/index.tsx @@ -22,7 +22,6 @@ import { getField } from '../shared/utils'; import { EventKind } from '../shared/constants/event_kinds'; import { useDocumentDetailsContext } from '../shared/context'; import type { DocumentDetailsProps } from '../shared/types'; -import { LeftPanelTour } from './components/tour'; export type LeftPanelPaths = 'visualize' | 'insights' | 'investigation' | 'response' | 'notes'; export const LeftPanelVisualizeTab: LeftPanelPaths = 'visualize'; @@ -85,7 +84,6 @@ export const LeftPanel: FC> = memo(({ path }) => { return ( <> - - -
+ ), 'data-test-subj': INSIGHTS_TAB_ENTITIES_BUTTON_TEST_ID, }, @@ -62,12 +58,10 @@ const insightsButtons: EuiButtonGroupOptionProps[] = [ { id: PREVALENCE_TAB_ID, label: ( -
- -
+ ), 'data-test-subj': INSIGHTS_TAB_PREVALENCE_BUTTON_TEST_ID, }, diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/test_ids.ts index 1e99fb63d18a5..eb64c91b2143d 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/test_ids.ts @@ -17,12 +17,8 @@ const INSIGHTS_TAB_TEST_ID = `${PREFIX}InsightsTab` as const; export const INSIGHTS_TAB_BUTTON_GROUP_TEST_ID = `${INSIGHTS_TAB_TEST_ID}ButtonGroup` as const; export const INSIGHTS_TAB_ENTITIES_BUTTON_TEST_ID = `${INSIGHTS_TAB_TEST_ID}EntitiesButton` as const; -export const INSIGHTS_TAB_ENTITIES_BUTTON_LABEL_TEST_ID = - `${INSIGHTS_TAB_TEST_ID}Entities` as const; export const INSIGHTS_TAB_THREAT_INTELLIGENCE_BUTTON_TEST_ID = `${INSIGHTS_TAB_TEST_ID}ThreatIntelligenceButton` as const; -export const INSIGHTS_TAB_PREVALENCE_BUTTON_LABEL_TEST_ID = - `${INSIGHTS_TAB_TEST_ID}Prevalence` as const; export const INSIGHTS_TAB_PREVALENCE_BUTTON_TEST_ID = `${INSIGHTS_TAB_TEST_ID}PrevalenceButton` as const; export const INSIGHTS_TAB_CORRELATIONS_BUTTON_TEST_ID = diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/tour.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/tour.test.tsx deleted file mode 100644 index 20540184156b9..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/tour.test.tsx +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { render, waitFor, fireEvent } from '@testing-library/react'; -import { RightPanelTour } from './tour'; -import { DocumentDetailsContext } from '../../shared/context'; -import { mockContextValue } from '../../shared/mocks/mock_context'; -import { - createMockStore, - createSecuritySolutionStorageMock, - TestProviders, -} from '../../../../common/mock'; -import { useKibana as mockUseKibana } from '../../../../common/lib/kibana/__mocks__'; -import { useKibana } from '../../../../common/lib/kibana'; -import { FLYOUT_TOUR_CONFIG_ANCHORS } from '../../shared/utils/tour_step_config'; -import { FLYOUT_TOUR_TEST_ID } from '../../shared/components/test_ids'; -import { useTourContext } from '../../../../common/components/guided_onboarding_tour/tour'; -import { casesPluginMock } from '@kbn/cases-plugin/public/mocks'; -import { useWhichFlyout } from '../../shared/hooks/use_which_flyout'; -import { Flyouts } from '../../shared/constants/flyouts'; - -jest.mock('../../../../common/lib/kibana'); -jest.mock('../../shared/hooks/use_which_flyout'); -jest.mock('../../../../common/components/guided_onboarding_tour/tour'); - -const mockedUseKibana = mockUseKibana(); - -const { storage: storageMock } = createSecuritySolutionStorageMock(); -const mockStore = createMockStore(undefined, undefined, undefined, { - ...storageMock, -}); -const mockCasesContract = casesPluginMock.createStartContract(); -const mockUseIsAddToCaseOpen = mockCasesContract.hooks.useIsAddToCaseOpen as jest.Mock; -mockUseIsAddToCaseOpen.mockReturnValue(false); - -const renderRightPanelTour = (context: DocumentDetailsContext = mockContextValue) => - render( - - - - {Object.values(FLYOUT_TOUR_CONFIG_ANCHORS).map((i, idx) => ( -
- ))} - - - ); - -describe('', () => { - beforeEach(() => { - (useKibana as jest.Mock).mockReturnValue({ - ...mockedUseKibana, - services: { - ...mockedUseKibana.services, - storage: storageMock, - cases: mockCasesContract, - }, - }); - (useWhichFlyout as jest.Mock).mockReturnValue(Flyouts.securitySolution); - (useTourContext as jest.Mock).mockReturnValue({ isTourShown: jest.fn(() => false) }); - storageMock.clear(); - }); - - it('should render tour for alerts', async () => { - const { getByText, getByTestId } = renderRightPanelTour(); - await waitFor(() => { - expect(getByTestId(`${FLYOUT_TOUR_TEST_ID}-1`)).toBeVisible(); - }); - fireEvent.click(getByText('Next')); - await waitFor(() => { - expect(getByTestId(`${FLYOUT_TOUR_TEST_ID}-2`)).toBeVisible(); - }); - fireEvent.click(getByText('Next')); - await waitFor(() => { - expect(getByTestId(`${FLYOUT_TOUR_TEST_ID}-3`)).toBeVisible(); - }); - fireEvent.click(getByText('Next')); - }); - - it('should not render tour for preview', () => { - const { queryByTestId, queryByText } = renderRightPanelTour({ - ...mockContextValue, - isPreview: true, - }); - expect(queryByTestId(`${FLYOUT_TOUR_TEST_ID}-1`)).not.toBeInTheDocument(); - expect(queryByText('Next')).not.toBeInTheDocument(); - }); - - it('should not render tour when guided onboarding tour is active', () => { - (useTourContext as jest.Mock).mockReturnValue({ isTourShown: jest.fn(() => true) }); - const { queryByText, queryByTestId } = renderRightPanelTour({ - ...mockContextValue, - getFieldsData: () => '', - }); - - expect(queryByTestId(`${FLYOUT_TOUR_TEST_ID}-1`)).not.toBeInTheDocument(); - expect(queryByText('Next')).not.toBeInTheDocument(); - }); - - it('should not render tour when case modal is open', () => { - mockUseIsAddToCaseOpen.mockReturnValue(true); - const { queryByText, queryByTestId } = renderRightPanelTour({ - ...mockContextValue, - getFieldsData: () => '', - }); - - expect(queryByTestId(`${FLYOUT_TOUR_TEST_ID}-1`)).not.toBeInTheDocument(); - expect(queryByText('Next')).not.toBeInTheDocument(); - }); - - it('should not render tour for flyout in timeline', () => { - (useWhichFlyout as jest.Mock).mockReturnValue(Flyouts.timeline); - const { queryByText, queryByTestId } = renderRightPanelTour({ - ...mockContextValue, - getFieldsData: () => '', - }); - - expect(queryByTestId(`${FLYOUT_TOUR_TEST_ID}-1`)).not.toBeInTheDocument(); - expect(queryByText('Next')).not.toBeInTheDocument(); - }); -}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/tour.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/tour.tsx deleted file mode 100644 index 839b77766886a..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/tour.tsx +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { memo, useMemo, useCallback } from 'react'; -import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; -import { useWhichFlyout } from '../../shared/hooks/use_which_flyout'; -import { Flyouts } from '../../shared/constants/flyouts'; -import { useDocumentDetailsContext } from '../../shared/context'; -import { - getRightSectionTourSteps, - getLeftSectionTourSteps, -} from '../../shared/utils/tour_step_config'; -import { getField } from '../../shared/utils'; -import { - DocumentDetailsLeftPanelKey, - DocumentDetailsRightPanelKey, -} from '../../shared/constants/panel_keys'; -import { EventKind } from '../../shared/constants/event_kinds'; -import { useTourContext } from '../../../../common/components/guided_onboarding_tour/tour'; -import { SecurityStepId } from '../../../../common/components/guided_onboarding_tour/tour_config'; -import { useKibana } from '../../../../common/lib/kibana'; -import { FlyoutTour } from '../../shared/components/flyout_tour'; - -/** - * Guided tour for the right panel in details flyout - */ -export const RightPanelTour = memo(() => { - const { useIsAddToCaseOpen } = useKibana().services.cases.hooks; - - const casesFlyoutExpanded = useIsAddToCaseOpen(); - - const { isTourShown: isGuidedOnboardingTourShown } = useTourContext(); - - const { openLeftPanel, openRightPanel } = useExpandableFlyoutApi(); - const { eventId, indexName, scopeId, isPreview, getFieldsData } = useDocumentDetailsContext(); - - const eventKind = getField(getFieldsData('event.kind')); - const isAlert = eventKind === EventKind.signal; - const isTimelineFlyoutOpen = useWhichFlyout() === Flyouts.timeline; - const showTour = - isAlert && - !isPreview && - !isTimelineFlyoutOpen && - !isGuidedOnboardingTourShown(SecurityStepId.alertsCases) && - !casesFlyoutExpanded; - - const goToLeftPanel = useCallback(() => { - openLeftPanel({ - id: DocumentDetailsLeftPanelKey, - params: { - id: eventId, - indexName, - scopeId, - }, - }); - }, [eventId, indexName, scopeId, openLeftPanel]); - - const goToOverviewTab = useCallback(() => { - openRightPanel({ - id: DocumentDetailsRightPanelKey, - path: { tab: 'overview' }, - params: { - id: eventId, - indexName, - scopeId, - }, - }); - }, [eventId, indexName, scopeId, openRightPanel]); - - const tourStepContent = useMemo( - // we append the left tour steps here to support the scenarios where the flyout left section is already expanded when starting the tour - () => [...getRightSectionTourSteps(), ...getLeftSectionTourSteps()], - [] - ); - - return showTour ? ( - - ) : null; -}); - -RightPanelTour.displayName = 'RightPanelTour'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/index.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/index.tsx index 1f9006b8d04a8..56c24d9562091 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/index.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/index.tsx @@ -17,7 +17,6 @@ import type { DocumentDetailsProps } from '../shared/types'; import { PanelNavigation } from './navigation'; import { PanelHeader } from './header'; import { PanelContent } from './content'; -import { RightPanelTour } from './components/tour'; import type { RightPanelTabType } from './tabs'; import { PanelFooter } from './footer'; import { useFlyoutIsExpandable } from './hooks/use_flyout_is_expandable'; @@ -76,7 +75,6 @@ export const RightPanel: FC> = memo(({ path }) => return ( <> - {flyoutIsExpandable && } - -
+ ), content: , }; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/test_ids.ts index 54199abf55de8..89a71e5fd17ba 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/test_ids.ts @@ -12,6 +12,5 @@ export const FLYOUT_FOOTER_TEST_ID = `${PREFIX}Footer` as const; export const FLYOUT_FOOTER_DEOPDOEN_BUTTON_TEST_ID = `${FLYOUT_FOOTER_TEST_ID}DropdownButton` as const; export const OVERVIEW_TAB_TEST_ID = `${PREFIX}OverviewTab` as const; -export const OVERVIEW_TAB_LABEL_TEST_ID = `${PREFIX}OverviewTabLabel` as const; export const TABLE_TAB_TEST_ID = `${PREFIX}TableTab` as const; export const JSON_TAB_TEST_ID = `${PREFIX}JsonTab` as const; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/flyout_tour.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/flyout_tour.test.tsx deleted file mode 100644 index 246bd6a8940c9..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/flyout_tour.test.tsx +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { type FlyoutTourProps, FlyoutTour } from './flyout_tour'; -import { render, waitFor, fireEvent } from '@testing-library/react'; -import { - createMockStore, - createSecuritySolutionStorageMock, - TestProviders, -} from '../../../../common/mock'; -import { useKibana as mockUseKibana } from '../../../../common/lib/kibana/__mocks__'; -import { useKibana } from '../../../../common/lib/kibana'; -import { FLYOUT_TOUR_TEST_ID } from './test_ids'; - -jest.mock('../../../../common/lib/kibana'); - -const mockedUseKibana = mockUseKibana(); - -const { storage: storageMock } = createSecuritySolutionStorageMock(); -const mockStore = createMockStore(undefined, undefined, undefined, storageMock); - -const content = [1, 2, 3, 4].map((i) => ({ - title: `step${i}`, - content:

{`step${i}`}

, - stepNumber: i, - anchor: `step${i}`, -})); - -const tourProps = { - tourStepContent: content, - totalSteps: 4, -}; -const goToLeftPanel = jest.fn(); -const goToOverviewTab = jest.fn(); - -const renderTour = (props: FlyoutTourProps) => - render( - - -
-
-
-
- - ); - -describe('Flyout Tour', () => { - beforeEach(() => { - (useKibana as jest.Mock).mockReturnValue({ - ...mockedUseKibana, - services: { - ...mockedUseKibana.services, - storage: storageMock, - }, - }); - - storageMock.clear(); - }); - - it('should render tour steps', async () => { - const wrapper = renderTour(tourProps); - - await waitFor(() => { - expect(wrapper.getByTestId(`${FLYOUT_TOUR_TEST_ID}-1`)).toBeVisible(); - }); - fireEvent.click(wrapper.getByText('Next')); - await waitFor(() => { - expect(wrapper.getByTestId(`${FLYOUT_TOUR_TEST_ID}-2`)).toBeVisible(); - }); - fireEvent.click(wrapper.getByText('Next')); - await waitFor(() => { - expect(wrapper.getByTestId(`${FLYOUT_TOUR_TEST_ID}-3`)).toBeVisible(); - }); - fireEvent.click(wrapper.getByText('Next')); - await waitFor(() => { - expect(wrapper.getByTestId(`${FLYOUT_TOUR_TEST_ID}-4`)).toBeVisible(); - }); - await waitFor(() => { - expect(wrapper.getByText('Finish')).toBeVisible(); - }); - }); - - it('should call goToOverview at step 1', () => { - renderTour({ - ...tourProps, - goToOverviewTab, - }); - expect(goToOverviewTab).toHaveBeenCalled(); - }); - - it('should call goToLeftPanel when after step 3', async () => { - const wrapper = renderTour({ - ...tourProps, - goToLeftPanel, - }); - - await waitFor(() => { - expect(wrapper.getByTestId(`${FLYOUT_TOUR_TEST_ID}-1`)).toBeVisible(); - }); - fireEvent.click(wrapper.getByText('Next')); - await waitFor(() => { - expect(wrapper.getByTestId(`${FLYOUT_TOUR_TEST_ID}-2`)).toBeVisible(); - }); - fireEvent.click(wrapper.getByText('Next')); - await waitFor(() => { - expect(wrapper.getByTestId(`${FLYOUT_TOUR_TEST_ID}-3`)).toBeVisible(); - }); - fireEvent.click(wrapper.getByText('Next')); - - expect(goToLeftPanel).toHaveBeenCalled(); - }); -}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/flyout_tour.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/flyout_tour.tsx deleted file mode 100644 index c5ee76ca558a9..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/flyout_tour.tsx +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/* - * This timeline tour only valid for 8.12 release is not needed for 8.13 - * - * */ - -import type { FC } from 'react'; -import React, { useCallback, useState, useEffect } from 'react'; -import { EuiButton, EuiButtonEmpty, EuiTourStep } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { tourConfig, type TourState } from '../utils/tour_step_config'; -import type { FlyoutTourStepsProps } from '../utils/tour_step_config'; -import { NEW_FEATURES_TOUR_STORAGE_KEYS } from '../../../../../common/constants'; -import { useKibana } from '../../../../common/lib/kibana'; -import { FLYOUT_TOUR_TEST_ID } from './test_ids'; - -export interface FlyoutTourProps { - /** - * Content to be displayed in each tour card - */ - tourStepContent: FlyoutTourStepsProps[]; - /** - * Total number of tour steps - */ - totalSteps: number; - /** - * Callback to go to overview tab before tour - */ - goToOverviewTab?: () => void; - /** - * Callback to go to open left panel - */ - goToLeftPanel?: () => void; -} - -const MAX_POPOVER_WIDTH = 500; -const TOUR_SUBTITLE = i18n.translate('xpack.securitySolution.flyout.tour.subtitle', { - defaultMessage: 'A redesigned alert experience', -}); - -/** - * Shared component that generates tour steps based on supplied tour step content. - * Supports tours being shown in different panels and manages state via local storage - */ -export const FlyoutTour: FC = ({ - tourStepContent, - totalSteps, - goToOverviewTab, - goToLeftPanel, -}) => { - const { - services: { storage }, - } = useKibana(); - - const [tourState, setTourState] = useState(() => { - const restoredTourState = storage.get(NEW_FEATURES_TOUR_STORAGE_KEYS.FLYOUT); - if (restoredTourState != null) { - return restoredTourState; - } - return tourConfig; - }); - - useEffect(() => { - storage.set(NEW_FEATURES_TOUR_STORAGE_KEYS.FLYOUT, tourState); - if (tourState.isTourActive && tourState.currentTourStep === 1 && goToOverviewTab) { - goToOverviewTab(); - } - }, [storage, tourState, goToOverviewTab]); - - const nextStep = useCallback(() => { - setTourState((prev) => { - if (prev.currentTourStep === 3 && goToLeftPanel) { - goToLeftPanel(); - } - return { - ...prev, - currentTourStep: prev.currentTourStep + 1, - }; - }); - }, [goToLeftPanel]); - - const finishTour = useCallback(() => { - setTourState((prev) => { - return { - ...prev, - isTourActive: false, - }; - }); - }, []); - - const getFooterAction = useCallback( - (step: number) => { - // if it's the last step, we don't want to show the next button - return step === totalSteps ? ( - - {i18n.translate('xpack.securitySolution.flyout.tour.finish.text', { - defaultMessage: 'Finish', - })} - - ) : ( - [ - - {i18n.translate('xpack.securitySolution.flyout.tour.exit.text', { - defaultMessage: 'Exit', - })} - , - - {i18n.translate('xpack.securitySolution.flyout.tour.Next.text', { - defaultMessage: 'Next', - })} - , - ] - ); - }, - [finishTour, nextStep, totalSteps] - ); - - // Do not show tour if it is inactive - if (!tourState.isTourActive) { - return null; - } - - return ( - <> - {tourStepContent.map((steps) => { - const stepCount = steps.stepNumber; - if (tourState.currentTourStep !== stepCount) return null; - const panelProps = { - 'data-test-subj': `${FLYOUT_TOUR_TEST_ID}-${stepCount}`, - }; - - return ( - - ); - })} - - ); -}; - -FlyoutTour.displayName = 'FlyoutTour'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/test_ids.ts index 7c2ce2ff5870b..b250e9a688380 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/test_ids.ts @@ -7,7 +7,6 @@ import { PREFIX } from '../../../shared/test_ids'; -export const FLYOUT_TOUR_TEST_ID = `${PREFIX}Tour` as const; export const FLYOUT_PREVIEW_LINK_TEST_ID = `${PREFIX}PreviewLink` as const; export const SESSION_VIEW_UPSELL_TEST_ID = `${PREFIX}SessionViewUpsell` as const; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/tour_step_config.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/tour_step_config.tsx deleted file mode 100644 index 7b850cca82450..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/tour_step_config.tsx +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EuiText, EuiCode, type EuiTourStepProps } from '@elastic/eui'; -import React from 'react'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { i18n } from '@kbn/i18n'; -import { HEADER_NAVIGATION_BUTTON_TEST_ID } from '../../../shared/components/test_ids'; -import { OVERVIEW_TAB_LABEL_TEST_ID } from '../../right/test_ids'; -import { RULE_SUMMARY_BUTTON_TEST_ID } from '../../right/components/test_ids'; -import { - INSIGHTS_TAB_PREVALENCE_BUTTON_LABEL_TEST_ID, - INSIGHTS_TAB_ENTITIES_BUTTON_LABEL_TEST_ID, -} from '../../left/tabs/test_ids'; - -export const FLYOUT_TOUR_CONFIG_ANCHORS = { - OVERVIEW_TAB: OVERVIEW_TAB_LABEL_TEST_ID, - RULE_PREVIEW: RULE_SUMMARY_BUTTON_TEST_ID, - NAVIGATION_BUTTON: HEADER_NAVIGATION_BUTTON_TEST_ID, - ENTITIES: INSIGHTS_TAB_ENTITIES_BUTTON_LABEL_TEST_ID, - PREVALENCE: INSIGHTS_TAB_PREVALENCE_BUTTON_LABEL_TEST_ID, -}; - -export interface TourState { - /** - * The current step number - */ - currentTourStep: number; - /** - * True if tour is active (user has not completed or exited the tour) - */ - isTourActive: boolean; -} - -export const tourConfig: TourState = { - currentTourStep: 1, - isTourActive: true, -}; - -export interface FlyoutTourStepsProps { - /** - * Title of the tour step - */ - title: string; - /** - * Content of tour step - */ - content: JSX.Element; - /** - * Step number - */ - stepNumber: number; - /** - * Data test subject of the anchor component - */ - anchor: string; - /** - * Optional anchor position prop - */ - anchorPosition?: EuiTourStepProps['anchorPosition']; -} - -export const getRightSectionTourSteps = (): FlyoutTourStepsProps[] => { - const rightSectionTourSteps: FlyoutTourStepsProps[] = [ - { - title: i18n.translate('xpack.securitySolution.flyout.tour.overview.title', { - defaultMessage: 'More ways to understand your alerts', - }), - content: ( - - - {i18n.translate('xpack.securitySolution.flyout.tour.overview.entities.text', { - defaultMessage: 'Entities', - })} - - ), - prevalence: ( - - {i18n.translate('xpack.securitySolution.flyout.tour.overview.prevalence.text', { - defaultMessage: 'Prevalence', - })} - - ), - }} - /> - - ), - stepNumber: 1, - anchor: FLYOUT_TOUR_CONFIG_ANCHORS.OVERVIEW_TAB, - anchorPosition: 'downCenter', - }, - { - title: i18n.translate('xpack.securitySolution.flyout.tour.preview.title', { - defaultMessage: 'A quick way to access rule details', - }), - content: ( - - - {i18n.translate('xpack.securitySolution.flyout.tour.rulePreview.text', { - defaultMessage: 'Show rule summary', - })} - - ), - }} - /> - - ), - stepNumber: 2, - anchor: FLYOUT_TOUR_CONFIG_ANCHORS.RULE_PREVIEW, - anchorPosition: 'rightUp', - }, - { - title: i18n.translate('xpack.securitySolution.flyout.tour.expandDetails.title', { - defaultMessage: 'An expanded view of important alert details', - }), - content: ( - - - - ), - stepNumber: 3, - anchor: FLYOUT_TOUR_CONFIG_ANCHORS.NAVIGATION_BUTTON, - anchorPosition: 'downCenter', - }, - ]; - return rightSectionTourSteps; -}; - -export const getLeftSectionTourSteps = (): FlyoutTourStepsProps[] => { - return [ - { - title: i18n.translate('xpack.securitySolution.flyout.tour.entities.title', { - defaultMessage: 'New host and user insights are available', - }), - content: ( - - - {i18n.translate('xpack.securitySolution.flyout.tour.entities.text', { - defaultMessage: 'Entities', - })} - - ), - }} - /> - - ), - stepNumber: 4, - anchor: FLYOUT_TOUR_CONFIG_ANCHORS.ENTITIES, - anchorPosition: 'rightUp', - }, - { - title: i18n.translate('xpack.securitySolution.flyout.tour.prevalence.title', { - defaultMessage: 'New host and user insights are available', - }), - content: ( - - - {i18n.translate('xpack.securitySolution.flyout.tour.prevalence.text', { - defaultMessage: 'Prevalence', - })} - - ), - }} - /> - - ), - stepNumber: 5, - anchor: FLYOUT_TOUR_CONFIG_ANCHORS.PREVALENCE, - anchorPosition: 'rightUp', - }, - ]; -}; diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_navigation.tsx b/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_navigation.tsx index 8f9f1604bf407..1915c5a4484a4 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_navigation.tsx +++ b/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_navigation.tsx @@ -22,7 +22,6 @@ import { HEADER_ACTIONS_TEST_ID, COLLAPSE_DETAILS_BUTTON_TEST_ID, EXPAND_DETAILS_BUTTON_TEST_ID, - HEADER_NAVIGATION_BUTTON_TEST_ID, } from './test_ids'; export interface FlyoutNavigationProps { @@ -116,7 +115,7 @@ export const FlyoutNavigation: FC = memo( height: ${euiTheme.size.xxl}; `} > - + {flyoutIsExpandable && expandDetails && (isExpanded ? collapseButton : expandButton)} {actions && ( diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/shared/components/test_ids.ts index 9df26dbfb694d..f8a589f31561e 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/components/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/shared/components/test_ids.ts @@ -27,7 +27,6 @@ export const EXPANDABLE_PANEL_CONTENT_TEST_ID = (dataTestSubj: string) => `${dat /* Header Navigation */ const FLYOUT_NAVIGATION_TEST_ID = `${PREFIX}Navigation` as const; -export const HEADER_NAVIGATION_BUTTON_TEST_ID = `${PREFIX}NavigationButton` as const; export const EXPAND_DETAILS_BUTTON_TEST_ID = `${FLYOUT_NAVIGATION_TEST_ID}ExpandDetailButton` as const; export const COLLAPSE_DETAILS_BUTTON_TEST_ID = diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index b3de99ebfdd3c..2029921d5d97f 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -38809,25 +38809,6 @@ "xpack.securitySolution.flyout.shared.errorTitle": "Impossible d'afficher {title}.", "xpack.securitySolution.flyout.shared.ExpandablePanelButtonIconAriaLabel": "Activer/Désactiver le panneau extensible", "xpack.securitySolution.flyout.shared.expandablePanelLoadingAriaLabel": "panneau extensible", - "xpack.securitySolution.flyout.tour.entities.description": "Consultez la vue {entities} étendue pour en savoir plus sur les hôtes et les utilisateurs liés à l'alerte.", - "xpack.securitySolution.flyout.tour.entities.text": "Entités", - "xpack.securitySolution.flyout.tour.entities.title": "De nouvelles informations sur les hôtes et les utilisateurs sont disponibles", - "xpack.securitySolution.flyout.tour.exit.text": "Quitter", - "xpack.securitySolution.flyout.tour.expandDetails.description": "Cliquez sur le texte lié pour ouvrir et fermer le panneau gauche du menu volant. Le panneau de gauche est une vue détaillée des sections du panneau de droite.", - "xpack.securitySolution.flyout.tour.expandDetails.title": "Un affichage élargi des détails importants de l'alerte", - "xpack.securitySolution.flyout.tour.finish.text": "Terminer", - "xpack.securitySolution.flyout.tour.Next.text": "Suivant", - "xpack.securitySolution.flyout.tour.overview.description": "Explorez de nouvelles informations exploitables dans les sections {entities} et {prevalence}.", - "xpack.securitySolution.flyout.tour.overview.entities.text": "Entités", - "xpack.securitySolution.flyout.tour.overview.prevalence.text": "Prévalence", - "xpack.securitySolution.flyout.tour.overview.title": "Plus de moyens pour comprendre vos alertes", - "xpack.securitySolution.flyout.tour.prevalence.description": "Consultez la vue {prevalence} étendue pour savoir comment l'alerte est liée à d'autres alertes, événements et entités.", - "xpack.securitySolution.flyout.tour.prevalence.text": "Prévalence", - "xpack.securitySolution.flyout.tour.prevalence.title": "De nouvelles informations sur les hôtes et les utilisateurs sont disponibles", - "xpack.securitySolution.flyout.tour.preview.title": "Un moyen rapide d'accéder aux détails des règles", - "xpack.securitySolution.flyout.tour.rulePreview.description": "Cliquez sur {rulePreview} pour en savoir plus sur la règle qui a généré l'alerte.", - "xpack.securitySolution.flyout.tour.rulePreview.text": "Afficher le résumé de la règle", - "xpack.securitySolution.flyout.tour.subtitle": "Une expérience d'alerte repensée", "xpack.securitySolution.flyout.user.preview.viewDetailsLabel": "Ouvrez le menu volant des détails de l'utilisateur", "xpack.securitySolution.footer.autoRefreshActiveDescription": "Actualisation automatique active", "xpack.securitySolution.footer.autoRefreshActiveTooltip": "Lorsque l'actualisation automatique est activée, la chronologie vous montrera les {numberOfItems} derniers événements correspondant à votre recherche.", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index b813f2189ed3b..f4c6afab569ac 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -38552,25 +38552,6 @@ "xpack.securitySolution.flyout.shared.errorTitle": "{title}を表示できません。", "xpack.securitySolution.flyout.shared.ExpandablePanelButtonIconAriaLabel": "展開可能なパネルトグル", "xpack.securitySolution.flyout.shared.expandablePanelLoadingAriaLabel": "展開可能なパネル", - "xpack.securitySolution.flyout.tour.entities.description": "アラートに関連付けられたホストとユーザーの詳細については、展開された{entities}ビューを確認してください。", - "xpack.securitySolution.flyout.tour.entities.text": "エンティティ", - "xpack.securitySolution.flyout.tour.entities.title": "新しいホストとユーザーのインサイトがあります", - "xpack.securitySolution.flyout.tour.exit.text": "終了", - "xpack.securitySolution.flyout.tour.expandDetails.description": "リンクされたテキストをクリックすると、フライアウトの左パネルが開いて閉じます。左パネルは、右パネルのセクションの詳細表示です。", - "xpack.securitySolution.flyout.tour.expandDetails.title": "重要なアラート詳細の展開表示", - "xpack.securitySolution.flyout.tour.finish.text": "終了", - "xpack.securitySolution.flyout.tour.Next.text": "次へ", - "xpack.securitySolution.flyout.tour.overview.description": "{entities}および{prevalence}セクションで新しいインサイトを探索してください。", - "xpack.securitySolution.flyout.tour.overview.entities.text": "エンティティ", - "xpack.securitySolution.flyout.tour.overview.prevalence.text": "発生率", - "xpack.securitySolution.flyout.tour.overview.title": "アラートを理解するためのその他の方法", - "xpack.securitySolution.flyout.tour.prevalence.description": "アラートが他のアラート、イベント、エンティティに関連付けられる詳細な方法については、展開された{prevalence}ビューを確認してください。", - "xpack.securitySolution.flyout.tour.prevalence.text": "発生率", - "xpack.securitySolution.flyout.tour.prevalence.title": "新しいホストとユーザーのインサイトがあります", - "xpack.securitySolution.flyout.tour.preview.title": "ルール詳細をすばやく表示する方法", - "xpack.securitySolution.flyout.tour.rulePreview.description": "アラートを生成したルールの詳細については、{rulePreview}をクリックしてください。", - "xpack.securitySolution.flyout.tour.rulePreview.text": "ルール概要を表示", - "xpack.securitySolution.flyout.tour.subtitle": "再設計されたアラート体験", "xpack.securitySolution.flyout.user.preview.viewDetailsLabel": "ユーザー詳細フライアウトを開く", "xpack.securitySolution.footer.autoRefreshActiveDescription": "自動更新アクション", "xpack.securitySolution.footer.autoRefreshActiveTooltip": "自動更新が有効な間、タイムラインはクエリーに一致する最新の {numberOfItems} 件のイベントを表示します。", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 5fbe2d35b72a6..785f296c30f68 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -6846,7 +6846,6 @@ "securitySolutionPackages.features.featureRegistry.subFeatures.trustedApplications": "受信任的应用程序", "securitySolutionPackages.features.featureRegistry.subFeatures.trustedApplications.description": "帮助减少与其他软件(通常指其他防病毒或终端安全应用程序)的冲突。", "securitySolutionPackages.features.featureRegistry.subFeatures.trustedApplications.privilegesTooltip": "访问受信任的应用程序需要所有工作区。", - "sgcuritySolutionPackages.flyout.shared.errorDescription": "显示 {message} 时出现错误。", "securitySolutionPackages.markdown.insight.upsell": "升级到{requiredLicense}以利用调查指南中的洞见", "securitySolutionPackages.markdown.investigationGuideInteractions.upsell": "升级到 {requiredLicense} 以利用调查指南交互", "securitySolutionPackages.navigation.landingLinks": "安全视图", @@ -38598,25 +38597,6 @@ "xpack.securitySolution.flyout.shared.errorTitle": "无法显示 {title}。", "xpack.securitySolution.flyout.shared.ExpandablePanelButtonIconAriaLabel": "可展开面板切换按钮", "xpack.securitySolution.flyout.shared.expandablePanelLoadingAriaLabel": "可展开面板", - "xpack.securitySolution.flyout.tour.entities.description": "请查阅展开的 {entities} 视图以了解与该告警有关的主机和用户的更多信息。", - "xpack.securitySolution.flyout.tour.entities.text": "实体", - "xpack.securitySolution.flyout.tour.entities.title": "有新主机和用户洞见可用", - "xpack.securitySolution.flyout.tour.exit.text": "退出", - "xpack.securitySolution.flyout.tour.expandDetails.description": "单击链接文本可打开和关闭浮出控件的左面板。左面板提供了右面板中的各个部分的详细视图。", - "xpack.securitySolution.flyout.tour.expandDetails.title": "重要告警详情的扩展视图", - "xpack.securitySolution.flyout.tour.finish.text": "完成", - "xpack.securitySolution.flyout.tour.Next.text": "下一步", - "xpack.securitySolution.flyout.tour.overview.description": "浏览 {entities} 和 {prevalence} 部分中的新洞见。", - "xpack.securitySolution.flyout.tour.overview.entities.text": "实体", - "xpack.securitySolution.flyout.tour.overview.prevalence.text": "普及率", - "xpack.securitySolution.flyout.tour.overview.title": "了解告警的更多方式", - "xpack.securitySolution.flyout.tour.prevalence.description": "请查阅展开的 {prevalence} 视图以了解该告警与其他告警、事件和实体的关系。", - "xpack.securitySolution.flyout.tour.prevalence.text": "普及率", - "xpack.securitySolution.flyout.tour.prevalence.title": "有新主机和用户洞见可用", - "xpack.securitySolution.flyout.tour.preview.title": "一种快速访问规则详情的方法", - "xpack.securitySolution.flyout.tour.rulePreview.description": "单击 {rulePreview} 以了解与生成该告警的规则有关的详情。", - "xpack.securitySolution.flyout.tour.rulePreview.text": "显示规则摘要", - "xpack.securitySolution.flyout.tour.subtitle": "经过重新设计的告警体验", "xpack.securitySolution.flyout.user.preview.viewDetailsLabel": "打开用户详情浮出控件", "xpack.securitySolution.footer.autoRefreshActiveDescription": "自动刷新已启用", "xpack.securitySolution.footer.autoRefreshActiveTooltip": "自动刷新已启用时,时间线将显示匹配查询的最近 {numberOfItems} 个事件。", From 586b24f3a80cd1d9edb8775f51e1b86849d2c1f2 Mon Sep 17 00:00:00 2001 From: Jon Date: Mon, 4 Nov 2024 16:24:15 -0600 Subject: [PATCH 11/57] [ci] Reuse .yarn-local-mirror (#198613) Currently CI is configuring a yarn local mirror that is ignored due to the repository `.yarnrc` taking precedence. Instead of configuring this setting, this moves the cached mirror over to the Kibana directory in line with the repository's configuration. --- .buildkite/scripts/bootstrap.sh | 14 ++++++++++---- .buildkite/scripts/common/setup_node.sh | 3 --- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.buildkite/scripts/bootstrap.sh b/.buildkite/scripts/bootstrap.sh index b7576dda72f24..a126ad9132696 100755 --- a/.buildkite/scripts/bootstrap.sh +++ b/.buildkite/scripts/bootstrap.sh @@ -12,12 +12,18 @@ if [[ "${BOOTSTRAP_ALWAYS_FORCE_INSTALL:-}" ]]; then BOOTSTRAP_PARAMS+=(--force-install) fi -# Use the node_modules that is baked into the agent image, if it exists, as a cache +# Use the packages that are baked into the agent image, if they exist, as a cache # But only for agents not mounting the workspace on a local ssd or in memory # It actually ends up being slower to move all of the tiny files between the disks vs extracting archives from the yarn cache -if [[ -d ~/.kibana/node_modules && "$(pwd)" != *"/local-ssd/"* && "$(pwd)" != "/dev/shm"* ]]; then - echo "Using ~/.kibana/node_modules as a starting point" - mv ~/.kibana/node_modules ./ +if [[ "$(pwd)" != *"/local-ssd/"* && "$(pwd)" != "/dev/shm"* ]]; then + if [[ -d ~/.kibana/node_modules ]]; then + echo "Using ~/.kibana/node_modules as a starting point" + mv ~/.kibana/node_modules ./ + fi + if [[ -d ~/.kibana/.yarn-local-mirror ]]; then + echo "Using ~/.kibana/.yarn-local-mirror as a starting point" + mv ~/.kibana/.yarn-local-mirror ./ + fi fi if ! yarn kbn bootstrap "${BOOTSTRAP_PARAMS[@]}"; then diff --git a/.buildkite/scripts/common/setup_node.sh b/.buildkite/scripts/common/setup_node.sh index c6fbfeaee51bc..aac3d26702691 100755 --- a/.buildkite/scripts/common/setup_node.sh +++ b/.buildkite/scripts/common/setup_node.sh @@ -10,7 +10,6 @@ NODE_VERSION="$(cat "$KIBANA_DIR/.node-version")" export NODE_VERSION export NODE_DIR="$CACHE_DIR/node/$NODE_VERSION" export NODE_BIN_DIR="$NODE_DIR/bin" -export YARN_OFFLINE_CACHE="$CACHE_DIR/yarn-offline-cache" ## Install node for whatever the current os/arch are hostArch="$(command uname -m)" @@ -77,8 +76,6 @@ if [[ ! $(which yarn) || $(yarn --version) != "$YARN_VERSION" ]]; then npm_install_global yarn "^$YARN_VERSION" fi -yarn config set yarn-offline-mirror "$YARN_OFFLINE_CACHE" - YARN_GLOBAL_BIN=$(yarn global bin) export YARN_GLOBAL_BIN export PATH="$PATH:$YARN_GLOBAL_BIN" From 59b2f5f72a7726aa604c56a7c8a4dc4b78cecf8c Mon Sep 17 00:00:00 2001 From: Drew Tate Date: Mon, 4 Nov 2024 23:38:53 -0700 Subject: [PATCH 12/57] [ES|QL] don't suggest in comments (#197341) ## Summary Close https://github.com/elastic/kibana/issues/191866 - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --------- Co-authored-by: Elastic Machine --- .../src/autocomplete/__tests__/helpers.ts | 4 +- .../__tests__/suggestions_in_comments.test.ts | 43 ++++++++++ .../src/autocomplete/autocomplete.ts | 5 ++ .../src/shared/context.ts | 31 ++++++-- .../src/shared/helpers.test.ts | 17 +++- .../src/shared/helpers.ts | 78 ++++++++++++------- .../kbn-monaco/src/esql/worker/esql_worker.ts | 2 +- 7 files changed, 137 insertions(+), 43 deletions(-) create mode 100644 packages/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/suggestions_in_comments.test.ts diff --git a/packages/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/helpers.ts b/packages/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/helpers.ts index ebf0a0589d1e9..9964fc96d00ca 100644 --- a/packages/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/helpers.ts +++ b/packages/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/helpers.ts @@ -8,7 +8,7 @@ */ import { camelCase } from 'lodash'; -import { getAstAndSyntaxErrors } from '@kbn/esql-ast'; +import { parse } from '@kbn/esql-ast'; import { scalarFunctionDefinitions } from '../../definitions/generated/scalar_functions'; import { builtinFunctions } from '../../definitions/builtin'; import { aggregationFunctionDefinitions } from '../../definitions/generated/aggregation_functions'; @@ -312,7 +312,7 @@ export const setup = async (caret = '/') => { querySansCaret, pos, ctx, - getAstAndSyntaxErrors, + (_query: string | undefined) => parse(_query, { withFormatting: true }), opts.callbacks ?? callbacks ); }; diff --git a/packages/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/suggestions_in_comments.test.ts b/packages/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/suggestions_in_comments.test.ts new file mode 100644 index 0000000000000..7f97409ea6341 --- /dev/null +++ b/packages/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/suggestions_in_comments.test.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { setup } from './helpers'; + +describe('suggestions in comments', () => { + it('does not suggest in single-line comments', async () => { + const { assertSuggestions } = await setup('^'); + await assertSuggestions('FROM index | EVAL // hey there ^', []); + }); + + it('does not suggest in multi-line comments', async () => { + const { assertSuggestions } = await setup('^'); + await assertSuggestions('FROM index | EVAL /* ^ */', []); + await assertSuggestions('FROM index | EVAL /* (^) */', []); + }); + + it('does not suggest in incomplete multi-line comments', async () => { + const { assertSuggestions } = await setup('^'); + assertSuggestions('FROM index | EVAL /* ^', []); + }); + + test('suggests next to comments', async () => { + const { suggest } = await setup('^'); + expect((await suggest('FROM index | EVAL ^/* */')).length).toBeGreaterThan(0); + expect((await suggest('FROM index | EVAL /* */^')).length).toBeGreaterThan(0); + expect((await suggest('FROM index | EVAL ^// a comment')).length).toBeGreaterThan(0); + expect((await suggest('FROM index | EVAL // a comment\n^')).length).toBeGreaterThan(0); + }); + + test('handles multiple comments', async () => { + const { assertSuggestions } = await setup('^'); + assertSuggestions('FROM index | EVAL /* comment1 */ x + /* comment2 ^ */ 1', []); + assertSuggestions('FROM index | EVAL /* ^ comment1 */ x + /* comment2 ^ */ 1', []); + assertSuggestions('FROM index | EVAL /* comment1 */ x + /* comment2 */ 1 // comment3 ^', []); + }); +}); diff --git a/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts b/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts index 7b0f4191dcaca..ecb46682b041e 100644 --- a/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts +++ b/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts @@ -159,6 +159,11 @@ export async function suggest( const { ast } = await astProvider(correctedQuery); const astContext = getAstContext(innerText, ast, offset); + + if (astContext.type === 'comment') { + return []; + } + // build the correct query to fetch the list of fields const queryForFields = getQueryForFields( buildQueryUntilPreviousCommand(ast, correctedQuery), diff --git a/packages/kbn-esql-validation-autocomplete/src/shared/context.ts b/packages/kbn-esql-validation-autocomplete/src/shared/context.ts index 2de9d7290ab5c..42e63d7623e49 100644 --- a/packages/kbn-esql-validation-autocomplete/src/shared/context.ts +++ b/packages/kbn-esql-validation-autocomplete/src/shared/context.ts @@ -7,14 +7,15 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import type { - ESQLAstItem, - ESQLSingleAstItem, - ESQLAst, - ESQLFunction, - ESQLCommand, - ESQLCommandOption, - ESQLCommandMode, +import { + type ESQLAstItem, + type ESQLSingleAstItem, + type ESQLAst, + type ESQLFunction, + type ESQLCommand, + type ESQLCommandOption, + type ESQLCommandMode, + Walker, } from '@kbn/esql-ast'; import { ENRICH_MODES } from '../definitions/settings'; import { EDITOR_MARKER } from './constants'; @@ -152,6 +153,20 @@ function isBuiltinFunction(node: ESQLFunction) { * * "newCommand": the cursor is at the beginning of a new command (i.e. `command1 | command2 | `) */ export function getAstContext(queryString: string, ast: ESQLAst, offset: number) { + let inComment = false; + + Walker.visitComments(ast, (node) => { + if (node.location && node.location.min <= offset && node.location.max > offset) { + inComment = true; + } + }); + + if (inComment) { + return { + type: 'comment' as const, + }; + } + const { command, option, setting, node } = findAstPosition(ast, offset); if (node) { if (node.type === 'literal' && node.literalType === 'keyword') { diff --git a/packages/kbn-esql-validation-autocomplete/src/shared/helpers.test.ts b/packages/kbn-esql-validation-autocomplete/src/shared/helpers.test.ts index b5f14ecfd0227..97f35e1c66722 100644 --- a/packages/kbn-esql-validation-autocomplete/src/shared/helpers.test.ts +++ b/packages/kbn-esql-validation-autocomplete/src/shared/helpers.test.ts @@ -8,8 +8,8 @@ */ import { parse } from '@kbn/esql-ast'; -import { getExpressionType, shouldBeQuotedSource } from './helpers'; -import type { SupportedDataType } from '../definitions/types'; +import { getBracketsToClose, getExpressionType, shouldBeQuotedSource } from './helpers'; +import { SupportedDataType } from '../definitions/types'; import { setTestFunctions } from './test_functions'; describe('shouldBeQuotedSource', () => { @@ -324,3 +324,16 @@ describe('getExpressionType', () => { ); }); }); + +describe('getBracketsToClose', () => { + it('returns the number of brackets to close', () => { + expect(getBracketsToClose('foo(bar(baz')).toEqual([')', ')']); + expect(getBracketsToClose('foo(bar[baz')).toEqual([']', ')']); + expect(getBracketsToClose('foo(bar[baz"bap')).toEqual(['"', ']', ')']); + expect( + getBracketsToClose( + 'from a | eval case(integerField < 0, "negative", integerField > 0, "positive", ' + ) + ).toEqual([')']); + }); +}); diff --git a/packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts b/packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts index b17f4ebcc8f07..43bbb2b571a50 100644 --- a/packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts +++ b/packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts @@ -651,26 +651,59 @@ export const isParam = (x: unknown): x is ESQLParamLiteral => export const noCaseCompare = (a: string, b: string) => a.toLowerCase() === b.toLowerCase(); /** - * This function count the number of unclosed brackets in order to - * locally fix the queryString to generate a valid AST + * This function returns a list of closing brackets that can be appended to + * a partial query to make it valid. + +* locally fix the queryString to generate a valid AST * A known limitation of this is that is not aware of commas "," or pipes "|" * so it is not yet helpful on a multiple commands errors (a workaround it to pass each command here...) - * @param bracketType * @param text * @returns */ -export function countBracketsUnclosed(bracketType: '(' | '[' | '"' | '"""', text: string) { +export function getBracketsToClose(text: string) { const stack = []; - const closingBrackets = { '(': ')', '[': ']', '"': '"', '"""': '"""' }; + const pairs: Record = { '"""': '"""', '/*': '*/', '(': ')', '[': ']', '"': '"' }; + const pairsReversed: Record = { + '"""': '"""', + '*/': '/*', + ')': '(', + ']': '[', + '"': '"', + }; + for (let i = 0; i < text.length; i++) { - const substr = text.substring(i, i + bracketType.length); - if (substr === closingBrackets[bracketType] && stack.length) { - stack.pop(); - } else if (substr === bracketType) { - stack.push(bracketType); + for (const openBracket in pairs) { + if (!Object.hasOwn(pairs, openBracket)) { + continue; + } + + const substr = text.slice(i, i + openBracket.length); + if (substr === openBracket) { + stack.push(substr); + break; + } else if (pairsReversed[substr] && pairsReversed[substr] === stack[stack.length - 1]) { + stack.pop(); + break; + } } } - return stack.length; + return stack.reverse().map((bracket) => pairs[bracket]); +} + +/** + * This function counts the number of unclosed parentheses + * @param text + */ +export function countUnclosedParens(text: string) { + let unclosedCount = 0; + for (let i = 0; i < text.length; i++) { + if (text[i] === ')' && unclosedCount > 0) { + unclosedCount--; + } else if (text[i] === '(') { + unclosedCount++; + } + } + return unclosedCount; } /** @@ -685,37 +718,22 @@ export function countBracketsUnclosed(bracketType: '(' | '[' | '"' | '"""', text export function correctQuerySyntax(_query: string, context: EditorContext) { let query = _query; // check if all brackets are closed, otherwise close them - const unclosedRoundBrackets = countBracketsUnclosed('(', query); - const unclosedSquaredBrackets = countBracketsUnclosed('[', query); - const unclosedQuotes = countBracketsUnclosed('"', query); - const unclosedTripleQuotes = countBracketsUnclosed('"""', query); + const bracketsToAppend = getBracketsToClose(query); + const unclosedRoundBracketCount = bracketsToAppend.filter((bracket) => bracket === ')').length; // if it's a comma by the user or a forced trigger by a function argument suggestion // add a marker to make the expression still valid const charThatNeedMarkers = [',', ':']; if ( (context.triggerCharacter && charThatNeedMarkers.includes(context.triggerCharacter)) || // monaco.editor.CompletionTriggerKind['Invoke'] === 0 - (context.triggerKind === 0 && unclosedRoundBrackets === 0) || + (context.triggerKind === 0 && unclosedRoundBracketCount === 0) || (context.triggerCharacter === ' ' && isMathFunction(query, query.length)) || isComma(query.trimEnd()[query.trimEnd().length - 1]) ) { query += EDITOR_MARKER; } - // if there are unclosed brackets, close them - if (unclosedRoundBrackets || unclosedSquaredBrackets || unclosedQuotes) { - for (const [char, count] of [ - ['"""', unclosedTripleQuotes], - ['"', unclosedQuotes], - [')', unclosedRoundBrackets], - [']', unclosedSquaredBrackets], - ]) { - if (count) { - // inject the closing brackets - query += Array(count).fill(char).join(''); - } - } - } + query += bracketsToAppend.join(''); return query; } diff --git a/packages/kbn-monaco/src/esql/worker/esql_worker.ts b/packages/kbn-monaco/src/esql/worker/esql_worker.ts index 82d6c75f8f621..18ce300acfc2f 100644 --- a/packages/kbn-monaco/src/esql/worker/esql_worker.ts +++ b/packages/kbn-monaco/src/esql/worker/esql_worker.ts @@ -43,7 +43,7 @@ export class ESQLWorker implements BaseWorkerDefinition { } getAst(text: string | undefined) { - const rawAst = parse(text); + const rawAst = parse(text, { withFormatting: true }); return { ast: rawAst.root.commands, errors: rawAst.errors.map(inlineToMonacoErrors), From 13a1de4d183baf10b82f8e0794cc5d2d2c7a8bc9 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 5 Nov 2024 18:27:26 +1100 Subject: [PATCH 13/57] [api-docs] 2024-11-05 Daily api_docs build (#198884) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/882 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- .../ai_assistant_management_selection.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_quality.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_usage.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/dataset_quality.mdx | 2 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 2 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/discover_shared.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/entities_data_access.mdx | 2 +- api_docs/entity_manager.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/esql.mdx | 2 +- api_docs/esql_data_grid.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/fields_metadata.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/inference.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/ingest_pipelines.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/integration_assistant.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/inventory.mdx | 2 +- api_docs/investigate.mdx | 2 +- api_docs/investigate_app.mdx | 2 +- api_docs/kbn_actions_types.mdx | 2 +- api_docs/kbn_ai_assistant.mdx | 2 +- api_docs/kbn_ai_assistant_common.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_log_pattern_analysis.mdx | 2 +- api_docs/kbn_aiops_log_rate_analysis.mdx | 2 +- .../kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_comparators.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerting_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_grouping.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_collection_utils.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_data_view.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_types.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_avc_banner.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_bfetch_error.mdx | 2 +- api_docs/kbn_calculate_auto.mdx | 2 +- .../kbn_calculate_width_from_char_count.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cbor.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_cloud_security_posture.mdx | 2 +- .../kbn_cloud_security_posture_common.mdx | 2 +- api_docs/kbn_cloud_security_posture_graph.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_editor_mock.mdx | 2 +- api_docs/kbn_code_owners.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- .../kbn_content_management_content_editor.mdx | 2 +- ...ent_management_content_insights_public.mdx | 2 +- ...ent_management_content_insights_server.mdx | 2 +- ...bn_content_management_favorites_public.mdx | 2 +- ...bn_content_management_favorites_server.mdx | 2 +- ...tent_management_tabbed_table_list_view.mdx | 2 +- ...kbn_content_management_table_list_view.mdx | 2 +- ...tent_management_table_list_view_common.mdx | 2 +- ...ntent_management_table_list_view_table.mdx | 2 +- .../kbn_content_management_user_profiles.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- .../kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- .../kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- ..._core_custom_branding_browser_internal.mdx | 2 +- ...kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- ...n_core_custom_branding_server_internal.mdx | 2 +- .../kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_feature_flags_browser.mdx | 2 +- ...bn_core_feature_flags_browser_internal.mdx | 2 +- .../kbn_core_feature_flags_browser_mocks.mdx | 2 +- api_docs/kbn_core_feature_flags_server.mdx | 2 +- ...kbn_core_feature_flags_server_internal.mdx | 2 +- .../kbn_core_feature_flags_server_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- ...re_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- ...bn_core_http_resources_server_internal.mdx | 2 +- .../kbn_core_http_resources_server_mocks.mdx | 2 +- .../kbn_core_http_router_server_internal.mdx | 2 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- ...ore_metrics_collectors_server_internal.mdx | 2 +- ...n_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- ...bn_core_notifications_browser_internal.mdx | 2 +- .../kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- .../kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- .../kbn_core_plugins_contracts_browser.mdx | 2 +- .../kbn_core_plugins_contracts_server.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...bn_core_saved_objects_api_server_mocks.mdx | 2 +- ...ore_saved_objects_base_server_internal.mdx | 2 +- ...n_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- ...bn_core_saved_objects_browser_internal.mdx | 2 +- .../kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- ..._objects_import_export_server_internal.mdx | 2 +- ...ved_objects_import_export_server_mocks.mdx | 2 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_security_browser.mdx | 2 +- .../kbn_core_security_browser_internal.mdx | 2 +- api_docs/kbn_core_security_browser_mocks.mdx | 2 +- api_docs/kbn_core_security_common.mdx | 2 +- api_docs/kbn_core_security_server.mdx | 2 +- .../kbn_core_security_server_internal.mdx | 2 +- api_docs/kbn_core_security_server_mocks.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- .../kbn_core_test_helpers_model_versions.mdx | 2 +- ...n_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- .../kbn_core_ui_settings_browser_internal.mdx | 2 +- .../kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_profile_browser.mdx | 2 +- ...kbn_core_user_profile_browser_internal.mdx | 2 +- .../kbn_core_user_profile_browser_mocks.mdx | 2 +- api_docs/kbn_core_user_profile_common.mdx | 2 +- api_docs/kbn_core_user_profile_server.mdx | 2 +- .../kbn_core_user_profile_server_internal.mdx | 2 +- .../kbn_core_user_profile_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- .../kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_icons.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_forge.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_data_stream_adapter.mdx | 2 +- api_docs/kbn_data_view_utils.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_fleet.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_deeplinks_security.mdx | 2 +- api_docs/kbn_deeplinks_shared.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- .../kbn_discover_contextual_components.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_agent_utils.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_elastic_assistant_common.mdx | 2 +- api_docs/kbn_entities_schema.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_esql_ast.mdx | 2 +- api_docs/kbn_esql_editor.mdx | 2 +- api_docs/kbn_esql_utils.mdx | 2 +- api_docs/kbn_esql_validation_autocomplete.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- api_docs/kbn_formatters.mdx | 2 +- .../kbn_ftr_common_functional_services.mdx | 2 +- .../kbn_ftr_common_functional_ui_services.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_grid_layout.mdx | 2 +- api_docs/kbn_grouping.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- .../kbn_index_management_shared_types.mdx | 2 +- api_docs/kbn_inference_common.mdx | 2 +- api_docs/kbn_inference_integration_flyout.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_investigation_shared.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_ipynb.mdx | 2 +- api_docs/kbn_item_buffer.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_json_schemas.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- api_docs/kbn_language_documentation.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_lens_formula_docs.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_content_badge.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- .../kbn_management_settings_application.mdx | 2 +- ...ent_settings_components_field_category.mdx | 2 +- ...gement_settings_components_field_input.mdx | 2 +- ...nagement_settings_components_field_row.mdx | 2 +- ...bn_management_settings_components_form.mdx | 2 +- ...n_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- ...n_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- .../kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_manifest.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_cancellable_search.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- .../kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_field_stats_flyout.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_kibana_theme.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_parse_interval.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_time_buckets.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_ui_actions.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_ml_validators.mdx | 2 +- api_docs/kbn_mock_idp_utils.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_object_versioning_utils.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- .../kbn_observability_alerting_rule_utils.mdx | 2 +- .../kbn_observability_alerting_test_data.mdx | 2 +- ...ility_get_padded_alert_time_range_util.mdx | 2 +- api_docs/kbn_observability_logs_overview.mdx | 2 +- ...kbn_observability_synthetics_test_data.mdx | 2 +- api_docs/kbn_openapi_bundler.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- api_docs/kbn_panel_loader.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_check.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_presentation_containers.mdx | 2 +- api_docs/kbn_presentation_publishing.mdx | 2 +- api_docs/kbn_product_doc_artifact_builder.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_hooks.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- api_docs/kbn_recently_accessed.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_reporting_csv_share_panel.mdx | 2 +- api_docs/kbn_reporting_export_types_csv.mdx | 2 +- .../kbn_reporting_export_types_csv_common.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf.mdx | 2 +- .../kbn_reporting_export_types_pdf_common.mdx | 2 +- api_docs/kbn_reporting_export_types_png.mdx | 2 +- .../kbn_reporting_export_types_png_common.mdx | 2 +- api_docs/kbn_reporting_mocks_server.mdx | 2 +- api_docs/kbn_reporting_public.mdx | 2 +- api_docs/kbn_reporting_server.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- .../kbn_response_ops_feature_flag_service.mdx | 2 +- api_docs/kbn_response_ops_rule_params.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_rollup.mdx | 2 +- api_docs/kbn_router_to_openapispec.mdx | 2 +- api_docs/kbn_router_utils.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_screenshotting_server.mdx | 2 +- api_docs/kbn_search_api_keys_components.mdx | 2 +- api_docs/kbn_search_api_keys_server.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.mdx | 2 +- api_docs/kbn_search_errors.mdx | 2 +- api_docs/kbn_search_index_documents.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_search_shared_ui.mdx | 2 +- api_docs/kbn_search_types.mdx | 2 +- api_docs/kbn_security_api_key_management.mdx | 2 +- api_docs/kbn_security_authorization_core.mdx | 2 +- ...kbn_security_authorization_core_common.mdx | 2 +- api_docs/kbn_security_form_components.mdx | 2 +- api_docs/kbn_security_hardening.mdx | 2 +- api_docs/kbn_security_plugin_types_common.mdx | 2 +- api_docs/kbn_security_plugin_types_public.mdx | 2 +- api_docs/kbn_security_plugin_types_server.mdx | 2 +- .../kbn_security_role_management_model.mdx | 2 +- ...kbn_security_solution_distribution_bar.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- ...kbn_security_solution_storybook_config.mdx | 2 +- api_docs/kbn_security_ui_components.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- ...ritysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- .../kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- .../kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- .../kbn_server_route_repository_client.mdx | 2 +- .../kbn_server_route_repository_utils.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- .../kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_project_switcher.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- .../kbn_shared_ux_button_exit_full_screen.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_chrome_navigation.mdx | 2 +- api_docs/kbn_shared_ux_error_boundary.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- .../kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- ...shared_ux_page_analytics_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- ...bn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_template.mdx | 2 +- ...n_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- .../kbn_shared_ux_page_no_data_config.mdx | 2 +- ...bn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- ...n_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_tabbed_modal.mdx | 2 +- api_docs/kbn_shared_ux_table_persist.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_sort_predicates.mdx | 2 +- api_docs/kbn_sse_utils.mdx | 2 +- api_docs/kbn_sse_utils_client.mdx | 2 +- api_docs/kbn_sse_utils_server.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_synthetics_e2e.mdx | 2 +- api_docs/kbn_synthetics_private_location.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_eui_helpers.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_timerange.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_transpose_utils.mdx | 2 +- api_docs/kbn_triggers_actions_ui_types.mdx | 2 +- api_docs/kbn_try_in_console.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_unsaved_changes_badge.mdx | 2 +- api_docs/kbn_unsaved_changes_prompt.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_visualization_utils.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kbn_zod.mdx | 2 +- api_docs/kbn_zod_helpers.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/logs_data_access.mdx | 2 +- api_docs/logs_explorer.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/mock_idp_plugin.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_a_i_assistant_app.mdx | 2 +- .../observability_ai_assistant_management.mdx | 2 +- api_docs/observability_logs_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.devdocs.json | 42 +++++++++++++------ api_docs/observability_shared.mdx | 4 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 9 ++-- api_docs/presentation_panel.mdx | 2 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/search_assistant.mdx | 2 +- api_docs/search_connectors.mdx | 2 +- api_docs/search_homepage.mdx | 2 +- api_docs/search_indices.mdx | 2 +- api_docs/search_inference_endpoints.mdx | 2 +- api_docs/search_notebooks.mdx | 2 +- api_docs/search_playground.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/slo.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.devdocs.json | 4 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_doc_viewer.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 760 files changed, 794 insertions(+), 777 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 29d71edfc9e12..0288504afa834 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 13c3b44fd5dcb..738bba2f61023 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index a18c6d3035bcf..1d4a76169f5e6 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 6adc9b8f83c36..df40cc6f13778 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 0f2f3e7a05f4a..1fcb9e4b2f81d 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 05cbf8b4a7c0d..c6f7cdfcb87c0 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index c8048acae532a..32900fe685cd3 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 6c08c42adadbf..ed638c66d8693 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index 3732941e29a16..284b3c211bd28 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 427694e3198c0..78b7d0de9ad6e 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index caf46a6fe5b8f..cdcfdfd5fca76 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 82511e46d3db9..28f8d66cfa79f 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 3c03fc3269c02..717ac3fdddee6 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index a074d145ccad7..1a5a502a98b77 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration'] --- import cloudDataMigrationObj from './cloud_data_migration.devdocs.json'; diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx index 7d7be7042e871..9c4e09b3cf821 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index 67259c4522e18..71af015d61281 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index a9ef5436c0e16..48ec716e150b8 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx index aa5d5b9ccb7e3..42f36240b9b10 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index b75e44bd971bb..9893e995b970b 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index e79afa3516a8b..404f0f578046c 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index d1691efa1599c..52e35cb9b1939 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index 7fd78a1f2475e..6259d4fb765c1 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index d9a0500edcd46..5bdd8b40262a7 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_quality.mdx b/api_docs/data_quality.mdx index 2d2b0de540f93..a6beaacd49f51 100644 --- a/api_docs/data_quality.mdx +++ b/api_docs/data_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataQuality title: "dataQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the dataQuality plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataQuality'] --- import dataQualityObj from './data_quality.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 5b73fe0aeef7b..f04279c922cea 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index ae45c7ba5ee52..a9870f5559bb1 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_usage.mdx b/api_docs/data_usage.mdx index dd00d7889b528..3caf106209440 100644 --- a/api_docs/data_usage.mdx +++ b/api_docs/data_usage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataUsage title: "dataUsage" image: https://source.unsplash.com/400x175/?github description: API docs for the dataUsage plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataUsage'] --- import dataUsageObj from './data_usage.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 7f2e8cba1e656..7377cfd6ab057 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index b566691e1cee9..45e3c652c9a50 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index f49e713c7434d..35fc66dd1ec06 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index b2d52e4949e79..2212e45f4731e 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index d5217a8ee0987..5a0f884c1b74e 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index d9dbeebde7c00..712664fb62ac1 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index a3378147cb3df..bc8f6e59967f3 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 3081d86c56602..90713de5f87f8 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 4c6d5f16227b9..f600568eb9804 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 4e817aabcd960..adac6f7bd8458 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 9abd20b20cc8f..798d6cf8ef684 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 153eee21ee358..9ec1e05328da4 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/discover_shared.mdx b/api_docs/discover_shared.mdx index 77375ba742076..d475fa791b9bb 100644 --- a/api_docs/discover_shared.mdx +++ b/api_docs/discover_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverShared title: "discoverShared" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverShared plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverShared'] --- import discoverSharedObj from './discover_shared.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index e129cc7e26e9c..07f21c506e931 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index 98dd298a170b3..7f971b1e2be08 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index a2b9487467200..479ec38980c53 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 82ac10f2148ec..6765f53629533 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index 98eef9fc73090..c3233c90f6000 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 1a4a10078cc28..ae8b5bbb23dac 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/entities_data_access.mdx b/api_docs/entities_data_access.mdx index a7ca1a5dba208..435ad9cb85373 100644 --- a/api_docs/entities_data_access.mdx +++ b/api_docs/entities_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entitiesDataAccess title: "entitiesDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the entitiesDataAccess plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entitiesDataAccess'] --- import entitiesDataAccessObj from './entities_data_access.devdocs.json'; diff --git a/api_docs/entity_manager.mdx b/api_docs/entity_manager.mdx index b34cb7cc51756..3f3459c6a4b2a 100644 --- a/api_docs/entity_manager.mdx +++ b/api_docs/entity_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entityManager title: "entityManager" image: https://source.unsplash.com/400x175/?github description: API docs for the entityManager plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entityManager'] --- import entityManagerObj from './entity_manager.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index d8bdd4929395d..550f0a626fcd7 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/esql.mdx b/api_docs/esql.mdx index fc397c0046c51..f3e517ab2de0c 100644 --- a/api_docs/esql.mdx +++ b/api_docs/esql.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esql title: "esql" image: https://source.unsplash.com/400x175/?github description: API docs for the esql plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esql'] --- import esqlObj from './esql.devdocs.json'; diff --git a/api_docs/esql_data_grid.mdx b/api_docs/esql_data_grid.mdx index d4532086c8c47..758b11bd9f2cf 100644 --- a/api_docs/esql_data_grid.mdx +++ b/api_docs/esql_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esqlDataGrid title: "esqlDataGrid" image: https://source.unsplash.com/400x175/?github description: API docs for the esqlDataGrid plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esqlDataGrid'] --- import esqlDataGridObj from './esql_data_grid.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 592c30eec9036..682ef70f5f165 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 5bd16bc626552..c01a3923d3a61 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index c2967ac574d5d..c584de3a85c59 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index f6ddd1f27b1ae..cbaa205fca251 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView'] --- import exploratoryViewObj from './exploratory_view.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index 4a08745f3569f..ff6680102f7e2 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index 411ad35b34d6c..257ec53c9591f 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 1fe62e61229fc..acfabf7226553 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 835c32c9bd66a..61b18e1143491 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index a12b00cd4c9a8..8f578a99acdb4 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index 4782a0f41f1e0..b3d1f15ca9909 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 6b029c56cdaef..f420aeb6a37c5 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index ae5de133fd00a..dcae8f1bdc294 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index e55dd07213349..49b813eb50c6e 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 840fd859081b1..32ca7be938bc3 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index 3d880718b8ca4..c8d37852ebb5d 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index b5bdf0a38c405..1fd34b4942ceb 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index a8d8a497dd52b..a3f52f52fb078 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 33f00282ea740..bac3fbe741486 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index 826c2caf917ea..1a320aca6a039 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 8d82bad346bf4..a4b7c9d58da31 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/fields_metadata.mdx b/api_docs/fields_metadata.mdx index ca1c185add4dd..89c0e522f5b2e 100644 --- a/api_docs/fields_metadata.mdx +++ b/api_docs/fields_metadata.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldsMetadata title: "fieldsMetadata" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldsMetadata plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldsMetadata'] --- import fieldsMetadataObj from './fields_metadata.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 0085647f9d734..7d8dc060bb16c 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 3f43b285c1a9a..f501a7df4a7e4 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx index 025722a4866cf..15b834f756341 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index a8961ece7fa41..98a47af890943 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 5d099345bc4e4..cc46f0d874345 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index 1b50e699a950b..161c4d1e50f48 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index cc6de976073a5..85b8cfafdadac 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx index 5014f71decba8..d2f44485e7a7f 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index f64b76ff273be..c6319a4ea7429 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index e50f7e3a32f8c..510ade3df9ba5 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/inference.mdx b/api_docs/inference.mdx index 65665e15920c0..6ef14184c25cb 100644 --- a/api_docs/inference.mdx +++ b/api_docs/inference.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inference title: "inference" image: https://source.unsplash.com/400x175/?github description: API docs for the inference plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inference'] --- import inferenceObj from './inference.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 429c4413038a5..4250e845d0609 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/ingest_pipelines.mdx b/api_docs/ingest_pipelines.mdx index 2ee1a68d217c7..41be784933754 100644 --- a/api_docs/ingest_pipelines.mdx +++ b/api_docs/ingest_pipelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ingestPipelines title: "ingestPipelines" image: https://source.unsplash.com/400x175/?github description: API docs for the ingestPipelines plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ingestPipelines'] --- import ingestPipelinesObj from './ingest_pipelines.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index f1c008e21771b..d31c0a34e4e2d 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/integration_assistant.mdx b/api_docs/integration_assistant.mdx index a85455a63007a..da75322856915 100644 --- a/api_docs/integration_assistant.mdx +++ b/api_docs/integration_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/integrationAssistant title: "integrationAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the integrationAssistant plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'integrationAssistant'] --- import integrationAssistantObj from './integration_assistant.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 47c6afe0c9078..a1bc6b3c5d26b 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/inventory.mdx b/api_docs/inventory.mdx index 1cb7082d3f13c..ef2ad79631e21 100644 --- a/api_docs/inventory.mdx +++ b/api_docs/inventory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inventory title: "inventory" image: https://source.unsplash.com/400x175/?github description: API docs for the inventory plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inventory'] --- import inventoryObj from './inventory.devdocs.json'; diff --git a/api_docs/investigate.mdx b/api_docs/investigate.mdx index 87f44768fb354..2e6459fee44e0 100644 --- a/api_docs/investigate.mdx +++ b/api_docs/investigate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigate title: "investigate" image: https://source.unsplash.com/400x175/?github description: API docs for the investigate plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigate'] --- import investigateObj from './investigate.devdocs.json'; diff --git a/api_docs/investigate_app.mdx b/api_docs/investigate_app.mdx index 545a91a232c09..c2f5c7b4a6d5a 100644 --- a/api_docs/investigate_app.mdx +++ b/api_docs/investigate_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigateApp title: "investigateApp" image: https://source.unsplash.com/400x175/?github description: API docs for the investigateApp plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigateApp'] --- import investigateAppObj from './investigate_app.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index 62bfb17756c68..5004cf28f8ac8 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant.mdx b/api_docs/kbn_ai_assistant.mdx index 1bdb9f3cba350..50a0f783d0e7c 100644 --- a/api_docs/kbn_ai_assistant.mdx +++ b/api_docs/kbn_ai_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant title: "@kbn/ai-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant'] --- import kbnAiAssistantObj from './kbn_ai_assistant.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant_common.mdx b/api_docs/kbn_ai_assistant_common.mdx index 253a99ac9cc86..bf0bdc7ddb516 100644 --- a/api_docs/kbn_ai_assistant_common.mdx +++ b/api_docs/kbn_ai_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant-common title: "@kbn/ai-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant-common'] --- import kbnAiAssistantCommonObj from './kbn_ai_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 627e44b543b06..69b9efacb6a40 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_pattern_analysis.mdx b/api_docs/kbn_aiops_log_pattern_analysis.mdx index 3ac6d4ff05009..6bf8c7b2f32e3 100644 --- a/api_docs/kbn_aiops_log_pattern_analysis.mdx +++ b/api_docs/kbn_aiops_log_pattern_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-pattern-analysis title: "@kbn/aiops-log-pattern-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-pattern-analysis plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-pattern-analysis'] --- import kbnAiopsLogPatternAnalysisObj from './kbn_aiops_log_pattern_analysis.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_rate_analysis.mdx b/api_docs/kbn_aiops_log_rate_analysis.mdx index 4a2fd77f7c023..75f85b2e4589d 100644 --- a/api_docs/kbn_aiops_log_rate_analysis.mdx +++ b/api_docs/kbn_aiops_log_rate_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-rate-analysis title: "@kbn/aiops-log-rate-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-rate-analysis plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-rate-analysis'] --- import kbnAiopsLogRateAnalysisObj from './kbn_aiops_log_rate_analysis.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index 32d7f4c3c3a09..ac12e11469a6a 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_comparators.mdx b/api_docs/kbn_alerting_comparators.mdx index 4feaa49a17150..7a466ff9e04a7 100644 --- a/api_docs/kbn_alerting_comparators.mdx +++ b/api_docs/kbn_alerting_comparators.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-comparators title: "@kbn/alerting-comparators" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-comparators plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-comparators'] --- import kbnAlertingComparatorsObj from './kbn_alerting_comparators.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 9dedba43b99a2..7d99e21f1fa46 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index 02d7a63ad4aef..3938fbbfa594f 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index b9a697028fc57..050a127ec9c7f 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_grouping.mdx b/api_docs/kbn_alerts_grouping.mdx index b06448de811ac..865311c497aa3 100644 --- a/api_docs/kbn_alerts_grouping.mdx +++ b/api_docs/kbn_alerts_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-grouping title: "@kbn/alerts-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-grouping plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-grouping'] --- import kbnAlertsGroupingObj from './kbn_alerts_grouping.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index 33728bc9dc136..58438314f8a86 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared'] --- import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index e1ef3af249dcf..d8b4928eadef6 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index aa70a949ae957..02a036a6e0853 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index bc467fe171284..1c7460fe378cb 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_data_view.mdx b/api_docs/kbn_apm_data_view.mdx index 2cec1ed1b98fb..abe04d9df84d6 100644 --- a/api_docs/kbn_apm_data_view.mdx +++ b/api_docs/kbn_apm_data_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-data-view title: "@kbn/apm-data-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-data-view plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-data-view'] --- import kbnApmDataViewObj from './kbn_apm_data_view.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index c1f2631dea746..5de6c9ef073e9 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index 011db1c669dce..6cbd9b9e1ae53 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_types.mdx b/api_docs/kbn_apm_types.mdx index a9cc8797c76ee..8d63bdfb06505 100644 --- a/api_docs/kbn_apm_types.mdx +++ b/api_docs/kbn_apm_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-types title: "@kbn/apm-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-types plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-types'] --- import kbnApmTypesObj from './kbn_apm_types.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index c7fe77b8500fc..f5e7153bc06d7 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_avc_banner.mdx b/api_docs/kbn_avc_banner.mdx index 89634d84f7083..70ea4af44630b 100644 --- a/api_docs/kbn_avc_banner.mdx +++ b/api_docs/kbn_avc_banner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-avc-banner title: "@kbn/avc-banner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/avc-banner plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/avc-banner'] --- import kbnAvcBannerObj from './kbn_avc_banner.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index ba94431c3fcb8..345030e3a3367 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_bfetch_error.mdx b/api_docs/kbn_bfetch_error.mdx index 617d6de6e404d..8c91cf2492cda 100644 --- a/api_docs/kbn_bfetch_error.mdx +++ b/api_docs/kbn_bfetch_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-bfetch-error title: "@kbn/bfetch-error" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/bfetch-error plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bfetch-error'] --- import kbnBfetchErrorObj from './kbn_bfetch_error.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index 3d74ed796e14b..1a2c9db3ab4ac 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index 7be9a90168203..f3aeefe61eefd 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 1f8589fca306c..517ad1d81b596 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cbor.mdx b/api_docs/kbn_cbor.mdx index f7d9793353d73..ef097c72cbddb 100644 --- a/api_docs/kbn_cbor.mdx +++ b/api_docs/kbn_cbor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cbor title: "@kbn/cbor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cbor plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cbor'] --- import kbnCborObj from './kbn_cbor.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index 9b3c87999f21f..315204a50b0db 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions'] --- import kbnCellActionsObj from './kbn_cell_actions.devdocs.json'; diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx index a5bfe8c00fd53..c6f0d947d57c0 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common'] --- import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index 5fd76e6b84b70..81ad4cca13a91 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 345dd8f726d6f..6ab31a81559b6 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index 6504abc10a917..fb2cd367d726f 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index 9c9e0a68350c6..c14b10e7e0011 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index a5419f6b76c60..eb21eca60b779 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture.mdx b/api_docs/kbn_cloud_security_posture.mdx index 2f7c14ebd137e..a735474872de6 100644 --- a/api_docs/kbn_cloud_security_posture.mdx +++ b/api_docs/kbn_cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture title: "@kbn/cloud-security-posture" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture'] --- import kbnCloudSecurityPostureObj from './kbn_cloud_security_posture.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture_common.mdx b/api_docs/kbn_cloud_security_posture_common.mdx index 9a8c59fb382e0..fa1e5919f46ee 100644 --- a/api_docs/kbn_cloud_security_posture_common.mdx +++ b/api_docs/kbn_cloud_security_posture_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture-common title: "@kbn/cloud-security-posture-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture-common'] --- import kbnCloudSecurityPostureCommonObj from './kbn_cloud_security_posture_common.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture_graph.mdx b/api_docs/kbn_cloud_security_posture_graph.mdx index 0b4305e277b00..c50bb068f6827 100644 --- a/api_docs/kbn_cloud_security_posture_graph.mdx +++ b/api_docs/kbn_cloud_security_posture_graph.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture-graph title: "@kbn/cloud-security-posture-graph" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture-graph plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture-graph'] --- import kbnCloudSecurityPostureGraphObj from './kbn_cloud_security_posture_graph.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index e5d7b17ac0165..d96d3f80c74cd 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mock.mdx b/api_docs/kbn_code_editor_mock.mdx index 1cc99f165a432..c7a9581966097 100644 --- a/api_docs/kbn_code_editor_mock.mdx +++ b/api_docs/kbn_code_editor_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mock title: "@kbn/code-editor-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mock plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mock'] --- import kbnCodeEditorMockObj from './kbn_code_editor_mock.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index 7b6bc3c9dec39..cfc8000891d8d 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index b0714737c300b..c4aac5800aa80 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index b5efec6765997..2702a9fd5f6e9 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index b459f3e4ea7ec..ed8a9789e3049 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index 83e7fa6614d00..d94f1ff13af97 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx index cd3598815bcfb..c27a84a82ef77 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_insights_public.mdx b/api_docs/kbn_content_management_content_insights_public.mdx index 59966f66e738b..0d3add8edccf4 100644 --- a/api_docs/kbn_content_management_content_insights_public.mdx +++ b/api_docs/kbn_content_management_content_insights_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-insights-public title: "@kbn/content-management-content-insights-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-insights-public plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-insights-public'] --- import kbnContentManagementContentInsightsPublicObj from './kbn_content_management_content_insights_public.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_insights_server.mdx b/api_docs/kbn_content_management_content_insights_server.mdx index ac0ea6d5358e1..dcd23130af765 100644 --- a/api_docs/kbn_content_management_content_insights_server.mdx +++ b/api_docs/kbn_content_management_content_insights_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-insights-server title: "@kbn/content-management-content-insights-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-insights-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-insights-server'] --- import kbnContentManagementContentInsightsServerObj from './kbn_content_management_content_insights_server.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_public.mdx b/api_docs/kbn_content_management_favorites_public.mdx index d30acbdef8d01..28d48a25c9e00 100644 --- a/api_docs/kbn_content_management_favorites_public.mdx +++ b/api_docs/kbn_content_management_favorites_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-public title: "@kbn/content-management-favorites-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-public plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-public'] --- import kbnContentManagementFavoritesPublicObj from './kbn_content_management_favorites_public.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_server.mdx b/api_docs/kbn_content_management_favorites_server.mdx index 7632cc396940b..c7ca7c39de4c2 100644 --- a/api_docs/kbn_content_management_favorites_server.mdx +++ b/api_docs/kbn_content_management_favorites_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-server title: "@kbn/content-management-favorites-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-server'] --- import kbnContentManagementFavoritesServerObj from './kbn_content_management_favorites_server.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index d8174760fca70..2518aeabf2560 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view'] --- import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx index a2c69d22ffb93..92c217e454071 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index 1cd5dbf5a1e6d..6db246664d2ab 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index ab857e90954e8..f96dfc69eb6b2 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_user_profiles.mdx b/api_docs/kbn_content_management_user_profiles.mdx index c06ce848b1e5c..c6e62819c9c52 100644 --- a/api_docs/kbn_content_management_user_profiles.mdx +++ b/api_docs/kbn_content_management_user_profiles.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-user-profiles title: "@kbn/content-management-user-profiles" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-user-profiles plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-user-profiles'] --- import kbnContentManagementUserProfilesObj from './kbn_content_management_user_profiles.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index e8ada8de29443..69a8d9f7e9aaf 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 817c484edc6f2..3fbe56fe0cb89 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index 6a3d34f7ebba2..d8c140ecc82d9 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index d3c586ba2c5fe..92b9284c46275 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index 4499e60f58af5..8e7967053c0cc 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index 39d1b7f43b4ff..b959c5e140ecd 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index 796a139e1dc2a..ccebe9d980a83 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index da4bbb209648f..18c329859b443 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index fdcd58c799f2d..831f49645ed1b 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index 1304128ac4102..b6e40c468c53c 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index ce7472201e8aa..e5051164644d5 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index 32edd5923d5f1..fc1b41e732e65 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index 71eadc57df575..eed8546dffc74 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx index 0d8d3e693e52d..ece67b7da94a3 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal'] --- import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 5cff512d8848c..10323744150cc 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 4b0fa4cb9d236..60baa95846623 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index eb1704f3c08b3..778cc1ebd4eb1 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index a3a3eda66f45c..ba20297680269 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index e030930c74d37..ceed04d90795e 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 7c89d5d0278f0..91d4d279bf172 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index 42db7f5dbcc2b..bd359f6706587 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index bcab3a0ec5996..8ab2495699f2d 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index 2b57efc5509d9..99633ad5c448d 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index 17bcac88c638e..2cb6786a02040 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 15f81a0a294be..d9d619ed48aa7 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx index 1e21421872d62..7981c7b5d0cf0 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser'] --- import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx index 3719ccdd23c9e..8d8fff22f076c 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal'] --- import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx index 97777c7fc11a6..6835256a88415 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks'] --- import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx index 761095947d5b7..ce3cc0bdae9bf 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common'] --- import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx index 6e9379cf9a7ab..adee2c9b5abae 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server'] --- import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx index bd942d1ae98ba..b8adad7c595e5 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal'] --- import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx index f4a89ee6b6ba9..9c5ab8625eea8 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks'] --- import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index d5f6f2e94e95b..fcbb5468a36d7 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index e2b09e79a3422..376a530f4ba10 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index 67ee81bcea539..07271f012d139 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index 6a7c6af80ac5b..879be3d22adba 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index 9c0a9434a1c5f..863fcf9fbb44d 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index e7bf57eec988e..0f0e87b13b028 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index e59795f442791..9641ffc9fcf23 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 044a5910b73cf..0552e4497d7e7 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index 1e0b8143cdbe7..1d61222897f85 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index 293c9daad1e46..d2cf59f10abb7 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index 02c8e1ec8805e..003bcb53bb579 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index 9545798a71645..46b9d6127d339 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index e1585c1858ffc..611a2c9790245 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index 8d9bfbdba122f..0e7068bbddfc6 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index b534ea1082acc..79794d3eb0d84 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index db865b611d1a3..7640b5f0c0b29 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index 1327d095cc50d..ebb9ac89dbca4 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index d913ff3d71aea..df14d0335e664 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index 2a5d27bac4f88..46d90613dfb75 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index da413225fcf97..54c4296c26748 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index ff258234fe79b..44a9381616546 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index 1328bca46a00d..9b0e1d7cd2511 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index 642ed9908535d..fadb0ff75230a 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index b0771e6e93730..9133efd54092d 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index 8f180f4f9a31c..98835744bb91a 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index d3d9fe35628dd..d904279e0c57e 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index b042138eb05c3..f902f5e832ab1 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser.mdx b/api_docs/kbn_core_feature_flags_browser.mdx index 636ad0c78805b..285dc9ee6b74a 100644 --- a/api_docs/kbn_core_feature_flags_browser.mdx +++ b/api_docs/kbn_core_feature_flags_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser title: "@kbn/core-feature-flags-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser'] --- import kbnCoreFeatureFlagsBrowserObj from './kbn_core_feature_flags_browser.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser_internal.mdx b/api_docs/kbn_core_feature_flags_browser_internal.mdx index ab9d04c2612f9..9a1f6d3bc2283 100644 --- a/api_docs/kbn_core_feature_flags_browser_internal.mdx +++ b/api_docs/kbn_core_feature_flags_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser-internal title: "@kbn/core-feature-flags-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser-internal'] --- import kbnCoreFeatureFlagsBrowserInternalObj from './kbn_core_feature_flags_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser_mocks.mdx b/api_docs/kbn_core_feature_flags_browser_mocks.mdx index c5e786998cd00..c27a0194df375 100644 --- a/api_docs/kbn_core_feature_flags_browser_mocks.mdx +++ b/api_docs/kbn_core_feature_flags_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser-mocks title: "@kbn/core-feature-flags-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser-mocks'] --- import kbnCoreFeatureFlagsBrowserMocksObj from './kbn_core_feature_flags_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server.mdx b/api_docs/kbn_core_feature_flags_server.mdx index c92e3b578eade..e84893c655dac 100644 --- a/api_docs/kbn_core_feature_flags_server.mdx +++ b/api_docs/kbn_core_feature_flags_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server title: "@kbn/core-feature-flags-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server'] --- import kbnCoreFeatureFlagsServerObj from './kbn_core_feature_flags_server.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server_internal.mdx b/api_docs/kbn_core_feature_flags_server_internal.mdx index 3a6dfe415acbc..91d2b69f5c059 100644 --- a/api_docs/kbn_core_feature_flags_server_internal.mdx +++ b/api_docs/kbn_core_feature_flags_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server-internal title: "@kbn/core-feature-flags-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server-internal'] --- import kbnCoreFeatureFlagsServerInternalObj from './kbn_core_feature_flags_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server_mocks.mdx b/api_docs/kbn_core_feature_flags_server_mocks.mdx index 1220a8ddafd8b..aa8218e1896dd 100644 --- a/api_docs/kbn_core_feature_flags_server_mocks.mdx +++ b/api_docs/kbn_core_feature_flags_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server-mocks title: "@kbn/core-feature-flags-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server-mocks'] --- import kbnCoreFeatureFlagsServerMocksObj from './kbn_core_feature_flags_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index e5a0477574a71..80786b66ed41b 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index d1c376e00b622..66dda94404091 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index b0924cff79943..f18bb15fb2e3a 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index 592d65b6f7e6f..b30d645984752 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index d0f6ee5c2869a..135f59ee2c748 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx index c14d63208cea7..b6a13821b72f8 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server'] --- import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx index 42d9a53e71f5f..1ded0859657aa 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server'] --- import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx index 9ccaa6c398abc..2dae0698964ee 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal'] --- import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx index 04363833fe4bc..69560e373e231 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index 811d78464721f..df4482c982cb1 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index 1084a401cb6f7..8719d9f09c51d 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index dc9f80e66137b..6ba5c45d4db60 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index fc0b6bed39305..cb1bdc95d4b47 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index 0eac671365ce5..2da1a3ec6027f 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 83b5a100219f0..74b2073532ff9 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index 50de96a02a025..be676dc05245a 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index 56e7fd4bfc7ee..f2ff9bdb6e36c 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index d532164959326..4b9f881a44f69 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index 510b334e49b36..7db15480d225c 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 429a7e0d8166b..1b458340d2486 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index e357a4c2a1c0f..e0f1dfdc61cd0 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index 64b2346fafcac..1ef72819a8099 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index b61acb6e2ad5b..b83b929721599 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser'] --- import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx index 6ff3d50fd7264..667cda6fb6215 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks'] --- import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx index 6bfc57433d3d5..9e859972cbdc0 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server'] --- import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx index 3ac0ac8133154..1f063ac85cd29 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks'] --- import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx index 40b3cda770c19..b56ce1ecf29c2 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks'] --- import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx index b4dac584b4c4f..adb44256bf9a9 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal'] --- import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index a6eb32d7139fd..718808bc8fd89 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index da5d054eb4baa..d4dd90326defb 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index eddc430b82760..c27b62fb2e3c6 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index e65aa17707f59..5ca7af963f4c2 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index 58f18d80c3bb1..007b09e41fac6 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index c838253c7c1fb..c0997045ceaae 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index 2e22cc3e916b2..74c7ddb144e80 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index 657e068f09672..0e7a80c1985d8 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index fce88fa242491..4fd14dcf4534f 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 770be49eda734..fb5abd4950149 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index ff49a78d53041..55dc181d76880 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index 2df0a80a888c9..b7df422cfe3bf 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index 56f9d935c5590..6475bac99b4a5 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index e63ede61e4242..51d16b8a9149d 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index 767124d026ac5..2e944a848f543 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index 828e98f503fd6..d38137bd5fc51 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index 6f4679f53697b..444e3c48b2d1d 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index 8036cead8d1ce..e7c50095f7605 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx index f53569aa9a570..bae4b985218f4 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser'] --- import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx index 72b240d5d8a32..05c0d97005368 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index 2d707ca9ff117..e7ecafc0935ad 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index 367c9a0ef44f5..748c8975ea5e1 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index cc1f0a19294c3..b45e16a0b2b8f 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server'] --- import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx index 8c54fe929190b..8d99aa9770eeb 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks'] --- import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index 45c88e84c20aa..d8859f3808c8c 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index 44db060a96025..b88d84b4903d4 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index dd315a3adceb1..2172f06678a02 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx index 336a2c915fdab..eb8583c74de08 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal'] --- import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx index 0232153b2ea6d..2b1466e7bcbfc 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks'] --- import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx index 4abc7915c35f1..1921754e3de5f 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index c755f5027b961..939135f9971d0 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index d223f12b7460a..ce839d7769549 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index 781f5f3627f11..b55660ed8f279 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index 18f403c3ee6d4..e8fd0678aed29 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index 8b3c7a3e0ce57..763a7de132e4d 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index efe5f96c3c369..df898fd75958e 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index 4b67a06f2a1b8..df6518c1bcebe 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index 201ea7512af6d..a2d2801a77323 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index 945420aa7d2de..894f50be83ebd 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index 43833af2b30f2..a34b28a867b01 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index 67f27bf393a01..4447d3fab92a0 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index 6ea7824d2cf74..614fd45e1f9e3 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index ffc932d56c3dd..d795ecd2811fd 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 9b22e7297c321..fc280bfdd6ca3 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index 9800f5165b073..afafb032030f2 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index eb339531410b4..59a29ad072677 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index 7aeac238b9d4d..0efe11962ef89 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser.mdx b/api_docs/kbn_core_security_browser.mdx index 7750df9402d8e..5e344dd791047 100644 --- a/api_docs/kbn_core_security_browser.mdx +++ b/api_docs/kbn_core_security_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser title: "@kbn/core-security-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser'] --- import kbnCoreSecurityBrowserObj from './kbn_core_security_browser.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_internal.mdx b/api_docs/kbn_core_security_browser_internal.mdx index 1ec882e7ca5ba..39dff54b2bb35 100644 --- a/api_docs/kbn_core_security_browser_internal.mdx +++ b/api_docs/kbn_core_security_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-internal title: "@kbn/core-security-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-internal'] --- import kbnCoreSecurityBrowserInternalObj from './kbn_core_security_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_mocks.mdx b/api_docs/kbn_core_security_browser_mocks.mdx index c96d9386c3a45..d888846743061 100644 --- a/api_docs/kbn_core_security_browser_mocks.mdx +++ b/api_docs/kbn_core_security_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-mocks title: "@kbn/core-security-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-mocks'] --- import kbnCoreSecurityBrowserMocksObj from './kbn_core_security_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_security_common.mdx b/api_docs/kbn_core_security_common.mdx index b3de3dab5c786..4b04c40416e1f 100644 --- a/api_docs/kbn_core_security_common.mdx +++ b/api_docs/kbn_core_security_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-common title: "@kbn/core-security-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-common'] --- import kbnCoreSecurityCommonObj from './kbn_core_security_common.devdocs.json'; diff --git a/api_docs/kbn_core_security_server.mdx b/api_docs/kbn_core_security_server.mdx index fe711bdca08e6..fe8c488929631 100644 --- a/api_docs/kbn_core_security_server.mdx +++ b/api_docs/kbn_core_security_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server title: "@kbn/core-security-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server'] --- import kbnCoreSecurityServerObj from './kbn_core_security_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_internal.mdx b/api_docs/kbn_core_security_server_internal.mdx index f3ed4b085a245..5fceb18879350 100644 --- a/api_docs/kbn_core_security_server_internal.mdx +++ b/api_docs/kbn_core_security_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-internal title: "@kbn/core-security-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-internal'] --- import kbnCoreSecurityServerInternalObj from './kbn_core_security_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_mocks.mdx b/api_docs/kbn_core_security_server_mocks.mdx index 64024b55c8226..8b9330c72cc7e 100644 --- a/api_docs/kbn_core_security_server_mocks.mdx +++ b/api_docs/kbn_core_security_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-mocks title: "@kbn/core-security-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-mocks'] --- import kbnCoreSecurityServerMocksObj from './kbn_core_security_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 8a2d64ac02869..f63b094e6ad7c 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index 1057b9baa51a3..717b069630f68 100644 --- a/api_docs/kbn_core_status_common_internal.mdx +++ b/api_docs/kbn_core_status_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal title: "@kbn/core-status-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal'] --- import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index 68437619f5ed4..a51277e1d3a49 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index a42a4d83e6d28..444b82671c712 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index 44a1a6e51df75..3158b1b1349c6 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index 661b4f1502b50..d7d00ffaaf55a 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index 693fc1c2e1224..c6cca95ca8352 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx index b103b4d15d63e..8db368d51d3da 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index f2fee6ccb1c1d..5434a44577afd 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index b6811533467d9..9ef841a1e6891 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer'] --- import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx index 9f41d87090a7e..e499ff1b5819f 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils'] --- import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index ad41574bfa449..bea0dfa52b15a 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 2478515f7795b..b23b4efdb681d 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index 3f4de67e994d3..4960c9d5a2582 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index 56508a08eb445..30e7fb2a2dfe2 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index 33e1d14ac2d36..0b9ec9af368f4 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index ae9a3d430df31..6fda6f1f41510 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index 113029b122627..91f1497d4a7f0 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index 176a89798f4a9..e35b13f059cdf 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index 1a5ae77b98cdf..d15b6aec58c09 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index 0c0873a3bf99b..f7d38e1c8fbf2 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index e65489a7a8e7a..921f6a6f17600 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index 6629dec623c1f..2b65f8d0290ed 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser.mdx b/api_docs/kbn_core_user_profile_browser.mdx index 43949a3dbfdbd..641d42b8b3fcd 100644 --- a/api_docs/kbn_core_user_profile_browser.mdx +++ b/api_docs/kbn_core_user_profile_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser title: "@kbn/core-user-profile-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser'] --- import kbnCoreUserProfileBrowserObj from './kbn_core_user_profile_browser.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_internal.mdx b/api_docs/kbn_core_user_profile_browser_internal.mdx index 92fe287a7db6a..061c118f5c64e 100644 --- a/api_docs/kbn_core_user_profile_browser_internal.mdx +++ b/api_docs/kbn_core_user_profile_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-internal title: "@kbn/core-user-profile-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-internal'] --- import kbnCoreUserProfileBrowserInternalObj from './kbn_core_user_profile_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_mocks.mdx b/api_docs/kbn_core_user_profile_browser_mocks.mdx index 56fe81fa055b2..c58812d6cde34 100644 --- a/api_docs/kbn_core_user_profile_browser_mocks.mdx +++ b/api_docs/kbn_core_user_profile_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-mocks title: "@kbn/core-user-profile-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-mocks'] --- import kbnCoreUserProfileBrowserMocksObj from './kbn_core_user_profile_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_common.mdx b/api_docs/kbn_core_user_profile_common.mdx index 3e7b37bf0d3b6..d69496a17206d 100644 --- a/api_docs/kbn_core_user_profile_common.mdx +++ b/api_docs/kbn_core_user_profile_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-common title: "@kbn/core-user-profile-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-common'] --- import kbnCoreUserProfileCommonObj from './kbn_core_user_profile_common.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server.mdx b/api_docs/kbn_core_user_profile_server.mdx index 1177664d89c2c..2e33a944773c1 100644 --- a/api_docs/kbn_core_user_profile_server.mdx +++ b/api_docs/kbn_core_user_profile_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server title: "@kbn/core-user-profile-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server'] --- import kbnCoreUserProfileServerObj from './kbn_core_user_profile_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_internal.mdx b/api_docs/kbn_core_user_profile_server_internal.mdx index a8a3c336da6b3..6709c228d2933 100644 --- a/api_docs/kbn_core_user_profile_server_internal.mdx +++ b/api_docs/kbn_core_user_profile_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-internal title: "@kbn/core-user-profile-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-internal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-internal'] --- import kbnCoreUserProfileServerInternalObj from './kbn_core_user_profile_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_mocks.mdx b/api_docs/kbn_core_user_profile_server_mocks.mdx index 75edd38922c6b..7a6a687d16336 100644 --- a/api_docs/kbn_core_user_profile_server_mocks.mdx +++ b/api_docs/kbn_core_user_profile_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-mocks title: "@kbn/core-user-profile-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-mocks'] --- import kbnCoreUserProfileServerMocksObj from './kbn_core_user_profile_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index 1132d34f5703e..18d74fbad5d37 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index f6dd30a005eb6..33695332ae657 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks'] --- import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index 9a0943e513023..9ecb9d49fbbb1 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index 7dbdcdba0ce14..c65653a4f5b39 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index f03d9502bf08e..aa64562475335 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index bba53539f6eac..1ddf803fc346e 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 7b69e5842b18f..13bad6f463d96 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_forge.mdx b/api_docs/kbn_data_forge.mdx index 55475ce173e4c..18b938a4ceafc 100644 --- a/api_docs/kbn_data_forge.mdx +++ b/api_docs/kbn_data_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-forge title: "@kbn/data-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-forge plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-forge'] --- import kbnDataForgeObj from './kbn_data_forge.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index 4602a206806b7..e30bf8f40ea8c 100644 --- a/api_docs/kbn_data_service.mdx +++ b/api_docs/kbn_data_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service title: "@kbn/data-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-service plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_data_stream_adapter.mdx b/api_docs/kbn_data_stream_adapter.mdx index 0bb859672255c..acd49bb1c9c3c 100644 --- a/api_docs/kbn_data_stream_adapter.mdx +++ b/api_docs/kbn_data_stream_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-stream-adapter title: "@kbn/data-stream-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-stream-adapter plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-stream-adapter'] --- import kbnDataStreamAdapterObj from './kbn_data_stream_adapter.devdocs.json'; diff --git a/api_docs/kbn_data_view_utils.mdx b/api_docs/kbn_data_view_utils.mdx index 6e58b62f005fa..4dd5a7c70687f 100644 --- a/api_docs/kbn_data_view_utils.mdx +++ b/api_docs/kbn_data_view_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-view-utils title: "@kbn/data-view-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-view-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-view-utils'] --- import kbnDataViewUtilsObj from './kbn_data_view_utils.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index f17be3e8bce27..b64177f3aa1ef 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx index 93bc6467cd13d..f153840fd9a5b 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics'] --- import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx index 899e43067097e..a04f96d4495b7 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_fleet.mdx b/api_docs/kbn_deeplinks_fleet.mdx index 37ba883c9ba1a..4c1d88110dd29 100644 --- a/api_docs/kbn_deeplinks_fleet.mdx +++ b/api_docs/kbn_deeplinks_fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-fleet title: "@kbn/deeplinks-fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-fleet plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-fleet'] --- import kbnDeeplinksFleetObj from './kbn_deeplinks_fleet.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index 66fb016211271..b9a42ee5d6c72 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index 2cec5a0b4a766..b40dfc2d05b5e 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index 331b6050e0b07..4c09fc62f297c 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability'] --- import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx index e5eb921bb2e27..e30c4ba755528 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_security.mdx b/api_docs/kbn_deeplinks_security.mdx index 411d9afbd91ac..0bc0c75772836 100644 --- a/api_docs/kbn_deeplinks_security.mdx +++ b/api_docs/kbn_deeplinks_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-security title: "@kbn/deeplinks-security" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-security plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-security'] --- import kbnDeeplinksSecurityObj from './kbn_deeplinks_security.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_shared.mdx b/api_docs/kbn_deeplinks_shared.mdx index 30df2a5b97eac..c1dd02ede7f8c 100644 --- a/api_docs/kbn_deeplinks_shared.mdx +++ b/api_docs/kbn_deeplinks_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-shared title: "@kbn/deeplinks-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-shared plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-shared'] --- import kbnDeeplinksSharedObj from './kbn_deeplinks_shared.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index 7ba8fca2cb2d0..88d7e4eab49b1 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics'] --- import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json'; diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx index b4019b3b5db07..6f7a316ba6e5e 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools'] --- import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json'; diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx index c89b3511a758e..adeba017b974e 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management'] --- import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json'; diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index 445fd253d032a..ad07159e4a6d3 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml'] --- import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index d59995166f2e2..c1dc9f3b4c67f 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index 8b0829d3a1a00..6c349754cd0d4 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index da9ae4250445b..affb84e133f69 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index 4a07e27a3c040..d3be92557402b 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_contextual_components.mdx b/api_docs/kbn_discover_contextual_components.mdx index 6867ec2510890..43741f228b63a 100644 --- a/api_docs/kbn_discover_contextual_components.mdx +++ b/api_docs/kbn_discover_contextual_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-contextual-components title: "@kbn/discover-contextual-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-contextual-components plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-contextual-components'] --- import kbnDiscoverContextualComponentsObj from './kbn_discover_contextual_components.devdocs.json'; diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index 901d3d490a700..077389bd3e85d 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 894105cf13952..dd5b3fd15c356 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index f0b148567ff36..3403895e4f557 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx index 2702531403f11..ccfcb07db1a67 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop'] --- import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index b82d6798c186c..49c9e7174ea51 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index 1d3da5d2aa8ef..bdba3a8a40552 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index 465003a47f855..344a50712f427 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index a5401fbcac74f..a798bf55dfcbd 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index bf5949172a55c..7dd53c9a6e12f 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_entities_schema.mdx b/api_docs/kbn_entities_schema.mdx index b9979fac7d3d8..38e018b197d02 100644 --- a/api_docs/kbn_entities_schema.mdx +++ b/api_docs/kbn_entities_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-entities-schema title: "@kbn/entities-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/entities-schema plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/entities-schema'] --- import kbnEntitiesSchemaObj from './kbn_entities_schema.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 927cd101241e8..64c88a31a9141 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 340d8ec63478a..4fd0bddee77dc 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index d4e21460f6b4f..1215a2044ab96 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 15c99c6bf809b..77243315d5502 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index 632aeb5671af7..10da4a8198033 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index 5747292f2c590..75e22b9832954 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_esql_ast.mdx b/api_docs/kbn_esql_ast.mdx index 9bf5a7c6f51ed..d0396d3a27b20 100644 --- a/api_docs/kbn_esql_ast.mdx +++ b/api_docs/kbn_esql_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-ast title: "@kbn/esql-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-ast plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-ast'] --- import kbnEsqlAstObj from './kbn_esql_ast.devdocs.json'; diff --git a/api_docs/kbn_esql_editor.mdx b/api_docs/kbn_esql_editor.mdx index 5659b764ff728..faf4f4334fb3a 100644 --- a/api_docs/kbn_esql_editor.mdx +++ b/api_docs/kbn_esql_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-editor title: "@kbn/esql-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-editor plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-editor'] --- import kbnEsqlEditorObj from './kbn_esql_editor.devdocs.json'; diff --git a/api_docs/kbn_esql_utils.mdx b/api_docs/kbn_esql_utils.mdx index bca306acf24b4..8b751f0cfe12f 100644 --- a/api_docs/kbn_esql_utils.mdx +++ b/api_docs/kbn_esql_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-utils title: "@kbn/esql-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-utils'] --- import kbnEsqlUtilsObj from './kbn_esql_utils.devdocs.json'; diff --git a/api_docs/kbn_esql_validation_autocomplete.mdx b/api_docs/kbn_esql_validation_autocomplete.mdx index 6c710a7aa49c5..f88883601f019 100644 --- a/api_docs/kbn_esql_validation_autocomplete.mdx +++ b/api_docs/kbn_esql_validation_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-validation-autocomplete title: "@kbn/esql-validation-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-validation-autocomplete plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-validation-autocomplete'] --- import kbnEsqlValidationAutocompleteObj from './kbn_esql_validation_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index 2b12716b66814..a5b42c806e225 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index 1a51d1040b41f..9d3688691f294 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index c56e243ae711f..e3c5ce3e147d7 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index c7529d970030b..0855785dc7caf 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index 7d9115b4887eb..16363a179caf8 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 481b6a1d284bc..3ad5ed6198db5 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_formatters.mdx b/api_docs/kbn_formatters.mdx index 99d87e97070e5..9729d5c0a45e3 100644 --- a/api_docs/kbn_formatters.mdx +++ b/api_docs/kbn_formatters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-formatters title: "@kbn/formatters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/formatters plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/formatters'] --- import kbnFormattersObj from './kbn_formatters.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index eec2a571d5d36..269f132d8adf5 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index 3306c9795c316..8b3bd0de28eb2 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index f0afa1eda6503..be114f8da4d22 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx index eb63bbaf11f08..917e28a54505f 100644 --- a/api_docs/kbn_generate_console_definitions.mdx +++ b/api_docs/kbn_generate_console_definitions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions title: "@kbn/generate-console-definitions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-console-definitions plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions'] --- import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index 02a224c014d81..670b0500e0599 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_grid_layout.mdx b/api_docs/kbn_grid_layout.mdx index 8f1e18b40d9b1..0b74d30ac6bc5 100644 --- a/api_docs/kbn_grid_layout.mdx +++ b/api_docs/kbn_grid_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grid-layout title: "@kbn/grid-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grid-layout plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grid-layout'] --- import kbnGridLayoutObj from './kbn_grid_layout.devdocs.json'; diff --git a/api_docs/kbn_grouping.mdx b/api_docs/kbn_grouping.mdx index c004cac0b227a..f8ae6f8a12498 100644 --- a/api_docs/kbn_grouping.mdx +++ b/api_docs/kbn_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grouping title: "@kbn/grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grouping plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grouping'] --- import kbnGroupingObj from './kbn_grouping.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index a2613f1787225..52c84e611789f 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding'] --- import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index a329af3011ab2..b18e62fbc5a70 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index 66f2c8d7b0ebc..834f02dfae821 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx index 5ebb8e9a2c8fb..c413a143b7158 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server'] --- import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index a5f6190bfbd27..e7d02c9808f6a 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index 7d297ed6addf2..14d3c9808799f 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index 7130364f48245..2bbd69c69e716 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx index 23187d49ff8b8..19852b063e8f9 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react'] --- import kbnI18nReactObj from './kbn_i18n_react.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index 18c26f3d73cbc..ea1aed87b262a 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_index_management_shared_types.mdx b/api_docs/kbn_index_management_shared_types.mdx index 707fa999972e4..37b896018af11 100644 --- a/api_docs/kbn_index_management_shared_types.mdx +++ b/api_docs/kbn_index_management_shared_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-management-shared-types title: "@kbn/index-management-shared-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-management-shared-types plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-management-shared-types'] --- import kbnIndexManagementSharedTypesObj from './kbn_index_management_shared_types.devdocs.json'; diff --git a/api_docs/kbn_inference_common.mdx b/api_docs/kbn_inference_common.mdx index 004113fd60340..1169da2685c52 100644 --- a/api_docs/kbn_inference_common.mdx +++ b/api_docs/kbn_inference_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference-common title: "@kbn/inference-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference-common'] --- import kbnInferenceCommonObj from './kbn_inference_common.devdocs.json'; diff --git a/api_docs/kbn_inference_integration_flyout.mdx b/api_docs/kbn_inference_integration_flyout.mdx index ef3b4c76d2eab..1832b87f74402 100644 --- a/api_docs/kbn_inference_integration_flyout.mdx +++ b/api_docs/kbn_inference_integration_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference_integration_flyout title: "@kbn/inference_integration_flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference_integration_flyout plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference_integration_flyout'] --- import kbnInferenceIntegrationFlyoutObj from './kbn_inference_integration_flyout.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index f147d6ba87818..8f8a8073d7291 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge'] --- import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index af293fff9638c..10febd823c2f5 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_investigation_shared.mdx b/api_docs/kbn_investigation_shared.mdx index e72e261834945..651519d2db9c0 100644 --- a/api_docs/kbn_investigation_shared.mdx +++ b/api_docs/kbn_investigation_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-investigation-shared title: "@kbn/investigation-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/investigation-shared plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/investigation-shared'] --- import kbnInvestigationSharedObj from './kbn_investigation_shared.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index f9e4c2c25751a..4c503ccbeb3a7 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_ipynb.mdx b/api_docs/kbn_ipynb.mdx index fbcb567ac44a1..5556907f40036 100644 --- a/api_docs/kbn_ipynb.mdx +++ b/api_docs/kbn_ipynb.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ipynb title: "@kbn/ipynb" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ipynb plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ipynb'] --- import kbnIpynbObj from './kbn_ipynb.devdocs.json'; diff --git a/api_docs/kbn_item_buffer.mdx b/api_docs/kbn_item_buffer.mdx index 60ab55c256c31..5e22882c74490 100644 --- a/api_docs/kbn_item_buffer.mdx +++ b/api_docs/kbn_item_buffer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-item-buffer title: "@kbn/item-buffer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/item-buffer plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/item-buffer'] --- import kbnItemBufferObj from './kbn_item_buffer.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index c68643de9dbc7..a3a71c439bee0 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx index 65845c964ab4d..afedbb6c915a5 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys'] --- import kbnJourneysObj from './kbn_journeys.devdocs.json'; diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx index 13b7d4f733a67..32f7b331e2449 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_json_schemas.mdx b/api_docs/kbn_json_schemas.mdx index 6c968cb61d051..aaa22be8f62a2 100644 --- a/api_docs/kbn_json_schemas.mdx +++ b/api_docs/kbn_json_schemas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-schemas title: "@kbn/json-schemas" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-schemas plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-schemas'] --- import kbnJsonSchemasObj from './kbn_json_schemas.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index f53c87ac20596..b23761eb34109 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation.mdx b/api_docs/kbn_language_documentation.mdx index b5acb66a5c936..57a0baf2102e1 100644 --- a/api_docs/kbn_language_documentation.mdx +++ b/api_docs/kbn_language_documentation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation title: "@kbn/language-documentation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation'] --- import kbnLanguageDocumentationObj from './kbn_language_documentation.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 644c8b4068192..3c948e412acaf 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_lens_formula_docs.mdx b/api_docs/kbn_lens_formula_docs.mdx index 59326214e893e..4e44956f0ba0b 100644 --- a/api_docs/kbn_lens_formula_docs.mdx +++ b/api_docs/kbn_lens_formula_docs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-formula-docs title: "@kbn/lens-formula-docs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-formula-docs plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-formula-docs'] --- import kbnLensFormulaDocsObj from './kbn_lens_formula_docs.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index a445c58805047..d43491eae3b84 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index 5ee212212f5cf..cb6c14a364238 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_content_badge.mdx b/api_docs/kbn_managed_content_badge.mdx index 4d29a0e3d7004..d0a60e4fe9ac3 100644 --- a/api_docs/kbn_managed_content_badge.mdx +++ b/api_docs/kbn_managed_content_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-content-badge title: "@kbn/managed-content-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-content-badge plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-content-badge'] --- import kbnManagedContentBadgeObj from './kbn_managed_content_badge.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index 7fd663671fa58..9dfd7733881c3 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index 39b29bbb967ec..16bcc2e5dd33b 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 94e7ca43d8d1b..743240119df83 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index 672247dfba081..9f90b3cd5eb3f 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index ffa3a3c12efcc..88931144ff307 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index 42d85e9dcdd87..e0581c08ca15b 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index 689384b04e34e..4bf5378ce879a 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index 2d146fb2fa7b1..7d8949fbf19a6 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index 20e7613462d17..ce49939c667ca 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 9ba949c890970..cdcbcfbe74cd1 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index b177a2e5804ed..f70c108dad146 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index 5abc2954e8850..5397decd1e5b8 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 3411eb3312e72..6d6d688b0feb5 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_manifest.mdx b/api_docs/kbn_manifest.mdx index 25fb01c43725c..ac79087e64a56 100644 --- a/api_docs/kbn_manifest.mdx +++ b/api_docs/kbn_manifest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-manifest title: "@kbn/manifest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/manifest plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/manifest'] --- import kbnManifestObj from './kbn_manifest.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index b6f41a2cd01fd..d53547152f2b3 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx index 4c0a64cbd6b79..ac01cb9a707ca 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils'] --- import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index eb1c2866a843f..c88164faa08db 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index d6d7e5793e61c..c61a6d9396b6f 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_cancellable_search.mdx b/api_docs/kbn_ml_cancellable_search.mdx index 8f904266b2211..41219d35a51eb 100644 --- a/api_docs/kbn_ml_cancellable_search.mdx +++ b/api_docs/kbn_ml_cancellable_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-cancellable-search title: "@kbn/ml-cancellable-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-cancellable-search plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-cancellable-search'] --- import kbnMlCancellableSearchObj from './kbn_ml_cancellable_search.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index 9e1494bec9684..b0e26cbe61c76 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index bbcde3a417f88..d521c3dfc3af3 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 926873b716c2f..c9737443e8552 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils'] --- import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx index 3ef01bb2f4bc3..df850cb6dc8b6 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid'] --- import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json'; diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index 957f830b0ff1c..b027eb8883409 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx index 329a07b23edac..48009b5fe5cdd 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils'] --- import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx index 8bf56f057fd94..e2c010f6fb55a 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_field_stats_flyout.mdx b/api_docs/kbn_ml_field_stats_flyout.mdx index 27788553bcb47..f953a09822f1f 100644 --- a/api_docs/kbn_ml_field_stats_flyout.mdx +++ b/api_docs/kbn_ml_field_stats_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-field-stats-flyout title: "@kbn/ml-field-stats-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-field-stats-flyout plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-field-stats-flyout'] --- import kbnMlFieldStatsFlyoutObj from './kbn_ml_field_stats_flyout.devdocs.json'; diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx index c7c9bafdfde0a..add7e0eb480d1 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table'] --- import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index bbe200203304f..66bf390b25d9d 100644 --- a/api_docs/kbn_ml_is_defined.mdx +++ b/api_docs/kbn_ml_is_defined.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined title: "@kbn/ml-is-defined" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-defined plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined'] --- import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index d903f9e5e24f2..5cc4ab63dad89 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx index 2318f0eaabb3d..95061301abaf9 100644 --- a/api_docs/kbn_ml_kibana_theme.mdx +++ b/api_docs/kbn_ml_kibana_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme title: "@kbn/ml-kibana-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-kibana-theme plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme'] --- import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json'; diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index 5699447b18712..fe97e9b147f59 100644 --- a/api_docs/kbn_ml_local_storage.mdx +++ b/api_docs/kbn_ml_local_storage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage title: "@kbn/ml-local-storage" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-local-storage plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage'] --- import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json'; diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx index 1f12de453b4e6..3e1557f46b02a 100644 --- a/api_docs/kbn_ml_nested_property.mdx +++ b/api_docs/kbn_ml_nested_property.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property title: "@kbn/ml-nested-property" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-nested-property plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property'] --- import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json'; diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx index b4b818ae15c3a..163ced1f156e1 100644 --- a/api_docs/kbn_ml_number_utils.mdx +++ b/api_docs/kbn_ml_number_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils title: "@kbn/ml-number-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-number-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils'] --- import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_parse_interval.mdx b/api_docs/kbn_ml_parse_interval.mdx index 2a6e9aa53decf..342fd54cdbace 100644 --- a/api_docs/kbn_ml_parse_interval.mdx +++ b/api_docs/kbn_ml_parse_interval.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-parse-interval title: "@kbn/ml-parse-interval" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-parse-interval plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-parse-interval'] --- import kbnMlParseIntervalObj from './kbn_ml_parse_interval.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index bef2347cdec5e..24fa080254054 100644 --- a/api_docs/kbn_ml_query_utils.mdx +++ b/api_docs/kbn_ml_query_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils title: "@kbn/ml-query-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-query-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils'] --- import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx index d7110250fdb6f..3a3315719390d 100644 --- a/api_docs/kbn_ml_random_sampler_utils.mdx +++ b/api_docs/kbn_ml_random_sampler_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils title: "@kbn/ml-random-sampler-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-random-sampler-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils'] --- import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx index f5dc64678a132..5fc3b143b830a 100644 --- a/api_docs/kbn_ml_route_utils.mdx +++ b/api_docs/kbn_ml_route_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils title: "@kbn/ml-route-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-route-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils'] --- import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx index 8a8f84fdacdc2..03885b113d560 100644 --- a/api_docs/kbn_ml_runtime_field_utils.mdx +++ b/api_docs/kbn_ml_runtime_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils title: "@kbn/ml-runtime-field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-runtime-field-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils'] --- import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index 3ffa2cda03a71..1e1584f495dde 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_time_buckets.mdx b/api_docs/kbn_ml_time_buckets.mdx index 6b940a29a7eba..3ad34b6eced4a 100644 --- a/api_docs/kbn_ml_time_buckets.mdx +++ b/api_docs/kbn_ml_time_buckets.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-time-buckets title: "@kbn/ml-time-buckets" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-time-buckets plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-time-buckets'] --- import kbnMlTimeBucketsObj from './kbn_ml_time_buckets.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index e4f5394bd9f70..281becf363b47 100644 --- a/api_docs/kbn_ml_trained_models_utils.mdx +++ b/api_docs/kbn_ml_trained_models_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils title: "@kbn/ml-trained-models-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-trained-models-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index ef44aecd78b1f..9625e75e12c06 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 36dd2a2f35fa9..77fce539ca910 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_ml_validators.mdx b/api_docs/kbn_ml_validators.mdx index c5a628e37b4ed..b135bb7a4237d 100644 --- a/api_docs/kbn_ml_validators.mdx +++ b/api_docs/kbn_ml_validators.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-validators title: "@kbn/ml-validators" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-validators plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-validators'] --- import kbnMlValidatorsObj from './kbn_ml_validators.devdocs.json'; diff --git a/api_docs/kbn_mock_idp_utils.mdx b/api_docs/kbn_mock_idp_utils.mdx index 943bb0fac3cd9..d66d7881f7da4 100644 --- a/api_docs/kbn_mock_idp_utils.mdx +++ b/api_docs/kbn_mock_idp_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mock-idp-utils title: "@kbn/mock-idp-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mock-idp-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mock-idp-utils'] --- import kbnMockIdpUtilsObj from './kbn_mock_idp_utils.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index e8a7d7dbf6285..d04f198f14464 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 422363034016c..2d1b7030a01ee 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_object_versioning_utils.mdx b/api_docs/kbn_object_versioning_utils.mdx index 2264b6cca1171..113de46fe1329 100644 --- a/api_docs/kbn_object_versioning_utils.mdx +++ b/api_docs/kbn_object_versioning_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning-utils title: "@kbn/object-versioning-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning-utils'] --- import kbnObjectVersioningUtilsObj from './kbn_object_versioning_utils.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index 97ee00f566dc5..f76504a941c9e 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_rule_utils.mdx b/api_docs/kbn_observability_alerting_rule_utils.mdx index bee1d335f700f..0d2a46bc2b65e 100644 --- a/api_docs/kbn_observability_alerting_rule_utils.mdx +++ b/api_docs/kbn_observability_alerting_rule_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-rule-utils title: "@kbn/observability-alerting-rule-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-rule-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-rule-utils'] --- import kbnObservabilityAlertingRuleUtilsObj from './kbn_observability_alerting_rule_utils.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index bc2da3b01c406..b8dfa4e440b2e 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index 983861bf954c6..15ae84656d068 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_observability_logs_overview.mdx b/api_docs/kbn_observability_logs_overview.mdx index 05b0cbe7f0183..9c197e418ff57 100644 --- a/api_docs/kbn_observability_logs_overview.mdx +++ b/api_docs/kbn_observability_logs_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-logs-overview title: "@kbn/observability-logs-overview" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-logs-overview plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-logs-overview'] --- import kbnObservabilityLogsOverviewObj from './kbn_observability_logs_overview.devdocs.json'; diff --git a/api_docs/kbn_observability_synthetics_test_data.mdx b/api_docs/kbn_observability_synthetics_test_data.mdx index b3a6017ff3f65..05d7ac32fae91 100644 --- a/api_docs/kbn_observability_synthetics_test_data.mdx +++ b/api_docs/kbn_observability_synthetics_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-synthetics-test-data title: "@kbn/observability-synthetics-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-synthetics-test-data plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-synthetics-test-data'] --- import kbnObservabilitySyntheticsTestDataObj from './kbn_observability_synthetics_test_data.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index 6b62293e6b817..fb2d697cd597c 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index 0a207dbb7c7d1..00c526b723a81 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 9c671f5583186..0b5cc24cbc725 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index f278dc8b84de4..99427ef1f7db7 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx index 1ebb2950a60d4..4f13ef20fe716 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index 65d6e89fd09d1..69889c9d2080b 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index c1fab4f4cdbc7..eafc733ccfef1 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_check.mdx b/api_docs/kbn_plugin_check.mdx index 32cf464274625..6cc704aa52b6c 100644 --- a/api_docs/kbn_plugin_check.mdx +++ b/api_docs/kbn_plugin_check.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-check title: "@kbn/plugin-check" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-check plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-check'] --- import kbnPluginCheckObj from './kbn_plugin_check.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 5e7606d7b894d..63e756b19cba0 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index 231cbdf8d09d7..323ef1ffa0396 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_presentation_containers.mdx b/api_docs/kbn_presentation_containers.mdx index 8a3726634f886..f447e3ae3aac6 100644 --- a/api_docs/kbn_presentation_containers.mdx +++ b/api_docs/kbn_presentation_containers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-containers title: "@kbn/presentation-containers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-containers plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-containers'] --- import kbnPresentationContainersObj from './kbn_presentation_containers.devdocs.json'; diff --git a/api_docs/kbn_presentation_publishing.mdx b/api_docs/kbn_presentation_publishing.mdx index 36386d67d0a48..e0f3d80b96aea 100644 --- a/api_docs/kbn_presentation_publishing.mdx +++ b/api_docs/kbn_presentation_publishing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-publishing title: "@kbn/presentation-publishing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-publishing plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-publishing'] --- import kbnPresentationPublishingObj from './kbn_presentation_publishing.devdocs.json'; diff --git a/api_docs/kbn_product_doc_artifact_builder.mdx b/api_docs/kbn_product_doc_artifact_builder.mdx index 34908c646fbdb..1488fe46e0925 100644 --- a/api_docs/kbn_product_doc_artifact_builder.mdx +++ b/api_docs/kbn_product_doc_artifact_builder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-product-doc-artifact-builder title: "@kbn/product-doc-artifact-builder" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/product-doc-artifact-builder plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/product-doc-artifact-builder'] --- import kbnProductDocArtifactBuilderObj from './kbn_product_doc_artifact_builder.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 0c94272cbde29..f0ba3e0c61955 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index d1f63c425dc4f..d634cac4e99fe 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling'] --- import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 75f8ea7cbe08a..d8522a40b35f8 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_hooks.mdx b/api_docs/kbn_react_hooks.mdx index d723f00fb01db..f649de8d93608 100644 --- a/api_docs/kbn_react_hooks.mdx +++ b/api_docs/kbn_react_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-hooks title: "@kbn/react-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-hooks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-hooks'] --- import kbnReactHooksObj from './kbn_react_hooks.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index c6405a3a59a75..8c25c7c530558 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index 04ab1f1f7a390..f454aaef242dc 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index f59141e0def6e..0954404eae12d 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index b6a6af46a3dd1..5fa52a54866e0 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index b403b638cfd1f..89910ee7796f9 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index 3cdb3033b82c9..2c9306ef75cbf 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_recently_accessed.mdx b/api_docs/kbn_recently_accessed.mdx index 11c37688f6c2c..ee289e1cd58c4 100644 --- a/api_docs/kbn_recently_accessed.mdx +++ b/api_docs/kbn_recently_accessed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-recently-accessed title: "@kbn/recently-accessed" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/recently-accessed plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/recently-accessed'] --- import kbnRecentlyAccessedObj from './kbn_recently_accessed.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index bbe5a90e7a63c..7331260b401fe 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps'] --- import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json'; diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx index 6aa3f6fc28c33..7ec7785a6effb 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter'] --- import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json'; diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx index 5969f906b7317..a9747a9b0e572 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path'] --- import kbnRepoPathObj from './kbn_repo_path.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index fa34164e83bc7..88ac7ca83d31b 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx index d49bba0cfad48..b25f9dbd19812 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_csv_share_panel.mdx b/api_docs/kbn_reporting_csv_share_panel.mdx index 54a0801b87083..deafd6eca3410 100644 --- a/api_docs/kbn_reporting_csv_share_panel.mdx +++ b/api_docs/kbn_reporting_csv_share_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-csv-share-panel title: "@kbn/reporting-csv-share-panel" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-csv-share-panel plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-csv-share-panel'] --- import kbnReportingCsvSharePanelObj from './kbn_reporting_csv_share_panel.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index 3214a51ba978e..b7d392f58e92b 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index 6f767fd030fed..a39250899e514 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index 24d42312e3cfc..7aea183f13a21 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index 956d2a5445337..680d5fa288a7a 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index ffab6ac27d2d2..e1f7c3e6c8eef 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index 84ee83e3739dc..773d60b965773 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index 092d0eb6ed883..1f5f2d4204682 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index f9f61cceda497..58b7c8e1421e5 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index d01886fc8511f..048dc326cfa47 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index a24b6adcf0b14..9eca84bc13bb9 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_response_ops_feature_flag_service.mdx b/api_docs/kbn_response_ops_feature_flag_service.mdx index 17d54460b1bc2..bf556bcce6137 100644 --- a/api_docs/kbn_response_ops_feature_flag_service.mdx +++ b/api_docs/kbn_response_ops_feature_flag_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-feature-flag-service title: "@kbn/response-ops-feature-flag-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-feature-flag-service plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-feature-flag-service'] --- import kbnResponseOpsFeatureFlagServiceObj from './kbn_response_ops_feature_flag_service.devdocs.json'; diff --git a/api_docs/kbn_response_ops_rule_params.mdx b/api_docs/kbn_response_ops_rule_params.mdx index 454f3e6ef687c..59b8cdef48b02 100644 --- a/api_docs/kbn_response_ops_rule_params.mdx +++ b/api_docs/kbn_response_ops_rule_params.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-rule-params title: "@kbn/response-ops-rule-params" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-rule-params plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-rule-params'] --- import kbnResponseOpsRuleParamsObj from './kbn_response_ops_rule_params.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index fefd1b54cde9a..3d89133516280 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rollup.mdx b/api_docs/kbn_rollup.mdx index db277ca34817c..b98a97774f4dc 100644 --- a/api_docs/kbn_rollup.mdx +++ b/api_docs/kbn_rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rollup title: "@kbn/rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rollup plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rollup'] --- import kbnRollupObj from './kbn_rollup.devdocs.json'; diff --git a/api_docs/kbn_router_to_openapispec.mdx b/api_docs/kbn_router_to_openapispec.mdx index fc860df0d9172..de316c4feca18 100644 --- a/api_docs/kbn_router_to_openapispec.mdx +++ b/api_docs/kbn_router_to_openapispec.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-to-openapispec title: "@kbn/router-to-openapispec" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-to-openapispec plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-to-openapispec'] --- import kbnRouterToOpenapispecObj from './kbn_router_to_openapispec.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index 5ff4eb622f8b8..80ad761794f40 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index c4a8dc6115280..577425e07bda8 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index e70f3b7bf8107..82146a777a392 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx index d66a2935573da..662123daa7c2b 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_screenshotting_server.mdx b/api_docs/kbn_screenshotting_server.mdx index 2fb2e148c0935..5caf1794708c0 100644 --- a/api_docs/kbn_screenshotting_server.mdx +++ b/api_docs/kbn_screenshotting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-screenshotting-server title: "@kbn/screenshotting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/screenshotting-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/screenshotting-server'] --- import kbnScreenshottingServerObj from './kbn_screenshotting_server.devdocs.json'; diff --git a/api_docs/kbn_search_api_keys_components.mdx b/api_docs/kbn_search_api_keys_components.mdx index cbfd8ae689ac1..c76c3cfd671dd 100644 --- a/api_docs/kbn_search_api_keys_components.mdx +++ b/api_docs/kbn_search_api_keys_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-keys-components title: "@kbn/search-api-keys-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-keys-components plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-keys-components'] --- import kbnSearchApiKeysComponentsObj from './kbn_search_api_keys_components.devdocs.json'; diff --git a/api_docs/kbn_search_api_keys_server.mdx b/api_docs/kbn_search_api_keys_server.mdx index f81044a97b0e8..f87ac1ac5d3f9 100644 --- a/api_docs/kbn_search_api_keys_server.mdx +++ b/api_docs/kbn_search_api_keys_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-keys-server title: "@kbn/search-api-keys-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-keys-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-keys-server'] --- import kbnSearchApiKeysServerObj from './kbn_search_api_keys_server.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 7c514fad9a367..42eff9498c7d8 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index 86763176050c5..b00c090593e42 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index f54e38a72cccd..958d395bca64e 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index 0570f201164ff..2709014d56215 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index b8272dbbd1b2c..070b8045c09fa 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_search_shared_ui.mdx b/api_docs/kbn_search_shared_ui.mdx index 3db5ff1a83215..637c17a6f4243 100644 --- a/api_docs/kbn_search_shared_ui.mdx +++ b/api_docs/kbn_search_shared_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-shared-ui title: "@kbn/search-shared-ui" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-shared-ui plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-shared-ui'] --- import kbnSearchSharedUiObj from './kbn_search_shared_ui.devdocs.json'; diff --git a/api_docs/kbn_search_types.mdx b/api_docs/kbn_search_types.mdx index a09c5ec0cb182..479347c00da88 100644 --- a/api_docs/kbn_search_types.mdx +++ b/api_docs/kbn_search_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-types title: "@kbn/search-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-types plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-types'] --- import kbnSearchTypesObj from './kbn_search_types.devdocs.json'; diff --git a/api_docs/kbn_security_api_key_management.mdx b/api_docs/kbn_security_api_key_management.mdx index 70ef99348fe51..049f8aceddd96 100644 --- a/api_docs/kbn_security_api_key_management.mdx +++ b/api_docs/kbn_security_api_key_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-api-key-management title: "@kbn/security-api-key-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-api-key-management plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-api-key-management'] --- import kbnSecurityApiKeyManagementObj from './kbn_security_api_key_management.devdocs.json'; diff --git a/api_docs/kbn_security_authorization_core.mdx b/api_docs/kbn_security_authorization_core.mdx index a5a62dd7c51b0..b3b971c4817f3 100644 --- a/api_docs/kbn_security_authorization_core.mdx +++ b/api_docs/kbn_security_authorization_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-authorization-core title: "@kbn/security-authorization-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-authorization-core plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-authorization-core'] --- import kbnSecurityAuthorizationCoreObj from './kbn_security_authorization_core.devdocs.json'; diff --git a/api_docs/kbn_security_authorization_core_common.mdx b/api_docs/kbn_security_authorization_core_common.mdx index 278199be76041..262eb832a38f9 100644 --- a/api_docs/kbn_security_authorization_core_common.mdx +++ b/api_docs/kbn_security_authorization_core_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-authorization-core-common title: "@kbn/security-authorization-core-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-authorization-core-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-authorization-core-common'] --- import kbnSecurityAuthorizationCoreCommonObj from './kbn_security_authorization_core_common.devdocs.json'; diff --git a/api_docs/kbn_security_form_components.mdx b/api_docs/kbn_security_form_components.mdx index 280382887c466..353a92458c02e 100644 --- a/api_docs/kbn_security_form_components.mdx +++ b/api_docs/kbn_security_form_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-form-components title: "@kbn/security-form-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-form-components plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-form-components'] --- import kbnSecurityFormComponentsObj from './kbn_security_form_components.devdocs.json'; diff --git a/api_docs/kbn_security_hardening.mdx b/api_docs/kbn_security_hardening.mdx index 34e37f7a95aca..026d20d5c4555 100644 --- a/api_docs/kbn_security_hardening.mdx +++ b/api_docs/kbn_security_hardening.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-hardening title: "@kbn/security-hardening" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-hardening plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-hardening'] --- import kbnSecurityHardeningObj from './kbn_security_hardening.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index b739c83f77b25..3548b21a9c206 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index d99a01e1db2a5..235fc5b9f8bbb 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index a093384ecc00a..2938e35c3ac70 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_role_management_model.mdx b/api_docs/kbn_security_role_management_model.mdx index 916e09c5a866b..79ac200947739 100644 --- a/api_docs/kbn_security_role_management_model.mdx +++ b/api_docs/kbn_security_role_management_model.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-role-management-model title: "@kbn/security-role-management-model" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-role-management-model plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-role-management-model'] --- import kbnSecurityRoleManagementModelObj from './kbn_security_role_management_model.devdocs.json'; diff --git a/api_docs/kbn_security_solution_distribution_bar.mdx b/api_docs/kbn_security_solution_distribution_bar.mdx index 4b4f10221a6de..ec2a244929f25 100644 --- a/api_docs/kbn_security_solution_distribution_bar.mdx +++ b/api_docs/kbn_security_solution_distribution_bar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-distribution-bar title: "@kbn/security-solution-distribution-bar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-distribution-bar plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-distribution-bar'] --- import kbnSecuritySolutionDistributionBarObj from './kbn_security_solution_distribution_bar.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index 9c2d243b7658e..1aa557c0443a9 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index cd7aff8d7f85d..56d075e4a4859 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index 97fdcf252a7db..1d28cc108ffc2 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav'] --- import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json'; diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx index dd9f801344841..20121767b45ac 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_security_ui_components.mdx b/api_docs/kbn_security_ui_components.mdx index 6e22c9774cd04..1e27e2ec85d05 100644 --- a/api_docs/kbn_security_ui_components.mdx +++ b/api_docs/kbn_security_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-ui-components title: "@kbn/security-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-ui-components plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-ui-components'] --- import kbnSecurityUiComponentsObj from './kbn_security_ui_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index d6c4595a60569..65bca33413073 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx index f909fcbeae0f8..7d37434cfc2e8 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index 3adf75482f65f..8c67a746fc5c2 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index 514aa31b04dde..750e8229421e8 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index 9503365f5a198..21ed2b891ad6b 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 37c7fe9b39b60..22f78014667aa 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index 662de311173b7..98cc1cf24daeb 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 958d4237621b5..dbea27394a602 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 77d135cab574d..db3d19833911f 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index e3231c2985191..32e29b4ca1190 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index 560e488563e62..2fe302ba8f292 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index 0ddf60d29ee78..14f2e22393f55 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index 4ec4786a4e201..1ace44e29f6a4 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index f7c686d436c84..63a0f0adfc5b2 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index 10890567a858b..31b647bd498c5 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index 2894b4164cc23..e042da773abf4 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index 37f24667ff78f..b87898a414710 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index bf00cf7874954..c07a50b6ffe46 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index ab191c3672c2e..d74bd961d8158 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_client.mdx b/api_docs/kbn_server_route_repository_client.mdx index b9c846285e170..c269680c12df6 100644 --- a/api_docs/kbn_server_route_repository_client.mdx +++ b/api_docs/kbn_server_route_repository_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-client title: "@kbn/server-route-repository-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-client plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-client'] --- import kbnServerRouteRepositoryClientObj from './kbn_server_route_repository_client.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_utils.mdx b/api_docs/kbn_server_route_repository_utils.mdx index b3f0e4c6b10ce..6bc875810a386 100644 --- a/api_docs/kbn_server_route_repository_utils.mdx +++ b/api_docs/kbn_server_route_repository_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-utils title: "@kbn/server-route-repository-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-utils'] --- import kbnServerRouteRepositoryUtilsObj from './kbn_server_route_repository_utils.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index b010aa72c37d4..358183ba435ec 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index 68da28ecd70ec..75a00c5e9896d 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index cd2fc62af76b7..a32fc42e9f895 100644 --- a/api_docs/kbn_serverless_project_switcher.mdx +++ b/api_docs/kbn_serverless_project_switcher.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher title: "@kbn/serverless-project-switcher" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-project-switcher plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index e7a5740504724..e94566b4cdd7d 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index 8faa390f71e98..a7849341f38ff 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 89d070f949d04..1062d5fd25bd9 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config'] --- import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index b083568018733..4b7f8be8f0688 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx index 56554b5b7f00e..9f8779c0e4fdb 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index d377c011e732a..71d2ae705cef2 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 55418b83a6a5e..24bcaca0c3ca3 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index 0c0fe2306ac13..e74c73a03fa1b 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index 862b513a809ce..e7e7b86526918 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx index be57b1d5189e1..ce6fce991c5d8 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index 21a2041bb0835..95872342b5ad2 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index 85cd765d2ba0a..9d4949d96c00d 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context'] --- import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx index fc1c41dc4a82b..95b1156cf421a 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image'] --- import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx index b3b65779c2b5d..c9e35802cf654 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks'] --- import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx index 17533b14780dd..5352630fd8299 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks'] --- import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx index df620f834e9ab..63e5de70fc973 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker'] --- import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx index 05141533d5d16..2a336cf2527e6 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types'] --- import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx index 7f424a4119188..ba7f85b9ebc4f 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload'] --- import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx index 56f274800b91d..d7399a98aca64 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util'] --- import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx index 77f7e31844a1e..6951563939791 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app'] --- import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index 159db9fc7ab60..d9867d9a66cc4 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx index 93af3e94fd72f..64a8dca9f81cf 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown'] --- import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index e026823ebf4dc..8ec5f8007cf4b 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks'] --- import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx index 5dcadce767b85..ded9647408e40 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index 2d6a10998b035..2175ce0768063 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index d430e9530f8b5..da39ef0d6f846 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index 3861eae712ba2..651b52969f275 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index 4a4afc36720a5..b8b9ace1a6583 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index bae94610e410c..89b324e021c3e 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index 7f11588a77320..0b619fe541361 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index 7fce3251bc67c..f02170c53d8e2 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index 916c43a603189..f955ecd76ed7d 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index b26ee502fe636..36d18436a2102 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index 4d9636bc84287..e92b9430928f8 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index ac1e9efda4237..6727255f7be84 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index 8f223e7f952f0..1fe597b53b5fa 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx index 83ea310fb5da4..cfad6ea87828b 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found'] --- import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx index 7f41bd63caed9..1f2ebe55e6937 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index 0ded568ce8731..1d43c6b8ead19 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index 02fbdbc896372..707b21f1a6ac0 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index a2bc093fc0a2b..1f302dbdcb3a9 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_tabbed_modal.mdx b/api_docs/kbn_shared_ux_tabbed_modal.mdx index 62ecd7eee4859..6e5837c70564c 100644 --- a/api_docs/kbn_shared_ux_tabbed_modal.mdx +++ b/api_docs/kbn_shared_ux_tabbed_modal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-tabbed-modal title: "@kbn/shared-ux-tabbed-modal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-tabbed-modal plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-tabbed-modal'] --- import kbnSharedUxTabbedModalObj from './kbn_shared_ux_tabbed_modal.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_table_persist.mdx b/api_docs/kbn_shared_ux_table_persist.mdx index 2d9c2c6423170..e50d7bea6ee29 100644 --- a/api_docs/kbn_shared_ux_table_persist.mdx +++ b/api_docs/kbn_shared_ux_table_persist.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-table-persist title: "@kbn/shared-ux-table-persist" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-table-persist plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-table-persist'] --- import kbnSharedUxTablePersistObj from './kbn_shared_ux_table_persist.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index c444e5a6bef83..d52ac719cc557 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index b977f8f63d3da..fb25940e45c6b 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index 928d9c4429f06..4197b39d9380a 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_sort_predicates.mdx b/api_docs/kbn_sort_predicates.mdx index 4af06159604d7..32ae580e6fde5 100644 --- a/api_docs/kbn_sort_predicates.mdx +++ b/api_docs/kbn_sort_predicates.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sort-predicates title: "@kbn/sort-predicates" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sort-predicates plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-predicates'] --- import kbnSortPredicatesObj from './kbn_sort_predicates.devdocs.json'; diff --git a/api_docs/kbn_sse_utils.mdx b/api_docs/kbn_sse_utils.mdx index 78ba88217f53b..456b22129bc6a 100644 --- a/api_docs/kbn_sse_utils.mdx +++ b/api_docs/kbn_sse_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils title: "@kbn/sse-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils'] --- import kbnSseUtilsObj from './kbn_sse_utils.devdocs.json'; diff --git a/api_docs/kbn_sse_utils_client.mdx b/api_docs/kbn_sse_utils_client.mdx index a4c2179f384b2..b0434d0037c9d 100644 --- a/api_docs/kbn_sse_utils_client.mdx +++ b/api_docs/kbn_sse_utils_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils-client title: "@kbn/sse-utils-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils-client plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils-client'] --- import kbnSseUtilsClientObj from './kbn_sse_utils_client.devdocs.json'; diff --git a/api_docs/kbn_sse_utils_server.mdx b/api_docs/kbn_sse_utils_server.mdx index 1551686e0f640..a274948632262 100644 --- a/api_docs/kbn_sse_utils_server.mdx +++ b/api_docs/kbn_sse_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils-server title: "@kbn/sse-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils-server plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils-server'] --- import kbnSseUtilsServerObj from './kbn_sse_utils_server.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index 9479f1d0e4082..5938ac7bbf319 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 545b3ba13085d..3246bcffd9d6a 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index b0b08633d48ec..bab5b5c0846e8 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_synthetics_e2e.mdx b/api_docs/kbn_synthetics_e2e.mdx index 7a9bc92300bbb..441f909b26c36 100644 --- a/api_docs/kbn_synthetics_e2e.mdx +++ b/api_docs/kbn_synthetics_e2e.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-e2e title: "@kbn/synthetics-e2e" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-e2e plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-e2e'] --- import kbnSyntheticsE2eObj from './kbn_synthetics_e2e.devdocs.json'; diff --git a/api_docs/kbn_synthetics_private_location.mdx b/api_docs/kbn_synthetics_private_location.mdx index 3ce247ebc2502..2010f4aef3d7a 100644 --- a/api_docs/kbn_synthetics_private_location.mdx +++ b/api_docs/kbn_synthetics_private_location.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-private-location title: "@kbn/synthetics-private-location" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-private-location plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-private-location'] --- import kbnSyntheticsPrivateLocationObj from './kbn_synthetics_private_location.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 64245c2222957..c843a43ec2451 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index dba9456eed29f..8ccf9a68aa3a0 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_eui_helpers.mdx b/api_docs/kbn_test_eui_helpers.mdx index 2cbd2835c797d..4c1683b00e31a 100644 --- a/api_docs/kbn_test_eui_helpers.mdx +++ b/api_docs/kbn_test_eui_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-eui-helpers title: "@kbn/test-eui-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-eui-helpers plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-eui-helpers'] --- import kbnTestEuiHelpersObj from './kbn_test_eui_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 401c9a4753805..ed6cd1b5e0881 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index ba9a3c450f029..69387623d8462 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_timerange.mdx b/api_docs/kbn_timerange.mdx index 923761973dfbf..46bc4e0410d57 100644 --- a/api_docs/kbn_timerange.mdx +++ b/api_docs/kbn_timerange.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-timerange title: "@kbn/timerange" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/timerange plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/timerange'] --- import kbnTimerangeObj from './kbn_timerange.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index f06e07473d7e0..f2e3d765e05fe 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_transpose_utils.mdx b/api_docs/kbn_transpose_utils.mdx index 6771ad8cfc576..222b8ca073153 100644 --- a/api_docs/kbn_transpose_utils.mdx +++ b/api_docs/kbn_transpose_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-transpose-utils title: "@kbn/transpose-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/transpose-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/transpose-utils'] --- import kbnTransposeUtilsObj from './kbn_transpose_utils.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index 7c895b6f1144d..016a6a831a12f 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_try_in_console.mdx b/api_docs/kbn_try_in_console.mdx index 1767a684c6e5f..c988e21414d54 100644 --- a/api_docs/kbn_try_in_console.mdx +++ b/api_docs/kbn_try_in_console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-try-in-console title: "@kbn/try-in-console" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/try-in-console plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/try-in-console'] --- import kbnTryInConsoleObj from './kbn_try_in_console.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index ca6e9530efb8b..cf409e6949d80 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects'] --- import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index ec88678de0894..067725bc6e306 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx index 07721bd3a0ef8..ac1fd498da73a 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser'] --- import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json'; diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index ef32510701ad2..79a77c8483b52 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 3213ed424a8e6..beed91f429ae2 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index add56a55346e4..57a9c679ecf5c 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 9b061a1e1ca8a..10a5c839107bb 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index a0f6cbbe7d100..e87ee28f28d68 100644 --- a/api_docs/kbn_unified_field_list.mdx +++ b/api_docs/kbn_unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list title: "@kbn/unified-field-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-field-list plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index c5622fe3e0882..2bb62cff7819f 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_prompt.mdx b/api_docs/kbn_unsaved_changes_prompt.mdx index 6da47d74b80e6..80b3ce7a51317 100644 --- a/api_docs/kbn_unsaved_changes_prompt.mdx +++ b/api_docs/kbn_unsaved_changes_prompt.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-prompt title: "@kbn/unsaved-changes-prompt" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-prompt plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-prompt'] --- import kbnUnsavedChangesPromptObj from './kbn_unsaved_changes_prompt.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 78b0ac0a4a874..5d443797d0ed2 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 950bdc2c650b0..1c4f6115d462d 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index 18c43a8a5d0d3..0a1642ac9fbee 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index 0f0eb6bb986c2..2f9a113e5215c 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 767ed6170b2c9..298b4e1231a29 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index 891d73b5e6818..803576e950ac8 100644 --- a/api_docs/kbn_visualization_ui_components.mdx +++ b/api_docs/kbn_visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components title: "@kbn/visualization-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-ui-components plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index 674114b29518a..a0f0888ad0961 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index 52c728ec45892..8fd7b4c274197 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 2fb2eb3e929b5..69e51986989ff 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod.mdx b/api_docs/kbn_zod.mdx index a74d260b014a1..359f0b380d7a6 100644 --- a/api_docs/kbn_zod.mdx +++ b/api_docs/kbn_zod.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod title: "@kbn/zod" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod'] --- import kbnZodObj from './kbn_zod.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index f34f331d3dc6b..872422ef8eaa2 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 3d7661b275d3b..17c207239a1ca 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index ed6e9e9f07f84..94890b4e1fb3e 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index ebfb1da0e91c4..2ae2c43759dd2 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index 2d655f2ded027..ebe248aa10663 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 22961b26c5223..e68711623a2c6 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 2658a664efdfc..61d7cde08013e 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index d43ad4533185c..9f510577cdf8f 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index c699ab2d197ea..bee86fc368cb4 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index 9e222b7b09ef5..52461f3464514 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 44f48b1f96832..6fae39697ac5e 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/logs_data_access.mdx b/api_docs/logs_data_access.mdx index d3d429ab163b8..2d4ff4b5fc2f0 100644 --- a/api_docs/logs_data_access.mdx +++ b/api_docs/logs_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsDataAccess title: "logsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the logsDataAccess plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsDataAccess'] --- import logsDataAccessObj from './logs_data_access.devdocs.json'; diff --git a/api_docs/logs_explorer.mdx b/api_docs/logs_explorer.mdx index 52e072febf769..f1ca50bdbe7af 100644 --- a/api_docs/logs_explorer.mdx +++ b/api_docs/logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsExplorer title: "logsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logsExplorer plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsExplorer'] --- import logsExplorerObj from './logs_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index c7f8e14265d78..218c6e4fc9fc9 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 402e48ef8add6..2f1f15ace3926 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 07affed39a8e9..7b55f1eb5704f 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index ba657f1b3e7b9..c4beb57cc13e8 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index 8e52935d9fc45..2c31341a91867 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index c1983a6a1a264..8e48e1f03d4a5 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index 0f38f2b1e8adb..9fea23034943e 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index bc65d5ec487c8..35439ffa5beac 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index d60bfad3473bd..bb6e9f4e2431f 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index e6beb3698f598..86c543ac030de 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index 53e1836ef934a..82d3d2854b91e 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index f392c36a791bb..448bc7a94b9a2 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 2d06d3e92db3d..7415cf7989abd 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 3e666436e99f5..b1ecd7ad0e778 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index 08af68688bd67..07fe0a767f392 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant_app.mdx b/api_docs/observability_a_i_assistant_app.mdx index b1ab44e540c26..7aa15c94bd864 100644 --- a/api_docs/observability_a_i_assistant_app.mdx +++ b/api_docs/observability_a_i_assistant_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistantApp title: "observabilityAIAssistantApp" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistantApp plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistantApp'] --- import observabilityAIAssistantAppObj from './observability_a_i_assistant_app.devdocs.json'; diff --git a/api_docs/observability_ai_assistant_management.mdx b/api_docs/observability_ai_assistant_management.mdx index 8f847ba6438ee..2a5457a29ea6f 100644 --- a/api_docs/observability_ai_assistant_management.mdx +++ b/api_docs/observability_ai_assistant_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAiAssistantManagement title: "observabilityAiAssistantManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAiAssistantManagement plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAiAssistantManagement'] --- import observabilityAiAssistantManagementObj from './observability_ai_assistant_management.devdocs.json'; diff --git a/api_docs/observability_logs_explorer.mdx b/api_docs/observability_logs_explorer.mdx index 470c9e5704cc2..c3429f9415b35 100644 --- a/api_docs/observability_logs_explorer.mdx +++ b/api_docs/observability_logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogsExplorer title: "observabilityLogsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogsExplorer plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogsExplorer'] --- import observabilityLogsExplorerObj from './observability_logs_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index b09cd01682d5f..379013a23b83c 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.devdocs.json b/api_docs/observability_shared.devdocs.json index 4026f1325b638..337e3fbdf2769 100644 --- a/api_docs/observability_shared.devdocs.json +++ b/api_docs/observability_shared.devdocs.json @@ -6478,18 +6478,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "observabilityShared", - "id": "def-common.EntityType", - "type": "Enum", - "tags": [], - "label": "EntityType", - "description": [], - "path": "x-pack/plugins/observability_solution/observability_shared/common/entity/entity_types.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "observabilityShared", "id": "def-common.IndexLifecyclePhaseSelectOption", @@ -8238,6 +8226,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "observabilityShared", + "id": "def-common.SERVICE_OVERVIEW_LOCATOR_ID", + "type": "string", + "tags": [], + "label": "SERVICE_OVERVIEW_LOCATOR_ID", + "description": [], + "signature": [ + "\"serviceOverviewLocator\"" + ], + "path": "x-pack/plugins/observability_solution/observability_shared/common/locators/apm/service_overview_locator.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "observabilityShared", "id": "def-common.SERVICE_RUNTIME_NAME", @@ -9137,6 +9140,21 @@ } ], "objects": [ + { + "parentPluginId": "observabilityShared", + "id": "def-common.ENTITY_TYPES", + "type": "Object", + "tags": [], + "label": "ENTITY_TYPES", + "description": [], + "signature": [ + "{ readonly HOST: \"host\"; readonly CONTAINER: \"container\"; readonly SERVICE: \"service\"; readonly KUBERNETES: { readonly CLUSTER: { ecs: \"kubernetes_cluster_ecs\"; semconv: \"kubernetes_cluster_semconv\"; }; readonly CONTAINER: { ecs: \"kubernetes_container_ecs\"; semconv: \"kubernetes_container_semconv\"; }; readonly CRONJOB: { ecs: \"kubernetes_cron_job_ecs\"; semconv: \"kubernetes_cron_job_semconv\"; }; readonly DAEMONSET: { ecs: \"kubernetes_daemon_set_ecs\"; semconv: \"kubernetes_daemon_set_semconv\"; }; readonly DEPLOYMENT: { ecs: \"kubernetes_deployment_ecs\"; semconv: \"kubernetes_deployment_semconv\"; }; readonly JOB: { ecs: \"kubernetes_job_ecs\"; semconv: \"kubernetes_job_semconv\"; }; readonly NAMESPACE: { ecs: \"kubernetes_namespace_ecs\"; semconv: \"kubernetes_namespace_semconv\"; }; readonly NODE: { ecs: \"kubernetes_node_ecs\"; semconv: \"kubernetes_node_semconv\"; }; readonly POD: { ecs: \"kubernetes_pod_ecs\"; semconv: \"kubernetes_pod_semconv\"; }; readonly STATEFULSET: { ecs: \"kubernetes_stateful_set_ecs\"; semconv: \"kubernetes_stateful_set_semconv\"; }; }; }" + ], + "path": "x-pack/plugins/observability_solution/observability_shared/common/entity/entity_types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "observabilityShared", "id": "def-common.indexLifeCyclePhaseToDataTier", diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index 6b6976d8bb21e..668951f316d89 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 507 | 1 | 501 | 19 | +| 508 | 1 | 502 | 19 | ## Client diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 276026590a3dd..1ec492abc682b 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index e9bb7c7b52702..36065ec377729 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index a8a820eccc34f..3312278c35617 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -15,13 +15,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 879 | 752 | 45 | +| 878 | 751 | 45 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 54179 | 242 | 40676 | 2007 | +| 54121 | 242 | 40639 | 2002 | ## Plugin Directory @@ -158,7 +158,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 2 | 0 | 2 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin exposes and registers observability log consumption features. | 19 | 0 | 19 | 1 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 24 | 0 | 24 | 0 | -| | [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observability-ui) | - | 507 | 1 | 501 | 19 | +| | [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observability-ui) | - | 508 | 1 | 502 | 19 | | | [@elastic/security-defend-workflows](https://github.com/orgs/elastic/teams/security-defend-workflows) | - | 23 | 0 | 23 | 7 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 2 | 0 | 2 | 0 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds a standardized Presentation panel which allows any forward ref component to interface with various Kibana systems. | 11 | 0 | 11 | 4 | @@ -690,7 +690,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 67 | 0 | 40 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 281 | 1 | 160 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 74 | 0 | 73 | 0 | -| | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 59 | 0 | 38 | 5 | | | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 7 | 0 | 0 | 0 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 15 | 0 | 15 | 7 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 54 | 0 | 49 | 0 | diff --git a/api_docs/presentation_panel.mdx b/api_docs/presentation_panel.mdx index 7c104054ab01e..6fb52d6de7c47 100644 --- a/api_docs/presentation_panel.mdx +++ b/api_docs/presentation_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationPanel title: "presentationPanel" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationPanel plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationPanel'] --- import presentationPanelObj from './presentation_panel.devdocs.json'; diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 2d700b7f81f00..8ab442ace4bda 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index 29733204d1888..20e9d08496419 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index f2ffa0f5fa0d9..8c12cf417e674 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index f0a4eb0efae5a..73eeec7c0d63e 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 7c241bf34671e..1b73501436a29 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index 10356c7719f0b..a98ac15e0a04c 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 1448ec5b51b11..2b7ea6e299775 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index 05ffdcf6766fe..048044b0173c3 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 1b91056866edd..3370aab608668 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index f1c4d163ae51b..652698b8cde9c 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index e3a7e1d99cfc3..da8681f3c7a4e 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 21ed9dbd073e8..b7a69e2cb5b27 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index d1466d6ca5133..66b740ba9b2e0 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index d4b63ba6af9d0..c85d06300e7e9 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index ce6a1ab7a25ce..191365e0f7a80 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index c33ea4c05b417..dc044143c2206 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/search_assistant.mdx b/api_docs/search_assistant.mdx index 6d02a113b8e36..2592d69ac2c0b 100644 --- a/api_docs/search_assistant.mdx +++ b/api_docs/search_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchAssistant title: "searchAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the searchAssistant plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchAssistant'] --- import searchAssistantObj from './search_assistant.devdocs.json'; diff --git a/api_docs/search_connectors.mdx b/api_docs/search_connectors.mdx index b12e1419898ce..8f64adda47380 100644 --- a/api_docs/search_connectors.mdx +++ b/api_docs/search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchConnectors title: "searchConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the searchConnectors plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchConnectors'] --- import searchConnectorsObj from './search_connectors.devdocs.json'; diff --git a/api_docs/search_homepage.mdx b/api_docs/search_homepage.mdx index 2c52dbd5c0f27..e778a119e4fa2 100644 --- a/api_docs/search_homepage.mdx +++ b/api_docs/search_homepage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchHomepage title: "searchHomepage" image: https://source.unsplash.com/400x175/?github description: API docs for the searchHomepage plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchHomepage'] --- import searchHomepageObj from './search_homepage.devdocs.json'; diff --git a/api_docs/search_indices.mdx b/api_docs/search_indices.mdx index 97b9520a9296c..207333c7a02b3 100644 --- a/api_docs/search_indices.mdx +++ b/api_docs/search_indices.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchIndices title: "searchIndices" image: https://source.unsplash.com/400x175/?github description: API docs for the searchIndices plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchIndices'] --- import searchIndicesObj from './search_indices.devdocs.json'; diff --git a/api_docs/search_inference_endpoints.mdx b/api_docs/search_inference_endpoints.mdx index bf5da806831a5..53511b8dcd96a 100644 --- a/api_docs/search_inference_endpoints.mdx +++ b/api_docs/search_inference_endpoints.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchInferenceEndpoints title: "searchInferenceEndpoints" image: https://source.unsplash.com/400x175/?github description: API docs for the searchInferenceEndpoints plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchInferenceEndpoints'] --- import searchInferenceEndpointsObj from './search_inference_endpoints.devdocs.json'; diff --git a/api_docs/search_notebooks.mdx b/api_docs/search_notebooks.mdx index 8a2ac4dd64f4b..3317d17e682bf 100644 --- a/api_docs/search_notebooks.mdx +++ b/api_docs/search_notebooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNotebooks title: "searchNotebooks" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNotebooks plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNotebooks'] --- import searchNotebooksObj from './search_notebooks.devdocs.json'; diff --git a/api_docs/search_playground.mdx b/api_docs/search_playground.mdx index 4bd180bc3ade4..0d85aa3fc79b0 100644 --- a/api_docs/search_playground.mdx +++ b/api_docs/search_playground.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchPlayground title: "searchPlayground" image: https://source.unsplash.com/400x175/?github description: API docs for the searchPlayground plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchPlayground'] --- import searchPlaygroundObj from './search_playground.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 7aa45a32cc250..94fb8607494a3 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 664af77ccc1c4..4c102826ec973 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 29e1ea381be08..31326e62344ae 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index be9ab37206a36..adb6ecab7eadc 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index 7b2570ddd1158..e7ec8d251dbf6 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless'] --- import serverlessObj from './serverless.devdocs.json'; diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx index 3e6fa936a254a..bc3650892a6e0 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability'] --- import serverlessObservabilityObj from './serverless_observability.devdocs.json'; diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx index 53de970961c57..9433b63f12947 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 3ffd1db3b5e15..b17d6e1f721f4 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index 6448e9572d796..9a9fa031a321a 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/slo.mdx b/api_docs/slo.mdx index cbc49e79b91de..337c0e31d744b 100644 --- a/api_docs/slo.mdx +++ b/api_docs/slo.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/slo title: "slo" image: https://source.unsplash.com/400x175/?github description: API docs for the slo plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'slo'] --- import sloObj from './slo.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index e56d76f12fa94..bc416c95cdf81 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index d28a9c8219ba0..8057aae0d25a5 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 9daa75021f9e6..bba6a2143e503 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index 85b1dd981e2fa..fe1e633fda40e 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 64875265cd0e8..0c84153447ed0 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 4e19c7302c8da..9f31699831028 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 7c31e3c123aa0..54a1325820fcf 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index b4fb210cd68ba..9d4b58a3b2f5c 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionXpack plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] --- import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 73d7520b8b453..90bb8a545417e 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index 96837d1723a31..adaa8c3b7b116 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 486b335ac90e0..1e9950ae466c1 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 80d061d0108ff..5d42001e70860 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index fc68cccfeb3ca..7dd56991798c1 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index e41c22d1c5856..56776329486cf 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.devdocs.json b/api_docs/ui_actions_enhanced.devdocs.json index 16230d3a4fce8..8c5425102a713 100644 --- a/api_docs/ui_actions_enhanced.devdocs.json +++ b/api_docs/ui_actions_enhanced.devdocs.json @@ -2274,7 +2274,7 @@ "label": "validateUrl", "description": [], "signature": [ - "(url: string) => { isValid: boolean; error?: string | undefined; }" + "(url: string) => { isValid: boolean; error?: string | undefined; invalidUrl?: string | undefined; }" ], "path": "src/plugins/ui_actions_enhanced/public/drilldowns/url_drilldown/url_validation.ts", "deprecated": false, @@ -2315,7 +2315,7 @@ "section": "def-public.UrlDrilldownScope", "text": "UrlDrilldownScope" }, - ") => Promise<{ isValid: boolean; error?: string | undefined; }>" + ") => Promise<{ isValid: boolean; error?: string | undefined; invalidUrl?: string | undefined; }>" ], "path": "src/plugins/ui_actions_enhanced/public/drilldowns/url_drilldown/url_validation.ts", "deprecated": false, diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 1ad5dbea88ab5..72d043fa0249d 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index 56b67780dff52..1eceab991425f 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 879cb718b2ae0..ca0012c50e155 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 62d54ceccf017..4d7b77a1c3574 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index 7745d49880b84..916801660e1f3 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index 9f5e5f148642c..1baa84a2bf05f 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index f3cdf962b6bb0..23196e765a82a 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 7fee2b11eb6d5..a7aa2440a30ce 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index 705b4d9b7fbb7..612908d626e63 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index 9a925d2bc2b45..aef778560f240 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index 0b0516ad9ec76..da6269b2ff101 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 796bf55d0803f..76ea3f1061020 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index f9ae4d26758a8..22e1a95c27325 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index b11f313d24442..77472233bd03b 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index 24264a4e5d63e..7697dde509e43 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index ec4c2ed047431..4130f0d01b5f6 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index cb4de0567a7f8..c35c2030f9c8e 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index 18437b47789a4..de07fa4273a21 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index 5a3c02adbc34b..3aabe341d6f26 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index f559074bce8fc..a900a3034c098 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2024-11-03 +date: 2024-11-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 47f1b9d525dd11b44a84ddb968b7a6bb0aa293ea Mon Sep 17 00:00:00 2001 From: Marco Antonio Ghiani Date: Tue, 5 Nov 2024 08:36:51 +0100 Subject: [PATCH 14/57] [LogsUI] Clean up indices before running no data test suite (#196500) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 📓 Summary Closes #196031 These changes add a preventive indices cleanup before the log rate and log categories tests where assertions run against expected no-data pages. This is a preventive measure in case other test suites in the same configuration are not correctly cleaning the installed data or race conditions occur. Co-authored-by: Marco Antonio Ghiani --- .../apps/infra/logs/log_entry_categories_tab.ts | 2 ++ .../apps/infra/logs/log_entry_rate_tab.ts | 4 +++- x-pack/test/functional/services/logs_ui/index.ts | 16 ++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/x-pack/test/functional/apps/infra/logs/log_entry_categories_tab.ts b/x-pack/test/functional/apps/infra/logs/log_entry_categories_tab.ts index 0d4a5440ebd58..6943c393cd8f9 100644 --- a/x-pack/test/functional/apps/infra/logs/log_entry_categories_tab.ts +++ b/x-pack/test/functional/apps/infra/logs/log_entry_categories_tab.ts @@ -58,6 +58,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }; describe('with a trial license', () => { + before(() => logsUi.cleanIndices()); + it('Shows no data page when indices do not exist', async () => { await logsUi.logEntryCategoriesPage.navigateTo(); diff --git a/x-pack/test/functional/apps/infra/logs/log_entry_rate_tab.ts b/x-pack/test/functional/apps/infra/logs/log_entry_rate_tab.ts index 35aa6ec6ca4ae..97b5d1a2ce133 100644 --- a/x-pack/test/functional/apps/infra/logs/log_entry_rate_tab.ts +++ b/x-pack/test/functional/apps/infra/logs/log_entry_rate_tab.ts @@ -11,9 +11,9 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default ({ getPageObjects, getService }: FtrProviderContext) => { const PageObjects = getPageObjects(['security']); + const esArchiver = getService('esArchiver'); const logsUi = getService('logsUi'); const retry = getService('retry'); - const esArchiver = getService('esArchiver'); const security = getService('security'); describe('Log Entry Rate Tab', function () { @@ -58,6 +58,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }; describe('with a trial license', () => { + before(() => logsUi.cleanIndices()); + it('shows no data page when indices do not exist', async () => { await logsUi.logEntryRatePage.navigateTo(); diff --git a/x-pack/test/functional/services/logs_ui/index.ts b/x-pack/test/functional/services/logs_ui/index.ts index ec6a4c8459bc7..c0690957c4148 100644 --- a/x-pack/test/functional/services/logs_ui/index.ts +++ b/x-pack/test/functional/services/logs_ui/index.ts @@ -15,5 +15,21 @@ export function LogsUiProvider(context: FtrProviderContext) { logEntryCategoriesPage: LogEntryCategoriesPageProvider(context), logEntryRatePage: LogEntryRatePageProvider(context), logStreamPage: LogStreamPageProvider(context), + cleanIndices: createCleanIndicesHandler(context), }; } + +const createCleanIndicesHandler = (context: FtrProviderContext) => async () => { + const es = context.getService('es'); + const log = context.getService('log'); + + log.info('Deleting all the indices'); + + const indicesResponse = await es.indices.get({ index: '*' }); + + const indicesDeletionPromises = Object.keys(indicesResponse).map((index) => + es.indices.delete({ index }) + ); + + return Promise.all(indicesDeletionPromises); +}; From 69c1e5a7dda2708773dfeed2314b0ef74f4537ee Mon Sep 17 00:00:00 2001 From: Ievgen Sorokopud Date: Tue, 5 Nov 2024 08:40:59 +0100 Subject: [PATCH 15/57] [Security GenAI] Fix and un-skip Knowledge Base Integration Tests (#198861) ## Summary This is a followup to https://github.com/elastic/kibana/pull/198178 where we skipped KB integration tests. We enable it with this PR. Since it takes a lot of time to setup all Security Labs docs, the idea is to skip installing those docs when it is not needed. For these tests we need to make sure that inference endpoint is setup correctly - labs docs are not required in this case. cc @stephmilovic --- .../impl/schemas/knowledge_base/crud_kb_route.gen.ts | 5 +++++ .../impl/schemas/knowledge_base/crud_kb_route.schema.yaml | 7 +++++++ .../ai_assistant_data_clients/knowledge_base/index.ts | 4 +++- .../server/routes/knowledge_base/post_knowledge_base.ts | 2 ++ .../entries/trial_license_complete_tier/entries.ts | 2 +- .../genai/knowledge_base/entries/utils/helpers.ts | 5 ++++- 6 files changed, 22 insertions(+), 3 deletions(-) diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts index aad215021da81..4f03dbe0b1343 100644 --- a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts @@ -15,6 +15,7 @@ */ import { z } from '@kbn/zod'; +import { BooleanFromString } from '@kbn/zod-helpers'; /** * AI assistant KnowledgeBase. @@ -33,6 +34,10 @@ export const CreateKnowledgeBaseRequestQuery = z.object({ * Optional ELSER modelId to use when setting up the Knowledge Base */ modelId: z.string().optional(), + /** + * Indicates whether we should or should not install Security Labs docs when setting up the Knowledge Base + */ + ignoreSecurityLabs: BooleanFromString.optional().default(false), }); export type CreateKnowledgeBaseRequestQueryInput = z.input; diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.schema.yaml b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.schema.yaml index 0e0f1e9267916..b4c16189e2387 100644 --- a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.schema.yaml +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.schema.yaml @@ -24,6 +24,13 @@ paths: required: false schema: type: string + - name: ignoreSecurityLabs + in: query + description: Indicates whether we should or should not install Security Labs docs when setting up the Knowledge Base + required: false + schema: + type: boolean + default: false responses: 200: description: Indicates a successful call. diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts b/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts index f985095661f3e..333fbb796ddd9 100644 --- a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts +++ b/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts @@ -269,9 +269,11 @@ export class AIAssistantKnowledgeBaseDataClient extends AIAssistantDataClient { public setupKnowledgeBase = async ({ soClient, v2KnowledgeBaseEnabled = true, + ignoreSecurityLabs = false, }: { soClient: SavedObjectsClientContract; v2KnowledgeBaseEnabled?: boolean; + ignoreSecurityLabs?: boolean; }): Promise => { if (this.options.getIsKBSetupInProgress()) { this.options.logger.debug('Knowledge Base setup already in progress'); @@ -366,7 +368,7 @@ export class AIAssistantKnowledgeBaseDataClient extends AIAssistantDataClient { this.options.logger.debug(`Checking if Knowledge Base docs have been loaded...`); - if (v2KnowledgeBaseEnabled) { + if (v2KnowledgeBaseEnabled && !ignoreSecurityLabs) { const labsDocsLoaded = await this.isSecurityLabsDocsLoaded(); if (!labsDocsLoaded) { this.options.logger.debug(`Loading Security Labs KB docs...`); diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.ts b/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.ts index 96317da303ac1..23604886e4a52 100644 --- a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.ts +++ b/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.ts @@ -60,6 +60,7 @@ export const postKnowledgeBaseRoute = (router: ElasticAssistantPluginRouter) => // Only allow modelId override if FF is enabled as this will re-write the ingest pipeline and break any previous KB entries // This is only really needed for API integration tests const modelIdOverride = v2KnowledgeBaseEnabled ? request.query.modelId : undefined; + const ignoreSecurityLabs = request.query.ignoreSecurityLabs; try { const knowledgeBaseDataClient = @@ -74,6 +75,7 @@ export const postKnowledgeBaseRoute = (router: ElasticAssistantPluginRouter) => await knowledgeBaseDataClient.setupKnowledgeBase({ soClient, v2KnowledgeBaseEnabled, + ignoreSecurityLabs, }); return response.ok({ body: { success: true } }); diff --git a/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/trial_license_complete_tier/entries.ts b/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/trial_license_complete_tier/entries.ts index a2e1c2c08be2c..2ecb368c2ba7b 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/trial_license_complete_tier/entries.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/trial_license_complete_tier/entries.ts @@ -32,7 +32,7 @@ export default ({ getService }: FtrProviderContext) => { const es = getService('es'); const ml = getService('ml') as ReturnType; - describe.skip('@ess Basic Security AI Assistant Knowledge Base Entries', () => { + describe('@ess Basic Security AI Assistant Knowledge Base Entries', () => { before(async () => { await installTinyElser(ml); await setupKnowledgeBase(supertest, log); diff --git a/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/utils/helpers.ts b/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/utils/helpers.ts index 62174da6bce4c..cdbb1cca4de24 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/utils/helpers.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/utils/helpers.ts @@ -64,7 +64,10 @@ export const setupKnowledgeBase = async ( namespace?: string ): Promise => { const path = ELASTIC_AI_ASSISTANT_KNOWLEDGE_BASE_URL.replace('{resource?}', resource || ''); - const route = routeWithNamespace(`${path}?modelId=pt_tiny_elser`, namespace); + const route = routeWithNamespace( + `${path}?modelId=pt_tiny_elser&ignoreSecurityLabs=true`, + namespace + ); const response = await supertest .post(route) .set('kbn-xsrf', 'true') From c83e6db44af0eb7e00090c542263dba1ba5c5d60 Mon Sep 17 00:00:00 2001 From: Miriam <31922082+MiriamAparicio@users.noreply.github.com> Date: Tue, 5 Nov 2024 08:20:31 +0000 Subject: [PATCH 16/57] [ObsUX] [APM-OTEL] Filter by trace.id instead of transaction.if for dependency spans (#198781) Closes https://github.com/elastic/kibana/issues/193672 ### Summary of the issue The trace waterfall for dependencies operations is filled querying to span documents using term query for `span.destination.service.resource` and `span.name` fields, and where `transaction.id` exist. The results for this query were empty, in otel, span documents don't have the `transaction.id` field. After this query another one is made to retrieve the transactions for those spans, querying the transaction ids ### Fix The query has been changed, so we will check for the `trace.id` instead of the `transaction.id` On the second query, we will get from those trace ids the ones with `transaction.id` and retrieve the transactions data https://github.com/user-attachments/assets/fba25f61-0646-4071-b49f-422eab7ff18e --- .../maybe_redirect_to_available_span_sample.ts | 2 +- .../dependencies/get_top_dependency_spans.ts | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/dependency_operation_detail_view/maybe_redirect_to_available_span_sample.ts b/x-pack/plugins/observability_solution/apm/public/components/app/dependency_operation_detail_view/maybe_redirect_to_available_span_sample.ts index 1815897cb7c7a..d47cdbca64b92 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/dependency_operation_detail_view/maybe_redirect_to_available_span_sample.ts +++ b/x-pack/plugins/observability_solution/apm/public/components/app/dependency_operation_detail_view/maybe_redirect_to_available_span_sample.ts @@ -24,7 +24,7 @@ export function maybeRedirectToAvailableSpanSample({ page: number; replace: typeof urlHelpersReplace; history: History; - samples: Array<{ spanId: string; traceId: string; transactionId: string }>; + samples: Array<{ spanId: string; traceId: string; transactionId?: string }>; }) { if (spanFetchStatus !== FETCH_STATUS.SUCCESS) { // we're still loading, don't do anything diff --git a/x-pack/plugins/observability_solution/apm/server/routes/dependencies/get_top_dependency_spans.ts b/x-pack/plugins/observability_solution/apm/server/routes/dependencies/get_top_dependency_spans.ts index 2a5a804d57f04..6066ebda155d5 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/dependencies/get_top_dependency_spans.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/dependencies/get_top_dependency_spans.ts @@ -41,7 +41,7 @@ export interface DependencySpan { serviceName: string; agentName: AgentName; traceId: string; - transactionId: string; + transactionId?: string; transactionType?: string; transactionName?: string; duration: number; @@ -72,7 +72,6 @@ export async function getTopDependencySpans({ const topDedsRequiredFields = asMutableArray([ SPAN_ID, TRACE_ID, - TRANSACTION_ID, SPAN_NAME, SERVICE_NAME, SERVICE_ENVIRONMENT, @@ -98,7 +97,6 @@ export async function getTopDependencySpans({ ...kqlQuery(kuery), ...termQuery(SPAN_DESTINATION_SERVICE_RESOURCE, dependencyName), ...termQuery(SPAN_NAME, spanName), - { exists: { field: TRANSACTION_ID } }, ...((sampleRangeFrom ?? 0) >= 0 && (sampleRangeTo ?? 0) > 0 ? [ { @@ -119,9 +117,10 @@ export async function getTopDependencySpans({ }) ).hits.hits.map((hit) => unflattenKnownApmEventFields(hit.fields, topDedsRequiredFields)); - const transactionIds = spans.map((span) => span.transaction.id); + const traceIds = spans.map((span) => span.trace.id); const txRequiredFields = asMutableArray([ + TRACE_ID, TRANSACTION_ID, TRANSACTION_TYPE, TRANSACTION_NAME, @@ -134,10 +133,10 @@ export async function getTopDependencySpans({ }, body: { track_total_hits: false, - size: transactionIds.length, + size: traceIds.length, query: { bool: { - filter: [...termsQuery(TRANSACTION_ID, ...transactionIds)], + filter: [...termsQuery(TRACE_ID, ...traceIds), { exists: { field: TRANSACTION_ID } }], }, }, fields: txRequiredFields, @@ -148,10 +147,10 @@ export async function getTopDependencySpans({ }) ).hits.hits.map((hit) => unflattenKnownApmEventFields(hit.fields, txRequiredFields)); - const transactionsById = keyBy(transactions, (transaction) => transaction.transaction.id); + const transactionsByTraceId = keyBy(transactions, (transaction) => transaction.trace.id); return spans.map((span): DependencySpan => { - const transaction = maybe(transactionsById[span.transaction!.id]); + const transaction = maybe(transactionsByTraceId[span.trace!.id]); return { '@timestamp': new Date(span['@timestamp']).getTime(), @@ -162,7 +161,7 @@ export async function getTopDependencySpans({ duration: span.span.duration.us, traceId: span.trace.id, outcome: (span.event?.outcome || EventOutcome.unknown) as EventOutcome, - transactionId: span.transaction!.id, + transactionId: transaction?.transaction.id, transactionType: transaction?.transaction.type, transactionName: transaction?.transaction.name, }; From ae4209e787164dd1927a986c0dba33355b906fcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20St=C3=BCrmer?= Date: Tue, 5 Nov 2024 10:12:53 +0100 Subject: [PATCH 17/57] [Logs Overview] Improve analyzer by filtering unsuitable tokens (#197868) This improves the analyzer configuration used by the logs overview categorization feature so it's less susceptible to numeric and hexadecimal values that overwhelm the rest of the content after tokentization. --------- Co-authored-by: Elastic Machine --- .../scenarios/helpers/unstructured_logs.ts | 34 +++++++++----- .../categorize_logs_service/queries.ts | 44 +++++++++++++++++-- 2 files changed, 64 insertions(+), 14 deletions(-) diff --git a/packages/kbn-apm-synthtrace/src/scenarios/helpers/unstructured_logs.ts b/packages/kbn-apm-synthtrace/src/scenarios/helpers/unstructured_logs.ts index 490bd449e2b60..9f2e2f76dfee6 100644 --- a/packages/kbn-apm-synthtrace/src/scenarios/helpers/unstructured_logs.ts +++ b/packages/kbn-apm-synthtrace/src/scenarios/helpers/unstructured_logs.ts @@ -33,7 +33,7 @@ export const unstructuredLogMessageGenerators = { ])} successfully ${f.number.int({ max: 100000 })} times`, ], taskStatusSuccess: (f: Faker) => [ - `${f.hacker.noun()}: ${f.word.words()} ${f.helpers.arrayElement([ + `${f.hacker.noun()}: ${f.word.words()} ${f.string.uuid()} ${f.helpers.arrayElement([ 'triggered', 'executed', 'processed', @@ -46,7 +46,7 @@ export const unstructuredLogMessageGenerators = { 'execution', 'processing', 'handling', - ])} of ${f.word.words()} failed at ${f.date.recent().toISOString()}`, + ])} of ${f.string.uuid()} failed at ${f.date.recent().toISOString()}`, ], error: (f: Faker) => [ `${f.helpers.arrayElement([ @@ -58,7 +58,7 @@ export const unstructuredLogMessageGenerators = { 'Issue', ])}: ${f.hacker.phrase()}`, `Stopping ${f.number.int(42)} background tasks...`, - 'Shutting down process...', + `Shutting down process ${f.string.hexadecimal({ length: 16, prefix: '' })}...`, ], restart: (f: Faker) => { const service = f.database.engine(); @@ -72,13 +72,27 @@ export const unstructuredLogMessageGenerators = { ])}`, ]; }, - userAuthentication: (f: Faker) => [ - `User ${f.internet.userName()} ${f.helpers.arrayElement([ - 'logged in', - 'logged out', - 'failed to login', - ])}`, - ], + userAuthentication: (f: Faker) => + f.helpers.arrayElements( + [ + `User ${f.internet.userName()} (id ${f.string.uuid()}) ${f.helpers.arrayElement([ + 'logged in', + 'logged out', + ])} at ${f.date.recent().toISOString()} from ${f.internet.ip()}:${f.internet.port()}`, + `Created new user ${f.internet.userName()} (id ${f.string.uuid()})`, + `Disabled user ${f.internet.userName()} (id ${f.string.uuid()}) due to level ${f.number.int( + { max: 10 } + )} ${f.helpers.arrayElement([ + 'suspicious activity', + 'security concerns', + 'policy violation', + ])}`, + `Login ${f.internet.userName()} (id ${f.string.uuid()}) incorrect ${f.number.int({ + max: 100, + })} times from ${f.internet.ipv6()}.`, + ], + { min: 1, max: 3 } + ), networkEvent: (f: Faker) => [ `Network ${f.helpers.arrayElement([ 'connection', diff --git a/x-pack/packages/observability/logs_overview/src/services/categorize_logs_service/queries.ts b/x-pack/packages/observability/logs_overview/src/services/categorize_logs_service/queries.ts index aef12da303bcc..3328bd5f8585a 100644 --- a/x-pack/packages/observability/logs_overview/src/services/categorize_logs_service/queries.ts +++ b/x-pack/packages/observability/logs_overview/src/services/categorize_logs_service/queries.ts @@ -5,7 +5,10 @@ * 2.0. */ -import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; +import { + AggregationsCategorizeTextAnalyzer, + QueryDslQueryContainer, +} from '@elastic/elasticsearch/lib/api/types'; import { calculateAuto } from '@kbn/calculate-auto'; import { RandomSamplerWrapper } from '@kbn/ml-random-sampler-utils'; import moment from 'moment'; @@ -109,9 +112,7 @@ export const createCategorizationRequestParams = ({ categorize_text: { field: messageField, size: maxCategoriesCount, - categorization_analyzer: { - tokenizer: 'standard', - }, + categorization_analyzer: categorizationAnalyzerConfig, ...(minDocsPerCategory > 0 ? { min_doc_count: minDocsPerCategory } : {}), }, aggs: { @@ -149,3 +150,38 @@ export const createCategoryQuery = }, }, }); + +// This emulates the behavior of the `ml_standard` tokenizer in the ML plugin in +// regard to the hexadecimal and numeric tokens. The other parts pertaining to +// infix punctuation and file paths are not easily emulated this way. +// https://github.com/elastic/elasticsearch/blob/becd08da24df2af93eee28053d32929298cdccbd/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/job/categorization/MlStandardTokenizer.java#L35-L146 +// We don't use the `ml_standard` tokenizer directly because it produces tokens +// that are different from the ones produced by the `standard` tokenizer upon +// indexing. +const categorizationAnalyzerConfig: AggregationsCategorizeTextAnalyzer = { + tokenizer: 'standard', + char_filter: [ + 'first_line_with_letters', + // This ignores tokens that are hexadecimal numbers + // @ts-expect-error the official types don't support inline char filters + { + type: 'pattern_replace', + pattern: '\\b[a-fA-F][a-fA-F0-9]+\\b', + replacement: '', + }, + // This ignore tokens that start with a digit + // @ts-expect-error the official types don't support inline char filters + { + type: 'pattern_replace', + pattern: '\\b\\d\\w*\\b', + replacement: '', + }, + ], + filter: [ + // @ts-expect-error the official types don't support inline token filters + { + type: 'limit', + max_token_count: '100', + }, + ], +}; From f33baa36cd4cff9be2b9fb50151be655910b4433 Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Tue, 5 Nov 2024 09:23:00 +0000 Subject: [PATCH 18/57] [ML] Removing validate detector endpoint (#198667) The ML UI makes no use of the validate detector endpoint in es, therefore we do not need the kibana endpoint. This can be replaced if we ever do need it, but for now it's better to not have unused internal endpoints exposed in kibana with no api tests. --- .../services/ml_api_service/index.ts | 10 ------ .../plugins/ml/server/lib/ml_client/types.ts | 3 +- .../ml/server/routes/anomaly_detectors.ts | 31 ------------------- 3 files changed, 1 insertion(+), 43 deletions(-) diff --git a/x-pack/plugins/ml/public/application/services/ml_api_service/index.ts b/x-pack/plugins/ml/public/application/services/ml_api_service/index.ts index f21e67fe450f4..3552b8f006091 100644 --- a/x-pack/plugins/ml/public/application/services/ml_api_service/index.ts +++ b/x-pack/plugins/ml/public/application/services/ml_api_service/index.ts @@ -27,7 +27,6 @@ import type { JobStats, Datafeed, CombinedJob, - Detector, AnalysisConfig, ModelSnapshot, IndicesOptions, @@ -350,15 +349,6 @@ export function mlApiProvider(httpService: HttpService) { }); }, - validateDetector({ detector }: { detector: Detector }) { - const body = JSON.stringify(detector); - return httpService.http({ - path: `${ML_INTERNAL_BASE_PATH}/anomaly_detectors/_validate/detector`, - method: 'POST', - body, - }); - }, - forecast({ jobId, duration, diff --git a/x-pack/plugins/ml/server/lib/ml_client/types.ts b/x-pack/plugins/ml/server/lib/ml_client/types.ts index 93977257cdc22..ca7b36df8f208 100644 --- a/x-pack/plugins/ml/server/lib/ml_client/types.ts +++ b/x-pack/plugins/ml/server/lib/ml_client/types.ts @@ -121,8 +121,7 @@ export type MlClientParams = | Parameters | Parameters | Parameters - | Parameters - | Parameters; + | Parameters; export type MlGetADParams = Parameters | Parameters; diff --git a/x-pack/plugins/ml/server/routes/anomaly_detectors.ts b/x-pack/plugins/ml/server/routes/anomaly_detectors.ts index 8cd9f45a4217e..4c75b7a85556a 100644 --- a/x-pack/plugins/ml/server/routes/anomaly_detectors.ts +++ b/x-pack/plugins/ml/server/routes/anomaly_detectors.ts @@ -349,37 +349,6 @@ export function jobRoutes({ router, routeGuard }: RouteInitialization) { }) ); - router.versioned - .post({ - path: `${ML_INTERNAL_BASE_PATH}/anomaly_detectors/_validate/detector`, - access: 'internal', - options: { - tags: ['access:ml:canCreateJob'], - }, - summary: 'Validates detector', - description: 'Validates specified detector.', - }) - .addVersion( - { - version: '1', - validate: { - request: { - body: schema.any(), - }, - }, - }, - routeGuard.fullLicenseAPIGuard(async ({ mlClient, request, response }) => { - try { - const body = await mlClient.validateDetector({ body: request.body }); - return response.ok({ - body, - }); - } catch (e) { - return response.customError(wrapError(e)); - } - }) - ); - router.versioned .delete({ path: `${ML_INTERNAL_BASE_PATH}/anomaly_detectors/{jobId}/_forecast/{forecastId}`, From 5fb74fefec544202429dd6dfebbba304b04cab04 Mon Sep 17 00:00:00 2001 From: Tre Date: Tue, 5 Nov 2024 09:26:14 +0000 Subject: [PATCH 19/57] [FTR][Ownership] Assign guided_onboarding, etc (#198044) ## Assignment Reasons Assigned guided_onboarding due to https://github.com/elastic/kibana/blob/main/api_docs/guided_onboarding.mdx#L18 - It says "Contact @elastic/appex-sharedux for questions regarding this plugin." Assigned shared_ux due to the name Assigned telemetry due to https://github.com/elastic/kibana/blob/main/api_docs/telemetry.mdx#L18 - It says "Contact @elastic/kibana-core for questions regarding this plugin." Assigned response_stream due to https://github.com/elastic/kibana/blob/main/examples/response_stream/kibana.jsonc#L4 Assigned advanced_settings due to https://github.com/elastic/kibana/blob/main/api_docs/advanced_settings.mdx#L18 - It says "Contact @elastic/appex-sharedux for questions regarding this plugin." Assigned upgrade_assistant due to https://github.com/elastic/kibana/blob/main/x-pack/plugins/upgrade_assistant/kibana.jsonc#L4 Assigned functional_cors due to https://github.com/elastic/kibana/blob/main/x-pack/test/functional_cors/plugins/kibana_cors_test/kibana.jsonc#L4 Assigned x-pack/test/functional_cors due to https://github.com/elastic/kibana/blob/main/x-pack/test/functional_cors/plugins/kibana_cors_test/kibana.jsonc#L4 Assigned ingest_pipelines due to https://github.com/elastic/kibana/blob/main/api_docs/ingest_pipelines.mdx#L18 - It says "Contact @elastic/kibana-management for questions regarding this plugin." Assigned disable_ems due to git blame Assigned cross_cluster_replication due to https://github.com/elastic/kibana/blob/main/x-pack/plugins/cross_cluster_replication/kibana.jsonc#L5 Contributes to: https://github.com/elastic/kibana/issues/192979 --------- Co-authored-by: Robert Oskamp Co-authored-by: Elastic Machine --- .github/CODEOWNERS | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 523e860db1491..086c31140dad4 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1295,6 +1295,7 @@ x-pack/test_serverless/**/test_suites/observability/ai_assistant @elastic/obs-ai ### END Observability Plugins # Presentation +/x-pack/test/disable_ems @elastic/kibana-presentation /x-pack/test/functional/apps/dashboard @elastic/kibana-presentation /x-pack/test/accessibility/apps/group3/maps.ts @elastic/kibana-presentation /x-pack/test/accessibility/apps/group1/dashboard_panel_options.ts @elastic/kibana-presentation @@ -1329,6 +1330,7 @@ x-pack/test_serverless/**/test_suites/observability/ai_assistant @elastic/obs-ai /x-pack/test/api_integration/services/ml.ts @elastic/ml-ui # Additional plugins and packages maintained by the ML team. +/test/examples/response_stream @elastic/ml-ui /x-pack/test/accessibility/apps/group2/transform.ts @elastic/ml-ui /x-pack/test/api_integration/apis/aiops/ @elastic/ml-ui /x-pack/test/api_integration/apis/transform/ @elastic/ml-ui @@ -1459,7 +1461,6 @@ x-pack/test/**/deployment_agnostic/ @elastic/appex-qa #temporarily to monitor te # AppEx Platform Services Security //x-pack/test_serverless/api_integration/test_suites/common/security_response_headers.ts @elastic/kibana-security /x-pack/test/api_integration/apis/es @elastic/kibana-security - /x-pack/test/api_integration/apis/features @elastic/kibana-security # Kibana Telemetry @@ -1571,14 +1572,18 @@ x-pack/test/api_integration/apis/management/index_management/inference_endpoints /x-pack/test/functional_search/ @elastic/search-kibana # Management Experience - Deployment Management +/x-pack/test/api_integration/services/index_management.ts @elastic/kibana-management /x-pack/test/functional/apps/license_management @elastic/kibana-management /x-pack/test/functional/apps/painless_lab @elastic/kibana-management /x-pack/test/functional/apps/management @elastic/kibana-management /x-pack/test/api_integration/services/index_management.ts @elastic/kibana-management /x-pack/test/functional/services/grok_debugger.js @elastic/kibana-management +/x-pack/test/functional/apps/cross_cluster_replication @elastic/kibana-management /x-pack/test/functional/apps/grok_debugger @elastic/kibana-management /x-pack/test/functional/apps/index_lifecycle_management @elastic/kibana-management /x-pack/test/functional/apps/index_management @elastic/kibana-management +/x-pack/test/functional/apps/ingest_pipelines @elastic/kibana-management +/x-pack/test/functional/apps/upgrade_assistant @elastic/kibana-management /x-pack/test/api_integration/services/ingest_pipelines @elastic/kibana-management /x-pack/test/functional/apps/watcher @elastic/kibana-management /x-pack/test/api_integration/apis/watcher @elastic/kibana-management @@ -2016,6 +2021,9 @@ x-pack/test/profiling_api_integration @elastic/obs-ux-infra_services-team x-pack/plugins/observability_solution/observability_shared/public/components/profiling @elastic/obs-ux-infra_services-team # Shared UX +/test/api_integration/apis/guided_onboarding @elastic/appex-sharedux +/test/plugin_functional/test_suites/shared_ux @elastic/appex-sharedux +/x-pack/test/functional/apps/advanced_settings @elastic/appex-sharedux @elastic/kibana-management /test/examples/content_management @elastic/appex-sharedux /test/plugin_functional/plugins/kbn_sample_panel_action @elastic/appex-sharedux /test/functional/apps/kibana_overview @elastic/appex-sharedux From 2ba9d7cb6ddeb44dfa66b3817a95dc92455a1f7b Mon Sep 17 00:00:00 2001 From: Ryan Keairns Date: Tue, 5 Nov 2024 01:46:38 -0800 Subject: [PATCH 20/57] Clean up loading state for solution nav (#198248) Closes #198247 ## Summary - Add margin - Replace spinner with skeleton loader design *Before* ![CleanShot 2024-10-29 at 21 23 28@2x](https://github.com/user-attachments/assets/662b7081-8c2f-46e8-961c-fc6f71c7b6a2) *After* https://github.com/user-attachments/assets/3b922588-782a-4f42-bfce-4dec8b97d9e9 --- .../public/side_navigation/index.tsx | 24 +++++++++++++++++-- src/plugins/navigation/tsconfig.json | 1 + .../serverless/public/navigation/index.tsx | 21 ++++++++++++++-- x-pack/plugins/serverless/tsconfig.json | 1 + 4 files changed, 43 insertions(+), 4 deletions(-) diff --git a/src/plugins/navigation/public/side_navigation/index.tsx b/src/plugins/navigation/public/side_navigation/index.tsx index e2d284b77b90b..c6659ef1af6f2 100644 --- a/src/plugins/navigation/public/side_navigation/index.tsx +++ b/src/plugins/navigation/public/side_navigation/index.tsx @@ -7,15 +7,35 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +import { css } from '@emotion/react'; +import { euiThemeVars } from '@kbn/ui-theme'; import React, { Suspense, type FC } from 'react'; -import { EuiLoadingSpinner } from '@elastic/eui'; +import { EuiSkeletonRectangle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import type { Props as NavigationProps } from './side_navigation'; const SideNavComponentLazy = React.lazy(() => import('./side_navigation')); export const SideNavComponent: FC = (props) => ( - }> + + } + > ); diff --git a/src/plugins/navigation/tsconfig.json b/src/plugins/navigation/tsconfig.json index 1ee0462330954..00b5186670cf1 100644 --- a/src/plugins/navigation/tsconfig.json +++ b/src/plugins/navigation/tsconfig.json @@ -27,6 +27,7 @@ "@kbn/config-schema", "@kbn/i18n", "@kbn/std", + "@kbn/ui-theme", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/serverless/public/navigation/index.tsx b/x-pack/plugins/serverless/public/navigation/index.tsx index b22b8d51e6166..2ff6e27c664f7 100644 --- a/x-pack/plugins/serverless/public/navigation/index.tsx +++ b/x-pack/plugins/serverless/public/navigation/index.tsx @@ -5,14 +5,31 @@ * 2.0. */ +import { css } from '@emotion/react'; +import { euiThemeVars } from '@kbn/ui-theme'; import React, { Suspense, type FC } from 'react'; -import { EuiLoadingSpinner } from '@elastic/eui'; +import { EuiSkeletonRectangle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import type { Props as NavigationProps } from './navigation'; const SideNavComponentLazy = React.lazy(() => import('./navigation')); export const SideNavComponent: FC = (props) => ( - }> + + } + > ); diff --git a/x-pack/plugins/serverless/tsconfig.json b/x-pack/plugins/serverless/tsconfig.json index ce60d39bef0f0..35cc5e554ceb3 100644 --- a/x-pack/plugins/serverless/tsconfig.json +++ b/x-pack/plugins/serverless/tsconfig.json @@ -28,5 +28,6 @@ "@kbn/management-cards-navigation", "@kbn/react-kibana-mount", "@kbn/react-kibana-context-render", + "@kbn/ui-theme", ] } From 77b9d24fa55438f8224b1a217d32e5496927b22a Mon Sep 17 00:00:00 2001 From: Tre Date: Tue, 5 Nov 2024 09:49:46 +0000 Subject: [PATCH 21/57] [SKIP ON MKI] `x-pack/test_serverless/api_integration/test_suites/common/reporting/datastream.ts` (#198813) See details: https://github.com/elastic/kibana/issues/198811 --------- Co-authored-by: Robert Oskamp --- .../api_integration/test_suites/common/reporting/datastream.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/x-pack/test_serverless/api_integration/test_suites/common/reporting/datastream.ts b/x-pack/test_serverless/api_integration/test_suites/common/reporting/datastream.ts index ca021c5d35dbc..a4eb181e6bc2b 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/reporting/datastream.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/reporting/datastream.ts @@ -33,6 +33,8 @@ export default function ({ getService }: FtrProviderContext) { }; describe('Data Stream', function () { + // see details: https://github.com/elastic/kibana/issues/198811 + this.tags(['failsOnMKI']); const generatedReports = new Set(); before(async () => { roleAuthc = await svlUserManager.createM2mApiKeyWithRoleScope('admin'); From b122722d886b66431108a33d0eac2447a63da179 Mon Sep 17 00:00:00 2001 From: Ievgen Sorokopud Date: Tue, 5 Nov 2024 11:12:33 +0100 Subject: [PATCH 22/57] [Security GenAI][BUG] Knowledge Base: Show only indices with `semantic_text` fields (#198707) ## Summary This is a fix the next issue: > Index input should only list indices with semantic_text fields, not all indices. ### Current behaviour We show all available indices Screenshot 2024-11-01 at 18 14 36 ### Behaviour after the fix We show only indices with `semantic_text` fields Screenshot 2024-11-01 at 18 08 29 ### Testing notes Create some indices with `semantic_text` fields. For example, you can do that via uploading and indexing a PDF file: 1. Navigate to Integrations page 2. Select "Upload a file" 3. Select and upload a PDF file 4. Press Import button 5. Switch to Advanced tab 6. Fill in "Index name" 7. Add additional field > Add semantic text field > Fill in form * Field: `attachment.content` * Copy to field: `content` * Inference endpoint: `elser_model_2` 8. Press Add button 9. Press Import button ### Checklist Delete any items that are not applicable to this PR. - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --- .../kbn-elastic-assistant-common/constants.ts | 2 + .../impl/schemas/index.ts | 1 + .../get_knowledge_base_indices_route.gen.ts | 25 +++ ...t_knowledge_base_indices_route.schema.yaml | 42 +++++ .../assistant/api/knowledge_base/api.test.tsx | 32 +++- .../impl/assistant/api/knowledge_base/api.tsx | 31 ++++ .../use_knowledge_base_indices.test.tsx | 85 +++++++++ .../use_knowledge_base_indices.tsx | 59 +++++++ .../index.test.tsx | 6 +- .../index.tsx | 1 + .../index_entry_editor.test.tsx | 13 +- .../index_entry_editor.tsx | 28 +-- .../translations.ts | 8 + .../server/__mocks__/request.ts | 7 + .../elastic_assistant/server/routes/index.ts | 1 + .../get_knowledge_base_indices.test.ts | 79 +++++++++ .../get_knowledge_base_indices.ts | 73 ++++++++ .../server/routes/register_routes.ts | 2 + .../semantic_text_fields/data.json | 161 ++++++++++++++++++ .../semantic_text_fields/mappings.json | 30 ++++ .../trial_license_complete_tier/index.ts | 1 + .../semntic_text_indices.ts | 38 +++++ .../knowledge_base/entries/utils/helpers.ts | 30 ++++ 23 files changed, 738 insertions(+), 17 deletions(-) create mode 100644 x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts create mode 100644 x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.schema.yaml create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.test.tsx create mode 100644 x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.tsx create mode 100644 x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.test.ts create mode 100644 x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.ts create mode 100644 x-pack/test/functional/es_archives/security_solution/semantic_text_fields/data.json create mode 100644 x-pack/test/functional/es_archives/security_solution/semantic_text_fields/mappings.json create mode 100644 x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/trial_license_complete_tier/semntic_text_indices.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/constants.ts b/x-pack/packages/kbn-elastic-assistant-common/constants.ts index d84d9d4cd6825..49db6c295a51a 100755 --- a/x-pack/packages/kbn-elastic-assistant-common/constants.ts +++ b/x-pack/packages/kbn-elastic-assistant-common/constants.ts @@ -50,6 +50,8 @@ export const ELASTIC_AI_ASSISTANT_KNOWLEDGE_BASE_ENTRIES_URL_FIND = `${ELASTIC_AI_ASSISTANT_KNOWLEDGE_BASE_ENTRIES_URL}/_find` as const; export const ELASTIC_AI_ASSISTANT_KNOWLEDGE_BASE_ENTRIES_URL_BULK_ACTION = `${ELASTIC_AI_ASSISTANT_KNOWLEDGE_BASE_ENTRIES_URL}/_bulk_action` as const; +export const ELASTIC_AI_ASSISTANT_KNOWLEDGE_BASE_INDICES_URL = + `${ELASTIC_AI_ASSISTANT_INTERNAL_URL}/knowledge_base/_indices` as const; export const ELASTIC_AI_ASSISTANT_EVALUATE_URL = `${ELASTIC_AI_ASSISTANT_INTERNAL_URL}/evaluate` as const; diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/index.ts b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/index.ts index 6304bfa4786cf..9233791a870c3 100644 --- a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/index.ts +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/index.ts @@ -49,6 +49,7 @@ export * from './actions_connector/post_actions_connector_execute_route.gen'; // Knowledge Base Schemas export * from './knowledge_base/crud_kb_route.gen'; +export * from './knowledge_base/get_knowledge_base_indices_route.gen'; export * from './knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen'; export * from './knowledge_base/entries/common_attributes.gen'; export * from './knowledge_base/entries/crud_knowledge_base_entries_route.gen'; diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts new file mode 100644 index 0000000000000..0e1df8bce089f --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* + * NOTICE: Do not edit this file manually. + * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. + * + * info: + * title: Get Knowledge Base Indices API endpoints + * version: 1 + */ + +import { z } from '@kbn/zod'; + +export type GetKnowledgeBaseIndicesResponse = z.infer; +export const GetKnowledgeBaseIndicesResponse = z.object({ + /** + * List of indices with at least one field of a `sematic_text` type. + */ + indices: z.array(z.string()), +}); diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.schema.yaml b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.schema.yaml new file mode 100644 index 0000000000000..f9dba830f9556 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.schema.yaml @@ -0,0 +1,42 @@ +openapi: 3.0.0 +info: + title: Get Knowledge Base Indices API endpoints + version: '1' +paths: + /internal/elastic_assistant/knowledge_base/_indices: + get: + x-codegen-enabled: true + x-labels: [ess, serverless] + operationId: GetKnowledgeBaseIndices + description: Gets Knowledge Base indices that have fields of a `sematic_text` type. + summary: Gets Knowledge Base indices that have fields of a `sematic_text` type. + tags: + - KnowledgeBase API + responses: + 200: + description: Indicates a successful call. + content: + application/json: + schema: + type: object + properties: + indices: + type: array + description: List of indices with at least one field of a `sematic_text` type. + items: + type: string + required: + - indices + 400: + description: Generic Error + content: + application/json: + schema: + type: object + properties: + statusCode: + type: number + error: + type: string + message: + type: string diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.test.tsx index 22ccd2bc0ecdf..5509f43037444 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.test.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.test.tsx @@ -7,7 +7,12 @@ import { HttpSetup } from '@kbn/core-http-browser'; -import { deleteKnowledgeBase, getKnowledgeBaseStatus, postKnowledgeBase } from './api'; +import { + deleteKnowledgeBase, + getKnowledgeBaseIndices, + getKnowledgeBaseStatus, + postKnowledgeBase, +} from './api'; jest.mock('@kbn/core-http-browser'); @@ -95,4 +100,29 @@ describe('API tests', () => { await expect(deleteKnowledgeBase(knowledgeBaseArgs)).resolves.toThrowError('simulated error'); }); }); + + describe('getKnowledgeBaseIndices', () => { + it('calls the knowledge base API when correct resource path', async () => { + await getKnowledgeBaseIndices({ http: mockHttp }); + + expect(mockHttp.fetch).toHaveBeenCalledWith( + '/internal/elastic_assistant/knowledge_base/_indices', + { + method: 'GET', + signal: undefined, + version: '1', + } + ); + }); + it('returns error when error is an error', async () => { + const error = 'simulated error'; + (mockHttp.fetch as jest.Mock).mockImplementation(() => { + throw new Error(error); + }); + + await expect(getKnowledgeBaseIndices({ http: mockHttp })).resolves.toThrowError( + 'simulated error' + ); + }); + }); }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.tsx index 4dd03a1cb2931..4db8c0787a1e1 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.tsx @@ -11,7 +11,9 @@ import { CreateKnowledgeBaseResponse, DeleteKnowledgeBaseRequestParams, DeleteKnowledgeBaseResponse, + ELASTIC_AI_ASSISTANT_KNOWLEDGE_BASE_INDICES_URL, ELASTIC_AI_ASSISTANT_KNOWLEDGE_BASE_URL, + GetKnowledgeBaseIndicesResponse, ReadKnowledgeBaseRequestParams, ReadKnowledgeBaseResponse, } from '@kbn/elastic-assistant-common'; @@ -108,3 +110,32 @@ export const deleteKnowledgeBase = async ({ return error as IHttpFetchError; } }; + +/** + * API call for getting indices that have fields of `semantic_text` type. + * + * @param {Object} options - The options object. + * @param {HttpSetup} options.http - HttpSetup + * @param {AbortSignal} [options.signal] - AbortSignal + * + * @returns {Promise} + */ +export const getKnowledgeBaseIndices = async ({ + http, + signal, +}: { + http: HttpSetup; + signal?: AbortSignal | undefined; +}): Promise => { + try { + const response = await http.fetch(ELASTIC_AI_ASSISTANT_KNOWLEDGE_BASE_INDICES_URL, { + method: 'GET', + signal, + version: API_VERSIONS.internal.v1, + }); + + return response as GetKnowledgeBaseIndicesResponse; + } catch (error) { + return error as IHttpFetchError; + } +}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.test.tsx new file mode 100644 index 0000000000000..4f258aa3c1964 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.test.tsx @@ -0,0 +1,85 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { act, renderHook } from '@testing-library/react-hooks'; +import { + useKnowledgeBaseIndices, + UseKnowledgeBaseIndicesParams, +} from './use_knowledge_base_indices'; +import { getKnowledgeBaseIndices as _getKnowledgeBaseIndices } from './api'; + +const getKnowledgeBaseIndicesMock = _getKnowledgeBaseIndices as jest.Mock; + +jest.mock('./api', () => { + const actual = jest.requireActual('./api'); + return { + ...actual, + getKnowledgeBaseIndices: jest.fn((...args) => actual.getKnowledgeBaseIndices(...args)), + }; +}); + +jest.mock('@tanstack/react-query', () => ({ + useQuery: jest.fn().mockImplementation(async (queryKey, fn, opts) => { + try { + const res = await fn({}); + return Promise.resolve(res); + } catch (e) { + opts.onError(e); + } + }), +})); + +const indicesResponse = ['index-1', 'index-2', 'index-3']; + +const http = { + fetch: jest.fn().mockResolvedValue(indicesResponse), +}; +const toasts = { + addError: jest.fn(), +}; +const defaultProps = { http, toasts } as unknown as UseKnowledgeBaseIndicesParams; +describe('useKnowledgeBaseIndices', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should call api to get knowledge base indices', async () => { + await act(async () => { + const { waitForNextUpdate } = renderHook(() => useKnowledgeBaseIndices(defaultProps)); + await waitForNextUpdate(); + + expect(defaultProps.http.fetch).toHaveBeenCalledWith( + '/internal/elastic_assistant/knowledge_base/_indices', + { + method: 'GET', + signal: undefined, + version: '1', + } + ); + expect(toasts.addError).not.toHaveBeenCalled(); + }); + }); + + it('should return indices response', async () => { + await act(async () => { + const { result, waitForNextUpdate } = renderHook(() => useKnowledgeBaseIndices(defaultProps)); + await waitForNextUpdate(); + + await expect(result.current).resolves.toStrictEqual(indicesResponse); + }); + }); + + it('should display error toast when api throws error', async () => { + getKnowledgeBaseIndicesMock.mockRejectedValue(new Error('this is an error')); + await act(async () => { + const { waitForNextUpdate } = renderHook(() => useKnowledgeBaseIndices(defaultProps)); + await waitForNextUpdate(); + + expect(toasts.addError).toHaveBeenCalled(); + }); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.tsx new file mode 100644 index 0000000000000..2b245c70754b5 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.tsx @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { UseQueryResult } from '@tanstack/react-query'; +import { useQuery } from '@tanstack/react-query'; +import type { HttpSetup, IHttpFetchError, ResponseErrorBody } from '@kbn/core-http-browser'; +import type { IToasts } from '@kbn/core-notifications-browser'; +import { i18n } from '@kbn/i18n'; +import { GetKnowledgeBaseIndicesResponse } from '@kbn/elastic-assistant-common'; +import { getKnowledgeBaseIndices } from './api'; + +const KNOWLEDGE_BASE_INDICES_QUERY_KEY = ['elastic-assistant', 'knowledge-base-indices']; + +export interface UseKnowledgeBaseIndicesParams { + http: HttpSetup; + toasts?: IToasts; +} + +/** + * Hook for getting indices that have fields of `semantic_text` type. + * + * @param {Object} options - The options object. + * @param {HttpSetup} options.http - HttpSetup + * @param {IToasts} [options.toasts] - IToasts + * + * @returns {useQuery} hook for getting indices that have fields of `semantic_text` type + */ +export const useKnowledgeBaseIndices = ({ + http, + toasts, +}: UseKnowledgeBaseIndicesParams): UseQueryResult< + GetKnowledgeBaseIndicesResponse, + IHttpFetchError +> => { + return useQuery( + KNOWLEDGE_BASE_INDICES_QUERY_KEY, + async ({ signal }) => { + return getKnowledgeBaseIndices({ http, signal }); + }, + { + onError: (error: IHttpFetchError) => { + if (error.name !== 'AbortError') { + toasts?.addError( + error.body && error.body.message ? new Error(error.body.message) : error, + { + title: i18n.translate('xpack.elasticAssistant.knowledgeBase.indicesError', { + defaultMessage: 'Error fetching Knowledge Base Indices', + }), + } + ); + } + }, + } + ); +}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.test.tsx index 4f85dae819f0f..cfc8d2d3d52f9 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.test.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.test.tsx @@ -24,6 +24,7 @@ import { MOCK_QUICK_PROMPTS } from '../../mock/quick_prompt'; import { useAssistantContext } from '../../..'; import { I18nProvider } from '@kbn/i18n-react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { useKnowledgeBaseIndices } from '../../assistant/api/knowledge_base/use_knowledge_base_indices'; const mockContext = { basePromptContexts: MOCK_QUICK_PROMPTS, @@ -44,13 +45,13 @@ jest.mock('../../assistant/api/knowledge_base/entries/use_update_knowledge_base_ jest.mock('../../assistant/api/knowledge_base/entries/use_delete_knowledge_base_entries'); jest.mock('../../assistant/settings/use_settings_updater/use_settings_updater'); +jest.mock('../../assistant/api/knowledge_base/use_knowledge_base_indices'); jest.mock('../../assistant/api/knowledge_base/use_knowledge_base_status'); jest.mock('../../assistant/api/knowledge_base/entries/use_knowledge_base_entries'); jest.mock( '../../assistant/common/components/assistant_settings_management/flyout/use_flyout_modal_visibility' ); const mockDataViews = { - getIndices: jest.fn().mockResolvedValue([{ name: 'index-1' }, { name: 'index-2' }]), getFieldsForWildcard: jest.fn().mockResolvedValue([ { name: 'field-1', esTypes: ['semantic_text'] }, { name: 'field-2', esTypes: ['text'] }, @@ -148,6 +149,9 @@ describe('KnowledgeBaseSettingsManagement', () => { }, isFetched: true, }); + (useKnowledgeBaseIndices as jest.Mock).mockReturnValue({ + data: { indices: ['index-1', 'index-2'] }, + }); (useKnowledgeBaseEntries as jest.Mock).mockReturnValue({ data: { data: mockData }, isFetching: false, diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.tsx index 092cc7e36689e..904ceba7a1f6f 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.tsx @@ -434,6 +434,7 @@ export const KnowledgeBaseSettingsManagement: React.FC = React.memo(({ d /> ) : ( { const mockSetEntry = jest.fn(); const mockDataViews = { - getIndices: jest.fn().mockResolvedValue([{ name: 'index-1' }, { name: 'index-2' }]), getFieldsForWildcard: jest.fn().mockResolvedValue([ { name: 'field-1', esTypes: ['semantic_text'] }, { name: 'field-2', esTypes: ['text'] }, @@ -24,6 +27,9 @@ describe('IndexEntryEditor', () => { ]), getExistingIndices: jest.fn().mockResolvedValue(['index-1']), } as unknown as DataViewsContract; + const http = { + get: jest.fn(), + } as unknown as HttpSetup; const defaultProps = { dataViews: mockDataViews, @@ -37,10 +43,14 @@ describe('IndexEntryEditor', () => { queryDescription: 'Test Query Description', users: [], } as unknown as IndexEntry, + http, }; beforeEach(() => { jest.clearAllMocks(); + (useKnowledgeBaseIndices as jest.Mock).mockReturnValue({ + data: { indices: ['index-1', 'index-2'] }, + }); }); it('renders the form fields with initial values', async () => { @@ -102,7 +112,6 @@ describe('IndexEntryEditor', () => { const { getAllByTestId, getByTestId } = render(); await waitFor(() => { - expect(mockDataViews.getIndices).toHaveBeenCalled(); fireEvent.click(getByTestId('index-combobox')); fireEvent.click(getAllByTestId('comboBoxToggleListButton')[0]); fireEvent.click(getByTestId('index-2')); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.tsx b/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.tsx index dfc3cd0086686..b55fb4b1b8270 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.tsx @@ -20,10 +20,13 @@ import useAsync from 'react-use/lib/useAsync'; import React, { useCallback, useMemo } from 'react'; import { IndexEntry } from '@kbn/elastic-assistant-common'; import { DataViewsContract } from '@kbn/data-views-plugin/public'; +import { HttpSetup } from '@kbn/core-http-browser'; import * as i18n from './translations'; import { isGlobalEntry } from './helpers'; +import { useKnowledgeBaseIndices } from '../../assistant/api/knowledge_base/use_knowledge_base_indices'; interface Props { + http: HttpSetup; dataViews: DataViewsContract; entry?: IndexEntry; originalEntry?: IndexEntry; @@ -32,7 +35,7 @@ interface Props { } export const IndexEntryEditor: React.FC = React.memo( - ({ dataViews, entry, setEntry, hasManageGlobalKnowledgeBase, originalEntry }) => { + ({ http, dataViews, entry, setEntry, hasManageGlobalKnowledgeBase, originalEntry }) => { const privateUsers = useMemo(() => { const originalUsers = originalEntry?.users; if (originalEntry && !isGlobalEntry(originalEntry)) { @@ -93,18 +96,16 @@ export const IndexEntryEditor: React.FC = React.memo( entry?.users?.length === 0 ? sharingOptions[1].value : sharingOptions[0].value; // Index - const indexOptions = useAsync(async () => { - const indices = await dataViews.getIndices({ - pattern: '*', - isRollupIndex: () => false, - }); - - return indices.map((index) => ({ - 'data-test-subj': index.name, - label: index.name, - value: index.name, + const { data: kbIndices } = useKnowledgeBaseIndices({ + http, + }); + const indexOptions = useMemo(() => { + return kbIndices?.indices.map((index) => ({ + 'data-test-subj': index, + label: index, + value: index, })); - }, [dataViews]); + }, [kbIndices?.indices]); const { value: isMissingIndex } = useAsync(async () => { if (!entry?.index?.length) return false; @@ -272,6 +273,7 @@ export const IndexEntryEditor: React.FC = React.memo( fullWidth isInvalid={isMissingIndex} error={isMissingIndex && <>{i18n.MISSING_INDEX_ERROR}} + helpText={i18n.ENTRY_INDEX_NAME_INPUT_DESCRIPTION} > = React.memo( singleSelection={{ asPlainText: true }} onCreateOption={onCreateIndexOption} fullWidth - options={indexOptions.value ?? []} + options={indexOptions ?? []} selectedOptions={ entry?.index ? [ diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/translations.ts b/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/translations.ts index 98af0eabea6b5..24784586edcdf 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/translations.ts +++ b/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/translations.ts @@ -234,6 +234,14 @@ export const ENTRY_INDEX_NAME_INPUT_LABEL = i18n.translate( } ); +export const ENTRY_INDEX_NAME_INPUT_DESCRIPTION = i18n.translate( + 'xpack.elasticAssistant.assistant.settings.knowledgeBaseSettingsManagement.entryIndexNameInputDescription', + { + defaultMessage: + 'Indices will only be available to select from this drop down list if they contain a semantic_text field. Please refer to the documentation for more information on configuring an index for use as a custom knowledge source.', + } +); + export const ENTRY_FIELD_INPUT_LABEL = i18n.translate( 'xpack.elasticAssistant.assistant.settings.knowledgeBaseSettingsManagement.entryFieldInputLabel', { diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/request.ts b/x-pack/plugins/elastic_assistant/server/__mocks__/request.ts index 9dc57bab25ef3..f6f3007c8f948 100644 --- a/x-pack/plugins/elastic_assistant/server/__mocks__/request.ts +++ b/x-pack/plugins/elastic_assistant/server/__mocks__/request.ts @@ -23,6 +23,7 @@ import { ELASTIC_AI_ASSISTANT_CONVERSATIONS_URL_BY_ID_MESSAGES, ELASTIC_AI_ASSISTANT_CONVERSATIONS_URL_FIND, ELASTIC_AI_ASSISTANT_EVALUATE_URL, + ELASTIC_AI_ASSISTANT_KNOWLEDGE_BASE_INDICES_URL, ELASTIC_AI_ASSISTANT_KNOWLEDGE_BASE_URL, ELASTIC_AI_ASSISTANT_PROMPTS_URL_BULK_ACTION, ELASTIC_AI_ASSISTANT_PROMPTS_URL_FIND, @@ -46,6 +47,12 @@ export const requestMock = { create: httpServerMock.createKibanaRequest, }; +export const getGetKnowledgeBaseIndicesRequest = () => + requestMock.create({ + method: 'get', + path: ELASTIC_AI_ASSISTANT_KNOWLEDGE_BASE_INDICES_URL, + }); + export const getGetKnowledgeBaseStatusRequest = (resource?: string) => requestMock.create({ method: 'get', diff --git a/x-pack/plugins/elastic_assistant/server/routes/index.ts b/x-pack/plugins/elastic_assistant/server/routes/index.ts index a6d7a4298c2b7..928c3211faa9b 100644 --- a/x-pack/plugins/elastic_assistant/server/routes/index.ts +++ b/x-pack/plugins/elastic_assistant/server/routes/index.ts @@ -14,6 +14,7 @@ export { getAttackDiscoveryRoute } from './attack_discovery/get/get_attack_disco // Knowledge Base export { deleteKnowledgeBaseRoute } from './knowledge_base/delete_knowledge_base'; +export { getKnowledgeBaseIndicesRoute } from './knowledge_base/get_knowledge_base_indices'; export { getKnowledgeBaseStatusRoute } from './knowledge_base/get_knowledge_base_status'; export { postKnowledgeBaseRoute } from './knowledge_base/post_knowledge_base'; diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.test.ts b/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.test.ts new file mode 100644 index 0000000000000..e7eaa75407248 --- /dev/null +++ b/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.test.ts @@ -0,0 +1,79 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getKnowledgeBaseIndicesRoute } from './get_knowledge_base_indices'; +import { serverMock } from '../../__mocks__/server'; +import { requestContextMock } from '../../__mocks__/request_context'; +import { getGetKnowledgeBaseIndicesRequest } from '../../__mocks__/request'; + +const mockFieldCaps = { + indices: [ + '.ds-logs-endpoint.alerts-default-2024.10.31-000001', + '.ds-metrics-endpoint.metadata-default-2024.10.31-000001', + '.internal.alerts-security.alerts-default-000001', + 'metrics-endpoint.metadata_current_default', + 'semantic-index-1', + 'semantic-index-2', + ], + fields: { + content: { + unmapped: { + type: 'unmapped', + metadata_field: false, + searchable: false, + aggregatable: false, + indices: [ + '.ds-logs-endpoint.alerts-default-2024.10.31-000001', + '.ds-metrics-endpoint.metadata-default-2024.10.31-000001', + '.internal.alerts-security.alerts-default-000001', + 'metrics-endpoint.metadata_current_default', + ], + }, + semantic_text: { + type: 'semantic_text', + metadata_field: false, + searchable: true, + aggregatable: false, + indices: ['semantic-index-1', 'semantic-index-2'], + }, + }, + }, +}; + +describe('Get Knowledge Base Status Route', () => { + let server: ReturnType; + + let { context } = requestContextMock.createTools(); + + beforeEach(() => { + server = serverMock.create(); + ({ context } = requestContextMock.createTools()); + context.core.elasticsearch.client.asCurrentUser.fieldCaps.mockResponse(mockFieldCaps); + + getKnowledgeBaseIndicesRoute(server.router); + }); + + describe('Status codes', () => { + test('returns 200 and all indices with `semantic_text` type fields', async () => { + const response = await server.inject( + getGetKnowledgeBaseIndicesRequest(), + requestContextMock.convertContext(context) + ); + + expect(response.status).toEqual(200); + expect(response.body).toEqual({ + indices: ['semantic-index-1', 'semantic-index-2'], + }); + expect(context.core.elasticsearch.client.asCurrentUser.fieldCaps).toBeCalledWith({ + index: '*', + fields: '*', + types: ['semantic_text'], + include_unmapped: true, + }); + }); + }); +}); diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.ts b/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.ts new file mode 100644 index 0000000000000..18191291468de --- /dev/null +++ b/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.ts @@ -0,0 +1,73 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { transformError } from '@kbn/securitysolution-es-utils'; + +import { + ELASTIC_AI_ASSISTANT_INTERNAL_API_VERSION, + ELASTIC_AI_ASSISTANT_KNOWLEDGE_BASE_INDICES_URL, + GetKnowledgeBaseIndicesResponse, +} from '@kbn/elastic-assistant-common'; +import { IKibanaResponse } from '@kbn/core/server'; +import { buildResponse } from '../../lib/build_response'; +import { ElasticAssistantPluginRouter } from '../../types'; + +/** + * Get the indices that have fields of `sematic_text` type + * + * @param router IRouter for registering routes + */ +export const getKnowledgeBaseIndicesRoute = (router: ElasticAssistantPluginRouter) => { + router.versioned + .get({ + access: 'internal', + path: ELASTIC_AI_ASSISTANT_KNOWLEDGE_BASE_INDICES_URL, + options: { + tags: ['access:elasticAssistant'], + }, + }) + .addVersion( + { + version: ELASTIC_AI_ASSISTANT_INTERNAL_API_VERSION, + validate: false, + }, + async (context, _, response): Promise> => { + const resp = buildResponse(response); + const ctx = await context.resolve(['core', 'elasticAssistant', 'licensing']); + const logger = ctx.elasticAssistant.logger; + const esClient = ctx.core.elasticsearch.client.asCurrentUser; + + try { + const body: GetKnowledgeBaseIndicesResponse = { + indices: [], + }; + + const res = await esClient.fieldCaps({ + index: '*', + fields: '*', + types: ['semantic_text'], + include_unmapped: true, + }); + + const indices = res.fields.content?.semantic_text?.indices; + if (indices) { + body.indices = Array.isArray(indices) ? indices : [indices]; + } + + return response.ok({ body }); + } catch (err) { + logger.error(err); + const error = transformError(err); + + return resp.error({ + body: error.message, + statusCode: error.statusCode, + }); + } + } + ); +}; diff --git a/x-pack/plugins/elastic_assistant/server/routes/register_routes.ts b/x-pack/plugins/elastic_assistant/server/routes/register_routes.ts index 7898629e15b5c..d722e31cb2338 100644 --- a/x-pack/plugins/elastic_assistant/server/routes/register_routes.ts +++ b/x-pack/plugins/elastic_assistant/server/routes/register_routes.ts @@ -18,6 +18,7 @@ import { updateConversationRoute } from './user_conversations/update_route'; import { findUserConversationsRoute } from './user_conversations/find_route'; import { bulkActionConversationsRoute } from './user_conversations/bulk_actions_route'; import { appendConversationMessageRoute } from './user_conversations/append_conversation_messages_route'; +import { getKnowledgeBaseIndicesRoute } from './knowledge_base/get_knowledge_base_indices'; import { getKnowledgeBaseStatusRoute } from './knowledge_base/get_knowledge_base_status'; import { postKnowledgeBaseRoute } from './knowledge_base/post_knowledge_base'; import { getEvaluateRoute } from './evaluate/get_evaluate'; @@ -60,6 +61,7 @@ export const registerRoutes = ( findUserConversationsRoute(router); // Knowledge Base Setup + getKnowledgeBaseIndicesRoute(router); getKnowledgeBaseStatusRoute(router); postKnowledgeBaseRoute(router); diff --git a/x-pack/test/functional/es_archives/security_solution/semantic_text_fields/data.json b/x-pack/test/functional/es_archives/security_solution/semantic_text_fields/data.json new file mode 100644 index 0000000000000..3cef2aae8ff4f --- /dev/null +++ b/x-pack/test/functional/es_archives/security_solution/semantic_text_fields/data.json @@ -0,0 +1,161 @@ +{ + "type": "doc", + "value": { + "id": "1", + "index": "semantic_text_fields", + "source": { + "@timestamp": "2024-11-01T15:52:16.648Z", + "content": { + "text": "my favorite color is green", + "inference": { + "inference_id": "elastic-security-ai-assistant-elser2", + "model_settings": { + "task_type": "sparse_embedding" + }, + "chunks": [ + { + "text": "my favorite color is green", + "embeddings": { + "green": 2.8714406, + "favorite": 2.5192127, + "color": 2.499853, + "favourite": 1.7829537, + "colors": 1.2280636, + "my": 1.1292906, + "friend": 0.87358737, + "rainbow": 0.8518238, + "love": 0.8146304, + "choice": 0.7517174, + "nature": 0.62242556, + "beautiful": 0.6110072, + "personality": 0.5559894, + "dr": 0.5296162, + "your": 0.51745296, + "art": 0.45324937, + "colour": 0.44607934, + "theme": 0.4360909, + "mood": 0.43253413, + "personal": 0.4201024, + "style": 0.39435387, + "blue": 0.38090202, + "nickname": 0.37952134, + "design": 0.37043664, + "dream": 0.3620103, + "desire": 0.35553402, + "best": 0.32577398, + "favorites": 0.30795538, + "humor": 0.30244058, + "popular": 0.2957705, + "brand": 0.28912684, + "neutral": 0.28545624, + "passion": 0.28457505, + "i": 0.27936152, + "preference": 0.24133624, + "inspiration": 0.24008423, + "purple": 0.23559056, + "culture": 0.23260204, + "flower": 0.21190192, + "bright": 0.20443156, + "beauty": 0.20076275, + "aura": 0.19355631, + "palette": 0.17414959, + "wonder": 0.16287619, + "photo": 0.16179858, + "orange": 0.14167522, + "dress": 0.12800644, + "camouflage": 0.061010167, + "grass": 0.05907971, + "tone": 0.028165601, + "painting": 0.026917756, + "cartoon": 0.019969255, + "always": 0.013872984, + "yellow": 0.0113299545, + "colorful": 0.0036836881 + } + } + ] + } + }, + "text": "my favorite color is green" + } + } +} + +{ + "type": "doc", + "value": { + "id": "1", + "index": "semantic_text_fields", + "source": { + "@timestamp": "2024-11-01T15:59:34.610Z", + "content": { + "text": "my favorite food is pasta", + "inference": { + "inference_id": "elastic-security-ai-assistant-elser2", + "model_settings": { + "task_type": "sparse_embedding" + }, + "chunks": [ + { + "text": "my favorite food is pasta", + "embeddings": { + "pasta": 2.8800304, + "favorite": 2.604094, + "food": 2.3218846, + "favourite": 1.9555497, + "foods": 1.8483086, + "my": 1.2514912, + "italian": 1.1385239, + "noodles": 0.9831485, + "ravi": 0.8951362, + "friend": 0.73949015, + "popular": 0.7100698, + "rich": 0.6932188, + "diet": 0.6634609, + "love": 0.64316577, + "famous": 0.5988269, + "eat": 0.5932935, + "your": 0.5730934, + "flavor": 0.54839855, + "i": 0.54047567, + "choice": 0.52978134, + "taste": 0.5071018, + "personal": 0.49576512, + "favorites": 0.3890845, + "soup": 0.37032336, + "rome": 0.31307018, + "list": 0.28725958, + "rice": 0.28322402, + "dinner": 0.26971146, + "familiar": 0.22095734, + "vegetable": 0.21891576, + "bland": 0.20330611, + "obsession": 0.19760907, + "latin": 0.19196871, + "drink": 0.18664016, + "culture": 0.18313695, + "shop": 0.18128464, + "style": 0.16871399, + "greek": 0.16838282, + "our": 0.1634054, + "is": 0.14557752, + "category": 0.12824115, + "chef": 0.11436942, + "italy": 0.095480226, + "family": 0.0816377, + "classic": 0.064411946, + "best": 0.05733679, + "always": 0.054197904, + "type": 0.0500416, + "lover": 0.037193555, + "bread": 0.031606384, + "fruit": 0.00062303204 + } + } + ] + } + }, + "text": "my favorite food is pasta" + } + } +} diff --git a/x-pack/test/functional/es_archives/security_solution/semantic_text_fields/mappings.json b/x-pack/test/functional/es_archives/security_solution/semantic_text_fields/mappings.json new file mode 100644 index 0000000000000..7c5deef42aafb --- /dev/null +++ b/x-pack/test/functional/es_archives/security_solution/semantic_text_fields/mappings.json @@ -0,0 +1,30 @@ +{ + "type": "index", + "value": { + "index": "semantic_text_fields", + "mappings": { + "dynamic": "strict", + "properties": { + "@timestamp": { + "type": "date" + }, + "content": { + "type": "semantic_text", + "inference_id": "elastic-security-ai-assistant-elser2", + "model_settings": { + "task_type": "sparse_embedding" + } + }, + "text": { + "type": "text" + } + } + }, + "settings": { + "index": { + "number_of_replicas": "1", + "number_of_shards": "1" + } + } + } +} diff --git a/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/trial_license_complete_tier/index.ts b/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/trial_license_complete_tier/index.ts index 21469b8e67606..8aea7b00f9eed 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/trial_license_complete_tier/index.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/trial_license_complete_tier/index.ts @@ -19,5 +19,6 @@ export default function ({ loadTestFile, getService }: FtrProviderContext) { }); loadTestFile(require.resolve('./entries')); + loadTestFile(require.resolve('./semntic_text_indices')); }); } diff --git a/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/trial_license_complete_tier/semntic_text_indices.ts b/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/trial_license_complete_tier/semntic_text_indices.ts new file mode 100644 index 0000000000000..d983ed79b97ad --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/trial_license_complete_tier/semntic_text_indices.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from 'expect'; +import { FtrProviderContext } from '../../../../../ftr_provider_context'; +import { getKnowledgeBaseIndices } from '../utils/helpers'; + +export default ({ getService }: FtrProviderContext) => { + const supertest = getService('supertest'); + const log = getService('log'); + const esArchiver = getService('esArchiver'); + + describe('@ess Security AI Assistant - Indices with `semantic_text` fields', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/security_solution/ignore_fields'); + await esArchiver.load( + 'x-pack/test/functional/es_archives/security_solution/semantic_text_fields' + ); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/security_solution/ignore_fields'); + await esArchiver.unload( + 'x-pack/test/functional/es_archives/security_solution/semantic_text_fields' + ); + }); + + it('should return all existing indices with `semantic_text` fields', async () => { + const indices = await getKnowledgeBaseIndices({ supertest, log }); + + expect(indices).toEqual({ indices: ['semantic_text_fields'] }); + }); + }); +}; diff --git a/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/utils/helpers.ts b/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/utils/helpers.ts index cdbb1cca4de24..36b2963f5b538 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/utils/helpers.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/genai/knowledge_base/entries/utils/helpers.ts @@ -8,7 +8,9 @@ import { Client } from '@elastic/elasticsearch'; import { CreateKnowledgeBaseResponse, + ELASTIC_AI_ASSISTANT_KNOWLEDGE_BASE_INDICES_URL, ELASTIC_AI_ASSISTANT_KNOWLEDGE_BASE_URL, + GetKnowledgeBaseIndicesResponse, } from '@kbn/elastic-assistant-common'; import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common'; @@ -97,3 +99,31 @@ export const clearKnowledgeBase = async (es: Client, space = 'default') => { refresh: true, }); }; + +/** + * Get indices with the `semantic_text` type fields + * @param supertest The supertest deps + * @param log The tooling logger + */ +export const getKnowledgeBaseIndices = async ({ + supertest, + log, +}: { + supertest: SuperTest.Agent; + log: ToolingLog; +}): Promise => { + const response = await supertest + .get(ELASTIC_AI_ASSISTANT_KNOWLEDGE_BASE_INDICES_URL) + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .send(); + if (response.status !== 200) { + throw new Error( + `Unexpected non 200 ok when attempting to find entries: ${JSON.stringify( + response.status + )},${JSON.stringify(response, null, 4)}` + ); + } else { + return response.body; + } +}; From bf37a019d857e89d6dad3a6cf450ec323f0783e0 Mon Sep 17 00:00:00 2001 From: Maxim Palenov Date: Tue, 5 Nov 2024 13:24:37 +0300 Subject: [PATCH 23/57] [Security Solution] Unskip perform bulk action ESS FTR tests (#197660) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Closes: https://github.com/elastic/kibana/issues/196470** **Closes: https://github.com/elastic/kibana/issues/196462** ## Summary This PR unskips `perform_bulk_action_ess.ts` functional test. ## Details `perform_bulk_action_ess.ts` includes a number of functional tests where some of them were flaky. Investigation revealed that creating enabled rules and performing bulk actions may lead to race conditions. Under that conditions rule's SO isn't updated as expected. For example legacy rule actions aren't persisted in rule's SO when it's expected by the test. This PR includes `perform_bulk_action_ess.ts` refactoring to create disabled rules in the majority of tests. Enabled rules are created only in tests checking behavior upon rules disabling. These tests were checked multiple times and didn't demonstrate flakiness. Additionally `@kbn/expect` was replaced with `expect` to make asserting more transparent and avoid unclear error messages. ## Flaky test results [100 runs](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/7274) 🟢 --- .../perform_bulk_action_ess.ts | 442 ++++++++++++------ ...t_rule_with_legacy_investigation_fields.ts | 12 +- 2 files changed, 298 insertions(+), 156 deletions(-) diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_bulk_actions/trial_license_complete_tier/perform_bulk_action_ess.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_bulk_actions/trial_license_complete_tier/perform_bulk_action_ess.ts index fcaf94728e854..7ee0ce440caad 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_bulk_actions/trial_license_complete_tier/perform_bulk_action_ess.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_bulk_actions/trial_license_complete_tier/perform_bulk_action_ess.ts @@ -5,15 +5,13 @@ * 2.0. */ -import { Rule } from '@kbn/alerting-plugin/common'; -import expect from '@kbn/expect'; +import expect from 'expect'; import type { RuleResponse } from '@kbn/security-solution-plugin/common/api/detection_engine'; import { getCreateEsqlRulesSchemaMock } from '@kbn/security-solution-plugin/common/api/detection_engine/model/rule_schema/mocks'; import { BulkActionEditTypeEnum, BulkActionTypeEnum, } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_management'; -import { BaseRuleParams } from '@kbn/security-solution-plugin/server/lib/detection_engine/rule_schema'; import { createRule, deleteAllRules, @@ -30,10 +28,12 @@ import { getRuleSavedObjectWithLegacyInvestigationFields, getRuleSavedObjectWithLegacyInvestigationFieldsEmptyArray, getRuleSOById, - getSimpleRule, getWebHookAction, } from '../../../utils'; +// Rule's interval must be less or equal rule action's interval +const MINIMUM_RULE_INTERVAL_FOR_LEGACY_ACTION = '1h'; + export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); const securitySolutionApi = getService('securitySolutionApi'); @@ -51,17 +51,14 @@ export default ({ getService }: FtrProviderContext): void => { const createWebHookConnector = () => createConnector(getWebHookAction()); - // Failing: See https://github.com/elastic/kibana/issues/173804 - // Failing: See https://github.com/elastic/kibana/issues/196470 - // Failing: See https://github.com/elastic/kibana/issues/196462 - describe.skip('@ess perform_bulk_action - ESS specific logic', () => { + describe('@ess perform_bulk_action - ESS specific logic', () => { beforeEach(async () => { await deleteAllRules(supertest, log); }); it('should delete rules and any associated legacy actions', async () => { const ruleId = 'ruleId'; - const [connector, rule1] = await Promise.all([ + const [connector, rule] = await Promise.all([ supertest .post(`/api/actions/connector`) .set('kbn-xsrf', 'foo') @@ -72,14 +69,22 @@ export default ({ getService }: FtrProviderContext): void => { webhookUrl: 'http://localhost:1234', }, }), - createRule(supertest, log, getSimpleRule(ruleId, false)), + + createRule( + supertest, + log, + getCustomQueryRuleParams({ + rule_id: ruleId, + interval: MINIMUM_RULE_INTERVAL_FOR_LEGACY_ACTION, + }) + ), ]); - await createLegacyRuleAction(supertest, rule1.id, connector.body.id); + await createLegacyRuleAction(supertest, rule.id, connector.body.id); // check for legacy sidecar action const sidecarActionsResults = await getLegacyActionSO(es); - expect(sidecarActionsResults.hits.hits.length).to.eql(1); - expect(sidecarActionsResults.hits.hits[0]?._source?.references[0].id).to.eql(rule1.id); + expect(sidecarActionsResults.hits.hits.length).toBe(1); + expect(sidecarActionsResults.hits.hits[0]?._source?.references[0].id).toBe(rule.id); const { body } = await securitySolutionApi .performRulesBulkAction({ @@ -88,14 +93,14 @@ export default ({ getService }: FtrProviderContext): void => { }) .expect(200); - expect(body.attributes.summary).to.eql({ failed: 0, skipped: 0, succeeded: 1, total: 1 }); + expect(body.attributes.summary).toEqual({ failed: 0, skipped: 0, succeeded: 1, total: 1 }); // Check that the deleted rule is returned with the response - expect(body.attributes.results.deleted[0].name).to.eql(rule1.name); + expect(body.attributes.results.deleted[0].name).toEqual(rule.name); // legacy sidecar action should be gone const sidecarActionsPostResults = await getLegacyActionSO(es); - expect(sidecarActionsPostResults.hits.hits.length).to.eql(0); + expect(sidecarActionsPostResults.hits.hits.length).toBe(0); // Check that the updates have been persisted await securitySolutionApi.readRule({ query: { rule_id: ruleId } }).expect(404); @@ -103,7 +108,7 @@ export default ({ getService }: FtrProviderContext): void => { it('should enable rules and migrate actions', async () => { const ruleId = 'ruleId'; - const [connector, rule1] = await Promise.all([ + const [connector, rule] = await Promise.all([ supertest .post(`/api/actions/connector`) .set('kbn-xsrf', 'foo') @@ -114,14 +119,23 @@ export default ({ getService }: FtrProviderContext): void => { webhookUrl: 'http://localhost:1234', }, }), - createRule(supertest, log, { ...getSimpleRule(ruleId, false), index: ['*'] }), + createRule( + supertest, + log, + getCustomQueryRuleParams({ + rule_id: ruleId, + index: ['*'], + interval: MINIMUM_RULE_INTERVAL_FOR_LEGACY_ACTION, + enabled: false, + }) + ), ]); - await createLegacyRuleAction(supertest, rule1.id, connector.body.id); + await createLegacyRuleAction(supertest, rule.id, connector.body.id); // check for legacy sidecar action const sidecarActionsResults = await getLegacyActionSO(es); - expect(sidecarActionsResults.hits.hits.length).to.eql(1); - expect(sidecarActionsResults.hits.hits[0]?._source?.references[0].id).to.eql(rule1.id); + expect(sidecarActionsResults.hits.hits.length).toBe(1); + expect(sidecarActionsResults.hits.hits[0]?._source?.references[0].id).toBe(rule.id); const { body } = await securitySolutionApi .performRulesBulkAction({ @@ -130,10 +144,10 @@ export default ({ getService }: FtrProviderContext): void => { }) .expect(200); - expect(body.attributes.summary).to.eql({ failed: 0, skipped: 0, succeeded: 1, total: 1 }); + expect(body.attributes.summary).toEqual({ failed: 0, skipped: 0, succeeded: 1, total: 1 }); // Check that the updated rule is returned with the response - expect(body.attributes.results.updated[0].enabled).to.eql(true); + expect(body.attributes.results.updated[0].enabled).toBeTruthy(); // Check that the updates have been persisted const { body: ruleBody } = await securitySolutionApi @@ -142,10 +156,10 @@ export default ({ getService }: FtrProviderContext): void => { // legacy sidecar action should be gone const sidecarActionsPostResults = await getLegacyActionSO(es); - expect(sidecarActionsPostResults.hits.hits.length).to.eql(0); + expect(sidecarActionsPostResults.hits.hits.length).toBe(0); - expect(ruleBody.enabled).to.eql(true); - expect(ruleBody.actions).to.eql([ + expect(ruleBody.enabled).toBeTruthy(); + expect(ruleBody.actions).toEqual([ { action_type_id: '.slack', group: 'default', @@ -153,17 +167,17 @@ export default ({ getService }: FtrProviderContext): void => { params: { message: 'Hourly\nRule {{context.rule.name}} generated {{state.signals_count}} alerts', }, - uuid: ruleBody.actions[0].uuid, + uuid: expect.any(String), frequency: { summary: true, throttle: '1h', notifyWhen: 'onThrottleInterval' }, }, ]); // we want to ensure rule is executing successfully, to prevent any AAD issues related to partial update of rule SO - await waitForRuleSuccess({ id: rule1.id, supertest, log }); + await waitForRuleSuccess({ id: rule.id, supertest, log }); }); it('should disable rules and migrate actions', async () => { const ruleId = 'ruleId'; - const [connector, rule1] = await Promise.all([ + const [connector, rule] = await Promise.all([ supertest .post(`/api/actions/connector`) .set('kbn-xsrf', 'foo') @@ -174,14 +188,22 @@ export default ({ getService }: FtrProviderContext): void => { webhookUrl: 'http://localhost:1234', }, }), - createRule(supertest, log, getSimpleRule(ruleId, true)), + createRule( + supertest, + log, + getCustomQueryRuleParams({ + rule_id: ruleId, + interval: MINIMUM_RULE_INTERVAL_FOR_LEGACY_ACTION, + enabled: true, + }) + ), ]); - await createLegacyRuleAction(supertest, rule1.id, connector.body.id); + await createLegacyRuleAction(supertest, rule.id, connector.body.id); // check for legacy sidecar action const sidecarActionsResults = await getLegacyActionSO(es); - expect(sidecarActionsResults.hits.hits.length).to.eql(1); - expect(sidecarActionsResults.hits.hits[0]?._source?.references[0].id).to.eql(rule1.id); + expect(sidecarActionsResults.hits.hits.length).toBe(1); + expect(sidecarActionsResults.hits.hits[0]?._source?.references[0].id).toBe(rule.id); const { body } = await securitySolutionApi .performRulesBulkAction({ @@ -190,10 +212,10 @@ export default ({ getService }: FtrProviderContext): void => { }) .expect(200); - expect(body.attributes.summary).to.eql({ failed: 0, skipped: 0, succeeded: 1, total: 1 }); + expect(body.attributes.summary).toEqual({ failed: 0, skipped: 0, succeeded: 1, total: 1 }); // Check that the updated rule is returned with the response - expect(body.attributes.results.updated[0].enabled).to.eql(false); + expect(body.attributes.results.updated[0].enabled).toBeFalsy(); // Check that the updates have been persisted const { body: ruleBody } = await securitySolutionApi @@ -202,10 +224,10 @@ export default ({ getService }: FtrProviderContext): void => { // legacy sidecar action should be gone const sidecarActionsPostResults = await getLegacyActionSO(es); - expect(sidecarActionsPostResults.hits.hits.length).to.eql(0); + expect(sidecarActionsPostResults.hits.hits.length).toBe(0); - expect(ruleBody.enabled).to.eql(false); - expect(ruleBody.actions).to.eql([ + expect(ruleBody.enabled).toBeFalsy(); + expect(ruleBody.actions).toEqual([ { action_type_id: '.slack', group: 'default', @@ -213,7 +235,7 @@ export default ({ getService }: FtrProviderContext): void => { params: { message: 'Hourly\nRule {{context.rule.name}} generated {{state.signals_count}} alerts', }, - uuid: ruleBody.actions[0].uuid, + uuid: expect.any(String), frequency: { summary: true, throttle: '1h', notifyWhen: 'onThrottleInterval' }, }, ]); @@ -232,14 +254,21 @@ export default ({ getService }: FtrProviderContext): void => { webhookUrl: 'http://localhost:1234', }, }), - createRule(supertest, log, getSimpleRule(ruleId, true)), + createRule( + supertest, + log, + getCustomQueryRuleParams({ + rule_id: ruleId, + interval: MINIMUM_RULE_INTERVAL_FOR_LEGACY_ACTION, + }) + ), ]); await createLegacyRuleAction(supertest, ruleToDuplicate.id, connector.body.id); // check for legacy sidecar action const sidecarActionsResults = await getLegacyActionSO(es); - expect(sidecarActionsResults.hits.hits.length).to.eql(1); - expect(sidecarActionsResults.hits.hits[0]?._source?.references[0].id).to.eql( + expect(sidecarActionsResults.hits.hits.length).toBe(1); + expect(sidecarActionsResults.hits.hits[0]?._source?.references[0].id).toBe( ruleToDuplicate.id ); @@ -254,22 +283,21 @@ export default ({ getService }: FtrProviderContext): void => { }) .expect(200); - expect(body.attributes.summary).to.eql({ failed: 0, skipped: 0, succeeded: 1, total: 1 }); + expect(body.attributes.summary).toEqual({ failed: 0, skipped: 0, succeeded: 1, total: 1 }); // Check that the duplicated rule is returned with the response - expect(body.attributes.results.created[0].name).to.eql(`${ruleToDuplicate.name} [Duplicate]`); + expect(body.attributes.results.created[0].name).toBe(`${ruleToDuplicate.name} [Duplicate]`); // Check that the updates have been persisted const { body: rulesResponse } = await securitySolutionApi .findRules({ query: {} }) .expect(200); - expect(rulesResponse.total).to.eql(2); + expect(rulesResponse.total).toBe(2); rulesResponse.data.forEach((rule: RuleResponse) => { - const uuid = rule.actions[0].uuid; - expect(rule.actions).to.eql([ - { + expect(rule.actions).toEqual([ + expect.objectContaining({ action_type_id: '.slack', group: 'default', id: connector.body.id, @@ -277,9 +305,8 @@ export default ({ getService }: FtrProviderContext): void => { message: 'Hourly\nRule {{context.rule.name}} generated {{state.signals_count}} alerts', }, - ...(uuid ? { uuid } : {}), frequency: { summary: true, throttle: '1h', notifyWhen: 'onThrottleInterval' }, - }, + }), ]); }); }); @@ -299,7 +326,7 @@ export default ({ getService }: FtrProviderContext): void => { .expect(200); // Check that the duplicated rule is returned with the correct rule_source - expect(body.attributes.results.created[0].rule_source).to.eql({ + expect(body.attributes.results.created[0].rule_source).toEqual({ type: 'internal', }); }); @@ -325,8 +352,13 @@ export default ({ getService }: FtrProviderContext): void => { }) .expect(500); - expect(body.attributes.summary).to.eql({ failed: 1, skipped: 0, succeeded: 0, total: 1 }); - expect(body.attributes.errors[0]).to.eql({ + expect(body.attributes.summary).toEqual({ + failed: 1, + skipped: 0, + succeeded: 0, + total: 1, + }); + expect(body.attributes.errors[0]).toEqual({ message: "Index patterns can't be added. ES|QL rule doesn't have index patterns property", status_code: 500, @@ -353,31 +385,41 @@ export default ({ getService }: FtrProviderContext): void => { webhookUrl: 'http://localhost:1234', }, }), - createRule(supertest, log, getSimpleRule(ruleId, true)), + createRule( + supertest, + log, + getCustomQueryRuleParams({ + rule_id: ruleId, + interval: MINIMUM_RULE_INTERVAL_FOR_LEGACY_ACTION, + }) + ), ]); await createLegacyRuleAction(supertest, ruleToDuplicate.id, connector.body.id); // check for legacy sidecar action const sidecarActionsResults = await getLegacyActionSO(es); - expect(sidecarActionsResults.hits.hits.length).to.eql(1); - expect(sidecarActionsResults.hits.hits[0]?._source?.references[0].id).to.eql( + expect(sidecarActionsResults.hits.hits.length).toBe(1); + expect(sidecarActionsResults.hits.hits[0]?._source?.references[0].id).toBe( ruleToDuplicate.id ); - const { body: setTagsBody } = await securitySolutionApi.performRulesBulkAction({ - body: { - query: '', - action: BulkActionTypeEnum.edit, - [BulkActionTypeEnum.edit]: [ - { - type: BulkActionEditTypeEnum.set_tags, - value: ['reset-tag'], - }, - ], - }, - query: {}, - }); - expect(setTagsBody.attributes.summary).to.eql({ + const { body: setTagsBody } = await securitySolutionApi + .performRulesBulkAction({ + body: { + query: '', + action: BulkActionTypeEnum.edit, + [BulkActionTypeEnum.edit]: [ + { + type: BulkActionEditTypeEnum.set_tags, + value: ['reset-tag'], + }, + ], + }, + query: {}, + }) + .expect(200); + + expect(setTagsBody.attributes.summary).toEqual({ failed: 0, skipped: 0, succeeded: 1, @@ -391,11 +433,10 @@ export default ({ getService }: FtrProviderContext): void => { // Sidecar should be removed const sidecarActionsPostResults = await getLegacyActionSO(es); - expect(sidecarActionsPostResults.hits.hits.length).to.eql(0); - - expect(setTagsRule.tags).to.eql(['reset-tag']); - expect(setTagsRule.actions).to.eql([ + expect(sidecarActionsPostResults.hits.hits.length).toBe(0); + expect(setTagsRule.tags).toEqual(['reset-tag']); + expect(setTagsRule.actions).toEqual([ { action_type_id: '.slack', group: 'default', @@ -404,7 +445,7 @@ export default ({ getService }: FtrProviderContext): void => { message: 'Hourly\nRule {{context.rule.name}} generated {{state.signals_count}} alerts', }, - uuid: setTagsRule.actions[0].uuid, + uuid: expect.any(String), frequency: { summary: true, throttle: '1h', notifyWhen: 'onThrottleInterval' }, }, ]); @@ -432,7 +473,14 @@ export default ({ getService }: FtrProviderContext): void => { webhookUrl: 'http://localhost:1234', }, }), - createRule(supertest, log, getSimpleRule(ruleId, true)), + createRule( + supertest, + log, + getCustomQueryRuleParams({ + rule_id: ruleId, + interval: MINIMUM_RULE_INTERVAL_FOR_LEGACY_ACTION, + }) + ), ]); // create a new connector const webHookConnector = await createWebHookConnector(); @@ -441,8 +489,8 @@ export default ({ getService }: FtrProviderContext): void => { // check for legacy sidecar action const sidecarActionsResults = await getLegacyActionSO(es); - expect(sidecarActionsResults.hits.hits.length).to.eql(1); - expect(sidecarActionsResults.hits.hits[0]?._source?.references[0].id).to.eql( + expect(sidecarActionsResults.hits.hits.length).toBe(1); + expect(sidecarActionsResults.hits.hits[0]?._source?.references[0].id).toBe( createdRule.id ); @@ -475,53 +523,51 @@ export default ({ getService }: FtrProviderContext): void => { ...webHookActionMock, id: webHookConnector.id, action_type_id: '.webhook', - uuid: body.attributes.results.updated[0].actions[0].uuid, + uuid: expect.any(String), frequency: { summary: true, throttle: '1h', notifyWhen: 'onThrottleInterval' }, }, ]; // Check that the updated rule is returned with the response - expect(body.attributes.results.updated[0].actions).to.eql(expectedRuleActions); + expect(body.attributes.results.updated[0].actions).toEqual(expectedRuleActions); // Check that the updates have been persisted const { body: readRule } = await securitySolutionApi .readRule({ query: { rule_id: ruleId } }) .expect(200); - expect(readRule.actions).to.eql(expectedRuleActions); + expect(readRule.actions).toEqual(expectedRuleActions); // Sidecar should be removed const sidecarActionsPostResults = await getLegacyActionSO(es); - expect(sidecarActionsPostResults.hits.hits.length).to.eql(0); + expect(sidecarActionsPostResults.hits.hits.length).toBe(0); }); }); }); }); describe('legacy investigation fields', () => { - let ruleWithLegacyInvestigationField: Rule; - let ruleWithLegacyInvestigationFieldEmptyArray: Rule; - let ruleWithIntendedInvestigationField: RuleResponse; - - beforeEach(async () => { - ruleWithLegacyInvestigationField = await createRuleThroughAlertingEndpoint( - supertest, - getRuleSavedObjectWithLegacyInvestigationFields() - ); - - ruleWithLegacyInvestigationFieldEmptyArray = await createRuleThroughAlertingEndpoint( - supertest, - getRuleSavedObjectWithLegacyInvestigationFieldsEmptyArray() - ); - - ruleWithIntendedInvestigationField = await createRule(supertest, log, { - ...getSimpleRule('rule-with-investigation-field'), - name: 'Test investigation fields object', - investigation_fields: { field_names: ['host.name'] }, - }); - }); - it('should export rules with legacy investigation_fields and transform legacy field in response', async () => { + const [ + ruleWithLegacyInvestigationField, + ruleWithLegacyInvestigationFieldEmptyArray, + ruleWithIntendedInvestigationField, + ] = await Promise.all([ + createRuleThroughAlertingEndpoint( + supertest, + getRuleSavedObjectWithLegacyInvestigationFields() + ), + createRuleThroughAlertingEndpoint( + supertest, + getRuleSavedObjectWithLegacyInvestigationFieldsEmptyArray() + ), + createRule(supertest, log, { + ...getCustomQueryRuleParams({ rule_id: 'rule-with-investigation-field' }), + name: 'Test investigation fields object', + investigation_fields: { field_names: ['host.name'] }, + }), + ]); + const { body } = await securitySolutionApi .performRulesBulkAction({ body: { query: '', action: BulkActionTypeEnum.export }, @@ -538,21 +584,21 @@ export default ({ getService }: FtrProviderContext): void => { const exportedRuleWithLegacyInvestigationField = exportedRules.find( (rule) => rule.id === ruleWithLegacyInvestigationField.id ); - expect(exportedRuleWithLegacyInvestigationField.investigation_fields).to.eql({ + expect(exportedRuleWithLegacyInvestigationField.investigation_fields).toEqual({ field_names: ['client.address', 'agent.name'], }); const exportedRuleWithLegacyInvestigationFieldEmptyArray = exportedRules.find( (rule) => rule.id === ruleWithLegacyInvestigationFieldEmptyArray.id ); - expect(exportedRuleWithLegacyInvestigationFieldEmptyArray.investigation_fields).to.eql( + expect(exportedRuleWithLegacyInvestigationFieldEmptyArray.investigation_fields).toEqual( undefined ); const exportedRuleWithInvestigationField = exportedRules.find( (rule) => rule.id === ruleWithIntendedInvestigationField.id ); - expect(exportedRuleWithInvestigationField.investigation_fields).to.eql({ + expect(exportedRuleWithInvestigationField.investigation_fields).toEqual({ field_names: ['host.name'], }); @@ -568,10 +614,10 @@ export default ({ getService }: FtrProviderContext): void => { JSON.parse(rule1).id ); - expect(isInvestigationFieldMigratedInSo).to.eql(false); + expect(isInvestigationFieldMigratedInSo).toBeFalsy(); const exportDetails = JSON.parse(exportDetailsJson); - expect(exportDetails).to.eql({ + expect(exportDetails).toEqual({ exported_exception_list_count: 0, exported_exception_list_item_count: 0, exported_count: 3, @@ -591,6 +637,23 @@ export default ({ getService }: FtrProviderContext): void => { }); it('should delete rules with investigation fields and transform legacy field in response', async () => { + const [ruleWithLegacyInvestigationField, ruleWithLegacyInvestigationFieldEmptyArray] = + await Promise.all([ + createRuleThroughAlertingEndpoint( + supertest, + getRuleSavedObjectWithLegacyInvestigationFields() + ), + createRuleThroughAlertingEndpoint( + supertest, + getRuleSavedObjectWithLegacyInvestigationFieldsEmptyArray() + ), + createRule(supertest, log, { + ...getCustomQueryRuleParams({ rule_id: 'rule-with-investigation-field' }), + name: 'Test investigation fields object', + investigation_fields: { field_names: ['host.name'] }, + }), + ]); + const { body } = await securitySolutionApi .performRulesBulkAction({ body: { query: '', action: BulkActionTypeEnum.delete }, @@ -598,22 +661,22 @@ export default ({ getService }: FtrProviderContext): void => { }) .expect(200); - expect(body.attributes.summary).to.eql({ failed: 0, skipped: 0, succeeded: 3, total: 3 }); + expect(body.attributes.summary).toEqual({ failed: 0, skipped: 0, succeeded: 3, total: 3 }); // Check that the deleted rule is returned with the response const names = body.attributes.results.deleted.map( (returnedRule: RuleResponse) => returnedRule.name ); - expect(names.includes('Test investigation fields')).to.eql(true); - expect(names.includes('Test investigation fields empty array')).to.eql(true); - expect(names.includes('Test investigation fields object')).to.eql(true); + expect(names.includes('Test investigation fields')).toBeTruthy(); + expect(names.includes('Test investigation fields empty array')).toBeTruthy(); + expect(names.includes('Test investigation fields object')).toBeTruthy(); const ruleWithLegacyField = body.attributes.results.deleted.find( (returnedRule: RuleResponse) => returnedRule.rule_id === ruleWithLegacyInvestigationField.params.ruleId ); - expect(ruleWithLegacyField.investigation_fields).to.eql({ + expect(ruleWithLegacyField.investigation_fields).toEqual({ field_names: ['client.address', 'agent.name'], }); @@ -632,6 +695,23 @@ export default ({ getService }: FtrProviderContext): void => { }); it('should enable rules with legacy investigation fields and transform legacy field in response', async () => { + const [ruleWithLegacyInvestigationField, ruleWithLegacyInvestigationFieldEmptyArray] = + await Promise.all([ + createRuleThroughAlertingEndpoint( + supertest, + getRuleSavedObjectWithLegacyInvestigationFields({ enabled: false }) + ), + createRuleThroughAlertingEndpoint( + supertest, + getRuleSavedObjectWithLegacyInvestigationFieldsEmptyArray({ enabled: false }) + ), + createRule(supertest, log, { + ...getCustomQueryRuleParams({ rule_id: 'rule-with-investigation-field' }), + name: 'Test investigation fields object', + investigation_fields: { field_names: ['host.name'] }, + }), + ]); + const { body } = await securitySolutionApi .performRulesBulkAction({ body: { query: '', action: BulkActionTypeEnum.enable }, @@ -639,7 +719,7 @@ export default ({ getService }: FtrProviderContext): void => { }) .expect(200); - expect(body.attributes.summary).to.eql({ failed: 0, skipped: 0, succeeded: 3, total: 3 }); + expect(body.attributes.summary).toEqual({ failed: 0, skipped: 0, succeeded: 3, total: 3 }); // Check that the updated rule is returned with the response // and field transformed on response @@ -647,13 +727,13 @@ export default ({ getService }: FtrProviderContext): void => { body.attributes.results.updated.every( (returnedRule: RuleResponse) => returnedRule.enabled ) - ).to.eql(true); + ).toBeTruthy(); const ruleWithLegacyField = body.attributes.results.updated.find( (returnedRule: RuleResponse) => returnedRule.rule_id === ruleWithLegacyInvestigationField.params.ruleId ); - expect(ruleWithLegacyField.investigation_fields).to.eql({ + expect(ruleWithLegacyField.investigation_fields).toEqual({ field_names: ['client.address', 'agent.name'], }); @@ -661,12 +741,12 @@ export default ({ getService }: FtrProviderContext): void => { (returnedRule: RuleResponse) => returnedRule.rule_id === ruleWithLegacyInvestigationFieldEmptyArray.params.ruleId ); - expect(ruleWithEmptyArray.investigation_fields).to.eql(undefined); + expect(ruleWithEmptyArray.investigation_fields).toBeUndefined(); const ruleWithIntendedType = body.attributes.results.updated.find( (returnedRule: RuleResponse) => returnedRule.rule_id === 'rule-with-investigation-field' ); - expect(ruleWithIntendedType.investigation_fields).to.eql({ field_names: ['host.name'] }); + expect(ruleWithIntendedType.investigation_fields).toEqual({ field_names: ['host.name'] }); /** * Confirm type on SO so that it's clear in the tests whether it's expected that * the SO itself is migrated to the inteded object type, or if the transformation is @@ -682,27 +762,44 @@ export default ({ getService }: FtrProviderContext): void => { field_names: ['client.address', 'agent.name'], }); - expect(isInvestigationFieldMigratedInSo).to.eql(false); - expect(ruleSO?.alert?.enabled).to.eql(true); + expect(isInvestigationFieldMigratedInSo).toBeFalsy(); + expect(ruleSO?.alert?.enabled).toBeTruthy(); const { hits: { hits: [{ _source: ruleSO2 }], }, } = await getRuleSOById(es, ruleWithEmptyArray.id); - expect(ruleSO2?.alert?.params?.investigationFields).to.eql([]); - expect(ruleSO?.alert?.enabled).to.eql(true); + expect(ruleSO2?.alert?.params?.investigationFields).toEqual([]); + expect(ruleSO?.alert?.enabled).toBeTruthy(); const { hits: { hits: [{ _source: ruleSO3 }], }, } = await getRuleSOById(es, ruleWithIntendedType.id); - expect(ruleSO3?.alert?.params?.investigationFields).to.eql({ field_names: ['host.name'] }); - expect(ruleSO?.alert?.enabled).to.eql(true); + expect(ruleSO3?.alert?.params?.investigationFields).toEqual({ field_names: ['host.name'] }); + expect(ruleSO?.alert?.enabled).toBeTruthy(); }); it('should disable rules with legacy investigation fields and transform legacy field in response', async () => { + const [ruleWithLegacyInvestigationField, ruleWithLegacyInvestigationFieldEmptyArray] = + await Promise.all([ + createRuleThroughAlertingEndpoint( + supertest, + getRuleSavedObjectWithLegacyInvestigationFields({ enabled: true }) + ), + createRuleThroughAlertingEndpoint( + supertest, + getRuleSavedObjectWithLegacyInvestigationFieldsEmptyArray({ enabled: false }) + ), + createRule(supertest, log, { + ...getCustomQueryRuleParams({ rule_id: 'rule-with-investigation-field' }), + name: 'Test investigation fields object', + investigation_fields: { field_names: ['host.name'] }, + }), + ]); + const { body } = await securitySolutionApi .performRulesBulkAction({ body: { query: '', action: BulkActionTypeEnum.disable }, @@ -710,7 +807,7 @@ export default ({ getService }: FtrProviderContext): void => { }) .expect(200); - expect(body.attributes.summary).to.eql({ failed: 0, skipped: 0, succeeded: 3, total: 3 }); + expect(body.attributes.summary).toEqual({ failed: 0, skipped: 0, succeeded: 3, total: 3 }); // Check that the updated rule is returned with the response // and field transformed on response @@ -718,13 +815,13 @@ export default ({ getService }: FtrProviderContext): void => { body.attributes.results.updated.every( (returnedRule: RuleResponse) => !returnedRule.enabled ) - ).to.eql(true); + ).toBeTruthy(); const ruleWithLegacyField = body.attributes.results.updated.find( (returnedRule: RuleResponse) => returnedRule.rule_id === ruleWithLegacyInvestigationField.params.ruleId ); - expect(ruleWithLegacyField.investigation_fields).to.eql({ + expect(ruleWithLegacyField.investigation_fields).toEqual({ field_names: ['client.address', 'agent.name'], }); @@ -732,12 +829,12 @@ export default ({ getService }: FtrProviderContext): void => { (returnedRule: RuleResponse) => returnedRule.rule_id === ruleWithLegacyInvestigationFieldEmptyArray.params.ruleId ); - expect(ruleWithEmptyArray.investigation_fields).to.eql(undefined); + expect(ruleWithEmptyArray.investigation_fields).toBeUndefined(); const ruleWithIntendedType = body.attributes.results.updated.find( (returnedRule: RuleResponse) => returnedRule.rule_id === 'rule-with-investigation-field' ); - expect(ruleWithIntendedType.investigation_fields).to.eql({ field_names: ['host.name'] }); + expect(ruleWithIntendedType.investigation_fields).toEqual({ field_names: ['host.name'] }); /** * Confirm type on SO so that it's clear in the tests whether it's expected that @@ -753,7 +850,7 @@ export default ({ getService }: FtrProviderContext): void => { es, ruleWithLegacyField.id ); - expect(isInvestigationFieldForRuleWithLegacyFieldMigratedInSo).to.eql(false); + expect(isInvestigationFieldForRuleWithLegacyFieldMigratedInSo).toBeFalsy(); const isInvestigationFieldForRuleWithEmptyArraydMigratedInSo = await checkInvestigationFieldSoValue( @@ -764,7 +861,7 @@ export default ({ getService }: FtrProviderContext): void => { es, ruleWithEmptyArray.id ); - expect(isInvestigationFieldForRuleWithEmptyArraydMigratedInSo).to.eql(false); + expect(isInvestigationFieldForRuleWithEmptyArraydMigratedInSo).toBeFalsy(); const isInvestigationFieldForRuleWithIntendedTypeMigratedInSo = await checkInvestigationFieldSoValue( @@ -773,10 +870,30 @@ export default ({ getService }: FtrProviderContext): void => { es, ruleWithIntendedType.id ); - expect(isInvestigationFieldForRuleWithIntendedTypeMigratedInSo).to.eql(true); + expect(isInvestigationFieldForRuleWithIntendedTypeMigratedInSo).toBeTruthy(); }); it('should duplicate rules with legacy investigation fields and transform field in response', async () => { + const [ + ruleWithLegacyInvestigationField, + ruleWithLegacyInvestigationFieldEmptyArray, + ruleWithIntendedInvestigationField, + ] = await Promise.all([ + createRuleThroughAlertingEndpoint( + supertest, + getRuleSavedObjectWithLegacyInvestigationFields() + ), + createRuleThroughAlertingEndpoint( + supertest, + getRuleSavedObjectWithLegacyInvestigationFieldsEmptyArray() + ), + createRule(supertest, log, { + ...getCustomQueryRuleParams({ rule_id: 'rule-with-investigation-field' }), + name: 'Test investigation fields object', + investigation_fields: { field_names: ['host.name'] }, + }), + ]); + const { body } = await securitySolutionApi .performRulesBulkAction({ body: { @@ -788,22 +905,22 @@ export default ({ getService }: FtrProviderContext): void => { }) .expect(200); - expect(body.attributes.summary).to.eql({ failed: 0, skipped: 0, succeeded: 3, total: 3 }); + expect(body.attributes.summary).toEqual({ failed: 0, skipped: 0, succeeded: 3, total: 3 }); // Check that the duplicated rule is returned with the response const names = body.attributes.results.created.map( (returnedRule: RuleResponse) => returnedRule.name ); - expect(names.includes('Test investigation fields [Duplicate]')).to.eql(true); - expect(names.includes('Test investigation fields empty array [Duplicate]')).to.eql(true); - expect(names.includes('Test investigation fields object [Duplicate]')).to.eql(true); + expect(names.includes('Test investigation fields [Duplicate]')).toBeTruthy(); + expect(names.includes('Test investigation fields empty array [Duplicate]')).toBeTruthy(); + expect(names.includes('Test investigation fields object [Duplicate]')).toBeTruthy(); // Check that the updates have been persisted const { body: rulesResponse } = await await securitySolutionApi .findRules({ query: {} }) .expect(200); - expect(rulesResponse.total).to.eql(6); + expect(rulesResponse.total).toBe(6); const ruleWithLegacyField = body.attributes.results.created.find( (returnedRule: RuleResponse) => @@ -832,7 +949,7 @@ export default ({ getService }: FtrProviderContext): void => { es, ruleWithLegacyField.id ); - expect(isInvestigationFieldForRuleWithLegacyFieldMigratedInSo).to.eql(false); + expect(isInvestigationFieldForRuleWithLegacyFieldMigratedInSo).toBeFalsy(); const isInvestigationFieldForRuleWithEmptyArrayMigratedInSo = await checkInvestigationFieldSoValue( @@ -841,7 +958,7 @@ export default ({ getService }: FtrProviderContext): void => { es, ruleWithEmptyArray.id ); - expect(isInvestigationFieldForRuleWithEmptyArrayMigratedInSo).to.eql(false); + expect(isInvestigationFieldForRuleWithEmptyArrayMigratedInSo).toBeFalsy(); /* It's duplicate of a rule with properly formatted "investigation fields". @@ -855,7 +972,7 @@ export default ({ getService }: FtrProviderContext): void => { es, ruleWithIntendedType.id ); - expect(isInvestigationFieldForRuleWithIntendedTypeInSo).to.eql(true); + expect(isInvestigationFieldForRuleWithIntendedTypeInSo).toBeTruthy(); // ORIGINAL RULES - rules selected to be duplicated /** @@ -871,7 +988,7 @@ export default ({ getService }: FtrProviderContext): void => { es, ruleWithLegacyInvestigationField.id ); - expect(isInvestigationFieldForOriginalRuleWithLegacyFieldMigratedInSo).to.eql(false); + expect(isInvestigationFieldForOriginalRuleWithLegacyFieldMigratedInSo).toBeFalsy(); const isInvestigationFieldForOriginalRuleWithEmptyArrayMigratedInSo = await checkInvestigationFieldSoValue( @@ -880,7 +997,7 @@ export default ({ getService }: FtrProviderContext): void => { es, ruleWithLegacyInvestigationFieldEmptyArray.id ); - expect(isInvestigationFieldForOriginalRuleWithEmptyArrayMigratedInSo).to.eql(false); + expect(isInvestigationFieldForOriginalRuleWithEmptyArrayMigratedInSo).toBeFalsy(); /* Since this rule was created with intended "investigation fields" format, @@ -893,10 +1010,27 @@ export default ({ getService }: FtrProviderContext): void => { es, ruleWithIntendedInvestigationField.id ); - expect(isInvestigationFieldForOriginalRuleWithIntendedTypeInSo).to.eql(true); + expect(isInvestigationFieldForOriginalRuleWithIntendedTypeInSo).toBeTruthy(); }); it('should edit rules with legacy investigation fields', async () => { + const [ruleWithLegacyInvestigationField, ruleWithLegacyInvestigationFieldEmptyArray] = + await Promise.all([ + createRuleThroughAlertingEndpoint( + supertest, + getRuleSavedObjectWithLegacyInvestigationFields() + ), + createRuleThroughAlertingEndpoint( + supertest, + getRuleSavedObjectWithLegacyInvestigationFieldsEmptyArray() + ), + createRule(supertest, log, { + ...getCustomQueryRuleParams({ rule_id: 'rule-with-investigation-field' }), + name: 'Test investigation fields object', + investigation_fields: { field_names: ['host.name'] }, + }), + ]); + const { body } = await securitySolutionApi.performRulesBulkAction({ body: { query: '', @@ -910,7 +1044,7 @@ export default ({ getService }: FtrProviderContext): void => { }, query: {}, }); - expect(body.attributes.summary).to.eql({ + expect(body.attributes.summary).toEqual({ failed: 0, skipped: 0, succeeded: 3, @@ -923,23 +1057,23 @@ export default ({ getService }: FtrProviderContext): void => { (returnedRule: RuleResponse) => returnedRule.rule_id === ruleWithLegacyInvestigationField.params.ruleId ); - expect(ruleWithLegacyField.investigation_fields).to.eql({ + expect(ruleWithLegacyField.investigation_fields).toEqual({ field_names: ['client.address', 'agent.name'], }); - expect(ruleWithLegacyField.tags).to.eql(['reset-tag']); + expect(ruleWithLegacyField.tags).toEqual(['reset-tag']); const ruleWithEmptyArray = body.attributes.results.updated.find( (returnedRule: RuleResponse) => returnedRule.rule_id === ruleWithLegacyInvestigationFieldEmptyArray.params.ruleId ); - expect(ruleWithEmptyArray.investigation_fields).to.eql(undefined); - expect(ruleWithEmptyArray.tags).to.eql(['reset-tag']); + expect(ruleWithEmptyArray.investigation_fields).toBeUndefined(); + expect(ruleWithEmptyArray.tags).toEqual(['reset-tag']); const ruleWithIntendedType = body.attributes.results.updated.find( (returnedRule: RuleResponse) => returnedRule.rule_id === 'rule-with-investigation-field' ); - expect(ruleWithIntendedType.investigation_fields).to.eql({ field_names: ['host.name'] }); - expect(ruleWithIntendedType.tags).to.eql(['reset-tag']); + expect(ruleWithIntendedType.investigation_fields).toEqual({ field_names: ['host.name'] }); + expect(ruleWithIntendedType.tags).toEqual(['reset-tag']); /** * Confirm type on SO so that it's clear in the tests whether it's expected that @@ -953,7 +1087,7 @@ export default ({ getService }: FtrProviderContext): void => { es, ruleWithLegacyInvestigationField.id ); - expect(isInvestigationFieldForRuleWithLegacyFieldMigratedInSo).to.eql(false); + expect(isInvestigationFieldForRuleWithLegacyFieldMigratedInSo).toBeFalsy(); const isInvestigationFieldForRuleWithEmptyArrayFieldMigratedInSo = await checkInvestigationFieldSoValue( @@ -962,7 +1096,7 @@ export default ({ getService }: FtrProviderContext): void => { es, ruleWithLegacyInvestigationFieldEmptyArray.id ); - expect(isInvestigationFieldForRuleWithEmptyArrayFieldMigratedInSo).to.eql(false); + expect(isInvestigationFieldForRuleWithEmptyArrayFieldMigratedInSo).toBeFalsy(); const isInvestigationFieldForRuleWithIntendedTypeMigratedInSo = await checkInvestigationFieldSoValue( @@ -971,7 +1105,7 @@ export default ({ getService }: FtrProviderContext): void => { es, ruleWithIntendedType.id ); - expect(isInvestigationFieldForRuleWithIntendedTypeMigratedInSo).to.eql(true); + expect(isInvestigationFieldForRuleWithIntendedTypeMigratedInSo).toBeTruthy(); }); }); }); diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_with_legacy_investigation_fields.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_with_legacy_investigation_fields.ts index 55056748a0945..9b315dbd9dbb5 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_with_legacy_investigation_fields.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/get_rule_with_legacy_investigation_fields.ts @@ -7,7 +7,9 @@ import { InternalRuleCreate } from '@kbn/security-solution-plugin/server/lib/detection_engine/rule_schema'; -export const getRuleSavedObjectWithLegacyInvestigationFields = (): InternalRuleCreate => +export const getRuleSavedObjectWithLegacyInvestigationFields = ( + rewrites?: Partial +): InternalRuleCreate => ({ name: 'Test investigation fields', tags: ['migration'], @@ -54,6 +56,7 @@ export const getRuleSavedObjectWithLegacyInvestigationFields = (): InternalRuleC responseActions: undefined, alertSuppression: undefined, dataViewId: undefined, + ...rewrites?.params, }, schedule: { interval: '5m', @@ -61,11 +64,14 @@ export const getRuleSavedObjectWithLegacyInvestigationFields = (): InternalRuleC enabled: false, actions: [], throttle: null, + ...rewrites, // cast is due to alerting API expecting rule_type_id // and our internal schema expecting alertTypeId } as unknown as InternalRuleCreate); -export const getRuleSavedObjectWithLegacyInvestigationFieldsEmptyArray = (): InternalRuleCreate => +export const getRuleSavedObjectWithLegacyInvestigationFieldsEmptyArray = ( + rewrites?: Partial +): InternalRuleCreate => ({ name: 'Test investigation fields empty array', tags: ['migration'], @@ -112,6 +118,7 @@ export const getRuleSavedObjectWithLegacyInvestigationFieldsEmptyArray = (): Int responseActions: undefined, alertSuppression: undefined, dataViewId: undefined, + ...rewrites?.params, }, schedule: { interval: '5m', @@ -119,6 +126,7 @@ export const getRuleSavedObjectWithLegacyInvestigationFieldsEmptyArray = (): Int enabled: false, actions: [], throttle: null, + ...rewrites, // cast is due to alerting API expecting rule_type_id // and our internal schema expecting alertTypeId } as unknown as InternalRuleCreate); From 8cbe61b1b91b2a4f8e107e81ee13c067eb79e9d8 Mon Sep 17 00:00:00 2001 From: Lisa Cawley Date: Tue, 5 Nov 2024 03:22:27 -0800 Subject: [PATCH 24/57] [DOCS] Fix links to aggregation-based visualizations (#198854) ## Summary This PR fixes the following broken links that occur when we change "current" to 8.16 in https://github.com/elastic/docs/pull/3104: ``` INFO:build_docs: /tmp/docsbuild/target_repo/html/en/kibana/8.10/release-notes-8.7.0.html contains broken links to: INFO:build_docs: - en/kibana/current/add-aggregation-based-visualization-panels.html INFO:build_docs: /tmp/docsbuild/target_repo/html/en/kibana/8.11/release-notes-8.7.0.html contains broken links to: INFO:build_docs: - en/kibana/current/add-aggregation-based-visualization-panels.html INFO:build_docs: /tmp/docsbuild/target_repo/html/en/kibana/8.12/release-notes-8.7.0.html contains broken links to: INFO:build_docs: - en/kibana/current/add-aggregation-based-visualization-panels.html INFO:build_docs: /tmp/docsbuild/target_repo/html/en/kibana/8.13/release-notes-8.7.0.html contains broken links to: INFO:build_docs: - en/kibana/current/add-aggregation-based-visualization-panels.html INFO:build_docs: /tmp/docsbuild/target_repo/html/en/kibana/8.14/release-notes-8.7.0.html contains broken links to: INFO:build_docs: - en/kibana/current/add-aggregation-based-visualization-panels.html INFO:build_docs: /tmp/docsbuild/target_repo/html/en/kibana/8.15/release-notes-8.7.0.html contains broken links to: INFO:build_docs: - en/kibana/current/add-aggregation-based-visualization-panels.html INFO:build_docs: /tmp/docsbuild/target_repo/html/en/kibana/8.16/breaking-changes-summary.html contains broken links to: INFO:build_docs: - en/kibana/current/add-aggregation-based-visualization-panels.html INFO:build_docs: /tmp/docsbuild/target_repo/html/en/kibana/8.16/release-notes-8.7.0.html contains broken links to: INFO:build_docs: - en/kibana/current/add-aggregation-based-visualization-panels.html INFO:build_docs: /tmp/docsbuild/target_repo/html/en/kibana/8.7/release-notes-8.7.0.html contains broken links to: INFO:build_docs: - en/kibana/current/add-aggregation-based-visualization-panels.html INFO:build_docs: /tmp/docsbuild/target_repo/html/en/kibana/8.8/release-notes-8.7.0.html contains broken links to: INFO:build_docs: - en/kibana/current/add-aggregation-based-visualization-panels.html INFO:build_docs: /tmp/docsbuild/target_repo/html/en/kibana/8.9/release-notes-8.7.0.html contains broken links to: INFO:build_docs: - en/kibana/current/add-aggregation-based-visualization-panels.html INFO:build_docs: /tmp/docsbuild/target_repo/html/en/kibana/8.x/breaking-changes-summary.html contains broken links to: INFO:build_docs: - en/kibana/current/add-aggregation-based-visualization-panels.html INFO:build_docs: /tmp/docsbuild/target_repo/html/en/kibana/8.x/release-notes-8.7.0.html contains broken links to: INFO:build_docs: - en/kibana/current/add-aggregation-based-visualization-panels.html INFO:build_docs: /tmp/docsbuild/target_repo/html/en/kibana/current/breaking-changes-summary.html contains broken links to: INFO:build_docs: - en/kibana/current/add-aggregation-based-visualization-panels.html INFO:build_docs: /tmp/docsbuild/target_repo/html/en/kibana/current/release-notes-8.7.0.html contains broken links to: INFO:build_docs: - en/kibana/current/add-aggregation-based-visualization-panels.html INFO:build_docs: /tmp/docsbuild/target_repo/html/en/kibana/master/breaking-changes-summary.html contains broken links to: INFO:build_docs: - en/kibana/current/add-aggregation-based-visualization-panels.html INFO:build_docs: /tmp/docsbuild/target_repo/html/en/kibana/master/release-notes-8.7.0.html contains broken links to: INFO:build_docs: - en/kibana/current/add-aggregation-based-visualization-panels.html ``` NOTE: The backport PRs for 8.8 and 8.7 will need to be edited to use version-specific URLs since the content in those branches are re-used in https://www.elastic.co/guide/en/elastic-stack/8.7/kibana-breaking-changes.html, for example. --- docs/CHANGELOG.asciidoc | 2 +- docs/upgrade-notes.asciidoc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/CHANGELOG.asciidoc b/docs/CHANGELOG.asciidoc index 074dc6ffd05f0..b1b4a59160c19 100644 --- a/docs/CHANGELOG.asciidoc +++ b/docs/CHANGELOG.asciidoc @@ -3852,7 +3852,7 @@ In 8.1.0 and later, {kib} uses the field caps API, by default, to determine the `visualization:visualize:legacyPieChartsLibrary` has been removed from *Advanced Settings*. The setting allowed you to create aggregation-based pie chart visualizations using the legacy charts library. For more information, refer to {kibana-pull}146990[#146990]. *Impact* + -In 7.14.0 and later, the new aggregation-based pie chart visualization is available by default. For more information, check link:https://www.elastic.co/guide/en/kibana/current/add-aggregation-based-visualization-panels.html[Aggregation-based]. +In 7.14.0 and later, the new aggregation-based pie chart visualization is available by default. For more information, check <>. ==== [discrete] diff --git a/docs/upgrade-notes.asciidoc b/docs/upgrade-notes.asciidoc index 5bde93df15490..85013c8e4ba64 100644 --- a/docs/upgrade-notes.asciidoc +++ b/docs/upgrade-notes.asciidoc @@ -1019,7 +1019,7 @@ In 8.1.0 and later, {kib} uses the field caps API, by default, to determine the `visualization:visualize:legacyPieChartsLibrary` has been removed from *Advanced Settings*. The setting allowed you to create aggregation-based pie chart visualizations using the legacy charts library. For more information, refer to {kibana-pull}146990[#146990]. *Impact* + -In 7.14.0 and later, the new aggregation-based pie chart visualization is available by default. For more information, check link:https://www.elastic.co/guide/en/kibana/current/add-aggregation-based-visualization-panels.html[Aggregation-based]. +In 7.14.0 and later, the new aggregation-based pie chart visualization is available by default. For more information, check <>. ==== [discrete] From fdc9aae9d7637cd8d49109286b480532ae381519 Mon Sep 17 00:00:00 2001 From: Jeramy Soucy Date: Tue, 5 Nov 2024 12:51:35 +0100 Subject: [PATCH 25/57] Adds cleanup to serverless platform security authorization test suite (#198827) ## Summary [#195584](https://github.com/elastic/kibana/pull/195584) inadvertently removed the cleanup of created roles during testing. This PR restores the missing call to clean up any created roles. --- .../test_suites/common/platform_security/authorization.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/x-pack/test_serverless/api_integration/test_suites/common/platform_security/authorization.ts b/x-pack/test_serverless/api_integration/test_suites/common/platform_security/authorization.ts index 187efa4e860a8..a43da7314bed4 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/platform_security/authorization.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/platform_security/authorization.ts @@ -39,6 +39,7 @@ export default function ({ getService }: FtrProviderContext) { const log = getService('log'); const svlCommonApi = getService('svlCommonApi'); const roleScopedSupertest = getService('roleScopedSupertest'); + const platformSecurityUtils = getService('platformSecurityUtils'); const es = getService('es'); let supertestAdminWithCookieCredentials: SupertestWithRoleScopeType; let supertestAdminWithApiKey: SupertestWithRoleScopeType; @@ -56,6 +57,7 @@ export default function ({ getService }: FtrProviderContext) { }); }); after(async function () { + await platformSecurityUtils.clearAllRoles(); await supertestAdminWithApiKey.destroy(); }); From 67cdb93f5b800caac80672c942d04afe4d7aa4d8 Mon Sep 17 00:00:00 2001 From: Dmitrii Shevchenko Date: Tue, 5 Nov 2024 13:11:47 +0100 Subject: [PATCH 26/57] [Fleet] [Security Solution] Install prebuilt rules package using stream-based approach (#195888) **Resolves: https://github.com/elastic/kibana/issues/192350** ## Summary Implemented stream-based installation of the detection rules package. **Background**: The installation of the detection rules package was causing OOM (Out of Memory) errors in Serverless environments where the available memory is limited to 1GB. The root cause of the errors was that during installation, the package was being read and unzipped entirely into memory. Given the large package size, this led to OOMs. To address these memory issues, the following changes were made: 1. Added a branching logic to the `installPackageFromRegistry` and `installPackageByUpload` methods, where based on the package name is decided to use streaming or not. Only one `security_detection_engine` package is currently hardcoded to use streaming. 2. In the state machine then defined a separate set of steps for the stream-based package installation. It is reduced to cover only Kibana assets installation at this stage. 3. A new `stepInstallKibanaAssetsWithStreaming` step is added to handle assets installation. While this method still reads the package archive into memory (since unzipping from a readable stream is [not possible due to the design of the .zip format](https://github.com/thejoshwolfe/yauzl?tab=readme-ov-file#no-streaming-unzip-api)), the package is unzipped using streams after being read into a buffer. This allows only a small portion of the archive (100 saved objects at a time) to be unpacked into memory, reducing memory usage. 4. The new method also includes several optimizations, such as only removing previously installed assets if they are missing in the new package and using `savedObjectClient.bulkCreate` instead of the less efficient `savedObjectClient.import`. ### Test environment 1. Prebuilt detection rules package with ~20k saved objects; 118MB zipped. 5. Local package registry. 6. Production build of Kibana running locally with a 700MB max old space limit, pointed to that registry. Setting up a test environment is not completely straightforward. Here's a rough outline of the steps:
How to test this PR 1. Create a package containing a large number of prebuilt rules. 1. I used the `package-storage` repository to find one of the previously released prebuilt rules packages. 2. Multiplied the number of assets in the package to 20k historical versions. 4. Built the package using `elastic-package build`. 2. Start a local package registry serving the built package using `elastic-package stack up --services package-registry`. 4. Create a production build of Kibana. To speed up the process, unnecessary artifacts can be skipped: ``` node scripts/build --skip-cdn-assets --skip-docker-ubi --skip-docker-ubuntu --skip-docker-wolfi --skip-docker-fips ``` 7. Provide the built Kibana with a config pointing to the local registry. The config is located in `build/default/kibana-9.0.0-SNAPSHOT-darwin-aarch64/config/kibana.yml`. You can use the following config: ``` csp.strict: false xpack.security.encryptionKey: 've4Vohnu oa0Fu9ae Eethee8c oDieg4do Nohrah1u ao9Hu2oh Aeb4Ieyi Aew1aegi' xpack.encryptedSavedObjects.encryptionKey: 'Shah7nai Eew6izai Eir7OoW0 Gewi2ief eiSh8woo shoogh7E Quae6hal ce6Oumah' xpack.fleet.internal.registry.kibanaVersionCheckEnabled: false xpack.fleet.registryUrl: https://localhost:8080 elasticsearch: username: 'kibana_system' password: 'changeme' hosts: 'http://localhost:9200' ``` 8. Override the Node options Kibana starts with to allow it to connect to the local registry and set the memory limit. For this, you need to edit the `build/default/kibana-9.0.0-SNAPSHOT-darwin-aarch64/bin/kibana` file: ``` NODE_OPTIONS="--no-warnings --max-http-header-size=65536 --unhandled-rejections=warn --dns-result-order=ipv4first --openssl-legacy-provider --max_old_space_size=700 --inspect" NODE_ENV=production NODE_EXTRA_CA_CERTS=~/.elastic-package/profiles/default/certs/ca-cert.pem exec "${NODE}" "${DIR}/src/cli/dist" "${@}" ``` 9. Navigate to the build folder: `build/default/kibana-9.0.0-SNAPSHOT-darwin-aarch64`. 10. Start Kibana using `./bin/kibana`. 11. Kibana is now running in debug mode, with the debugger started on port 9229. You can connect to it using VS Code's debug config or Chrome's DevTools. 12. Now you can install prebuilt detection rules by calling the `POST /internal/detection_engine/prebuilt_rules/_bootstrap` endpoint, which uses the new streaming installation under the hood.
### Test results locally **Without the streaming approach** Guaranteed OOM. Even smaller packages, up to 10k rules, caused sporadic OOM errors. So for comparison, tested the package installation without memory limits. ![Screenshot 2024-10-14 at 14 15 26](https://github.com/user-attachments/assets/131cb877-2404-4638-b619-b1370a53659f) 1. Heap memory usage spikes up to 2.5GB 5. External memory consumes up to 450 Mb, which is four times the archive size 13. RSS (Resident Set Size) exceeds 4.5GB **With the streaming approach** No OOM errors observed. The memory consumption chart looks like the following: ![Screenshot 2024-10-14 at 11 15 21](https://github.com/user-attachments/assets/b47ba8c9-2ba7-42de-b921-c33104d4481e) 1. Heap memory remains stable, around 450MB, without any spikes. 2. External memory jumps to around 250MB at the beginning of the installation, then drops to around 120MB, which is roughly equal to the package archive size. I couldn't determine why the external memory consumption exceeds the package size by 2x when the installation starts. I checked the code for places where the package might be loaded into memory twice but found nothing suspicious. This might be worth investigating further. 3. RSS remains stable, peaking slightly above 1GB. I believe this is the upper limit for a package that can be handled without errors in a Serverless environment, where the memory limit is dictated by pod-level settings rather than Node settings and is set to 1GB. I'll verify this on a real Serverless instance to confirm. ### Test results on Serverless ![Screenshot 2024-10-31 at 12 31 34](https://github.com/user-attachments/assets/d20d2860-fa96-4e56-be2b-7b3c0b5c7b77) --- .../plugins/fleet/common/types/models/epm.ts | 15 ++ .../server/routes/epm/file_handler.test.ts | 4 +- .../fleet/server/routes/epm/file_handler.ts | 4 +- .../routes/epm/kibana_assets_handler.ts | 2 + .../services/epm/archive/archive_iterator.ts | 83 +++++++++ .../server/services/epm/archive/extract.ts | 16 +- .../server/services/epm/archive/index.ts | 100 +++++++---- .../server/services/epm/archive/parse.ts | 5 +- .../server/services/epm/archive/storage.ts | 2 +- .../elasticsearch/ingest_pipeline/install.ts | 3 +- .../elasticsearch/transform/mappings.test.ts | 4 + .../services/epm/kibana/assets/install.ts | 14 +- .../kibana/assets/install_with_streaming.ts | 115 +++++++++++++ .../server/services/epm/package_service.ts | 8 +- .../server/services/epm/packages/assets.ts | 2 +- .../server/services/epm/packages/get.test.ts | 3 + .../services/epm/packages/install.test.ts | 18 ++ .../server/services/epm/packages/install.ts | 32 +++- .../_state_machine_package_install.test.ts | 7 + .../_state_machine_package_install.ts | 34 +++- .../step_create_restart_installation.test.ts | 6 + .../step_delete_previous_pipelines.test.ts | 4 + .../steps/step_install_ilm_policies.test.ts | 4 + ...p_install_index_template_pipelines.test.ts | 8 + .../steps/step_install_kibana_assets.test.ts | 159 +++++++++++++++++- .../steps/step_install_kibana_assets.ts | 63 +++++++ .../steps/step_install_mlmodel.test.ts | 3 + .../steps/step_install_transforms.test.ts | 3 + .../step_remove_legacy_templates.test.ts | 3 + .../steps/step_save_archive_entries.test.ts | 3 + .../steps/step_save_archive_entries.ts | 23 ++- .../steps/step_save_system_object.test.ts | 4 + .../step_update_current_write_indices.test.ts | 3 + .../update_latest_executed_state.test.ts | 6 + .../server/services/epm/packages/remove.ts | 1 + .../server/services/epm/registry/index.ts | 17 +- .../experimental_datastream_features.ts | 2 + .../fleet_api_integration/apis/epm/index.js | 1 + .../apis/epm/install_by_upload.ts | 2 +- .../apis/epm/install_with_streaming.ts | 65 +++++++ .../security_detection_engine-8.16.0.zip | Bin 0 -> 63220 bytes 41 files changed, 768 insertions(+), 83 deletions(-) create mode 100644 x-pack/plugins/fleet/server/services/epm/archive/archive_iterator.ts create mode 100644 x-pack/plugins/fleet/server/services/epm/kibana/assets/install_with_streaming.ts create mode 100644 x-pack/test/fleet_api_integration/apis/epm/install_with_streaming.ts create mode 100644 x-pack/test/fleet_api_integration/apis/fixtures/test_packages/security_detection_engine/security_detection_engine-8.16.0.zip diff --git a/x-pack/plugins/fleet/common/types/models/epm.ts b/x-pack/plugins/fleet/common/types/models/epm.ts index 3aa65dc3adcd4..827130d802f22 100644 --- a/x-pack/plugins/fleet/common/types/models/epm.ts +++ b/x-pack/plugins/fleet/common/types/models/epm.ts @@ -124,10 +124,25 @@ export type InstallablePackage = RegistryPackage | ArchivePackage; export type AssetsMap = Map; +export interface ArchiveEntry { + path: string; + buffer?: Buffer; +} + +export interface ArchiveIterator { + traverseEntries: (onEntry: (entry: ArchiveEntry) => Promise) => Promise; + getPaths: () => Promise; +} + export interface PackageInstallContext { packageInfo: InstallablePackage; + /** + * @deprecated Use `archiveIterator` to access the package archive entries + * without loading them all into memory at once. + */ assetsMap: AssetsMap; paths: string[]; + archiveIterator: ArchiveIterator; } export type ArchivePackage = PackageSpecManifest & diff --git a/x-pack/plugins/fleet/server/routes/epm/file_handler.test.ts b/x-pack/plugins/fleet/server/routes/epm/file_handler.test.ts index 1eb8387f69751..5690c32c2d7fd 100644 --- a/x-pack/plugins/fleet/server/routes/epm/file_handler.test.ts +++ b/x-pack/plugins/fleet/server/routes/epm/file_handler.test.ts @@ -15,7 +15,7 @@ import { getBundledPackageByPkgKey } from '../../services/epm/packages/bundled_p import { getFile, getInstallation } from '../../services/epm/packages/get'; import type { FleetRequestHandlerContext } from '../..'; import { appContextService } from '../../services'; -import { unpackBufferEntries } from '../../services/epm/archive'; +import { unpackArchiveEntriesIntoMemory } from '../../services/epm/archive'; import { getAsset } from '../../services/epm/archive/storage'; import { getFileHandler } from './file_handler'; @@ -29,7 +29,7 @@ jest.mock('../../services/epm/packages/get'); const mockedGetBundledPackageByPkgKey = jest.mocked(getBundledPackageByPkgKey); const mockedGetInstallation = jest.mocked(getInstallation); const mockedGetFile = jest.mocked(getFile); -const mockedUnpackBufferEntries = jest.mocked(unpackBufferEntries); +const mockedUnpackBufferEntries = jest.mocked(unpackArchiveEntriesIntoMemory); const mockedGetAsset = jest.mocked(getAsset); function mockContext() { diff --git a/x-pack/plugins/fleet/server/routes/epm/file_handler.ts b/x-pack/plugins/fleet/server/routes/epm/file_handler.ts index 0f22a31c1aa72..994f52a71c224 100644 --- a/x-pack/plugins/fleet/server/routes/epm/file_handler.ts +++ b/x-pack/plugins/fleet/server/routes/epm/file_handler.ts @@ -17,7 +17,7 @@ import { defaultFleetErrorHandler } from '../../errors'; import { getAsset } from '../../services/epm/archive/storage'; import { getBundledPackageByPkgKey } from '../../services/epm/packages/bundled_packages'; import { pkgToPkgKey } from '../../services/epm/registry'; -import { unpackBufferEntries } from '../../services/epm/archive'; +import { unpackArchiveEntriesIntoMemory } from '../../services/epm/archive'; const CACHE_CONTROL_10_MINUTES_HEADER: HttpResponseOptions['headers'] = { 'cache-control': 'max-age=600', @@ -69,7 +69,7 @@ export const getFileHandler: FleetRequestHandler< pkgToPkgKey({ name: pkgName, version: pkgVersion }) ); if (bundledPackage) { - const bufferEntries = await unpackBufferEntries( + const bufferEntries = await unpackArchiveEntriesIntoMemory( await bundledPackage.getBuffer(), 'application/zip' ); diff --git a/x-pack/plugins/fleet/server/routes/epm/kibana_assets_handler.ts b/x-pack/plugins/fleet/server/routes/epm/kibana_assets_handler.ts index 8fe83f98669d1..ad0bec6397ee8 100644 --- a/x-pack/plugins/fleet/server/routes/epm/kibana_assets_handler.ts +++ b/x-pack/plugins/fleet/server/routes/epm/kibana_assets_handler.ts @@ -22,6 +22,7 @@ import type { FleetRequestHandler, InstallKibanaAssetsRequestSchema, } from '../../types'; +import { createArchiveIteratorFromMap } from '../../services/epm/archive/archive_iterator'; export const installPackageKibanaAssetsHandler: FleetRequestHandler< TypeOf, @@ -69,6 +70,7 @@ export const installPackageKibanaAssetsHandler: FleetRequestHandler< packageInfo, paths: installedPkgWithAssets.paths, assetsMap: installedPkgWithAssets.assetsMap, + archiveIterator: createArchiveIteratorFromMap(installedPkgWithAssets.assetsMap), }, }); diff --git a/x-pack/plugins/fleet/server/services/epm/archive/archive_iterator.ts b/x-pack/plugins/fleet/server/services/epm/archive/archive_iterator.ts new file mode 100644 index 0000000000000..369b32412bd82 --- /dev/null +++ b/x-pack/plugins/fleet/server/services/epm/archive/archive_iterator.ts @@ -0,0 +1,83 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { AssetsMap, ArchiveIterator, ArchiveEntry } from '../../../../common/types'; + +import { traverseArchiveEntries } from '.'; + +/** + * Creates an iterator for traversing and extracting paths from an archive + * buffer. This iterator is intended to be used for memory efficient traversal + * of archive contents without extracting the entire archive into memory. + * + * @param archiveBuffer - The buffer containing the archive data. + * @param contentType - The content type of the archive (e.g., + * 'application/zip'). + * @returns ArchiveIterator instance. + * + */ +export const createArchiveIterator = ( + archiveBuffer: Buffer, + contentType: string +): ArchiveIterator => { + const paths: string[] = []; + + const traverseEntries = async ( + onEntry: (entry: ArchiveEntry) => Promise + ): Promise => { + await traverseArchiveEntries(archiveBuffer, contentType, async (entry) => { + await onEntry(entry); + }); + }; + + const getPaths = async (): Promise => { + if (paths.length) { + return paths; + } + + await traverseEntries(async (entry) => { + paths.push(entry.path); + }); + + return paths; + }; + + return { + traverseEntries, + getPaths, + }; +}; + +/** + * Creates an archive iterator from the assetsMap. This is a stop-gap solution + * to provide a uniform interface for traversing assets while assetsMap is still + * in use. It works with a map of assets loaded into memory and is not intended + * for use with large archives. + * + * @param assetsMap - A map where the keys are asset paths and the values are + * asset buffers. + * @returns ArchiveIterator instance. + * + */ +export const createArchiveIteratorFromMap = (assetsMap: AssetsMap): ArchiveIterator => { + const traverseEntries = async ( + onEntry: (entry: ArchiveEntry) => Promise + ): Promise => { + for (const [path, buffer] of assetsMap) { + await onEntry({ path, buffer }); + } + }; + + const getPaths = async (): Promise => { + return [...assetsMap.keys()]; + }; + + return { + traverseEntries, + getPaths, + }; +}; diff --git a/x-pack/plugins/fleet/server/services/epm/archive/extract.ts b/x-pack/plugins/fleet/server/services/epm/archive/extract.ts index 84aa161385cb3..9f5f90959d144 100644 --- a/x-pack/plugins/fleet/server/services/epm/archive/extract.ts +++ b/x-pack/plugins/fleet/server/services/epm/archive/extract.ts @@ -11,13 +11,12 @@ import * as tar from 'tar'; import yauzl from 'yauzl'; import { bufferToStream, streamToBuffer } from '../streams'; - -import type { ArchiveEntry } from '.'; +import type { ArchiveEntry } from '../../../../common/types'; export async function untarBuffer( buffer: Buffer, filter = (entry: ArchiveEntry): boolean => true, - onEntry = (entry: ArchiveEntry): void => {} + onEntry = async (entry: ArchiveEntry): Promise => {} ) { const deflatedStream = bufferToStream(buffer); // use tar.list vs .extract to avoid writing to disk @@ -37,7 +36,7 @@ export async function untarBuffer( export async function unzipBuffer( buffer: Buffer, filter = (entry: ArchiveEntry): boolean => true, - onEntry = (entry: ArchiveEntry): void => {} + onEntry = async (entry: ArchiveEntry): Promise => {} ): Promise { const zipfile = await yauzlFromBuffer(buffer, { lazyEntries: true }); zipfile.readEntry(); @@ -45,9 +44,12 @@ export async function unzipBuffer( const path = entry.fileName; if (!filter({ path })) return zipfile.readEntry(); - const entryBuffer = await getZipReadStream(zipfile, entry).then(streamToBuffer); - onEntry({ buffer: entryBuffer, path }); - zipfile.readEntry(); + try { + const entryBuffer = await getZipReadStream(zipfile, entry).then(streamToBuffer); + await onEntry({ buffer: entryBuffer, path }); + } finally { + zipfile.readEntry(); + } }); return new Promise((resolve, reject) => zipfile.on('end', resolve).on('error', reject)); } diff --git a/x-pack/plugins/fleet/server/services/epm/archive/index.ts b/x-pack/plugins/fleet/server/services/epm/archive/index.ts index 5943f8f838fcb..ed9ff2a5e4b72 100644 --- a/x-pack/plugins/fleet/server/services/epm/archive/index.ts +++ b/x-pack/plugins/fleet/server/services/epm/archive/index.ts @@ -5,13 +5,20 @@ * 2.0. */ -import type { AssetParts, AssetsMap } from '../../../../common/types'; +import type { + ArchiveEntry, + ArchiveIterator, + AssetParts, + AssetsMap, +} from '../../../../common/types'; import { PackageInvalidArchiveError, PackageUnsupportedMediaTypeError, PackageNotFoundError, } from '../../../errors'; +import { createArchiveIterator } from './archive_iterator'; + import { deletePackageInfo } from './cache'; import type { SharedKey } from './cache'; import { getBufferExtractor } from './extract'; @@ -20,66 +27,85 @@ export * from './cache'; export { getBufferExtractor, untarBuffer, unzipBuffer } from './extract'; export { generatePackageInfoFromArchiveBuffer } from './parse'; -export interface ArchiveEntry { - path: string; - buffer?: Buffer; -} - export async function unpackBufferToAssetsMap({ - name, - version, contentType, archiveBuffer, + useStreaming, }: { - name: string; - version: string; contentType: string; archiveBuffer: Buffer; -}): Promise<{ paths: string[]; assetsMap: AssetsMap }> { - const assetsMap = new Map(); - const paths: string[] = []; - const entries = await unpackBufferEntries(archiveBuffer, contentType); - - entries.forEach((entry) => { - const { path, buffer } = entry; - if (buffer) { - assetsMap.set(path, buffer); - paths.push(path); - } - }); - - return { assetsMap, paths }; + useStreaming: boolean | undefined; +}): Promise<{ paths: string[]; assetsMap: AssetsMap; archiveIterator: ArchiveIterator }> { + const archiveIterator = createArchiveIterator(archiveBuffer, contentType); + let paths: string[] = []; + let assetsMap: AssetsMap = new Map(); + if (useStreaming) { + paths = await archiveIterator.getPaths(); + // We keep the assetsMap empty as we don't want to load all the assets in memory + assetsMap = new Map(); + } else { + const entries = await unpackArchiveEntriesIntoMemory(archiveBuffer, contentType); + + entries.forEach((entry) => { + const { path, buffer } = entry; + if (buffer) { + assetsMap.set(path, buffer); + paths.push(path); + } + }); + } + + return { paths, assetsMap, archiveIterator }; } -export async function unpackBufferEntries( +/** + * This function extracts all archive entries into memory. + * + * NOTE: This is potentially dangerous for large archives and can cause OOM + * errors. Use 'traverseArchiveEntries' instead to iterate over the entries + * without storing them all in memory at once. + * + * @param archiveBuffer + * @param contentType + * @returns All the entries in the archive buffer + */ +export async function unpackArchiveEntriesIntoMemory( archiveBuffer: Buffer, contentType: string ): Promise { + const entries: ArchiveEntry[] = []; + const addToEntries = async (entry: ArchiveEntry) => void entries.push(entry); + await traverseArchiveEntries(archiveBuffer, contentType, addToEntries); + + // While unpacking a tar.gz file with unzipBuffer() will result in a thrown + // error, unpacking a zip file with untarBuffer() just results in nothing. + if (entries.length === 0) { + throw new PackageInvalidArchiveError( + `Archive seems empty. Assumed content type was ${contentType}, check if this matches the archive type.` + ); + } + return entries; +} + +export async function traverseArchiveEntries( + archiveBuffer: Buffer, + contentType: string, + onEntry: (entry: ArchiveEntry) => Promise +) { const bufferExtractor = getBufferExtractor({ contentType }); if (!bufferExtractor) { throw new PackageUnsupportedMediaTypeError( `Unsupported media type ${contentType}. Please use 'application/gzip' or 'application/zip'` ); } - const entries: ArchiveEntry[] = []; try { const onlyFiles = ({ path }: ArchiveEntry): boolean => !path.endsWith('/'); - const addToEntries = (entry: ArchiveEntry) => entries.push(entry); - await bufferExtractor(archiveBuffer, onlyFiles, addToEntries); + await bufferExtractor(archiveBuffer, onlyFiles, onEntry); } catch (error) { throw new PackageInvalidArchiveError( `Error during extraction of package: ${error}. Assumed content type was ${contentType}, check if this matches the archive type.` ); } - - // While unpacking a tar.gz file with unzipBuffer() will result in a thrown error in the try-catch above, - // unpacking a zip file with untarBuffer() just results in nothing. - if (entries.length === 0) { - throw new PackageInvalidArchiveError( - `Archive seems empty. Assumed content type was ${contentType}, check if this matches the archive type.` - ); - } - return entries; } export const deletePackageCache = ({ name, version }: SharedKey) => { diff --git a/x-pack/plugins/fleet/server/services/epm/archive/parse.ts b/x-pack/plugins/fleet/server/services/epm/archive/parse.ts index 530ca804f24eb..8cccfe9982457 100644 --- a/x-pack/plugins/fleet/server/services/epm/archive/parse.ts +++ b/x-pack/plugins/fleet/server/services/epm/archive/parse.ts @@ -40,7 +40,7 @@ import { import { PackageInvalidArchiveError } from '../../../errors'; import { pkgToPkgKey } from '../registry'; -import { unpackBufferEntries } from '.'; +import { traverseArchiveEntries } from '.'; const readFileAsync = promisify(readFile); export const MANIFEST_NAME = 'manifest.yml'; @@ -160,9 +160,8 @@ export async function generatePackageInfoFromArchiveBuffer( contentType: string ): Promise<{ paths: string[]; packageInfo: ArchivePackage }> { const assetsMap: AssetsBufferMap = {}; - const entries = await unpackBufferEntries(archiveBuffer, contentType); const paths: string[] = []; - entries.forEach(({ path: bufferPath, buffer }) => { + await traverseArchiveEntries(archiveBuffer, contentType, async ({ path: bufferPath, buffer }) => { paths.push(bufferPath); if (buffer && filterAssetPathForParseAndVerifyArchive(bufferPath)) { assetsMap[bufferPath] = buffer; diff --git a/x-pack/plugins/fleet/server/services/epm/archive/storage.ts b/x-pack/plugins/fleet/server/services/epm/archive/storage.ts index dd6321445df75..8f6f151383d5a 100644 --- a/x-pack/plugins/fleet/server/services/epm/archive/storage.ts +++ b/x-pack/plugins/fleet/server/services/epm/archive/storage.ts @@ -15,6 +15,7 @@ import { SavedObjectsErrorHelpers } from '@kbn/core/server'; import { ASSETS_SAVED_OBJECT_TYPE } from '../../../../common'; import type { + ArchiveEntry, InstallablePackage, InstallSource, PackageAssetReference, @@ -24,7 +25,6 @@ import { PackageInvalidArchiveError, PackageNotFoundError } from '../../../error import { appContextService } from '../../app_context'; import { setPackageInfo } from '.'; -import type { ArchiveEntry } from '.'; import { filterAssetPathForParseAndVerifyArchive, parseAndVerifyArchive } from './parse'; const ONE_BYTE = 1024 * 1024; diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.ts index a456734747324..5a4672f67fe53 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.ts @@ -16,14 +16,13 @@ import type { PackageInfo, } from '../../../../types'; import { getAssetFromAssetsMap, getPathParts } from '../../archive'; -import type { ArchiveEntry } from '../../archive'; import { FLEET_FINAL_PIPELINE_CONTENT, FLEET_FINAL_PIPELINE_ID, FLEET_FINAL_PIPELINE_VERSION, } from '../../../../constants'; import { getPipelineNameForDatastream } from '../../../../../common/services'; -import type { PackageInstallContext } from '../../../../../common/types'; +import type { ArchiveEntry, PackageInstallContext } from '../../../../../common/types'; import { appendMetadataToIngestPipeline } from '../meta'; import { retryTransientEsErrors } from '../retry'; diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/mappings.test.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/mappings.test.ts index f34015bf77697..de962850fba8c 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/mappings.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/mappings.test.ts @@ -5,6 +5,8 @@ * 2.0. */ +import { createArchiveIteratorFromMap } from '../../archive/archive_iterator'; + import { loadMappingForTransform } from './mappings'; describe('loadMappingForTransform', () => { @@ -13,6 +15,7 @@ describe('loadMappingForTransform', () => { { packageInfo: {} as any, assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], }, 'test' @@ -49,6 +52,7 @@ describe('loadMappingForTransform', () => { ), ], ]), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [ '/package/ti_opencti/2.1.0/elasticsearch/transform/latest_ioc/fields/ecs.yml', '/package/ti_opencti/2.1.0/elasticsearch/transform/latest_ioc/fields/ecs-extra.yml', diff --git a/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts b/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts index 276478099daf8..bf5684f29c205 100644 --- a/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts @@ -325,16 +325,16 @@ export async function deleteKibanaAssetsAndReferencesForSpace({ await saveKibanaAssetsRefs(savedObjectsClient, pkgName, [], true); } +const kibanaAssetTypes = Object.values(KibanaAssetType); +export const isKibanaAssetType = (path: string) => { + const parts = getPathParts(path); + + return parts.service === 'kibana' && (kibanaAssetTypes as string[]).includes(parts.type); +}; + export function getKibanaAssets( packageInstallContext: PackageInstallContext ): Record { - const kibanaAssetTypes = Object.values(KibanaAssetType); - const isKibanaAssetType = (path: string) => { - const parts = getPathParts(path); - - return parts.service === 'kibana' && (kibanaAssetTypes as string[]).includes(parts.type); - }; - const result = Object.fromEntries( kibanaAssetTypes.map((type) => [type, []]) ) as Record; diff --git a/x-pack/plugins/fleet/server/services/epm/kibana/assets/install_with_streaming.ts b/x-pack/plugins/fleet/server/services/epm/kibana/assets/install_with_streaming.ts new file mode 100644 index 0000000000000..fca6cf27a0cd7 --- /dev/null +++ b/x-pack/plugins/fleet/server/services/epm/kibana/assets/install_with_streaming.ts @@ -0,0 +1,115 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { SavedObject, SavedObjectsClientContract } from '@kbn/core/server'; + +import type { Installation, PackageInstallContext } from '../../../../../common/types'; +import type { KibanaAssetReference, KibanaAssetType } from '../../../../types'; +import { getPathParts } from '../../archive'; + +import { saveKibanaAssetsRefs } from '../../packages/install'; + +import type { ArchiveAsset } from './install'; +import { + KibanaSavedObjectTypeMapping, + createSavedObjectKibanaAsset, + isKibanaAssetType, + toAssetReference, +} from './install'; +import { getSpaceAwareSaveobjectsClients } from './saved_objects'; + +interface InstallKibanaAssetsWithStreamingArgs { + pkgName: string; + packageInstallContext: PackageInstallContext; + spaceId: string; + savedObjectsClient: SavedObjectsClientContract; + installedPkg?: SavedObject | undefined; +} + +const MAX_ASSETS_TO_INSTALL_IN_PARALLEL = 100; + +export async function installKibanaAssetsWithStreaming({ + spaceId, + packageInstallContext, + savedObjectsClient, + pkgName, + installedPkg, +}: InstallKibanaAssetsWithStreamingArgs): Promise { + const { archiveIterator } = packageInstallContext; + + const { savedObjectClientWithSpace } = getSpaceAwareSaveobjectsClients(spaceId); + + const assetRefs: KibanaAssetReference[] = []; + let batch: ArchiveAsset[] = []; + + await archiveIterator.traverseEntries(async ({ path, buffer }) => { + if (!buffer || !isKibanaAssetType(path)) { + return; + } + const savedObject = JSON.parse(buffer.toString('utf8')) as ArchiveAsset; + const assetType = getPathParts(path).type as KibanaAssetType; + const soType = KibanaSavedObjectTypeMapping[assetType]; + if (savedObject.type !== soType) { + return; + } + + batch.push(savedObject); + assetRefs.push(toAssetReference(savedObject)); + + if (batch.length >= MAX_ASSETS_TO_INSTALL_IN_PARALLEL) { + await bulkCreateSavedObjects({ + savedObjectsClient: savedObjectClientWithSpace, + kibanaAssets: batch, + refresh: false, + }); + batch = []; + } + }); + + // install any remaining assets + if (batch.length) { + await bulkCreateSavedObjects({ + savedObjectsClient: savedObjectClientWithSpace, + kibanaAssets: batch, + // Use wait_for with the last batch to ensure all assets are readable once the install is complete + refresh: 'wait_for', + }); + } + + // Update the installation saved object with installed kibana assets + await saveKibanaAssetsRefs(savedObjectsClient, pkgName, assetRefs); + + return assetRefs; +} + +async function bulkCreateSavedObjects({ + savedObjectsClient, + kibanaAssets, + refresh, +}: { + kibanaAssets: ArchiveAsset[]; + savedObjectsClient: SavedObjectsClientContract; + refresh?: boolean | 'wait_for'; +}) { + if (!kibanaAssets.length) { + return []; + } + + const toBeSavedObjects = kibanaAssets.map((asset) => createSavedObjectKibanaAsset(asset)); + + const { saved_objects: createdSavedObjects } = await savedObjectsClient.bulkCreate( + toBeSavedObjects, + { + // We only want to install new saved objects without overwriting existing ones + overwrite: false, + managed: true, + refresh, + } + ); + + return createdSavedObjects; +} diff --git a/x-pack/plugins/fleet/server/services/epm/package_service.ts b/x-pack/plugins/fleet/server/services/epm/package_service.ts index 661475dfadc09..a097db584b460 100644 --- a/x-pack/plugins/fleet/server/services/epm/package_service.ts +++ b/x-pack/plugins/fleet/server/services/epm/package_service.ts @@ -39,7 +39,10 @@ import type { InstallResult } from '../../../common'; import { appContextService } from '..'; -import type { CustomPackageDatasetConfiguration, EnsurePackageResult } from './packages/install'; +import { + type CustomPackageDatasetConfiguration, + type EnsurePackageResult, +} from './packages/install'; import type { FetchFindLatestPackageOptions } from './registry'; import { getPackageFieldsMetadata } from './registry'; @@ -56,6 +59,7 @@ import { } from './packages'; import { generatePackageInfoFromArchiveBuffer } from './archive'; import { getEsPackage } from './archive/storage'; +import { createArchiveIteratorFromMap } from './archive/archive_iterator'; export type InstalledAssetType = EsAssetReference; @@ -381,12 +385,14 @@ class PackageClientImpl implements PackageClient { } const { assetsMap } = esPackage; + const archiveIterator = createArchiveIteratorFromMap(assetsMap); const { installedTransforms } = await installTransforms({ packageInstallContext: { assetsMap, packageInfo, paths, + archiveIterator, }, esClient: this.internalEsClient, savedObjectsClient: this.internalSoClient, diff --git a/x-pack/plugins/fleet/server/services/epm/packages/assets.ts b/x-pack/plugins/fleet/server/services/epm/packages/assets.ts index a82b5c0d103b2..3bb84c0d23163 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/assets.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/assets.ts @@ -5,9 +5,9 @@ * 2.0. */ +import type { ArchiveEntry } from '../../../../common/types'; import type { AssetsMap, PackageInfo } from '../../../types'; import { getAssetFromAssetsMap } from '../archive'; -import type { ArchiveEntry } from '../archive'; const maybeFilterByDataset = (packageInfo: Pick, datasetName: string) => diff --git a/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts index 2dc295762e33a..5711c8fcccaf4 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts @@ -27,6 +27,8 @@ import { auditLoggingService } from '../../audit_logging'; import * as Registry from '../registry'; +import { createArchiveIteratorFromMap } from '../archive/archive_iterator'; + import { getInstalledPackages, getPackageInfo, getPackages, getPackageUsageStats } from './get'; jest.mock('../registry'); @@ -915,6 +917,7 @@ owner: elastic`, MockRegistry.getPackage.mockResolvedValue({ paths: [], assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), packageInfo: { name: 'my-package', version: '1.0.0', diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/install.test.ts index 709e0d84d70fc..6b3a31eda649e 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install.test.ts @@ -442,6 +442,24 @@ describe('install', () => { expect(response.status).toEqual('installed'); }); + + it('should use streaming installation for the detection rules package', async () => { + jest.spyOn(licenseService, 'hasAtLeast').mockReturnValue(true); + + const response = await installPackage({ + spaceId: DEFAULT_SPACE_ID, + installSource: 'registry', + pkgkey: 'security_detection_engine', + savedObjectsClient: savedObjectsClientMock.create(), + esClient: {} as ElasticsearchClient, + }); + + expect(response.error).toBeUndefined(); + + expect(installStateMachine._stateMachineInstallPackage).toHaveBeenCalledWith( + expect.objectContaining({ useStreaming: true }) + ); + }); }); describe('upload', () => { diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install.ts b/x-pack/plugins/fleet/server/services/epm/packages/install.ts index 1ea6f29cad839..ebe5acc35178d 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install.ts @@ -76,6 +76,7 @@ import { deleteVerificationResult, unpackBufferToAssetsMap, } from '../archive'; +import { createArchiveIteratorFromMap } from '../archive/archive_iterator'; import { toAssetReference } from '../kibana/assets/install'; import type { ArchiveAsset } from '../kibana/assets/install'; import type { PackageUpdateEvent } from '../../upgrade_sender'; @@ -107,6 +108,12 @@ import { removeInstallation } from './remove'; export const UPLOAD_RETRY_AFTER_MS = 10000; // 10s const MAX_ENSURE_INSTALL_TIME = 60 * 1000; +const PACKAGES_TO_INSTALL_WITH_STREAMING = [ + // The security_detection_engine package contains a large number of assets and + // is not suitable for regular installation as it might cause OOM errors. + 'security_detection_engine', +]; + export async function isPackageInstalled(options: { savedObjectsClient: SavedObjectsClientContract; pkgName: string; @@ -449,6 +456,7 @@ async function installPackageFromRegistry({ // TODO: change epm API to /packageName/version so we don't need to do this const { pkgName, pkgVersion: version } = Registry.splitPkgKey(pkgkey); let pkgVersion = version ?? ''; + const useStreaming = PACKAGES_TO_INSTALL_WITH_STREAMING.includes(pkgName); // if an error happens during getInstallType, report that we don't know let installType: InstallType = 'unknown'; @@ -478,11 +486,12 @@ async function installPackageFromRegistry({ } // get latest package version and requested version in parallel for performance - const [latestPackage, { paths, packageInfo, assetsMap, verificationResult }] = + const [latestPackage, { paths, packageInfo, assetsMap, archiveIterator, verificationResult }] = await Promise.all([ latestPkg ? Promise.resolve(latestPkg) : queryLatest(), Registry.getPackage(pkgName, pkgVersion, { ignoreUnverified: force && !neverIgnoreVerificationError, + useStreaming, }), ]); @@ -490,6 +499,7 @@ async function installPackageFromRegistry({ packageInfo, assetsMap, paths, + archiveIterator, }; // let the user install if using the force flag or needing to reinstall or install a previous version due to failed update @@ -542,6 +552,7 @@ async function installPackageFromRegistry({ ignoreMappingUpdateErrors, skipDataStreamRollover, retryFromLastState, + useStreaming, }); } catch (e) { sendEvent({ @@ -580,6 +591,7 @@ async function installPackageWithStateMachine(options: { ignoreMappingUpdateErrors?: boolean; skipDataStreamRollover?: boolean; retryFromLastState?: boolean; + useStreaming?: boolean; }): Promise { const packageInfo = options.packageInstallContext.packageInfo; @@ -599,6 +611,7 @@ async function installPackageWithStateMachine(options: { skipDataStreamRollover, packageInstallContext, retryFromLastState, + useStreaming, } = options; let { telemetryEvent } = options; const logger = appContextService.getLogger(); @@ -696,6 +709,7 @@ async function installPackageWithStateMachine(options: { ignoreMappingUpdateErrors, skipDataStreamRollover, retryFromLastState, + useStreaming, }) .then(async (assets) => { logger.debug(`Removing old assets from previous versions of ${pkgName}`); @@ -785,6 +799,7 @@ async function installPackageByUpload({ } const { packageInfo } = await generatePackageInfoFromArchiveBuffer(archiveBuffer, contentType); const pkgName = packageInfo.name; + const useStreaming = PACKAGES_TO_INSTALL_WITH_STREAMING.includes(pkgName); // Allow for overriding the version in the manifest for cases where we install // stack-aligned bundled packages to support special cases around the @@ -807,17 +822,17 @@ async function installPackageByUpload({ packageInfo, }); - const { assetsMap, paths } = await unpackBufferToAssetsMap({ - name: packageInfo.name, - version: pkgVersion, + const { paths, assetsMap, archiveIterator } = await unpackBufferToAssetsMap({ archiveBuffer, contentType, + useStreaming, }); const packageInstallContext: PackageInstallContext = { packageInfo: { ...packageInfo, version: pkgVersion }, assetsMap, paths, + archiveIterator, }; // update the timestamp of latest installation setLastUploadInstallCache(); @@ -837,6 +852,7 @@ async function installPackageByUpload({ authorizationHeader, ignoreMappingUpdateErrors, skipDataStreamRollover, + useStreaming, }); } catch (e) { return { @@ -1004,12 +1020,14 @@ export async function installCustomPackage( acc.set(asset.path, asset.content); return acc; }, new Map()); - const paths = [...assetsMap.keys()]; + const paths = assets.map((asset) => asset.path); + const archiveIterator = createArchiveIteratorFromMap(assetsMap); const packageInstallContext: PackageInstallContext = { assetsMap, paths, packageInfo, + archiveIterator, }; return await installPackageWithStateMachine({ packageInstallContext, @@ -1341,16 +1359,20 @@ export async function installAssetsForInputPackagePolicy(opts: { ignoreUnverified: force, }); + const archiveIterator = createArchiveIteratorFromMap(pkg.assetsMap); packageInstallContext = { assetsMap: pkg.assetsMap, packageInfo: pkg.packageInfo, paths: pkg.paths, + archiveIterator, }; } else { + const archiveIterator = createArchiveIteratorFromMap(installedPkgWithAssets.assetsMap); packageInstallContext = { assetsMap: installedPkgWithAssets.assetsMap, packageInfo: installedPkgWithAssets.packageInfo, paths: installedPkgWithAssets.paths, + archiveIterator, }; } diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/_state_machine_package_install.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/_state_machine_package_install.test.ts index 174076a9e9b1b..73b78a6cc4aa0 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/_state_machine_package_install.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/_state_machine_package_install.test.ts @@ -38,6 +38,8 @@ import { updateCurrentWriteIndices } from '../../elasticsearch/template/template import { installIndexTemplatesAndPipelines } from '../install_index_template_pipeline'; +import { createArchiveIteratorFromMap } from '../../archive/archive_iterator'; + import { handleState } from './state_machine'; import { _stateMachineInstallPackage } from './_state_machine_package_install'; import { cleanupLatestExecutedState } from './steps'; @@ -110,6 +112,7 @@ describe('_stateMachineInstallPackage', () => { logger: loggerMock.create(), packageInstallContext: { assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], packageInfo: { title: 'title', @@ -172,6 +175,7 @@ describe('_stateMachineInstallPackage', () => { logger: loggerMock.create(), packageInstallContext: { assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], packageInfo: { title: 'title', @@ -208,6 +212,7 @@ describe('_stateMachineInstallPackage', () => { logger: loggerMock.create(), packageInstallContext: { assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], packageInfo: { title: 'title', @@ -257,6 +262,7 @@ describe('_stateMachineInstallPackage', () => { logger: loggerMock.create(), packageInstallContext: { assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], packageInfo: { title: 'title', @@ -336,6 +342,7 @@ describe('_stateMachineInstallPackage', () => { owner: { github: 'elastic/fleet' }, } as any, assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], }, installType: 'install', diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/_state_machine_package_install.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/_state_machine_package_install.ts index 1f10d40feba38..c941b6d60d63b 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/_state_machine_package_install.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/_state_machine_package_install.ts @@ -48,11 +48,13 @@ import { updateLatestExecutedState, cleanupLatestExecutedState, cleanUpKibanaAssetsStep, + cleanUpUnusedKibanaAssetsStep, cleanupILMPoliciesStep, cleanUpMlModelStep, cleanupIndexTemplatePipelinesStep, cleanupTransformsStep, cleanupArchiveEntriesStep, + stepInstallKibanaAssetsWithStreaming, } from './steps'; import type { StateMachineDefinition, StateMachineStates } from './state_machine'; import { handleState } from './state_machine'; @@ -73,6 +75,7 @@ export interface InstallContext extends StateContext { skipDataStreamRollover?: boolean; retryFromLastState?: boolean; initialState?: INSTALL_STATES; + useStreaming?: boolean; indexTemplates?: IndexTemplateEntry[]; packageAssetRefs?: PackageAssetReference[]; @@ -83,7 +86,7 @@ export interface InstallContext extends StateContext { /** * This data structure defines the sequence of the states and the transitions */ -const statesDefinition: StateMachineStates = { +const regularStatesDefinition: StateMachineStates = { create_restart_installation: { nextState: INSTALL_STATES.INSTALL_KIBANA_ASSETS, onTransition: stepCreateRestartInstallation, @@ -152,6 +155,31 @@ const statesDefinition: StateMachineStates = { }, }; +const streamingStatesDefinition: StateMachineStates = { + create_restart_installation: { + nextState: INSTALL_STATES.INSTALL_KIBANA_ASSETS, + onTransition: stepCreateRestartInstallation, + onPostTransition: updateLatestExecutedState, + }, + install_kibana_assets: { + onTransition: stepInstallKibanaAssetsWithStreaming, + nextState: INSTALL_STATES.SAVE_ARCHIVE_ENTRIES, + onPostTransition: updateLatestExecutedState, + }, + save_archive_entries_from_assets_map: { + onPreTransition: cleanupArchiveEntriesStep, + onTransition: stepSaveArchiveEntries, + nextState: INSTALL_STATES.UPDATE_SO, + onPostTransition: updateLatestExecutedState, + }, + update_so: { + onPreTransition: cleanUpUnusedKibanaAssetsStep, + onTransition: stepSaveSystemObject, + nextState: 'end', + onPostTransition: updateLatestExecutedState, + }, +}; + /* * _stateMachineInstallPackage installs packages using the generic state machine in ./state_machine * installStates is the data structure providing the state machine definition @@ -166,6 +194,10 @@ export async function _stateMachineInstallPackage( const logger = appContextService.getLogger(); let initialState = INSTALL_STATES.CREATE_RESTART_INSTALLATION; + const statesDefinition = context.useStreaming + ? streamingStatesDefinition + : regularStatesDefinition; + // if retryFromLastState, restart install from last install state // if force is passed, the install should be executed from the beginning if (retryFromLastState && !force && installedPkg?.attributes?.latest_executed_state?.name) { diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_create_restart_installation.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_create_restart_installation.test.ts index 2b653728d6574..e5a7fed55fe87 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_create_restart_installation.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_create_restart_installation.test.ts @@ -31,6 +31,8 @@ import { auditLoggingService } from '../../../../audit_logging'; import { restartInstallation, createInstallation } from '../../install'; import type { Installation } from '../../../../../../common'; +import { createArchiveIteratorFromMap } from '../../../archive/archive_iterator'; + import { stepCreateRestartInstallation } from './step_create_restart_installation'; jest.mock('../../../../audit_logging'); @@ -84,6 +86,7 @@ describe('stepCreateRestartInstallation', () => { logger, packageInstallContext: { assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], packageInfo: { title: 'title', @@ -120,6 +123,7 @@ describe('stepCreateRestartInstallation', () => { logger, packageInstallContext: { assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], packageInfo: { title: 'title', @@ -164,6 +168,7 @@ describe('stepCreateRestartInstallation', () => { logger, packageInstallContext: { assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], packageInfo: { title: 'title', @@ -208,6 +213,7 @@ describe('stepCreateRestartInstallation', () => { logger, packageInstallContext: { assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], packageInfo: { title: 'title', diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_delete_previous_pipelines.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_delete_previous_pipelines.test.ts index 7d8a251433bb5..06201770ee2e2 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_delete_previous_pipelines.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_delete_previous_pipelines.test.ts @@ -24,6 +24,8 @@ import { deletePreviousPipelines, } from '../../../elasticsearch/ingest_pipeline'; +import { createArchiveIteratorFromMap } from '../../../archive/archive_iterator'; + import { stepDeletePreviousPipelines } from './step_delete_previous_pipelines'; jest.mock('../../../elasticsearch/ingest_pipeline'); @@ -84,6 +86,7 @@ describe('stepDeletePreviousPipelines', () => { owner: { github: 'elastic/fleet' }, } as any, assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], }; appContextService.start( @@ -276,6 +279,7 @@ describe('stepDeletePreviousPipelines', () => { owner: { github: 'elastic/fleet' }, } as any, assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], }; appContextService.start( diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_ilm_policies.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_ilm_policies.test.ts index 2cf9b23bb9adb..4c106a0c68f15 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_ilm_policies.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_ilm_policies.test.ts @@ -24,6 +24,8 @@ import { installIlmForDataStream } from '../../../elasticsearch/datastream_ilm/i import { ElasticsearchAssetType } from '../../../../../types'; import { deleteILMPolicies, deletePrerequisiteAssets } from '../../remove'; +import { createArchiveIteratorFromMap } from '../../../archive/archive_iterator'; + import { stepInstallILMPolicies, cleanupILMPoliciesStep } from './step_install_ilm_policies'; jest.mock('../../../archive/storage'); @@ -56,6 +58,7 @@ const packageInstallContext = { owner: { github: 'elastic/fleet' }, } as any, assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], }; let soClient: jest.Mocked; @@ -239,6 +242,7 @@ describe('stepInstallILMPolicies', () => { owner: { github: 'elastic/fleet' }, } as any, assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], }, installType: 'install', diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_index_template_pipelines.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_index_template_pipelines.test.ts index d258747edc6ef..1c368cfd998d3 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_index_template_pipelines.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_index_template_pipelines.test.ts @@ -37,6 +37,8 @@ const mockDeletePrerequisiteAssets = deletePrerequisiteAssets as jest.MockedFunc typeof deletePrerequisiteAssets >; +import { createArchiveIteratorFromMap } from '../../../archive/archive_iterator'; + import { stepInstallIndexTemplatePipelines, cleanupIndexTemplatePipelinesStep, @@ -122,6 +124,7 @@ describe('stepInstallIndexTemplatePipelines', () => { owner: { github: 'elastic/fleet' }, } as any, assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], }; appContextService.start( @@ -281,6 +284,7 @@ describe('stepInstallIndexTemplatePipelines', () => { ], } as any, assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], }; appContextService.start( @@ -431,6 +435,7 @@ describe('stepInstallIndexTemplatePipelines', () => { ], } as any, assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], }; appContextService.start( @@ -521,6 +526,7 @@ describe('stepInstallIndexTemplatePipelines', () => { ], } as any, assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], }; appContextService.start( @@ -574,6 +580,7 @@ describe('stepInstallIndexTemplatePipelines', () => { owner: { github: 'elastic/fleet' }, } as any, assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], }; appContextService.start( @@ -647,6 +654,7 @@ describe('cleanupIndexTemplatePipelinesStep', () => { ], } as any, assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], }; const mockInstalledPackageSo: SavedObject = { diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_kibana_assets.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_kibana_assets.test.ts index 52c93c61c16e1..cf9d953868b6a 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_kibana_assets.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_kibana_assets.test.ts @@ -23,8 +23,25 @@ import { deleteKibanaAssets } from '../../remove'; import { KibanaSavedObjectType, type Installation } from '../../../../../types'; -import { stepInstallKibanaAssets, cleanUpKibanaAssetsStep } from './step_install_kibana_assets'; +import { createArchiveIteratorFromMap } from '../../../archive/archive_iterator'; +import { + stepInstallKibanaAssets, + cleanUpKibanaAssetsStep, + stepInstallKibanaAssetsWithStreaming, + cleanUpUnusedKibanaAssetsStep, +} from './step_install_kibana_assets'; + +jest.mock('../../../kibana/assets/saved_objects', () => { + return { + getSpaceAwareSaveobjectsClients: jest.fn().mockReturnValue({ + savedObjectClientWithSpace: jest.fn(), + savedObjectsImporter: jest.fn(), + savedObjectTagAssignmentService: jest.fn(), + savedObjectTagClient: jest.fn(), + }), + }; +}); jest.mock('../../../kibana/assets/install'); jest.mock('../../remove', () => { return { @@ -58,6 +75,7 @@ const packageInstallContext = { } as any, paths: ['some/path/1', 'some/path/2'], assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), }; describe('stepInstallKibanaAssets', () => { @@ -82,6 +100,7 @@ describe('stepInstallKibanaAssets', () => { logger: loggerMock.create(), packageInstallContext: { assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], packageInfo: { title: 'title', @@ -102,7 +121,7 @@ describe('stepInstallKibanaAssets', () => { }); await expect(installationPromise).resolves.not.toThrowError(); - expect(mockedInstallKibanaAssetsAndReferencesMultispace).toBeCalledTimes(1); + expect(installKibanaAssetsAndReferencesMultispace).toBeCalledTimes(1); }); esClient = elasticsearchServiceMock.createClusterClient().asInternalUser; appContextService.start(createAppContextStartContractMock()); @@ -121,6 +140,7 @@ describe('stepInstallKibanaAssets', () => { logger: loggerMock.create(), packageInstallContext: { assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], packageInfo: { title: 'title', @@ -144,6 +164,60 @@ describe('stepInstallKibanaAssets', () => { }); }); +describe('stepInstallKibanaAssetsWithStreaming', () => { + beforeEach(async () => { + soClient = savedObjectsClientMock.create(); + esClient = elasticsearchServiceMock.createClusterClient().asInternalUser; + appContextService.start(createAppContextStartContractMock()); + }); + + it('should rely on archiveIterator instead of in-memory assetsMap', async () => { + const assetsMap = new Map(); + assetsMap.get = jest.fn(); + assetsMap.set = jest.fn(); + + const archiveIterator = { + traverseEntries: jest.fn(), + getPaths: jest.fn(), + }; + + const result = await stepInstallKibanaAssetsWithStreaming({ + savedObjectsClient: soClient, + esClient, + logger: loggerMock.create(), + packageInstallContext: { + assetsMap, + archiveIterator, + paths: [], + packageInfo: { + title: 'title', + name: 'xyz', + version: '4.5.6', + description: 'test', + type: 'integration', + categories: ['cloud', 'custom'], + format_version: 'string', + release: 'experimental', + conditions: { kibana: { version: 'x.y.z' } }, + owner: { github: 'elastic/fleet' }, + }, + }, + installType: 'install', + installSource: 'registry', + spaceId: DEFAULT_SPACE_ID, + }); + + expect(result).toEqual({ installedKibanaAssetsRefs: [] }); + + // Verify that assetsMap was not used + expect(assetsMap.get).not.toBeCalled(); + expect(assetsMap.set).not.toBeCalled(); + + // Verify that archiveIterator was used + expect(archiveIterator.traverseEntries).toBeCalled(); + }); +}); + describe('cleanUpKibanaAssetsStep', () => { const mockInstalledPackageSo: SavedObject = { id: 'mocked-package', @@ -302,3 +376,84 @@ describe('cleanUpKibanaAssetsStep', () => { expect(mockedDeleteKibanaAssets).not.toBeCalled(); }); }); + +describe('cleanUpUnusedKibanaAssetsStep', () => { + const mockInstalledPackageSo: SavedObject = { + id: 'mocked-package', + attributes: { + name: 'test-package', + version: '1.0.0', + install_status: 'installing', + install_version: '1.0.0', + install_started_at: new Date().toISOString(), + install_source: 'registry', + verification_status: 'verified', + installed_kibana: [] as any, + installed_es: [] as any, + es_index_patterns: {}, + }, + type: PACKAGES_SAVED_OBJECT_TYPE, + references: [], + }; + + const installationContext = { + savedObjectsClient: soClient, + savedObjectsImporter: jest.fn(), + esClient, + logger: loggerMock.create(), + packageInstallContext, + installType: 'install' as const, + installSource: 'registry' as const, + spaceId: DEFAULT_SPACE_ID, + retryFromLastState: true, + initialState: 'install_kibana_assets' as any, + }; + + beforeEach(async () => { + soClient = savedObjectsClientMock.create(); + esClient = elasticsearchServiceMock.createClusterClient().asInternalUser; + appContextService.start(createAppContextStartContractMock()); + }); + + it('should not clean up assets if they all present in the new package', async () => { + const installedAssets = [{ type: KibanaSavedObjectType.dashboard, id: 'dashboard-1' }]; + await cleanUpUnusedKibanaAssetsStep({ + ...installationContext, + installedPkg: { + ...mockInstalledPackageSo, + attributes: { + ...mockInstalledPackageSo.attributes, + installed_kibana: installedAssets, + }, + }, + installedKibanaAssetsRefs: installedAssets, + }); + + expect(mockedDeleteKibanaAssets).not.toBeCalled(); + }); + + it('should clean up assets that are not present in the new package', async () => { + const installedAssets = [ + { type: KibanaSavedObjectType.dashboard, id: 'dashboard-1' }, + { type: KibanaSavedObjectType.dashboard, id: 'dashboard-2' }, + ]; + const newAssets = [{ type: KibanaSavedObjectType.dashboard, id: 'dashboard-1' }]; + await cleanUpUnusedKibanaAssetsStep({ + ...installationContext, + installedPkg: { + ...mockInstalledPackageSo, + attributes: { + ...mockInstalledPackageSo.attributes, + installed_kibana: installedAssets, + }, + }, + installedKibanaAssetsRefs: newAssets, + }); + + expect(mockedDeleteKibanaAssets).toBeCalledWith({ + installedObjects: [installedAssets[1]], + spaceId: 'default', + packageInfo: packageInstallContext.packageInfo, + }); + }); +}); diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_kibana_assets.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_kibana_assets.ts index b5a1fff91d3b8..aabd23f2eb9cc 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_kibana_assets.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_kibana_assets.ts @@ -11,7 +11,9 @@ import { withPackageSpan } from '../../utils'; import type { InstallContext } from '../_state_machine_package_install'; import { deleteKibanaAssets } from '../../remove'; +import type { KibanaAssetReference } from '../../../../../../common/types'; import { INSTALL_STATES } from '../../../../../../common/types'; +import { installKibanaAssetsWithStreaming } from '../../../kibana/assets/install_with_streaming'; export async function stepInstallKibanaAssets(context: InstallContext) { const { savedObjectsClient, logger, installedPkg, packageInstallContext, spaceId } = context; @@ -37,6 +39,26 @@ export async function stepInstallKibanaAssets(context: InstallContext) { return { kibanaAssetPromise }; } +export async function stepInstallKibanaAssetsWithStreaming(context: InstallContext) { + const { savedObjectsClient, installedPkg, packageInstallContext, spaceId } = context; + const { packageInfo } = packageInstallContext; + const { name: pkgName } = packageInfo; + + const installedKibanaAssetsRefs = await withPackageSpan( + 'Install Kibana assets with streaming', + () => + installKibanaAssetsWithStreaming({ + savedObjectsClient, + pkgName, + packageInstallContext, + installedPkg, + spaceId, + }) + ); + + return { installedKibanaAssetsRefs }; +} + export async function cleanUpKibanaAssetsStep(context: InstallContext) { const { logger, @@ -65,3 +87,44 @@ export async function cleanUpKibanaAssetsStep(context: InstallContext) { }); } } + +/** + * Cleans up Kibana assets that are no longer in the package. As opposite to + * `cleanUpKibanaAssetsStep`, this one is used after the package assets are + * installed. + * + * This function compares the currently installed Kibana assets with the assets + * in the previous package and removes any assets that are no longer present in the + * new installation. + * + */ +export async function cleanUpUnusedKibanaAssetsStep(context: InstallContext) { + const { logger, installedPkg, packageInstallContext, spaceId, installedKibanaAssetsRefs } = + context; + const { packageInfo } = packageInstallContext; + + if (!installedKibanaAssetsRefs) { + return; + } + + logger.debug('Clean up Kibana assets that are no longer in the package'); + + // Get the assets installed by the previous package + const previousAssetRefs = installedPkg?.attributes.installed_kibana ?? []; + + // Remove any assets that are not in the new package + const nextAssetRefKeys = new Set( + installedKibanaAssetsRefs.map((asset: KibanaAssetReference) => `${asset.id}-${asset.type}`) + ); + const assetsToRemove = previousAssetRefs.filter( + (existingAsset) => !nextAssetRefKeys.has(`${existingAsset.id}-${existingAsset.type}`) + ); + + if (assetsToRemove.length === 0) { + return; + } + + await withPackageSpan('Clean up Kibana assets that are no longer in the package', async () => { + await deleteKibanaAssets({ installedObjects: assetsToRemove, spaceId, packageInfo }); + }); +} diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_mlmodel.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_mlmodel.test.ts index 1afb436eb4361..df939f3a458b6 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_mlmodel.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_mlmodel.test.ts @@ -22,6 +22,8 @@ import { createAppContextStartContractMock } from '../../../../../mocks'; import { installMlModel } from '../../../elasticsearch/ml_model'; import { deleteMLModels, deletePrerequisiteAssets } from '../../remove'; +import { createArchiveIteratorFromMap } from '../../../archive/archive_iterator'; + import { stepInstallMlModel, cleanUpMlModelStep } from './step_install_mlmodel'; jest.mock('../../../elasticsearch/ml_model'); @@ -53,6 +55,7 @@ const packageInstallContext = { } as any, paths: ['some/path/1', 'some/path/2'], assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), }; let soClient: jest.Mocked; let esClient: jest.Mocked; diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_transforms.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_transforms.test.ts index 1ac2383950b05..3bf07d52c6cbf 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_transforms.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_transforms.test.ts @@ -22,6 +22,8 @@ import { createAppContextStartContractMock } from '../../../../../mocks'; import { installTransforms } from '../../../elasticsearch/transform/install'; import { cleanupTransforms } from '../../remove'; +import { createArchiveIteratorFromMap } from '../../../archive/archive_iterator'; + import { stepInstallTransforms, cleanupTransformsStep } from './step_install_transforms'; jest.mock('../../../elasticsearch/transform/install'); @@ -52,6 +54,7 @@ const packageInstallContext = { } as any, paths: ['some/path/1', 'some/path/2'], assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), }; describe('stepInstallTransforms', () => { diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_remove_legacy_templates.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_remove_legacy_templates.test.ts index 39e7159596ba8..7fa00a1c57f57 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_remove_legacy_templates.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_remove_legacy_templates.test.ts @@ -24,6 +24,8 @@ import { appContextService } from '../../../../app_context'; import { createAppContextStartContractMock } from '../../../../../mocks'; import { removeLegacyTemplates } from '../../../elasticsearch/template/remove_legacy'; +import { createArchiveIteratorFromMap } from '../../../archive/archive_iterator'; + import { stepRemoveLegacyTemplates } from './step_remove_legacy_templates'; jest.mock('../../../elasticsearch/template/remove_legacy'); @@ -82,6 +84,7 @@ describe('stepRemoveLegacyTemplates', () => { } as any, paths: ['some/path/1', 'some/path/2'], assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), }; appContextService.start( createAppContextStartContractMock({ diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_save_archive_entries.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_save_archive_entries.test.ts index b03c146640488..255572d57cf49 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_save_archive_entries.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_save_archive_entries.test.ts @@ -21,6 +21,8 @@ import { appContextService } from '../../../../app_context'; import { createAppContextStartContractMock } from '../../../../../mocks'; import { saveArchiveEntriesFromAssetsMap, removeArchiveEntries } from '../../../archive/storage'; +import { createArchiveIteratorFromMap } from '../../../archive/archive_iterator'; + import { stepSaveArchiveEntries, cleanupArchiveEntriesStep } from './step_save_archive_entries'; jest.mock('../../../archive/storage', () => { @@ -60,6 +62,7 @@ const packageInstallContext = { Buffer.from('{"content": "data"}'), ], ]), + archiveIterator: createArchiveIteratorFromMap(new Map()), }; const getMockInstalledPackageSo = ( installedEs: EsAssetReference[] = [] diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_save_archive_entries.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_save_archive_entries.ts index b0d5bb67627a6..7db44bb243f85 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_save_archive_entries.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_save_archive_entries.ts @@ -14,17 +14,32 @@ import { withPackageSpan } from '../../utils'; import type { InstallContext } from '../_state_machine_package_install'; import { INSTALL_STATES } from '../../../../../../common/types'; +import { MANIFEST_NAME } from '../../../archive/parse'; export async function stepSaveArchiveEntries(context: InstallContext) { - const { packageInstallContext, savedObjectsClient, installSource } = context; + const { packageInstallContext, savedObjectsClient, installSource, useStreaming } = context; - const { packageInfo } = packageInstallContext; + const { packageInfo, archiveIterator } = packageInstallContext; + + let assetsMap = packageInstallContext?.assetsMap; + let paths = packageInstallContext?.paths; + // For stream based installations, we don't want to save any assets but + // manifest.yaml due to the large number of assets in the package. + if (useStreaming) { + assetsMap = new Map(); + await archiveIterator.traverseEntries(async (entry) => { + if (entry.path.endsWith(MANIFEST_NAME)) { + assetsMap.set(entry.path, entry.buffer); + } + }); + paths = Array.from(assetsMap.keys()); + } const packageAssetResults = await withPackageSpan('Update archive entries', () => saveArchiveEntriesFromAssetsMap({ savedObjectsClient, - assetsMap: packageInstallContext?.assetsMap, - paths: packageInstallContext?.paths, + assetsMap, + paths, packageInfo, installSource, }) diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_save_system_object.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_save_system_object.test.ts index aecdd0b2552c4..8d80c236aefb0 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_save_system_object.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_save_system_object.test.ts @@ -21,6 +21,8 @@ import { createAppContextStartContractMock } from '../../../../../mocks'; import { auditLoggingService } from '../../../../audit_logging'; import { packagePolicyService } from '../../../../package_policy'; +import { createArchiveIteratorFromMap } from '../../../archive/archive_iterator'; + import { stepSaveSystemObject } from './step_save_system_object'; jest.mock('../../../../audit_logging'); @@ -67,6 +69,7 @@ describe('updateLatestExecutedState', () => { logger, packageInstallContext: { assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], packageInfo: { title: 'title', @@ -133,6 +136,7 @@ describe('updateLatestExecutedState', () => { logger, packageInstallContext: { assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], packageInfo: { title: 'title', diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_update_current_write_indices.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_update_current_write_indices.test.ts index c7f3c040b7966..017805d34efef 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_update_current_write_indices.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_update_current_write_indices.test.ts @@ -22,6 +22,8 @@ import { appContextService } from '../../../../app_context'; import { createAppContextStartContractMock } from '../../../../../mocks'; import { updateCurrentWriteIndices } from '../../../elasticsearch/template/template'; +import { createArchiveIteratorFromMap } from '../../../archive/archive_iterator'; + import { stepUpdateCurrentWriteIndices } from './step_update_current_write_indices'; jest.mock('../../../elasticsearch/template/template'); @@ -86,6 +88,7 @@ describe('stepUpdateCurrentWriteIndices', () => { } as any, paths: ['some/path/1', 'some/path/2'], assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), }; appContextService.start( createAppContextStartContractMock({ diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/update_latest_executed_state.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/update_latest_executed_state.test.ts index d963e5fea44c9..aea879aba5479 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/update_latest_executed_state.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/update_latest_executed_state.test.ts @@ -32,6 +32,8 @@ import { auditLoggingService } from '../../../../audit_logging'; import type { PackagePolicySOAttributes } from '../../../../../types'; +import { createArchiveIteratorFromMap } from '../../../archive/archive_iterator'; + import { updateLatestExecutedState } from './update_latest_executed_state'; jest.mock('../../../../audit_logging'); @@ -61,6 +63,7 @@ describe('updateLatestExecutedState', () => { logger, packageInstallContext: { assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], packageInfo: { title: 'title', @@ -116,6 +119,7 @@ describe('updateLatestExecutedState', () => { logger, packageInstallContext: { assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], packageInfo: { title: 'title', @@ -153,6 +157,7 @@ describe('updateLatestExecutedState', () => { logger, packageInstallContext: { assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], packageInfo: { title: 'title', @@ -198,6 +203,7 @@ describe('updateLatestExecutedState', () => { logger, packageInstallContext: { assetsMap: new Map(), + archiveIterator: createArchiveIteratorFromMap(new Map()), paths: [], packageInfo: { title: 'title', diff --git a/x-pack/plugins/fleet/server/services/epm/packages/remove.ts b/x-pack/plugins/fleet/server/services/epm/packages/remove.ts index ac3f5def5d09c..3892eaa951e5f 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/remove.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/remove.ts @@ -148,6 +148,7 @@ export async function deleteKibanaAssets({ const namespace = SavedObjectsUtils.namespaceStringToId(spaceId); + // TODO this should be the installed package info, not the package that is being installed const minKibana = packageInfo.conditions?.kibana?.version ? minVersion(packageInfo.conditions.kibana.version) : null; diff --git a/x-pack/plugins/fleet/server/services/epm/registry/index.ts b/x-pack/plugins/fleet/server/services/epm/registry/index.ts index bb4d612aa7de3..75b9869d0a7c6 100644 --- a/x-pack/plugins/fleet/server/services/epm/registry/index.ts +++ b/x-pack/plugins/fleet/server/services/epm/registry/index.ts @@ -54,6 +54,8 @@ import { resolveDataStreamFields, resolveDataStreamsMap, withPackageSpan } from import { verifyPackageArchiveSignature } from '../packages/package_verification'; +import type { ArchiveIterator } from '../../../../common/types'; + import { fetchUrl, getResponse, getResponseStream } from './requests'; import { getRegistryUrl } from './registry_url'; @@ -309,11 +311,12 @@ async function getPackageInfoFromArchiveOrCache( export async function getPackage( name: string, version: string, - options?: { ignoreUnverified?: boolean } + options?: { ignoreUnverified?: boolean; useStreaming?: boolean } ): Promise<{ paths: string[]; packageInfo: ArchivePackage; assetsMap: AssetsMap; + archiveIterator: ArchiveIterator; verificationResult?: PackageVerificationResult; }> { const verifyPackage = appContextService.getExperimentalFeatures().packageVerification; @@ -340,18 +343,18 @@ export async function getPackage( setVerificationResult({ name, version }, latestVerificationResult); } - const { assetsMap, paths } = await unpackBufferToAssetsMap({ - name, - version, + const contentType = ensureContentType(archivePath); + const { paths, assetsMap, archiveIterator } = await unpackBufferToAssetsMap({ archiveBuffer, - contentType: ensureContentType(archivePath), + contentType, + useStreaming: options?.useStreaming, }); if (!packageInfo) { packageInfo = await getPackageInfoFromArchiveOrCache(name, version, archiveBuffer, archivePath); } - return { paths, packageInfo, assetsMap, verificationResult }; + return { paths, packageInfo, assetsMap, archiveIterator, verificationResult }; } export async function getPackageFieldsMetadata( @@ -397,7 +400,7 @@ export async function getPackageFieldsMetadata( } } -function ensureContentType(archivePath: string) { +export function ensureContentType(archivePath: string) { const contentType = mime.lookup(archivePath); if (!contentType) { diff --git a/x-pack/plugins/fleet/server/services/package_policies/experimental_datastream_features.ts b/x-pack/plugins/fleet/server/services/package_policies/experimental_datastream_features.ts index edf31991634b9..cd1c26942aa0c 100644 --- a/x-pack/plugins/fleet/server/services/package_policies/experimental_datastream_features.ts +++ b/x-pack/plugins/fleet/server/services/package_policies/experimental_datastream_features.ts @@ -30,6 +30,7 @@ import { applyDocOnlyValueToMapping, forEachMappings, } from '../experimental_datastream_features_helper'; +import { createArchiveIteratorFromMap } from '../epm/archive/archive_iterator'; export async function handleExperimentalDatastreamFeatureOptIn({ soClient, @@ -75,6 +76,7 @@ export async function handleExperimentalDatastreamFeatureOptIn({ return prepareTemplate({ packageInstallContext: { assetsMap, + archiveIterator: createArchiveIteratorFromMap(assetsMap), packageInfo, paths, }, diff --git a/x-pack/test/fleet_api_integration/apis/epm/index.js b/x-pack/test/fleet_api_integration/apis/epm/index.js index 3caed7da79f65..cae50abdae762 100644 --- a/x-pack/test/fleet_api_integration/apis/epm/index.js +++ b/x-pack/test/fleet_api_integration/apis/epm/index.js @@ -31,6 +31,7 @@ export default function loadTests({ loadTestFile, getService }) { loadTestFile(require.resolve('./install_update')); loadTestFile(require.resolve('./install_tsds_disable')); loadTestFile(require.resolve('./install_tag_assets')); + loadTestFile(require.resolve('./install_with_streaming')); loadTestFile(require.resolve('./bulk_upgrade')); loadTestFile(require.resolve('./bulk_install')); loadTestFile(require.resolve('./update_assets')); diff --git a/x-pack/test/fleet_api_integration/apis/epm/install_by_upload.ts b/x-pack/test/fleet_api_integration/apis/epm/install_by_upload.ts index e6fa2930cf84d..e32328b4e22cc 100644 --- a/x-pack/test/fleet_api_integration/apis/epm/install_by_upload.ts +++ b/x-pack/test/fleet_api_integration/apis/epm/install_by_upload.ts @@ -195,7 +195,7 @@ export default function (providerContext: FtrProviderContext) { .send(buf) .expect(400); expect((res.error as HTTPError).text).to.equal( - '{"statusCode":400,"error":"Bad Request","message":"Archive seems empty. Assumed content type was application/gzip, check if this matches the archive type."}' + '{"statusCode":400,"error":"Bad Request","message":"Manifest file manifest.yml not found in paths."}' ); }); diff --git a/x-pack/test/fleet_api_integration/apis/epm/install_with_streaming.ts b/x-pack/test/fleet_api_integration/apis/epm/install_with_streaming.ts new file mode 100644 index 0000000000000..152e3dfd4c69d --- /dev/null +++ b/x-pack/test/fleet_api_integration/apis/epm/install_with_streaming.ts @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { Client } from '@elastic/elasticsearch'; +import { INGEST_SAVED_OBJECT_INDEX } from '@kbn/core-saved-objects-server'; +import { Installation } from '@kbn/fleet-plugin/server/types'; +import expect from 'expect'; +import { FtrProviderContext } from '../../../api_integration/ftr_provider_context'; +import { skipIfNoDockerRegistry, isDockerRegistryEnabledOrSkipped } from '../../helpers'; + +export default function (providerContext: FtrProviderContext) { + const { getService } = providerContext; + const es: Client = getService('es'); + const supertest = getService('supertest'); + const fleetAndAgents = getService('fleetAndAgents'); + + const uninstallPackage = async (pkg: string, version: string) => { + await supertest.delete(`/api/fleet/epm/packages/${pkg}/${version}`).set('kbn-xsrf', 'xxxx'); + }; + const installPackage = (pkg: string, version: string, opts?: { force?: boolean }) => { + return supertest + .post(`/api/fleet/epm/packages/${pkg}/${version}`) + .set('kbn-xsrf', 'xxxx') + .send({ force: !!opts?.force }); + }; + + const getInstallationSavedObject = async (pkg: string): Promise => { + const res: { _source?: { 'epm-packages': Installation } } = await es.transport.request({ + method: 'GET', + path: `/${INGEST_SAVED_OBJECT_INDEX}/_doc/epm-packages:${pkg}`, + }); + + return res?._source?.['epm-packages'] as Installation; + }; + + describe('Installs a package using stream-based approach', () => { + skipIfNoDockerRegistry(providerContext); + + before(async () => { + await fleetAndAgents.setup(); + }); + + describe('security_detection_engine package', () => { + after(async () => { + if (!isDockerRegistryEnabledOrSkipped(providerContext)) return; + await uninstallPackage('security_detection_engine', '8.16.0'); + }); + it('should install security-rule assets from the package', async () => { + await installPackage('security_detection_engine', '8.16.0').expect(200); + const installationSO = await getInstallationSavedObject('security_detection_engine'); + expect(installationSO?.installed_kibana).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: expect.any(String), + type: 'security-rule', + }), + ]) + ); + }); + }); + }); +} diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/security_detection_engine/security_detection_engine-8.16.0.zip b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/security_detection_engine/security_detection_engine-8.16.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..b57713203546d8eb9b6f5c32f49c72d9bb6388ac GIT binary patch literal 63220 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 literal 0 HcmV?d00001 From 03cd302aa2bd6c69db62bb1c7e1093d917fbcf19 Mon Sep 17 00:00:00 2001 From: Rudolf Meijering Date: Tue, 5 Nov 2024 13:12:15 +0100 Subject: [PATCH 27/57] Don't shutdown server until we're done with the starting phase (#198794) ## Summary Fixes https://github.com/elastic/kibana/issues/158318 ### Checklist Delete any items that are not applicable to this PR. - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [ ] Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/)) - [ ] Any UI touched in this PR does not create any new axe failures (run axe in browser: [FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/), [Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US)) - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server)) - [ ] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) ### Risk Matrix Delete this section if it is not applicable to this PR. Before closing this PR, invite QA, stakeholders, and other developers to identify risks that should be tested prior to the change/feature release. When forming the risk matrix, consider some of the following examples and how they may potentially impact the change: | Risk | Probability | Severity | Mitigation/Notes | |---------------------------|-------------|----------|-------------------------| | Multiple Spaces—unexpected behavior in non-default Kibana Space. | Low | High | Integration tests will verify that all features are still supported in non-default Kibana Space and when user switches between spaces. | | Multiple nodes—Elasticsearch polling might have race conditions when multiple Kibana nodes are polling for the same tasks. | High | Low | Tasks are idempotent, so executing them multiple times will not result in logical error, but will degrade performance. To test for this case we add plenty of unit tests around this logic and document manual testing procedure. | | Code should gracefully handle cases when feature X or plugin Y are disabled. | Medium | High | Unit tests will verify that any feature flag or plugin combination still results in our service operational. | | [See more potential risk examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) | ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#_add_your_labels) - [ ] This will appear in the **Release Notes** and follow the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --- .../group3/incompatible_cluster_routing_allocation.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/server/integration_tests/saved_objects/migrations/group3/incompatible_cluster_routing_allocation.test.ts b/src/core/server/integration_tests/saved_objects/migrations/group3/incompatible_cluster_routing_allocation.test.ts index 56488f571ef16..8213c880c0fa4 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/group3/incompatible_cluster_routing_allocation.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/group3/incompatible_cluster_routing_allocation.test.ts @@ -121,7 +121,7 @@ describe('incompatible_cluster_routing_allocation', () => { await root.preboot(); await root.setup(); - root.start().catch(() => { + const startPromise = root.start().catch(() => { // Silent catch because the test might be done and call shutdown before starting is completed, causing unwanted thrown errors. }); @@ -165,6 +165,7 @@ describe('incompatible_cluster_routing_allocation', () => { { retryAttempts: 100, retryDelayMs: 500 } ); + await startPromise; // Wait for start phase to complete before shutting down await root.shutdown(); }); }); From f8c01d41d2dc6c4c4d096c485b48dc7decafd873 Mon Sep 17 00:00:00 2001 From: Bena Kansara <69037875+benakansara@users.noreply.github.com> Date: Tue, 5 Nov 2024 13:57:32 +0100 Subject: [PATCH 28/57] [Observability] [Alerts table] Fix cannot display alerts error (#198914) Resolves https://github.com/elastic/kibana/issues/198912 ### Testing - Create ES query rule in Observability - Open Alert flyout of the ES query alert - Verify that Alert flyout opens as expected --- .../alert_overview/helpers/map_rules_params_with_flyout.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.ts b/x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.ts index b5819631406d7..e9e8714bf85b9 100644 --- a/x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.ts +++ b/x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.ts @@ -286,7 +286,7 @@ export const mapRuleParamsWithFlyout = (alert: TopAlert): FlyoutThresholdData[] const { thresholdComparator, threshold } = ruleParams as EsQueryRuleParams; const ESQueryFlyoutMap = { observedValue: [alert.fields[ALERT_EVALUATION_VALUE]], - threshold: threshold.join(' AND '), + threshold: [threshold].flat().join(' AND '), comparator: thresholdComparator, pctAboveThreshold: getPctAboveThreshold( threshold, From 43daa7ee074367a546476515a9772b3ed12121a1 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 07:42:04 -0600 Subject: [PATCH 29/57] Update dependency @redocly/cli to ^1.25.8 (main) (#197990) Co-authored-by: elastic-renovate-prod[bot] <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 17e873a89c7be..3c9b1ce349e72 100644 --- a/package.json +++ b/package.json @@ -1497,7 +1497,7 @@ "@octokit/rest": "^17.11.2", "@parcel/watcher": "^2.1.0", "@playwright/test": "=1.46.0", - "@redocly/cli": "^1.25.7", + "@redocly/cli": "^1.25.8", "@statoscope/webpack-plugin": "^5.28.2", "@storybook/addon-a11y": "^6.5.16", "@storybook/addon-actions": "^6.5.16", diff --git a/yarn.lock b/yarn.lock index cbd5dd93a43fd..b45ae5029381d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8481,7 +8481,7 @@ require-from-string "^2.0.2" uri-js-replace "^1.0.1" -"@redocly/cli@^1.25.7": +"@redocly/cli@^1.25.8": version "1.25.8" resolved "https://registry.yarnpkg.com/@redocly/cli/-/cli-1.25.8.tgz#fecd62d9ee1d564e6f0e1522f2c5648f514ce02b" integrity sha512-oVFN3rpGFqupx57ZS0mF2B8grnk3i0xjTQrrMm1oftF3GEf7yTg5JzwnWi8KKRWuxin4qI7j+Id5AKgNQNmTKA== From d312358b4b84838596327c531642d8bdbc6b73b9 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 07:55:02 -0600 Subject: [PATCH 30/57] Update dependency elastic-apm-node to ^4.8.1 (main) (#198847) Co-authored-by: elastic-renovate-prod[bot] <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 3c9b1ce349e72..bcfd46a89ded2 100644 --- a/package.json +++ b/package.json @@ -1111,7 +1111,7 @@ "del": "^6.1.0", "diff": "^5.1.0", "dotenv": "^16.4.5", - "elastic-apm-node": "^4.8.0", + "elastic-apm-node": "^4.8.1", "email-addresses": "^5.0.0", "eventsource-parser": "^1.1.1", "execa": "^5.1.1", diff --git a/yarn.lock b/yarn.lock index b45ae5029381d..91ce62a67d991 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16693,10 +16693,10 @@ elastic-apm-node@3.46.0: traverse "^0.6.6" unicode-byte-truncate "^1.0.0" -elastic-apm-node@^4.8.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/elastic-apm-node/-/elastic-apm-node-4.8.0.tgz#10d17c3bbd127b8bab9cb264750936a81b4339ad" - integrity sha512-XEfkWWQlIyv72QTCgScFzXWYM2znm/mA+6I8e2DMmr3lBdwemOTxBZw9jExu4OQ2uMc+Ld8wc5bbikkAYp4nng== +elastic-apm-node@^4.8.1: + version "4.8.1" + resolved "https://registry.yarnpkg.com/elastic-apm-node/-/elastic-apm-node-4.8.1.tgz#b0ff8e04d7109c64b98608de73936c8740849f60" + integrity sha512-gryl5pJWd9Cp7qK+McHIFm9VlsqKipoXWIsKOGyPGzrddIVKKA8ONnLBwymQ1A2x4uXuk1HnIVwBvyk56vukaw== dependencies: "@elastic/ecs-pino-format" "^1.5.0" "@opentelemetry/api" "^1.4.1" From 83026f485cac79f93375e34310f633faa141fe9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loix?= Date: Tue, 5 Nov 2024 13:55:44 +0000 Subject: [PATCH 31/57] [Spaces solution tour] Fix functional test (#198928) --- .../solution_view_flag_enabled/solution_tour.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/solution_tour.ts b/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/solution_tour.ts index 7b058aa36ba92..ac8281f45a56e 100644 --- a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/solution_tour.ts +++ b/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/solution_tour.ts @@ -17,10 +17,20 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const browser = getService('browser'); const es = getService('es'); const log = getService('log'); + const retry = getService('retry'); describe('space solution tour', () => { let version: string | undefined; + const getGlobalSettings = async () => { + const doc = await es.get( + { id: `config-global:${version}`, index: '.kibana' }, + { headers: { 'kbn-xsrf': 'spaces' }, ignore: [404] } + ); + const value = (doc?._source as any)?.['config-global'] || null; + return value; + }; + const removeGlobalSettings = async () => { version = version ?? (await kibanaServer.version.get()); version = version.replace(/-SNAPSHOT$/, ''); @@ -37,7 +47,10 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { throw error; }); - await PageObjects.common.sleep(500); // just to be on the safe side + await retry.tryForTime(3000, async () => { + const value = await getGlobalSettings(); + return value === null; + }); }; before(async () => { @@ -66,6 +79,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { before(async () => { _defaultSpace = await spacesService.get('default'); + await removeGlobalSettings(); // Make sure we start from a clean state await PageObjects.common.navigateToUrl('management', 'kibana/spaces', { shouldUseHashForSubUrl: false, From 3a26b5fd202d2fb2bcf39222a34986bfa9a98ada Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?= Date: Tue, 5 Nov 2024 15:36:31 +0100 Subject: [PATCH 32/57] Assign SavedObjects Plugin to SharedUX (#198933) --- .github/CODEOWNERS | 2 +- src/plugins/saved_objects/kibana.jsonc | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 086c31140dad4..1aa57cc822b23 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -754,7 +754,7 @@ src/plugins/saved_objects_finder @elastic/kibana-data-discovery test/plugin_functional/plugins/saved_objects_hidden_from_http_apis_type @elastic/kibana-core test/plugin_functional/plugins/saved_objects_hidden_type @elastic/kibana-core src/plugins/saved_objects_management @elastic/kibana-core -src/plugins/saved_objects @elastic/kibana-core +src/plugins/saved_objects @elastic/appex-sharedux packages/kbn-saved-objects-settings @elastic/appex-sharedux src/plugins/saved_objects_tagging_oss @elastic/appex-sharedux x-pack/plugins/saved_objects_tagging @elastic/appex-sharedux diff --git a/src/plugins/saved_objects/kibana.jsonc b/src/plugins/saved_objects/kibana.jsonc index 86aa1ab920725..d73cacdd8068c 100644 --- a/src/plugins/saved_objects/kibana.jsonc +++ b/src/plugins/saved_objects/kibana.jsonc @@ -2,7 +2,7 @@ "type": "plugin", "id": "@kbn/saved-objects-plugin", "owner": [ - "@elastic/kibana-core" + "@elastic/appex-sharedux" ], "group": "platform", "visibility": "shared", @@ -15,4 +15,4 @@ "dataViews" ] } -} \ No newline at end of file +} From 56c0806af5a7f20903e92bfe88dc227e93ca2858 Mon Sep 17 00:00:00 2001 From: Sid Date: Tue, 5 Nov 2024 15:40:53 +0100 Subject: [PATCH 33/57] [ESO] Add flag to allow ESO consumers to opt-out of highly random UIDs (#198287) Closes https://github.com/elastic/kibana/issues/194692 ## Summary Allow consumers of ESOs to explicitly opt out of the strict highly random UID requirements while registering the ESO type ### Description The `getValidId` method was updated to allow consumers of Encrypted Saved Objects to explicitly opt-out of the enforced random ID requirement. This change is added during ESO registration - consumers can now pass a new field to opt-out of random UIDs. Additional changes - Updated canSpecifyID logic: - The canSpecifyID condition now also checks if enforceRandomId is explicitly set to false. This opt-out approach allows specific ESOs to bypass the random ID enforcement without affecting the default behavior, keeping it secure by default. During the registration phase of the saved object, consumers can now specify if they'd like to opt-out of the random ID ``` savedObjects.registerType({ name: TYPE_WITH_PREDICTABLE_ID, //... }); encryptedSavedObjects.registerType({ type: TYPE_WITH_PREDICTABLE_ID, //... enforceRandomId: false, }); ``` ### Release notes Improves Encrypted Saved Objects (ESO) ID validation by adding an enforceRandomId parameter, allowing consumers to opt out of the default random ID requirement for specific use cases. ### Checklist - [x] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#_add_your_labels) - [ ] This will appear in the **Release Notes** and follow the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --------- Co-authored-by: Elastic Machine Co-authored-by: Jeramy Soucy --- .../src/lib/apis/helpers/common.ts | 12 +- .../repository.encryption_extension.test.ts | 40 ++++++ .../mocks/saved_objects_extensions.mock.ts | 1 + .../src/saved_objects_extensions.mock.ts | 1 + .../src/extensions/encryption.ts | 8 ++ .../encrypted_saved_object_type_definition.ts | 3 + .../encrypted_saved_objects_service.test.ts | 21 +++ .../crypto/encrypted_saved_objects_service.ts | 11 ++ .../saved_objects_encryption_extension.ts | 4 + .../api_consumer_plugin/server/index.ts | 26 ++++ .../tests/encrypted_saved_objects_api.ts | 126 ++++++++++++++++++ 11 files changed, 249 insertions(+), 4 deletions(-) diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/common.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/common.ts index 27bd0918b0f9b..870f6833b4edc 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/common.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/common.ts @@ -105,10 +105,14 @@ export class CommonHelper { if (!id) { return SavedObjectsUtils.generateId(); } - // only allow a specified ID if we're overwriting an existing ESO with a Version - // this helps us ensure that the document really was previously created using ESO - // and not being used to get around the specified ID limitation - const canSpecifyID = (overwrite && version) || SavedObjectsUtils.isRandomId(id); + + const shouldEnforceRandomId = this.encryptionExtension?.shouldEnforceRandomId(type); + + // Allow specified ID if: + // 1. we're overwriting an existing ESO with a Version (this helps us ensure that the document really was previously created using ESO) + // 2. enforceRandomId is explicitly set to false + const canSpecifyID = + !shouldEnforceRandomId || (overwrite && version) || SavedObjectsUtils.isRandomId(id); if (!canSpecifyID) { throw SavedObjectsErrorHelpers.createBadRequestError( 'Predefined IDs are not allowed for saved objects with encrypted attributes unless the ID is a UUID.' diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.encryption_extension.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.encryption_extension.test.ts index f5c8c8518a58a..cf66621565577 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.encryption_extension.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.encryption_extension.test.ts @@ -261,6 +261,7 @@ describe('SavedObjectsRepository Encryption Extension', () => { it(`fails if non-UUID ID is specified for encrypted type`, async () => { mockEncryptionExt.isEncryptableType.mockReturnValue(true); + mockEncryptionExt.shouldEnforceRandomId.mockReturnValue(true); mockEncryptionExt.decryptOrStripResponseAttributes.mockResolvedValue({ ...encryptedSO, ...decryptedStrippedAttributes, @@ -291,6 +292,25 @@ describe('SavedObjectsRepository Encryption Extension', () => { ).resolves.not.toThrowError(); }); + it('allows to opt-out of random ID enforcement', async () => { + mockEncryptionExt.isEncryptableType.mockReturnValue(true); + mockEncryptionExt.shouldEnforceRandomId.mockReturnValue(false); + mockEncryptionExt.decryptOrStripResponseAttributes.mockResolvedValue({ + ...encryptedSO, + ...decryptedStrippedAttributes, + }); + + const result = await repository.create(encryptedSO.type, encryptedSO.attributes, { + id: encryptedSO.id, + version: mockVersion, + }); + + expect(client.create).toHaveBeenCalled(); + expect(mockEncryptionExt.isEncryptableType).toHaveBeenCalledWith(encryptedSO.type); + expect(mockEncryptionExt.shouldEnforceRandomId).toHaveBeenCalledWith(encryptedSO.type); + expect(result.id).toBe(encryptedSO.id); + }); + describe('namespace', () => { const doTest = async (optNamespace: string, expectNamespaceInDescriptor: boolean) => { const options = { overwrite: true, namespace: optNamespace }; @@ -483,6 +503,7 @@ describe('SavedObjectsRepository Encryption Extension', () => { it(`fails if non-UUID ID is specified for encrypted type`, async () => { mockEncryptionExt.isEncryptableType.mockReturnValue(true); + mockEncryptionExt.shouldEnforceRandomId.mockReturnValue(true); const result = await bulkCreateSuccess(client, repository, [ encryptedSO, // Predefined IDs are not allowed for saved objects with encrypted attributes unless the ID is a UUID ]); @@ -529,6 +550,25 @@ describe('SavedObjectsRepository Encryption Extension', () => { expect(result.saved_objects.length).toBe(1); expect(result.saved_objects[0].error).toBeUndefined(); }); + + it('allows to opt-out of random ID enforcement', async () => { + mockEncryptionExt.isEncryptableType.mockReturnValue(true); + mockEncryptionExt.shouldEnforceRandomId.mockReturnValue(false); + mockEncryptionExt.decryptOrStripResponseAttributes.mockResolvedValue({ + ...encryptedSO, + ...decryptedStrippedAttributes, + }); + + const result = await bulkCreateSuccess(client, repository, [ + { ...encryptedSO, version: mockVersion }, + ]); + + expect(client.bulk).toHaveBeenCalled(); + expect(result.saved_objects).not.toBeUndefined(); + expect(result.saved_objects.length).toBe(1); + expect(result.saved_objects[0].error).toBeUndefined(); + expect(result.saved_objects[0].id).toBe(encryptedSO.id); + }); }); describe('#bulkUpdate', () => { diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/saved_objects_extensions.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/saved_objects_extensions.mock.ts index 2061bb63240b2..9dc7c0f0133c5 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/saved_objects_extensions.mock.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/saved_objects_extensions.mock.ts @@ -17,6 +17,7 @@ const createEncryptionExtension = (): jest.Mocked => ({ diff --git a/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_extensions.mock.ts b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_extensions.mock.ts index 2a2d121b568be..776ecfe3a7385 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_extensions.mock.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-mocks/src/saved_objects_extensions.mock.ts @@ -18,6 +18,7 @@ const createEncryptionExtension = (): jest.Mocked => ({ diff --git a/packages/core/saved-objects/core-saved-objects-server/src/extensions/encryption.ts b/packages/core/saved-objects/core-saved-objects-server/src/extensions/encryption.ts index 3fdb29203fe13..4560ab5672666 100644 --- a/packages/core/saved-objects/core-saved-objects-server/src/extensions/encryption.ts +++ b/packages/core/saved-objects/core-saved-objects-server/src/extensions/encryption.ts @@ -39,6 +39,14 @@ export interface ISavedObjectsEncryptionExtension { */ isEncryptableType: (type: string) => boolean; + /** + * Returns false if ESO type explicitly opts out of highly random UID + * + * @param type the string name of the object type + * @returns boolean, true by default unless explicitly set to false + */ + shouldEnforceRandomId: (type: string) => boolean; + /** * Given a saved object, will return a decrypted saved object or will strip * attributes from the returned object if decryption fails. diff --git a/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_object_type_definition.ts b/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_object_type_definition.ts index d8ce2daa6efbe..bb07842e2bab5 100644 --- a/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_object_type_definition.ts +++ b/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_object_type_definition.ts @@ -16,6 +16,7 @@ export class EncryptedSavedObjectAttributesDefinition { public readonly attributesToEncrypt: ReadonlySet; private readonly attributesToIncludeInAAD: ReadonlySet | undefined; private readonly attributesToStrip: ReadonlySet; + public readonly enforceRandomId: boolean; constructor(typeRegistration: EncryptedSavedObjectTypeRegistration) { if (typeRegistration.attributesToIncludeInAAD) { @@ -49,6 +50,8 @@ export class EncryptedSavedObjectAttributesDefinition { } } + this.enforceRandomId = typeRegistration.enforceRandomId !== false; + this.attributesToEncrypt = attributesToEncrypt; this.attributesToStrip = attributesToStrip; this.attributesToIncludeInAAD = typeRegistration.attributesToIncludeInAAD; diff --git a/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_objects_service.test.ts b/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_objects_service.test.ts index 1691d3f4c0610..67c972ec5f859 100644 --- a/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_objects_service.test.ts +++ b/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_objects_service.test.ts @@ -2405,3 +2405,24 @@ describe('#decryptAttributesSync', () => { }); }); }); + +describe('#shouldEnforceRandomId', () => { + it('defaults to true if enforceRandomId is undefined', () => { + service.registerType({ type: 'known-type-1', attributesToEncrypt: new Set(['attr']) }); + expect(service.shouldEnforceRandomId('known-type-1')).toBe(true); + }); + it('should return the value of enforceRandomId if it is defined', () => { + service.registerType({ + type: 'known-type-1', + attributesToEncrypt: new Set(['attr']), + enforceRandomId: false, + }); + service.registerType({ + type: 'known-type-2', + attributesToEncrypt: new Set(['attr']), + enforceRandomId: true, + }); + expect(service.shouldEnforceRandomId('known-type-1')).toBe(false); + expect(service.shouldEnforceRandomId('known-type-2')).toBe(true); + }); +}); diff --git a/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_objects_service.ts b/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_objects_service.ts index 44072a0828d48..d2c7d9975a9ca 100644 --- a/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_objects_service.ts +++ b/x-pack/plugins/encrypted_saved_objects/server/crypto/encrypted_saved_objects_service.ts @@ -33,6 +33,7 @@ export interface EncryptedSavedObjectTypeRegistration { readonly type: string; readonly attributesToEncrypt: ReadonlySet; readonly attributesToIncludeInAAD?: ReadonlySet; + readonly enforceRandomId?: boolean; } /** @@ -152,6 +153,16 @@ export class EncryptedSavedObjectsService { return this.typeDefinitions.has(type); } + /** + * Checks whether the ESO type has explicitly opted out of enforcing random IDs. + * @param type Saved object type. + * @returns boolean - true unless explicitly opted out by setting enforceRandomId to false + */ + public shouldEnforceRandomId(type: string) { + const typeDefinition = this.typeDefinitions.get(type); + return typeDefinition?.enforceRandomId !== false; + } + /** * Takes saved object attributes for the specified type and, depending on the type definition, * either decrypts or strips encrypted attributes (e.g. in case AAD or encryption key has changed diff --git a/x-pack/plugins/encrypted_saved_objects/server/saved_objects/saved_objects_encryption_extension.ts b/x-pack/plugins/encrypted_saved_objects/server/saved_objects/saved_objects_encryption_extension.ts index 01c35c7403fdf..45e0f6a46c892 100644 --- a/x-pack/plugins/encrypted_saved_objects/server/saved_objects/saved_objects_encryption_extension.ts +++ b/x-pack/plugins/encrypted_saved_objects/server/saved_objects/saved_objects_encryption_extension.ts @@ -40,6 +40,10 @@ export class SavedObjectsEncryptionExtension implements ISavedObjectsEncryptionE return this._service.isRegistered(type); } + shouldEnforceRandomId(type: string) { + return this._service.shouldEnforceRandomId(type); + } + async decryptOrStripResponseAttributes>( response: R, originalAttributes?: T diff --git a/x-pack/test/encrypted_saved_objects_api_integration/plugins/api_consumer_plugin/server/index.ts b/x-pack/test/encrypted_saved_objects_api_integration/plugins/api_consumer_plugin/server/index.ts index c7946b2e68131..6944123790157 100644 --- a/x-pack/test/encrypted_saved_objects_api_integration/plugins/api_consumer_plugin/server/index.ts +++ b/x-pack/test/encrypted_saved_objects_api_integration/plugins/api_consumer_plugin/server/index.ts @@ -32,6 +32,8 @@ const SAVED_OBJECT_WITH_MIGRATION_TYPE = 'saved-object-with-migration'; const SAVED_OBJECT_MV_TYPE = 'saved-object-mv'; +const TYPE_WITH_PREDICTABLE_ID = 'type-with-predictable-ids'; + interface MigratedTypePre790 { nonEncryptedAttribute: string; encryptedAttribute: string; @@ -83,6 +85,30 @@ export const plugin: PluginInitializer = }); } + core.savedObjects.registerType({ + name: TYPE_WITH_PREDICTABLE_ID, + hidden: false, + namespaceType: 'single', + mappings: deepFreeze({ + properties: { + publicProperty: { type: 'keyword' }, + publicPropertyExcludedFromAAD: { type: 'keyword' }, + publicPropertyStoredEncrypted: { type: 'binary' }, + privateProperty: { type: 'binary' }, + }, + }), + }); + + deps.encryptedSavedObjects.registerType({ + type: TYPE_WITH_PREDICTABLE_ID, + attributesToEncrypt: new Set([ + 'privateProperty', + { key: 'publicPropertyStoredEncrypted', dangerouslyExposeValue: true }, + ]), + attributesToIncludeInAAD: new Set(['publicProperty']), + enforceRandomId: false, + }); + core.savedObjects.registerType({ name: SAVED_OBJECT_WITHOUT_SECRET_TYPE, hidden: false, diff --git a/x-pack/test/encrypted_saved_objects_api_integration/tests/encrypted_saved_objects_api.ts b/x-pack/test/encrypted_saved_objects_api_integration/tests/encrypted_saved_objects_api.ts index 4687a01858260..23aa9017e52ea 100644 --- a/x-pack/test/encrypted_saved_objects_api_integration/tests/encrypted_saved_objects_api.ts +++ b/x-pack/test/encrypted_saved_objects_api_integration/tests/encrypted_saved_objects_api.ts @@ -26,6 +26,8 @@ export default function ({ getService }: FtrProviderContext) { 'saved-object-with-secret-and-multiple-spaces'; const SAVED_OBJECT_WITHOUT_SECRET_TYPE = 'saved-object-without-secret'; + const TYPE_WITH_PREDICTABLE_ID = 'type-with-predictable-ids'; + function runTests( encryptedSavedObjectType: string, getURLAPIBaseURL: () => string, @@ -900,5 +902,129 @@ export default function ({ getService }: FtrProviderContext) { } }); }); + + describe('enforceRandomId', () => { + describe('false', () => { + it('#create allows setting non-random ID', async () => { + const id = 'my_predictable_id'; + + const savedObjectOriginalAttributes = { + publicProperty: randomness.string(), + publicPropertyStoredEncrypted: randomness.string(), + privateProperty: randomness.string(), + publicPropertyExcludedFromAAD: randomness.string(), + }; + + const { body: response } = await supertest + .post(`/api/saved_objects/${TYPE_WITH_PREDICTABLE_ID}/${id}`) + .set('kbn-xsrf', 'xxx') + .send({ attributes: savedObjectOriginalAttributes }) + .expect(200); + + expect(response.id).to.be(id); + }); + + it('#bulkCreate not enforcing random ID allows to specify ID', async () => { + const bulkCreateParams = [ + { + type: TYPE_WITH_PREDICTABLE_ID, + id: 'my_predictable_id', + attributes: { + publicProperty: randomness.string(), + publicPropertyExcludedFromAAD: randomness.string(), + publicPropertyStoredEncrypted: randomness.string(), + privateProperty: randomness.string(), + }, + }, + { + type: TYPE_WITH_PREDICTABLE_ID, + id: 'my_predictable_id_2', + attributes: { + publicProperty: randomness.string(), + publicPropertyExcludedFromAAD: randomness.string(), + publicPropertyStoredEncrypted: randomness.string(), + privateProperty: randomness.string(), + }, + }, + ]; + + const { + body: { saved_objects: savedObjects }, + } = await supertest + .post('/api/saved_objects/_bulk_create') + .set('kbn-xsrf', 'xxx') + .send(bulkCreateParams) + .expect(200); + + expect(savedObjects).to.have.length(bulkCreateParams.length); + expect(savedObjects[0].id).to.be('my_predictable_id'); + expect(savedObjects[1].id).to.be('my_predictable_id_2'); + }); + }); + + describe('true or undefined', () => { + it('#create setting a predictable id on ESO types that have not opted out throws an error', async () => { + const id = 'my_predictable_id'; + + const savedObjectOriginalAttributes = { + publicProperty: randomness.string(), + publicPropertyStoredEncrypted: randomness.string(), + privateProperty: randomness.string(), + publicPropertyExcludedFromAAD: randomness.string(), + }; + + const { body: response } = await supertest + .post(`/api/saved_objects/saved-object-with-secret/${id}`) + .set('kbn-xsrf', 'xxx') + .send({ attributes: savedObjectOriginalAttributes }) + .expect(400); + + expect(response.message).to.contain( + 'Predefined IDs are not allowed for saved objects with encrypted attributes unless the ID is a UUID.' + ); + }); + + it('#bulkCreate setting random ID on ESO types that have not opted out throws an error', async () => { + const bulkCreateParams = [ + { + type: SAVED_OBJECT_WITH_SECRET_TYPE, + id: 'my_predictable_id', + attributes: { + publicProperty: randomness.string(), + publicPropertyExcludedFromAAD: randomness.string(), + publicPropertyStoredEncrypted: randomness.string(), + privateProperty: randomness.string(), + }, + }, + { + type: SAVED_OBJECT_WITH_SECRET_TYPE, + id: 'my_predictable_id_2', + attributes: { + publicProperty: randomness.string(), + publicPropertyExcludedFromAAD: randomness.string(), + publicPropertyStoredEncrypted: randomness.string(), + privateProperty: randomness.string(), + }, + }, + ]; + + const { + body: { saved_objects: savedObjects }, + } = await supertest + .post('/api/saved_objects/_bulk_create') + .set('kbn-xsrf', 'xxx') + .send(bulkCreateParams) + .expect(200); + + expect(savedObjects).to.have.length(bulkCreateParams.length); + + savedObjects.forEach((savedObject: any) => { + expect(savedObject.error.message).to.contain( + 'Predefined IDs are not allowed for saved objects with encrypted attributes unless the ID is a UUID.' + ); + }); + }); + }); + }); }); } From 6b77e05586524892dc42c34d0b5b2a561cebc0ae Mon Sep 17 00:00:00 2001 From: Walter Rafelsberger Date: Tue, 5 Nov 2024 15:48:45 +0100 Subject: [PATCH 34/57] [ML] AIOps: Log Rate Analysis embeddable (#197943) ## Summary Follow up to #192167 (rebase/push gone wrong) image - [x] Let's users create a Log Rate Analysis panel using the "Add Panel" button when editing dashboards. - [x] Retains functionality of links in results table to Discover and Pattern Analysis. [41b4337](https://github.com/elastic/kibana/pull/192167/commits/41b4337f9ac15103c6b151c94cfb6b7f944aeb89) - [x] Create `Logs AIOps` section in Add Panel menu. - [x] Brushes not working with multiple panels fixed in [75ca4ca](https://github.com/elastic/kibana/pull/192167/commits/75ca4cac37abda94ae7fb9d5132283e1def0b85e). The reason was the `DualBrush` component used hard coded html ids. - [x] Panel now updates when data view is changed in options flyout, fixed in [2b58567](https://github.com/elastic/kibana/pull/192167/commits/2b5856777151d3ccc5e882c895704008e575aaff). - [x] When the user selects a data view without time field, we now show the same warning as used for pattern analysis and the apply button gets disabled, fixed in [a01975d](https://github.com/elastic/kibana/pull/192167/commits/a01975dba7b5218ea0f094ebc5cb74cd8670131a). - [x] Pass on and use global search/filters to embeddable. [2c24dbd](https://github.com/elastic/kibana/pull/192167/commits/2c24dbd116ef4ae19ff58796b2c5fc4f61a86234) - [x] Moving labels [26cd1a5](https://github.com/elastic/kibana/pull/192167/commits/26cd1a53dfbbea34094cd840eb885a78f29d8de6) - [x] No results after time range update [632b711](https://github.com/elastic/kibana/pull/192167/commits/632b711ca1de77d113192649f56c5b18ae453f86) ### Checklist Delete any items that are not applicable to this PR. - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [x] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --- .../app/pages/page_redux_stream/hooks.ts | 5 +- x-pack/.i18nrc.json | 1 + x-pack/packages/ml/aiops_common/constants.ts | 13 + x-pack/packages/ml/aiops_common/tsconfig.json | 1 + .../document_count_chart.tsx | 7 +- .../src/dual_brush/dual_brush.tsx | 15 +- .../progress_controls/progress_controls.tsx | 49 ++-- .../ml/aiops_log_rate_analysis/constants.ts | 6 + .../ml/aiops_log_rate_analysis/state/hooks.ts | 5 +- .../ml/aiops_log_rate_analysis/state/index.ts | 6 +- ...te_analysis_field_candidates_slice.test.ts | 13 +- ...og_rate_analysis_field_candidates_slice.ts | 31 ++- .../state/log_rate_analysis_slice.ts | 6 + .../log_rate_analysis_table_row_slice.ts | 72 ------ .../log_rate_analysis_table_slice.test.ts | 130 ++++++++++ .../state/log_rate_analysis_table_slice.ts | 172 +++++++++++++ .../aiops_log_rate_analysis/state/store.tsx | 21 +- .../state/use_current_selected_group.ts | 4 +- .../use_current_selected_significant_item.ts | 5 +- .../field_stats_flyout_provider.tsx | 24 +- .../field_stats_info_button.tsx | 16 +- .../ml/field_stats_flyout/tsconfig.json | 3 +- .../use_field_stats_flyout_context.ts | 25 +- .../use_field_stats_trigger.tsx | 2 + .../change_point_detection/fields_config.tsx | 3 +- .../document_count_content.tsx | 17 +- .../log_rate_analysis_content.tsx | 18 +- .../log_rate_analysis_for_embeddable.tsx | 65 +++++ .../log_rate_analysis_options.tsx | 190 ++++++++++++++ .../log_rate_analysis_results.tsx | 237 +++++------------- .../log_rate_analysis_results_table/index.ts | 1 - .../log_rate_analysis_results_table.tsx | 10 +- ...log_rate_analysis_results_table_groups.tsx | 4 +- .../use_columns.tsx | 74 ++---- .../use_view_in_discover_action.tsx | 4 +- ...se_view_in_log_pattern_analysis_action.tsx | 2 +- .../public/components/time_field_warning.tsx | 32 +++ .../change_point_chart_initializer.tsx | 76 +++++- .../embeddable_change_point_chart_factory.tsx | 41 +-- .../embeddables/change_point_chart/types.ts | 8 - .../plugins/aiops/public/embeddables/index.ts | 5 + .../embeddable_log_rate_analysis_factory.tsx | 211 ++++++++++++++++ .../embeddables/log_rate_analysis/index.ts | 8 + ...ize_log_rate_analysis_analysis_controls.ts | 43 ++++ ...g_rate_analysis_embeddable_initializer.tsx | 230 +++++++++++++++++ ...resolve_log_rate_analysis_config_input.tsx | 94 +++++++ .../embeddables/log_rate_analysis/types.ts | 39 +++ .../embeddable_pattern_analysis_factory.tsx | 45 +--- ...=> pattern_analysis_component_wrapper.tsx} | 0 .../pattern_analysis_initializer.tsx | 32 +-- .../embeddables/pattern_analysis/types.ts | 6 - .../public/hooks/use_aiops_app_context.ts | 27 +- .../aiops/public/hooks/use_data_source.tsx | 11 +- .../change_point_detection.tsx | 56 ++--- .../aiops/public/shared_components/index.tsx | 22 ++ .../log_rate_analysis_embeddable_wrapper.tsx | 179 +++++++++++++ .../shared_components/pattern_analysis.tsx | 54 ++-- x-pack/plugins/aiops/public/types/storage.ts | 5 - .../ui_actions/create_change_point_chart.tsx | 2 + .../create_log_rate_analysis_actions.tsx | 91 +++++++ .../create_pattern_analysis_action.tsx | 16 +- .../plugins/aiops/public/ui_actions/index.ts | 4 + .../log_rate_analysis_action_context.ts | 24 ++ x-pack/plugins/aiops/tsconfig.json | 3 +- .../configuration_step_form.tsx | 1 + .../new_job/pages/new_job/wizard_steps.tsx | 1 + .../components/wizard/wizard.tsx | 3 +- .../translations/translations/fr-FR.json | 1 - .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - x-pack/test/functional/apps/aiops/index.ts | 1 + .../log_rate_analysis_dashboard_embeddable.ts | 104 ++++++++ .../services/aiops/dashboard_embeddables.ts | 110 ++++++++ .../test/functional/services/aiops/index.ts | 3 + .../services/aiops/log_rate_analysis_page.ts | 16 ++ 75 files changed, 2202 insertions(+), 661 deletions(-) delete mode 100644 x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_table_row_slice.ts create mode 100644 x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_table_slice.test.ts create mode 100644 x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_table_slice.ts create mode 100644 x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_for_embeddable.tsx create mode 100644 x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_options.tsx create mode 100644 x-pack/plugins/aiops/public/components/time_field_warning.tsx create mode 100644 x-pack/plugins/aiops/public/embeddables/log_rate_analysis/embeddable_log_rate_analysis_factory.tsx create mode 100644 x-pack/plugins/aiops/public/embeddables/log_rate_analysis/index.ts create mode 100644 x-pack/plugins/aiops/public/embeddables/log_rate_analysis/initialize_log_rate_analysis_analysis_controls.ts create mode 100644 x-pack/plugins/aiops/public/embeddables/log_rate_analysis/log_rate_analysis_embeddable_initializer.tsx create mode 100644 x-pack/plugins/aiops/public/embeddables/log_rate_analysis/resolve_log_rate_analysis_config_input.tsx create mode 100644 x-pack/plugins/aiops/public/embeddables/log_rate_analysis/types.ts rename x-pack/plugins/aiops/public/embeddables/pattern_analysis/{pattern_analysys_component_wrapper.tsx => pattern_analysis_component_wrapper.tsx} (100%) create mode 100644 x-pack/plugins/aiops/public/shared_components/log_rate_analysis_embeddable_wrapper.tsx create mode 100644 x-pack/plugins/aiops/public/ui_actions/create_log_rate_analysis_actions.tsx create mode 100644 x-pack/plugins/aiops/public/ui_actions/log_rate_analysis_action_context.ts create mode 100644 x-pack/test/functional/apps/aiops/log_rate_analysis_dashboard_embeddable.ts create mode 100644 x-pack/test/functional/services/aiops/dashboard_embeddables.ts diff --git a/examples/response_stream/public/containers/app/pages/page_redux_stream/hooks.ts b/examples/response_stream/public/containers/app/pages/page_redux_stream/hooks.ts index f1c8c671611a8..735e70916593f 100644 --- a/examples/response_stream/public/containers/app/pages/page_redux_stream/hooks.ts +++ b/examples/response_stream/public/containers/app/pages/page_redux_stream/hooks.ts @@ -8,10 +8,9 @@ */ import type { TypedUseSelectorHook } from 'react-redux'; -import { useDispatch, useSelector, useStore } from 'react-redux'; -import type { AppDispatch, AppStore, RootState } from './store'; +import { useDispatch, useSelector } from 'react-redux'; +import type { AppDispatch, RootState } from './store'; // Use throughout your app instead of plain `useDispatch` and `useSelector` export const useAppDispatch: () => AppDispatch = useDispatch; export const useAppSelector: TypedUseSelectorHook = useSelector; -export const useAppStore: () => AppStore = useStore; diff --git a/x-pack/.i18nrc.json b/x-pack/.i18nrc.json index 7afbc9dc704c4..e1e8478aa0517 100644 --- a/x-pack/.i18nrc.json +++ b/x-pack/.i18nrc.json @@ -3,6 +3,7 @@ "paths": { "xpack.actions": "plugins/actions", "xpack.aiops": [ + "packages/ml/aiops_common", "packages/ml/aiops_components", "packages/ml/aiops_log_pattern_analysis", "packages/ml/aiops_log_rate_analysis", diff --git a/x-pack/packages/ml/aiops_common/constants.ts b/x-pack/packages/ml/aiops_common/constants.ts index 39a0fdc5842c8..1a75e929c147a 100644 --- a/x-pack/packages/ml/aiops_common/constants.ts +++ b/x-pack/packages/ml/aiops_common/constants.ts @@ -5,6 +5,8 @@ * 2.0. */ +import { i18n } from '@kbn/i18n'; + /** * AIOPS_PLUGIN_ID is used as a unique identifier for the aiops plugin */ @@ -28,3 +30,14 @@ export const AIOPS_EMBEDDABLE_ORIGIN = { DISCOVER: 'discover', ML_AIOPS_LABS: 'ml_aiops_labs', } as const; + +export const AIOPS_EMBEDDABLE_GROUPING = [ + { + id: 'logs-aiops', + getDisplayName: () => + i18n.translate('xpack.aiops.embedabble.groupingDisplayName', { + defaultMessage: 'Logs AIOps', + }), + getIconType: () => 'machineLearningApp', + }, +]; diff --git a/x-pack/packages/ml/aiops_common/tsconfig.json b/x-pack/packages/ml/aiops_common/tsconfig.json index 806b5b07e847e..ffd8c074a421d 100644 --- a/x-pack/packages/ml/aiops_common/tsconfig.json +++ b/x-pack/packages/ml/aiops_common/tsconfig.json @@ -15,6 +15,7 @@ ], "kbn_references": [ "@kbn/ml-is-populated-object", + "@kbn/i18n", ], "exclude": [ "target/**/*", diff --git a/x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx b/x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx index 39291762b8fca..d9f68fe7ef890 100644 --- a/x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx +++ b/x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx @@ -426,7 +426,12 @@ export const DocumentCountChart: FC = (props) => { <> {isBrushVisible && (
-
+ {/** + * We need position:relative on this parent container of the BrushBadges, + * because of the absolute positioning of the BrushBadges. Without it, the + * BrushBadges would not be positioned correctly when used in embedded panels. + */} +
= (props) => { const d3BrushContainer = useRef(null); const brushes = useRef([]); + // id to prefix html ids for the brushes since this component can be used + // multiple times within dashboard and embedded charts. + const htmlId = useMemo(() => htmlIdGenerator()(), []); + // We need to pass props to refs here because the d3-brush code doesn't consider // native React prop changes. The brush code does its own check whether these props changed then. // The initialized brushes might otherwise act on stale data. @@ -135,10 +141,10 @@ export const DualBrush: FC = (props) => { const xMax = x(maxRef.current) ?? 0; const minExtentPx = Math.round((xMax - xMin) / 100); - const baselineBrush = d3.select('#aiops-brush-baseline'); + const baselineBrush = d3.select(`#aiops-brush-baseline-${htmlId}`); const baselineSelection = d3.brushSelection(baselineBrush.node() as SVGGElement); - const deviationBrush = d3.select('#aiops-brush-deviation'); + const deviationBrush = d3.select(`#aiops-brush-deviation-${htmlId}`); const deviationSelection = d3.brushSelection(deviationBrush.node() as SVGGElement); if (!isBrushXSelection(deviationSelection) || !isBrushXSelection(baselineSelection)) { @@ -260,7 +266,7 @@ export const DualBrush: FC = (props) => { .insert('g', '.brush') .attr('class', 'brush') .attr('id', (b: DualBrush) => { - return 'aiops-brush-' + b.id; + return `aiops-brush-${b.id}-${htmlId}`; }) .attr('data-test-subj', (b: DualBrush) => { // Uppercase the first character of the `id` so we get aiopsBrushBaseline/aiopsBrushDeviation. @@ -339,6 +345,7 @@ export const DualBrush: FC = (props) => { drawBrushes(); } }, [ + htmlId, min, max, width, diff --git a/x-pack/packages/ml/aiops_components/src/progress_controls/progress_controls.tsx b/x-pack/packages/ml/aiops_components/src/progress_controls/progress_controls.tsx index 098f7038f82c8..173f33e08f0b4 100644 --- a/x-pack/packages/ml/aiops_components/src/progress_controls/progress_controls.tsx +++ b/x-pack/packages/ml/aiops_components/src/progress_controls/progress_controls.tsx @@ -70,7 +70,6 @@ export const ProgressControls: FC> = (pr const { euiTheme } = useEuiTheme(); const runningProgressBarStyles = useAnimatedProgressBarBackground(euiTheme.colors.success); - const analysisCompleteStyle = { display: 'none' }; return ( @@ -144,32 +143,30 @@ export const ProgressControls: FC> = (pr ) : null} - - - - + + + + + + + - - - - - - + + + ) : null} {children} diff --git a/x-pack/packages/ml/aiops_log_rate_analysis/constants.ts b/x-pack/packages/ml/aiops_log_rate_analysis/constants.ts index 054bb876a4f7a..a9812a7507441 100644 --- a/x-pack/packages/ml/aiops_log_rate_analysis/constants.ts +++ b/x-pack/packages/ml/aiops_log_rate_analysis/constants.ts @@ -33,3 +33,9 @@ export const RANDOM_SAMPLER_SEED = 3867412; /** Highlighting color for charts */ export const LOG_RATE_ANALYSIS_HIGHLIGHT_COLOR = 'orange'; + +/** */ +export const EMBEDDABLE_LOG_RATE_ANALYSIS_TYPE = 'aiopsLogRateAnalysisEmbeddable' as const; + +/** */ +export const LOG_RATE_ANALYSIS_DATA_VIEW_REF_NAME = 'aiopsLogRateAnalysisEmbeddableDataViewId'; diff --git a/x-pack/packages/ml/aiops_log_rate_analysis/state/hooks.ts b/x-pack/packages/ml/aiops_log_rate_analysis/state/hooks.ts index 4652d604c5d61..d02a3bea22bf3 100644 --- a/x-pack/packages/ml/aiops_log_rate_analysis/state/hooks.ts +++ b/x-pack/packages/ml/aiops_log_rate_analysis/state/hooks.ts @@ -6,10 +6,9 @@ */ import type { TypedUseSelectorHook } from 'react-redux'; -import { useDispatch, useSelector, useStore } from 'react-redux'; -import type { AppDispatch, AppStore, RootState } from './store'; +import { useDispatch, useSelector } from 'react-redux'; +import type { AppDispatch, RootState } from './store'; // Improves TypeScript support compared to plain `useDispatch` and `useSelector` export const useAppDispatch: () => AppDispatch = useDispatch; export const useAppSelector: TypedUseSelectorHook = useSelector; -export const useAppStore: () => AppStore = useStore; diff --git a/x-pack/packages/ml/aiops_log_rate_analysis/state/index.ts b/x-pack/packages/ml/aiops_log_rate_analysis/state/index.ts index 785bb02c24f31..7f7710ec23f3b 100644 --- a/x-pack/packages/ml/aiops_log_rate_analysis/state/index.ts +++ b/x-pack/packages/ml/aiops_log_rate_analysis/state/index.ts @@ -11,6 +11,7 @@ export { setAnalysisType, setAutoRunAnalysis, setDocumentCountChartData, + setGroupResults, setInitialAnalysisStart, setIsBrushCleared, setStickyHistogram, @@ -23,9 +24,10 @@ export { setPinnedSignificantItem, setSelectedGroup, setSelectedSignificantItem, -} from './log_rate_analysis_table_row_slice'; + setSkippedColumns, +} from './log_rate_analysis_table_slice'; export { LogRateAnalysisReduxProvider } from './store'; -export { useAppDispatch, useAppSelector, useAppStore } from './hooks'; +export { useAppDispatch, useAppSelector } from './hooks'; export { useCurrentSelectedGroup } from './use_current_selected_group'; export { useCurrentSelectedSignificantItem } from './use_current_selected_significant_item'; export type { GroupTableItem, GroupTableItemGroup, TableItemAction } from './types'; diff --git a/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_field_candidates_slice.test.ts b/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_field_candidates_slice.test.ts index 4f829b0e0bf5a..5b4946dc2eb2b 100644 --- a/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_field_candidates_slice.test.ts +++ b/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_field_candidates_slice.test.ts @@ -9,14 +9,16 @@ import { httpServiceMock } from '@kbn/core/public/mocks'; import type { FetchFieldCandidatesResponse } from '../queries/fetch_field_candidates'; -import { fetchFieldCandidates } from './log_rate_analysis_field_candidates_slice'; +import { fetchFieldCandidates, getDefaultState } from './log_rate_analysis_field_candidates_slice'; const mockHttp = httpServiceMock.createStartContract(); describe('fetchFieldCandidates', () => { it('dispatches field candidates', async () => { const mockDispatch = jest.fn(); - const mockGetState = jest.fn(); + const mockGetState = jest.fn().mockReturnValue({ + logRateAnalysisFieldCandidates: getDefaultState(), + }); const mockResponse: FetchFieldCandidatesResponse = { isECS: false, @@ -60,7 +62,12 @@ describe('fetchFieldCandidates', () => { payload: { fieldSelectionMessage: '2 out of 5 fields were preselected for the analysis. Use the "Fields" dropdown to adjust the selection.', - fieldFilterSkippedItems: [ + initialFieldFilterSkippedItems: [ + 'another-keyword-field', + 'another-text-field', + 'yet-another-text-field', + ], + currentFieldFilterSkippedItems: [ 'another-keyword-field', 'another-text-field', 'yet-another-text-field', diff --git a/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_field_candidates_slice.ts b/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_field_candidates_slice.ts index aa5cb969e5401..07b1cd6fee402 100644 --- a/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_field_candidates_slice.ts +++ b/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_field_candidates_slice.ts @@ -90,10 +90,14 @@ export const fetchFieldCandidates = createAsyncThunk( ...selectedKeywordFieldCandidates, ...selectedTextFieldCandidates, ]; - const fieldFilterSkippedItems = fieldFilterUniqueItems.filter( + const initialFieldFilterSkippedItems = fieldFilterUniqueItems.filter( (d) => !fieldFilterUniqueSelectedItems.includes(d) ); + const currentFieldFilterSkippedItems = ( + thunkApi.getState() as { logRateAnalysisFieldCandidates: FieldCandidatesState } + ).logRateAnalysisFieldCandidates.currentFieldFilterSkippedItems; + thunkApi.dispatch( setAllFieldCandidates({ fieldSelectionMessage: getFieldSelectionMessage( @@ -102,7 +106,13 @@ export const fetchFieldCandidates = createAsyncThunk( fieldFilterUniqueSelectedItems.length ), fieldFilterUniqueItems, - fieldFilterSkippedItems, + initialFieldFilterSkippedItems, + // If the currentFieldFilterSkippedItems is null, we're on the first load, + // only then we set the current skipped fields to the initial skipped fields. + currentFieldFilterSkippedItems: + currentFieldFilterSkippedItems === null + ? initialFieldFilterSkippedItems + : currentFieldFilterSkippedItems, keywordFieldCandidates, textFieldCandidates, selectedKeywordFieldCandidates, @@ -116,18 +126,20 @@ export interface FieldCandidatesState { isLoading: boolean; fieldSelectionMessage?: string; fieldFilterUniqueItems: string[]; - fieldFilterSkippedItems: string[]; + initialFieldFilterSkippedItems: string[]; + currentFieldFilterSkippedItems: string[] | null; keywordFieldCandidates: string[]; textFieldCandidates: string[]; selectedKeywordFieldCandidates: string[]; selectedTextFieldCandidates: string[]; } -function getDefaultState(): FieldCandidatesState { +export function getDefaultState(): FieldCandidatesState { return { isLoading: false, fieldFilterUniqueItems: [], - fieldFilterSkippedItems: [], + initialFieldFilterSkippedItems: [], + currentFieldFilterSkippedItems: null, keywordFieldCandidates: [], textFieldCandidates: [], selectedKeywordFieldCandidates: [], @@ -145,6 +157,12 @@ export const logRateAnalysisFieldCandidatesSlice = createSlice({ ) => { return { ...state, ...action.payload }; }, + setCurrentFieldFilterSkippedItems: ( + state: FieldCandidatesState, + action: PayloadAction + ) => { + return { ...state, currentFieldFilterSkippedItems: action.payload }; + }, }, extraReducers: (builder) => { builder.addCase(fetchFieldCandidates.pending, (state) => { @@ -157,4 +175,5 @@ export const logRateAnalysisFieldCandidatesSlice = createSlice({ }); // Action creators are generated for each case reducer function -export const { setAllFieldCandidates } = logRateAnalysisFieldCandidatesSlice.actions; +export const { setAllFieldCandidates, setCurrentFieldFilterSkippedItems } = + logRateAnalysisFieldCandidatesSlice.actions; diff --git a/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_slice.ts b/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_slice.ts index 251f0d3263800..8399e896900c6 100644 --- a/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_slice.ts +++ b/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_slice.ts @@ -34,6 +34,7 @@ export interface LogRateAnalysisState { autoRunAnalysis: boolean; initialAnalysisStart: InitialAnalysisStart; isBrushCleared: boolean; + groupResults: boolean; stickyHistogram: boolean; chartWindowParameters?: WindowParameters; earliest?: number; @@ -48,6 +49,7 @@ function getDefaultState(): LogRateAnalysisState { autoRunAnalysis: true, initialAnalysisStart: undefined, isBrushCleared: true, + groupResults: false, documentStats: { sampleProbability: 1, totalCount: 0, @@ -98,6 +100,9 @@ export const logRateAnalysisSlice = createSlice({ state.intervalMs = action.payload.intervalMs; state.documentStats = action.payload.documentStats; }, + setGroupResults: (state: LogRateAnalysisState, action: PayloadAction) => { + state.groupResults = action.payload; + }, setInitialAnalysisStart: ( state: LogRateAnalysisState, action: PayloadAction @@ -127,6 +132,7 @@ export const { setAnalysisType, setAutoRunAnalysis, setDocumentCountChartData, + setGroupResults, setInitialAnalysisStart, setIsBrushCleared, setStickyHistogram, diff --git a/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_table_row_slice.ts b/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_table_row_slice.ts deleted file mode 100644 index 3da98e4cc80ff..0000000000000 --- a/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_table_row_slice.ts +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { PayloadAction } from '@reduxjs/toolkit'; -import { createSlice } from '@reduxjs/toolkit'; - -import type { SignificantItem } from '@kbn/ml-agg-utils'; - -import type { GroupTableItem } from './types'; - -type SignificantItemOrNull = SignificantItem | null; -type GroupOrNull = GroupTableItem | null; - -export interface LogRateAnalysisTableRowState { - pinnedGroup: GroupOrNull; - pinnedSignificantItem: SignificantItemOrNull; - selectedGroup: GroupOrNull; - selectedSignificantItem: SignificantItemOrNull; -} - -function getDefaultState(): LogRateAnalysisTableRowState { - return { - pinnedGroup: null, - pinnedSignificantItem: null, - selectedGroup: null, - selectedSignificantItem: null, - }; -} - -export const logRateAnalysisTableRowSlice = createSlice({ - name: 'logRateAnalysisTableRow', - initialState: getDefaultState(), - reducers: { - clearAllRowState: (state: LogRateAnalysisTableRowState) => { - state.pinnedGroup = null; - state.pinnedSignificantItem = null; - state.selectedGroup = null; - state.selectedSignificantItem = null; - }, - setPinnedGroup: (state: LogRateAnalysisTableRowState, action: PayloadAction) => { - state.pinnedGroup = action.payload; - }, - setPinnedSignificantItem: ( - state: LogRateAnalysisTableRowState, - action: PayloadAction - ) => { - state.pinnedSignificantItem = action.payload; - }, - setSelectedGroup: (state: LogRateAnalysisTableRowState, action: PayloadAction) => { - state.selectedGroup = action.payload; - }, - setSelectedSignificantItem: ( - state: LogRateAnalysisTableRowState, - action: PayloadAction - ) => { - state.selectedSignificantItem = action.payload; - }, - }, -}); - -// Action creators are generated for each case reducer function -export const { - clearAllRowState, - setPinnedGroup, - setPinnedSignificantItem, - setSelectedGroup, - setSelectedSignificantItem, -} = logRateAnalysisTableRowSlice.actions; diff --git a/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_table_slice.test.ts b/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_table_slice.test.ts new file mode 100644 index 0000000000000..498ada00654f0 --- /dev/null +++ b/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_table_slice.test.ts @@ -0,0 +1,130 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { configureStore } from '@reduxjs/toolkit'; +import { + logRateAnalysisTableSlice, + localStorageListenerMiddleware, + setSkippedColumns, + getPreloadedState, + AIOPS_LOG_RATE_ANALYSIS_RESULT_COLUMNS, + type LogRateAnalysisResultsTableColumnName, +} from './log_rate_analysis_table_slice'; + +describe('getPreloadedState', () => { + beforeEach(() => { + localStorage.clear(); + }); + + it('should return default state when localStorage is empty', () => { + const state = getPreloadedState(); + expect(state).toEqual({ + skippedColumns: ['p-value', 'Baseline rate', 'Deviation rate'], + pinnedGroup: null, + pinnedSignificantItem: null, + selectedGroup: null, + selectedSignificantItem: null, + }); + }); + + it('should return state with skippedColumns from localStorage', () => { + const skippedColumns = ['Log rate', 'Doc count']; + localStorage.setItem(AIOPS_LOG_RATE_ANALYSIS_RESULT_COLUMNS, JSON.stringify(skippedColumns)); + + const state = getPreloadedState(); + expect(state.skippedColumns).toEqual(skippedColumns); + }); + + it('should return default state when localStorage contains invalid JSON', () => { + localStorage.setItem(AIOPS_LOG_RATE_ANALYSIS_RESULT_COLUMNS, 'invalid-json'); + + const state = getPreloadedState(); + expect(state).toEqual({ + skippedColumns: ['p-value', 'Baseline rate', 'Deviation rate'], + pinnedGroup: null, + pinnedSignificantItem: null, + selectedGroup: null, + selectedSignificantItem: null, + }); + }); + + it('should return default state when localStorage does not contain skippedColumns', () => { + localStorage.setItem('someOtherKey', JSON.stringify(['someValue'])); + + const state = getPreloadedState(); + expect(state).toEqual({ + skippedColumns: ['p-value', 'Baseline rate', 'Deviation rate'], + pinnedGroup: null, + pinnedSignificantItem: null, + selectedGroup: null, + selectedSignificantItem: null, + }); + }); +}); + +type Store = ReturnType; + +describe('localStorageListenerMiddleware', () => { + let store: Store; + + beforeEach(() => { + localStorage.clear(); + store = configureStore({ + reducer: { + logRateAnalysisTable: logRateAnalysisTableSlice.reducer, + }, + middleware: (getDefaultMiddleware) => + getDefaultMiddleware().prepend(localStorageListenerMiddleware.middleware), + }) as Store; + }); + + it('should save skippedColumns to localStorage when setSkippedColumns is dispatched', () => { + const skippedColumns: LogRateAnalysisResultsTableColumnName[] = ['Log rate', 'Doc count']; + store.dispatch(setSkippedColumns(skippedColumns)); + + const storedSkippedColumns = localStorage.getItem(AIOPS_LOG_RATE_ANALYSIS_RESULT_COLUMNS); + expect(storedSkippedColumns).toEqual(JSON.stringify(skippedColumns)); + }); + + it('should handle invalid JSON in localStorage gracefully', () => { + localStorage.setItem(AIOPS_LOG_RATE_ANALYSIS_RESULT_COLUMNS, 'invalid-json'); + const skippedColumns: LogRateAnalysisResultsTableColumnName[] = ['Log rate', 'Doc count']; + store.dispatch(setSkippedColumns(skippedColumns)); + + const storedSkippedColumns = localStorage.getItem(AIOPS_LOG_RATE_ANALYSIS_RESULT_COLUMNS); + expect(storedSkippedColumns).toEqual(JSON.stringify(skippedColumns)); + }); + + it('should not overwrite other localStorage keys', () => { + const otherKey = 'someOtherKey'; + const otherValue = ['someValue']; + localStorage.setItem(otherKey, JSON.stringify(otherValue)); + + const skippedColumns: LogRateAnalysisResultsTableColumnName[] = ['Log rate', 'Doc count']; + store.dispatch(setSkippedColumns(skippedColumns)); + + const storedOtherValue = localStorage.getItem(otherKey); + expect(storedOtherValue).toEqual(JSON.stringify(otherValue)); + }); + + it('should update localStorage when skippedColumns are updated multiple times', () => { + const initialSkippedColumns: LogRateAnalysisResultsTableColumnName[] = ['Log rate']; + store.dispatch(setSkippedColumns(initialSkippedColumns)); + + let storedSkippedColumns = localStorage.getItem(AIOPS_LOG_RATE_ANALYSIS_RESULT_COLUMNS); + expect(storedSkippedColumns).toEqual(JSON.stringify(initialSkippedColumns)); + + const updatedSkippedColumns: LogRateAnalysisResultsTableColumnName[] = [ + 'Log rate', + 'Doc count', + ]; + store.dispatch(setSkippedColumns(updatedSkippedColumns)); + + storedSkippedColumns = localStorage.getItem(AIOPS_LOG_RATE_ANALYSIS_RESULT_COLUMNS); + expect(storedSkippedColumns).toEqual(JSON.stringify(updatedSkippedColumns)); + }); +}); diff --git a/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_table_slice.ts b/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_table_slice.ts new file mode 100644 index 0000000000000..1d9c83dea98a6 --- /dev/null +++ b/x-pack/packages/ml/aiops_log_rate_analysis/state/log_rate_analysis_table_slice.ts @@ -0,0 +1,172 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { PayloadAction } from '@reduxjs/toolkit'; +import { createSlice, createListenerMiddleware } from '@reduxjs/toolkit'; + +import { i18n } from '@kbn/i18n'; +import type { SignificantItem } from '@kbn/ml-agg-utils'; + +import type { GroupTableItem } from './types'; + +export const AIOPS_LOG_RATE_ANALYSIS_RESULT_COLUMNS = 'aiops.logRateAnalysisResultColumns'; + +export const commonColumns = { + ['Log rate']: i18n.translate('xpack.aiops.logRateAnalysis.resultsTable.logRateColumnTitle', { + defaultMessage: 'Log rate', + }), + ['Doc count']: i18n.translate('xpack.aiops.logRateAnalysis.resultsTable.docCountColumnTitle', { + defaultMessage: 'Doc count', + }), + ['p-value']: i18n.translate('xpack.aiops.logRateAnalysis.resultsTable.pValueColumnTitle', { + defaultMessage: 'p-value', + }), + ['Impact']: i18n.translate('xpack.aiops.logRateAnalysis.resultsTable.impactColumnTitle', { + defaultMessage: 'Impact', + }), + ['Baseline rate']: i18n.translate( + 'xpack.aiops.logRateAnalysis.resultsTable.baselineRateColumnTitle', + { + defaultMessage: 'Baseline rate', + } + ), + ['Deviation rate']: i18n.translate( + 'xpack.aiops.logRateAnalysis.resultsTable.deviationRateColumnTitle', + { + defaultMessage: 'Deviation rate', + } + ), + ['Log rate change']: i18n.translate( + 'xpack.aiops.logRateAnalysis.resultsTable.logRateChangeColumnTitle', + { + defaultMessage: 'Log rate change', + } + ), + ['Actions']: i18n.translate('xpack.aiops.logRateAnalysis.resultsTable.actionsColumnTitle', { + defaultMessage: 'Actions', + }), +}; + +export const significantItemColumns = { + ['Field name']: i18n.translate('xpack.aiops.logRateAnalysis.resultsTable.fieldNameColumnTitle', { + defaultMessage: 'Field name', + }), + ['Field value']: i18n.translate( + 'xpack.aiops.logRateAnalysis.resultsTable.fieldValueColumnTitle', + { + defaultMessage: 'Field value', + } + ), + ...commonColumns, +} as const; + +export type LogRateAnalysisResultsTableColumnName = keyof typeof significantItemColumns | 'unique'; + +type SignificantItemOrNull = SignificantItem | null; +type GroupOrNull = GroupTableItem | null; + +export interface LogRateAnalysisTableState { + skippedColumns: LogRateAnalysisResultsTableColumnName[]; + pinnedGroup: GroupOrNull; + pinnedSignificantItem: SignificantItemOrNull; + selectedGroup: GroupOrNull; + selectedSignificantItem: SignificantItemOrNull; +} + +function getDefaultState(): LogRateAnalysisTableState { + return { + skippedColumns: ['p-value', 'Baseline rate', 'Deviation rate'], + pinnedGroup: null, + pinnedSignificantItem: null, + selectedGroup: null, + selectedSignificantItem: null, + }; +} + +export function getPreloadedState(): LogRateAnalysisTableState { + const defaultState = getDefaultState(); + + const localStorageSkippedColumns = localStorage.getItem(AIOPS_LOG_RATE_ANALYSIS_RESULT_COLUMNS); + + if (localStorageSkippedColumns === null) { + return defaultState; + } + + try { + defaultState.skippedColumns = JSON.parse(localStorageSkippedColumns); + } catch (err) { + // eslint-disable-next-line no-console + console.warn('Failed to parse skipped columns from local storage:', err); + } + + return defaultState; +} + +export const logRateAnalysisTableSlice = createSlice({ + name: 'logRateAnalysisTable', + initialState: getDefaultState(), + reducers: { + clearAllRowState: (state: LogRateAnalysisTableState) => { + state.pinnedGroup = null; + state.pinnedSignificantItem = null; + state.selectedGroup = null; + state.selectedSignificantItem = null; + }, + setPinnedGroup: (state: LogRateAnalysisTableState, action: PayloadAction) => { + state.pinnedGroup = action.payload; + }, + setPinnedSignificantItem: ( + state: LogRateAnalysisTableState, + action: PayloadAction + ) => { + state.pinnedSignificantItem = action.payload; + }, + setSelectedGroup: (state: LogRateAnalysisTableState, action: PayloadAction) => { + state.selectedGroup = action.payload; + }, + setSelectedSignificantItem: ( + state: LogRateAnalysisTableState, + action: PayloadAction + ) => { + state.selectedSignificantItem = action.payload; + }, + setSkippedColumns: ( + state: LogRateAnalysisTableState, + action: PayloadAction + ) => { + state.skippedColumns = action.payload; + }, + }, +}); + +// Action creators are generated for each case reducer function +export const { + clearAllRowState, + setPinnedGroup, + setPinnedSignificantItem, + setSelectedGroup, + setSelectedSignificantItem, + setSkippedColumns, +} = logRateAnalysisTableSlice.actions; + +// Create listener middleware +export const localStorageListenerMiddleware = createListenerMiddleware(); + +// Add a listener to save skippedColumns to localStorage whenever it changes +localStorageListenerMiddleware.startListening({ + actionCreator: setSkippedColumns, + effect: (action, listenerApi) => { + const state = listenerApi.getState() as { logRateAnalysisTable: LogRateAnalysisTableState }; + try { + const serializedState = JSON.stringify(state.logRateAnalysisTable.skippedColumns); + localStorage.setItem(AIOPS_LOG_RATE_ANALYSIS_RESULT_COLUMNS, serializedState); + } catch (err) { + // eslint-disable-next-line no-console + console.warn('Failed to save state to localStorage:', err); + } + }, +}); diff --git a/x-pack/packages/ml/aiops_log_rate_analysis/state/store.tsx b/x-pack/packages/ml/aiops_log_rate_analysis/state/store.tsx index 1589b27348d89..9fd8e8240dde3 100644 --- a/x-pack/packages/ml/aiops_log_rate_analysis/state/store.tsx +++ b/x-pack/packages/ml/aiops_log_rate_analysis/state/store.tsx @@ -15,12 +15,19 @@ import { streamSlice } from '@kbn/ml-response-stream/client'; import { logRateAnalysisResultsSlice } from '../api/stream_reducer'; import { logRateAnalysisSlice } from './log_rate_analysis_slice'; -import { logRateAnalysisTableRowSlice } from './log_rate_analysis_table_row_slice'; +import { + logRateAnalysisTableSlice, + getPreloadedState, + localStorageListenerMiddleware, +} from './log_rate_analysis_table_slice'; import { logRateAnalysisFieldCandidatesSlice } from './log_rate_analysis_field_candidates_slice'; import type { InitialAnalysisStart } from './log_rate_analysis_slice'; const getReduxStore = () => configureStore({ + preloadedState: { + logRateAnalysisTable: getPreloadedState(), + }, reducer: { // General page state logRateAnalysis: logRateAnalysisSlice.reducer, @@ -28,11 +35,13 @@ const getReduxStore = () => logRateAnalysisFieldCandidates: logRateAnalysisFieldCandidatesSlice.reducer, // Analysis results logRateAnalysisResults: logRateAnalysisResultsSlice.reducer, - // Handles running the analysis - logRateAnalysisStream: streamSlice.reducer, - // Handles hovering and pinning table rows - logRateAnalysisTableRow: logRateAnalysisTableRowSlice.reducer, + // Handles running the analysis, needs to be "stream" for the async thunk to work properly. + stream: streamSlice.reducer, + // Handles hovering and pinning table rows and column selection + logRateAnalysisTable: logRateAnalysisTableSlice.reducer, }, + middleware: (getDefaultMiddleware) => + getDefaultMiddleware().prepend(localStorageListenerMiddleware.middleware), }); interface LogRateAnalysisReduxProviderProps { @@ -54,6 +63,6 @@ export const LogRateAnalysisReduxProvider: FC< }; // Infer the `RootState` and `AppDispatch` types from the store itself -export type AppStore = ReturnType; +type AppStore = ReturnType; export type RootState = ReturnType; export type AppDispatch = AppStore['dispatch']; diff --git a/x-pack/packages/ml/aiops_log_rate_analysis/state/use_current_selected_group.ts b/x-pack/packages/ml/aiops_log_rate_analysis/state/use_current_selected_group.ts index 9653691d3efd4..a19bd3e18a735 100644 --- a/x-pack/packages/ml/aiops_log_rate_analysis/state/use_current_selected_group.ts +++ b/x-pack/packages/ml/aiops_log_rate_analysis/state/use_current_selected_group.ts @@ -10,8 +10,8 @@ import { createSelector } from '@reduxjs/toolkit'; import type { RootState } from './store'; import { useAppSelector } from './hooks'; -const selectSelectedGroup = (s: RootState) => s.logRateAnalysisTableRow.selectedGroup; -const selectPinnedGroup = (s: RootState) => s.logRateAnalysisTableRow.pinnedGroup; +const selectSelectedGroup = (s: RootState) => s.logRateAnalysisTable.selectedGroup; +const selectPinnedGroup = (s: RootState) => s.logRateAnalysisTable.pinnedGroup; const selectCurrentSelectedGroup = createSelector( selectSelectedGroup, selectPinnedGroup, diff --git a/x-pack/packages/ml/aiops_log_rate_analysis/state/use_current_selected_significant_item.ts b/x-pack/packages/ml/aiops_log_rate_analysis/state/use_current_selected_significant_item.ts index d189d16fc2fa0..f7327d3033df0 100644 --- a/x-pack/packages/ml/aiops_log_rate_analysis/state/use_current_selected_significant_item.ts +++ b/x-pack/packages/ml/aiops_log_rate_analysis/state/use_current_selected_significant_item.ts @@ -11,9 +11,8 @@ import type { RootState } from './store'; import { useAppSelector } from './hooks'; const selectSelectedSignificantItem = (s: RootState) => - s.logRateAnalysisTableRow.selectedSignificantItem; -const selectPinnedSignificantItem = (s: RootState) => - s.logRateAnalysisTableRow.pinnedSignificantItem; + s.logRateAnalysisTable.selectedSignificantItem; +const selectPinnedSignificantItem = (s: RootState) => s.logRateAnalysisTable.pinnedSignificantItem; const selectCurrentSelectedSignificantItem = createSelector( selectSelectedSignificantItem, selectPinnedSignificantItem, diff --git a/x-pack/packages/ml/field_stats_flyout/field_stats_flyout_provider.tsx b/x-pack/packages/ml/field_stats_flyout/field_stats_flyout_provider.tsx index 678dec7d36f42..4e7a501140b01 100644 --- a/x-pack/packages/ml/field_stats_flyout/field_stats_flyout_provider.tsx +++ b/x-pack/packages/ml/field_stats_flyout/field_stats_flyout_provider.tsx @@ -7,9 +7,8 @@ import type { PropsWithChildren, FC } from 'react'; import React, { useCallback, useState } from 'react'; -import type { CoreStart } from '@kbn/core/public'; +import type { ThemeServiceStart } from '@kbn/core-theme-browser'; import type { DataView } from '@kbn/data-plugin/common'; -import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; import type { FieldStatsServices } from '@kbn/unified-field-list/src/components/field_stats'; import type { TimeRange as TimeRangeMs } from '@kbn/ml-date-picker'; import type { FieldStatsProps } from '@kbn/unified-field-list/src/components/field_stats'; @@ -18,32 +17,18 @@ import { getProcessedFields } from '@kbn/ml-data-grid'; import { stringHash } from '@kbn/ml-string-hash'; import { lastValueFrom } from 'rxjs'; import { useRef } from 'react'; -import { useKibana } from '@kbn/kibana-react-plugin/public'; import { getMergedSampleDocsForPopulatedFieldsQuery } from './populated_fields/get_merged_populated_fields_query'; import { FieldStatsFlyout } from './field_stats_flyout'; import { MLFieldStatsFlyoutContext } from './use_field_stats_flyout_context'; import { PopulatedFieldsCacheManager } from './populated_fields/populated_fields_cache_manager'; -type Services = CoreStart & { - data: DataPublicPluginStart; -}; - -function useDataSearch() { - const { data } = useKibana().services; - - if (!data) { - throw new Error('Kibana data service not available.'); - } - - return data.search; -} - /** * Props for the FieldStatsFlyoutProvider component. * * @typedef {Object} FieldStatsFlyoutProviderProps * @property dataView - The data view object. * @property fieldStatsServices - Services required for field statistics. + * @property theme - The EUI theme service. * @property [timeRangeMs] - Optional time range in milliseconds. * @property [dslQuery] - Optional DSL query for filtering field statistics. * @property [disablePopulatedFields] - Optional flag to disable populated fields. @@ -51,6 +36,7 @@ function useDataSearch() { export type FieldStatsFlyoutProviderProps = PropsWithChildren<{ dataView: DataView; fieldStatsServices: FieldStatsServices; + theme: ThemeServiceStart; timeRangeMs?: TimeRangeMs; dslQuery?: FieldStatsProps['dslQuery']; disablePopulatedFields?: boolean; @@ -79,12 +65,13 @@ export const FieldStatsFlyoutProvider: FC = (prop const { dataView, fieldStatsServices, + theme, timeRangeMs, dslQuery, disablePopulatedFields = false, children, } = props; - const search = useDataSearch(); + const { search } = fieldStatsServices.data; const [isFieldStatsFlyoutVisible, setFieldStatsIsFlyoutVisible] = useState(false); const [fieldName, setFieldName] = useState(); const [fieldValue, setFieldValue] = useState(); @@ -187,6 +174,7 @@ export const FieldStatsFlyoutProvider: FC = (prop fieldValue, timeRangeMs, populatedFields, + theme, }} > = (props) => { const { field, label, onButtonClick, disabled, isEmpty, hideTrigger } = props; - const themeVars = useThemeVars(); + const theme = useFieldStatsFlyoutThemeVars(); + const themeVars = useCurrentEuiThemeVars(theme); + const emptyFieldMessage = isEmpty ? ' ' + i18n.translate('xpack.ml.newJob.wizard.fieldContextPopover.emptyFieldInSampleDocsMsg', { diff --git a/x-pack/packages/ml/field_stats_flyout/tsconfig.json b/x-pack/packages/ml/field_stats_flyout/tsconfig.json index 0010d79432e34..df70aa27788b8 100644 --- a/x-pack/packages/ml/field_stats_flyout/tsconfig.json +++ b/x-pack/packages/ml/field_stats_flyout/tsconfig.json @@ -23,9 +23,7 @@ "@kbn/i18n", "@kbn/react-field", "@kbn/ml-anomaly-utils", - "@kbn/kibana-react-plugin", "@kbn/ml-kibana-theme", - "@kbn/core", "@kbn/ml-data-grid", "@kbn/ml-string-hash", "@kbn/ml-is-populated-object", @@ -33,5 +31,6 @@ "@kbn/ml-is-defined", "@kbn/field-types", "@kbn/ui-theme", + "@kbn/core-theme-browser", ] } diff --git a/x-pack/packages/ml/field_stats_flyout/use_field_stats_flyout_context.ts b/x-pack/packages/ml/field_stats_flyout/use_field_stats_flyout_context.ts index ec6c28873011c..121426352e6e4 100644 --- a/x-pack/packages/ml/field_stats_flyout/use_field_stats_flyout_context.ts +++ b/x-pack/packages/ml/field_stats_flyout/use_field_stats_flyout_context.ts @@ -7,6 +7,7 @@ import { createContext, useContext } from 'react'; import type { TimeRange as TimeRangeMs } from '@kbn/ml-date-picker'; +import type { ThemeServiceStart } from '@kbn/core-theme-browser'; /** * Represents the properties for the MLJobWizardFieldStatsFlyout component. @@ -21,6 +22,7 @@ interface MLJobWizardFieldStatsFlyoutProps { fieldValue?: string | number; timeRangeMs?: TimeRangeMs; populatedFields?: Set; + theme?: ThemeServiceStart; } /** @@ -34,6 +36,7 @@ export const MLFieldStatsFlyoutContext = createContext {}, timeRangeMs: undefined, populatedFields: undefined, + theme: undefined, }); /** @@ -41,5 +44,25 @@ export const MLFieldStatsFlyoutContext = createContext() { populatedFields, }; } + +export type UseFieldStatsTrigger = typeof useFieldStatsTrigger; diff --git a/x-pack/plugins/aiops/public/components/change_point_detection/fields_config.tsx b/x-pack/plugins/aiops/public/components/change_point_detection/fields_config.tsx index b1c0e3d89f35a..f967fffd45647 100644 --- a/x-pack/plugins/aiops/public/components/change_point_detection/fields_config.tsx +++ b/x-pack/plugins/aiops/public/components/change_point_detection/fields_config.tsx @@ -638,7 +638,7 @@ export const FieldsControls: FC> = ({ }) => { const { splitFieldsOptions, combinedQuery } = useChangePointDetectionContext(); const { dataView } = useDataSource(); - const { data, uiSettings, fieldFormats, charts, fieldStats } = useAiopsAppContext(); + const { data, uiSettings, fieldFormats, charts, fieldStats, theme } = useAiopsAppContext(); const timefilter = useTimefilter(); // required in order to trigger state updates useTimeRangeUpdates(); @@ -677,6 +677,7 @@ export const FieldsControls: FC> = ({ } : undefined } + theme={theme} > diff --git a/x-pack/plugins/aiops/public/components/document_count_content/document_count_content/document_count_content.tsx b/x-pack/plugins/aiops/public/components/document_count_content/document_count_content/document_count_content.tsx index 23caf21c39ee3..4dbf021e3b10b 100644 --- a/x-pack/plugins/aiops/public/components/document_count_content/document_count_content/document_count_content.tsx +++ b/x-pack/plugins/aiops/public/components/document_count_content/document_count_content/document_count_content.tsx @@ -15,6 +15,7 @@ import type { import { useAppSelector } from '@kbn/aiops-log-rate-analysis/state'; import { DocumentCountChartRedux } from '@kbn/aiops-components'; +import { AIOPS_EMBEDDABLE_ORIGIN } from '@kbn/aiops-common/constants'; import { useAiopsAppContext } from '../../../hooks/use_aiops_app_context'; @@ -37,17 +38,29 @@ export const DocumentCountContent: FC = ({ barHighlightColorOverride, ...docCountChartProps }) => { - const { data, uiSettings, fieldFormats, charts } = useAiopsAppContext(); + const { data, uiSettings, fieldFormats, charts, embeddingOrigin } = useAiopsAppContext(); const { documentStats } = useAppSelector((s) => s.logRateAnalysis); const { sampleProbability, totalCount, documentCountStats } = documentStats; if (documentCountStats === undefined) { - return totalCount !== undefined ? ( + return totalCount !== undefined && embeddingOrigin !== AIOPS_EMBEDDABLE_ORIGIN.DASHBOARD ? ( ) : null; } + if (embeddingOrigin === AIOPS_EMBEDDABLE_ORIGIN.DASHBOARD) { + return ( + + ); + } + return ( diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content.tsx index 7bf43037f45c0..2821b59353b52 100644 --- a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content.tsx +++ b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content.tsx @@ -7,7 +7,7 @@ import { isEqual } from 'lodash'; import React, { useCallback, useEffect, useMemo, useRef, type FC } from 'react'; -import { EuiButton, EuiEmptyPrompt, EuiHorizontalRule, EuiPanel } from '@elastic/eui'; +import { EuiButton, EuiEmptyPrompt, EuiSpacer, EuiPanel } from '@elastic/eui'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import type { BarStyleAccessor } from '@elastic/charts/dist/chart_types/xy_chart/utils/specs'; @@ -28,13 +28,16 @@ import { setInitialAnalysisStart, useAppDispatch, useAppSelector, + setGroupResults, } from '@kbn/aiops-log-rate-analysis/state'; +import { AIOPS_EMBEDDABLE_ORIGIN } from '@kbn/aiops-common/constants'; import { DocumentCountContent } from '../../document_count_content/document_count_content'; import { LogRateAnalysisResults, type LogRateAnalysisResultsData, } from '../log_rate_analysis_results'; +import { useAiopsAppContext } from '../../../hooks/use_aiops_app_context'; export const DEFAULT_SEARCH_QUERY: estypes.QueryDslQueryContainer = { match_all: {} }; const DEFAULT_SEARCH_BAR_QUERY: estypes.QueryDslQueryContainer = { @@ -69,9 +72,11 @@ export const LogRateAnalysisContent: FC = ({ onAnalysisCompleted, onWindowParametersChange, }) => { + const { embeddingOrigin } = useAiopsAppContext(); + const dispatch = useAppDispatch(); - const isRunning = useAppSelector((s) => s.logRateAnalysisStream.isRunning); + const isRunning = useAppSelector((s) => s.stream.isRunning); const significantItems = useAppSelector((s) => s.logRateAnalysisResults.significantItems); const significantItemsGroups = useAppSelector( (s) => s.logRateAnalysisResults.significantItemsGroups @@ -116,6 +121,7 @@ export const LogRateAnalysisContent: FC = ({ const { documentCountStats } = documentStats; function clearSelectionHandler() { + dispatch(setGroupResults(false)); dispatch(clearSelection()); dispatch(clearAllRowState()); } @@ -200,7 +206,11 @@ export const LogRateAnalysisContent: FC = ({ const changePointType = documentCountStats?.changePoint?.type; return ( - + {showDocumentCountContent && ( = ({ barStyleAccessor={barStyleAccessor} /> )} - + {showLogRateAnalysisResults && ( = ({ + timeRange, +}) => { + const { uiSettings } = useAiopsAppContext(); + const { dataView } = useDataSource(); + const { filters, query } = useFilterQueryUpdates(); + const appState = getDefaultLogRateAnalysisAppState({ + searchQuery: buildEsQuery( + dataView, + query ?? [], + filters ?? [], + uiSettings ? getEsQueryConfig(uiSettings) : undefined + ), + filters, + }); + const { searchQuery } = useSearch({ dataView, savedSearch: null }, appState, true); + + const timeRangeParsed = useMemo(() => { + if (timeRange) { + const min = datemath.parse(timeRange.from); + const max = datemath.parse(timeRange.to); + if (min && max) { + return { min, max }; + } + } + }, [timeRange]); + + return ( + <> + + + + ); +}; diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_options.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_options.tsx new file mode 100644 index 0000000000000..0aba8e2d763d4 --- /dev/null +++ b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_options.tsx @@ -0,0 +1,190 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { FC } from 'react'; +import React from 'react'; + +import { EuiButtonGroup, EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; + +import { i18n } from '@kbn/i18n'; +import { + clearAllRowState, + setGroupResults, + useAppDispatch, + useAppSelector, +} from '@kbn/aiops-log-rate-analysis/state'; +import { + commonColumns, + significantItemColumns, + setSkippedColumns, + type LogRateAnalysisResultsTableColumnName, +} from '@kbn/aiops-log-rate-analysis/state/log_rate_analysis_table_slice'; +import { setCurrentFieldFilterSkippedItems } from '@kbn/aiops-log-rate-analysis/state/log_rate_analysis_field_candidates_slice'; + +import { ItemFilterPopover as FieldFilterPopover } from './item_filter_popover'; +import { ItemFilterPopover as ColumnFilterPopover } from './item_filter_popover'; + +const groupResultsMessage = i18n.translate( + 'xpack.aiops.logRateAnalysis.resultsTable.groupedSwitchLabel.groupResults', + { + defaultMessage: 'Smart grouping', + } +); +const fieldFilterHelpText = i18n.translate('xpack.aiops.logRateAnalysis.page.fieldFilterHelpText', { + defaultMessage: + 'Deselect non-relevant fields to remove them from the analysis and click the Apply button to rerun the analysis. Use the search bar to filter the list, then select/deselect multiple fields with the actions below.', +}); +const columnsFilterHelpText = i18n.translate( + 'xpack.aiops.logRateAnalysis.page.columnsFilterHelpText', + { + defaultMessage: 'Configure visible columns.', + } +); +const disabledFieldFilterApplyButtonTooltipContent = i18n.translate( + 'xpack.aiops.analysis.fieldSelectorNotEnoughFieldsSelected', + { + defaultMessage: 'Grouping requires at least 2 fields to be selected.', + } +); +const disabledColumnFilterApplyButtonTooltipContent = i18n.translate( + 'xpack.aiops.analysis.columnSelectorNotEnoughColumnsSelected', + { + defaultMessage: 'At least one column must be selected.', + } +); +const columnSearchAriaLabel = i18n.translate('xpack.aiops.analysis.columnSelectorAriaLabel', { + defaultMessage: 'Filter columns', +}); +const columnsButton = i18n.translate('xpack.aiops.logRateAnalysis.page.columnsFilterButtonLabel', { + defaultMessage: 'Columns', +}); +const fieldsButton = i18n.translate('xpack.aiops.analysis.fieldsButtonLabel', { + defaultMessage: 'Fields', +}); +const groupResultsOffMessage = i18n.translate( + 'xpack.aiops.logRateAnalysis.resultsTable.groupedSwitchLabel.groupResultsOff', + { + defaultMessage: 'Off', + } +); +const groupResultsOnMessage = i18n.translate( + 'xpack.aiops.logRateAnalysis.resultsTable.groupedSwitchLabel.groupResultsOn', + { + defaultMessage: 'On', + } +); +const resultsGroupedOffId = 'aiopsLogRateAnalysisGroupingOff'; +const resultsGroupedOnId = 'aiopsLogRateAnalysisGroupingOn'; + +export interface LogRateAnalysisOptionsProps { + foundGroups: boolean; + growFirstItem?: boolean; +} + +export const LogRateAnalysisOptions: FC = ({ + foundGroups, + growFirstItem = false, +}) => { + const dispatch = useAppDispatch(); + + const { groupResults } = useAppSelector((s) => s.logRateAnalysis); + const { isRunning } = useAppSelector((s) => s.stream); + const fieldCandidates = useAppSelector((s) => s.logRateAnalysisFieldCandidates); + const { skippedColumns } = useAppSelector((s) => s.logRateAnalysisTable); + const { fieldFilterUniqueItems, initialFieldFilterSkippedItems } = fieldCandidates; + const fieldFilterButtonDisabled = + isRunning || fieldCandidates.isLoading || fieldFilterUniqueItems.length === 0; + const toggleIdSelected = groupResults ? resultsGroupedOnId : resultsGroupedOffId; + + const onGroupResultsToggle = (optionId: string) => { + dispatch(setGroupResults(optionId === resultsGroupedOnId)); + // When toggling the group switch, clear all row selections + dispatch(clearAllRowState()); + }; + + const onVisibleColumnsChange = (columns: LogRateAnalysisResultsTableColumnName[]) => { + dispatch(setSkippedColumns(columns)); + }; + + const onFieldsFilterChange = (skippedFieldsUpdate: string[]) => { + dispatch(setCurrentFieldFilterSkippedItems(skippedFieldsUpdate)); + }; + + // Disable the grouping switch toggle only if no groups were found, + // the toggle wasn't enabled already and no fields were selected to be skipped. + const disabledGroupResultsSwitch = !foundGroups && !groupResults; + + const toggleButtons = [ + { + id: resultsGroupedOffId, + label: groupResultsOffMessage, + 'data-test-subj': 'aiopsLogRateAnalysisGroupSwitchOff', + }, + { + id: resultsGroupedOnId, + label: groupResultsOnMessage, + 'data-test-subj': 'aiopsLogRateAnalysisGroupSwitchOn', + }, + ]; + + return ( + <> + + + + {groupResultsMessage} + + + + + + + + + + + void} + /> + + + ); +}; diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_results.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_results.tsx index ad8e7740b505d..1eb4f8fd0af0d 100644 --- a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_results.tsx +++ b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_results.tsx @@ -11,12 +11,13 @@ import { isEqual } from 'lodash'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { + EuiButtonIcon, EuiButton, - EuiButtonGroup, EuiCallOut, EuiEmptyPrompt, EuiFlexGroup, EuiFlexItem, + EuiToolTip, EuiSpacer, EuiText, } from '@elastic/eui'; @@ -26,6 +27,7 @@ import { ProgressControls } from '@kbn/aiops-components'; import { cancelStream, startStream } from '@kbn/ml-response-stream/client'; import { clearAllRowState, + setGroupResults, useAppDispatch, useAppSelector, } from '@kbn/aiops-log-rate-analysis/state'; @@ -37,8 +39,7 @@ import { import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import type { SignificantItem, SignificantItemGroup } from '@kbn/ml-agg-utils'; -import { useStorage } from '@kbn/ml-local-storage'; -import { AIOPS_ANALYSIS_RUN_ORIGIN } from '@kbn/aiops-common/constants'; +import { AIOPS_ANALYSIS_RUN_ORIGIN, AIOPS_EMBEDDABLE_ORIGIN } from '@kbn/aiops-common/constants'; import type { AiopsLogRateAnalysisSchema } from '@kbn/aiops-log-rate-analysis/api/schema'; import type { AiopsLogRateAnalysisSchemaSignificantItem } from '@kbn/aiops-log-rate-analysis/api/schema_v3'; import { @@ -50,15 +51,6 @@ import { fetchFieldCandidates } from '@kbn/aiops-log-rate-analysis/state/log_rat import { useAiopsAppContext } from '../../hooks/use_aiops_app_context'; import { useDataSource } from '../../hooks/use_data_source'; -import { - commonColumns, - significantItemColumns, -} from '../log_rate_analysis_results_table/use_columns'; -import { - AIOPS_LOG_RATE_ANALYSIS_RESULT_COLUMNS, - type AiOpsKey, - type AiOpsStorageMapped, -} from '../../types/storage'; import { getGroupTableItems, @@ -66,68 +58,15 @@ import { LogRateAnalysisResultsGroupsTable, } from '../log_rate_analysis_results_table'; -import { ItemFilterPopover as FieldFilterPopover } from './item_filter_popover'; -import { ItemFilterPopover as ColumnFilterPopover } from './item_filter_popover'; import { LogRateAnalysisInfoPopover } from './log_rate_analysis_info_popover'; -import type { ColumnNames } from '../log_rate_analysis_results_table'; +import { LogRateAnalysisOptions } from './log_rate_analysis_options'; -const groupResultsMessage = i18n.translate( - 'xpack.aiops.logRateAnalysis.resultsTable.groupedSwitchLabel.groupResults', - { - defaultMessage: 'Smart grouping', - } -); const groupResultsHelpMessage = i18n.translate( 'xpack.aiops.logRateAnalysis.resultsTable.groupedSwitchLabel.groupResultsHelpMessage', { defaultMessage: 'Items which are unique to a group are marked by an asterisk (*).', } ); -const groupResultsOffMessage = i18n.translate( - 'xpack.aiops.logRateAnalysis.resultsTable.groupedSwitchLabel.groupResultsOff', - { - defaultMessage: 'Off', - } -); -const groupResultsOnMessage = i18n.translate( - 'xpack.aiops.logRateAnalysis.resultsTable.groupedSwitchLabel.groupResultsOn', - { - defaultMessage: 'On', - } -); -const resultsGroupedOffId = 'aiopsLogRateAnalysisGroupingOff'; -const resultsGroupedOnId = 'aiopsLogRateAnalysisGroupingOn'; -const fieldFilterHelpText = i18n.translate('xpack.aiops.logRateAnalysis.page.fieldFilterHelpText', { - defaultMessage: - 'Deselect non-relevant fields to remove them from the analysis and click the Apply button to rerun the analysis. Use the search bar to filter the list, then select/deselect multiple fields with the actions below.', -}); -const columnsFilterHelpText = i18n.translate( - 'xpack.aiops.logRateAnalysis.page.columnsFilterHelpText', - { - defaultMessage: 'Configure visible columns.', - } -); -const disabledFieldFilterApplyButtonTooltipContent = i18n.translate( - 'xpack.aiops.analysis.fieldSelectorNotEnoughFieldsSelected', - { - defaultMessage: 'Grouping requires at least 2 fields to be selected.', - } -); -const disabledColumnFilterApplyButtonTooltipContent = i18n.translate( - 'xpack.aiops.analysis.columnSelectorNotEnoughColumnsSelected', - { - defaultMessage: 'At least one column must be selected.', - } -); -const columnSearchAriaLabel = i18n.translate('xpack.aiops.analysis.columnSelectorAriaLabel', { - defaultMessage: 'Filter columns', -}); -const columnsButton = i18n.translate('xpack.aiops.logRateAnalysis.page.columnsFilterButtonLabel', { - defaultMessage: 'Columns', -}); -const fieldsButton = i18n.translate('xpack.aiops.analysis.fieldsButtonLabel', { - defaultMessage: 'Fields', -}); /** * Interface for log rate analysis results data. @@ -173,10 +112,12 @@ export const LogRateAnalysisResults: FC = ({ documentStats: { sampleProbability }, stickyHistogram, isBrushCleared, + groupResults, } = useAppSelector((s) => s.logRateAnalysis); - const { isRunning, errors: streamErrors } = useAppSelector((s) => s.logRateAnalysisStream); + const { isRunning, errors: streamErrors } = useAppSelector((s) => s.stream); const data = useAppSelector((s) => s.logRateAnalysisResults); const fieldCandidates = useAppSelector((s) => s.logRateAnalysisFieldCandidates); + const { skippedColumns } = useAppSelector((s) => s.logRateAnalysisTable); const { currentAnalysisWindowParameters } = data; // Store the performance metric's start time using a ref @@ -185,61 +126,37 @@ export const LogRateAnalysisResults: FC = ({ const abortCtrl = useRef(new AbortController()); const previousSearchQuery = useRef(searchQuery); - const [groupResults, setGroupResults] = useState(false); const [overrides, setOverrides] = useState( undefined ); const [shouldStart, setShouldStart] = useState(false); - const [toggleIdSelected, setToggleIdSelected] = useState(resultsGroupedOffId); - const [skippedColumns, setSkippedColumns] = useStorage< - AiOpsKey, - AiOpsStorageMapped - >(AIOPS_LOG_RATE_ANALYSIS_RESULT_COLUMNS, ['p-value', 'Baseline rate', 'Deviation rate']); - // null is used as the uninitialized state to identify the first load. - const [skippedFields, setSkippedFields] = useState(null); - - const onGroupResultsToggle = (optionId: string) => { - setToggleIdSelected(optionId); - setGroupResults(optionId === resultsGroupedOnId); - - // When toggling the group switch, clear all row selections - dispatch(clearAllRowState()); + const [embeddableOptionsVisible, setEmbeddableOptionsVisible] = useState(false); + + const onEmbeddableOptionsClickHandler = () => { + setEmbeddableOptionsVisible((s) => !s); }; - const { - fieldFilterUniqueItems, - fieldFilterSkippedItems, - keywordFieldCandidates, - textFieldCandidates, - } = fieldCandidates; - const fieldFilterButtonDisabled = - isRunning || fieldCandidates.isLoading || fieldFilterUniqueItems.length === 0; - - // Set skipped fields only on first load, otherwise we'd overwrite the user's selection. + const { currentFieldFilterSkippedItems, keywordFieldCandidates, textFieldCandidates } = + fieldCandidates; + useEffect(() => { - if (skippedFields === null && fieldFilterSkippedItems.length > 0) - setSkippedFields(fieldFilterSkippedItems); - }, [fieldFilterSkippedItems, skippedFields]); + if (currentFieldFilterSkippedItems === null) return; - const onFieldsFilterChange = (skippedFieldsUpdate: string[]) => { dispatch(resetResults()); - setSkippedFields(skippedFieldsUpdate); setOverrides({ loaded: 0, remainingKeywordFieldCandidates: keywordFieldCandidates.filter( - (d) => !skippedFieldsUpdate.includes(d) + (d) => !currentFieldFilterSkippedItems.includes(d) ), remainingTextFieldCandidates: textFieldCandidates.filter( - (d) => !skippedFieldsUpdate.includes(d) + (d) => !currentFieldFilterSkippedItems.includes(d) ), regroupOnly: false, }); startHandler(true, false); - }; - - const onVisibleColumnsChange = (columns: ColumnNames[]) => { - setSkippedColumns(columns); - }; + // custom check to trigger on currentFieldFilterSkippedItems change + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [currentFieldFilterSkippedItems]); function cancelHandler() { abortCtrl.current.abort(); @@ -299,18 +216,20 @@ export const LogRateAnalysisResults: FC = ({ dispatch(resetResults()); setOverrides({ remainingKeywordFieldCandidates: keywordFieldCandidates.filter( - (d) => skippedFields === null || !skippedFields.includes(d) + (d) => + currentFieldFilterSkippedItems === null || !currentFieldFilterSkippedItems.includes(d) ), remainingTextFieldCandidates: textFieldCandidates.filter( - (d) => skippedFields === null || !skippedFields.includes(d) + (d) => + currentFieldFilterSkippedItems === null || !currentFieldFilterSkippedItems.includes(d) ), }); } // Reset grouping to false and clear all row selections when restarting the analysis. if (resetGroupButton) { - setGroupResults(false); - setToggleIdSelected(resultsGroupedOffId); + dispatch(setGroupResults(false)); + // When toggling the group switch, clear all row selections dispatch(clearAllRowState()); } @@ -372,12 +291,13 @@ export const LogRateAnalysisResults: FC = ({ // eslint-disable-next-line react-hooks/exhaustive-deps }, [shouldStart]); + // On mount, fetch field candidates first. Once they are populated, + // the actual analysis will be triggered. useEffect(() => { if (startParams) { dispatch(fetchFieldCandidates(startParams)); dispatch(setCurrentAnalysisType(analysisType)); dispatch(setCurrentAnalysisWindowParameters(chartWindowParameters)); - dispatch(startStream(startParams)); } // eslint-disable-next-line react-hooks/exhaustive-deps }, []); @@ -413,23 +333,6 @@ export const LogRateAnalysisResults: FC = ({ }, 0); const foundGroups = groupTableItems.length > 0 && groupItemCount > 0; - // Disable the grouping switch toggle only if no groups were found, - // the toggle wasn't enabled already and no fields were selected to be skipped. - const disabledGroupResultsSwitch = !foundGroups && !groupResults; - - const toggleButtons = [ - { - id: resultsGroupedOffId, - label: groupResultsOffMessage, - 'data-test-subj': 'aiopsLogRateAnalysisGroupSwitchOff', - }, - { - id: resultsGroupedOnId, - label: groupResultsOnMessage, - 'data-test-subj': 'aiopsLogRateAnalysisGroupSwitchOn', - }, - ]; - return (
= ({ shouldRerunAnalysis={shouldRerunAnalysis || searchQueryUpdated} analysisInfo={} > - - + <> + {embeddingOrigin !== AIOPS_EMBEDDABLE_ORIGIN.DASHBOARD && ( + + )} + {embeddingOrigin === AIOPS_EMBEDDABLE_ORIGIN.DASHBOARD && ( - {groupResultsMessage} + + + - - - - - - - - - - void} - /> - + )} + + {embeddingOrigin === AIOPS_EMBEDDABLE_ORIGIN.DASHBOARD && embeddableOptionsVisible && ( + <> + + + + + + )} + {errors.length > 0 ? ( <> diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/index.ts b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/index.ts index 6813e71704918..c5112723e2784 100644 --- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/index.ts +++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/index.ts @@ -8,4 +8,3 @@ export { getGroupTableItems } from './get_group_table_items'; export { LogRateAnalysisResultsTable } from './log_rate_analysis_results_table'; export { LogRateAnalysisResultsGroupsTable } from './log_rate_analysis_results_table_groups'; -export type { ColumnNames } from './use_columns'; diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table.tsx index 83be306e93f50..e9072c2929f14 100644 --- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table.tsx +++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table.tsx @@ -83,13 +83,11 @@ export const LogRateAnalysisResultsTable: FC = }, [allSignificantItems, groupFilter]); const zeroDocsFallback = useAppSelector((s) => s.logRateAnalysisResults.zeroDocsFallback); - const pinnedGroup = useAppSelector((s) => s.logRateAnalysisTableRow.pinnedGroup); - const selectedGroup = useAppSelector((s) => s.logRateAnalysisTableRow.selectedGroup); - const pinnedSignificantItem = useAppSelector( - (s) => s.logRateAnalysisTableRow.pinnedSignificantItem - ); + const pinnedGroup = useAppSelector((s) => s.logRateAnalysisTable.pinnedGroup); + const selectedGroup = useAppSelector((s) => s.logRateAnalysisTable.selectedGroup); + const pinnedSignificantItem = useAppSelector((s) => s.logRateAnalysisTable.pinnedSignificantItem); const selectedSignificantItem = useAppSelector( - (s) => s.logRateAnalysisTableRow.selectedSignificantItem + (s) => s.logRateAnalysisTable.selectedSignificantItem ); const dispatch = useAppDispatch(); diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table_groups.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table_groups.tsx index d69a0fec7200f..6bd0a5e4ce213 100644 --- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table_groups.tsx +++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/log_rate_analysis_results_table_groups.tsx @@ -91,8 +91,8 @@ export const LogRateAnalysisResultsGroupsTable: FC s.logRateAnalysisTableRow.pinnedGroup); - const selectedGroup = useAppSelector((s) => s.logRateAnalysisTableRow.selectedGroup); + const pinnedGroup = useAppSelector((s) => s.logRateAnalysisTable.pinnedGroup); + const selectedGroup = useAppSelector((s) => s.logRateAnalysisTable.selectedGroup); const dispatch = useAppDispatch(); const isMounted = useMountedState(); diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_columns.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_columns.tsx index f3b8195767101..c5b7a83e33641 100644 --- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_columns.tsx +++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_columns.tsx @@ -21,6 +21,11 @@ import { type SignificantItem, SIGNIFICANT_ITEM_TYPE } from '@kbn/ml-agg-utils'; import { getCategoryQuery } from '@kbn/aiops-log-pattern-analysis/get_category_query'; import type { FieldStatsServices } from '@kbn/unified-field-list/src/components/field_stats'; import { useAppSelector } from '@kbn/aiops-log-rate-analysis/state'; +import { + commonColumns, + significantItemColumns, + type LogRateAnalysisResultsTableColumnName, +} from '@kbn/aiops-log-rate-analysis/state/log_rate_analysis_table_slice'; import { getBaselineAndDeviationRates, getLogRateChange, @@ -40,55 +45,6 @@ const TRUNCATE_TEXT_LINES = 3; const UNIQUE_COLUMN_WIDTH = '40px'; const NOT_AVAILABLE = '--'; -export const commonColumns = { - ['Log rate']: i18n.translate('xpack.aiops.logRateAnalysis.resultsTable.logRateColumnTitle', { - defaultMessage: 'Log rate', - }), - ['Doc count']: i18n.translate('xpack.aiops.logRateAnalysis.resultsTable.docCountColumnTitle', { - defaultMessage: 'Doc count', - }), - ['p-value']: i18n.translate('xpack.aiops.logRateAnalysis.resultsTable.pValueColumnTitle', { - defaultMessage: 'p-value', - }), - ['Impact']: i18n.translate('xpack.aiops.logRateAnalysis.resultsTable.impactColumnTitle', { - defaultMessage: 'Impact', - }), - ['Baseline rate']: i18n.translate( - 'xpack.aiops.logRateAnalysis.resultsTable.baselineRateColumnTitle', - { - defaultMessage: 'Baseline rate', - } - ), - ['Deviation rate']: i18n.translate( - 'xpack.aiops.logRateAnalysis.resultsTable.deviationRateColumnTitle', - { - defaultMessage: 'Deviation rate', - } - ), - ['Log rate change']: i18n.translate( - 'xpack.aiops.logRateAnalysis.resultsTable.logRateChangeColumnTitle', - { - defaultMessage: 'Log rate change', - } - ), - ['Actions']: i18n.translate('xpack.aiops.logRateAnalysis.resultsTable.actionsColumnTitle', { - defaultMessage: 'Actions', - }), -}; - -export const significantItemColumns = { - ['Field name']: i18n.translate('xpack.aiops.logRateAnalysis.resultsTable.fieldNameColumnTitle', { - defaultMessage: 'Field name', - }), - ['Field value']: i18n.translate( - 'xpack.aiops.logRateAnalysis.resultsTable.fieldValueColumnTitle', - { - defaultMessage: 'Field value', - } - ), - ...commonColumns, -} as const; - export const LOG_RATE_ANALYSIS_RESULTS_TABLE_TYPE = { GROUPS: 'groups', SIGNIFICANT_ITEMS: 'significantItems', @@ -96,8 +52,6 @@ export const LOG_RATE_ANALYSIS_RESULTS_TABLE_TYPE = { export type LogRateAnalysisResultsTableType = (typeof LOG_RATE_ANALYSIS_RESULTS_TABLE_TYPE)[keyof typeof LOG_RATE_ANALYSIS_RESULTS_TABLE_TYPE]; -export type ColumnNames = keyof typeof significantItemColumns | 'unique'; - const logRateHelpMessage = i18n.translate( 'xpack.aiops.logRateAnalysis.resultsTable.logRateColumnTooltip', { @@ -213,7 +167,7 @@ export const useColumns = ( const { earliest, latest } = useAppSelector((s) => s.logRateAnalysis); const timeRangeMs = { from: earliest ?? 0, to: latest ?? 0 }; - const loading = useAppSelector((s) => s.logRateAnalysisStream.isRunning); + const loading = useAppSelector((s) => s.stream.isRunning); const zeroDocsFallback = useAppSelector((s) => s.logRateAnalysisResults.zeroDocsFallback); const { documentStats: { documentCountStats }, @@ -271,7 +225,10 @@ export const useColumns = ( [currentAnalysisType, buckets] ); - const columnsMap: Record> = useMemo( + const columnsMap: Record< + LogRateAnalysisResultsTableColumnName, + EuiBasicTableColumn + > = useMemo( () => ({ ['Field name']: { 'data-test-subj': 'aiopsLogRateAnalysisResultsTableColumnFieldName', @@ -615,20 +572,21 @@ export const useColumns = ( ); const columns = useMemo(() => { - const columnNamesToReturn: Partial> = isGroupsTable - ? commonColumns - : significantItemColumns; + const columnNamesToReturn: Partial> = + isGroupsTable ? commonColumns : significantItemColumns; const columnsToReturn = []; for (const columnName in columnNamesToReturn) { if ( Object.hasOwn(columnNamesToReturn, columnName) === false || - skippedColumns.includes(columnNamesToReturn[columnName as ColumnNames] as string) || + skippedColumns.includes( + columnNamesToReturn[columnName as LogRateAnalysisResultsTableColumnName] as string + ) || ((columnName === 'p-value' || columnName === 'Impact') && zeroDocsFallback) ) continue; - columnsToReturn.push(columnsMap[columnName as ColumnNames]); + columnsToReturn.push(columnsMap[columnName as LogRateAnalysisResultsTableColumnName]); } if (isExpandedRow === true) { diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_view_in_discover_action.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_view_in_discover_action.tsx index ec4284d6452e5..765f1435a93ad 100644 --- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_view_in_discover_action.tsx +++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_view_in_discover_action.tsx @@ -28,8 +28,8 @@ export const useViewInDiscoverAction = (dataViewId?: string): TableItemAction => const { application, share, data } = useAiopsAppContext(); const discoverLocator = useMemo( - () => share.url.locators.get('DISCOVER_APP_LOCATOR'), - [share.url.locators] + () => share?.url.locators.get('DISCOVER_APP_LOCATOR'), + [share?.url.locators] ); const discoverUrlError = useMemo(() => { diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_view_in_log_pattern_analysis_action.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_view_in_log_pattern_analysis_action.tsx index dbac6fbe8c9f3..ec1f6774b6b46 100644 --- a/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_view_in_log_pattern_analysis_action.tsx +++ b/x-pack/plugins/aiops/public/components/log_rate_analysis_results_table/use_view_in_log_pattern_analysis_action.tsx @@ -32,7 +32,7 @@ const viewInLogPatternAnalysisMessage = i18n.translate( export const useViewInLogPatternAnalysisAction = (dataViewId?: string): TableItemAction => { const { application, share, data } = useAiopsAppContext(); - const mlLocator = useMemo(() => share.url.locators.get('ML_APP_LOCATOR'), [share.url.locators]); + const mlLocator = useMemo(() => share?.url.locators.get('ML_APP_LOCATOR'), [share?.url.locators]); const generateLogPatternAnalysisUrl = async ( groupTableItem: GroupTableItem | SignificantItem diff --git a/x-pack/plugins/aiops/public/components/time_field_warning.tsx b/x-pack/plugins/aiops/public/components/time_field_warning.tsx new file mode 100644 index 0000000000000..beb64917af538 --- /dev/null +++ b/x-pack/plugins/aiops/public/components/time_field_warning.tsx @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiSpacer, EuiCallOut } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; + +export const TimeFieldWarning = () => { + return ( + <> + +

+ {i18n.translate('xpack.aiops.embeddableMenu.timeFieldWarning.title.description', { + defaultMessage: 'The analysis can only be run on data views with a time field.', + })} +

+
+ + + ); +}; diff --git a/x-pack/plugins/aiops/public/embeddables/change_point_chart/change_point_chart_initializer.tsx b/x-pack/plugins/aiops/public/embeddables/change_point_chart/change_point_chart_initializer.tsx index 08cf6ffd7dcb1..e69511fe45f92 100644 --- a/x-pack/plugins/aiops/public/embeddables/change_point_chart/change_point_chart_initializer.tsx +++ b/x-pack/plugins/aiops/public/embeddables/change_point_chart/change_point_chart_initializer.tsx @@ -18,16 +18,23 @@ import { EuiHorizontalRule, EuiTitle, } from '@elastic/eui'; +import { DatePickerContextProvider, type DatePickerDependencies } from '@kbn/ml-date-picker'; +import { UI_SETTINGS } from '@kbn/data-plugin/common'; +import type { FieldStatsServices } from '@kbn/unified-field-list/src/components/field_stats'; import { ES_FIELD_TYPES } from '@kbn/field-types'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { isPopulatedObject } from '@kbn/ml-is-populated-object'; +import { FieldStatsFlyoutProvider } from '@kbn/ml-field-stats-flyout'; +import { useTimefilter } from '@kbn/ml-date-picker'; import { pick } from 'lodash'; import type { FC } from 'react'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; import usePrevious from 'react-use/lib/usePrevious'; import { + ChangePointDetectionContextProvider, ChangePointDetectionControlsContextProvider, + useChangePointDetectionContext, useChangePointDetectionControlsContext, } from '../../components/change_point_detection/change_point_detection_context'; import { DEFAULT_AGG_FUNCTION } from '../../components/change_point_detection/constants'; @@ -38,7 +45,8 @@ import { PartitionsSelector } from '../../components/change_point_detection/part import { SplitFieldSelector } from '../../components/change_point_detection/split_field_selector'; import { ViewTypeSelector } from '../../components/change_point_detection/view_type_selector'; import { useAiopsAppContext } from '../../hooks/use_aiops_app_context'; -import { DataSourceContextProvider } from '../../hooks/use_data_source'; +import { useDataSource, DataSourceContextProvider } from '../../hooks/use_data_source'; +import { FilterQueryContextProvider } from '../../hooks/use_filters_query'; import { DEFAULT_SERIES } from './const'; import type { ChangePointEmbeddableRuntimeState } from './types'; @@ -53,11 +61,18 @@ export const ChangePointChartInitializer: FC = ({ onCreate, onCancel, }) => { + const appContextValue = useAiopsAppContext(); const { + data: { dataViews }, unifiedSearch: { ui: { IndexPatternSelect }, }, - } = useAiopsAppContext(); + } = appContextValue; + + const datePickerDeps: DatePickerDependencies = { + ...pick(appContextValue, ['data', 'http', 'notifications', 'theme', 'uiSettings', 'i18n']), + uiSettingsKeys: UI_SETTINGS, + }; const [dataViewId, setDataViewId] = useState(initialInput?.dataViewId ?? ''); const [viewType, setViewType] = useState(initialInput?.viewType ?? 'charts'); @@ -135,15 +150,21 @@ export const ChangePointChartInitializer: FC = ({ }} /> - - - - - + + + + + + + + + + + @@ -190,7 +211,13 @@ export const FormControls: FC<{ onChange: (update: FormControlsProps) => void; onValidationChange: (isValid: boolean) => void; }> = ({ formInput, onChange, onValidationChange }) => { + const { charts, data, fieldFormats, theme, uiSettings } = useAiopsAppContext(); + const { dataView } = useDataSource(); + const { combinedQuery } = useChangePointDetectionContext(); const { metricFieldOptions, splitFieldsOptions } = useChangePointDetectionControlsContext(); + const timefilter = useTimefilter(); + const timefilterActiveBounds = timefilter.getActiveBounds(); + const prevMetricFieldOptions = usePrevious(metricFieldOptions); const enableSearch = useMemo(() => { @@ -238,10 +265,33 @@ export const FormControls: FC<{ [formInput, onChange] ); + const fieldStatsServices: FieldStatsServices = useMemo(() => { + return { + uiSettings, + dataViews: data.dataViews, + data, + fieldFormats, + charts, + }; + }, [uiSettings, data, fieldFormats, charts]); + if (!isPopulatedObject(formInput)) return null; return ( - <> + updateCallback({ maxSeriesToPlot: v })} onValidationChange={(result) => onValidationChange(result === null)} /> - + ); }; diff --git a/x-pack/plugins/aiops/public/embeddables/change_point_chart/embeddable_change_point_chart_factory.tsx b/x-pack/plugins/aiops/public/embeddables/change_point_chart/embeddable_change_point_chart_factory.tsx index 7cf39eb1cf4ae..2ce1a46780db1 100644 --- a/x-pack/plugins/aiops/public/embeddables/change_point_chart/embeddable_change_point_chart_factory.tsx +++ b/x-pack/plugins/aiops/public/embeddables/change_point_chart/embeddable_change_point_chart_factory.tsx @@ -11,7 +11,6 @@ import { } from '@kbn/aiops-change-point-detection/constants'; import type { Reference } from '@kbn/content-management-utils'; import type { StartServicesAccessor } from '@kbn/core-lifecycle-browser'; -import { type DataPublicPluginStart } from '@kbn/data-plugin/public'; import type { DataView } from '@kbn/data-views-plugin/common'; import { DATA_VIEW_SAVED_OBJECT_TYPE } from '@kbn/data-views-plugin/common'; import type { ReactEmbeddableFactory } from '@kbn/embeddable-plugin/public'; @@ -38,32 +37,8 @@ import type { ChangePointEmbeddableState, } from './types'; -export interface EmbeddableChangePointChartStartServices { - data: DataPublicPluginStart; -} - export type EmbeddableChangePointChartType = typeof EMBEDDABLE_CHANGE_POINT_CHART_TYPE; -export const getDependencies = async ( - getStartServices: StartServicesAccessor -) => { - const [ - { http, uiSettings, notifications, ...startServices }, - { lens, data, usageCollection, fieldFormats }, - ] = await getStartServices(); - - return { - http, - uiSettings, - data, - notifications, - lens, - usageCollection, - fieldFormats, - ...startServices, - }; -}; - export const getChangePointChartEmbeddableFactory = ( getStartServices: StartServicesAccessor ) => { @@ -88,20 +63,6 @@ export const getChangePointChartEmbeddableFactory = ( buildEmbeddable: async (state, buildApi, uuid, parentApi) => { const [coreStart, pluginStart] = await getStartServices(); - const { http, uiSettings, notifications, ...startServices } = coreStart; - const { lens, data, usageCollection, fieldFormats } = pluginStart; - - const deps = { - http, - uiSettings, - data, - notifications, - lens, - usageCollection, - fieldFormats, - ...startServices, - }; - const { api: timeRangeApi, comparators: timeRangeComparators, @@ -120,7 +81,7 @@ export const getChangePointChartEmbeddableFactory = ( const blockingError = new BehaviorSubject(undefined); const dataViews$ = new BehaviorSubject([ - await deps.data.dataViews.get(state.dataViewId), + await pluginStart.data.dataViews.get(state.dataViewId), ]); const api = buildApi( diff --git a/x-pack/plugins/aiops/public/embeddables/change_point_chart/types.ts b/x-pack/plugins/aiops/public/embeddables/change_point_chart/types.ts index 4a39020a299c9..f86270bdaf19d 100644 --- a/x-pack/plugins/aiops/public/embeddables/change_point_chart/types.ts +++ b/x-pack/plugins/aiops/public/embeddables/change_point_chart/types.ts @@ -15,14 +15,6 @@ import type { SerializedTimeRange, SerializedTitles, } from '@kbn/presentation-publishing'; -import type { FC } from 'react'; -import type { SelectedChangePoint } from '../../components/change_point_detection/change_point_detection_context'; - -export type ViewComponent = FC<{ - changePoints: SelectedChangePoint[]; - interval: string; - onRenderComplete?: () => void; -}>; export interface ChangePointComponentApi { viewType: PublishingSubject; diff --git a/x-pack/plugins/aiops/public/embeddables/index.ts b/x-pack/plugins/aiops/public/embeddables/index.ts index b7d9ad25951fb..dae1f0eb3eeec 100644 --- a/x-pack/plugins/aiops/public/embeddables/index.ts +++ b/x-pack/plugins/aiops/public/embeddables/index.ts @@ -9,6 +9,7 @@ import type { CoreSetup } from '@kbn/core-lifecycle-browser'; import type { EmbeddableSetup } from '@kbn/embeddable-plugin/public'; import { EMBEDDABLE_CHANGE_POINT_CHART_TYPE } from '@kbn/aiops-change-point-detection/constants'; import { EMBEDDABLE_PATTERN_ANALYSIS_TYPE } from '@kbn/aiops-log-pattern-analysis/constants'; +import { EMBEDDABLE_LOG_RATE_ANALYSIS_TYPE } from '@kbn/aiops-log-rate-analysis/constants'; import type { AiopsPluginStart, AiopsPluginStartDeps } from '../types'; export const registerEmbeddables = ( @@ -23,4 +24,8 @@ export const registerEmbeddables = ( const { getPatternAnalysisEmbeddableFactory } = await import('./pattern_analysis'); return getPatternAnalysisEmbeddableFactory(core.getStartServices); }); + embeddable.registerReactEmbeddableFactory(EMBEDDABLE_LOG_RATE_ANALYSIS_TYPE, async () => { + const { getLogRateAnalysisEmbeddableFactory } = await import('./log_rate_analysis'); + return getLogRateAnalysisEmbeddableFactory(core.getStartServices); + }); }; diff --git a/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/embeddable_log_rate_analysis_factory.tsx b/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/embeddable_log_rate_analysis_factory.tsx new file mode 100644 index 0000000000000..592ec32cef120 --- /dev/null +++ b/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/embeddable_log_rate_analysis_factory.tsx @@ -0,0 +1,211 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + EMBEDDABLE_LOG_RATE_ANALYSIS_TYPE, + LOG_RATE_ANALYSIS_DATA_VIEW_REF_NAME, +} from '@kbn/aiops-log-rate-analysis/constants'; +import type { Reference } from '@kbn/content-management-utils'; +import type { StartServicesAccessor } from '@kbn/core-lifecycle-browser'; +import type { DataView } from '@kbn/data-views-plugin/common'; +import { DATA_VIEW_SAVED_OBJECT_TYPE } from '@kbn/data-views-plugin/common'; +import type { ReactEmbeddableFactory } from '@kbn/embeddable-plugin/public'; +import { i18n } from '@kbn/i18n'; +import { + apiHasExecutionContext, + fetch$, + initializeTimeRange, + initializeTitles, + useBatchedPublishingSubjects, +} from '@kbn/presentation-publishing'; + +import fastIsEqual from 'fast-deep-equal'; +import { cloneDeep } from 'lodash'; +import React, { useMemo } from 'react'; +import useObservable from 'react-use/lib/useObservable'; +import { BehaviorSubject, distinctUntilChanged, map, skipWhile } from 'rxjs'; +import { getLogRateAnalysisEmbeddableWrapperComponent } from '../../shared_components'; +import type { AiopsPluginStart, AiopsPluginStartDeps } from '../../types'; +import { initializeLogRateAnalysisControls } from './initialize_log_rate_analysis_analysis_controls'; +import type { + LogRateAnalysisEmbeddableApi, + LogRateAnalysisEmbeddableRuntimeState, + LogRateAnalysisEmbeddableState, +} from './types'; + +export const getLogRateAnalysisEmbeddableFactory = ( + getStartServices: StartServicesAccessor +) => { + const factory: ReactEmbeddableFactory< + LogRateAnalysisEmbeddableState, + LogRateAnalysisEmbeddableRuntimeState, + LogRateAnalysisEmbeddableApi + > = { + type: EMBEDDABLE_LOG_RATE_ANALYSIS_TYPE, + deserializeState: (state) => { + const serializedState = cloneDeep(state.rawState); + // inject the reference + const dataViewIdRef = state.references?.find( + (ref) => ref.name === LOG_RATE_ANALYSIS_DATA_VIEW_REF_NAME + ); + // if the serializedState already contains a dataViewId, we don't want to overwrite it. (Unsaved state can cause this) + if (dataViewIdRef && serializedState && !serializedState.dataViewId) { + serializedState.dataViewId = dataViewIdRef?.id; + } + return serializedState; + }, + buildEmbeddable: async (state, buildApi, uuid, parentApi) => { + const [coreStart, pluginStart] = await getStartServices(); + + const { + api: timeRangeApi, + comparators: timeRangeComparators, + serialize: serializeTimeRange, + } = initializeTimeRange(state); + + const { titlesApi, titleComparators, serializeTitles } = initializeTitles(state); + + const { + logRateAnalysisControlsApi, + serializeLogRateAnalysisChartState, + logRateAnalysisControlsComparators, + } = initializeLogRateAnalysisControls(state); + + const dataLoading = new BehaviorSubject(true); + const blockingError = new BehaviorSubject(undefined); + + const dataViews$ = new BehaviorSubject([ + await pluginStart.data.dataViews.get( + state.dataViewId ?? (await pluginStart.data.dataViews.getDefaultId()) + ), + ]); + + const api = buildApi( + { + ...timeRangeApi, + ...titlesApi, + ...logRateAnalysisControlsApi, + getTypeDisplayName: () => + i18n.translate('xpack.aiops.logRateAnalysis.typeDisplayName', { + defaultMessage: 'log rate analysis', + }), + isEditingEnabled: () => true, + onEdit: async () => { + try { + const { resolveEmbeddableLogRateAnalysisUserInput } = await import( + './resolve_log_rate_analysis_config_input' + ); + + const result = await resolveEmbeddableLogRateAnalysisUserInput( + coreStart, + pluginStart, + parentApi, + uuid, + false, + logRateAnalysisControlsApi, + undefined, + serializeLogRateAnalysisChartState() + ); + + logRateAnalysisControlsApi.updateUserInput(result); + } catch (e) { + return Promise.reject(); + } + }, + dataLoading, + blockingError, + dataViews: dataViews$, + serializeState: () => { + const dataViewId = logRateAnalysisControlsApi.dataViewId.getValue(); + const references: Reference[] = dataViewId + ? [ + { + type: DATA_VIEW_SAVED_OBJECT_TYPE, + name: LOG_RATE_ANALYSIS_DATA_VIEW_REF_NAME, + id: dataViewId, + }, + ] + : []; + return { + rawState: { + timeRange: undefined, + ...serializeTitles(), + ...serializeTimeRange(), + ...serializeLogRateAnalysisChartState(), + }, + references, + }; + }, + }, + { + ...timeRangeComparators, + ...titleComparators, + ...logRateAnalysisControlsComparators, + } + ); + + const LogRateAnalysisEmbeddableWrapper = getLogRateAnalysisEmbeddableWrapperComponent( + coreStart, + pluginStart + ); + + const onLoading = (v: boolean) => dataLoading.next(v); + const onRenderComplete = () => dataLoading.next(false); + const onError = (error: Error) => blockingError.next(error); + + return { + api, + Component: () => { + if (!apiHasExecutionContext(parentApi)) { + throw new Error('Parent API does not have execution context'); + } + + const [dataViewId] = useBatchedPublishingSubjects(api.dataViewId); + + const reload$ = useMemo( + () => + fetch$(api).pipe( + skipWhile((fetchContext) => !fetchContext.isReload), + map((fetchContext) => Date.now()) + ), + [] + ); + + const timeRange$ = useMemo( + () => + fetch$(api).pipe( + map((fetchContext) => fetchContext.timeRange), + distinctUntilChanged(fastIsEqual) + ), + [] + ); + + const lastReloadRequestTime = useObservable(reload$, Date.now()); + const timeRange = useObservable(timeRange$, undefined); + + const embeddingOrigin = apiHasExecutionContext(parentApi) + ? parentApi.executionContext.type + : undefined; + + return ( + + ); + }, + }; + }, + }; + + return factory; +}; diff --git a/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/index.ts b/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/index.ts new file mode 100644 index 0000000000000..2203d4c64bc8b --- /dev/null +++ b/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { getLogRateAnalysisEmbeddableFactory } from './embeddable_log_rate_analysis_factory'; diff --git a/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/initialize_log_rate_analysis_analysis_controls.ts b/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/initialize_log_rate_analysis_analysis_controls.ts new file mode 100644 index 0000000000000..9d8a49b8f0e9c --- /dev/null +++ b/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/initialize_log_rate_analysis_analysis_controls.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { StateComparators } from '@kbn/presentation-publishing'; +import { BehaviorSubject } from 'rxjs'; +import type { LogRateAnalysisComponentApi, LogRateAnalysisEmbeddableState } from './types'; + +type LogRateAnalysisEmbeddableCustomState = Omit< + LogRateAnalysisEmbeddableState, + 'timeRange' | 'title' | 'description' | 'hidePanelTitles' +>; + +export const initializeLogRateAnalysisControls = (rawState: LogRateAnalysisEmbeddableState) => { + const dataViewId = new BehaviorSubject(rawState.dataViewId); + + const updateUserInput = (update: LogRateAnalysisEmbeddableCustomState) => { + dataViewId.next(update.dataViewId); + }; + + const serializeLogRateAnalysisChartState = (): LogRateAnalysisEmbeddableCustomState => { + return { + dataViewId: dataViewId.getValue(), + }; + }; + + const logRateAnalysisControlsComparators: StateComparators = + { + dataViewId: [dataViewId, (arg) => dataViewId.next(arg)], + }; + + return { + logRateAnalysisControlsApi: { + dataViewId, + updateUserInput, + } as unknown as LogRateAnalysisComponentApi, + serializeLogRateAnalysisChartState, + logRateAnalysisControlsComparators, + }; +}; diff --git a/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/log_rate_analysis_embeddable_initializer.tsx b/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/log_rate_analysis_embeddable_initializer.tsx new file mode 100644 index 0000000000000..bf53f07677739 --- /dev/null +++ b/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/log_rate_analysis_embeddable_initializer.tsx @@ -0,0 +1,230 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { FC } from 'react'; +import React, { useEffect, useMemo, useState, useCallback } from 'react'; +import { pick } from 'lodash'; +import useMountedState from 'react-use/lib/useMountedState'; + +import { + EuiFlyoutHeader, + EuiTitle, + EuiFlyoutBody, + EuiForm, + EuiFormRow, + EuiButton, + EuiButtonEmpty, + EuiFlexGroup, + EuiFlexItem, + EuiFlyoutFooter, + EuiSpacer, +} from '@elastic/eui'; + +import type { IndexPatternSelectProps } from '@kbn/unified-search-plugin/public'; +import { euiThemeVars } from '@kbn/ui-theme'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; +import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; + +import { TimeFieldWarning } from '../../components/time_field_warning'; + +import type { LogRateAnalysisEmbeddableRuntimeState } from './types'; + +export interface LogRateAnalysisEmbeddableInitializerProps { + dataViews: DataViewsPublicPluginStart; + IndexPatternSelect: React.ComponentType; + initialInput?: Partial; + onCreate: (props: LogRateAnalysisEmbeddableRuntimeState) => void; + onCancel: () => void; + onPreview: (update: LogRateAnalysisEmbeddableRuntimeState) => Promise; + isNewPanel: boolean; +} + +export const LogRateAnalysisEmbeddableInitializer: FC< + LogRateAnalysisEmbeddableInitializerProps +> = ({ + dataViews, + IndexPatternSelect, + initialInput, + onCreate, + onCancel, + onPreview, + isNewPanel, +}) => { + const isMounted = useMountedState(); + + const [formInput, setFormInput] = useState( + pick(initialInput ?? {}, ['dataViewId']) as LogRateAnalysisEmbeddableRuntimeState + ); + + // State to track if the selected data view is time based, undefined is used + // to track that the check is in progress. + const [isDataViewTimeBased, setIsDataViewTimeBased] = useState(); + + const isFormValid = useMemo( + () => + isPopulatedObject(formInput, ['dataViewId']) && + formInput.dataViewId !== '' && + isDataViewTimeBased === true, + [formInput, isDataViewTimeBased] + ); + + const updatedProps = useMemo(() => { + return { + ...formInput, + title: isPopulatedObject(formInput) + ? i18n.translate('xpack.aiops.embeddableLogRateAnalysis.attachmentTitle', { + defaultMessage: 'Log rate analysis', + }) + : '', + }; + }, [formInput]); + + useEffect( + function previewChanges() { + if (isFormValid) { + onPreview(updatedProps); + } + }, + [isFormValid, onPreview, updatedProps, isDataViewTimeBased] + ); + + const setDataViewId = useCallback( + (dataViewId: string | undefined) => { + setFormInput({ + ...formInput, + dataViewId: dataViewId ?? '', + }); + setIsDataViewTimeBased(undefined); + }, + [formInput] + ); + + useEffect( + function checkIsDataViewTimeBased() { + setIsDataViewTimeBased(undefined); + + const { dataViewId } = formInput; + + if (!dataViewId) { + return; + } + + dataViews + .get(dataViewId) + .then((dataView) => { + if (!isMounted()) { + return; + } + setIsDataViewTimeBased(dataView.isTimeBased()); + }) + .catch(() => { + setIsDataViewTimeBased(undefined); + }); + }, + [dataViews, formInput, isMounted] + ); + + return ( + <> + + +

+ {isNewPanel + ? i18n.translate('xpack.aiops.embeddableLogRateAnalysis.config.title.new', { + defaultMessage: 'Create log rate analysis', + }) + : i18n.translate('xpack.aiops.embeddableLogRateAnalysis.config.title.edit', { + defaultMessage: 'Edit log rate analysis', + })} +

+
+
+ + + + + <> + { + setDataViewId(newId ?? ''); + }} + data-test-subj="aiopsLogRateAnalysisEmbeddableDataViewSelector" + /> + {isDataViewTimeBased === false && ( + <> + + + + )} + + + + + + + + + + + + + + + + + + + + + ); +}; diff --git a/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/resolve_log_rate_analysis_config_input.tsx b/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/resolve_log_rate_analysis_config_input.tsx new file mode 100644 index 0000000000000..a066b5bc722f2 --- /dev/null +++ b/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/resolve_log_rate_analysis_config_input.tsx @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { CoreStart } from '@kbn/core/public'; +import { tracksOverlays } from '@kbn/presentation-containers'; +import { toMountPoint } from '@kbn/react-kibana-mount'; +import React from 'react'; +import type { AiopsPluginStartDeps } from '../../types'; +import { LogRateAnalysisEmbeddableInitializer } from './log_rate_analysis_embeddable_initializer'; +import type { LogRateAnalysisComponentApi, LogRateAnalysisEmbeddableState } from './types'; + +export async function resolveEmbeddableLogRateAnalysisUserInput( + coreStart: CoreStart, + pluginStart: AiopsPluginStartDeps, + parentApi: unknown, + focusedPanelId: string, + isNewPanel: boolean, + logRateAnalysisControlsApi: LogRateAnalysisComponentApi, + deletePanel?: () => void, + initialState?: LogRateAnalysisEmbeddableState +): Promise { + const { overlays } = coreStart; + + const overlayTracker = tracksOverlays(parentApi) ? parentApi : undefined; + + let hasChanged = false; + return new Promise(async (resolve, reject) => { + try { + const cancelChanges = () => { + if (isNewPanel && deletePanel) { + deletePanel(); + } else if (hasChanged && logRateAnalysisControlsApi && initialState) { + // Reset to initialState in case user has changed the preview state + logRateAnalysisControlsApi.updateUserInput(initialState); + } + + flyoutSession.close(); + overlayTracker?.clearOverlays(); + }; + + const update = async (nextUpdate: LogRateAnalysisEmbeddableState) => { + resolve(nextUpdate); + flyoutSession.close(); + overlayTracker?.clearOverlays(); + }; + + const preview = async (nextUpdate: LogRateAnalysisEmbeddableState) => { + if (logRateAnalysisControlsApi) { + logRateAnalysisControlsApi.updateUserInput(nextUpdate); + hasChanged = true; + } + }; + + const flyoutSession = overlays.openFlyout( + toMountPoint( + , + coreStart + ), + { + ownFocus: true, + size: 's', + type: 'push', + paddingSize: 'm', + hideCloseButton: true, + 'data-test-subj': 'aiopsLogRateAnalysisEmbeddableInitializer', + 'aria-labelledby': 'logRateAnalysisConfig', + onClose: () => { + reject(); + flyoutSession.close(); + overlayTracker?.clearOverlays(); + }, + } + ); + + if (tracksOverlays(parentApi)) { + parentApi.openOverlay(flyoutSession, { focusedPanelId }); + } + } catch (error) { + reject(error); + } + }); +} diff --git a/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/types.ts b/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/types.ts new file mode 100644 index 0000000000000..d2255e6dacb87 --- /dev/null +++ b/x-pack/plugins/aiops/public/embeddables/log_rate_analysis/types.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { DefaultEmbeddableApi } from '@kbn/embeddable-plugin/public'; +import type { + HasEditCapabilities, + PublishesDataViews, + PublishesTimeRange, + PublishingSubject, + SerializedTimeRange, + SerializedTitles, +} from '@kbn/presentation-publishing'; + +export interface LogRateAnalysisComponentApi { + dataViewId: PublishingSubject; + updateUserInput: (update: LogRateAnalysisEmbeddableState) => void; +} + +export type LogRateAnalysisEmbeddableApi = DefaultEmbeddableApi & + HasEditCapabilities & + PublishesDataViews & + PublishesTimeRange & + LogRateAnalysisComponentApi; + +export interface LogRateAnalysisEmbeddableState extends SerializedTitles, SerializedTimeRange { + dataViewId: string; +} + +export interface LogRateAnalysisEmbeddableInitialState + extends SerializedTitles, + SerializedTimeRange { + dataViewId?: string; +} + +export type LogRateAnalysisEmbeddableRuntimeState = LogRateAnalysisEmbeddableState; diff --git a/x-pack/plugins/aiops/public/embeddables/pattern_analysis/embeddable_pattern_analysis_factory.tsx b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/embeddable_pattern_analysis_factory.tsx index e7b1d6da3be61..d84043ea5f637 100644 --- a/x-pack/plugins/aiops/public/embeddables/pattern_analysis/embeddable_pattern_analysis_factory.tsx +++ b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/embeddable_pattern_analysis_factory.tsx @@ -11,7 +11,6 @@ import { } from '@kbn/aiops-log-pattern-analysis/constants'; import type { Reference } from '@kbn/content-management-utils'; import type { StartServicesAccessor } from '@kbn/core-lifecycle-browser'; -import { type DataPublicPluginStart } from '@kbn/data-plugin/public'; import type { DataView } from '@kbn/data-views-plugin/common'; import { DATA_VIEW_SAVED_OBJECT_TYPE } from '@kbn/data-views-plugin/common'; import type { ReactEmbeddableFactory } from '@kbn/embeddable-plugin/public'; @@ -37,32 +36,6 @@ import type { PatternAnalysisEmbeddableState, } from './types'; -export interface EmbeddablePatternAnalysisStartServices { - data: DataPublicPluginStart; -} - -export type EmbeddablePatternAnalysisType = typeof EMBEDDABLE_PATTERN_ANALYSIS_TYPE; - -export const getDependencies = async ( - getStartServices: StartServicesAccessor -) => { - const [ - { http, uiSettings, notifications, ...startServices }, - { lens, data, usageCollection, fieldFormats }, - ] = await getStartServices(); - - return { - http, - uiSettings, - data, - notifications, - lens, - usageCollection, - fieldFormats, - ...startServices, - }; -}; - export const getPatternAnalysisEmbeddableFactory = ( getStartServices: StartServicesAccessor ) => { @@ -87,20 +60,6 @@ export const getPatternAnalysisEmbeddableFactory = ( buildEmbeddable: async (state, buildApi, uuid, parentApi) => { const [coreStart, pluginStart] = await getStartServices(); - const { http, uiSettings, notifications, ...startServices } = coreStart; - const { lens, data, usageCollection, fieldFormats } = pluginStart; - - const deps = { - http, - uiSettings, - data, - notifications, - lens, - usageCollection, - fieldFormats, - ...startServices, - }; - const { api: timeRangeApi, comparators: timeRangeComparators, @@ -119,8 +78,8 @@ export const getPatternAnalysisEmbeddableFactory = ( const blockingError = new BehaviorSubject(undefined); const dataViews$ = new BehaviorSubject([ - await deps.data.dataViews.get( - state.dataViewId ?? (await deps.data.dataViews.getDefaultId()) + await pluginStart.data.dataViews.get( + state.dataViewId ?? (await pluginStart.data.dataViews.getDefaultId()) ), ]); diff --git a/x-pack/plugins/aiops/public/embeddables/pattern_analysis/pattern_analysys_component_wrapper.tsx b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/pattern_analysis_component_wrapper.tsx similarity index 100% rename from x-pack/plugins/aiops/public/embeddables/pattern_analysis/pattern_analysys_component_wrapper.tsx rename to x-pack/plugins/aiops/public/embeddables/pattern_analysis/pattern_analysis_component_wrapper.tsx diff --git a/x-pack/plugins/aiops/public/embeddables/pattern_analysis/pattern_analysis_initializer.tsx b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/pattern_analysis_initializer.tsx index f44fff343fb50..ef185518638b8 100644 --- a/x-pack/plugins/aiops/public/embeddables/pattern_analysis/pattern_analysis_initializer.tsx +++ b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/pattern_analysis_initializer.tsx @@ -33,6 +33,7 @@ import { useAiopsAppContext } from '../../hooks/use_aiops_app_context'; import { DataSourceContextProvider } from '../../hooks/use_data_source'; import type { PatternAnalysisEmbeddableRuntimeState } from './types'; import { PatternAnalysisSettings } from '../../components/log_categorization/log_categorization_for_embeddable/embeddable_menu'; +import { TimeFieldWarning } from '../../components/time_field_warning'; import { RandomSampler } from '../../components/log_categorization/sampling_menu'; import { DEFAULT_PROBABILITY, @@ -62,6 +63,7 @@ export const PatternAnalysisEmbeddableInitializer: FC { const { + data: { dataViews }, unifiedSearch: { ui: { IndexPatternSelect }, }, @@ -166,7 +168,7 @@ export const PatternAnalysisEmbeddableInitializer: FC - + { ); }; - -const TimeFieldWarning = () => { - return ( - <> - -

- {i18n.translate( - 'xpack.aiops.logCategorization.embeddableMenu.timeFieldWarning.title.description', - { - defaultMessage: 'Pattern analysis can only be run on data views with a time field.', - } - )} -

-
- - - ); -}; diff --git a/x-pack/plugins/aiops/public/embeddables/pattern_analysis/types.ts b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/types.ts index f78934b9075f1..710e18823a2bb 100644 --- a/x-pack/plugins/aiops/public/embeddables/pattern_analysis/types.ts +++ b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/types.ts @@ -14,18 +14,12 @@ import type { SerializedTimeRange, SerializedTitles, } from '@kbn/presentation-publishing'; -import type { FC } from 'react'; import type { MinimumTimeRangeOption } from '../../components/log_categorization/log_categorization_for_embeddable/minimum_time_range'; import type { RandomSamplerOption, RandomSamplerProbability, } from '../../components/log_categorization/sampling_menu/random_sampler'; -export type ViewComponent = FC<{ - interval: string; - onRenderComplete?: () => void; -}>; - export interface PatternAnalysisComponentApi { dataViewId: PublishingSubject; fieldName: PublishingSubject; diff --git a/x-pack/plugins/aiops/public/hooks/use_aiops_app_context.ts b/x-pack/plugins/aiops/public/hooks/use_aiops_app_context.ts index 03762a7ba70ba..c240ec90bc1df 100644 --- a/x-pack/plugins/aiops/public/hooks/use_aiops_app_context.ts +++ b/x-pack/plugins/aiops/public/hooks/use_aiops_app_context.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { createContext, type FC, type PropsWithChildren, useContext } from 'react'; +import { createContext, type FC, useContext } from 'react'; import type { ObservabilityAIAssistantPublicStart } from '@kbn/observability-ai-assistant-plugin/public'; import type { IStorageWrapper } from '@kbn/kibana-utils-plugin/public'; @@ -24,17 +24,12 @@ import type { ThemeServiceStart, } from '@kbn/core/public'; import type { LensPublicStart } from '@kbn/lens-plugin/public'; -import { type EuiComboBoxProps } from '@elastic/eui/src/components/combo_box/combo_box'; -import { type DataView } from '@kbn/data-views-plugin/common'; -import type { - FieldStatsProps, - FieldStatsServices, -} from '@kbn/unified-field-list/src/components/field_stats'; -import type { TimeRange as TimeRangeMs } from '@kbn/ml-date-picker'; import type { EmbeddableStart } from '@kbn/embeddable-plugin/public'; import type { CasesPublicStart } from '@kbn/cases-plugin/public'; import type { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public'; import type { UiActionsStart } from '@kbn/ui-actions-plugin/public'; +import type { FieldStatsFlyoutProviderProps } from '@kbn/ml-field-stats-flyout/field_stats_flyout_provider'; +import type { UseFieldStatsTrigger } from '@kbn/ml-field-stats-flyout/use_field_stats_trigger'; /** * AIOps app context value to be provided via React context. @@ -98,7 +93,7 @@ export interface AiopsAppContextValue { /** * Used to create deep links to other plugins. */ - share: SharePluginStart; + share?: SharePluginStart; /** * Used to create lens embeddables. */ @@ -115,18 +110,8 @@ export interface AiopsAppContextValue { * Deps for unified fields stats. */ fieldStats?: { - useFieldStatsTrigger: () => { - renderOption: EuiComboBoxProps['renderOption']; - closeFlyout: () => void; - }; - FieldStatsFlyoutProvider: FC< - PropsWithChildren<{ - dataView: DataView; - fieldStatsServices: FieldStatsServices; - timeRangeMs?: TimeRangeMs; - dslQuery?: FieldStatsProps['dslQuery']; - }> - >; + useFieldStatsTrigger: UseFieldStatsTrigger; + FieldStatsFlyoutProvider: FC; }; embeddable?: EmbeddableStart; cases?: CasesPublicStart; diff --git a/x-pack/plugins/aiops/public/hooks/use_data_source.tsx b/x-pack/plugins/aiops/public/hooks/use_data_source.tsx index 081e10a34de65..ef574a348b928 100644 --- a/x-pack/plugins/aiops/public/hooks/use_data_source.tsx +++ b/x-pack/plugins/aiops/public/hooks/use_data_source.tsx @@ -8,10 +8,10 @@ import type { FC, PropsWithChildren } from 'react'; import React, { createContext, useCallback, useContext, useEffect, useState } from 'react'; import type { DataView } from '@kbn/data-views-plugin/common'; +import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; import type { SavedSearch } from '@kbn/saved-search-plugin/public'; import { EuiEmptyPrompt } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import { useAiopsAppContext } from './use_aiops_app_context'; export const DataSourceContext = createContext({ get dataView(): never { @@ -30,6 +30,7 @@ export interface DataViewAndSavedSearch { } export interface DataSourceContextProviderProps { + dataViews: DataViewsPublicPluginStart; dataViewId?: string; savedSearchId?: string; /** Output resolves data view objects */ @@ -43,20 +44,14 @@ export interface DataSourceContextProviderProps { * @constructor */ export const DataSourceContextProvider: FC> = ({ + dataViews, dataViewId, - savedSearchId, children, onChange, }) => { const [value, setValue] = useState(); const [error, setError] = useState(); - const { - data: { dataViews }, - // uiSettings, - // savedSearch: savedSearchService, - } = useAiopsAppContext(); - /** * Resolve data view or saved search if exists. */ diff --git a/x-pack/plugins/aiops/public/shared_components/change_point_detection.tsx b/x-pack/plugins/aiops/public/shared_components/change_point_detection.tsx index 9afbd9e1c4c8d..53997219fd639 100644 --- a/x-pack/plugins/aiops/public/shared_components/change_point_detection.tsx +++ b/x-pack/plugins/aiops/public/shared_components/change_point_detection.tsx @@ -11,7 +11,6 @@ import type { CoreStart } from '@kbn/core-lifecycle-browser'; import { UI_SETTINGS } from '@kbn/data-service'; import type { TimeRange } from '@kbn/es-query'; import { DatePickerContextProvider } from '@kbn/ml-date-picker'; -import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; import { pick } from 'lodash'; import React, { useEffect, useMemo, useState, type FC } from 'react'; import type { Observable } from 'rxjs'; @@ -141,33 +140,34 @@ const ChangePointDetectionWrapper: FC = ({ width: 100%; `} > - - - - - - - - - - - - - - - + + + + + + + + + + + + +
); }; diff --git a/x-pack/plugins/aiops/public/shared_components/index.tsx b/x-pack/plugins/aiops/public/shared_components/index.tsx index 1c5b85c4b79b6..b347d3ee24cac 100644 --- a/x-pack/plugins/aiops/public/shared_components/index.tsx +++ b/x-pack/plugins/aiops/public/shared_components/index.tsx @@ -11,6 +11,7 @@ import type { CoreStart } from '@kbn/core-lifecycle-browser'; import type { AiopsPluginStartDeps } from '../types'; import type { ChangePointDetectionSharedComponent } from './change_point_detection'; import type { PatternAnalysisSharedComponent } from './pattern_analysis'; +import type { LogRateAnalysisEmbeddableWrapper } from './log_rate_analysis_embeddable_wrapper'; const ChangePointDetectionLazy = dynamic(async () => import('./change_point_detection')); @@ -37,3 +38,24 @@ export const getPatternAnalysisComponent = ( }; export type { PatternAnalysisSharedComponent } from './pattern_analysis'; + +const LogRateAnalysisEmbeddableWrapperLazy = dynamic( + async () => import('./log_rate_analysis_embeddable_wrapper') +); + +export const getLogRateAnalysisEmbeddableWrapperComponent = ( + coreStart: CoreStart, + pluginStart: AiopsPluginStartDeps +): LogRateAnalysisEmbeddableWrapper => { + return React.memo((props) => { + return ( + + ); + }); +}; + +export type { LogRateAnalysisEmbeddableWrapper } from './log_rate_analysis_embeddable_wrapper'; diff --git a/x-pack/plugins/aiops/public/shared_components/log_rate_analysis_embeddable_wrapper.tsx b/x-pack/plugins/aiops/public/shared_components/log_rate_analysis_embeddable_wrapper.tsx new file mode 100644 index 0000000000000..9f2a88e73461c --- /dev/null +++ b/x-pack/plugins/aiops/public/shared_components/log_rate_analysis_embeddable_wrapper.tsx @@ -0,0 +1,179 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { pick } from 'lodash'; +import React, { useEffect, useMemo, useState, type FC } from 'react'; +import usePrevious from 'react-use/lib/usePrevious'; +import type { Observable } from 'rxjs'; +import { BehaviorSubject, combineLatest, distinctUntilChanged, map } from 'rxjs'; +import { createBrowserHistory } from 'history'; + +import { UrlStateProvider } from '@kbn/ml-url-state'; +import { Router } from '@kbn/shared-ux-router'; +import { AIOPS_EMBEDDABLE_ORIGIN } from '@kbn/aiops-common/constants'; +import type { CoreStart } from '@kbn/core-lifecycle-browser'; +import { UI_SETTINGS } from '@kbn/data-service'; +import { LogRateAnalysisReduxProvider } from '@kbn/aiops-log-rate-analysis/state'; +import type { TimeRange } from '@kbn/es-query'; +import { DatePickerContextProvider } from '@kbn/ml-date-picker'; +import type { SignificantItem } from '@kbn/ml-agg-utils'; + +import { AiopsAppContext, type AiopsAppContextValue } from '../hooks/use_aiops_app_context'; +import { DataSourceContextProvider } from '../hooks/use_data_source'; +import { ReloadContextProvider } from '../hooks/use_reload'; +import { FilterQueryContextProvider } from '../hooks/use_filters_query'; +import type { AiopsPluginStartDeps } from '../types'; + +import { LogRateAnalysisForEmbeddable } from '../components/log_rate_analysis/log_rate_analysis_for_embeddable'; + +/** + * Only used to initialize internally + */ +export type LogRateAnalysisPropsWithDeps = LogRateAnalysisEmbeddableWrapperProps & { + coreStart: CoreStart; + pluginStart: AiopsPluginStartDeps; +}; + +export type LogRateAnalysisEmbeddableWrapper = FC; + +export interface LogRateAnalysisEmbeddableWrapperProps { + dataViewId: string; + timeRange: TimeRange; + /** + * Component to render if there are no significant items found + */ + emptyState?: React.ReactElement; + /** + * Outputs the most recent significant items + */ + onChange?: (significantItems: SignificantItem[]) => void; + /** + * Last reload request time, can be used for manual reload + */ + lastReloadRequestTime?: number; + /** Origin of the embeddable instance */ + embeddingOrigin?: string; + onLoading: (isLoading: boolean) => void; + onRenderComplete: () => void; + onError: (error: Error) => void; +} + +const LogRateAnalysisEmbeddableWrapperWithDeps: FC = ({ + // Component dependencies + coreStart, + pluginStart, + // Component props + dataViewId, + timeRange, + embeddingOrigin, + lastReloadRequestTime, +}) => { + const deps = useMemo(() => { + const { lens, data, usageCollection, fieldFormats, charts, share, storage, unifiedSearch } = + pluginStart; + + return { + data, + lens, + usageCollection, + fieldFormats, + charts, + share, + storage, + unifiedSearch, + ...coreStart, + }; + }, [coreStart, pluginStart]); + + const datePickerDeps = { + ...pick(deps, ['data', 'http', 'notifications', 'theme', 'uiSettings', 'i18n']), + uiSettingsKeys: UI_SETTINGS, + }; + + const aiopsAppContextValue = useMemo(() => { + return { + embeddingOrigin: embeddingOrigin ?? AIOPS_EMBEDDABLE_ORIGIN.DEFAULT, + ...deps, + }; + }, [deps, embeddingOrigin]); + + const [manualReload$] = useState>( + new BehaviorSubject(lastReloadRequestTime ?? Date.now()) + ); + + useEffect( + function updateManualReloadSubject() { + if (!lastReloadRequestTime) return; + manualReload$.next(lastReloadRequestTime); + }, + [lastReloadRequestTime, manualReload$] + ); + + const resultObservable$ = useMemo>(() => { + return combineLatest([manualReload$]).pipe( + map(([manualReload]) => Math.max(manualReload)), + distinctUntilChanged() + ); + }, [manualReload$]); + + const history = createBrowserHistory(); + + // We use the following pattern to track changes of dataViewId, and if there's + // a change, we unmount and remount the complete inner component. This makes + // sure the component is reinitialized correctly when the options of the + // dashboard panel are used to change the data view. This is a bit of a + // workaround since originally log rate analysis was developed as a standalone + // page with the expectation that the data view is set once and never changes. + const prevDataViewId = usePrevious(dataViewId); + const [_, setRerenderFlag] = useState(false); + useEffect(() => { + if (prevDataViewId && prevDataViewId !== dataViewId) { + setRerenderFlag((prev) => !prev); + } + }, [dataViewId, prevDataViewId]); + const showComponent = prevDataViewId === undefined || prevDataViewId === dataViewId; + + // TODO: Remove data-shared-item as part of https://github.com/elastic/kibana/issues/179376> + return ( +
+ {showComponent && ( + + + + + + + + + + + + + + + + + + )} +
+ ); +}; + +// eslint-disable-next-line import/no-default-export +export default LogRateAnalysisEmbeddableWrapperWithDeps; diff --git a/x-pack/plugins/aiops/public/shared_components/pattern_analysis.tsx b/x-pack/plugins/aiops/public/shared_components/pattern_analysis.tsx index 78261cd1f62f0..f601474a5707f 100644 --- a/x-pack/plugins/aiops/public/shared_components/pattern_analysis.tsx +++ b/x-pack/plugins/aiops/public/shared_components/pattern_analysis.tsx @@ -10,7 +10,6 @@ import type { CoreStart } from '@kbn/core-lifecycle-browser'; import { UI_SETTINGS } from '@kbn/data-service'; import type { TimeRange } from '@kbn/es-query'; import { DatePickerContextProvider } from '@kbn/ml-date-picker'; -import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; import { pick } from 'lodash'; import React, { useEffect, useMemo, useState, type FC } from 'react'; import type { Observable } from 'rxjs'; @@ -20,7 +19,7 @@ import type { RandomSamplerOption, RandomSamplerProbability, } from '../components/log_categorization/sampling_menu/random_sampler'; -import { PatternAnalysisEmbeddableWrapper } from '../embeddables/pattern_analysis/pattern_analysys_component_wrapper'; +import { PatternAnalysisEmbeddableWrapper } from '../embeddables/pattern_analysis/pattern_analysis_component_wrapper'; import { AiopsAppContext, type AiopsAppContextValue } from '../hooks/use_aiops_app_context'; import { DataSourceContextProvider } from '../hooks/use_data_source'; import { FilterQueryContextProvider } from '../hooks/use_filters_query'; @@ -139,31 +138,32 @@ const PatternAnalysisWrapper: FC = ({ padding: '10px', }} > - - - - - - - - - - - - - + + + + + + + + + + +
); }; diff --git a/x-pack/plugins/aiops/public/types/storage.ts b/x-pack/plugins/aiops/public/types/storage.ts index a4a29dda2f2c3..ea6fde6b06552 100644 --- a/x-pack/plugins/aiops/public/types/storage.ts +++ b/x-pack/plugins/aiops/public/types/storage.ts @@ -19,14 +19,12 @@ export const AIOPS_RANDOM_SAMPLING_PROBABILITY_PREFERENCE = 'aiops.randomSamplingProbabilityPreference'; export const AIOPS_PATTERN_ANALYSIS_MINIMUM_TIME_RANGE_PREFERENCE = 'aiops.patternAnalysisMinimumTimeRangePreference'; -export const AIOPS_LOG_RATE_ANALYSIS_RESULT_COLUMNS = 'aiops.logRateAnalysisResultColumns'; export type AiOps = Partial<{ [AIOPS_FROZEN_TIER_PREFERENCE]: FrozenTierPreference; [AIOPS_RANDOM_SAMPLING_MODE_PREFERENCE]: RandomSamplerOption; [AIOPS_RANDOM_SAMPLING_PROBABILITY_PREFERENCE]: number; [AIOPS_PATTERN_ANALYSIS_MINIMUM_TIME_RANGE_PREFERENCE]: MinimumTimeRangeOption; - [AIOPS_LOG_RATE_ANALYSIS_RESULT_COLUMNS]: string[]; }> | null; export type AiOpsKey = keyof Exclude; @@ -39,8 +37,6 @@ export type AiOpsStorageMapped = T extends typeof AIOPS_FROZ ? RandomSamplerProbability : T extends typeof AIOPS_PATTERN_ANALYSIS_MINIMUM_TIME_RANGE_PREFERENCE ? MinimumTimeRangeOption - : T extends typeof AIOPS_LOG_RATE_ANALYSIS_RESULT_COLUMNS - ? string[] : null; export const AIOPS_STORAGE_KEYS = [ @@ -48,5 +44,4 @@ export const AIOPS_STORAGE_KEYS = [ AIOPS_RANDOM_SAMPLING_MODE_PREFERENCE, AIOPS_RANDOM_SAMPLING_PROBABILITY_PREFERENCE, AIOPS_PATTERN_ANALYSIS_MINIMUM_TIME_RANGE_PREFERENCE, - AIOPS_LOG_RATE_ANALYSIS_RESULT_COLUMNS, ] as const; diff --git a/x-pack/plugins/aiops/public/ui_actions/create_change_point_chart.tsx b/x-pack/plugins/aiops/public/ui_actions/create_change_point_chart.tsx index f9078f575818a..4d7ed26e295f5 100644 --- a/x-pack/plugins/aiops/public/ui_actions/create_change_point_chart.tsx +++ b/x-pack/plugins/aiops/public/ui_actions/create_change_point_chart.tsx @@ -12,7 +12,9 @@ import type { UiActionsActionDefinition } from '@kbn/ui-actions-plugin/public'; import { IncompatibleActionError } from '@kbn/ui-actions-plugin/public'; import { EMBEDDABLE_CHANGE_POINT_CHART_TYPE } from '@kbn/aiops-change-point-detection/constants'; import type { CoreStart } from '@kbn/core-lifecycle-browser'; + import type { AiopsPluginStartDeps } from '../types'; + import type { ChangePointChartActionContext } from './change_point_action_context'; const parentApiIsCompatible = async ( diff --git a/x-pack/plugins/aiops/public/ui_actions/create_log_rate_analysis_actions.tsx b/x-pack/plugins/aiops/public/ui_actions/create_log_rate_analysis_actions.tsx new file mode 100644 index 0000000000000..588903e96aa16 --- /dev/null +++ b/x-pack/plugins/aiops/public/ui_actions/create_log_rate_analysis_actions.tsx @@ -0,0 +1,91 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import type { PresentationContainer } from '@kbn/presentation-containers'; +import type { EmbeddableApiContext } from '@kbn/presentation-publishing'; +import type { UiActionsActionDefinition } from '@kbn/ui-actions-plugin/public'; +import { IncompatibleActionError } from '@kbn/ui-actions-plugin/public'; +import type { CoreStart } from '@kbn/core-lifecycle-browser'; +import { EMBEDDABLE_LOG_RATE_ANALYSIS_TYPE } from '@kbn/aiops-log-rate-analysis/constants'; +import { AIOPS_EMBEDDABLE_GROUPING } from '@kbn/aiops-common/constants'; + +import type { + LogRateAnalysisEmbeddableApi, + LogRateAnalysisEmbeddableInitialState, +} from '../embeddables/log_rate_analysis/types'; +import type { AiopsPluginStartDeps } from '../types'; + +import type { LogRateAnalysisActionContext } from './log_rate_analysis_action_context'; + +const parentApiIsCompatible = async ( + parentApi: unknown +): Promise => { + const { apiIsPresentationContainer } = await import('@kbn/presentation-containers'); + // we cannot have an async type check, so return the casted parentApi rather than a boolean + return apiIsPresentationContainer(parentApi) ? (parentApi as PresentationContainer) : undefined; +}; + +export function createAddLogRateAnalysisEmbeddableAction( + coreStart: CoreStart, + pluginStart: AiopsPluginStartDeps +): UiActionsActionDefinition { + return { + id: 'create-log-rate-analysis-embeddable', + grouping: AIOPS_EMBEDDABLE_GROUPING, + getIconType: () => 'logRateAnalysis', + getDisplayName: () => + i18n.translate('xpack.aiops.embeddableLogRateAnalysisDisplayName', { + defaultMessage: 'Log rate analysis', + }), + async isCompatible(context: EmbeddableApiContext) { + return Boolean(await parentApiIsCompatible(context.embeddable)); + }, + async execute(context) { + const presentationContainerParent = await parentApiIsCompatible(context.embeddable); + if (!presentationContainerParent) throw new IncompatibleActionError(); + + try { + const { resolveEmbeddableLogRateAnalysisUserInput } = await import( + '../embeddables/log_rate_analysis/resolve_log_rate_analysis_config_input' + ); + + const initialState: LogRateAnalysisEmbeddableInitialState = { + dataViewId: undefined, + }; + + const embeddable = await presentationContainerParent.addNewPanel< + object, + LogRateAnalysisEmbeddableApi + >({ + panelType: EMBEDDABLE_LOG_RATE_ANALYSIS_TYPE, + initialState, + }); + + if (!embeddable) { + return; + } + + const deletePanel = () => { + presentationContainerParent.removePanel(embeddable.uuid); + }; + + resolveEmbeddableLogRateAnalysisUserInput( + coreStart, + pluginStart, + context.embeddable, + embeddable.uuid, + true, + embeddable, + deletePanel + ); + } catch (e) { + return Promise.reject(); + } + }, + }; +} diff --git a/x-pack/plugins/aiops/public/ui_actions/create_pattern_analysis_action.tsx b/x-pack/plugins/aiops/public/ui_actions/create_pattern_analysis_action.tsx index 81127559e4e3d..f840e896abac4 100644 --- a/x-pack/plugins/aiops/public/ui_actions/create_pattern_analysis_action.tsx +++ b/x-pack/plugins/aiops/public/ui_actions/create_pattern_analysis_action.tsx @@ -12,13 +12,16 @@ import type { UiActionsActionDefinition } from '@kbn/ui-actions-plugin/public'; import { IncompatibleActionError } from '@kbn/ui-actions-plugin/public'; import type { CoreStart } from '@kbn/core-lifecycle-browser'; import { EMBEDDABLE_PATTERN_ANALYSIS_TYPE } from '@kbn/aiops-log-pattern-analysis/constants'; +import { AIOPS_EMBEDDABLE_GROUPING } from '@kbn/aiops-common/constants'; + import type { AiopsPluginStartDeps } from '../types'; -import type { PatternAnalysisActionContext } from './pattern_analysis_action_context'; import type { PatternAnalysisEmbeddableApi, PatternAnalysisEmbeddableInitialState, } from '../embeddables/pattern_analysis/types'; +import type { PatternAnalysisActionContext } from './pattern_analysis_action_context'; + const parentApiIsCompatible = async ( parentApi: unknown ): Promise => { @@ -33,16 +36,7 @@ export function createAddPatternAnalysisEmbeddableAction( ): UiActionsActionDefinition { return { id: 'create-pattern-analysis-embeddable', - grouping: [ - { - id: 'ml', - getDisplayName: () => - i18n.translate('xpack.aiops.navMenu.mlAppNameText', { - defaultMessage: 'Machine Learning and Analytics', - }), - getIconType: () => 'logPatternAnalysis', - }, - ], + grouping: AIOPS_EMBEDDABLE_GROUPING, getIconType: () => 'logPatternAnalysis', getDisplayName: () => i18n.translate('xpack.aiops.embeddablePatternAnalysisDisplayName', { diff --git a/x-pack/plugins/aiops/public/ui_actions/index.ts b/x-pack/plugins/aiops/public/ui_actions/index.ts index d14856fd28733..6081541c448e7 100644 --- a/x-pack/plugins/aiops/public/ui_actions/index.ts +++ b/x-pack/plugins/aiops/public/ui_actions/index.ts @@ -18,6 +18,7 @@ import { createOpenChangePointInMlAppAction } from './open_change_point_ml'; import type { AiopsPluginStartDeps } from '../types'; import { createCategorizeFieldAction } from '../components/log_categorization'; import { createAddPatternAnalysisEmbeddableAction } from './create_pattern_analysis_action'; +import { createAddLogRateAnalysisEmbeddableAction } from './create_log_rate_analysis_actions'; export function registerAiopsUiActions( uiActions: UiActionsSetup, @@ -27,6 +28,7 @@ export function registerAiopsUiActions( const openChangePointInMlAppAction = createOpenChangePointInMlAppAction(coreStart, pluginStart); const addChangePointChartAction = createAddChangePointChartAction(coreStart, pluginStart); const addPatternAnalysisAction = createAddPatternAnalysisEmbeddableAction(coreStart, pluginStart); + const addLogRateAnalysisAction = createAddLogRateAnalysisEmbeddableAction(coreStart, pluginStart); uiActions.addTriggerAction(ADD_PANEL_TRIGGER, addPatternAnalysisAction); uiActions.addTriggerAction(ADD_PANEL_TRIGGER, addChangePointChartAction); @@ -39,4 +41,6 @@ export function registerAiopsUiActions( ); uiActions.addTriggerAction(CONTEXT_MENU_TRIGGER, openChangePointInMlAppAction); + + uiActions.addTriggerAction(ADD_PANEL_TRIGGER, addLogRateAnalysisAction); } diff --git a/x-pack/plugins/aiops/public/ui_actions/log_rate_analysis_action_context.ts b/x-pack/plugins/aiops/public/ui_actions/log_rate_analysis_action_context.ts new file mode 100644 index 0000000000000..d0c1ef715b84c --- /dev/null +++ b/x-pack/plugins/aiops/public/ui_actions/log_rate_analysis_action_context.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; +import { apiIsOfType, type EmbeddableApiContext } from '@kbn/presentation-publishing'; +import { EMBEDDABLE_LOG_RATE_ANALYSIS_TYPE } from '@kbn/aiops-log-rate-analysis/constants'; +import type { LogRateAnalysisEmbeddableApi } from '../embeddables/log_rate_analysis/types'; + +export interface LogRateAnalysisActionContext extends EmbeddableApiContext { + embeddable: LogRateAnalysisEmbeddableApi; +} + +export function isLogRateAnalysisEmbeddableContext( + arg: unknown +): arg is LogRateAnalysisActionContext { + return ( + isPopulatedObject(arg, ['embeddable']) && + apiIsOfType(arg.embeddable, EMBEDDABLE_LOG_RATE_ANALYSIS_TYPE) + ); +} diff --git a/x-pack/plugins/aiops/tsconfig.json b/x-pack/plugins/aiops/tsconfig.json index 188f8b275fbac..e8b4f4f3ed972 100644 --- a/x-pack/plugins/aiops/tsconfig.json +++ b/x-pack/plugins/aiops/tsconfig.json @@ -63,7 +63,6 @@ "@kbn/presentation-containers", "@kbn/presentation-publishing", "@kbn/presentation-util-plugin", - "@kbn/react-kibana-context-render", "@kbn/react-kibana-context-theme", "@kbn/react-kibana-mount", "@kbn/rison", @@ -79,6 +78,8 @@ "@kbn/observability-ai-assistant-plugin", "@kbn/ui-theme", "@kbn/apm-utils", + "@kbn/ml-field-stats-flyout", + "@kbn/shared-ux-router", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_form.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_form.tsx index 3212eba8b2ddd..7fd678e98f6fd 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_form.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_form.tsx @@ -576,6 +576,7 @@ export const ConfigurationStepForm: FC = ({ fieldStatsServices={fieldStatsServices} timeRangeMs={indexData.timeRangeMs} dslQuery={jobConfigQuery} + theme={services.theme} > diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/pages/new_job/wizard_steps.tsx b/x-pack/plugins/ml/public/application/jobs/new_job/pages/new_job/wizard_steps.tsx index 6c4600be5d25e..b44c523bc57cf 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/pages/new_job/wizard_steps.tsx +++ b/x-pack/plugins/ml/public/application/jobs/new_job/pages/new_job/wizard_steps.tsx @@ -123,6 +123,7 @@ export const WizardSteps: FC = ({ currentStep, setCurrentStep }) => { fieldStatsServices={fieldStatsServices} timeRangeMs={timeRangeMs} dslQuery={jobCreator.query} + theme={services.theme} > <> diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/wizard/wizard.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/wizard/wizard.tsx index ab2865b85eb8a..2c078f93627cc 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/wizard/wizard.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/wizard/wizard.tsx @@ -111,7 +111,7 @@ export const CreateTransformWizardContext = createContext<{ export const Wizard: FC = React.memo(({ cloneConfig, searchItems }) => { const { showNodeInfo } = useEnabledFeatures(); const appDependencies = useAppDependencies(); - const { uiSettings, data, fieldFormats, charts } = appDependencies; + const { uiSettings, data, fieldFormats, charts, theme } = appDependencies; const { dataView } = searchItems; // The current WIZARD_STEP @@ -247,6 +247,7 @@ export const Wizard: FC = React.memo(({ cloneConfig, searchItems }) fieldStatsServices={fieldStatsServices} timeRangeMs={stepDefineState.timeRangeMs} dslQuery={transformConfig.source.query} + theme={theme} > { + await aiops.logRateAnalysisDataGenerator.generateData(testDataSetup.dataGenerator); + + await ml.testResources.setKibanaTimeZoneToUTC(); + + await ml.securityUI.loginAsMlPowerUser(); + await ml.testResources.createDataViewIfNeeded( + testDataSetup.sourceIndexOrSavedSearch, + '@timestamp' + ); + + await PageObjects.common.setTime({ from, to }); + }); + + after(async () => { + await ml.testResources.deleteDataViewByTitle(testDataSetup.sourceIndexOrSavedSearch); + await aiops.logRateAnalysisDataGenerator.removeGeneratedData(testDataSetup.dataGenerator); + await PageObjects.common.unsetTime(); + }); + + describe(testDataPanel.suiteSuffix, function () { + before(async () => { + await PageObjects.dashboard.navigateToApp(); + }); + + after(async () => { + await ml.testResources.deleteDashboardByTitle(testDataPanel.dashboardTitle); + }); + + it('should open initializer flyout', async () => { + await PageObjects.dashboard.clickNewDashboard(); + await aiops.dashboardEmbeddables.assertDashboardIsEmpty(); + await aiops.dashboardEmbeddables.openEmbeddableInitializer( + EMBEDDABLE_LOG_RATE_ANALYSIS_TYPE + ); + }); + + it('should select data view', async () => { + await aiops.dashboardEmbeddables.assertLogRateAnalysisEmbeddableDataViewSelectorExists(); + await aiops.dashboardEmbeddables.selectLogRateAnalysisEmbeddableDataView( + testDataSetup.sourceIndexOrSavedSearch + ); + }); + + it('should create new log rate analysis panel', async () => { + await aiops.dashboardEmbeddables.clickLogRateAnalysisInitializerConfirmButtonEnabled(); + await PageObjects.timePicker.pauseAutoRefresh(); + await aiops.dashboardEmbeddables.assertDashboardPanelExists(testDataPanel.panelTitle); + await aiops.logRateAnalysisPage.assertAutoRunButtonExists(); + await PageObjects.dashboard.saveDashboard(testDataPanel.dashboardTitle); + }); + + it('should run log rate analysis', async () => { + await aiops.dashboardEmbeddables.assertDashboardPanelExists(testDataPanel.panelTitle); + await aiops.logRateAnalysisPage.clickAutoRunButton(); + // Wait for the analysis to finish + await aiops.logRateAnalysisPage.assertAnalysisComplete( + testDataSetup.analysisType, + testDataSetup.dataGenerator + ); + }); + }); + }); +} diff --git a/x-pack/test/functional/services/aiops/dashboard_embeddables.ts b/x-pack/test/functional/services/aiops/dashboard_embeddables.ts new file mode 100644 index 0000000000000..a24cec24734da --- /dev/null +++ b/x-pack/test/functional/services/aiops/dashboard_embeddables.ts @@ -0,0 +1,110 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; + +import { FtrProviderContext } from '../../ftr_provider_context'; + +export function AiopsDashboardEmbeddablesProvider({ getService }: FtrProviderContext) { + const comboBox = getService('comboBox'); + const retry = getService('retry'); + const testSubjects = getService('testSubjects'); + const find = getService('find'); + const dashboardAddPanel = getService('dashboardAddPanel'); + + return { + async assertLogRateAnalysisEmbeddableInitializerExists() { + await retry.tryForTime(10 * 1000, async () => { + await testSubjects.existOrFail('aiopsLogRateAnalysisEmbeddableInitializer', { + timeout: 1000, + }); + }); + }, + + async assertLogRateAnalysisEmbeddableInitializerNotExists() { + await retry.tryForTime(10 * 1000, async () => { + await testSubjects.missingOrFail('aiopsLogRateAnalysisEmbeddableInitializer', { + timeout: 1000, + }); + }); + }, + + async assertInitializerConfirmButtonEnabled(subj: string) { + await retry.tryForTime(60 * 1000, async () => { + await testSubjects.existOrFail(subj); + await testSubjects.isEnabled(subj); + }); + }, + + async assertDashboardIsEmpty() { + await retry.tryForTime(60 * 1000, async () => { + await testSubjects.existOrFail('emptyDashboardWidget'); + }); + }, + + async assertDashboardPanelExists(title: string) { + await retry.tryForTime(5000, async () => { + await find.existsByLinkText(title); + }); + }, + + async assertLogsAiopsSectionExists(expectExist = true) { + await retry.tryForTime(60 * 1000, async () => { + await dashboardAddPanel.clickEditorMenuButton(); + await dashboardAddPanel.verifyEmbeddableFactoryGroupExists('logs-aiops', expectExist); + }); + }, + + async clickLogRateAnalysisInitializerConfirmButtonEnabled() { + const subj = 'aiopsLogRateAnalysisConfirmButton'; + await retry.tryForTime(60 * 1000, async () => { + await this.assertInitializerConfirmButtonEnabled(subj); + await testSubjects.clickWhenNotDisabledWithoutRetry(subj); + await this.assertLogRateAnalysisEmbeddableInitializerNotExists(); + }); + }, + + async openEmbeddableInitializer(mlEmbeddableType: 'aiopsLogRateAnalysisEmbeddable') { + const name = { + aiopsLogRateAnalysisEmbeddable: 'Log rate analysis', + }; + await retry.tryForTime(60 * 1000, async () => { + await dashboardAddPanel.clickEditorMenuButton(); + await testSubjects.existOrFail('dashboardPanelSelectionFlyout', { timeout: 2000 }); + + await dashboardAddPanel.verifyEmbeddableFactoryGroupExists('logs-aiops'); + + await dashboardAddPanel.clickAddNewPanelFromUIActionLink(name[mlEmbeddableType]); + await testSubjects.existOrFail('aiopsLogRateAnalysisControls', { timeout: 2000 }); + }); + }, + + async assertLogRateAnalysisEmbeddableDataViewSelectorExists() { + await testSubjects.existOrFail( + 'aiopsLogRateAnalysisEmbeddableDataViewSelector > comboBoxInput' + ); + }, + + async assertLogRateAnalysisEmbeddableDataViewSelection(dataViewValue: string) { + const comboBoxSelectedOptions = await comboBox.getComboBoxSelectedOptions( + 'aiopsLogRateAnalysisEmbeddableDataViewSelector > comboBoxInput' + ); + expect(comboBoxSelectedOptions).to.eql( + [dataViewValue], + `Expected data view selection to be '${dataViewValue}' (got '${comboBoxSelectedOptions}')` + ); + }, + + async selectLogRateAnalysisEmbeddableDataView(dataViewValue: string) { + await comboBox.set( + 'aiopsLogRateAnalysisEmbeddableDataViewSelector > comboBoxInput', + dataViewValue + ); + await this.assertLogRateAnalysisEmbeddableDataViewSelection(dataViewValue); + }, + }; +} diff --git a/x-pack/test/functional/services/aiops/index.ts b/x-pack/test/functional/services/aiops/index.ts index 71de8c397c073..39abf21375f86 100644 --- a/x-pack/test/functional/services/aiops/index.ts +++ b/x-pack/test/functional/services/aiops/index.ts @@ -7,6 +7,7 @@ import type { FtrProviderContext } from '../../ftr_provider_context'; +import { AiopsDashboardEmbeddablesProvider } from './dashboard_embeddables'; import { LogRateAnalysisPageProvider } from './log_rate_analysis_page'; import { LogRateAnalysisResultsTableProvider } from './log_rate_analysis_results_table'; import { LogRateAnalysisResultsGroupsTableProvider } from './log_rate_analysis_results_groups_table'; @@ -16,6 +17,7 @@ import { ChangePointDetectionPageProvider } from './change_point_detection_page' import { MlTableServiceProvider } from '../ml/common_table_service'; export function AiopsProvider(context: FtrProviderContext) { + const dashboardEmbeddables = AiopsDashboardEmbeddablesProvider(context); const logRateAnalysisPage = LogRateAnalysisPageProvider(context); const logRateAnalysisResultsTable = LogRateAnalysisResultsTableProvider(context); const logRateAnalysisResultsGroupsTable = LogRateAnalysisResultsGroupsTableProvider(context); @@ -27,6 +29,7 @@ export function AiopsProvider(context: FtrProviderContext) { const changePointDetectionPage = ChangePointDetectionPageProvider(context, tableService); return { + dashboardEmbeddables, changePointDetectionPage, logRateAnalysisPage, logRateAnalysisResultsTable, diff --git a/x-pack/test/functional/services/aiops/log_rate_analysis_page.ts b/x-pack/test/functional/services/aiops/log_rate_analysis_page.ts index 66c4e64f05efe..0f7b14e3e8be7 100644 --- a/x-pack/test/functional/services/aiops/log_rate_analysis_page.ts +++ b/x-pack/test/functional/services/aiops/log_rate_analysis_page.ts @@ -266,6 +266,22 @@ export function LogRateAnalysisPageProvider({ getService, getPageObject }: FtrPr ); }, + async clickAutoRunButton() { + await testSubjects.clickWhenNotDisabledWithoutRetry( + 'aiopsLogRateAnalysisContentRunAnalysisButton' + ); + + await retry.tryForTime(30 * 1000, async () => { + await testSubjects.missingOrFail('aiopsLogRateAnalysisContentRunAnalysisButton'); + }); + }, + + async assertAutoRunButtonExists() { + await retry.tryForTime(5000, async () => { + await testSubjects.existOrFail('aiopsLogRateAnalysisContentRunAnalysisButton'); + }); + }, + async assertNoAutoRunButtonExists() { await testSubjects.existOrFail('aiopsLogRateAnalysisNoAutoRunContentRunAnalysisButton'); }, From fe168221df0d0bf598a8c32eb3c910df402572db Mon Sep 17 00:00:00 2001 From: Pierre Gayvallet Date: Tue, 5 Nov 2024 15:54:41 +0100 Subject: [PATCH 35/57] Add `stream` param for inference APIs (#198646) ## Summary Fix https://github.com/elastic/kibana/issues/198644 Add a `stream` parameter to the `chatComplete` and `output` APIs, defaulting to `false`, to switch between "full content response as promise" and "event observable" responses. Note: at the moment, in non-stream mode, the implementation is simply constructing the response from the observable. It should be possible later to improve this by having the LLM adapters handle the stream/no-stream logic, but this is out of scope of the current PR. ### Normal mode ```ts const response = await chatComplete({ connectorId: 'my-connector', system: "You are a helpful assistant", messages: [ { role: MessageRole.User, content: "Some question?"}, ] }); const { content, toolCalls } = response; // do something ``` ### Stream mode ```ts const events$ = chatComplete({ stream: true, connectorId: 'my-connector', system: "You are a helpful assistant", messages: [ { role: MessageRole.User, content: "Some question?"}, ] }); events$.subscribe((event) => { // do something }); ``` --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Elastic Machine --- ...use_observability_ai_assistant_context.tsx | 3 + .../ai-infra/inference-common/index.ts | 8 +- .../inference-common/src/chat_complete/api.ts | 93 +++++++- .../src/chat_complete/events.ts | 38 +-- .../src/chat_complete/index.ts | 5 +- .../src/chat_complete/tool_schema.ts | 7 +- .../inference-common/src/output/api.ts | 143 ++++++++++-- .../inference-common/src/output/index.ts | 8 +- x-pack/plugins/inference/README.md | 216 ++++++++++++++++-- .../common/create_output_api.test.ts | 122 ++++++++++ .../inference/common/create_output_api.ts | 69 ++++-- .../inference/public/chat_complete.test.ts | 63 +++++ .../plugins/inference/public/chat_complete.ts | 43 +++- .../scripts/evaluation/evaluation.ts | 4 +- .../scripts/evaluation/evaluation_client.ts | 73 +++--- .../evaluation/scenarios/esql/index.spec.ts | 54 ++--- .../load_esql_docs/utils/output_executor.ts | 15 +- .../inference/scripts/util/kibana_client.ts | 54 +++-- .../inference/server/chat_complete/api.ts | 35 +-- .../server/chat_complete/utils/index.ts | 1 + .../utils/stream_to_response.test.ts | 73 ++++++ .../chat_complete/utils/stream_to_response.ts | 42 ++++ .../inference/server/routes/chat_complete.ts | 65 ++++-- .../tasks/nl_to_esql/actions/generate_esql.ts | 1 + .../actions/request_documentation.ts | 4 +- .../server/test_utils/chat_complete_events.ts | 39 ++++ 26 files changed, 1050 insertions(+), 228 deletions(-) create mode 100644 x-pack/plugins/inference/common/create_output_api.test.ts create mode 100644 x-pack/plugins/inference/public/chat_complete.test.ts create mode 100644 x-pack/plugins/inference/server/chat_complete/utils/stream_to_response.test.ts create mode 100644 x-pack/plugins/inference/server/chat_complete/utils/stream_to_response.ts create mode 100644 x-pack/plugins/inference/server/test_utils/chat_complete_events.ts diff --git a/src/plugins/dashboard/public/dashboard_app/hooks/use_observability_ai_assistant_context.tsx b/src/plugins/dashboard/public/dashboard_app/hooks/use_observability_ai_assistant_context.tsx index c20e8fcd1dc76..39ae4594d5bc8 100644 --- a/src/plugins/dashboard/public/dashboard_app/hooks/use_observability_ai_assistant_context.tsx +++ b/src/plugins/dashboard/public/dashboard_app/hooks/use_observability_ai_assistant_context.tsx @@ -114,9 +114,11 @@ export function useObservabilityAIAssistantContext({ }, metric: { type: 'object', + properties: {}, }, gauge: { type: 'object', + properties: {}, }, pie: { type: 'object', @@ -158,6 +160,7 @@ export function useObservabilityAIAssistantContext({ }, table: { type: 'object', + properties: {}, }, tagcloud: { type: 'object', diff --git a/x-pack/packages/ai-infra/inference-common/index.ts b/x-pack/packages/ai-infra/inference-common/index.ts index 6de7ce3bb8008..502d8e86a0beb 100644 --- a/x-pack/packages/ai-infra/inference-common/index.ts +++ b/x-pack/packages/ai-infra/inference-common/index.ts @@ -25,12 +25,15 @@ export { type ToolChoice, type ChatCompleteAPI, type ChatCompleteOptions, - type ChatCompletionResponse, + type ChatCompleteCompositeResponse, type ChatCompletionTokenCountEvent, type ChatCompletionEvent, type ChatCompletionChunkEvent, type ChatCompletionChunkToolCall, type ChatCompletionMessageEvent, + type ChatCompleteStreamResponse, + type ChatCompleteResponse, + type ChatCompletionTokenCount, withoutTokenCountEvents, withoutChunkEvents, isChatCompletionMessageEvent, @@ -48,7 +51,10 @@ export { export { OutputEventType, type OutputAPI, + type OutputOptions, type OutputResponse, + type OutputCompositeResponse, + type OutputStreamResponse, type OutputCompleteEvent, type OutputUpdateEvent, type Output, diff --git a/x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts b/x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts index c6ffa9d4c8d5d..cb91f4e53e8ae 100644 --- a/x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts +++ b/x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts @@ -6,16 +6,35 @@ */ import type { Observable } from 'rxjs'; -import type { ToolOptions } from './tools'; +import type { ToolCallsOf, ToolOptions } from './tools'; import type { Message } from './messages'; -import type { ChatCompletionEvent } from './events'; +import type { ChatCompletionEvent, ChatCompletionTokenCount } from './events'; /** * Request a completion from the LLM based on a prompt or conversation. * - * @example using the API to get an event observable. + * By default, The complete LLM response will be returned as a promise. + * + * @example using the API in default mode to get promise of the LLM response. + * ```ts + * const response = await chatComplete({ + * connectorId: 'my-connector', + * system: "You are a helpful assistant", + * messages: [ + * { role: MessageRole.User, content: "Some question?"}, + * ] + * }); + * + * const { content, tokens, toolCalls } = response; + * ``` + * + * Use `stream: true` to return an observable returning the full set + * of events in real time. + * + * @example using the API in stream mode to get an event observable. * ```ts * const events$ = chatComplete({ + * stream: true, * connectorId: 'my-connector', * system: "You are a helpful assistant", * messages: [ @@ -24,20 +43,44 @@ import type { ChatCompletionEvent } from './events'; * { role: MessageRole.User, content: "Another question?"}, * ] * }); + * + * // using the observable + * events$.pipe(withoutTokenCountEvents()).subscribe((event) => { + * if (isChatCompletionChunkEvent(event)) { + * // do something with the chunk event + * } else { + * // do something with the message event + * } + * }); + * ``` */ -export type ChatCompleteAPI = ( - options: ChatCompleteOptions -) => ChatCompletionResponse; +export type ChatCompleteAPI = < + TToolOptions extends ToolOptions = ToolOptions, + TStream extends boolean = false +>( + options: ChatCompleteOptions +) => ChatCompleteCompositeResponse; /** * Options used to call the {@link ChatCompleteAPI} */ -export type ChatCompleteOptions = { +export type ChatCompleteOptions< + TToolOptions extends ToolOptions = ToolOptions, + TStream extends boolean = false +> = { /** * The ID of the connector to use. - * Must be a genAI compatible connector, or an error will be thrown. + * Must be an inference connector, or an error will be thrown. */ connectorId: string; + /** + * Set to true to enable streaming, which will change the API response type from + * a single {@link ChatCompleteResponse} promise + * to a {@link ChatCompleteStreamResponse} event observable. + * + * Defaults to false. + */ + stream?: TStream; /** * Optional system message for the LLM. */ @@ -53,14 +96,44 @@ export type ChatCompleteOptions } & TToolOptions; /** - * Response from the {@link ChatCompleteAPI}. + * Composite response type from the {@link ChatCompleteAPI}, + * which can be either an observable or a promise depending on + * whether API was called with stream mode enabled or not. + */ +export type ChatCompleteCompositeResponse< + TToolOptions extends ToolOptions = ToolOptions, + TStream extends boolean = false +> = TStream extends true + ? ChatCompleteStreamResponse + : Promise>; + +/** + * Response from the {@link ChatCompleteAPI} when streaming is enabled. * * Observable of {@link ChatCompletionEvent} */ -export type ChatCompletionResponse = Observable< +export type ChatCompleteStreamResponse = Observable< ChatCompletionEvent >; +/** + * Response from the {@link ChatCompleteAPI} when streaming is not enabled. + */ +export interface ChatCompleteResponse { + /** + * The text content of the LLM response. + */ + content: string; + /** + * The eventual tool calls performed by the LLM. + */ + toolCalls: ToolCallsOf['toolCalls']; + /** + * Token counts + */ + tokens?: ChatCompletionTokenCount; +} + /** * Define the function calling mode when using inference APIs. * - native will use the LLM's native function calling (requires the LLM to have native support) diff --git a/x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts b/x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts index 92c49e6ee7fc0..73396b3e2b905 100644 --- a/x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts +++ b/x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts @@ -76,30 +76,38 @@ export type ChatCompletionChunkEvent = tool_calls: ChatCompletionChunkToolCall[]; }; +/** + * Token count structure for the chatComplete API. + */ +export interface ChatCompletionTokenCount { + /** + * Input token count + */ + prompt: number; + /** + * Output token count + */ + completion: number; + /** + * Total token count + */ + total: number; +} + /** * Token count event, send only once, usually (but not necessarily) * before the message event */ export type ChatCompletionTokenCountEvent = InferenceTaskEventBase & { - tokens: { - /** - * Input token count - */ - prompt: number; - /** - * Output token count - */ - completion: number; - /** - * Total token count - */ - total: number; - }; + /** + * The token count structure + */ + tokens: ChatCompletionTokenCount; }; /** - * Events emitted from the {@link ChatCompletionResponse} observable + * Events emitted from the {@link ChatCompleteResponse} observable * returned from the {@link ChatCompleteAPI}. * * The chatComplete API returns 3 type of events: diff --git a/x-pack/packages/ai-infra/inference-common/src/chat_complete/index.ts b/x-pack/packages/ai-infra/inference-common/src/chat_complete/index.ts index 8199af4cf068b..ca69f39b273e5 100644 --- a/x-pack/packages/ai-infra/inference-common/src/chat_complete/index.ts +++ b/x-pack/packages/ai-infra/inference-common/src/chat_complete/index.ts @@ -6,10 +6,12 @@ */ export type { - ChatCompletionResponse, + ChatCompleteCompositeResponse, ChatCompleteAPI, ChatCompleteOptions, FunctionCallingMode, + ChatCompleteStreamResponse, + ChatCompleteResponse, } from './api'; export { ChatCompletionEventType, @@ -18,6 +20,7 @@ export { type ChatCompletionEvent, type ChatCompletionChunkToolCall, type ChatCompletionTokenCountEvent, + type ChatCompletionTokenCount, } from './events'; export { MessageRole, diff --git a/x-pack/packages/ai-infra/inference-common/src/chat_complete/tool_schema.ts b/x-pack/packages/ai-infra/inference-common/src/chat_complete/tool_schema.ts index bb4742c6b74d9..fd935785f74f5 100644 --- a/x-pack/packages/ai-infra/inference-common/src/chat_complete/tool_schema.ts +++ b/x-pack/packages/ai-infra/inference-common/src/chat_complete/tool_schema.ts @@ -11,9 +11,9 @@ interface ToolSchemaFragmentBase { description?: string; } -interface ToolSchemaTypeObject extends ToolSchemaFragmentBase { +export interface ToolSchemaTypeObject extends ToolSchemaFragmentBase { type: 'object'; - properties?: Record; + properties: Record; required?: string[] | readonly string[]; } @@ -40,6 +40,9 @@ interface ToolSchemaTypeArray extends ToolSchemaFragmentBase { items: Exclude; } +/** + * A tool schema property's possible types. + */ export type ToolSchemaType = | ToolSchemaTypeObject | ToolSchemaTypeString diff --git a/x-pack/packages/ai-infra/inference-common/src/output/api.ts b/x-pack/packages/ai-infra/inference-common/src/output/api.ts index 677d2f7015c2a..3355042910a61 100644 --- a/x-pack/packages/ai-infra/inference-common/src/output/api.ts +++ b/x-pack/packages/ai-infra/inference-common/src/output/api.ts @@ -6,39 +6,140 @@ */ import type { Observable } from 'rxjs'; -import type { Message, FunctionCallingMode, FromToolSchema, ToolSchema } from '../chat_complete'; -import type { OutputEvent } from './events'; +import { Message, FunctionCallingMode, FromToolSchema, ToolSchema } from '../chat_complete'; +import { Output, OutputEvent } from './events'; /** * Generate a response with the LLM for a prompt, optionally based on a schema. * - * @param {string} id The id of the operation - * @param {string} options.connectorId The ID of the connector that is to be used. - * @param {string} options.input The prompt for the LLM. - * @param {string} options.messages Previous messages in a conversation. - * @param {ToolSchema} [options.schema] The schema the response from the LLM should adhere to. + * @example + * ```ts + * // schema must be defined as full const or using the `satisfies ToolSchema` modifier for TS type inference to work + * const mySchema = { + * type: 'object', + * properties: { + * animals: { + * description: 'the list of animals that are mentioned in the provided article', + * type: 'array', + * items: { + * type: 'string', + * }, + * }, + * }, + * } as const; + * + * const response = outputApi({ + * id: 'extract_from_article', + * connectorId: 'my-connector connector', + * schema: mySchema, + * input: ` + * Please find all the animals that are mentioned in the following document: + * ## Document¬ + * ${theDoc} + * `, + * }); + * + * // output is properly typed from the provided schema + * const { animals } = response.output; + * ``` */ export type OutputAPI = < TId extends string = string, - TOutputSchema extends ToolSchema | undefined = ToolSchema | undefined + TOutputSchema extends ToolSchema | undefined = ToolSchema | undefined, + TStream extends boolean = false >( - id: TId, - options: { - connectorId: string; - system?: string; - input: string; - schema?: TOutputSchema; - previousMessages?: Message[]; - functionCalling?: FunctionCallingMode; - } -) => OutputResponse; + options: OutputOptions +) => OutputCompositeResponse; + +/** + * Options for the {@link OutputAPI} + */ +export interface OutputOptions< + TId extends string = string, + TOutputSchema extends ToolSchema | undefined = ToolSchema | undefined, + TStream extends boolean = false +> { + /** + * The id of the operation. + */ + id: TId; + /** + * The ID of the connector to use. + * Must be an inference connector, or an error will be thrown. + */ + connectorId: string; + /** + * Optional system message for the LLM. + */ + system?: string; + /** + * The prompt for the LLM. + */ + input: string; + /** + * The schema the response from the LLM should adhere to. + */ + schema?: TOutputSchema; + /** + * Previous messages in the conversation. + * If provided, will be passed to the LLM in addition to `input`. + */ + previousMessages?: Message[]; + /** + * Function calling mode, defaults to "native". + */ + functionCalling?: FunctionCallingMode; + /** + * Set to true to enable streaming, which will change the API response type from + * a single promise to an event observable. + * + * Defaults to false. + */ + stream?: TStream; +} + +/** + * Composite response type from the {@link OutputAPI}, + * which can be either an observable or a promise depending on + * whether API was called with stream mode enabled or not. + */ +export type OutputCompositeResponse< + TId extends string = string, + TOutputSchema extends ToolSchema | undefined = ToolSchema | undefined, + TStream extends boolean = false +> = TStream extends true + ? OutputStreamResponse + : Promise< + OutputResponse< + TId, + TOutputSchema extends ToolSchema ? FromToolSchema : undefined + > + >; + +/** + * Response from the {@link OutputAPI} when streaming is not enabled. + */ +export interface OutputResponse { + /** + * The id of the operation, as specified when calling the API. + */ + id: TId; + /** + * The task output, following the schema specified as input. + */ + output: TOutput; + /** + * Potential text content provided by the LLM, if it was provided in addition to the tool call. + */ + content: string; +} /** - * Response from the {@link OutputAPI}. + * Response from the {@link OutputAPI} in streaming mode. * - * Observable of {@link OutputEvent} + * @returns Observable of {@link OutputEvent} */ -export type OutputResponse< +export type OutputStreamResponse< TId extends string = string, TOutputSchema extends ToolSchema | undefined = ToolSchema | undefined > = Observable< diff --git a/x-pack/packages/ai-infra/inference-common/src/output/index.ts b/x-pack/packages/ai-infra/inference-common/src/output/index.ts index ceac178f47faa..a3039005b2f7c 100644 --- a/x-pack/packages/ai-infra/inference-common/src/output/index.ts +++ b/x-pack/packages/ai-infra/inference-common/src/output/index.ts @@ -5,7 +5,13 @@ * 2.0. */ -export type { OutputAPI, OutputResponse } from './api'; +export type { + OutputAPI, + OutputOptions, + OutputCompositeResponse, + OutputResponse, + OutputStreamResponse, +} from './api'; export { OutputEventType, type OutputCompleteEvent, diff --git a/x-pack/plugins/inference/README.md b/x-pack/plugins/inference/README.md index 1807da7f29faa..935ae31bd6bc6 100644 --- a/x-pack/plugins/inference/README.md +++ b/x-pack/plugins/inference/README.md @@ -4,13 +4,12 @@ The inference plugin is a central place to handle all interactions with the Elas external LLM APIs. Its goals are: - Provide a single place for all interactions with large language models and other generative AI adjacent tasks. -- Abstract away differences between different LLM providers like OpenAI, Bedrock and Gemini -- Host commonly used LLM-based tasks like generating ES|QL from natural language and knowledge base recall. +- Abstract away differences between different LLM providers like OpenAI, Bedrock and Gemini. - Allow us to move gradually to the \_inference endpoint without disrupting engineers. ## Architecture and examples -![CleanShot 2024-07-14 at 14 45 27@2x](https://github.com/user-attachments/assets/e65a3e47-bce1-4dcf-bbed-4f8ac12a104f) +![architecture-schema](https://github.com/user-attachments/assets/e65a3e47-bce1-4dcf-bbed-4f8ac12a104f) ## Terminology @@ -21,8 +20,22 @@ The following concepts are commonly used throughout the plugin: - **tools**: a set of tools that the LLM can choose to use when generating the next message. In essence, it allows the consumer of the API to define a schema for structured output instead of plain text, and having the LLM select the most appropriate one. - **tool call**: when the LLM has chosen a tool (schema) to use for its output, and returns a document that matches the schema, this is referred to as a tool call. +## Inference connectors + +Performing inference, or more globally communicating with the LLM, is done using stack connectors. + +The subset of connectors that can be used for inference are called `genAI`, or `inference` connectors. +Calling any inference APIs with the ID of a connector that is not inference-compatible will result in the API throwing an error. + +The list of inference connector types: +- `.gen-ai`: OpenAI connector +- `.bedrock`: Bedrock Claude connector +- `.gemini`: Vertex Gemini connector + ## Usage examples +The inference APIs are available via the inference client, which can be created using the inference plugin's start contract: + ```ts class MyPlugin { setup(coreSetup, pluginsSetup) { @@ -40,9 +53,9 @@ class MyPlugin { async (context, request, response) => { const [coreStart, pluginsStart] = await coreSetup.getStartServices(); - const inferenceClient = pluginsSetup.inference.getClient({ request }); + const inferenceClient = pluginsStart.inference.getClient({ request }); - const chatComplete$ = inferenceClient.chatComplete({ + const chatResponse = inferenceClient.chatComplete({ connectorId: request.body.connectorId, system: `Here is my system message`, messages: [ @@ -53,13 +66,9 @@ class MyPlugin { ], }); - const message = await lastValueFrom( - chatComplete$.pipe(withoutTokenCountEvents(), withoutChunkEvents()) - ); - return response.ok({ body: { - message, + chatResponse, }, }); } @@ -68,33 +77,190 @@ class MyPlugin { } ``` -## Services +## APIs -### `chatComplete`: +### `chatComplete` API: `chatComplete` generates a response to a prompt or a conversation using the LLM. Here's what is supported: -- Normalizing request and response formats from different connector types (e.g. OpenAI, Bedrock, Claude, Elastic Inference Service) +- Normalizing request and response formats from all supported connector types - Tool calling and validation of tool calls -- Emits token count events -- Emits message events, which is the concatenated message based on the response chunks +- Token usage stats / events +- Streaming mode to work with chunks in real time instead of waiting for the full response + +#### Standard usage + +In standard mode, the API returns a promise resolving with the full LLM response once the generation is complete. +The response will also contain the token count info, if available. + +```ts +const chatResponse = inferenceClient.chatComplete({ + connectorId: 'some-gen-ai-connector', + system: `Here is my system message`, + messages: [ + { + role: MessageRole.User, + content: 'Do something', + }, + ], +}); + +const { content, tokens } = chatResponse; +// do something with the output +``` + +#### Streaming mode + +Passing `stream: true` when calling the API enables streaming mode. +In that mode, the API returns an observable instead of a promise, emitting chunks in real time. + +That observable emits three types of events: + +- `chunk` the completion chunks, emitted in real time +- `tokenCount` token count event, containing info about token usages, eventually emitted after the chunks +- `message` full message event, emitted once the source is done sending chunks + +The `@kbn/inference-common` package exposes various utilities to work with this multi-events observable: + +- `isChatCompletionChunkEvent`, `isChatCompletionMessageEvent` and `isChatCompletionTokenCountEvent` which are type guard for the corresponding event types +- `withoutChunkEvents` and `withoutTokenCountEvents` + +```ts +import { + isChatCompletionChunkEvent, + isChatCompletionMessageEvent, + withoutTokenCountEvents, + withoutChunkEvents, +} from '@kbn/inference-common'; -### `output` +const chatComplete$ = inferenceClient.chatComplete({ + connectorId: 'some-gen-ai-connector', + stream: true, + system: `Here is my system message`, + messages: [ + { + role: MessageRole.User, + content: 'Do something', + }, + ], +}); -`output` is a wrapper around `chatComplete` that is catered towards a single use case: having the LLM output a structured response, based on a schema. It also drops the token count events to simplify usage. +// using and filtering the events +chatComplete$.pipe(withoutTokenCountEvents()).subscribe((event) => { + if (isChatCompletionChunkEvent(event)) { + // do something with the chunk event + } else { + // do something with the message event + } +}); + +// or retrieving the final message +const message = await lastValueFrom( + chatComplete$.pipe(withoutTokenCountEvents(), withoutChunkEvents()) +); +``` + +#### Defining and using tools + +Tools are defined as a record, with a `description` and optionally a `schema`. The reason why it's a record is because of type-safety. +This allows us to have fully typed tool calls (e.g. when the name of the tool being called is `x`, its arguments are typed as the schema of `x`). + +The description and schema of a tool will be converted and sent to the LLM, so it's important +to be explicit about what each tool does. + +```ts +const chatResponse = inferenceClient.chatComplete({ + connectorId: 'some-gen-ai-connector', + system: `Here is my system message`, + messages: [ + { + role: MessageRole.User, + content: 'How much is 4 plus 9?', + }, + ], + toolChoice: ToolChoiceType.required, // MUST call a tool + tools: { + date: { + description: 'Call this tool if you need to know the current date' + }, + add: { + description: 'This tool can be used to add two numbers', + schema: { + type: 'object', + properties: { + a: { type: 'number', description: 'the first number' }, + b: { type: 'number', description: 'the second number'} + }, + required: ['a', 'b'] + } + } + } as const // as const is required to have type inference on the schema +}); -### Observable event streams +const { content, toolCalls } = chatResponse; +const toolCall = toolCalls[0]; +// process the tool call and eventually continue the conversation with the LLM +``` + +### `output` API + +`output` is a wrapper around the `chatComplete` API that is catered towards a specific use case: having the LLM output a structured response, based on a schema. +It's basically just making sure that the LLM will call the single tool that is exposed via the provided `schema`. +It also drops the token count info to simplify usage. + +Similar to `chatComplete`, `output` supports two modes: normal full response mode by default, and optional streaming mode by passing the `stream: true` parameter. + +```ts +import { ToolSchema } from '@kbn/inference-common'; -These APIs, both on the client and the server, return Observables that emit events. When converting the Observable into a stream, the following things happen: +// schema must be defined as full const or using the `satisfies ToolSchema` modifier for TS type inference to work +const mySchema = { + type: 'object', + properties: { + animals: { + description: 'the list of animals that are mentioned in the provided article', + type: 'array', + items: { + type: 'string', + }, + }, + vegetables: { + description: 'the list of vegetables that are mentioned in the provided article', + type: 'array', + items: { + type: 'string', + }, + }, + }, +} as const; -- Errors are caught and serialized as events sent over the stream (after an error, the stream ends). -- The response stream outputs data as [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events) -- The client that reads the stream, parses the event source as an Observable, and if it encounters a serialized error, it deserializes it and throws an error in the Observable. +const response = inferenceClient.outputApi({ + id: 'extract_from_article', + connectorId: 'some-gen-ai-connector', + schema: mySchema, + system: + 'You are a helpful assistant and your current task is to extract informations from the provided document', + input: ` + Please find all the animals and vegetables that are mentioned in the following document: + + ## Document + + ${theDoc} + `, +}); + +// output is properly typed from the provided schema +const { animals, vegetables } = response.output; +``` ### Errors -All known errors are instances, and not extensions, from the `InferenceTaskError` base class, which has a `code`, a `message`, and `meta` information about the error. This allows us to serialize and deserialize errors over the wire without a complicated factory pattern. +All known errors are instances, and not extensions, of the `InferenceTaskError` base class, which has a `code`, a `message`, and `meta` information about the error. +This allows us to serialize and deserialize errors over the wire without a complicated factory pattern. -### Tools +Type guards for each type of error are exposed from the `@kbn/inference-common` package, such as: -Tools are defined as a record, with a `description` and optionally a `schema`. The reason why it's a record is because of type-safety. This allows us to have fully typed tool calls (e.g. when the name of the tool being called is `x`, its arguments are typed as the schema of `x`). +- `isInferenceError` +- `isInferenceInternalError` +- `isInferenceRequestError` +- ...`isXXXError` diff --git a/x-pack/plugins/inference/common/create_output_api.test.ts b/x-pack/plugins/inference/common/create_output_api.test.ts new file mode 100644 index 0000000000000..b5d380fa9aac6 --- /dev/null +++ b/x-pack/plugins/inference/common/create_output_api.test.ts @@ -0,0 +1,122 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { firstValueFrom, isObservable, of, toArray } from 'rxjs'; +import { + ChatCompleteResponse, + ChatCompletionEvent, + ChatCompletionEventType, +} from '@kbn/inference-common'; +import { createOutputApi } from './create_output_api'; + +describe('createOutputApi', () => { + let chatComplete: jest.Mock; + + beforeEach(() => { + chatComplete = jest.fn(); + }); + + it('calls `chatComplete` with the right parameters', async () => { + chatComplete.mockResolvedValue(Promise.resolve({ content: 'content', toolCalls: [] })); + + const output = createOutputApi(chatComplete); + + await output({ + id: 'id', + stream: false, + functionCalling: 'native', + connectorId: '.my-connector', + system: 'system', + input: 'input message', + }); + + expect(chatComplete).toHaveBeenCalledTimes(1); + expect(chatComplete).toHaveBeenCalledWith({ + connectorId: '.my-connector', + functionCalling: 'native', + stream: false, + system: 'system', + messages: [ + { + content: 'input message', + role: 'user', + }, + ], + }); + }); + + it('returns the expected value when stream=false', async () => { + const chatCompleteResponse: ChatCompleteResponse = { + content: 'content', + toolCalls: [{ toolCallId: 'a', function: { name: 'foo', arguments: { arg: 1 } } }], + }; + + chatComplete.mockResolvedValue(Promise.resolve(chatCompleteResponse)); + + const output = createOutputApi(chatComplete); + + const response = await output({ + id: 'my-id', + stream: false, + connectorId: '.my-connector', + input: 'input message', + }); + + expect(response).toEqual({ + id: 'my-id', + content: chatCompleteResponse.content, + output: chatCompleteResponse.toolCalls[0].function.arguments, + }); + }); + + it('returns the expected value when stream=true', async () => { + const sourceEvents: ChatCompletionEvent[] = [ + { type: ChatCompletionEventType.ChatCompletionChunk, content: 'chunk-1', tool_calls: [] }, + { type: ChatCompletionEventType.ChatCompletionChunk, content: 'chunk-2', tool_calls: [] }, + { + type: ChatCompletionEventType.ChatCompletionMessage, + content: 'message', + toolCalls: [{ toolCallId: 'a', function: { name: 'foo', arguments: { arg: 1 } } }], + }, + ]; + + chatComplete.mockReturnValue(of(...sourceEvents)); + + const output = createOutputApi(chatComplete); + + const response$ = await output({ + id: 'my-id', + stream: true, + connectorId: '.my-connector', + input: 'input message', + }); + + expect(isObservable(response$)).toEqual(true); + const events = await firstValueFrom(response$.pipe(toArray())); + + expect(events).toEqual([ + { + content: 'chunk-1', + id: 'my-id', + type: 'output', + }, + { + content: 'chunk-2', + id: 'my-id', + type: 'output', + }, + { + content: 'message', + id: 'my-id', + output: { + arg: 1, + }, + type: 'complete', + }, + ]); + }); +}); diff --git a/x-pack/plugins/inference/common/create_output_api.ts b/x-pack/plugins/inference/common/create_output_api.ts index 450114c892cba..e5dd2eeda2cbd 100644 --- a/x-pack/plugins/inference/common/create_output_api.ts +++ b/x-pack/plugins/inference/common/create_output_api.ts @@ -5,24 +5,36 @@ * 2.0. */ -import { map } from 'rxjs'; import { - OutputAPI, - OutputEvent, - OutputEventType, ChatCompleteAPI, ChatCompletionEventType, MessageRole, + OutputAPI, + OutputEventType, + OutputOptions, + ToolSchema, withoutTokenCountEvents, } from '@kbn/inference-common'; +import { isObservable, map } from 'rxjs'; import { ensureMultiTurn } from './utils/ensure_multi_turn'; -export function createOutputApi(chatCompleteApi: ChatCompleteAPI): OutputAPI { - return (id, { connectorId, input, schema, system, previousMessages, functionCalling }) => { - return chatCompleteApi({ +export function createOutputApi(chatCompleteApi: ChatCompleteAPI): OutputAPI; +export function createOutputApi(chatCompleteApi: ChatCompleteAPI) { + return ({ + id, + connectorId, + input, + schema, + system, + previousMessages, + functionCalling, + stream, + }: OutputOptions) => { + const response = chatCompleteApi({ connectorId, - system, + stream, functionCalling, + system, messages: ensureMultiTurn([ ...(previousMessages || []), { @@ -41,27 +53,42 @@ export function createOutputApi(chatCompleteApi: ChatCompleteAPI): OutputAPI { toolChoice: { function: 'structuredOutput' as const }, } : {}), - }).pipe( - withoutTokenCountEvents(), - map((event): OutputEvent => { - if (event.type === ChatCompletionEventType.ChatCompletionChunk) { + }); + + if (isObservable(response)) { + return response.pipe( + withoutTokenCountEvents(), + map((event) => { + if (event.type === ChatCompletionEventType.ChatCompletionChunk) { + return { + type: OutputEventType.OutputUpdate, + id, + content: event.content, + }; + } + return { - type: OutputEventType.OutputUpdate, id, + output: + event.toolCalls.length && 'arguments' in event.toolCalls[0].function + ? event.toolCalls[0].function.arguments + : undefined, content: event.content, + type: OutputEventType.OutputComplete, }; - } - + }) + ); + } else { + return response.then((chatResponse) => { return { id, + content: chatResponse.content, output: - event.toolCalls.length && 'arguments' in event.toolCalls[0].function - ? event.toolCalls[0].function.arguments + chatResponse.toolCalls.length && 'arguments' in chatResponse.toolCalls[0].function + ? chatResponse.toolCalls[0].function.arguments : undefined, - content: event.content, - type: OutputEventType.OutputComplete, }; - }) - ); + }); + } }; } diff --git a/x-pack/plugins/inference/public/chat_complete.test.ts b/x-pack/plugins/inference/public/chat_complete.test.ts new file mode 100644 index 0000000000000..b297db1f2fb2c --- /dev/null +++ b/x-pack/plugins/inference/public/chat_complete.test.ts @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { omit } from 'lodash'; +import { httpServiceMock } from '@kbn/core/public/mocks'; +import { ChatCompleteAPI, MessageRole, ChatCompleteOptions } from '@kbn/inference-common'; +import { createChatCompleteApi } from './chat_complete'; + +describe('createChatCompleteApi', () => { + let http: ReturnType; + let chatComplete: ChatCompleteAPI; + + beforeEach(() => { + http = httpServiceMock.createStartContract(); + chatComplete = createChatCompleteApi({ http }); + }); + + it('calls http.post with the right parameters when stream is not true', async () => { + const params = { + connectorId: 'my-connector', + functionCalling: 'native', + system: 'system', + messages: [{ role: MessageRole.User, content: 'question' }], + }; + await chatComplete(params as ChatCompleteOptions); + + expect(http.post).toHaveBeenCalledTimes(1); + expect(http.post).toHaveBeenCalledWith('/internal/inference/chat_complete', { + body: expect.any(String), + }); + const callBody = http.post.mock.lastCall!; + + expect(JSON.parse((callBody as any[])[1].body as string)).toEqual(params); + }); + + it('calls http.post with the right parameters when stream is true', async () => { + http.post.mockResolvedValue({}); + + const params = { + connectorId: 'my-connector', + functionCalling: 'native', + stream: true, + system: 'system', + messages: [{ role: MessageRole.User, content: 'question' }], + }; + + await chatComplete(params as ChatCompleteOptions); + + expect(http.post).toHaveBeenCalledTimes(1); + expect(http.post).toHaveBeenCalledWith('/internal/inference/chat_complete/stream', { + asResponse: true, + rawResponse: true, + body: expect.any(String), + }); + const callBody = http.post.mock.lastCall!; + + expect(JSON.parse((callBody as any[])[1].body as string)).toEqual(omit(params, 'stream')); + }); +}); diff --git a/x-pack/plugins/inference/public/chat_complete.ts b/x-pack/plugins/inference/public/chat_complete.ts index 5319f7c31c381..64cb5533f20be 100644 --- a/x-pack/plugins/inference/public/chat_complete.ts +++ b/x-pack/plugins/inference/public/chat_complete.ts @@ -5,14 +5,31 @@ * 2.0. */ -import { from } from 'rxjs'; import type { HttpStart } from '@kbn/core/public'; -import type { ChatCompleteAPI } from '@kbn/inference-common'; +import { + ChatCompleteAPI, + ChatCompleteCompositeResponse, + ChatCompleteOptions, + ToolOptions, +} from '@kbn/inference-common'; +import { from } from 'rxjs'; import type { ChatCompleteRequestBody } from '../common/http_apis'; import { httpResponseIntoObservable } from './util/http_response_into_observable'; -export function createChatCompleteApi({ http }: { http: HttpStart }): ChatCompleteAPI { - return ({ connectorId, messages, system, toolChoice, tools, functionCalling }) => { +export function createChatCompleteApi({ http }: { http: HttpStart }): ChatCompleteAPI; +export function createChatCompleteApi({ http }: { http: HttpStart }) { + return ({ + connectorId, + messages, + system, + toolChoice, + tools, + functionCalling, + stream, + }: ChatCompleteOptions): ChatCompleteCompositeResponse< + ToolOptions, + boolean + > => { const body: ChatCompleteRequestBody = { connectorId, system, @@ -22,12 +39,18 @@ export function createChatCompleteApi({ http }: { http: HttpStart }): ChatComple functionCalling, }; - return from( - http.post('/internal/inference/chat_complete', { - asResponse: true, - rawResponse: true, + if (stream) { + return from( + http.post('/internal/inference/chat_complete/stream', { + asResponse: true, + rawResponse: true, + body: JSON.stringify(body), + }) + ).pipe(httpResponseIntoObservable()); + } else { + return http.post('/internal/inference/chat_complete', { body: JSON.stringify(body), - }) - ).pipe(httpResponseIntoObservable()); + }); + } }; } diff --git a/x-pack/plugins/inference/scripts/evaluation/evaluation.ts b/x-pack/plugins/inference/scripts/evaluation/evaluation.ts index 0c70bf81eddad..425b7e334074a 100644 --- a/x-pack/plugins/inference/scripts/evaluation/evaluation.ts +++ b/x-pack/plugins/inference/scripts/evaluation/evaluation.ts @@ -89,8 +89,8 @@ function runEvaluations() { const evaluationClient = createInferenceEvaluationClient({ connectorId: connector.connectorId, evaluationConnectorId, - outputApi: (id, parameters) => - chatClient.output(id, { + outputApi: (parameters) => + chatClient.output({ ...parameters, connectorId: evaluationConnectorId, }) as any, diff --git a/x-pack/plugins/inference/scripts/evaluation/evaluation_client.ts b/x-pack/plugins/inference/scripts/evaluation/evaluation_client.ts index d35c214542255..99eaf02494af7 100644 --- a/x-pack/plugins/inference/scripts/evaluation/evaluation_client.ts +++ b/x-pack/plugins/inference/scripts/evaluation/evaluation_client.ts @@ -6,8 +6,7 @@ */ import { remove } from 'lodash'; -import { lastValueFrom } from 'rxjs'; -import { type OutputAPI, withoutOutputUpdateEvents } from '@kbn/inference-common'; +import type { OutputAPI } from '@kbn/inference-common'; import type { EvaluationResult } from './types'; export interface InferenceEvaluationClient { @@ -67,11 +66,12 @@ export function createInferenceEvaluationClient({ output: outputApi, getEvaluationConnectorId: () => evaluationConnectorId, evaluate: async ({ input, criteria = [], system }) => { - const evaluation = await lastValueFrom( - outputApi('evaluate', { - connectorId, - system: withAdditionalSystemContext( - `You are a helpful, respected assistant for evaluating task + const evaluation = await outputApi({ + id: 'evaluate', + stream: false, + connectorId, + system: withAdditionalSystemContext( + `You are a helpful, respected assistant for evaluating task inputs and outputs in the Elastic Platform. Your goal is to verify whether the output of a task @@ -84,10 +84,10 @@ export function createInferenceEvaluationClient({ quoting what the assistant did wrong, where it could improve, and what the root cause was in case of a failure. `, - system - ), + system + ), - input: ` + input: ` ## Criteria ${criteria @@ -99,37 +99,36 @@ export function createInferenceEvaluationClient({ ## Input ${input}`, - schema: { - type: 'object', - properties: { - criteria: { - type: 'array', - items: { - type: 'object', - properties: { - index: { - type: 'number', - description: 'The number of the criterion', - }, - score: { - type: 'number', - description: - 'The score you calculated for the criterion, between 0 (criterion fully failed) and 1 (criterion fully succeeded).', - }, - reasoning: { - type: 'string', - description: - 'Your reasoning for the score. Explain your score by mentioning what you expected to happen and what did happen.', - }, + schema: { + type: 'object', + properties: { + criteria: { + type: 'array', + items: { + type: 'object', + properties: { + index: { + type: 'number', + description: 'The number of the criterion', + }, + score: { + type: 'number', + description: + 'The score you calculated for the criterion, between 0 (criterion fully failed) and 1 (criterion fully succeeded).', + }, + reasoning: { + type: 'string', + description: + 'Your reasoning for the score. Explain your score by mentioning what you expected to happen and what did happen.', }, - required: ['index', 'score', 'reasoning'], }, + required: ['index', 'score', 'reasoning'], }, }, - required: ['criteria'], - } as const, - }).pipe(withoutOutputUpdateEvents()) - ); + }, + required: ['criteria'], + } as const, + }); const scoredCriteria = evaluation.output.criteria; diff --git a/x-pack/plugins/inference/scripts/evaluation/scenarios/esql/index.spec.ts b/x-pack/plugins/inference/scripts/evaluation/scenarios/esql/index.spec.ts index d9071b3f0ae3f..49a82db8124e9 100644 --- a/x-pack/plugins/inference/scripts/evaluation/scenarios/esql/index.spec.ts +++ b/x-pack/plugins/inference/scripts/evaluation/scenarios/esql/index.spec.ts @@ -9,8 +9,7 @@ import expect from '@kbn/expect'; import type { Logger } from '@kbn/logging'; -import { firstValueFrom, lastValueFrom, filter } from 'rxjs'; -import { isOutputCompleteEvent } from '@kbn/inference-common'; +import { lastValueFrom } from 'rxjs'; import { naturalLanguageToEsql } from '../../../../server/tasks/nl_to_esql'; import { chatClient, evaluationClient, logger } from '../../services'; import { EsqlDocumentBase } from '../../../../server/tasks/nl_to_esql/doc_base'; @@ -66,11 +65,10 @@ const retrieveUsedCommands = async ({ answer: string; esqlDescription: string; }) => { - const commandsListOutput = await firstValueFrom( - evaluationClient - .output('retrieve_commands', { - connectorId: evaluationClient.getEvaluationConnectorId(), - system: ` + const commandsListOutput = await evaluationClient.output({ + id: 'retrieve_commands', + connectorId: evaluationClient.getEvaluationConnectorId(), + system: ` You are a helpful, respected Elastic ES|QL assistant. Your role is to enumerate the list of ES|QL commands and functions that were used @@ -82,34 +80,32 @@ const retrieveUsedCommands = async ({ ${esqlDescription} `, - input: ` + input: ` # Question ${question} # Answer ${answer} `, - schema: { - type: 'object', - properties: { - commands: { - description: - 'The list of commands that were used in the provided ES|QL question and answer', - type: 'array', - items: { type: 'string' }, - }, - functions: { - description: - 'The list of functions that were used in the provided ES|QL question and answer', - type: 'array', - items: { type: 'string' }, - }, - }, - required: ['commands', 'functions'], - } as const, - }) - .pipe(filter(isOutputCompleteEvent)) - ); + schema: { + type: 'object', + properties: { + commands: { + description: + 'The list of commands that were used in the provided ES|QL question and answer', + type: 'array', + items: { type: 'string' }, + }, + functions: { + description: + 'The list of functions that were used in the provided ES|QL question and answer', + type: 'array', + items: { type: 'string' }, + }, + }, + required: ['commands', 'functions'], + } as const, + }); const output = commandsListOutput.output; diff --git a/x-pack/plugins/inference/scripts/load_esql_docs/utils/output_executor.ts b/x-pack/plugins/inference/scripts/load_esql_docs/utils/output_executor.ts index 62cfd8f877e3f..f4014db0e6e8d 100644 --- a/x-pack/plugins/inference/scripts/load_esql_docs/utils/output_executor.ts +++ b/x-pack/plugins/inference/scripts/load_esql_docs/utils/output_executor.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { lastValueFrom } from 'rxjs'; import type { OutputAPI } from '@kbn/inference-common'; export interface Prompt { @@ -27,13 +26,13 @@ export type PromptCallerFactory = ({ export const bindOutput: PromptCallerFactory = ({ connectorId, output }) => { return async ({ input, system }) => { - const response = await lastValueFrom( - output('', { - connectorId, - input, - system, - }) - ); + const response = await output({ + id: 'output', + connectorId, + input, + system, + }); + return response.content ?? ''; }; }; diff --git a/x-pack/plugins/inference/scripts/util/kibana_client.ts b/x-pack/plugins/inference/scripts/util/kibana_client.ts index b599ab81a4af4..ad6c21cf4b248 100644 --- a/x-pack/plugins/inference/scripts/util/kibana_client.ts +++ b/x-pack/plugins/inference/scripts/util/kibana_client.ts @@ -15,6 +15,7 @@ import { inspect } from 'util'; import { isReadable } from 'stream'; import { ChatCompleteAPI, + ChatCompleteCompositeResponse, OutputAPI, ChatCompletionEvent, InferenceTaskError, @@ -22,6 +23,8 @@ import { InferenceTaskEventType, createInferenceInternalError, withoutOutputUpdateEvents, + type ToolOptions, + ChatCompleteOptions, } from '@kbn/inference-common'; import type { ChatCompleteRequestBody } from '../../common/http_apis'; import type { InferenceConnector } from '../../common/connectors'; @@ -154,7 +157,7 @@ export class KibanaClient { } createInferenceClient({ connectorId }: { connectorId: string }): ScriptInferenceClient { - function stream(responsePromise: Promise) { + function streamResponse(responsePromise: Promise) { return from(responsePromise).pipe( switchMap((response) => { if (isReadable(response.data)) { @@ -174,14 +177,18 @@ export class KibanaClient { ); } - const chatCompleteApi: ChatCompleteAPI = ({ + const chatCompleteApi: ChatCompleteAPI = < + TToolOptions extends ToolOptions = ToolOptions, + TStream extends boolean = false + >({ connectorId: chatCompleteConnectorId, messages, system, toolChoice, tools, functionCalling, - }) => { + stream, + }: ChatCompleteOptions) => { const body: ChatCompleteRequestBody = { connectorId: chatCompleteConnectorId, system, @@ -191,15 +198,29 @@ export class KibanaClient { functionCalling, }; - return stream( - this.axios.post( - this.getUrl({ - pathname: `/internal/inference/chat_complete`, - }), - body, - { responseType: 'stream', timeout: NaN } - ) - ); + if (stream) { + return streamResponse( + this.axios.post( + this.getUrl({ + pathname: `/internal/inference/chat_complete/stream`, + }), + body, + { responseType: 'stream', timeout: NaN } + ) + ) as ChatCompleteCompositeResponse; + } else { + return this.axios + .post( + this.getUrl({ + pathname: `/internal/inference/chat_complete/stream`, + }), + body, + { responseType: 'stream', timeout: NaN } + ) + .then((response) => { + return response.data; + }) as ChatCompleteCompositeResponse; + } }; const outputApi: OutputAPI = createOutputApi(chatCompleteApi); @@ -211,8 +232,13 @@ export class KibanaClient { ...options, }); }, - output: (id, options) => { - return outputApi(id, { ...options }).pipe(withoutOutputUpdateEvents()); + output: (options) => { + const response = outputApi({ ...options }); + if (options.stream) { + return (response as any).pipe(withoutOutputUpdateEvents()); + } else { + return response; + } }, }; } diff --git a/x-pack/plugins/inference/server/chat_complete/api.ts b/x-pack/plugins/inference/server/chat_complete/api.ts index 62a1ea8b26146..cf325e72ddf3a 100644 --- a/x-pack/plugins/inference/server/chat_complete/api.ts +++ b/x-pack/plugins/inference/server/chat_complete/api.ts @@ -11,32 +11,37 @@ import type { Logger } from '@kbn/logging'; import type { KibanaRequest } from '@kbn/core-http-server'; import { type ChatCompleteAPI, - type ChatCompletionResponse, + type ChatCompleteCompositeResponse, createInferenceRequestError, + type ToolOptions, + ChatCompleteOptions, } from '@kbn/inference-common'; import type { InferenceStartDependencies } from '../types'; import { getConnectorById } from '../util/get_connector_by_id'; import { getInferenceAdapter } from './adapters'; -import { createInferenceExecutor, chunksIntoMessage } from './utils'; +import { createInferenceExecutor, chunksIntoMessage, streamToResponse } from './utils'; -export function createChatCompleteApi({ - request, - actions, - logger, -}: { +interface CreateChatCompleteApiOptions { request: KibanaRequest; actions: InferenceStartDependencies['actions']; logger: Logger; -}) { - const chatCompleteAPI: ChatCompleteAPI = ({ +} + +export function createChatCompleteApi(options: CreateChatCompleteApiOptions): ChatCompleteAPI; +export function createChatCompleteApi({ request, actions, logger }: CreateChatCompleteApiOptions) { + return ({ connectorId, messages, toolChoice, tools, system, functionCalling, - }): ChatCompletionResponse => { - return defer(async () => { + stream, + }: ChatCompleteOptions): ChatCompleteCompositeResponse< + ToolOptions, + boolean + > => { + const obs$ = defer(async () => { const actionsClient = await actions.getActionsClientWithRequest(request); const connector = await getConnectorById({ connectorId, actionsClient }); const executor = createInferenceExecutor({ actionsClient, connector }); @@ -73,7 +78,11 @@ export function createChatCompleteApi({ logger, }) ); - }; - return chatCompleteAPI; + if (stream) { + return obs$; + } else { + return streamToResponse(obs$); + } + }; } diff --git a/x-pack/plugins/inference/server/chat_complete/utils/index.ts b/x-pack/plugins/inference/server/chat_complete/utils/index.ts index dea2ac65f4755..d3dc2010cba3a 100644 --- a/x-pack/plugins/inference/server/chat_complete/utils/index.ts +++ b/x-pack/plugins/inference/server/chat_complete/utils/index.ts @@ -12,3 +12,4 @@ export { type InferenceExecutor, } from './inference_executor'; export { chunksIntoMessage } from './chunks_into_message'; +export { streamToResponse } from './stream_to_response'; diff --git a/x-pack/plugins/inference/server/chat_complete/utils/stream_to_response.test.ts b/x-pack/plugins/inference/server/chat_complete/utils/stream_to_response.test.ts new file mode 100644 index 0000000000000..939997a5fef15 --- /dev/null +++ b/x-pack/plugins/inference/server/chat_complete/utils/stream_to_response.test.ts @@ -0,0 +1,73 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { of } from 'rxjs'; +import { ChatCompletionEvent } from '@kbn/inference-common'; +import { chunkEvent, tokensEvent, messageEvent } from '../../test_utils/chat_complete_events'; +import { streamToResponse } from './stream_to_response'; + +describe('streamToResponse', () => { + function fromEvents(...events: ChatCompletionEvent[]) { + return of(...events); + } + + it('returns a response with token count if both message and token events got emitted', async () => { + const response = await streamToResponse( + fromEvents( + chunkEvent('chunk_1'), + chunkEvent('chunk_2'), + tokensEvent({ prompt: 1, completion: 2, total: 3 }), + messageEvent('message') + ) + ); + + expect(response).toEqual({ + content: 'message', + tokens: { + completion: 2, + prompt: 1, + total: 3, + }, + toolCalls: [], + }); + }); + + it('returns a response with tool calls if present', async () => { + const someToolCall = { + toolCallId: '42', + function: { + name: 'my_tool', + arguments: {}, + }, + }; + const response = await streamToResponse( + fromEvents(chunkEvent('chunk_1'), messageEvent('message', [someToolCall])) + ); + + expect(response).toEqual({ + content: 'message', + toolCalls: [someToolCall], + }); + }); + + it('returns a response without token count if only message got emitted', async () => { + const response = await streamToResponse( + fromEvents(chunkEvent('chunk_1'), messageEvent('message')) + ); + + expect(response).toEqual({ + content: 'message', + toolCalls: [], + }); + }); + + it('rejects an error if message event is not emitted', async () => { + await expect( + streamToResponse(fromEvents(chunkEvent('chunk_1'), tokensEvent())) + ).rejects.toThrowErrorMatchingInlineSnapshot(`"No message event found"`); + }); +}); diff --git a/x-pack/plugins/inference/server/chat_complete/utils/stream_to_response.ts b/x-pack/plugins/inference/server/chat_complete/utils/stream_to_response.ts new file mode 100644 index 0000000000000..4bae4fda767cb --- /dev/null +++ b/x-pack/plugins/inference/server/chat_complete/utils/stream_to_response.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { toArray, map, firstValueFrom } from 'rxjs'; +import { + ChatCompleteResponse, + ChatCompleteStreamResponse, + createInferenceInternalError, + isChatCompletionMessageEvent, + isChatCompletionTokenCountEvent, + ToolOptions, + withoutChunkEvents, +} from '@kbn/inference-common'; + +export const streamToResponse = ( + streamResponse$: ChatCompleteStreamResponse +): Promise> => { + return firstValueFrom( + streamResponse$.pipe( + withoutChunkEvents(), + toArray(), + map((events) => { + const messageEvent = events.find(isChatCompletionMessageEvent); + const tokenEvent = events.find(isChatCompletionTokenCountEvent); + + if (!messageEvent) { + throw createInferenceInternalError('No message event found'); + } + + return { + content: messageEvent.content, + toolCalls: messageEvent.toolCalls, + tokens: tokenEvent?.tokens, + }; + }) + ) + ); +}; diff --git a/x-pack/plugins/inference/server/routes/chat_complete.ts b/x-pack/plugins/inference/server/routes/chat_complete.ts index d4d0d012a78cd..582d4ceb97d45 100644 --- a/x-pack/plugins/inference/server/routes/chat_complete.ts +++ b/x-pack/plugins/inference/server/routes/chat_complete.ts @@ -5,8 +5,14 @@ * 2.0. */ -import { schema, Type } from '@kbn/config-schema'; -import type { CoreSetup, IRouter, Logger, RequestHandlerContext } from '@kbn/core/server'; +import { schema, Type, TypeOf } from '@kbn/config-schema'; +import type { + CoreSetup, + IRouter, + Logger, + RequestHandlerContext, + KibanaRequest, +} from '@kbn/core/server'; import { MessageRole, ToolCall, ToolChoiceType } from '@kbn/inference-common'; import type { ChatCompleteRequestBody } from '../../common/http_apis'; import { createInferenceClient } from '../inference_client'; @@ -84,6 +90,32 @@ export function registerChatCompleteRoute({ router: IRouter; logger: Logger; }) { + async function callChatComplete({ + request, + stream, + }: { + request: KibanaRequest>; + stream: T; + }) { + const actions = await coreSetup + .getStartServices() + .then(([coreStart, pluginsStart]) => pluginsStart.actions); + + const client = createInferenceClient({ request, actions, logger }); + + const { connectorId, messages, system, toolChoice, tools, functionCalling } = request.body; + + return client.chatComplete({ + connectorId, + messages, + system, + toolChoice, + tools, + functionCalling, + stream, + }); + } + router.post( { path: '/internal/inference/chat_complete', @@ -92,23 +124,22 @@ export function registerChatCompleteRoute({ }, }, async (context, request, response) => { - const actions = await coreSetup - .getStartServices() - .then(([coreStart, pluginsStart]) => pluginsStart.actions); - - const client = createInferenceClient({ request, actions, logger }); - - const { connectorId, messages, system, toolChoice, tools, functionCalling } = request.body; - - const chatCompleteResponse = client.chatComplete({ - connectorId, - messages, - system, - toolChoice, - tools, - functionCalling, + const chatCompleteResponse = await callChatComplete({ request, stream: false }); + return response.ok({ + body: chatCompleteResponse, }); + } + ); + router.post( + { + path: '/internal/inference/chat_complete/stream', + validate: { + body: chatCompleteBodySchema, + }, + }, + async (context, request, response) => { + const chatCompleteResponse = await callChatComplete({ request, stream: true }); return response.ok({ body: observableIntoEventSourceStream(chatCompleteResponse, logger), }); diff --git a/x-pack/plugins/inference/server/tasks/nl_to_esql/actions/generate_esql.ts b/x-pack/plugins/inference/server/tasks/nl_to_esql/actions/generate_esql.ts index 26a8fb63ce013..3d8701eba72db 100644 --- a/x-pack/plugins/inference/server/tasks/nl_to_esql/actions/generate_esql.ts +++ b/x-pack/plugins/inference/server/tasks/nl_to_esql/actions/generate_esql.ts @@ -71,6 +71,7 @@ export const generateEsqlTask = ({ chatCompleteApi({ connectorId, functionCalling, + stream: true, system: `${systemMessage} # Current task diff --git a/x-pack/plugins/inference/server/tasks/nl_to_esql/actions/request_documentation.ts b/x-pack/plugins/inference/server/tasks/nl_to_esql/actions/request_documentation.ts index aea428208be1d..06e75db09bdc9 100644 --- a/x-pack/plugins/inference/server/tasks/nl_to_esql/actions/request_documentation.ts +++ b/x-pack/plugins/inference/server/tasks/nl_to_esql/actions/request_documentation.ts @@ -33,8 +33,10 @@ export const requestDocumentation = ({ }) => { const hasTools = !isEmpty(tools) && toolChoice !== ToolChoiceType.none; - return outputApi('request_documentation', { + return outputApi({ + id: 'request_documentation', connectorId, + stream: true, functionCalling, system, previousMessages: messages, diff --git a/x-pack/plugins/inference/server/test_utils/chat_complete_events.ts b/x-pack/plugins/inference/server/test_utils/chat_complete_events.ts new file mode 100644 index 0000000000000..4b09ca9c4dc5a --- /dev/null +++ b/x-pack/plugins/inference/server/test_utils/chat_complete_events.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + ChatCompletionChunkEvent, + ChatCompletionEventType, + ChatCompletionTokenCountEvent, + ChatCompletionMessageEvent, + ChatCompletionTokenCount, + ToolCall, +} from '@kbn/inference-common'; + +export const chunkEvent = (content: string = 'chunk'): ChatCompletionChunkEvent => ({ + type: ChatCompletionEventType.ChatCompletionChunk, + content, + tool_calls: [], +}); + +export const messageEvent = ( + content: string = 'message', + toolCalls: Array> = [] +): ChatCompletionMessageEvent => ({ + type: ChatCompletionEventType.ChatCompletionMessage, + content, + toolCalls, +}); + +export const tokensEvent = (tokens?: ChatCompletionTokenCount): ChatCompletionTokenCountEvent => ({ + type: ChatCompletionEventType.ChatCompletionTokenCount, + tokens: { + prompt: tokens?.prompt ?? 10, + completion: tokens?.completion ?? 20, + total: tokens?.total ?? 30, + }, +}); From e04d214e48566c38fb45cac5d2920109429139f2 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 08:57:58 -0600 Subject: [PATCH 36/57] Update dependency express to ^4.21.1 (main) (#195495) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [express](http://expressjs.com/) ([source](https://togithub.com/expressjs/express)) | devDependencies | patch | [`^4.21.0` -> `^4.21.1`](https://renovatebot.com/diffs/npm/express/4.21.0/4.21.1) | --- ### Release Notes
expressjs/express (express) ### [`v4.21.1`](https://togithub.com/expressjs/express/releases/tag/4.21.1) [Compare Source](https://togithub.com/expressjs/express/compare/4.21.0...4.21.1) #### What's Changed - Backport a fix for CVE-2024-47764 to the 4.x branch by [@​joshbuker](https://togithub.com/joshbuker) in [https://github.com/expressjs/express/pull/6029](https://togithub.com/expressjs/express/pull/6029) - Release: 4.21.1 by [@​UlisesGascon](https://togithub.com/UlisesGascon) in [https://github.com/expressjs/express/pull/6031](https://togithub.com/expressjs/express/pull/6031) **Full Changelog**: https://github.com/expressjs/express/compare/4.21.0...4.21.1
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). Co-authored-by: elastic-renovate-prod[bot] <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Co-authored-by: Milton Hultgren --- package.json | 2 +- yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index bcfd46a89ded2..cda08f1a5b06f 100644 --- a/package.json +++ b/package.json @@ -1718,7 +1718,7 @@ "exit-hook": "^2.2.0", "expect": "^29.7.0", "expose-loader": "^0.7.5", - "express": "^4.21.0", + "express": "^4.21.1", "faker": "^5.1.0", "fetch-mock": "^7.3.9", "file-loader": "^4.2.0", diff --git a/yarn.lock b/yarn.lock index 91ce62a67d991..e2a1487cf91af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14880,10 +14880,10 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== +cookie@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== cookie@^0.5.0: version "0.5.0" @@ -17861,17 +17861,17 @@ expr-eval@^2.0.2: resolved "https://registry.yarnpkg.com/expr-eval/-/expr-eval-2.0.2.tgz#fa6f044a7b0c93fde830954eb9c5b0f7fbc7e201" integrity sha512-4EMSHGOPSwAfBiibw3ndnP0AvjDWLsMvGOvWEZ2F96IGk0bIVdjQisOHxReSkE13mHcfbuCiXw+G4y0zv6N8Eg== -express@^4.17.1, express@^4.17.3, express@^4.18.2, express@^4.21.0: - version "4.21.0" - resolved "https://registry.yarnpkg.com/express/-/express-4.21.0.tgz#d57cb706d49623d4ac27833f1cbc466b668eb915" - integrity sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng== +express@^4.17.1, express@^4.17.3, express@^4.18.2, express@^4.21.1: + version "4.21.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.21.1.tgz#9dae5dda832f16b4eec941a4e44aa89ec481b281" + integrity sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ== dependencies: accepts "~1.3.8" array-flatten "1.1.1" body-parser "1.20.3" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.6.0" + cookie "0.7.1" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" From ae2b3827f8237a07472699cfbd442a8bc567dc34 Mon Sep 17 00:00:00 2001 From: Kfir Peled <61654899+kfirpeled@users.noreply.github.com> Date: Tue, 5 Nov 2024 15:01:20 +0000 Subject: [PATCH 37/57] Fix code scanning alert no. 370: Useless regular-expression character escape (#198264) Fixes [https://github.com/elastic/kibana/security/code-scanning/370](https://github.com/elastic/kibana/security/code-scanning/370) To fix the problem, we need to remove the unnecessary escape sequence `\-` from the regular expression on line 32. This will not change the functionality of the code but will make the regular expression clearer and more maintainable. - In general terms, we need to ensure that only necessary escape sequences are used in regular expressions. - Specifically, we will update the regular expression on line 32 to remove the unnecessary escape sequence. - The change will be made in the file `x-pack/plugins/session_view/public/methods/index.tsx`. _Suggested fixes powered by Copilot Autofix. Review carefully before merging._ --------- Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: @Omolola-Akinleye --- x-pack/plugins/session_view/public/methods/index.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/x-pack/plugins/session_view/public/methods/index.tsx b/x-pack/plugins/session_view/public/methods/index.tsx index ad8d77660b3b1..43295737c21f1 100644 --- a/x-pack/plugins/session_view/public/methods/index.tsx +++ b/x-pack/plugins/session_view/public/methods/index.tsx @@ -28,10 +28,7 @@ const SUPPORTED_PACKAGES = [ CLOUD_DEFEND_DATA_SOURCE, AUDITBEAT_DATA_SOURCE, ]; -const INDEX_REGEX = new RegExp( - `([a-z0-9_-]+\:)?[a-z0-9\-.]*(${SUPPORTED_PACKAGES.join('|')})`, - 'i' -); +const INDEX_REGEX = new RegExp(`([a-z0-9_-]+\:)?[a-z0-9-.]*(${SUPPORTED_PACKAGES.join('|')})`, 'i'); export const DEFAULT_INDEX = 'logs-*'; export const CLOUD_DEFEND_INDEX = 'logs-cloud_defend.*'; From d4e4f9b56cdaba0ac02ad64ab9543f40449c8c1f Mon Sep 17 00:00:00 2001 From: jennypavlova Date: Tue, 5 Nov 2024 16:12:18 +0100 Subject: [PATCH 38/57] [Infra] Remove container and host tsvb fields (#198134) Closes #197993 ## Summary This PR removes the old tsvb fields used for containers before we changed to the asset details view. They were used for displaying charts but now we use lens formulas so those are no longer needed ## Testing This PR removes old no longer used code so the testing should be for regressions - Go to Infrastructure Inventory - Select Docker Container from the `Show` drop-down - Click on any container: ![image](https://github.com/user-attachments/assets/20f66745-4cbd-4700-b2c5-c43ee753b2cb) - The asset details flyout and full page view should load as before (the same as for hosts) - Repeat same steps for host (and k8s pod) --- .../metric_detail/lib/get_filtered_metrics.ts | 8 +- .../container/metrics/index.ts | 22 -- .../metrics/tsvb/container_cpu_kernel.ts | 34 --- .../metrics/tsvb/container_cpu_usage.ts | 34 --- .../metrics/tsvb/container_disk_io_bytes.ts | 81 ------ .../metrics/tsvb/container_diskio_ops.ts | 81 ------ .../metrics/tsvb/container_k8s_cpu_usage.ts | 34 --- .../tsvb/container_k8s_memory_usage.ts | 34 --- .../metrics/tsvb/container_k8s_overview.ts | 45 ---- .../metrics/tsvb/container_memory.ts | 34 --- .../metrics/tsvb/container_network_traffic.ts | 93 ------- .../metrics/tsvb/container_overview.ts | 67 ----- .../inventory_models/host/metrics/index.ts | 2 - .../host/metrics/tsvb/host_cpu_usage.ts | 254 ------------------ .../host/metrics/tsvb/host_docker_info.ts | 56 ---- .../host/metrics/tsvb/host_docker_overview.ts | 67 ----- .../metrics/tsvb/host_docker_top_5_by_cpu.ts | 37 --- .../tsvb/host_docker_top_5_by_memory.ts | 37 --- .../host/metrics/tsvb/host_filesystem.ts | 38 --- .../host/metrics/tsvb/host_k8s_cpu_cap.ts | 58 ---- .../host/metrics/tsvb/host_k8s_disk_cap.ts | 45 ---- .../host/metrics/tsvb/host_k8s_memory_cap.ts | 46 ---- .../host/metrics/tsvb/host_k8s_overview.ts | 155 ----------- .../host/metrics/tsvb/host_k8s_pod_cap.ts | 47 ---- .../host/metrics/tsvb/host_load.ts | 56 ---- .../host/metrics/tsvb/host_memory_usage.ts | 78 ------ .../host/metrics/tsvb/host_network_traffic.ts | 109 -------- .../host/metrics/tsvb/host_system_overview.ts | 130 --------- .../host/metrics/tsvb/index.ts | 42 --- .../common/inventory_models/metrics.ts | 4 - .../common/inventory_models/types.ts | 8 +- 31 files changed, 6 insertions(+), 1830 deletions(-) delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_cpu_kernel.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_cpu_usage.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_disk_io_bytes.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_diskio_ops.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_k8s_cpu_usage.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_k8s_memory_usage.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_k8s_overview.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_memory.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_network_traffic.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_overview.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_cpu_usage.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_docker_info.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_docker_overview.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_docker_top_5_by_cpu.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_docker_top_5_by_memory.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_filesystem.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_cpu_cap.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_disk_cap.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_memory_cap.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_overview.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_pod_cap.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_load.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_memory_usage.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_network_traffic.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_system_overview.ts delete mode 100644 x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/index.ts diff --git a/x-pack/plugins/observability_solution/infra/public/pages/metrics/metric_detail/lib/get_filtered_metrics.ts b/x-pack/plugins/observability_solution/infra/public/pages/metrics/metric_detail/lib/get_filtered_metrics.ts index 36433a2bca016..a6cfd30eaa26d 100644 --- a/x-pack/plugins/observability_solution/infra/public/pages/metrics/metric_detail/lib/get_filtered_metrics.ts +++ b/x-pack/plugins/observability_solution/infra/public/pages/metrics/metric_detail/lib/get_filtered_metrics.ts @@ -18,11 +18,13 @@ export const getFilteredMetrics = ( .filter((data) => data && data.source === 'metrics') .map((data) => data && data.name); return requiredMetrics.filter((metric) => { - const metricModelCreator = metrics.tsvb[metric]; + const metricModelCreator = metrics?.tsvb[metric] ?? null; // We just need to get a dummy version of the model so we can filter // using the `requires` attribute. - const metricModel = metricModelCreator(TIMESTAMP_FIELD, 'test', '>=1m'); - return metricMetadata.some((m) => m && metricModel.requires.includes(m)); + const metricModel = metricModelCreator + ? metricModelCreator(TIMESTAMP_FIELD, 'test', '>=1m') + : { requires: [''] }; // when tsvb is not defined (host & container) + return metricMetadata.some((m) => m && metricModel?.requires?.includes(m)); }); }; diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/index.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/index.ts index faa848192fd46..44fe7d0cb1a8c 100644 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/index.ts +++ b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/index.ts @@ -10,16 +10,6 @@ import { cpu } from './snapshot/cpu'; import { memory } from './snapshot/memory'; import { rx } from './snapshot/rx'; import { tx } from './snapshot/tx'; -import { containerCpuKernel } from './tsvb/container_cpu_kernel'; -import { containerCpuUsage } from './tsvb/container_cpu_usage'; -import { containerDiskIOOps } from './tsvb/container_diskio_ops'; -import { containerDiskIOBytes } from './tsvb/container_disk_io_bytes'; -import { containerK8sCpuUsage } from './tsvb/container_k8s_cpu_usage'; -import { containerK8sMemoryUsage } from './tsvb/container_k8s_memory_usage'; -import { containerK8sOverview } from './tsvb/container_k8s_overview'; -import { containerMemory } from './tsvb/container_memory'; -import { containerNetworkTraffic } from './tsvb/container_network_traffic'; -import { containerOverview } from './tsvb/container_overview'; import type { ContainerFormulas } from './formulas'; import { ContainerCharts } from './charts'; @@ -30,18 +20,6 @@ export const containerSnapshotMetricTypes = Object.keys(containerSnapshotMetrics >; export const metrics: InventoryMetricsWithCharts = { - tsvb: { - containerOverview, - containerCpuUsage, - containerCpuKernel, - containerDiskIOOps, - containerDiskIOBytes, - containerNetworkTraffic, - containerMemory, - containerK8sCpuUsage, - containerK8sOverview, - containerK8sMemoryUsage, - }, snapshot: containerSnapshotMetrics, getFormulas: async () => await import('./formulas').then(({ formulas }) => formulas), getCharts: async () => await import('./charts').then(({ charts }) => charts), diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_cpu_kernel.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_cpu_kernel.ts deleted file mode 100644 index f469a9e86ad49..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_cpu_kernel.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const containerCpuKernel: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'containerCpuKernel', - requires: ['docker.cpu'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'kernel', - split_mode: 'everything', - metrics: [ - { - field: 'docker.cpu.kernel.pct', - id: 'avg-cpu-kernel', - type: 'avg', - }, - ], - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_cpu_usage.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_cpu_usage.ts deleted file mode 100644 index f4efc7de43663..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_cpu_usage.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const containerCpuUsage: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'containerCpuUsage', - requires: ['docker.cpu'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'cpu', - split_mode: 'everything', - metrics: [ - { - field: 'docker.cpu.total.pct', - id: 'avg-cpu-total', - type: 'avg', - }, - ], - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_disk_io_bytes.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_disk_io_bytes.ts deleted file mode 100644 index 7320349f92e8d..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_disk_io_bytes.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const containerDiskIOBytes: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'containerDiskIOBytes', - requires: ['docker.diskio'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'read', - split_mode: 'everything', - metrics: [ - { - field: 'docker.diskio.read.bytes', - id: 'max-diskio-read-bytes', - type: 'max', - }, - { - field: 'max-diskio-read-bytes', - id: 'deriv-max-diskio-read-bytes', - type: 'derivative', - unit: '1s', - }, - { - id: 'posonly-deriv-max-diskio-read-bytes', - type: 'calculation', - variables: [{ id: 'var-rate', name: 'rate', field: 'deriv-max-diskio-read-bytes' }], - script: 'params.rate > 0.0 ? params.rate : 0.0', - }, - ], - }, - { - id: 'write', - split_mode: 'everything', - metrics: [ - { - field: 'docker.diskio.write.bytes', - id: 'max-diskio-write-bytes', - type: 'max', - }, - { - field: 'max-diskio-write-bytes', - id: 'deriv-max-diskio-write-bytes', - type: 'derivative', - unit: '1s', - }, - { - id: 'posonly-deriv-max-diskio-write-bytes', - type: 'calculation', - variables: [{ id: 'var-rate', name: 'rate', field: 'deriv-max-diskio-write-bytes' }], - script: 'params.rate > 0.0 ? params.rate : 0.0', - }, - { - id: 'calc-invert-rate', - script: 'params.rate * -1', - type: 'calculation', - variables: [ - { - field: 'posonly-deriv-max-diskio-write-bytes', - id: 'var-rate', - name: 'rate', - }, - ], - }, - ], - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_diskio_ops.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_diskio_ops.ts deleted file mode 100644 index a6887fb4e7638..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_diskio_ops.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const containerDiskIOOps: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'containerDiskIOOps', - requires: ['docker.diskio'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'read', - split_mode: 'everything', - metrics: [ - { - field: 'docker.diskio.read.ops', - id: 'max-diskio-read-ops', - type: 'max', - }, - { - field: 'max-diskio-read-ops', - id: 'deriv-max-diskio-read-ops', - type: 'derivative', - unit: '1s', - }, - { - id: 'posonly-deriv-max-diskio-read-ops', - type: 'calculation', - variables: [{ id: 'var-rate', name: 'rate', field: 'deriv-max-diskio-read-ops' }], - script: 'params.rate > 0.0 ? params.rate : 0.0', - }, - ], - }, - { - id: 'write', - split_mode: 'everything', - metrics: [ - { - field: 'docker.diskio.write.ops', - id: 'max-diskio-write-ops', - type: 'max', - }, - { - field: 'max-diskio-write-ops', - id: 'deriv-max-diskio-write-ops', - type: 'derivative', - unit: '1s', - }, - { - id: 'posonly-deriv-max-diskio-write-ops', - type: 'calculation', - variables: [{ id: 'var-rate', name: 'rate', field: 'deriv-max-diskio-write-ops' }], - script: 'params.rate > 0.0 ? params.rate : 0.0', - }, - { - id: 'calc-invert-rate', - script: 'params.rate * -1', - type: 'calculation', - variables: [ - { - field: 'posonly-deriv-max-diskio-write-ops', - id: 'var-rate', - name: 'rate', - }, - ], - }, - ], - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_k8s_cpu_usage.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_k8s_cpu_usage.ts deleted file mode 100644 index 67372f50d750b..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_k8s_cpu_usage.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const containerK8sCpuUsage: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'containerK8sCpuUsage', - requires: ['kubernetes.container'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'cpu', - split_mode: 'everything', - metrics: [ - { - field: 'kubernetes.container.cpu.usage.limit.pct', - id: 'avg-cpu', - type: 'avg', - }, - ], - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_k8s_memory_usage.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_k8s_memory_usage.ts deleted file mode 100644 index 066d993817b75..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_k8s_memory_usage.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const containerK8sMemoryUsage: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'containerK8sMemoryUsage', - requires: ['kubernetes.container'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'memory', - split_mode: 'everything', - metrics: [ - { - field: 'kubernetes.container.memory.usage.limit.pct', - id: 'avg-memory', - type: 'avg', - }, - ], - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_k8s_overview.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_k8s_overview.ts deleted file mode 100644 index 470704140efb4..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_k8s_overview.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const containerK8sOverview: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'containerK8sOverview', - requires: ['kubernetes.container'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'cpu', - split_mode: 'everything', - metrics: [ - { - field: 'kubernetes.container.cpu.usage.limit.pct', - id: 'avg-cpu-total', - type: 'avg', - }, - ], - }, - { - id: 'memory', - split_mode: 'everything', - metrics: [ - { - field: 'kubernetes.container.memory.usage.limit.pct', - id: 'avg-memory-total', - type: 'avg', - }, - ], - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_memory.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_memory.ts deleted file mode 100644 index e0572692d60fc..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_memory.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const containerMemory: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'containerMemory', - requires: ['docker.memory'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'memory', - split_mode: 'everything', - metrics: [ - { - field: 'docker.memory.usage.pct', - id: 'avg-memory', - type: 'avg', - }, - ], - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_network_traffic.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_network_traffic.ts deleted file mode 100644 index d957d51a41648..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_network_traffic.ts +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const containerNetworkTraffic: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'containerNetworkTraffic', - requires: ['docker.network'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'tx', - metrics: [ - { - field: 'docker.network.outbound.bytes', - id: 'max-net-out', - type: 'max', - }, - { - field: 'max-net-out', - id: 'deriv-max-net-out', - type: 'derivative', - unit: '1s', - }, - { - id: 'posonly-deriv-max-net-out', - type: 'calculation', - variables: [{ id: 'var-rate', name: 'rate', field: 'deriv-max-net-out' }], - script: 'params.rate > 0.0 ? params.rate : 0.0', - }, - { - function: 'sum', - id: 'seriesagg-sum', - type: 'series_agg', - }, - ], - split_mode: 'terms', - terms_field: 'docker.network.interface', - }, - { - id: 'rx', - metrics: [ - { - field: 'docker.network.inbound.bytes', - id: 'max-net-in', - type: 'max', - }, - { - field: 'max-net-in', - id: 'deriv-max-net-in', - type: 'derivative', - unit: '1s', - }, - { - id: 'posonly-deriv-max-net-in', - type: 'calculation', - variables: [{ id: 'var-rate', name: 'rate', field: 'deriv-max-net-in' }], - script: 'params.rate > 0.0 ? params.rate : 0.0', - }, - { - id: 'calc-invert-rate', - script: 'params.rate * -1', - type: 'calculation', - variables: [ - { - field: 'posonly-deriv-max-net-in', - id: 'var-rate', - name: 'rate', - }, - ], - }, - { - function: 'sum', - id: 'seriesagg-sum', - type: 'series_agg', - }, - ], - split_mode: 'terms', - terms_field: 'docker.network.interface', - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_overview.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_overview.ts deleted file mode 100644 index c2d234be2eed7..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/container/metrics/tsvb/container_overview.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const containerOverview: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'containerOverview', - requires: ['docker'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'cpu', - split_mode: 'everything', - metrics: [ - { - field: 'docker.cpu.total.pct', - id: 'avg-cpu-total', - type: 'avg', - }, - ], - }, - { - id: 'memory', - split_mode: 'everything', - metrics: [ - { - field: 'docker.memory.usage.pct', - id: 'avg-memory', - type: 'avg', - }, - ], - }, - { - id: 'tx', - split_mode: 'everything', - metrics: [ - { - field: 'docker.network.out.bytes', - id: 'avg-network-out', - type: 'avg', - }, - ], - }, - { - id: 'rx', - split_mode: 'everything', - metrics: [ - { - field: 'docker.network.in.bytes', - id: 'avg-network-in', - type: 'avg', - }, - ], - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/index.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/index.ts index ce56e7bd59b0b..82408084e9472 100644 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/index.ts +++ b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/index.ts @@ -5,7 +5,6 @@ * 2.0. */ import { snapshot } from './snapshot'; -import { tsvb } from './tsvb'; import { InventoryMetricsWithCharts } from '../../types'; import type { HostFormulas } from './formulas'; import type { HostCharts } from './charts'; @@ -18,7 +17,6 @@ export const hostSnapshotMetricTypes = Object.keys(exposedHostSnapshotMetrics) a >; export const metrics: InventoryMetricsWithCharts = { - tsvb, snapshot, getFormulas: async () => await import('./formulas').then(({ formulas }) => formulas), getCharts: async () => await import('./charts').then(({ charts }) => charts), diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_cpu_usage.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_cpu_usage.ts deleted file mode 100644 index bcafeb4ebc4cf..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_cpu_usage.ts +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const hostCpuUsage: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'hostCpuUsage', - requires: ['system.cpu'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'user', - metrics: [ - { - field: 'system.cpu.user.pct', - id: 'avg-cpu-user', - type: 'avg', - }, - { - field: 'system.cpu.cores', - id: 'max-cpu-cores', - type: 'max', - }, - { - id: 'calc-avg-cores', - script: 'params.avg / params.cores', - type: 'calculation', - variables: [ - { - field: 'max-cpu-cores', - id: 'var-cores', - name: 'cores', - }, - { - field: 'avg-cpu-user', - id: 'var-avg', - name: 'avg', - }, - ], - }, - ], - split_mode: 'everything', - }, - { - id: 'system', - metrics: [ - { - field: 'system.cpu.system.pct', - id: 'avg-cpu-system', - type: 'avg', - }, - { - field: 'system.cpu.cores', - id: 'max-cpu-cores', - type: 'max', - }, - { - id: 'calc-avg-cores', - script: 'params.avg / params.cores', - type: 'calculation', - variables: [ - { - field: 'max-cpu-cores', - id: 'var-cores', - name: 'cores', - }, - { - field: 'avg-cpu-system', - id: 'var-avg', - name: 'avg', - }, - ], - }, - ], - split_mode: 'everything', - }, - { - id: 'steal', - metrics: [ - { - field: 'system.cpu.steal.pct', - id: 'avg-cpu-steal', - type: 'avg', - }, - { - field: 'system.cpu.cores', - id: 'max-cpu-cores', - type: 'max', - }, - { - id: 'calc-avg-cores', - script: 'params.avg / params.cores', - type: 'calculation', - variables: [ - { - field: 'avg-cpu-steal', - id: 'var-avg', - name: 'avg', - }, - { - field: 'max-cpu-cores', - id: 'var-cores', - name: 'cores', - }, - ], - }, - ], - split_mode: 'everything', - }, - { - id: 'irq', - metrics: [ - { - field: 'system.cpu.irq.pct', - id: 'avg-cpu-irq', - type: 'avg', - }, - { - field: 'system.cpu.cores', - id: 'max-cpu-cores', - type: 'max', - }, - { - id: 'calc-avg-cores', - script: 'params.avg / params.cores', - type: 'calculation', - variables: [ - { - field: 'max-cpu-cores', - id: 'var-cores', - name: 'cores', - }, - { - field: 'avg-cpu-irq', - id: 'var-avg', - name: 'avg', - }, - ], - }, - ], - split_mode: 'everything', - }, - { - id: 'softirq', - metrics: [ - { - field: 'system.cpu.softirq.pct', - id: 'avg-cpu-softirq', - type: 'avg', - }, - { - field: 'system.cpu.cores', - id: 'max-cpu-cores', - type: 'max', - }, - { - id: 'calc-avg-cores', - script: 'params.avg / params.cores', - type: 'calculation', - variables: [ - { - field: 'max-cpu-cores', - id: 'var-cores', - name: 'cores', - }, - { - field: 'avg-cpu-softirq', - id: 'var-avg', - name: 'avg', - }, - ], - }, - ], - split_mode: 'everything', - }, - { - id: 'iowait', - metrics: [ - { - field: 'system.cpu.iowait.pct', - id: 'avg-cpu-iowait', - type: 'avg', - }, - { - field: 'system.cpu.cores', - id: 'max-cpu-cores', - type: 'max', - }, - { - id: 'calc-avg-cores', - script: 'params.avg / params.cores', - type: 'calculation', - variables: [ - { - field: 'max-cpu-cores', - id: 'var-cores', - name: 'cores', - }, - { - field: 'avg-cpu-iowait', - id: 'var-avg', - name: 'avg', - }, - ], - }, - ], - split_mode: 'everything', - }, - { - id: 'nice', - metrics: [ - { - field: 'system.cpu.nice.pct', - id: 'avg-cpu-nice', - type: 'avg', - }, - { - field: 'system.cpu.cores', - id: 'max-cpu-cores', - type: 'max', - }, - { - id: 'calc-avg-cores', - script: 'params.avg / params.cores', - type: 'calculation', - variables: [ - { - field: 'max-cpu-cores', - id: 'var-cores', - name: 'cores', - }, - { - field: 'avg-cpu-nice', - id: 'var-avg', - name: 'avg', - }, - ], - }, - ], - split_mode: 'everything', - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_docker_info.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_docker_info.ts deleted file mode 100644 index 4cc2b574362d7..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_docker_info.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const hostDockerInfo: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'hostDockerInfo', - requires: ['docker.info'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'running', - metrics: [ - { - field: 'docker.info.containers.running', - id: 'max-running', - type: 'max', - }, - ], - split_mode: 'everything', - }, - { - id: 'paused', - metrics: [ - { - field: 'docker.info.containers.paused', - id: 'max-paused', - type: 'max', - }, - ], - split_mode: 'everything', - }, - { - id: 'stopped', - metrics: [ - { - field: 'docker.info.containers.stopped', - id: 'max-stopped', - type: 'max', - }, - ], - split_mode: 'everything', - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_docker_overview.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_docker_overview.ts deleted file mode 100644 index df56a21dbf5b7..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_docker_overview.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const hostDockerOverview: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'hostDockerOverview', - requires: ['docker.info'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'top_n', - series: [ - { - id: 'total', - metrics: [ - { - field: 'docker.info.containers.total', - id: 'max-total', - type: 'max', - }, - ], - split_mode: 'everything', - }, - { - id: 'running', - metrics: [ - { - field: 'docker.info.containers.running', - id: 'max-running', - type: 'max', - }, - ], - split_mode: 'everything', - }, - { - id: 'paused', - metrics: [ - { - field: 'docker.info.containers.paused', - id: 'max-paused', - type: 'max', - }, - ], - split_mode: 'everything', - }, - { - id: 'stopped', - metrics: [ - { - field: 'docker.info.containers.stopped', - id: 'max-stopped', - type: 'max', - }, - ], - split_mode: 'everything', - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_docker_top_5_by_cpu.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_docker_top_5_by_cpu.ts deleted file mode 100644 index fd9eb97419736..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_docker_top_5_by_cpu.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const hostDockerTop5ByCpu: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'hostDockerTop5ByCpu', - requires: ['docker.cpu'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'avg-cpu', - metrics: [ - { - field: 'docker.cpu.total.pct', - id: 'avg-cpu-metric', - type: 'avg', - }, - ], - split_mode: 'terms', - terms_field: 'container.name', - terms_order_by: 'avg-cpu', - terms_size: 5, - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_docker_top_5_by_memory.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_docker_top_5_by_memory.ts deleted file mode 100644 index cad828671d232..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_docker_top_5_by_memory.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const hostDockerTop5ByMemory: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'hostDockerTop5ByMemory', - requires: ['docker.memory'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'avg-memory', - metrics: [ - { - field: 'docker.memory.usage.pct', - id: 'avg-memory-metric', - type: 'avg', - }, - ], - split_mode: 'terms', - terms_field: 'container.name', - terms_order_by: 'avg-memory', - terms_size: 5, - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_filesystem.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_filesystem.ts deleted file mode 100644 index ce284345410fc..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_filesystem.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const hostFilesystem: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'hostFilesystem', - requires: ['system.filesystem'], - filter: 'system.filesystem.device_name:\\/*', - index_pattern: indexPattern, - time_field: timeField, - interval, - type: 'timeseries', - series: [ - { - id: 'used', - metrics: [ - { - field: 'system.filesystem.used.pct', - id: 'avg-filesystem-used', - type: 'avg', - }, - ], - split_mode: 'terms', - terms_field: 'system.filesystem.device_name', - terms_order_by: 'used', - terms_size: 5, - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_cpu_cap.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_cpu_cap.ts deleted file mode 100644 index d33e4cdeb34cd..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_cpu_cap.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const hostK8sCpuCap: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'hostK8sCpuCap', - map_field_to: 'kubernetes.node.name', - requires: ['kubernetes.node'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'capacity', - metrics: [ - { - field: 'kubernetes.node.cpu.allocatable.cores', - id: 'max-cpu-cap', - type: 'max', - }, - { - id: 'calc-nanocores', - type: 'calculation', - variables: [ - { - id: 'var-cores', - field: 'max-cpu-cap', - name: 'cores', - }, - ], - script: 'params.cores * 1000000000', - }, - ], - split_mode: 'everything', - }, - { - id: 'used', - metrics: [ - { - field: 'kubernetes.node.cpu.usage.nanocores', - id: 'avg-cpu-usage', - type: 'avg', - }, - ], - split_mode: 'everything', - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_disk_cap.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_disk_cap.ts deleted file mode 100644 index e9e512a136631..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_disk_cap.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; -export const hostK8sDiskCap: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'hostK8sDiskCap', - map_field_to: 'kubernetes.node.name', - requires: ['kubernetes.node'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'capacity', - metrics: [ - { - field: 'kubernetes.node.fs.capacity.bytes', - id: 'max-fs-cap', - type: 'max', - }, - ], - split_mode: 'everything', - }, - { - id: 'used', - metrics: [ - { - field: 'kubernetes.node.fs.used.bytes', - id: 'avg-fs-used', - type: 'avg', - }, - ], - split_mode: 'everything', - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_memory_cap.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_memory_cap.ts deleted file mode 100644 index ccc227ef1854e..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_memory_cap.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const hostK8sMemoryCap: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'hostK8sMemoryCap', - map_field_to: 'kubernetes.node.name', - requires: ['kubernetes.node'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'capacity', - metrics: [ - { - field: 'kubernetes.node.memory.allocatable.bytes', - id: 'max-memory-cap', - type: 'max', - }, - ], - split_mode: 'everything', - }, - { - id: 'used', - metrics: [ - { - field: 'kubernetes.node.memory.usage.bytes', - id: 'avg-memory-usage', - type: 'avg', - }, - ], - split_mode: 'everything', - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_overview.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_overview.ts deleted file mode 100644 index 2da74d50dff1b..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_overview.ts +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const hostK8sOverview: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'hostK8sOverview', - requires: ['kubernetes'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'top_n', - series: [ - { - id: 'cpucap', - split_mode: 'everything', - metrics: [ - { - field: 'kubernetes.node.cpu.allocatable.cores', - id: 'max-cpu-cap', - type: 'max', - }, - { - field: 'kubernetes.node.cpu.usage.nanocores', - id: 'avg-cpu-usage', - type: 'avg', - }, - { - id: 'calc-used-cap', - script: 'params.used / (params.cap * 1000000000)', - type: 'calculation', - variables: [ - { - field: 'max-cpu-cap', - id: 'var-cap', - name: 'cap', - }, - { - field: 'avg-cpu-usage', - id: 'var-used', - name: 'used', - }, - ], - }, - ], - }, - { - id: 'diskcap', - metrics: [ - { - field: 'kubernetes.node.fs.capacity.bytes', - id: 'max-fs-cap', - type: 'max', - }, - { - field: 'kubernetes.node.fs.used.bytes', - id: 'avg-fs-used', - type: 'avg', - }, - { - id: 'calc-used-cap', - script: 'params.used / params.cap', - type: 'calculation', - variables: [ - { - field: 'max-fs-cap', - id: 'var-cap', - name: 'cap', - }, - { - field: 'avg-fs-used', - id: 'var-used', - name: 'used', - }, - ], - }, - ], - split_mode: 'everything', - }, - { - id: 'memorycap', - metrics: [ - { - field: 'kubernetes.node.memory.allocatable.bytes', - id: 'max-memory-cap', - type: 'max', - }, - { - field: 'kubernetes.node.memory.usage.bytes', - id: 'avg-memory-usage', - type: 'avg', - }, - { - id: 'calc-used-cap', - script: 'params.used / params.cap', - type: 'calculation', - variables: [ - { - field: 'max-memory-cap', - id: 'var-cap', - name: 'cap', - }, - { - field: 'avg-memory-usage', - id: 'var-used', - name: 'used', - }, - ], - }, - ], - split_mode: 'everything', - }, - { - id: 'podcap', - metrics: [ - { - field: 'kubernetes.node.pod.capacity.total', - id: 'max-pod-cap', - type: 'max', - }, - { - field: 'kubernetes.pod.uid', - id: 'card-pod-name', - type: 'cardinality', - }, - { - id: 'calc-used-cap', - script: 'params.used / params.cap', - type: 'calculation', - variables: [ - { - field: 'max-pod-cap', - id: 'var-cap', - name: 'cap', - }, - { - field: 'card-pod-name', - id: 'var-used', - name: 'used', - }, - ], - }, - ], - split_mode: 'everything', - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_pod_cap.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_pod_cap.ts deleted file mode 100644 index 85cb798eaf9b9..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_k8s_pod_cap.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const hostK8sPodCap: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'hostK8sPodCap', - requires: ['kubernetes.node'], - map_field_to: 'kubernetes.node.name', - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - - series: [ - { - id: 'capacity', - metrics: [ - { - field: 'kubernetes.node.pod.allocatable.total', - id: 'max-pod-cap', - type: 'max', - }, - ], - split_mode: 'everything', - }, - { - id: 'used', - metrics: [ - { - field: 'kubernetes.pod.uid', - id: 'avg-pod', - type: 'cardinality', - }, - ], - split_mode: 'everything', - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_load.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_load.ts deleted file mode 100644 index bef170c743e6c..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_load.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const hostLoad: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'hostLoad', - requires: ['system.cpu'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'load_1m', - metrics: [ - { - field: 'system.load.1', - id: 'avg-load-1m', - type: 'avg', - }, - ], - split_mode: 'everything', - }, - { - id: 'load_5m', - metrics: [ - { - field: 'system.load.5', - id: 'avg-load-5m', - type: 'avg', - }, - ], - split_mode: 'everything', - }, - { - id: 'load_15m', - metrics: [ - { - field: 'system.load.15', - id: 'avg-load-15m', - type: 'avg', - }, - ], - split_mode: 'everything', - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_memory_usage.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_memory_usage.ts deleted file mode 100644 index bda81dea4bd28..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_memory_usage.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const hostMemoryUsage: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'hostMemoryUsage', - requires: ['system.memory'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'free', - metrics: [ - { - field: 'system.memory.free', - id: 'avg-memory-free', - type: 'avg', - }, - ], - split_mode: 'everything', - }, - { - id: 'used', - metrics: [ - { - field: 'system.memory.actual.used.bytes', - id: 'avg-memory-used', - type: 'avg', - }, - ], - split_mode: 'everything', - }, - { - id: 'cache', - metrics: [ - { - field: 'system.memory.actual.used.bytes', - id: 'avg-memory-actual-used', - type: 'avg', - }, - { - field: 'system.memory.used.bytes', - id: 'avg-memory-used', - type: 'avg', - }, - { - id: 'calc-used-actual', - script: 'params.used - params.actual', - type: 'calculation', - variables: [ - { - field: 'avg-memory-actual-used', - id: 'var-actual', - name: 'actual', - }, - { - field: 'avg-memory-used', - id: 'var-used', - name: 'used', - }, - ], - }, - ], - split_mode: 'everything', - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_network_traffic.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_network_traffic.ts deleted file mode 100644 index b3dfc5e91ba0a..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_network_traffic.ts +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const hostNetworkTraffic: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'hostNetworkTraffic', - requires: ['system.network'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'timeseries', - series: [ - { - id: 'tx', - metrics: [ - { - field: 'host.network.egress.bytes', - id: 'avg-net-out', - type: 'avg', - }, - { - id: 'max-period', - type: 'max', - field: 'metricset.period', - }, - { - id: '3216b170-f192-11ec-a8e3-dd984b7213e2', - type: 'calculation', - variables: [ - { - id: '34e64c30-f192-11ec-a8e3-dd984b7213e2', - name: 'value', - field: 'avg-net-out', - }, - { - id: '3886cb80-f192-11ec-a8e3-dd984b7213e2', - name: 'period', - field: 'max-period', - }, - ], - script: 'params.value / (params.period / 1000)', - }, - ], - filter: { - language: 'kuery', - query: 'host.network.egress.bytes : * ', - }, - split_mode: 'everything', - }, - { - id: 'rx', - metrics: [ - { - field: 'host.network.ingress.bytes', - id: 'avg-net-in', - type: 'avg', - }, - { - id: 'calc-invert-rate', - script: 'params.rate * -1', - type: 'calculation', - variables: [ - { - field: 'avg-net-in', - id: 'var-rate', - name: 'rate', - }, - ], - }, - { - id: 'max-period', - type: 'max', - field: 'metricset.period', - }, - { - id: '3216b170-f192-11ec-a8e3-dd984b7213e2', - type: 'calculation', - variables: [ - { - id: '34e64c30-f192-11ec-a8e3-dd984b7213e2', - name: 'value', - field: 'calc-invert-rate', - }, - { - id: '3886cb80-f192-11ec-a8e3-dd984b7213e2', - name: 'period', - field: 'max-period', - }, - ], - script: 'params.value / (params.period / 1000)', - }, - ], - filter: { - language: 'kuery', - query: 'host.network.ingress.bytes : * ', - }, - split_mode: 'everything', - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_system_overview.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_system_overview.ts deleted file mode 100644 index 69ebd0aa35947..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/host_system_overview.ts +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { TSVBMetricModelCreator, TSVBMetricModel } from '../../../types'; - -export const hostSystemOverview: TSVBMetricModelCreator = ( - timeField, - indexPattern, - interval -): TSVBMetricModel => ({ - id: 'hostSystemOverview', - requires: ['system.cpu', 'system.memory', 'system.load', 'system.network'], - index_pattern: indexPattern, - interval, - time_field: timeField, - type: 'top_n', - series: [ - { - id: 'cpu', - split_mode: 'everything', - metrics: [ - { - field: 'system.cpu.total.norm.pct', - id: 'avg-cpu-total', - type: 'avg', - }, - ], - }, - { - id: 'load', - split_mode: 'everything', - metrics: [ - { - field: 'system.load.5', - id: 'avg-load-5m', - type: 'avg', - }, - ], - }, - { - id: 'memory', - split_mode: 'everything', - metrics: [ - { - field: 'system.memory.actual.used.pct', - id: 'avg-memory-actual-used', - type: 'avg', - }, - ], - }, - { - id: 'rx', - metrics: [ - { - field: 'host.network.ingress.bytes', - id: 'avg-net-in', - type: 'avg', - }, - { - id: 'max-period', - type: 'max', - field: 'metricset.period', - }, - { - id: '3216b170-f192-11ec-a8e3-dd984b7213e2', - type: 'calculation', - variables: [ - { - id: '34e64c30-f192-11ec-a8e3-dd984b7213e2', - name: 'value', - field: 'avg-net-in', - }, - { - id: '3886cb80-f192-11ec-a8e3-dd984b7213e2', - name: 'period', - field: 'max-period', - }, - ], - script: 'params.value / (params.period / 1000)', - }, - ], - filter: { - language: 'kuery', - query: 'host.network.ingress.bytes : * ', - }, - split_mode: 'everything', - }, - { - id: 'tx', - metrics: [ - { - field: 'host.network.egress.bytes', - id: 'avg-net-out', - type: 'avg', - }, - { - id: 'max-period', - type: 'max', - field: 'metricset.period', - }, - { - id: '3216b170-f192-11ec-a8e3-dd984b7213e2', - type: 'calculation', - variables: [ - { - id: '34e64c30-f192-11ec-a8e3-dd984b7213e2', - name: 'value', - field: 'avg-net-out', - }, - { - id: '3886cb80-f192-11ec-a8e3-dd984b7213e2', - name: 'period', - field: 'max-period', - }, - ], - script: 'params.value / (params.period / 1000)', - }, - ], - filter: { - language: 'kuery', - query: 'host.network.egress.bytes : * ', - }, - split_mode: 'everything', - }, - ], -}); diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/index.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/index.ts deleted file mode 100644 index fb91ee9dd8b27..0000000000000 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/tsvb/index.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { hostSystemOverview } from './host_system_overview'; -import { hostCpuUsage } from './host_cpu_usage'; -import { hostLoad } from './host_load'; -import { hostMemoryUsage } from './host_memory_usage'; -import { hostNetworkTraffic } from './host_network_traffic'; -import { hostFilesystem } from './host_filesystem'; - -import { hostK8sOverview } from './host_k8s_overview'; -import { hostK8sCpuCap } from './host_k8s_cpu_cap'; -import { hostK8sPodCap } from './host_k8s_pod_cap'; -import { hostK8sDiskCap } from './host_k8s_disk_cap'; -import { hostK8sMemoryCap } from './host_k8s_memory_cap'; - -import { hostDockerTop5ByMemory } from './host_docker_top_5_by_memory'; -import { hostDockerTop5ByCpu } from './host_docker_top_5_by_cpu'; -import { hostDockerOverview } from './host_docker_overview'; -import { hostDockerInfo } from './host_docker_info'; - -export const tsvb = { - hostSystemOverview, - hostCpuUsage, - hostLoad, - hostMemoryUsage, - hostNetworkTraffic, - hostFilesystem, - hostK8sOverview, - hostK8sCpuCap, - hostK8sPodCap, - hostK8sDiskCap, - hostK8sMemoryCap, - hostDockerOverview, - hostDockerInfo, - hostDockerTop5ByMemory, - hostDockerTop5ByCpu, -}; diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/metrics.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/metrics.ts index 00937a064a7b8..510e655c0b8d7 100644 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/metrics.ts +++ b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/metrics.ts @@ -5,10 +5,8 @@ * 2.0. */ -import { metrics as hostMetrics } from './host/metrics'; import { metrics as sharedMetrics } from './shared/metrics'; import { metrics as podMetrics } from './kubernetes/pod/metrics'; -import { metrics as containerMetrics } from './container/metrics'; import { metrics as awsEC2Metrics } from './aws_ec2/metrics'; import { metrics as awsS3Metrics } from './aws_s3/metrics'; import { metrics as awsRDSMetrics } from './aws_rds/metrics'; @@ -16,10 +14,8 @@ import { metrics as awsSQSMetrics } from './aws_sqs/metrics'; export const metrics = { tsvb: { - ...hostMetrics.tsvb, ...sharedMetrics.tsvb, ...podMetrics.tsvb, - ...containerMetrics.tsvb, ...awsEC2Metrics.tsvb, ...awsS3Metrics.tsvb, ...awsRDSMetrics.tsvb, diff --git a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/types.ts b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/types.ts index f4054f289ae7a..8ad0ff886ebe6 100644 --- a/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/types.ts +++ b/x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/types.ts @@ -46,7 +46,6 @@ export const InventoryMetricRT = rt.keyof({ hostSystemOverview: null, hostCpuUsageTotal: null, hostCpuUsage: null, - hostFilesystem: null, hostK8sOverview: null, hostK8sCpuCap: null, hostK8sDiskCap: null, @@ -55,17 +54,12 @@ export const InventoryMetricRT = rt.keyof({ hostLoad: null, hostMemoryUsage: null, hostNetworkTraffic: null, - hostDockerOverview: null, - hostDockerInfo: null, - hostDockerTop5ByCpu: null, - hostDockerTop5ByMemory: null, podOverview: null, podCpuUsage: null, podMemoryUsage: null, podLogUsage: null, podNetworkTraffic: null, containerOverview: null, - containerCpuKernel: null, containerCpuUsage: null, containerDiskIOOps: null, containerDiskIOBytes: null, @@ -276,7 +270,7 @@ export const SnapshotMetricTypeRT = rt.keyof(SnapshotMetricTypeKeys); export type SnapshotMetricType = rt.TypeOf; export interface InventoryMetrics { - tsvb: { [name: string]: TSVBMetricModelCreator }; + tsvb?: { [name: string]: TSVBMetricModelCreator }; snapshot: { [name: string]: MetricsUIAggregation | undefined }; defaultSnapshot: SnapshotMetricType; /** This is used by the inventory view to calculate the appropriate amount of time for the metrics detail page. Some metrics like awsS3 require multiple days where others like host only need an hour.*/ From 4036b36c1a5dfe391f2b5389cf102fa7c4ebd75c Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Wed, 6 Nov 2024 02:25:50 +1100 Subject: [PATCH 39/57] skip failing test suite (#198943) --- .../e2e/investigations/sourcerer/sourcerer_timeline.cy.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/sourcerer/sourcerer_timeline.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/sourcerer/sourcerer_timeline.cy.ts index 9d2e1ac2e11a5..3560ff4bfd4c4 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/sourcerer/sourcerer_timeline.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/sourcerer/sourcerer_timeline.cy.ts @@ -40,7 +40,8 @@ import { closeTimeline, openTimelineById } from '../../../tasks/timeline'; const siemDataViewTitle = 'Security Default Data View'; const dataViews = ['logs-*', 'metrics-*', '.kibana-event-log-*']; -describe('Timeline scope', { tags: ['@ess', '@serverless', '@skipInServerless'] }, () => { +// Failing: See https://github.com/elastic/kibana/issues/198943 +describe.skip('Timeline scope', { tags: ['@ess', '@serverless', '@skipInServerless'] }, () => { before(() => { waitForRulesBootstrap(); }); From 92ae754ff93b52b742885761afa8b2b7d857ce25 Mon Sep 17 00:00:00 2001 From: Alexey Antonov Date: Tue, 5 Nov 2024 17:38:26 +0200 Subject: [PATCH 40/57] fix: [Stateful: Home page] Missing information of Store this API key section first time (#198253) Closes: #195382 Closes: #195366 ## Description All information which is accessible for the user should be announced when the user navigates to the element first time (not only when he reaches it second, third and so on time). ## What was changed?: 1. added `role="alert"` to correctly pronounce status update. Addind role attribute also fixes #195366 ## Screen: https://github.com/user-attachments/assets/3f7707e4-5cc4-451b-9e5c-372e2e7dab81 --- .../public/applications/shared/api_key/create_api_key_flyout.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/api_key/create_api_key_flyout.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/api_key/create_api_key_flyout.tsx index 38217df269fd1..c72f56c656e49 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/api_key/create_api_key_flyout.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/api_key/create_api_key_flyout.tsx @@ -210,6 +210,7 @@ export const CreateApiKeyFlyout: React.FC = ({ onClose defaultMessage: 'Store this API key', })} titleSize="xs" + role="alert" > {i18n.translate('xpack.enterpriseSearch.apiKey.apiKeyStepDescription', { From 7f97c8074f7d6c2adf4a7a35fa7ac96b25f6cfe4 Mon Sep 17 00:00:00 2001 From: Alexey Antonov Date: Tue, 5 Nov 2024 17:38:44 +0200 Subject: [PATCH 41/57] fix: [Stateful: Indices Overview page] Inaccurate announcement for programming language buttons (#197428) Closes: #196282 ## Summary Button elements should be clear and understandable to users, including those using assistive technologies. `h5` tag looks unnatural inside a button. ## What was changed?: 1. `h5` -> `strong` ## Screen: image --- .../components/language_client_panel.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/kbn-search-api-panels/components/language_client_panel.tsx b/packages/kbn-search-api-panels/components/language_client_panel.tsx index 2f89c8da7578c..2c07d3118d943 100644 --- a/packages/kbn-search-api-panels/components/language_client_panel.tsx +++ b/packages/kbn-search-api-panels/components/language_client_panel.tsx @@ -62,8 +62,12 @@ export const LanguageClientPanel: React.FC = ({ width={euiTheme.size.xl} /> - -
{language.name}
+ + {language.name}
From 33c8b1b300e22c04bf84678655266ea8ece6ebd1 Mon Sep 17 00:00:00 2001 From: florent-leborgne Date: Tue, 5 Nov 2024 16:41:28 +0100 Subject: [PATCH 42/57] [Docs] Adds 8.16.0 release notes (#198166) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR adds release notes for Kibana 8.16.0 It also adds new deprecations to the Upgrade notes file. There are many entries so here's a list of the sections that have been edited and are ready for review so far: - [x] AGPL license - [x] Alerting @lcawl - [x] Dashboards and visualizations - [x] Data ingestion and Fleet @kilfoyle - [x] Discover - [x] Elastic Observability solution @bmorelli25 - [x] Elastic Search solution @leemthompo - [x] Elastic Security solution - [x] Kibana platform - [x] Kibana security - [x] Machine Learning @szabosteve @leemthompo - [x] Management Closes: https://github.com/elastic/platform-docs-team/issues/502 --------- Co-authored-by: István Zoltán Szabó Co-authored-by: David Kilfoyle <41695641+kilfoyle@users.noreply.github.com> Co-authored-by: Liam Thompson <32779855+leemthompo@users.noreply.github.com> Co-authored-by: Giorgos Bamparopoulos Co-authored-by: Brandon Morelli Co-authored-by: lcawl --- docs/CHANGELOG.asciidoc | 355 ++++++++++++++++++++++++++++++++++++ docs/upgrade-notes.asciidoc | 24 +++ 2 files changed, 379 insertions(+) diff --git a/docs/CHANGELOG.asciidoc b/docs/CHANGELOG.asciidoc index b1b4a59160c19..3c102cbbf9384 100644 --- a/docs/CHANGELOG.asciidoc +++ b/docs/CHANGELOG.asciidoc @@ -10,6 +10,7 @@ Review important information about the {kib} 8.x releases. +* <> * <> * <> * <> @@ -77,6 +78,360 @@ Review important information about the {kib} 8.x releases. include::upgrade-notes.asciidoc[] + +[[release-notes-8.16.0]] +== {kib} 8.16.0 + +For information about the {kib} 8.16.0 release, review the following information. + +[float] +[[deprecations-8.16.0]] +=== Deprecations + +The following functionality is deprecated in 8.16.0, and will be removed in 9.0.0. +Deprecated functionality does not have an immediate impact on your application, but we strongly recommend +you make the necessary updates after you upgrade to 8.16.0. + +[discrete] +* The Logs Stream is now hidden by default in favor of the Logs Explorer app. +[%collapsible] +==== +*Details* + +You can find the Logs Explorer app in the navigation menu under Logs > Explorer, or as a separate tab in Discover. For more information, refer to ({kibana-pull}194519[#194519]). + +*Impact* + +You can still show the Logs Stream app again by navigating to Stack Management > Advanced Settings and by enabling the `observability:enableLogsStream` setting. +==== + +[discrete] +* Deprecates the Observability AI Assistant specific advanced setting `observability:aiAssistantLogsIndexPattern`. +[%collapsible] +==== +*Details* + +The Observability AI Assistant specific advanced setting for Logs index patterns `observability:aiAssistantLogsIndexPattern` is deprecated and no longer used. The AI Assistant will now use the existing **Log sources** setting `observability:logSources` instead. For more information, refer to ({kibana-pull}192003[#192003]). + +//*Impact* + +//!!TODO!! +==== + + + +[float] +[[features-8.16.0]] +=== Features +{kib} 8.16.0 adds the following new and notable features. + +AGPL license:: +* Adds AGPL 3.0 license ({kibana-pull}192025[#192025]). +Alerting:: +* Adds TheHive connector ({kibana-pull}180138[#180138]). +* Adds flapping settings per rule ({kibana-pull}189341[#189341]). +Cases:: +* Support TheHive connector in cases ({kibana-pull}180931[#180931]). +Dashboards and visualizations:: +* Adds the ability to star your favorite dashboards and quickly find them ({kibana-pull}189285[#189285]). +* Adds a chart showing usage statistics to the dashboard details ({kibana-pull}187993[#187993]). +* Adds metric styling options in *Lens* ({kibana-pull}186929[#186929]). +* Adds support for coloring table cells by terms with color mappings assignments. This is supported for both Rows and Metric dimensions ({kibana-pull}189895[#189895]). +Data ingestion and Fleet:: +* Support content packages in UI ({kibana-pull}195831[#195831]). +* Advanced agent monitoring options UI for HTTP endpoint and diagnostics ({kibana-pull}193361[#193361]). +* Adds option to have Kafka dynamic topics in outputs ({kibana-pull}192720[#192720]). +* Adds support for GeoIP processor databases in Ingest Pipelines ({kibana-pull}190830[#190830]). +//// +!!TODO!! The above PR had a lengthy release note description: +The Ingest Pipelines app now supports adding and managing databases for the GeoIP processor. Additionally, the pipeline creation flow now includes support for the IP Location processor. +//// +* Adds agentless ux creation flow ({kibana-pull}189932[#189932]). +* Enable feature flag for reusable integration policies ({kibana-pull}187153[#187153]). +Discover:: +* When writing ES|QL queries, you now get recommendations to help you get started ({kibana-pull}194418[#194418]). +* Enhances the inline documentation experience in ES|QL mode ({kibana-pull}192156[#192156]). +* Adds the ability to break down the histogram by field for ES|QL queries in Discover ({kibana-pull}193820[#193820]). +* Adds a summary column to the Documents table when exploring log data in Discover ({kibana-pull}192567[#192567]). +* Adds row indicators to the Documents table when exploring log data in Discover ({kibana-pull}190676[#190676]). +* Moves the button to switch between ES|QL and classic modes to the toolbar ({kibana-pull}188898[#188898]). +* Adds density settings to allow further customization of the Documents table layout ({kibana-pull}188495[#188495]). +* Enables the time picker for indices without the @timestamp field when editing ES|QL queries ({kibana-pull}184361[#184361]). +Elastic Observability solution:: +* Show monitors from all permitted spaces !! ({kibana-pull}196109[#196109]). +* Adds experimental logs overview to the observability hosts and service overviews ({kibana-pull}195673[#195673]). +* Show alerts for entities ({kibana-pull}195250[#195250]). +* Create sub-feature role to manage APM settings write permissions ({kibana-pull}194419[#194419]). +* Adds related alerts tab to the alert details page ({kibana-pull}193263[#193263]). +* Adds labels field !! ({kibana-pull}193250[#193250]). +* Implement _ignored root cause identification flow ({kibana-pull}192370[#192370]). +* Enable page for synthetics ({kibana-pull}191846[#191846]). +* Settings add config to enable default rules ({kibana-pull}190800[#190800]). +* Added alerts page ({kibana-pull}190751[#190751]). +* Monitor list add bulk delete ({kibana-pull}190674[#190674]). +* Delete monitor API via id param !! ({kibana-pull}190210[#190210]). +* Enable metrics and traces in the Data Set Quality page ({kibana-pull}190043[#190043]). +* Adds alert grouping functionality to the observability alerts page ({kibana-pull}189958[#189958]). +* Adds a new SLO Burn Rate embeddable ({kibana-pull}189429[#189429]). +* The Slack Web API Alert Connector is now supported as a default connector for Synthetics and Uptime rules ({kibana-pull}188437[#188437]). +* Adds option to enable backfill transform ({kibana-pull}188379[#188379]). +* Save the ECS group by fields at the AAD root level ({kibana-pull}188241[#188241]). +* Adds last value aggregation ({kibana-pull}187082[#187082]). +* Improve synthetics alerting ({kibana-pull}186585[#186585]). +* Make overview grid embeddable ({kibana-pull}160597[#160597]). +Elastic Security solution:: +For the Elastic Security 8.16.0 release information, refer to {security-guide}/release-notes.html[_Elastic Security Solution Release Notes_]. +Kibana security:: +* Adds an API endpoint `POST security/roles` that can be used to bulk create or update roles ({kibana-pull}189173[#189173]). +* Automatic Import can now create integrations for logs in the CSV format ({kibana-pull}194386[#194386]). +* Adds an error handling framework to Automatic Import that provides error messages with more context to user ({kibana-pull}193577[#193577]). +* When running in FIPS mode, Kibana forbids usage of PKCS12 configuration options ({kibana-pull}192627[#192627]). +Machine Learning:: +* Adds new section for creating daylight saving time calendar events ({kibana-pull}193605[#193605]). +* Anomaly Detection: Adds a page to list supplied job configurations ({kibana-pull}191564[#191564]). +* Redesigns start/update model deployment dialog to support adaptive resources ({kibana-pull}190243[#190243]). +* File upload: Adds support for PDF files ({kibana-pull}186956[#186956]). +* Adds Pattern analysis embeddable for dashboards ({kibana-pull}186539[#186539]). +Management:: +* This release introduces a fresh, modern look for the console, now featuring the Monaco editor. We've added a file import and export functionality, and the console is fully responsive with stackable panels for a smoother experience. New buttons allow for quick clearing of editor values and output. Additionally, the history and config tabs were improved to enhance usability. ({kibana-pull}189748[#189748]). + +For more information about the features introduced in 8.16.0, refer to <>. + +[[enhancements-and-bug-fixes-v8.16.0]] +=== Enhancements and bug fixes + +For detailed information about the 8.16.0 release, review the enhancements and bug fixes. + + +[float] +[[enhancement-v8.16.0]] +=== Enhancements +Alerting:: +* Allow users to select template while adding a case action in the rule ({kibana-pull}190701[#190701]). +* New full-page rule form in the Stack Management app ({kibana-pull}194655[#194655]). +Dashboards and visualizations:: +* Adds compressed style for dashboard controls ({kibana-pull}190636[#190636]). +* Adds the ability to duplicate a managed dashboard from its `managed` badge ({kibana-pull}189404[#189404]). +* Adds the ability to expand the height of various sections in the Edit ES|QL visualization flyout ({kibana-pull}193453[#193453]). +* Improves the query authoring experience when editing an ES|QL visualization ({kibana-pull}186875[#186875]). +* Syncs the cursor for time series charts powered by ES|QL ({kibana-pull}192837[#192837]). +* Gauge and metric Lens visualizations are no longer experimental ({kibana-pull}192359[#192359]). +* Sets gauge default palette to "temperature" in *Lens* ({kibana-pull}191853[#191853]). +* Supports fuzzy search on field pickers and field lists in *Lens* ({kibana-pull}186894[#186894]). +Data ingestion and Fleet:: +* Update max supported package version ({kibana-pull}196551[#196551]). +* Adds additional columns to Agent Logs UI ({kibana-pull}192262[#192262]). +* Show `+build` versions for Elastic Agent upgrades ({kibana-pull}192171[#192171]). +* Added format parameter to `agent_policies` APIs ({kibana-pull}191811[#191811]). +* Adds toggles for `agent.monitoring.http.enabled` and `agent.monitoring.http.buffer.enabled` to agent policy advanced settings ({kibana-pull}190984[#190984]). +* Support integration policies without agent policy references (aka orphaned integration policies) ({kibana-pull}190649[#190649]). +* Changed the UX of the Edit Integration Policy page to update agent policies ({kibana-pull}190583[#190583]). +* Allow `traces` to be added to the `monitoring_enabled` array in Agent policies ({kibana-pull}189908[#189908]). +* Create task that periodically unenrolls inactive agents ({kibana-pull}189861[#189861]). +* Adds setup technology selector to add integration page ({kibana-pull}189612[#189612]). +* Support integration-level outputs ({kibana-pull}189125[#189125]). +Discover:: +* Renames the Documents tab to Results in ES|QL mode ({kibana-pull}197833[#197833]). +* Adds a cluster details tab for CCS data sources when inspecting requests in ES|QL mode ({kibana-pull}195373[#195373]). +* Adds the query time to the list of statistics when inspecting requests in ES|QL mode ({kibana-pull}194806[#194806]). +* Improves display of error messages in ES|QL mode ({kibana-pull}191320[#191320]). +* Adds a help menu to the ES|QL mode ({kibana-pull}190579[#190579]). +* Initializes the ES|QL editor with time named parameters when switching from the classic mode with a data view without @timestamp ({kibana-pull}189367[#189367]). +* Adds the ability to select multiple rows from the Documents table using "Shift + Select" ({kibana-pull}193619[#193619]). +* Adds the ability to filter on field names and values in the expanded document view ({kibana-pull}192299[#192299]). +* Adds filtering for selected fields ({kibana-pull}191930[#191930]). +* Adds a dedicated column to the document viewer flyout for pinning and unpinning rows ({kibana-pull}190344[#190344]). +* Improves absolute column width handling ({kibana-pull}190288[#190288]). +* Allows filtering by field type in the document viewer flyout ({kibana-pull}189981[#189981]). +* Improves the document viewer flyout to remember the last active tab ({kibana-pull}189806[#189806]). +* Adds ability to hide fields with null values from the document viewer ({kibana-pull}189601[#189601]). +* Adds the ability to copy selected rows as text ({kibana-pull}189512[#189512]). +* Adds a log level badge cell renderer to the Discover logs profile ({kibana-pull}188281[#188281]). +* Shows ECS field descriptions in Discover and adds markdown support for field descriptions ({kibana-pull}187160[#187160]). +* Adds support for the Log overview tab to the Discover log profile ({kibana-pull}186680[#186680]). +* Adds default app state extension and log integration data source profiles ({kibana-pull}186347[#186347]). +* Allows to select and deselect all rows in the grid at once ({kibana-pull}184241[#184241]). +* Limits the height of long field values by default ({kibana-pull}183736[#183736]). +ES|QL editor:: +* Changes the auto-focus to be on the ES|QL editor when loading the page ({kibana-pull}193800[#193800]). +* Updates the autocomplete behavior for `SORT` to be in line with other field-list-based experiences like `KEEP` in ES|QL queries ({kibana-pull}193595[#193595]). +* Adds `all (*)` to the list of suggestions for `COUNT` functions in ES|QL queries ({kibana-pull}192205[#192205]). +* Improves ES|QL autocomplete suggestions for `case()` expressions ({kibana-pull}192135[#192135]). +* Opens suggestions automatically for sources lists and `ENRICH` functions when writing ES|QL queries ({kibana-pull}191312[#191312]). +* Improves wrapping and readability for ES|QL queries ({kibana-pull}191269[#191269]). +* Improves suggestions based on previous function arguments and date suggestions for `bucket` functions in ES|QL queries ({kibana-pull}190828[#190828]). +* Show the `LIMIT` information in the ES|QL editor's footer ({kibana-pull}190498[#190498]). +* Opens suggestions automatically for field lists in ES|QL queries ({kibana-pull}190466[#190466]). +* Integrates a time picker for date fields into the ES|QL editor ({kibana-pull}187047[#187047]). +* Improves ES|QL support for Elasticsearch sub-types in AST for both validation and autocomplete ({kibana-pull}189689[#189689]). +* Adds ECS information to the ES|QL editor suggestions and prioritizes fields based on ECS information on the editor ({kibana-pull}187922[#187922]). +* Improves `BY` suggestions in ES|QL queries to include pipe and comma operators ({kibana-pull}189458[#189458]). +* Makes the suggestion menu open automatically in more places in ES|QL queries ({kibana-pull}189585[#189585]). +* Adds hints upon hover for function argument types and time system types ({kibana-pull}191881[#191881]). +Elastic Observability solution:: +* Enable Kubernetes Otel flow ({kibana-pull}196531[#196531]). +* Pass function responses when copying conversation ({kibana-pull}195635[#195635]). +* Turn 'fast filter' on by default and ensure tech preview badge shows when turned on ({kibana-pull}193710[#193710]). +* Custom Service Name Cell ({kibana-pull}192381[#192381]). +* Remove manage_transform and manage_ingest_pipeline privilege requirements ({kibana-pull}190572[#190572]). +* Create new formula for CPU Usage metric ({kibana-pull}189261[#189261]). +* Adds customizable header for quickstart flows ({kibana-pull}188340[#188340]). +* Change Kubernetes guide to link to observability onboarding ({kibana-pull}188322[#188322]). +* Adds KB user instructions ({kibana-pull}187607[#187607]). +* Refactor Synthetics Overview page for increased scalability ({kibana-pull}187092[#187092]). +* Improve synthetics alerting ({kibana-pull}186585[#186585]). +* Annotations Initial phase ({kibana-pull}184325[#184325]). +Elastic Search solution:: +* Adds Alibaba AI Search to Deletion, search and filtering of inference endpoints ({kibana-pull}190783[#190783]). +Elastic Security solution:: +For the Elastic Security 8.16.0 release information, refer to {security-guide}/release-notes.html[_Elastic Security Solution Release Notes_]. +Kibana security:: +* Enhances Open API spec generation to include Route Security Authorization if available ({kibana-pull}197001[#197001]). +* Automatic Import now analyzes larger number of samples to generate an integration ({kibana-pull}196233[#196233]). +* Extended `KibanaRouteOptions` to include security configuration at the route definition level ({kibana-pull}191973[#191973]). +* Adds several UX improvements to the management of Spaces in **Stack Management > Spaces**, including the ability to assign Roles to an existing Space. ({kibana-pull}191795[#191795]). +* Displays an "invalid file" error when selecting unsupported file types for the user profile image ({kibana-pull}190077[#190077]). +* Displays a warning to users whenever role mappings with empty `any` or `all` rules are created or updated ({kibana-pull}189340[#189340]). +* Adds support for CHIPS cookies ({kibana-pull}188519[#188519]). +* Adds support for Permissions Policy reporting ({kibana-pull}186892[#186892]). +Machine Learning:: +* File upload: enables check for model allocations ({kibana-pull}197395[#197395]). +* Data visualizer: Adds icons for semantic text, sparse vector, and dense vector ({kibana-pull}196069[#196069]). +* Updates vCPUs ranges for start model deployment ({kibana-pull}195617[#195617]). +* Adds ML tasks to the Kibana audit log ({kibana-pull}195120[#195120]). +* Anomaly Detection: adds ability to delete forecasts from job ({kibana-pull}194896[#194896]). +* Updates for Trained Models table layout and model states ({kibana-pull}194614[#194614]). +* Log rate analysis: ensures ability to sort on Log rate change ({kibana-pull}193501[#193501]). +* Single Metric Viewer: Enables cross-filtering for 'by', 'over', and 'partition' field values ({kibana-pull}193255[#193255]). +* Adds link to anomaly detection configurations from Integration > Assets tab ({kibana-pull}193105[#193105]). +* Anomaly Explorer: Displays markers for scheduled events in distribution-type anomaly charts ({kibana-pull}192377[#192377]). +* Serverless Security: Adds ES|QL visualizer menu item to the nav ({kibana-pull}192314[#192314]). +* Updates icons for Machine Learning embeddable dashboard panel types ({kibana-pull}191718[#191718]). +* AIOps: Uses no minimum time range by default for pattern analysis ({kibana-pull}191192[#191192]). +* Links to ML assets from Integration > Assets tab ({kibana-pull}189767[#189767]). +* Utilizes the `DataViewLazy` in ML plugin ({kibana-pull}189188[#189188]). +* AIOps: Chunks groups of field candidates into single queries for top items and histograms ({kibana-pull}189155[#189155]). +* AIOps: Updates fields filter popover to be able to filter fields from analysis (not just grouping) ({kibana-pull}188913[#188913]). +* Single Metric Viewer embeddable: adds forecasting ({kibana-pull}188791[#188791]). +* Adds new custom rule action to force time shift ({kibana-pull}188710[#188710]). +* AIOps: Chunks groups of field candidates into single queries ({kibana-pull}188137[#188137]). +* AIOps: Adds log rate analysis to alert details page contextual insight ({kibana-pull}187690[#187690]). +* Adds ability to toggle visibility for empty fields when choosing an aggregation or field in Anomaly detection, data frame analytics ({kibana-pull}186670[#186670]). +* Anomaly Detection: Adds popover links menu to anomaly explorer charts ({kibana-pull}186587[#186587]). +Management:: +* Adds an option to show or hide empty fields in dropdown lists in Transform ({kibana-pull}195485[#195485]). +* Adds a confirmation dialog when deleting a transform from a warning banner ({kibana-pull}192080[#192080]). +* Improves the autocomplete to suggest fields for the `dense_vector` type in Console ({kibana-pull}190769[#190769]). +* Adds the ability to view an ILM policy details in read-only mode ({kibana-pull}186955[#186955]). + +[float] +[[fixes-v8.16.0]] +=== Bug fixes +Alerting:: +* Show up to 1k maintenance windows in the UI ({kibana-pull}198504[#198504]) +* Skip scheduling actions for the alerts without scheduledActions ({kibana-pull}195948[#195948]). +* Fixes Stack Alerts feature API access control ({kibana-pull}193948[#193948]). +* Remove unintended internal find routes API with public access ({kibana-pull}193757[#193757]). +* Convert timestamp before passing to validation ({kibana-pull}192379[#192379]). +* Grouped over field is not populated correctly when editing a rule ({kibana-pull}192297[#192297]). +* Mark slack rate-limiting errors as user errors ({kibana-pull}192200[#192200]). +* Fixes maintenance window filtering with wildcards ({kibana-pull}194777[#194777]). +* Fixes search filters in rules, alerts, and maintenance windows ({kibana-pull}193623[#193623]). +Cases:: +* Use absolute time ranges when adding visualizations to a case ({kibana-pull}189168[#189168]). +* Fixes custom fields with long text that could not be edited in the UI ({kibana-pull}190490[#190490]). +Dashboards and visualizations:: +* Correctly show full screen mode when opening a dashboard or panel from a URL that contains the fullScreenMode parameter ({kibana-pull}196275[#196275]) and ({kibana-pull}190086[#190086]). +* Fixes an issue that could cause a the dashboard list to stay in loading state ({kibana-pull}195277[#195277]). +* Correctly use the same field icons as Discover ({kibana-pull}194095[#194095]). +* Fixes an issue where panels could disappear from a dashboard when canceling edit after saving the dashboard ({kibana-pull}193914[#193914]). +* Adds scroll margin to panels ({kibana-pull}193430[#193430]). +* Fixes an issue with the breadcrumb update icon not working when clicked ({kibana-pull}192240[#192240]). +* Fixes an issue where unsaved changes could remain after saving a dashboard ({kibana-pull}190165[#190165]). +* Fixes an issue causing the flyout to close when canceling the Save to library action ({kibana-pull}188995[#188995]). +* Fixes incomplete string escaping and encoding in *TSVB* ({kibana-pull}196248[#196248]). +* Fixes an issue where label truncation in heat map legends was not working properly in *Lens* ({kibana-pull}195928[#195928]). +* Fixes an issue where the color picker and axis side settings were incorrectly available in the breakdown dimension editor for XY charts in *Lens* ({kibana-pull}195845[#195845]). +* Fixes the tooltip position on faceted charts in *Vega* ({kibana-pull}194620[#194620]). +* Fixes the filter out legend action for ES|QL visualizations ({kibana-pull}194374[#194374]). +* Fixes element sizing issues in full screen mode in *Vega* ({kibana-pull}194330[#194330]). +* Fixes the default cell text alignment setting for non-numeric field types in *Lens* ({kibana-pull}193886[#193886]). +* Limits the height of the query bar input for long KQL queries ({kibana-pull}193737[#193737]). +* Makes the title correctly align left after removing an icon in **Lens** metric charts ({kibana-pull}191057[#191057]). +* Fixes a "No data" error caused by the "Collapse by" setting in **Lens** metric charts ({kibana-pull}190966[#190966]). +* Fixes an issue causing the color of a cell to disappear when clicking the "Expand cell" icon in *Lens* ({kibana-pull}190618[#190618]). +* Removes unnecessary index pattern references from Lens charts ({kibana-pull}190296[#190296]). +* Fixes several accessibility issues ({kibana-pull}188624[#188624]). +Data ingestion and Fleet:: +* Revert "Fix client-side validation for agent policy timeout fields" ({kibana-pull}194338[#194338]). +* Adds proxy arguments to install snippets ({kibana-pull}193922[#193922]). +* Rollover if dimension mappings changed in dynamic templates ({kibana-pull}192098[#192098]). +Discover:: +* Fixes an issue with search highlighting ({kibana-pull}197607[#197607]). +* Correctly pass embeddable filters to the Surrounding Documents page ({kibana-pull}197190[#197190]). +* Fixes trailing decimals dropped from client side validation messages ({kibana-pull}196570[#196570]). +* Fixes several validation issues and creates an expression type evaluator for ES|QL queries ({kibana-pull}195989[#195989]). +* Fixes duplicate autocomplete suggestions for `WHERE` clauses and suggestions with no space in between in ES|QL queries ({kibana-pull}195771[#195771]). +* Improves variable and field name handling in ES|QL queries ({kibana-pull}195149[#195149]). +* Fixes an issue where the Unified Field List popover could get cut off ({kibana-pull}195147[#195147]). +* Fixes the width for saved object type columns ({kibana-pull}194388[#194388]). +* Adds tooltips to Discover button icons ({kibana-pull}192963[#192963]). +* Excludes inactive integration data stream suggestions ({kibana-pull}192953[#192953]). +* Fixes new variables being suggested in incorrect places ({kibana-pull}192405[#192405]). +* Only log requests in the Inspector when they completed ({kibana-pull}191232[#191232]). +ES|QL editor:: +* Fixes an issue where the autocomplete suggestions could cause duplicate entries in ES|QL queries ({kibana-pull}190465[#190465]). +* Fixes several styling issues in the ES|QL editor ({kibana-pull}190170[#190170]). +Elastic Observability solution:: +* Change the slice outcome from bad to good whenever there is no data during the slice window ({kibana-pull}196942[#196942]). +* Make agent names generic with otel-native mode ({kibana-pull}195594[#195594]). +* Avoid showing unnecessary error toast ({kibana-pull}195331[#195331]). +* Use `fields` instead of `_source` on APM queries ({kibana-pull}195242[#195242]). +* Fixes ping heatmap payload ({kibana-pull}195107[#195107]). +* Fixes rule modal warnings in the developer console ({kibana-pull}194766[#194766]). +* Avoid AI assistant overlaying AI conversations ({kibana-pull}194722[#194722]). +* Improve loading state for metric items ({kibana-pull}192930[#192930]). +* Fixes issue where heatmap UI crashes on undefined histogram data ({kibana-pull}192508[#192508]). +* Calculate the latest metadata lookback based on the calculated history delay ({kibana-pull}191324[#191324]). +* Remove dedicated language setting ({kibana-pull}190983[#190983]). +* Change latest metric to use @timestamp ({kibana-pull}190417[#190417]). +* Prevent initial error when adding filters ({kibana-pull}190214[#190214]). +* Display error message when failing to enable machine learning anomaly detection in Inventory ({kibana-pull}189627[#189627]). +* Convert route validation to Zod ({kibana-pull}188691[#188691]). +* Fixes functions table height in asset details view profiling tab ({kibana-pull}188650[#188650]). +* Adds four decimal places float validation for transaction_sample_rate ({kibana-pull}188555[#188555]). +* Centralize data fetching and better control of when data can be refreshed ({kibana-pull}187736[#187736]). +* Fixes heatmap on monitor detail/history page for very large doc counts ({kibana-pull}184177[#184177]). +* Adds settings to serverless allowlist ({kibana-pull}190098[#190098]). +* Set missing group to false by default and show checkbox value in disable mode ({kibana-pull}188402[#188402]). +Elastic Search solution:: +* Fixes an issue with the {ref}/es-connectors-network-drive.html[Network Drive connector] where advanced configuration fields were not displayed for CSV file role mappings with `Drive Type: Linux` selected. +Elastic Security solution:: +For the Elastic Security 8.16.0 release information, refer to {security-guide}/release-notes.html[_Elastic Security Solution Release Notes_]. +Kibana platform:: +* Fixes an issue causing a wrong date to show in the header of a report when generated from relative date ({kibana-pull}197027[#197027]). +* Fixes an issue where the Created and Updated timestamps for Dashboards were ignoring the default timezone settings in Advanced settings. ({kibana-pull}196977[#196977]). +* Fixes an issue causing searches including a colon `:` character to show inaccurate results ({kibana-pull}190464[#190464]). +Kibana security:: +* Fixes an issue where an LLM was likely to generate invalid processors containing array access in Automatic Import ({kibana-pull}196207[#196207]). +Machine Learning:: +* File upload: fixes PDF character count limit ({kibana-pull}197333[#197333]). +* Data Drift: Updates brush positions on window resize fix ({kibana-pull}196830[#196830]). +* AIOps: Fixes issue where some queries cause filters to not be applied ({kibana-pull}196585[#196585]). +* Transforms: Limits the data grid result window ({kibana-pull}196510[#196510]). +* Fixes Anomaly Swim Lane Embeddable not updating properly on query change ({kibana-pull}195090[#195090]). +* Hides ES|QL based saved searches in ML & Transforms ({kibana-pull}195084[#195084]). +* Fixes query for pattern analysis and change point analysis ({kibana-pull}194742[#194742]). +* Anomaly explorer: Shows data gaps and connect anomalous points on Single Metric Charts ({kibana-pull}194119[#194119]). +* Fixes file upload with no ingest pipeline ({kibana-pull}193744[#193744]). +* Disables field statistics panel in Dashboard if ES|QL is disabled ({kibana-pull}193587[#193587]). +* Fixes display of assignees when attaching ML panels to a new case ({kibana-pull}192163[#192163]). +* Anomaly explorer: Fixes the order of the coordinates displayed on the map tooltip ({kibana-pull}192077[#192077]). +* Fixes links to the Single Metric Viewer from the Annotations and Forecasts tables ({kibana-pull}192000[#192000]). +* Trained models: fixes responsiveness of state column for smaller displays ({kibana-pull}191900[#191900]). +* File upload: increases timeout for upload request ({kibana-pull}191770[#191770]). +* Improves expired license check ({kibana-pull}191503[#191503]). +Management:: +* Fixes the pagination of the source documents data grid in Transforms ({kibana-pull}196119[#196119]). +* Fixes autocomplete suggestions after a comma in Console ({kibana-pull}189656[#189656]). + + [[release-notes-8.15.3]] == {kib} 8.15.3 diff --git a/docs/upgrade-notes.asciidoc b/docs/upgrade-notes.asciidoc index 85013c8e4ba64..98f7feeac2d6a 100644 --- a/docs/upgrade-notes.asciidoc +++ b/docs/upgrade-notes.asciidoc @@ -1694,6 +1694,30 @@ When you create *Lens* visualization, the default for the *Legend width* is now [float] ==== Elastic Observability solution +[discrete] +[[deprecation-192003]] +* Deprecated the Observability AI Assistant specific advanced setting `observability:aiAssistantLogsIndexPattern`. (8.16) +[%collapsible] +==== +*Details* + +The Observability AI Assistant specific advanced setting for Logs index patterns `observability:aiAssistantLogsIndexPattern` is deprecated and no longer used. The AI Assistant will now use the existing **Log sources** setting `observability:logSources` instead. For more information, refer to ({kibana-pull}192003[#192003]). + +//*Impact* + +//!!TODO!! +==== + +[discrete] +[[deprecation-194519]] +* The Logs Stream was hidden by default in favor of the Logs Explorer app. (8.16) +[%collapsible] +==== +*Details* + +You can find the Logs Explorer app in the navigation menu under Logs > Explorer, or as a separate tab in Discover. For more information, refer to ({kibana-pull}194519[#194519]). + +*Impact* + +You can still show the Logs Stream app again by navigating to Stack Management > Advanced Settings and by enabling the `observability:enableLogsStream` setting. +==== + [discrete] [[deprecation-120689]] From d5e9939f6b24ae608f460945246b2746b6ce3527 Mon Sep 17 00:00:00 2001 From: florent-leborgne Date: Tue, 5 Nov 2024 16:41:56 +0100 Subject: [PATCH 43/57] [Docs] 8.16 release highlights - what's new page (#198343) This PR adds the release highlights for Kibana 8.16.0 Closes: https://github.com/elastic/platform-docs-team/issues/501 ![Whats New Guide (2)](https://github.com/user-attachments/assets/ce61261b-ca23-4fe6-89cd-6c5c6fb843b6) image image --- docs/user/images/dashboard-star.png | Bin 0 -> 82862 bytes docs/user/images/dashboard-usage.png | Bin 0 -> 130056 bytes docs/user/images/discover-log-level.png | Bin 0 -> 578539 bytes .../images/esql-autocomplete-suggestions.png | Bin 0 -> 119686 bytes docs/user/images/esql-suggestions.png | Bin 0 -> 78023 bytes docs/user/images/ip-location-processor.png | Bin 0 -> 326267 bytes docs/user/images/metric-customization.png | Bin 0 -> 239608 bytes docs/user/images/monaco-console.png | Bin 0 -> 464924 bytes docs/user/images/solution-view-obs.png | Bin 0 -> 243420 bytes docs/user/images/space-settings.png | Bin 0 -> 190213 bytes docs/user/images/table-coloring.png | Bin 0 -> 278972 bytes docs/user/whats-new.asciidoc | 163 +++++++----------- 12 files changed, 66 insertions(+), 97 deletions(-) create mode 100644 docs/user/images/dashboard-star.png create mode 100644 docs/user/images/dashboard-usage.png create mode 100644 docs/user/images/discover-log-level.png create mode 100644 docs/user/images/esql-autocomplete-suggestions.png create mode 100644 docs/user/images/esql-suggestions.png create mode 100644 docs/user/images/ip-location-processor.png create mode 100644 docs/user/images/metric-customization.png create mode 100644 docs/user/images/monaco-console.png create mode 100644 docs/user/images/solution-view-obs.png create mode 100644 docs/user/images/space-settings.png create mode 100644 docs/user/images/table-coloring.png diff --git a/docs/user/images/dashboard-star.png b/docs/user/images/dashboard-star.png new file mode 100644 index 0000000000000000000000000000000000000000..25219d8866c0bbaa0490db3ac10c15eae1f5439d GIT binary patch literal 82862 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û_+z0-p-u6q-0^%+pT9_Y8Q@GcVMGCjv_0Zaq>4r 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‚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 K^{>uA-k?&VY1GI+N}f|L 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 KxwjuY{eJ-GR6s2N literal 0 HcmV?d00001 diff --git a/docs/user/images/discover-log-level.png b/docs/user/images/discover-log-level.png new file mode 100644 index 0000000000000000000000000000000000000000..a6de92c0ae0204f49462328331e85bb937bd3691 GIT binary patch literal 578539 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≧oM>pv$G@h%vmu)xh`xY$PJ_&bcr_zZ# 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

D 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

?C#TYn(}Ovi#1CZS9lLoqdn%pr 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%0D&TZj;pdHO^|!C5}Kl|gwMe0OBEWB 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

xCp_&o!4uw~a#Noh1($)Jzh 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⁣AhW>dW2rJCpDZwt6h8it{Sbvkmj889d$E{?+-{ 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 z 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

a<|VRSr( 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

u2Rc+*aI~NzfVc4mr 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%0AWD#(_j1(IRv412P* zjst~5rcuNlMJ$g>L;~kLf+=OmfnwY$Ne@Q6&FD-4yBXZ;py4bq;zW%r`aw+PvR4^y zo%0B`d|nbXU<^~&yrvu}&%#`;MDTBBYC>b#-{zM{uky3W5F8u$%SjHYQ{G_8(ysbs#IHd6yHEN4 zIe93p9u+3*MmFR(?z7YaNxVu6;>G@8FY7oTe0YoL{%Aj91n}1*PiEJ0xs?Zj8r3VE5#~}?K0ZX}cbhDNf+Y3N zC~_f#_U43&fX_mw@7cC|S}>IJHrh|ZjCZ@}YE_Z7*^s7QS`oDk7{0x$DU)*-qmBVZ zoj*Udfs^=AL)NSnwq=9l6yw2jc29-44+rKytNmgA(F%L3Uw+{=#oD;l)_cQZMd!; zq{ay`0a+h9mi{=WxrB9Zrk+BlH|2xLoiv2FrIgEmRSHafBu<)lC&-goxMY@qF?Qt_ z4jOce78S0#C*_L=d%A2tg2xrDJshNU_qsCvph;6{Sh@O7Z%=-mRt=wg1bJf!szU9_{7?@ENEX5@*RPAL9P$$kV8V!kK@2WUW0@v0}W4QeBNT@1}HK+ z^6EJ8Sa-ZUMgJF<09VD;dWubDkh0?Rat&+cP2i z$ENobC{*elz*+m9qr@LvoZv8~U-Gp=P-2lG#$_S4AJC!$mwHaZbnRo}wSduP9Av(h>1 zcPeRsHAGJP;j(O-qBUSyl1X)m(~de_xbr;1E52?)QvAb|)DzuLw| zMF)G069?XC{~u)9kL9LUQw_H%JD3#ip`~^da5}0oKBXB4+_)4}rePW3frZaAMavcH z?-yhFxIDHdYM%WPPM#;hn!YCIBfnV0wztkac)F2cE z#Z0sPW-mY5Yir!8c-^Hm`~18GCOq< z^5}$@xGSJ{yQZD#P=5V58-sUK*q?yaMG9E3+nB)QuUxVB+qIWzlo0Ka(7IhFS^Pn(M@FBAYGrs~@=2*bF zF;_r4Q{CI{hsZjtnr1Skk!n&+$CpyC SV?e=>Khko+Hwp9>oF6Pg`2)M6`-*XH9 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%0Arb2>IpD?1ry$!oPve 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�Ilhy{e&)nYTN! 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 cIOntv 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 lGykd>_b*#=u{7?Q+2Gv0_+vQS76Ye}q literal 0 HcmV?d00001 diff --git a/docs/user/images/esql-autocomplete-suggestions.png b/docs/user/images/esql-autocomplete-suggestions.png new file mode 100644 index 0000000000000000000000000000000000000000..bd78201b0d121ace4ec83572dece1c24cf208ba7 GIT binary patch literal 119686 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 G;r{@cW_pVN literal 0 HcmV?d00001 diff --git a/docs/user/images/esql-suggestions.png b/docs/user/images/esql-suggestions.png new file mode 100644 index 0000000000000000000000000000000000000000..234f0339003a1e2d78f02e83e9789a208bc74345 GIT binary patch literal 78023 zcmZU(1y~g8`vAHuAl)EHE{!xu=OW!H-AH$Lx1@k{cSuSjDAFJx-GX#?mv`_S&+mWl z-Dh^^+nF!lu1F;XNi<|aWDp31CM_kV0s?^{AP}q&;xph0B}J$->!Mi~6=DW>y?xXLSyvv!H-XntUhr^j__AAKE^DLCJmTJ>)_^^X2!W zfp~VG;uaVLPfk24yH!l?10KWIea{06n)K_gPW(WgzRDb8Y5X=AaXDwT`vqy%>b0dr z@J?zCCPs)QXhoVhmIn)j4SVv6y(LnLG=b>b^ViwXh#Ewrl=}J&fsi-~n}}|R(72kP z*}c0b_V46Z`ss;X(n+UsEE7RjxP?(Fyu81+9PjO=Wj}nM{vnx^M0JTK@)7K0cBPtp zC#yy9h0Y-v{`1bYr9#4W*eE;q5~W$PC$Xac&ite}%%@Dqv6<}I+nO%3w46gczM<6( z@^Nh>V~lA==Wb_L>X*M%{IPSGhI2A-pYsl-1x1K|%FM>z6~Gv$?_Oe;6(@`N=rjV>X}phLu>AQrt!ER%OF!%vm~3g;B?Eb0AkSQ0}-xj?)cScR`>9x%d~h~JCx_ZTou-UXy!E!H)37xT>VVn_O zMR>;b81HDpeiWR>CyJ5pt?IVxJ?!K%TBvQGh1usp4_EC?Tgh|`z#qQ?Jz}BqVftMQAi7AfFV9Xc*DN?~Funh#` z$|l4&##>1p6e1Khy=B+R*_VhVH;-?M-|OERP#hpLEvqxDv(d`l*PcV3Gn>n(t6oQR z@^WHqDROFYDst-Es2YklSvl}Yc!j+>i? z)ulMSJ9XQ5zClZGfoJl;@B`zAc6xj@i8q$z3gx;}ucu7PF{TVTO&Ty8K3E}4Rh7k5 zSeM?FMoqd`E}f(Ym~fU&vkbT?-PLl*P*L#z+f@dTVMc9TOZwPh4?k zyGO(f>-q}ah0Hp-e16@R-(1N_7c)-CO+1_Md)2BHpp~r^HOJtrcSdk_u(`Ck%xJ@; z!i26RP^VUN{^|QCn@>I_rZznd%vCI|es z9GBlKzqV`V3zl#;cGk4E=hli=@DAS`UQFsN@Q<~1dVlYmHZM|aW9gk)c5gcpY~;%r zsxpbYnY*jJ+&iVc3BOIb6GmZ0$3&=S3cM%zSERRm6nh8P>NXENuFMw z5YGc~5WYImH}Q(vUkXXCOgc?2M$T5ItE8tW3!5HMHAHWSGufQw2rn%HScVVq_IZv$lW_CXg8}K)enCl&Qt==YGeA&=i$J=UOz--B5G7$9F zd;E$aB+P-^|2zWa(AH(X`AG6SE{M#VOUr(~eMg79`dH?@xU%I~%JAZ_hF{%%*?!3Y z6OxWs7bd~zMc4Y1QS`6*Ef?9TAHls~gx^sG;c7pb;c7cw!;!W1B zjk6X1O~qU_XGw#CMy9gBrwhgto5#5U=a#MB1@VIdl1LKRtRX(KtT;aZHiqVkt)Snb zviR*R*+*usIc@7cJLjf-LnT$L)%Cg!ZSy|Em-7S5Hvar`CNmR0OOIZAXyHV*?I>QO zKV91A9EZ-PdlvQ=G>#ZsC%n1u4|4l#tKe2;I9HoGDv_ef1h@rCjPUiy|_ z*6+F(EN9&A-;SJnUmAEnzug}Lxvy-H?fCn=`0lUZr_Wc&tHy1^>EqSyz1|zu!}84F zoxVc!^ZS>-%{LgjG-w~4?)K(2CudizPxc15GnVPURC=19RXGb--0$4gU*V7;3)B05 zeCWQPeBeDj`yn=sznD^2En%?GapUhTkjBOPay5c?q5y=f%tH}WkX+cmZCD}T9Y{n~R9YIitC~2On%X&A*t@_V9~=P>kQ}76oI#-H)K6a+X%(tt zVE$=KHBA>yc{x54ds}9sxAw-S%pSH5PxF8TJotd7t*MI<#KYFc&Y90ckm64dKA`>d zn1urJr;CfVAcdy95=7MA$rQrH%*xD4A%qNpKm?rLn(?WKN≫_$NqV;o{=J$HL<7 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%0D88Bj(viWp(vB>=wi~j3Q!BsUl91s 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 VR6y%rR$r+JZ>Q>Cmwp<0 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∋CU5n{oVw?nL&4bNT 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­9Ra^*Eh@*Gu-dm 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¨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�#*!pN^X*FZ|+A%Z)4Z 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/user/images/metric-customization.png b/docs/user/images/metric-customization.png new file mode 100644 index 0000000000000000000000000000000000000000..238df1aee82ac96b07b5e7617e2f7df1eb1ca29d GIT binary patch literal 239608 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℘RceA0kd8^M&{MS4k4@xF|%JJr# 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 Sn)N>)FxXl-L8~pU#{LiLD(8p* literal 0 HcmV?d00001 diff --git a/docs/user/images/monaco-console.png b/docs/user/images/monaco-console.png new file mode 100644 index 0000000000000000000000000000000000000000..3bdd4be4eb4980e7685019ba57358ba54aaea690 GIT binary patch literal 464924 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

$*ySn%_?cU3XeO>r=_1pVa%}8{%s^%8r%kF-;kD z1~(be?%IgTML^TE zFKMHU1cY7z{mwzN>_2#$7tCsX4+=%M3W58zfi~3`L{eUGM4w;7ZP(?Pw0PK zIt>3DYvXwvXg2$G20o-9iPwF;W&eBPW`vG|WCJ5U&Bn*$#s&Zt4c9a5V)j1Il%Q9y zBV^Q$gPh%j;k&ii61`EMNq6t@?RDn@8eHY)+%~=i+1=Y(G1)Dt`W%ZQZ+dW+GN*fg zfR7uNbtZNx6V{lW4j^#FHeT^F1FBADZhh2(Y9#V_NEysVSH$ye&AI1RJ-iZes;G4ZVgO%Cmm_qFNvYnj$?)?BI$PrKz&*_thT4+Y!x0vp3|*T4;hg`V$4*B7dMYjh`<0c!ETmN807 zZgyv|G|xn+)44LQiE*kNa3EW#=gB!u(A`V~we=Wpm;X zO$8phtq7^gA^LW2=UM*x^m@bdeq-s4NR7y|RYu_WmUfrnYUpGz`gBAs;POP(?YCq% z3#}7Gk6VMPj*RQ--18b%TQ={dTSr6o2R!~E>>22A!Ny(`BqK`-?ZM#= zpma*lk}DR47=Xsc+7a&QS77s1oys*@%eIF*noD?94+n5t(}&-d4DJFr=PrAX!j>_y z+Rwf!oou61*D5Yam_)zlz4#@5$Li_Sr~o#%Bq8Sd=!)^&4eiq@b5B1KtEW8xT}(71 zVxdz;7wi4kV!l13L?}(KL2Jxgt=VXYu%zqG)<2Gqxy{eBNPKp)LV`>SL&3I*lg(Ep z=8w|WWB!)+BhI)4(4?5F%k8pkMUCo6wT;Z^Qt{aLX!uWW zeOwsuoesIy*Qhd2JA&YGui)k~>`b`~6u0;@cxsr?LqVExTBcGSY~KeP(2T^q(K0f| zceu-bfrmgybhjsYSjFgo>#TTEFPHV=$Jf`GnNy#)Rm<+2;pTRyZgZKtoM;WG|DB`c zkJVjmT~due&MLaLdZUO5VYiJn*$VWbkcJX6w2^*57B((#lt8NbXSFNalZ925wq`~& zofhf!rw+7EP?3z;bTE!j3pbj{p@w;0E17}$Yf}b?WZ{WcnT0U)3BWXe(#T4QjZ0vl za8Rzmi;0O9=9u#8gNQjuVsbP!y7N-27bNrK+%M@`&-GwUk?CbURZPREaR^Uvx~fKY zaMAnb^z4#Kr?&=jjrY&h2rnzB!PAs|G6qI37WauK6d(s0iCU3AqLV!ci&O%4Z4P&I zQbsS?>LQ+;7VY*)F`b2a{5$9?g&~p<^*)_~nbpbQQMP_(ip|Cbc)?$fFk<_hBt4@5 zGfI6xWwh$XVh$J6rhE7;e1hzNgk_Ff&(r2%)JU}R!H$ii41Ok8E(_@MEyMysZy^p4 zQZr{z_n+^JJ)kB+d66X5wz{yo8yl=FH=VuMPZ{mI(7Pr!TPwUPr6^UfqI!0yt6RJo z-$zq#-sny;2x}x^260tzGx&joLTjXat;_jm))8#oL#?IeI2u4C!iU}5h`Sfqm(OO5 z>a^IgR8nn>GS60`*#HoYv2N&TuZ^=*XERqEtEDngc0csD*@nPMDj%kGE=**IY%Ht zjd~P3-@6XeE4@BD;JJU_b8{B?uC0!iIApR+V`Xyl`-_LrYf(WEu1VPS-00BHuTaTX@z>oL_K5?rK zNQtCCdq-l(VeGKYsT6BKr-ORmER$j}lI zA`@5F38ClTk#5(b0cB@>HEE_-qSUAbT%C1CNVtbdx6=PQ=8iwv zQRJ=4E{E6i&~30!VV@$Uc;1`&pjKtXeLhCFl*%-T=-ZwZ`(kW3^Lh6O@g8W0`nZP` zC9V?PRk+!8;%_eXX|PG%P>d4QKNBYygj|(M5^Sy0)6L3AjuvH>!80*>VYQV!vo2xw zZ2Ovsb7<*v+Ui2;UTMFl4r_;aMd#?eVX9J@hL)0v`hpgHX;onU8zwW`00KI^r5RIPtn1rlFx1v1iAutzAD3(f-hpf-W9rbI%v5HlE^|8e#uAbw@M+-1(EEz+jl%L8zfHap?)tog8FbSz zKHNeG$IUI3`5=`=m2osxJyDXj2L#8GjoaV@>=erskIHpKajUl{M{{}tuZV#g`&P6y zw%Mgwy4@uWHJ#5NeG-2}&e)KJX^4pgb|iH!r{_q9T2&>V&X2N-0v&X#ovlnR(P6=@ z9+A1-xZxlX3)Re5=&Ok_$x6Xc`j8Xah`Nii{kGjFjA5V2qS7cR(lR1Wwz^UuT}hV! zj1qp^kDrK-7bbKo!P-^Co=UxGt>FVUDM;h<=bM!AMXd@^XIvb{i`mmoji-X?u?`xx zPwK-bty`{Gibl7~?Rb2Y^7DBMx}+{4e;uEYyV9ZEm*CLu6~rPw!zk4zduS%$_6P0l z$9GJ9nwB!OER>Y9E#Z81y~U4tE$Zpx`_kLra2W>q&W{78azv{Cu<{pA!>CWP>egR~ zPGe3U6w7g$U!*bLrP`8}6P^auwmrW=Mplo2X&M*|fixS^^y?_=k!MUm_DG6#`hsjp zkQ^~qdBwN0x4g9-EtyL)PnB^Gvb%$@iKaKZnn338@Ja~2xNCQJ&O+1bVo3S>f%`38 z!@8Vml1pFR)GRBVOT|-fA)a*p0ZyhR!@2;k8%=xi#aoHQ?8#xV?`uNAnKP!Z)R%Az zXqKWR4ZO8(phK5h$=Qqg3rLWgm){YP!fx494&}^Colq;kCySe(K2H@9Rks5ZHo%s0 zn&0JU4xUPlp%XDD@?TIs6bNZFm!JbRCQ29>_whk(P14bo6=?evmi4{(uA#U2)el$4 zlBKCqV3@(z=a!k=$t)5zo<-X4-(Prx@+u5P?(! z-Su&eKsJ4I*4j~ei4ISJ%H}#ri&qu-*F1oan=_YAW#XdQs3GWik+%{P!NpPB?I3~ab#*&hVwCh^&Eo{FzStu>!66V`iN+1UBs zUou|A40e+i3R;DH8g||}4(lnfC@3tC^9!D^PTw-KVl0(zC;gHi}@7lgy>S^-TltW8M-RTJKWH1Q1Ok&78uXGE#r zpfxfTTQf3fz3_S`hj5O4_@^Zsqo+qcnQ5OaVSfiIZ>8Kxrp_0f)x`dNVboM&{jb_J zxT$!$fyI0~C#|+LMcUVW)Fx!KPVB#SOD+~9Wv*Kppq5n2=KF4`JJj2n7KDbljok{^3{FVdsj(t)z>c##v9Q619(GRN{8(O^e1dIzIMj!B z7GEd<@=;{jzE0IJo?E6LE8k0hlc*Qo{75%^!EJW%3{7@8w38i#)*JQ1>|{iY*UHVX8moP`_-TP-uOuI@Yiit@&6x_wH?C*K6%?z-_R^mg|5XM-ey4L(p`q?{9x`g-5 zG1F~jB_&PCZ*E@trVayjH>$cS*`8gG=wvmS=8>-v?s$fqG1@yHDP$T9xjUw1~Qo&XgZN33e2 z%fi-yZgM4&cLQL)ZmNweMpQ)V?NO6RXqG>zn#j%b)u&(FfpXH6^w8mLVH{;5v^+Ys z&-t;+;lg-BDn}h^}kNGk83mKb#W64X}f!4TPnJ|ez%M*;MNWL^{_=9`t4j4 zE1B)>^2W_8@;ll#IkCWQev=oVlq^ikWl9+TW$)O8HMLd`#?7^F(~3KG8ySe))Wr8| z6Y$3yVF2A*v4=NV7^`TF!cK3m=dvZS3FfQs@qWA{bPT~1xJA>mQky_Gr7~Q;7tAw8 zd2{o?{|WSjuE)0qm7^LOD`saa%#V5{cb|6?Y9fF!p+(>QGy}DOr?-yedH^N{Yr?XV zi`wG|NZlX7yD8%Jt_Q=VCw?1}adU@xEKXEbw>WXzhSColcz*06$c;-*u?_``9WMom z96)^2{e2YY3I5&Mb&dO#bCf&n8lhQy$j+`-6dUPdmU`$${x8vu?=U>YT&fwQV$H=- z;|_YHeT`>D-*1t#?qObE+JC}@6pKZE6Cn#uOx&~$y(Pv< zcq8Z-xsy*!D|y`Ug&?k|;wjK+oq12qSL!gK$tSD?)R#+w_k*xhxFP)X?0ZFdN(p_G zZJGCpw-cq$uyyTIH|PY+6R<0+ODP8C4f>CqtOsm5Zqp?$Pv8jLJB42ct}C`GD}%9SnPcjfd^t*bi~{ z?yBn}hrp~UL+WjeBvbVhbAR8jO&-MlbMgTD9s<-|am100G#Q6Cx4TF#S)O8Ujj3wK zl(LZu-{htpr|EbQUl@Bov-Jj0%Xxnl^er1FP%jJ>-PN6#wH36bzb|q`9*l0a$7xi$2A-u^dUNX{4B;)UUe@!WXIgxt}GQ}3i9LYHeD2JfFeX4Z(Cqt z0rBHf11S;)Sy!%9$QXlUXYRn{jw#1Cf0sx)6xU}Tz=Nbbf*Z&F-owfFe!4CwG|j*u z-z^Bf0t_Xb7JjQN0}E3U4sMDnQH_agl++j$2OTuJ&k%G}c+>X<6xiflD%5=H90vVKU;CUd)};ti=fgU6VL zHrIDwnJuwh{aMQM;*f~ley*jh*LE-u?gU1J&6_I$4m&kva)6{{IyMT7Rkt1_N zrUQ1xnun(ybqVyp+HV(cnz&A#RLYTUu&9*S3Vsc4Ft$-#gxjV!I%8w8&%LcAFqw$% zhK|p>@I;#4GeaJGPB^);PHLtXoo$OG;Y4;$>!LoEOc3k!8MpC9pvu+UH3Nx_^C-^ag zXW43@{mce+C-TL@U;}l{B}5fd>f~U&Uu6pl*EiQT%N-mq%a)0F8ueqGoa}66RHV2S z%Zbzt7e33YFlOmxMJn|NZ7$3(hJu-7C2e_ME0)EwmrC2pBrT^YKhI=fDg8`WOrWsn zLt_VvrO?HX4f3`QS)Z)-;qa0o+2CzvU}8$f!Na?trdjxGjUTefZ{oe)g8Z23O!3l` z5zz* z2qmLJkrHG|Mp_>EfEz~1D2ldM!qG*e;AGRzk z!#?SaBOp-hg*aI*8e^E=gkNL1O= zmBi~$Fz(t&(`^61^ME^3Wu*YUa$E$)Ux=)f|&5w!+iy_qZa?J{R!_}G&GN$kX$omRoR1c#@a(erw+s~PVK?d zBl~frq^xJfUIm9ML7(}JyVi-TVqw~w$4mI)a~4?Z{9qT2`*F3^ki`oM<3{6o>@=%dd2cC|OaXDG}x?D<*@Y5Oi z^^)wYMHwApd9^P=cSXw7TLBYXsvxm~W}k{f!0Y|uD1DpY4zYj6-UO^Sl-ett|$=Ty*St{^e&xUtX&jpTx9 z65{~->>X?N3p&nVn@-74f~9vIITKD2hwF5GpLzZ5HVb%}W!A*0`YBo8=g5e;poam| zShqPwC_zxTNf}O}$_7-p{&Ym`jkpCa`z9P@E309Iw4_~l(Nr4*!HEj%?X_5e!_xBc zLkDMKVVr{;ip0(h{^<;T?bG4i&$s3SY{!P29#im%my_9eez8r_*}^D`zbG^SdoR%3 zHqxX~l$VbQD8T}6*{E`%`L(Peipj0a_q_zkW1(_K2`C{YF{MwoB-UO)ii3!!Q0wt} z7m_LNAUv_bYcq6>`B;oqOvn?xPqsJeuD8c!bv}XX;?F+{FJB_0rQsnV%DjFOp}(RJ!P8{2WO9AX#rZ|wMc04mOb1S?^`S5o zi{$~#JHu1rx6?g0YW4euH$jAdXCCqC;dO**@YJxhk^zz#wic)VE}{>=Gh0Wt2zi1v zOK;C^#A)TVZ`;sY#%Wu*+o0NgcxGQrB=%>~-Gq~I>K7AL)xHGcbIpt?-MS##U7^?H zDx_q_`R=h$nw$g_gVRY5YCnFJASk~jb=P$0d(4nkYI#Tc2%fch+pa>mPvM@9Y5TI$ zw?7Mef@*YynOD;f)X0paN9*7s*XB?o2Tx#LmX~qPvg*7(s)(NzyD?gELEwH7@o5kq zOyZKf4pX$gatykd^Ew}2w5I1@uayuR!4i+Uh`X zN#N0|wQuTQ_VFx95}=k3Tg~kfjVVz7Z{Gq{IB84lbMFeh#}{T;8Ot1d?}Xj2FA8+; zJrqeA`f>8A2EE)`9gw`VTq8t+MR|*{*el+x#~*i}cIo536SOR;EKkvm(JeNY-fi0d z=J!0)1701Umy(>+E!r8_k0-mKWA1Z$)aTh_4^uZZq^ePHOP9~~*A23#zuD9=0m7&4 zQhh8UY`*CSlwv<3FI+DHI^f8i)nu#q$Fx_3k0?9nk4^=|NP^=S6aU>XBxvAIYFQ+u zEbS`nz6=qP(D4sjU)AqViJc<#F~dG1_<~lBt)Jgc3NL*KOqLF#om+o!eHmdKqni@; z33Nu+6y5aN7-N-|w!Zr3-MaTLzdN)~?T@cdT@kv(@7@rJlW%=p51>G zatEiq?wdkeM5yTNA5*!x3!7X>oeL8+%h2pCo8>c%S-6%nlGs_#!A4iMiW<06RJsWI(kYgm}k?958Br?AgR8I zQ~#&es5P9SWa4;aSIbl{y%wV@HNP!^)zn++{`h=5cpMa0E7stb^F5aw#NNwY|14}- zL<8C((xb~$`tH@;*xmc)yB**0pkRSS^O96e%{Tn!uSJgA(Ztk5LbtSs;u7L0&+3CH zONqI6y_;6u(AvmbhzXG{N&VH%EwAyPzAUlMDFV|QyhC<$Hcv&Qg#-zA<#UV%0jsaZ z?wnF0xJyj#l4#j6cB!h4wPHfO9+jdu6Wz-TJ>MnYNL$DSQ=fNFz{fcH&eN0sq**j3 z>?4bRnkIi_7h~RP8hr6wN zts;J$lFGVgkFUJWECtbRp1rE4jB*C2cg6OM%(tS{)J1qdvM?4noWvJ8O+4+g;B%3*9vX?~lR?6ILjp z=+b0^lXFQ(V3tll-g9+tS>L;)j7{|Q159)N&7a1c4aaZBhW9ZAFO>*3H}9fiL|#+( z#jd%=3_+C+rWNv3OQUVk;#e^F5kfhY$L>Pe#U&dUepDVJ$1m@7BlU3K8aH#$Uax4l ztj8SsE{NIdgjpZByO60Hr1Q=~c_i~p>P@3EQe5IDr;*Jn=!6mjc4HKVzhnvnx@Kl@ z9UUF56UV=Qvbm6Dto65Z$r#YyzL#R`Rts!r0MHF*Dx7`k5mY$S!h-UKdygt)kS9Pd z`|HoD{!@((&svWn{so;htBSoyifSPB;nYUO*JleTvme%BD!Si4QWuRGg&|MjnJ+9J z%4=FGPE;vx`oK$qPb2_Aa^KQF4Q^T7n|^z3Zge(2yJEsLRkNk=lGW28WKc3oOP5`R z^vJj{4tBq?LU+BtpUY;uFJ}QSYZZc*wH6osIx5tAH9kAk<^W7(5&Vx^Yq4=Qv$Y8rRw$g-iPV9bkYI(vZ1-zIf;DvNd``Ker$I!8wE5ZOz*Q zDC_~R^waX88ju@`%_1#H@o+%!gbq}T*~g8Iu)?za z*BQIxm5b-jP+nukf9wfGe%5qg&kn!P5X(!;PyEzzkXhnW?X&#%a_a!|w$uB(PoC2I zw?WORgCnD|%hL)cO=on?N?bdYI+%~W{h`+|^FaU0XJ31d#bU(&81r@vdO}g7H0?Ab zz{V<=)+n+JSXEl8Rp=3>8{@B(%bM7EQ&o+M81M?Du`O8})?>LidN>{uq{wMM2!31j z9wmWEW{VWVRW>-$fvZZD9wIU*Qhj$UG2C+;2U$n=_0$!Y7m6bQfDRD@eb33Gwq{b2{Xb(zaK#WVYJb*gt-{4&@F$zr?xp?93U}I%YtQ z_!m7usCCVS6%Ki5yTXm(Eg|R3AT}NX&IJF@bM1|Kz1cQvBKZnMrjZf#V1JFr*ef{& zjjCaKwL0hf=`b$TL03Bi%hcR>YFI?}E)@j$tDJqH7ZoTd_|P5ZMaPzbg0aZUyh!J; zl-w~FRZ~N?dZu|9?0e1@dFmW}n4OLkRV;j;<@YW);(i-N(Blpo7ZbT6{ENQtIRx`! zWsXBYVc&v)iu%ng{g}A4s$#7afp(6f!9lF zOuA_LxS|Lxo2I^6q!R>O!VIC%eS*lXTS(2=1QRA<7Gq;G%NP(GoJZ)7uwPt@|hL5Sq5gfdC1tG;p^k2 z8h2kYTcE{(nOfaE_jBXkn-bXhkv(z*8jSipp0!7N4S(|q6A~_M-p(aju*U6_^ zLVljNS{EBO`O0gP*2cH3!dE&%sOO1zqV5m*bIb>m_zv$@5-qR`$3yPEvB%LeEg-nH zxj9>-tBX2kh)*HzLCf5ON+<0MsStr2RZ+u{eF%wpBxxg~pqblw74WVV+u5(kBQv`U z?&|CPFRF@BDVw=;UR?dn~vtyr*gS6HXH~9HudoAMB&-E(IEu)d^ims(afn{ z{Enix!P{c4mo^KpDLGruHBvTf9M-=-?xDGNRV7LeN)`wdj1#H07yUYNn$+Z6qknYY z;US5bHJ{V(YJm3O>E+5-Wl)gZUu!}O6HI;28q~mw5r1NU&2;*Ui1krGiZ;g6->sc2 zACS(`4SIF=ZU$z20p2ESPRR5~SlTF)UdYm`PJrFFw_9z^2}C1d9nuW#65O=R8aMAR zKhAr08D~vlo*3^f`h9(}K-J3vWE*BR0z9Y}3`6Xpw43qBoYyw3h)EZf6hKGz@$_#7 zaaL75DCO_2AsCqNfsR!YzEb&Gf8i6|gebP_$#ousp->-2K0hs$hR)~s$=Xd4?A_ap zw~_k95kq~q8%2X(PEG1L7~drrsrO9V{>AjUXlpQdFSX~AI*B1wBe3xRr;@opQQ3D-|-eO*EytR zx+whOJ(Y|=h^EIN*6wTZvy%JF4O~1SHa80S2S6AQezJ04|MN3WeM;-;sj?Ph^i;_tl5;=|m%h+cTl);OJ z@>wNAArc9kl~+kdaK<+^>9zL^n>P8PEZrakeggE|(nI$-)UyGJB|9|^@hf?LO=H|h z_1Vi$GsCtd)LdmaytsT3PotGYxfmgCDYm?S>ylEtx;D>~Lxoa^^&tw!aEIqOBXC_E zx&1m+_70QubIzMZA7Y#reEYIN*<}<6lL|H{x7| zGW?bY)q)9z;MMAPzap4_apQ(%tq4$0s#l|sYZFK9Ou>Twm|VA;0)c+~;(ycKiB3GD|ZJZ@SrjDJgvr!v|}bgUz#xpqq< z?k-n;mV7`4owlh(mY}@F_CddtM*PIt&N)iMw;{Tq-*|%$0f)}72=;DWdhMMAUel+id)}RzIUTIj>cm8^YJ|QK%Y=CSm+Zmc*>;BQ?=#z zWau>h~7cpyREMZ=xD!Y{kG1&$J|7v-U`{9CO;Zu=+ zrzrVIYIS?3tH9~a^y3Y zmm|B}Io8f!+Uz&_4uz^Dq(NwCehsxPrhAZLU7tTDT7H0z0!82WsKcS?0kSpEsqb@A zU30<&j!7JM+>0f5>3t-8bd|wc{gbcYV}iN3C~BSxfydIbfGeRrK;1`~kqh0kHa)-+ zruzf^GTLIqN&4r3t+*nWeZgnac43T|dl{dcwpZD5U~a5~*Cg@4nJszn#;mwh#E>G{+N67c1>+Gx##7MhlKCo4ON=Y?X=As_HwP_$b zb&T(|r29RMNxwmzdYt^+uM#pG9&Veu?g2mC`(2vu`GYid-_P7gJc*j+y}BAdM)&{7 zAm-GLJ!uy3(oOqQr}Op1A=#2(FDwRa-DBx$=+7_2h`$e_*Mx?yALC=C&f!l%K`;(v zu`BdP>K3#>oVA4D6dbzk1`=GskCgl;Q7L8f16so6BKn%MG#jvcG^oO|$Io zA=f6B+zf<9`VL zdeFQC;S#y85N`V7CBi+28-QlD-j%)F5A@@M5g{=~GQm)Vcv6 z0=9)SWE~8nzoFY}VUp_vq0Pp=;qI5aO86;Lhw`lrp0YpaU8LFv5P}aKmF0aniwHg* zLj#=F8?h#r?eCxCNvk)13p#E2Ac5&Fv8rveG*}{>)?v#b*0)@09q$Wy8+D1{8%WwC zi}$=C>iTXl{()RL1_Qo(^%wl~+e7fD2I-`25HrO27~A|53g_z|7;?A8?u&oYj;Ceq zwD6UcK0S^x|BF!4m{RBUhEd#?UzBrp=ng!>zJwh~bw0z)qFWE2o^T%*-CX140xzlK zQ}BLCma9wDb05T@r8Iu5wgD5s^19v+6K(n5oQP{X`gwZ;wCL!H%(*`#XPaH7rkW{j z!Y=^4B%CT*HEBE7J^nwYjNt)D?z(N~&7Sy>K25LO|EhLLt%Tt5u<<#uVyAltk*u<8 zN!EE{ZY;*_NLo5;f4H!eL6oYr`c8imTvB&GPAAGTvsR?lvQ3Mw{Uy&Pu)oY(h=TV! zpq2$C*dO6BHkH|aKSX|E&2#+j+Tqjnc56c%rB~VEJP-Mkt<8~S+tg{Wq5#*Hem1D5 zADRem;MpPF`X2XJiF9xGSFb9_somS(gwTJr5^z>63ci}lg*^ObE~i@b7Ro;N{~ClC zc>Hxn1K@Q-xz7aFVfScuH2o#k_|$uBsQb45YWQNS4ZM^Lzq!$$J>K&d8?jDK{Nc}+ zqS+($s%5~WHlqwv?ZD^~%}z~8Ghs+_Yxc!V^A*&Hn6cme4-^E@ zY@R@GD=k8?Pp`1|&8i5gQ-Koom5*>L{N@TC5@04Y87b_}b(0ATnXjIw^S?agjzm_q zEq#}ie|vCjgbVF^0qr;zDQ|L=OIg^&RabVArak}l%N*-fq}7djF?&wf9@lf&dL|%p z?Ww8vrempOW~Mb3mgMSYnFIR$jsg4)(d?{aEzFC~ahbHZ){NtV5)pK;`S69+ z=q)vUP59h#GP7cc>;h^;xfkbgkLNdpTB922zBZ>W()Cl)acp4J?z%)c=&{PC@(}NN z{7{p_WL?whjj#(3^GH+1G$~>5I!RtAlX5K?C-cy_=TOm!Ng&_YZ=ZebAUX9Cw!7G^DK;zild|X`0@o8K>iNZ((v2tA* ztyz&vv})GYC%n7vB`9d0RW9(6+I5!9^~-exo~`ZmvBElEQfz&V?7?|IGyjfIu^X>V zmCil2pm9h!SVG3p5D34f#h#z%UpUJ{M?d9Ac%y0Wf)xVwOJ#*pZQKl-r7h#`cHOd+ z%UL0d`!c`O(gZ_@!JzC@&_2|aCZ8hKVLT-hmnDu?H+ z7Mq~{!?YtZwzb_-x9!$P>kyLS3G2KmrIbC}>P)?uy*3>w^ntcRh`rZ%Wa2+^-HH85 zQgvgtm=;;6x%@J^+^|9$5DH)`jdqsv7b0J6GUEa$oArLpf?wgyD7Bo9H^R=z6heh9 zyO%qxbHsPOdC-(b*8BxF2Le%4wZF>3ugAw*Zve93A#1sj#}CZTyr_E%U%72_{Ad_R)Tc+aSjCuBjXXC(&HV? z-#8#G7(CTs@K@mCb^Dt4>53nCY%KuNcDn4QF=2tg5dB&@6pshNsy~`J6j_S_BQ#hg zIUZdJU(WRaLG2{RZG1(~WL6l01-J;ZA3tCPdg>{P;O;WPQ4(ZO4fH^p|N#XYH zDLd4qeBe}Q=kDFsa5WE9m7}hbDWQ7#95uY$70pWbbz2qS&@s1Eb)&_P@#P3yj0Cn_ zx_;52@c1!?=Gg-v*dde={D@B=)`Yr;43>l0|2fu=e^^y_1^`#YF8JhoH$Pd6{f!7YlQEZl! zhc2_NGLGf4M*___gQsN!)tKrxiE`;|CVCs1_wg(Kw-P;F5A zuGb3|&6kATyB~N%`#9(@!BqCAj4zY+4GIP|wNkU|0&*RCe#NCN9-h+qwajHoFIKB@ zq$Dzg_NfI#c&6fmu^axyuofVYGfGo`Pf&P7pCk9@f~4v_ANxX1u4`j#O_b$LyS<)Lh?ph zLARV=UpyW!W-blSVmN}uB2xoSLLu=<-hwZ(-BDlA;T-iY@D%;g2*Ut~9*pYCB|ncm zIBoR>1ofp4pR(p*)vH=?1Q?QkQm3?p?(u$kjl^;<$=kze5^4vRftaoPJFYwzbL1?naKCi%zur5b8>y-YcQOp`z-I`x}Q9MiheUr9?Pbs0d}%apJq zN%gRYvmWFF5(l_{?PQ;Jj0YTw+kXd^b((xnj2$@k*?BSZ7P-?0F~Wl!sl~3!%m?Bj zfO@*yPt4NYeQlw4WmHd&1Gjhg)lJs91d={`{{oW&P}r9{biR7G<^6+yiUpq7S|`jp za*0U;aG-7CVsN@qtXsT~wNir>2CV%`TpH^rX^ZIN_G6hmOEi|>3Hy5!Nsf`zy!rvU zkkc!Gy>yHIBF%^#U5XL|evBO5WG)*LB*7p^-Xyo{LS4si-ABzqyoc`7PuJtOzl}iO zr+3S_GUv>55KP|5yo6V)O3>J??i$Zaq~jAcTW=Yn6S)!Xc^}ik)(geKd_0@M`H8O1 z1?hHBmo;i@lOy?fnPDU9ZCZK1q2kH{SSAh&x}!s|XzcIdXw15JpQoyR!$&yF^Ln0S zZt+W-`l7oq0oW<2KTdROJwuqjSM=#qF(w*Dr!JYACkoFGj z;@sT-6wnWDs+QL~>`*q`?@= zW={slM)bA%2v6QX5*L(rngDyh7bb2>#>`nOqvw(EN{Y)M_8nJOAJxX~SXm~Iufyx{ zC^ERXXJ88HGUN6AelVd}<01h}=pw$=4B>H$m)*KB8!Rt)n7y@eI~sZc>VLRw4?&Ne z?oPI)C<$Z{LJ4|&WPf)2PT(8lLY)%h`z+R*6@y93vL_Cse6}scWc+g87;&m*D@Lz# zHuu)-F;3-ThSiJmM*WBK^a5|WH6!Dj-q9tT%oTAwa^euIuu0C9vDZk$&u~1uki}X5 zT}~VARxq98hky`_pe!e?>lr%PS_R}JV_}Jw@W&-#6ziQB2rG2SMku=uEEQ9bJ6edT zOTv!Q>3qQZ>DJb&2n=XtEI~!-xkycNxyzjw-b`6wK2@BPgz$qT=<5uD`i}Ugrh#&#%Q;FdIWYU24pdNzuC$*sY<&cNx zaK54_+To{PCc+}X`XAiL>_%9bv@e{`N?fAdL{MZ~kF{Pg7;dlgZcFEYZj#W~u8MZt zfSHh)VWE{9Q%;I2YX!r_E0AvBtTnB@L9dUdSu++@aK6AA6bU`snz=LX-coXTAbwY# zg7#3~jj*nfvO2~;`!RYkmaYjS+-~}PoF{9vu+O`@foW%|x46=4oU*>U#U`zCv%Azf zj4lfxEB|o9AhW?hcY3???qEx^@BW$zaip^Vj{E%ct8h2R=JOLdp;vnmqfVWryCKuY zT!#;(w-4P9b>Ez|w|*ZF<6-$#KS34bF5nPDf3Q&7Yd^;?NA(y%TYo2#U~vA>MP%0P zar-(a;0Q1L=?BU^^0e`|h0VR99hP`7CRftd9V@-?!YWy})ZC5#=dCU1|+_2OBXeunYt0g4jQz}!}#04 zLGbOD4Z-&fj-sFd+2m}4a`KoCZhe`|l!z^L$WQZqFaO;;Wk?*e!F>HqE72P$$W6}t z+c-Mx@w3QtAVBij?*q4lXiB8H2@0?3!Fvf7%iC>l*1#tIA#4BvvpPq4w?7lr^I@g= zTohXB2C)uSfELF&8@V}q%~thnrzhWfKh2hRw%2_;03O{M8K;>73uR{Kk&=A_VA&vmVrR=O3hfHAvWAwhKQPIZMch5cI5u(uvz67y;CNiMssia&I$J%S4!|l9V z#>A5lZt{Z0wYDf6oUVba#;0PMd_ z^nG2J#b}HIqm?q8(TY}xR%bZ+m}HaZ(%$RQYJe<$?I?~Qa2P#$%p7HqBDrc*#>x{r z>{7MBmb7gS6UKXpbpqQ&(g(x_8+;bo)ZxQR|6(rmJdV?G`>@Y>8%4&M)g+lkKZj98 z!CU9d!%x(X-T`*+4_A{=D)BRNz|*h=6;45SJtZIO;5ciClLJ+*hvO_AJW~d3*)2DmYVTmOW8cMXaP{;AzDOsYe&}S zzxI9?NKtmb8s`R7OIA;5V__LmdbfF)(&o9|b6ZB%bvynoVx~)KTs5Dye?D8% zjcl35nuaPexFjyw`I*w)-P2PBX^pM>m_11SDtfUgvmm?W@xJ-}ZJ@-`45};|U3lUA zzSu#y_vc~;x6dAZ;|^F2=;U{SZ%4n*D;)3zd_t0G`m*hAt$<|}{Y~MAQ9w=Ekk_pG zz4s0#8Ciz^{h#;YupeZQ0f})iH0u$&FmN?WcQ#QMHQ)=D_M<;;hXor*!k0#R&A&f5 z^T5$D4C-KX>r;==<+q3yE$OE)EBf`K3^UgN1lM(252@9#Kc{o3^=Nl10cmEisJt!!VLkc*Ke!<%1{ zUp0)iZ%Pj{&4Ms6AmhBnbv_DKjDEc`QJmQyq0I^kMFpc(>g>a?`JU{vk8}v&kWRaJ59aIVZ;oD&+5I;3=jL3s!qUzSH3&$kD~fcbhV@@~dtv0Biv#U}oitnu zLK+ex`6Nk*9faLc_8j-Sl zp|6c<8frU_{G~m5k}cu_N#+SA)9Kz1F0r(%Ie~ z=XviV$*xWVSHu|Awjt9!*e3PlL93=9Hk3Q&hklFR1*V28^9rBfT}ne6shdK-NT;?0} z!t+iuxZz)J)yG6TfX5XeJSDM1q|<$xbJAkoNERACAyNp#eNN%y3V?Lj4gZerN_8T( zWTIbgsf0wJ)?J{JQV1GHwRiH;$J?8Z(p>_V8{#@|z~lMOjrq=JwRInBpg1%q z-%{CDc$w4p)4pK#JA{BIY)bK+NLA`*p`Zl{KkS^YOf#phqdPN;m0gqQcy;slW$p9T z%ps86GV-ekn6?ZCYHdQ7)9%Ao4N3eh>{ikYb+a=A_2W_Fdv?!Ri*`Taj9h_r0goiV4($HZ*#=>zDN=4h!|sc&%a@=Z zY>7qlL7nWRPA95;i)`QioMiXz5g7`dEEz8PSk>lANuBRh|4C`heE1;zUKJalkBA#(cl`o3*MlEk+}$?9=s6-FKpC z@l1_!71uAjI=NnU6=l=$T$%HlWe2dMEa|pr>r%`J82?RVu`Aep0Xu8KdG3^dCT$WY zS2dpcv0I3pN3ALY)1$o|Y+1eS{bW|o9CGRi$H^xtwuloZT|V&0Ci6O?OATQA8qQq;MwSD%Ag zdTC%)Q}G|RVp2Pl-`a{8?YCn6{#J)xq>$8~{4r^(KXa|GfApkuh!t($PdhSA7n#!p zJyRN|%g5ZwTP-)ftCpD7W+4;((UlfdrqLY%$T^7)u`&tgkxB>vo*;SIh2(hb&^ocqn|^$`lUu}%HK$FnOfxd@jp)scjoc$t9E&x{gK9I8D&#@5ws)sMLP*q?S#~#B z&y4=dg)efz6Oq_j5T-RX8FJHLB%kiAqC9P7g(SLhf3C#vT`tX0|J~E>Z<#-(9?^fE z#gQ`E&22n^^LZ{VkM9|B#VzI&t;jrl`=}*>Bf>As^i0MjAB2#I$7F9a63~~LiD}mY z;PGAJ;D>sVG;v!fqfD=#4({gvb z4Rm;6HrX*%U>?4)I=zmQpY98m_{K+l+j6WFKTp%n(nl#0Jk(B~y4fp4XDVKVlT=1J z@7b5(PAh%S-uwNKW~T~Rg&EfHFfptpFps@&;@h%DlK!!?WY1jCASQSHj*Z&DrTdQG zQVZowRHmtKA_@BhQq+%EYqakh?3ZJTxJygFPgP1JiF)Lac;%2ie!`~VZ>Vm>5n-l&v1$ta_FO<7*6w2UN6K5x z2d4noPVf0;2SsR=ue9qp25$t1Iv5glO1Ho1lg*Q}xsTWhw%$4#>J}3Hge%6>8Idet zR{66jWDsGDjX$bc{2HCk(*Y7eG-vrb>sb7Po?4bO?BV=EMzCt5pTC2z?At&dD@g)< z(_j?6FU+*fH%s1up!FjMSXlkV$zX{AQ@M`~3*C%AajT<%%)Eb`_hLc8a8x-}1$ZdP znEGT8lPrFJe$B(GNxTzZU>d{?I3I8Zhui=nJkR%3E)g&k;bYD(?uik`OnCq!?unuCMTi@{!V6`$J)@4Fy@!z!gvlLQ1* zy$*WgT@$hEfCxbX%l|`L;Kg(aqZmG4)oS8b|H_#VnQ64^SR)jn_vf^kmU|f*M^Jv$EyVz`&SKXPuC{ji9lM zeo2mEzMU7hE^?`8z_47bxQtmDF^fR;R6IJY2Cabn3vNV^jkP-EznWBRzCB` z-4}LkEa42kDf+LxKM!;n6lyQKPIq&9Pjy=*Ih%uF05577&(f=)96#!F5slfSj*h`H_o1b;{GZAmTonN@o^z=jWHsx_=Xl5iTOaXtv{W1j)-SlU8_sx#M;7`fV6+HQB zB#o9uz)^&pj#HfI#k%QT!;Hyj!kba_+fSUF@c}csu#M8^qKBz9jK#ndYrXzvd1)eHx`#AXtSpX2)`Jrau1U_*8 zuFWt=9(hDpiP>v$p&`aR9$~UGrlj7R)Fi#{Da$9;dTptaEmLCL2Om+JwEVnyyib>Z zO&3P+Gl+Y4`kPKh?OUh$PfJ{3empj{fPqj z>Y!${w6vn@@69FI&|Da%8QV%ZQFPPl%eaDvZ)Ke`uO)~EhCf8@QX^d_?tXI*GSlmb zaSmK}yd4A7_%r{3pWD-m2RO!ls@o+tKW^5kfSvQQM`mcoUz|W%y;*7U`&AZ&b=kh_ z*lwWQwH?CWLORW{FK14$r((Zns^^861q!1xF+n&pGc)1I#NCIutvuSwYwqsuhKgV$ zyZG#54Pljq*=B~fEBYT~T@`c!elFvfbhv=U{`#&E{#n;NPLWtb!mf4D+aoFSn$i3qh49PO zZ<(xu9&Gfp)UUdT%YFMi91v>Whp?VFB+fIT_VE?D}{{j8FZ3)X$KbGk$reQ(ui%I;yJer{b3QNS#@6SxuJ%ZUN*{Yn!sS5n(DD3w09 z!pS0NHL6(_jr3W|$VyKB&(3K%Z|Yavpj#4T_FH3dzc*7a9`$G}7fMu}J!QIjzzb+! zxpL~-#;eAt7&7Ka z*dEwBw7z9FN`Espno8n65sC~}b^=QH%RW7c>oxjBO9u38V(J>iqGNw($$4T2bbYb| zu88x&1?4RcajZ-4g)uaguX{Q9tJe^;l#MyiPz| zTcDx$es*K(gD2Q zZNX#{LF(=z{eh|$DFfCcJ8_pGIZ5#+I;)lB6_uRaATRn?t`yD6qT5F^hRS{ooeRD z=n`7RzAq_nT^pQ_4h==pmv~xBeoo4?2rW09U~O$Fj#xd`^K9f`@IoHVez7|@0cxMz zP3&qR0~m!}>^9oZ_qcKVe%i ztik-88zARVMnd&Z^0zSmtNuFBFBK2%A`^g-2@+V;47r#ENvy1jTG>Y+dZZT?qml zzQfyD!A=`l~R( zbFf(ln`-L5H1VXxe|4v%84Dh==s$4#;Br~UIaug@bsAsgzg=<1*ty=iw?_8ifUNaP z_#5j@m11g%pQv(WmbA)wVMoRz7NN&;BO_X19iLCkCXp=PSMEigM0HA($A=W$?HJeA zk}WYe+GO_cvBJY6dnLI^&oGp+#v5!MU+(PEvYDV+$RNqSsorx#3RyrUaBdu}l}jGX zO8b)8BuqwtPeyKcDr;E)!OacSru{AmK@!hum-QvslS zOsw#b#t}yIxp%^Q7wmfKKqm$7=8;1*6Db5NEv=z<%F>CfG_yL{;IDZj8rJ=lm%5$- zHq1A)E2-wxh&ru;=^EKhMZDqPXm5 zJ}cc*?)pCzm4GXyJlN=STY zVyDh!g@*%N=~x9__JN+HZe;& z85Q+ypp!hx*eg8~;6N?w&xLl!VfQ_0uVs65TXw%=BuXZf8OoA^1J_#7FCOe z&UgQ41W&$zKX^OkE~;DcCu)|X`h}iD=$Jb`S;Rq5u|Fyg7wvHBjLR$>B3gUKNeaJP z|Dds*jxjWdJjV=$7*4DZonPx;P__sCa{c=X)zc$GK{Nrw*@wBb=xfd*`V(Enlllt2 z=vbov*Ro$i`b{Ns;Ti0vhzG&<_}_Dsh!LUX>V%Tmer>bwmDBANoY-^;eh91lEK-HPjGt zSlPze#DCwolOdscPT%l(tsVg>YV6Qb>q{uFus5HSv(F#{G@<0Ddh@9Jyopt1^A1t_ zcJKE=_~}D8beTPLZ&%5^?zeSe>dUxT2VKqgGgZG|i;LDG2&>EmKj{-Zk-qzp^t$8v zdpXhMCYqh-S3AYF!)ld=mJ!9feT|31>Y;ZARD}+sdYM^1UVAV9V@vP?9wE{z6*V# z;yP)k+^cKJndfv^l%JCKTQa7XpT2&xL!1sgWhYL@V<{ixR0ozTpj2oFtkLRK zoJtnk;RkRPo+>dQZC|d$$T@>j!d@QCc-8u9hkclzkg}^M4luA+yOjNAOWW{oodx_2 zvenHU&R_owd}2GwZ&^SF#QDC1Ga7=G^?wh|8+V-?mxFoL>prsdPgxeBd&Lxpd&RLM ztolCkZ$_~uvcvW`LfjR(P1razN&a=bcE4cdV#6Gmz%2&2NcVZMx!mn5x_EXyL9?F` zu|l3H<*UZ%?M&RUes9n#k~!uHyEUrrKp;5c$3LV}R{ydu%F4=dtenIvj;va1c;9tc zj$JLQfAOYOoRV9mSDwDM(knk@w9*5fvRT20%w24E)jm)~eq|D+t19ZsGFx#fTkLy9 z6*H6HA(%ow>%~%613WdhGHFw=#xtF-J$T60zmzqwFQgg%pVowmk>iciz<)FIS4J)tgPs1 z*}5N;^B-G*K=h1kT@$q~5V?Q=@~9fH`i;41T&oDuF5~R{d{IG2aEo$60`eGz%M~l4 zTWXC7y}9F5Z6`i^)2tax<;Svq&;v#HS;ia2|FyXs3^9_cEcnPAJ#9a>(Bp~KIyA?= zGQc9eHz5VA62`Ed$-jky+7a5@aaYKTn~ zP=*92ttw7!ycn83RMRTOK94pep?Y$?+~dg+KSUL5ax(!22TPIi)uk9{&KwuE+DTXJ zjVBA>dNFV?%!j(#zpp{r<&eI(4s}z68e@*30ODf)+dLxw+f$UkJryu+kF>E6&gnVd zAl8fiy}4LgcU{waQG>9TDAg(;Hy?VL5$tQ!-TE&tF3i@sv$a(cx#ipR{31W{vzHt7 zzKEM?upXr@?6R0&mU(9=OF; zSf_ei6?yZ5YSM`TO~?}s@M+9%LMv=SD{UgGiu<>Vuf&XSF&`;-Q-@X^i4hW~d$x^? zupR}&2mX~f(Y^#_$MF3swM`8QB=@JDpHX*9mmAN2+t0ao>n-Jj3{YctHf4C9lrhKQ z%c2Q&QuO82(u>*u5T7TyM1;f}eKDz6OgKA~WvHuLt(VB>uXlr{|2R=Ac&`ilo z3=Da7M?`oI<2DocLD&;9mO*}X)^@!APH!wVIzZOgI$*b@AItyse!0x6_U?Q)x} zX60aqF9;zgjC?O*xl`tMPRfS=$U)qhD$1L~H-x*7RWmugDr97P;i`}5&8b*N19{5^ zD!6y7PK83}iX*m<5qBLzcE`HiIM_*?IseaspJjxC2s~!HtqXVGz~`(|1#=`jl{g1J zVGRiF)wu2Sub&hO{=I788oT_>ui7~x9Y+ahlrt3&+4J;Los5fg`iLO-Qt7|G%{W|Faf52Ls$dHve*O zlEO7~C8xN0NxFX=o8`dK8^8r$n6IXgpw~*6!$vQ5b1}wHa{e!}MEw_8Ea6UJR2;EO zg|f#Xec9M`IUaiOALhQPO=Wb13_!5l;o9G>N<>W^^Vox*rl;%G287qac@1AHX~fY@ za3FKSH&L+x9WN*h~ss8o%w$Zo-(9wxkKda z>T1;t4~&~EiH(kyk=9}vnI+jh(N}Y5ry?basVa%sN`%j_!@saH@$Zf6)Bl>_|BP>9 z$h}H!ThO9!=nR)Huj(grYMT5@I+;@L05^*%Gu$k)aCd1`!5nUwl7SmK-ny9aR$Y~{I1*}{+0tYZteo5Pl6;9UL@^JVq z_NMD%$cB)(vatqu>^VCp@JCuJMTw1r)Jfe?3f>hZxJN`c>HW_#pFRoN{o|P9+7=$K zMhfYY-OicM!Floyj+`|n?N*sJmBkU8$0@`aM)^JtRCcN=TB&(S-$RjRGBS%gYF4rH zn@CF6w9Rv+3V>c7T6kegOLtLs+0wIb`iCxD6$iK;Qe4dQ65v@wU$24DW-WI-??hCw zB=myj)6z}m6Rt(?l3Nw^J{Gjzyjrac16Eg9HtU)g`u2j$u34}!L(XnLer^#ecvsuG z;kU|J2(Q60B-NPB7SEJe$Sjsa5@s{)A-5f;XUAFdMrsd!McgIkxQAD>JN>!{WNkYv z%#aT>tJ(d|K0mEw*g%OlEh#l*R7>YRB_{{|hSA&oRL)K6c-XH8w}IE!dR&nBRL|Ki z+>hXR>+Q$zKZIbMBl~A3J7AwBBJTNN!4^7@sIXlus6~z+U->G*bH7#Fka^YABx<*z zeC9COYX=_-?OLYEgWz(h@%7;?9^w66AuAuj6`|!R0>Hi`VyEdl@EkK45{N+tq&jaG zC-a}FB*}Q2TkfWtQlR*_=>sJ@!v#f2+R(2lM!nw1E-4=w{y94TfmJzL@tTZ;G`*H0 ziOR}SI8UY~6D^jGUK5ZJxfrX`=067Ppq@oRVTQUZ4m__6-MA{MDgO*;<?x%B=dL_y8Sjv=ZK~2!~E zU?CS8;`;|)rI}K^6%eqpQnq9=n9_jhO8p5#9`ECEw&IC<#T}6U4cRco+-s=>w%UTH zjiObIz$BcowbZ08uNm_`j-0Ts&F^O_VA+3mI@NRwc1c1Z$W7v6Vr{x9T0G3GEQ*#M zCQX$!9h2CRv2tU|n0-d6#L0q899T}3@WuDvCNljGVvJRE6ceVi441!CmkV%-S@Ebo zczIs1R8QO?i}w0x2cku}zIF`FDMr~mCJMROoWNxWyh1@5hz|ur5us#LNjrkBxH6`J z*tUoI1^lc?S9-IaKS0$}&&CBn|o94!J(Fpas01shBQV-=NVToshE+YFU5`@q9(jdW%rh9e}$U*qngUz z_gHkbN1N~)lnnoZPveLXlpxg98+A1a3xs{Le@c%=e_3rnI)VGH_BZ_H%Lr}4LqLEz z5liuR4jC5A0>VZU8(XhBU!o1`jx}pVkf2B9wPAgU4Wj*H@+~!N`>IlJ3Clb=-S2Mm z)ykjrrcVS0~IUqDp-{$k}+xKKDq0&%q$ z^|kNyAZ1968vOxM#ZMg_?H)ICTN#io^-*x`bYUzg4uV&@E6`b{@Y^`?+d2n+HlcgBG$iSl)8$R_wIagQ3;zH2 ztL(9VCKB7@*nsfPoBm_Bb#%7)s|bL>Enl0ve(Q&IVYnMC0Tl%BGW+FdJ$Iv^f#rh! zQIgR=yiDaU<8knWj|0L%=VJa*ugs(2DlX%+0XaT&r_qHy6WU{(QQ`_;P4}uZsI=Tz zR!@E*yTrJJ356~`QFqFO^wuC0=d$EL!V5{P7G7-A#TgerBQT`-E{}G8EWOCAVPC|^ zV|KQj`*S`&=Unk0($Au~pPl!3);l<(Ag%BO9yhnn#`|t0NKEn4e~Jaw5MU8Mp?;r) z#B7bl-cqu_rNwvkcMWuAw9xNA+-YCrh3~}ac96EYo3IK{f9-rAezs7g-)?YW#>Q-+ z{S!b1kR0MZ^o)cM`BF{6!|}FfZc;idD!&_?A5FbK6cM9A%bS!Hc?HOP^M>xc=w@Bg zieYnxw49T@UX}j9e=@XS^9OeyP?&qS?%R;KSEH;JERAVx^o7>6q#RTgOc$_Zr8|Yq z34a_ql8;;8?6{>|m3^SM>3L5YxKK7w3P|ED=U{_GnEH#!2(m*Dl>Z))Ij4G#Ym(u+ zg}fo@D)s-jWk>vTG@v|KtR0f@Aw<-`iaJdW91?rPtZ8%&yc>g))bM?lc(z=GA?Se! zL=D2}NWzkv`X$dChXuJ9ul)5ZC1{846XbU=_y;01$d18Xv=L|@;b~oRL-Wl@P}#YPEoSUj3JxF0$aOpIrdJ$+l~pn)K7z;z zL8#9f@lpdPROKvi!_4o~DM=Z{X6qRwZT`@d>wpo9J**`)%U@`wr#j@-rWUVV6ai1^ zolo5aFa5mEKgE2FM&C9OLR%T9!M(n&gzouqJ?I@-^ZBTH9*ch|K9H4=n_T_ij@o!% z*9cmcFd?aAr==bUd+@=NTX}WwtmlZWJy)xL(IthP=tu68$yFeImHu|+__d)sfw(=Z zSlVg-?{5(*0<|{N?<;G7FMUoj@g7IKZxhL5>&GZG(*w4iRknUgt;~Bvt<%bdTRKYT zI1|b*c7{Vpw6{2@Y6UkEa?KzmEbh&TpC1s-~GViAkdF56Iix=>`jn zUiL7xW59E_(R-eh*-5CbdxgRKP%{FwYi@4lUB14&JkXYxA1rLHN756xTB*5@tn_@X z%U~B*&kaYuQ0TSF|L#lgsw)4vP<$rtJ{xHD<)51={MkzW4eiD)yy2$Hl>2BYED~rp zEuihdQS+9c`?Da#2^)}lpsK2so!x8HZKju+d%ZBWZ&x&8WSVHWSlCq0Qaj5BC)1ec zV++UQWJA|){%Cr`^Mdizl@+Sg%F@pkU_{RA=@(8c{XfpWI;yQ`>9<&+#i2lPFVX^~ zXdt+|mjXpvTHGlRyg-Xfp~WG%75C!q65Jtpu;3m7FTL`;`_{VOKQHU7z{)u%d$P~$ zk>AXoAtn9^4ZK3k5%v{)5C+2Sqx&C>vdMqtZcEa@3VNW9w+m*&UOp8~L@(o2j zKk;-A<3&{o{-ip}0C??}!+DR_(mZ*3MWCdT=ut~15A{l=~_FN6@8 zdXzYGu3z#~6jFR!nTy_NnoxN!`R^rfMsV!Uz7K)v8wSI4TMbV?2w+c0quYBrawhj_ z>NLg6eq*%RWBGH{O0C6LkPQTk*Ew2Kdla7xA1`gZkwzKg;DyT0sc3%s3E)hpu$lkl zHPHnvss?>iUbB0)r`8R21_(iVPs^X2WPud&&V*CMo9lUng;!d5hHW4Qf?#) zOVD?NC~&e`z*o`r$;AhI>#*JapYAmh^f_63YOS&nNi|!wq%A5%1PNE~b9VWthHUO8 z(uOU|>howtWzOv`fD6R=h8Gg?#XYyh=Tl|dbwkdgL77h=?fV@oitj6*k?mU7`HuD6 z`&28gHYiRxOFD3I-L(>jgbFps2H8x8v(9m$V@rS%l-(n{g?h}W|1hOW7u)p7m7(1E|%XLg-+-h>ngf`%R7dI)? zhg3v6uqkSTlO8P}!pGnXy^A&>EvPz#s07Hbl`*H3hd!lB!ClyzB($F~PHj+Y{rR&; zC`($6vI#aV&<`7G0&zlN5o7#ER23MXtlUD3&b@YpCO9f0uGg>kWdP z*or+WT6Viqh7bLa$gLC+nESU zsbMt#h2>0h#m~rDH_ho66-Z{MRn7YXzn4#+RGrakql{`b@n4o#?@2nEmsDVYbum~8Zhe;V zqF`7r#YM4teBxa|md|AE#2>5Ygb#LCKHOapZ_VXkMJsfNn$jmVv`Xcgh4 z`v3qo%HZ5Xa*gLm37*x{&EyaFxpw+VSiUM@4SW_d&P}jP9{^3kaU#dMk!f?JsHcdU zUxk6cc^@?q@vm9umYBM=pf*>3)fySt8W>2pBM05@p_B?;cukZoKpO}}k|5rOrwr-L zl<`LeJ(4gP&W3N??%7Y7`Y+YB9D(@HMFEQ_xQqR?#HX2W4!tCC=dr?~DB1t%`NP|8<9+@2F+BTm{E^3M&G%Y`RR*2dp1KTZ3i%r!=HsDlH&SKp$T5wb~nr09T8&7Qn|mG3(G zdC3ae72`pR&=kV1R4sKI?7HJ!TEmknf#e(IgGy}VR1u^J+?<0TcX9%JBVeeA?wtfDU&Hs!nPM=31E91(I zsBBP1q8nz~+P*sdaI)5n)ol6T{Y!UIY>DDSdD|mobSb-r@+SRE>6&L&J$C1c&y$rP zuT--|4=BUV4cpC~+oYJTDBd56tn%oM((}?Rv5tte$-WzrFfeTX%AqVK zhf-2g9Jg8M`EylF;7zESVfDIrM%bIcS2Z#LkMH>U%gYtcOJe?vqIwUUNJsQ@9J#cN zY+dPIop{?l*M3_nna7>JIJ_;s2Nk%%>US3Zz7xZCc6pP3t9hfgxT~P<8&e-!fTO;D zHw~D_>qFAhcET04;&kcSv@mH^uNZD5#PPyZDBkGu!V2nMX@n|lhB%r!cKP|Q^*m#_ zZK}gJ7fg=DRDPYCt zp!B03C`U!|09LI@MQZP%p)F^~8K=)31lz#ZAKicZ@ixJ1m zp~9_Y%}b~o2D&^#(}-EWoJi;ayQ{2Yhx1?m9DL(qD(>Cvh5v!~41D!rlNATs17)Q9> z3&nlWl7|Z~39}T1!Z!QfuQt$jOFEfD0}2(t(?p+`AskWGS!j^=7hV4H$&b{(9Scv%&@=pULgsGA+Yx$5Q@P9JNt*AaEebNm zw1d;2G31|km^Y6fHvdS_?`34h^RgA*42Gk1&y{J})C}1OjfuJv*oHpSl(){qh9C>K zQKaPQZb%tKWhLmg&_$T{%eIe=34yO~bKVFCYMC8i@DnavDs6@w9S6Q1s-AvVsCiU> zeNzobXoM|@yTLhiKU2X6?YK^HMaf1qWF4MLr|i+j^R&7#Q@Zk}zQ8msKF zzMqRxE1w6T+#7P}9i+YdwK==T5dJl-nXu%m| z`JhI`kyXj~`lE&T-n5u|39V2hQQ%8)9ww%?@q`U`?fBb=#NvHQ zqNU5z(?e~!zV58t5|Zg!{AKQ2hkUFICM|_Ltd(@u|BM41R$O+R8DeL+{f$VX4)SsG ztza?HAI%@1#3k~`cQ=)Hp!TD#O<&Q;HX}LX61m=H_zx%>G@v)AvuWz>1E z{aPT;bR4GeJo^QAO2~CXHSyiuPrQv?nu{8@V&ND!N-NvzJ6Fr=`BuU!xv?azP{b!r z3DLtzN*c7?Gfnz$s?Q@zazZps-#X~Wpy1RVj)|9>d9de1M1OLstR^eUQrhw42y||! zf2%shluhgFI^}|=6E5&#N}0!Sf#nS6 z7ftwXs#Lm$BwuQ zu}T59n3IxNQqXv4|5B<{L_O;=MH`@bCWf=E-TmRN6TpcKDLM8qf!%?Thf)Ux^nBNL zp<&pjOvhUT;N>zvv9i-rGcN`i7 zJIb$>UDuBw;zO8|KBJw({ovT#?vz-!CIBlP9hF|_6*#8lB@*wtbv4nRQaEC|k7!uJ z?%3#ieV28wv|JMnsfOKQ0$r!HW zrq*-}{@FdR_@j%UoltM%s2J=937lr~BG3ND2P>%kV0-|0Aque=$?41a_xi#l%VkU&j5AG-={aH^xMJT(3r)SfF6L3i z&7AU%xaIq@j%&khYQ{%65lvFV)w(tR8@cP7QfV8K_fQDwoB|zdArJZN9%;|`jJW32 z4JQcdBBlHkn^5U3C!z;3euUbhC_E&bLiSn$@V-Ss@N~&>z(^+uoyWruI?)uk5sLU`UhrMi*>t$lmxA_spei-O*ua4q zg%*V^aC03Ts{Y%j`uo={v6c|*0Y)(;>UfpSe)w2Kw7LfGf|d34A++nbAJJiQ#|#on zCp9v(Awg=I7zf$vmpi6A;6pgH#Xj9lHsgDFs`Brho@$!&Gaz=PzO^3XHPii}jy-A# zh|B!C4=Lz}{(098NydUQA_3_iAnLk#`A(kfRNVWk5FGyvtZP(XnmGfVo0VT0Mv2j( zbv2(Am#!QhlemvHlbsN*ggsF-toqTR*`B0DW2{d_JZf2|PxMd{ zrC@@zhu>U4OHGjno#2!69FV;f+Ti-f=it{rw5-n;1?TT7R2P5f)X>R&PU!7@BU^xw zZAOTkmcQS$CD)QLlxs>po88>XW@1gwsZc@{R1F1-CwEwSuL2Z~+ph865F&@S$_5}h z7h@fuok!?knvUZi?fB^pwhbYBDmFamSeP`@CZ6hfP)O|eXU0lf*xnB7x6~+x+@>=u7Nrkg9)1E~`wu8P91CCwu}JT=7? zTNNtG-;Ed)*|x5QzEwC*W0K&&zu@XvA=bR?R8SjQ56(RzT7%yU_i# zZR(=<8bkoq3Id6Gq&(DK?G~1-0cz2>=r}d)wM$pf_}x)Zm#|IR!j$bQvbiv{uBm>r zyl~T#<#=9!(ojLwi?pFkou)_)H_a+?Z06`Znvp2I!iw8*t!%lc6GbF|eE}%l;=y-$ z-*41Gx|H{w?R%?9^G3TH$U7bp1ZCY@mQ(mSMx$t7gc8&+18VwAEY%dtNzY~e`cyxDd%T(M>gHASGeRG)XFL`h`fep$?3?bHSR!kVt=+Dg$JYg*E8H{0 zFlyA6Cv!UILM<5c*wam4_tZquH4#;Whbt>Z5%1VZGVa1xFs9s>86WANMS-Nrob(FPtDBGsQqS@M$uz4Mr;f)UHi^`bhU5>CZGm(N*8pBI_ z71h3K%sO_fN=>(gIU9)#tpusTNFsi#fEbY8?I}7mj@L;_R&4L?GTYo_BA9 zQ1wDzTy=G-(Z^kTb}$>2C-jX6mb{m%Hmk%`(QEeZhQhvYS<~FcsFZzTTHywehwFRB z+O%&WAjqEy1Q0)ofEkdR{gP9d&*O{Olh^9Qd~AIpcR7$#_>!aLekqP*B?X$e{q@BB z2P&{p?>@WIC;uD&!bs>1J2S|HgnZa{jh&WDdmLF2MqxTeK)fjB3Mt;*h^6={e zOFD*nMLIeC_=TYW;lz?cY}vEQ(g)|4JT&9CW_t_q&5~c+sctF&42`a0_*FA&Dd##QpwX}?xQ&$1B zFEuxhhHxWZS(l}_YcM=)z2P+FiHO>^&2JFJ7%=78s>?!Es>$yL_Bm6Xc65WHpB8u~ zknfLOUg{PKK8DLKbN#3Dk=pTpqk2KdKvWo3^8mL0nlmk1*m~bBoV&p4<*n2&@$wNK z$@N5B5VcjH#SI0-wHqMiR*lmNYZPHd)lgj%vU@ZkRJy^xVEILs9JF#|674g6Z?%}h zJ`ve2jwU3sFA`C=Sr_PFL0pq%Z}dc7LBlsDOAtAyF^iJC>C|crqXaI6f_aJn(mUVb z!+RE##>l>_-Cf9z?sP@(`cl>;h#!y|nZEekhUl98OPdv1@-s@XV(bO-z7xhs;pOe( zWvlhcr|wh@U86?lt25LgdMED=rA_NtxzA54YD(oWwLR=%?u=Ga$XqUFC0qzTYPFT& zqb@is9~hN)%a285ND?Vf@3|GKs!17q$=wCQqrKo)6gY&yL>Dn3MJC(u zp&(PAnZrf{_;*-Tt=n(t5@pr+%>4k=?=yNTkf4x@X<97*Y!u^}vx>MpWDK>8?7zXz z4L*B`kW621R;NMzNm&^K+;?%_=h~T!wIB*ybSbtH~l@jzT)!3X++6J z$kcPsw8a>v@l;zFcqXddb*1vdnTP;492swBF*T*sTqrldd+t*gR)I z)xEJQnfxeZI5!2ZvsSMe3%Cu=UMYfGqeU%?{v_8fs{C~~qP-Hp_%2@H=+tva`b{Y& zI2DE2vFv&Mr{-B!{dZ=EOCfbI43Z<<4rK&F0KPQ$%#V}nf}qtu{fYA6(Bg?nV!jRL zm5FqwA#?HjM`01LMGl)mR2#`}qfD(7N<$Pmf)bEJN?PI$>b5n)Q_3S=zWjIMv-hCI zG-1Qz)bi^-_*fVZ3NjdC#LMoVsfqfXE>B?5p6b7g?nt5XmvI9?k7Wt`R0+Mdc_-a# zV(@C3g8kpJ`y^*pj0DTovEm_B@Umn5|a_|YjBxXb@S^1!} zW$dK;7^Z&dS{gpke?#us&CQ%Fb&A}g6={1`sLV!I2E6R2$WusB8#`y!s~0KtRvLzt zn9gUGXMvGP20BEg3n9!Tdh~oiLfj_SHGn;@s&9X6{BOI3eT!NO@J}3z7yeCnemU4@ zfR1M!8e0sjilRbe>(2rMrebP)SPA+5+azpMuJISOJC4R*;0{W z{;}pI9wDpw+$@-G01tpoLAUuJMfASYK+4M*m1bX`Tf)@qSMcy$*~t^;DaX+?T^=!f?BejAFnqrfH776sD_PpxsJ~G$Jy^aAm7=Q=z8+6J-qbKL5-y&}UtR z{m+-y44o5_^a%i_~7OW7~S^qP2>v;j5ku6x-@~pdvM%Xg>x0 zi&FG=L0IAhGB*q@UA4$5;_<`h=l9z=D!PJE z2bB2}Te$z9sYUL5DebOWF-oWcd|8boV9|8R_QDYRRX`pehBRcw-{R|`*s7nOyGnLx zlq}byFR|+PmfARdSi|4dJAosRw^e*3mU;5|_>pK}sYl@J^i^yXY zCQ!-Z4Mq@aI55w3Y(y)@{yVH=1Kjw1&6BK(fc6goWVx)%H5?N!>#S368D~&?p5sj| zKx-3V??2*%(ibRc+NCa8`f?S3Mk`V-?6s|cmsJF2k#HjvDNcWcBgJUK;8fh{8u+tl z;GjS^f3v);Mq@HJy4^K=rNA>V+s4|~x2x5dMnKi*ax&o>Gd(B2HD-NPG6ZQ`P}k`? zP56b|d5)S?m3aL3Fy^0{-IO30KLyb>p67+CI~n`(@>j*h-Z2Vlo3@*_!ZBO3H!zDThU+0k#XRnRxK8I zl9%9frB=S@`ABZb60Ff?o2bAY3BO~P?5Ur_ZtBjAgK^RTGW$PLcwy`)Ia|xQ93DU zuG9kc+20INrjR{i5S=ypHxvprR;|Hcy(_&_SK_Gk#lp(hpkbL$glWM>bRDjLPwze3 z!74Xx|1jWfDrnj9l_V;YDYWo8?}t%h49@K|IVqx^ui=~QuK}<$*Jv@oY3tdc`1G`{ z{uSO&r^gmYwU;DK#f=Wj-iJj7wHlfybOv7im~QkK>#TnI#_2V=1>tN0aw2-?d$S}} zltefX5h)S}lUy;4pm;O60gF&U_GxO@X&N$i#=;HJa2PLVlJpv4jS7 z$ksk0&;tr(bP%$>GGNCE49J|(Gop4{l3WLr>0qDu1h9e?OaUt1yiM?#kw%Q(U@6bYD6N+#R_7aB39eC))ji|QMi#uVzUeWlLd;uDP=}7yz{)1vQN!u;y?}udA#DI zryDvNlQ2s0z9icb*GHY6{Zl%uuo3-0aRslYCcSHoR+yl@P+aXDhxNd~rRerMGKi5& zH7ha<+bv3Sf&Pl@OIr$5)~Ta|Z%w5@`2uV#0@>gK+qzNmaUW0uA=FG=7}038zFomb zHF0>H_`i~2>ymH`cCb+{NIj03S&9hrA4hlP({NZH10vAJ{Z-sLfbtg-sa-kF3ck9; zqJynkb-Qvcn!L+ojh0bIB(iWD6b6!*NXrxwD4)^ZW^TN{5|Eb;-2(7P6s&t5ECD8H z=&7CX<|Y?@cYYXLu2))+xl)F&7{7g(2zT*~CH%nSzV^OIK5U7h)85-4d9$@r8f&FH zmBQN8@zcwVCSEd#ipseN(c`gMvd-^_KUv4+&mfFHUO+vo!>c&1mVSQ}v14GjwfW-r zL%=2iV*V2Bp?FaSPXPIyG-x;P@sS-b^#Q^VJh!NSgRW7&3wC($MQ$GXtf1Se)|d9rR`$H4G(6u z*+w#stf1>2G66)8MM);I)F%ue?sgq!MUNxW4SM)!$~078`bTq?uI|@Kw+vM~rhhte z@HDg4CYL506fG7b4qG@|ip*Nt4|zQkJZA+Dh-!a^`RPMjLwUekdLkrg!h6f@8=A8N zPh*Vyw7$q>ki#f$hPa%Z7bY>S{Yi66uI}mER=dl+0g=Pt!q7}eT3PQ4xL&kpw9w^S z`p;q;y+%Lg0$8$>B&tUp^|2wL4579_`3ZL7ogk^>Kn?bJBz!f&dlO?7e*Ekxw zCxHw&|2U%EG=Xe=QO_U)nFkUq@u`0C?7z~3`&;&KckPdGfTJB+VX$r2P{sL|;6#+D znNTeWkCHGj*jhQVzq~lNvYtHLezD6JJ&8mxv&w!Sg!;{x>=9F>amZ!(6(-w{nrqtB zw-jntE6G5Bgil={3ry1Pvq7?Ko+oN(m?_nEjB={npP%TcsJ zUtc}qrRpFcicd4A)H!L+nH-*{3riMKP!WT*J-pRK>s9)7J?cj$271U!KC5L!AYn^) z)b7zMLw_F3)qz6hyO%XdzNZo2)W!6U_%5=%eUcwKgtbp-_QOqJ11gC-AO@>~CEwyQ zx$RT7QoE^+?U4b-aG0=qkkQ{~Ga?}nMC1C^TiEA)+ocr5)A##*f)UVh1i~kHSMoH< zdDetc&q&Z3RWR%514M=>_>u6AZ~MwfWs9+KLTQW{VN7rm>|Eh!QY@+kJ}~-JxOX6o z0nGd^YcrKcV6yqs$n1mxe6GG?ZH9d0vATTQKHmegk_Y$6lX7#Z0uUXaV_gmTCYG*Z zyZ9jJ^n)WJxJcV^8!w}a9B7bCr5KDXOcEcc;ez5+X#|= z@)AR$;IpZ|p}f+=!T!^4uB4)ABfE$pl`}o2{#jC3bBG<>!`2tu81~d8jtwRRNi9z$ zzFEeb*rxTk9_VA5WbLVhdX8F_zjN^U%C?%ceXgtIe}IM`Cs~Vo-4sx!@lUopXZs%s zbwUsh+x!#z58)J&>+oQL>O|LI5op{5+_epW^m7LG5l@b!ZmwbaoP`$ei2zSO8T7T(eSsCx$X97 zSKX@Mi?qN0SVE-5@J3jU@{YPwqrSoNlU<->mbfF22zUoRd@LU3pbH&dmJtf z8DfYKCI#f8$yBh=D)4BM-rz-)Gw)k>K(E~a0lI)!4)Yo6h9n)MBr25?8fn%+&YbW^ z-BC5zN5mRlDWlZiR6pehsY{Wbp=*(SRPXN5$-RT&-%|EQscMCKRnX(?6QMEZYfRsq zlWL4Ou6e+3dRmyzNG@}kAUZLMwjb`-jz$atvt~8tVK6qN8iv(t=v#8foSOLf;vZO2 zMC)F;l>RcmifJEpo6P<2@F9v${Yj$7-VMxO@-GNC89kAChx;~#%3##fv8}9=w%ZEl zvVZIq(l7nXM^h|HiO`#`TsLLo3rtwOCJa-Z(feI8xkDQ#zU6`0SGU&>PpjqEDAJ0g z^?IvgY~?Vo(dHN~UEvwtT+Zju9DjV10fw}3BAi=fO?h>^d1cN+G>iR)uOAWFF8m@Y zNB+T;@Y7g`9iiR4FFmPA79)Cjk%gVh!66ld63jGeOi2uuJubEy)NT6J=BcyWs|ppP z_A_*6(e!oEzZvU5Cc>B}KvKcS{~>m zoiG;szJYzKP6}q9(^nhx*wFIXb(M(SJ)MzP3F2uou5MX2r{PFn2iRr$ba~;Y1R!_P zlJ_^}&2BQ=Y=6ir)OtiSL{hiKd=-e~y34L+ot;xM(u&=3Gz+@ueS8HMICF~lmgXJK zl43heiEu&$L_a$5IjZP!of9~aIE{9>E{7pV82lqiki%-rMZ!cg}qS7`z1VJOxQd(U#?SUz=Hdhr1} z&tlP{Xyv@v;_YHz%v)d|uB9(y>nST21-<)WQQV(R5sv#?*P_KXg}qC7Y?Xki$}NUR z@pYOLQb4=b?PvJ)p>5fmty84# zGxIferN%-X!|GX!#eXIZS?=))w@pP-W`jm9OXCoG5h=-ZkF`dY6lA{qYE`W-H}!XF z>o)a>AN4$e(c20(iJs9#ri&U44TYq8$hUj6dRsdRomCq!aRZI8IEO#)Hco5PyGX*S z7lw^<8p;oQ<=YUB>Y!(Mv9E>6#RT&E&jMleJxo?h|xj*mET(^c~+F97#5qsb;rI6{vxHl#m2{&|pAyYbMV2y(LQ^(spnpI zw;ZYSSlRmOW8_srHwuNF+lTQF>jw|c!ttTI_ZqDT_jK$~E3InovHL!C1l9)+HKnlD zlX%~&(r3@xzB-4b-SUJrZM&eFHRK&3enb7^x2Jw}A^N3ozU!s>C%*eclX^lUjA~un zc%V)u&Y0a0Q$HUUUvy?~ilJ)aRsA;pD=n<0ReEr?{K7ZnLh2F5Xpdptr+k&(oU8pt zh3BTc!byDqY`LCiw=QT|Kss2=EP%44Xn6zHxUA%a!oScshQ#5&gnDQtTt-12@s# zkH!Oni#7Z;#%<3Eqadjik`1>~C*Zx2hf_wvc=Vs0_hj6n#l;wYvp*BEJ9v+)lQqOR zOK%zi2kEW}I+Ty=L$2CIE{bC*G_*t|&7=qPGZ3v^3uYq(F%5E@e(xQ@as|&NT;f=k zU0QB`1Q$A8JRy@nG9+tA*npW~yU$&rAh{r?C6v%vb44j`rK^{AEPHVgHK$U`E6Wyb zM?(7#QQhx(Rgf%pnBtuc_rmn9PpLcZWJiTfT}*u5!fOs!Gxq#-4jc6{YR3~zUiGYS zvK>0FdVaHfQx*%FlrHkP9$X`WWATHq^$dm`w_5J2R#ap_g^yq8I^K`?-$(Lvy5=$R zZ&uL1KFdHXsEC-%k@yi#8y_4M*W0~m)7n9#qPa&i07?kKc|})CFSaby*1T;!j$R}7 zJul=y>Sq4@tSr~tM6GC-7^Xom({VO>tK&dKD-dV(&yhMl(Xh`gFIi2Hn4^MpjYko` zd)Nu{^Vik`(quy?k>$(PDj7K-`CzpU=#z-r@;fu}Qm@I#K#(XzX zGec%#nE@HYQz=aQfx)=ItCa~?hP2(A?f1jXCYv&IY6f1_QwMW4PiCVLSEP`(YuQFB zd2TRs1Zna)QFhm;nB35?f_i-~x-&g%9%E?saE-6Jg539K{uf0CZ4Dw0W8_fAbF-1- zhf5E$c|xd?hHa|bNLDyZLZs)cG^FQDCIO#el6=dK@dsk2eeTf#k4vwvaZu7rOQp4t zqj&ROCgb+1J+6^ttb_jZ49>IfE#PRb#x>8{Yb(L*90XEO4zHT+PbxFjG5bfw$Da>y z5UfwP;tSGqE+f5hPU^4=m#%-F*U=L^+GXcSTq1)M3&V|qa7VQR6lU8?m@z34P1oPg zhQYV?!+Wg(<<}>%t8cO?XPw4^ zk>MCND!tsAQdupz!aGPa)68dXC||e{x~3odLm3}GEq za!gv|-rhMV6n26AfHJA%n28`K2U5pqcR`Nn!)c2j`7hCZDv`!%1{eoA(4$n|E}qS{ zn{dZcrUH#|-o6wV#SDo!dOYa_y~zu=ENqNGNqLz9P;{ld$(QIAT=0iu+UK~fGH<_( zsz4MAJh!irkL|`bv|`Bus6N2b{pPNc05NISy%N*c?L!ud_eL)T-Z9VJ*LRnS?|myxFT{#4=A7jBy!^I568Q?)2@B&)T>+GYhz3S zVdOj1`P!1^WjgsF%_=^Duh{XgD;{!&{bt%EhJj|t*94gPQ-{l?)7U;6w9%mG)xsPG zu5Q%?fd@>X>VW3ZcO--N;tXDiq`?m@D~7Eiv8C%!M~WXB}@wNh)k;2|KWIPYOwLkPNMzA}Jf z4dly)nctZ#)#@wvl(${Cl?XlrhoVVQP}W-$u9U9hnT#o{HJ{k7C{^X}*% zF|jx^6x;%5WkoX&1YvXl4;zd5ssEt)niyY&nj2PE@k^qu<5am;-dA9JV$2!ldqbuL zp68&FYL|Iy(HVuyx)ByqqYpBLtd%&VPA>}XFJ;yEpa3)U)~oRn4NJY+1Y`9^xIF$s z`yJ!YXMq;m8-z;CfwDBo8&s09v00sdol&#Dmv_=kc_&L2;o7bDMr4J=K7kXb6|SE+ z7GPbMr%*4w*&(snjwH~~$D)N+xgb{bUJ3MUH}ugo|c zL$0E$l`Qj0J5XbpeeVXL)mt&lIx|0#ZWy~KVaLVlfWLmK6osLJuSqc6Zf;1G#@24 zTTa4nrLGLIn8AQ)|GVug#4#@Iw$Mv|q>>T0RXgrw_I%T|$Ao=E-f@mctxqfM9pBq8 zDBv?uV|JAYIP`IQq|&ZEl6iMqPWya5WUp%pf|ggwhx1- z=&sw$M!ZS9=_#uH@nJnV{Hee(FOKr$Bb@5!ukA4wUq3+8nZTNSp13CVxr;FhcxwQiekBD35U$Jip8O`rFqSCI|liAao48=^d7v#)RJ50CCb5j%S`s>US- zGO|fepQ%}JG17dQp1#Fx6BC=EA}8BLtIH~`wR%5HSgaWzg*y>|fJCAAwI3^mA z`r4dQde^qa$lyh8-X0adyu4L12q%;?>5tu`K+0P*8O^|SD|wF}p1nuwx6cb6vtu^2 z#;lywZNrK+gKlI7Y&2Zrp87egZ66Eo37pYQQ|`&gQrGCpj}MKoRA=r(Udn)mk`LppYzIrw(3>>f;=j)RBs$gopMHcAAF%d0QLD%Iw0BtN!7 zf=7dU{ z)7e5uH|~KKdSLR9}sf@Dj2Tm z44nfetnQpzJpHm*yo^4ymSs&oM3JHV=)ktIaOsTCySp`G!Cx z8GbEj{Jx;+=CjE3#kjqZSr$cA5y(8KM^}Cg-J2vxX~XIyP@sxi)I|fu@DSB)>fd){ujIEh{YXwnrkd5d>Eb^Jc5SBK#B>S=FZKxC~J7 z^1iUhU!`V$1+`a+AF{%3iyWy&+d59~Ko25@C=C;XZ{AIsUGY)=FB(iUbl9xZ zi?<QVRGml?bd~;O%3eu-GUHl;!Fexv7k_v4np4=1%L7h+6n@pmeK zAD~0=XqJIB6pHsBRyFs(tZF6Htu7yl4eG2CV^Qc=9H^`IE!2WbO`X_1`{z19iH=qq z$o5YR8ucDJfb}mx@b7)%XCFoWP{_nIQFOY7|s~B6}0_vwz$9MU}#7rK~P~;Yy{Nvc5m7UfTnc z7#H}fxndlRI0u;YFQVbRwAyw^_zzle9{&d!ahsZ+o05;u^N;oqEn>XlXk`9(lK(ML z$^ZK#{v}BE#s5ky>NE==R_VW*MSsuzV^%)>Kf`COqlk`H`j6@Uds$jPO6vYA4)hnN z!TlFb^Utq{V_|#quOI!7N7lWGj)HKOP|W;ygn^vF2i#Li6s52KJA1PL4C$W!z2NWF zfVcnuBmEsLOf?+#clQ5z@HR-Eq|peWe&IjAUCD(B#U=l9T1xfbd^Nyp{=m4qzZ<_Y zs=f=~i@R@aZ8z`F8M^mNN328>?7|NT?!Z7M1gbk+eU1+NPkFh-syB+@(>WF&FAeXe zF9Q6EmU{7DbafRK+-mP7?!@n-oik+AY5t$d{U3G&y!~din2^DC!HAv9D`?nAO%>fj zF>cY^V!WL22;PUPPMtJ%W!^ipyuhjEJg)6wmcd`}LdDe4an-qtHIQi-c~#?$brS}} z&SBXu7Ld@l|HH_n+PD`ZMg2l44o~`82&WGRZ!hCpfYhy!vUBXz;R;8OsUK%Uc`K^l zP)6L6&|Afm-;i7YuSrnB5-gT97D=FQrzv{D99X@kwsJqUlj(yzk27 z%nSV3HEnvY_89!NtchpzY^8wt2`vN07C4+#Ll=IOcsW5b;CJb)^v5}1vklq!lohQH z|ECxi*F;(xd#$%e7@L?L%&K!4@tpWf@3PBKsd3|lQj22|KP%g7L>kM0IT+{O=H;tj zC_qKvbzybByY`J>=sFkWZrsBmbsP%OBN0GIhozx><58e#_O|NJq?Z=TC}7R7w#Szn z;QVh^`}lF~U#swAq}0E70sAA$bJd%uX?~BTdv)c2s#l}9hV7^__iK{ne&J;v z0C3Z|%T=)nv2SjoBt~!eSgvXlzYv^4J&hMmPhU*=#;|%D8nHgK2(jKZ^Rc+hU};m3 zf84&9d-{kmhWV0yBAhV2clHaF>C(oDBGj4ck2IaJyO4m&4dFh^Zh~A~HFI zF&@RGB2`VX|J5mcoHM~=zpc@mmHi;A&%n0p@KH?$zRU~p2+<7 z6%kbRfZ7!GLUB#uNcn#8Wgaj0cIbR>Ul3>|?k97WWjYJC`km<$(JS4sRR8Zi#XNsu zP{qw2m~!_y2WKvYKeC}FF@et6x9MtmaG9RnfD~3{L$i3Qo65+k~(RM-Qu<* zgTK}x;{2@_wAPV$^~w&|fCLt7W9(i(7U1 zCIPf!pu>gobX3L*=#}AR=@WXU<*e(=eYAuq*`&_GgiC(U=FssT1rjCvDt~ZS)RR=4 zQ2UfD)YGeYLXn|7?*Ub|H96$H@}c8cn|Cx+$UuAMUW9s{&pJVhI7i04Tet@D|VIa@t>AB1Y zTJ-_P=A}bx+r-2C7hKHcVpB06Es`{V5-5hepF?t*aE!Eg2nng!`nCS@Lqwq_oq26r zyc+B+ZCF)}?$@Wl=ZAQY%JO#XqLtXDf_VrD8YTx~q)B`_S)vJX-Vyoeo7RR+{n|Cs zcENUea{R+g-CGf5mE5MR57&Vz87=owjR}AJ+IcaEH#(jV`xYWI?F0t*2wr37Y)P&+ zd=9ann4YpKW!^SpH*dcl0r4Jk^Le}@9ESfGt$jjmb2KKFiDIC zW1Q(iA~UB14#ow#ubp|ih)c~f`s-%IHmxfMISDQA2@E#+8gTB~h0SIU&3_TlgSrJS z;bb(6Iqq~$kypaY3S4y6Azakr6Jm4bJA!p@t9^@QN5C&o0c6%5Q(w;XZ8`$P8e`-n zos4DTmclTSa4*En@%YF~W2UXN;fiJjv2Ef#;wQ;*48FW%ew?%e1lYZ^U$vUAfKpvz z`W>#wh3*1j`IAVVpKl+>VVm}C3hom{Kj=%RCN)!TRY;}RiS3S(UlVrFkVi4bqFG1zJ z{dX~;(Xe-xZt?S?8A{zXuKYN8r}Y_JqF)Yk0uHp`1GlsVQP(JTXs)GV z9%%l=oEYoax8I85cGpgMWS(LM&c60AmRXwYBmVCkR}+?ajjDaF-C|y>>$u2dFqAQY zxBo-ufz<#a&Nyu(q;hdtI+$WCT9YPZvU5A?5dlM~tkMciluwbjo|u8cy30rW{eRt7 z5Wyux<{~_BqT#GPUa#Kt4$hRv4n|2Rp;B=sQqt{>uh^T}>w3<9Og?Z?Y5-}D#d??G zesU#4fcfZd6C)A1+@Jj0ok2y*CWhH)n17-Bs-xKyZzzMnUsb`ZW?DzDBzaI$6x;jf zUD14lF@(pc$?*66wc0EWv>`?!8?*u~=UG6-67wwj1dEoNjDX3M37K%Q$I|aq-lFiN z#SJ4{wp5b!3!&gQS41>p^t3H*u~{(}<+pH(vxi>pr>A<)oibcOB_X<>+TTwftZ<;9 zhH@#~E$W%no4FSw90Q!a^wtC+D)k@}Z?lYqi&8>DosK-aWt*YkDEs=v`2WM&TSrCt z_5J=dBRPtcbV-SHcPIh|NQ0Dgi8%By3|&$pB}jwP-HoKw03zK8LktZ=3~?^+^Lw7( zbFcNi*E(yR^AG>9SX{C9zCQc&e!btD)Tztn3gls@{#*cKpO$c2u~>DR=_dfSZT?~@ zyw6t}G{V*$M+S)w1-*ghCcx@@s{&rMry`Vox5aqCO~aut4qbi78{~vCwe}hXrC#HU zoE`e1c79o=-dlAWt_WS<5I66N*7`KAWhz$yEQa!huZ7d?OW25s6?A% zx`U8@G8f**b$E|3G?}E|jm4aLP3tDBEY7DM&IeWA^%PL6r&U(AYSz(^`>1 zebr_^jtH9|ONUkoiaqVIJ3CiEk>j;3rxcaKY2+_UN0f)(4Z;agEXOVhWuYzw(&yh9 zam_Sux;zI$-&=ax$S*?{$PEy~?S-<0yx3&&WR-P`^W;2VnAZ#u7qDEBU~gxyD9k(M z375!-aZ#u6$k7WoCfv9Cb;-$F!USjG%v@(OKjbXFSDY2`r9F~wc^92@6-sW$%OjIx zH;ac^xC52SlDn()&hkx78N-#@)^>T6*}Pqb=aZyin#|p5MVKDh+n^0o*$S8Gti$SE zQ@ZZd)fOq?r}gB7u8({N{R1mmW+4-(8GB!|a5tz-(;m&Mo~M1)^zGWFg5gYZRvR@Y z$T}Ou;|1vYQu*fx)9r`RDe~u&KwY5j_--#{24@2cL38zZuYUe~;Y2lQi!oBjPj-J; z|2JbgBoOvsD6=a}G)3@7Snc|HQEZ2SU|1p@d=hzYvT{;pE@&4U#SKDvdHf(75Kn2f zLKXO6sA@@v{XI>nj~5bX%GbhnJDECMeh{wi3!}t`>`TA=5)#flC_OjEwPf((iy{B# zn$w;l(CV^lkp1$A_8x4;jnauM<3wE2YxP#W;X+)ln$~mJI{tP<9cZo}r|;iKSeAX| z1H{i?$rE=zmM0cyJdOt>K*uFiFdensorAioD}}L6UPhqDl(qz4_zI17-+R9E=7b61 zv!_Ps*|fdWd-de-Q#T~4yt+>BXwh34`OssLzHqkb=RTBjdG&2R&~#&W{mCk9Cae?Q zb8cDQrX$1%Rp5bRtQ8J*pS%|q=UDRPR;ynsfE2FV4AZNa`BZlEHyK6BVV;>~5q=eq z^CAGVLv=P_FUqu zAzdZ(4Xoeqr}ql2N%f|r!R;~oYzfDWylu}h4@kklHPaCx*j)tFQ4^I6ga(U4fNQM|V2RzJ9jp6R%gJ~g(DU`f<^6y2en+qX3pq9M>-qT>iLpdrpzWAyG%o0^rkir`&~%dtGzlV#`7Sao))_ zEr5=bq=piqNiCQHK-dr&C02v1(euT>JAzrideyGJeYXGmIVz^e;goO8=1Q%8AxqJ+^NMehq)ozeov606hH!73nQTZp zkP2*<^kJ$LTaF$OoIe9!BH021laq_Sd+p|BG1#lVH^$|KFAR44GA=v4j!QaSokKPZ z{kRScV=lTSgfhM7>j@{qyw2Y5(UouRuX*Dt(k8x`U!%EmNKz&Ml|HnQfq&mI==zpX z1_dE{`#*l$T>LO{$2Ynxcc)&aaATkK99$jB0pL~vGBf-#r3k^RvP*Z!D|_#bp)Wk=&MY^Osn=6~)(h_T=)pBT26K2ocHtXGM3-F>*)^e3&n z=6(%?1e_UX|B+;{zz|IJO&!=G{G}Xp!+Srjh7%)_5~N+mNK6wD?n`}kUhDwg%NX=O`k=ZvIqU1I10cr97aNTya`4jxzvo;#QhZ8 zk_Nzoyn!83fdUnLK}Jmg5-C^!l7OcAQA2u2_;MF?^^u%<%eNo(VP$WL@zNR`A5TGF zK@UuYImMs-IpMyI7Qw%hv(D)#Cx ziBh`8s&b2zhyXO|Nn-`~_oDRgG;?Z=7_r*ExL-G=N_LBL<@iJ|!C1T{$1L$%4@?C$ zko@a=#_n>J{1x(l`2c)3TY^V;Z^G5Q%gZ%8sWGx6ZZ9~4dWzFLgjY_6jFf&msoH{NFyaEWGR5WPpUih z6cpy1TKmYbTD|&w*IPNsx1o~%+&HPQUZ9)gPm%i!V*{ zl-JG5=2_X{=jrlK)S1PQ5c7NISq+ZmI!yiut>1V7#<=*3B*_O%>++?^qrxxa!nd?V z!v}ZEE6kQ{A*L|JePTbd9eaJHj>C)-k)I|PRVpTL@dcJ?7J@>-q842#--o_4jwvJu z^pdCb&35kp$YABq$T^E%if7|1Nd2=74l9S%jLuE1^{Kvgyr{U7&qR1|e;wJT1METkl( zqTZQHE!VH0l$3HS#^;97+J8Y=57@p4PfPuevVpa!{OS zS{X{xSUANOSMP7Wj-|JV{-FlI!o|ftLIXKPo;Yxls=C$ zxh2cn3RZ>G#l@e7YIKI}7p2_$Fd(n18N6(jS#D^waS46{yqKaNhI>1_HNFD9LGhLS zIH8;V)Q9~IDjVr&b3>P^sz!(Ysjm(^Y7M{dztFdB9EA|e$QVAE(L zcU_QV7pf3`@5g2{5jK4e2oEoT*rTmNRbCs9L%}I{lkl*_;n&l2&R0)EiDU`~_u_C1 z2n0?=C~r`ZphzTRtj#S88);6WE~RsJbP>C0>eY&w)w3-YXKV!(PI+SoYwT=DmuMs`$`;NO5WUW9Bj{!3vZWki^hMH9( z+pi{uTuYKZtKKoTl2RHCvx~^WtIZZ1sDVTx!CwUQ!Jpz3qwY0>P+XTMxWhQX(F!!$ zV-tc*4XRe5YraEt!2$_=eZE};70Jvk7u|-*=6Klm@@H7y6>*`bagF5KICwRXZ9aoc zO?6;R=5JX}6~;BRq!=lw+7_V=njf?%QjQ>5d;4u%W+KidkK9PLio>RB==I3Hv*T0; z6<(x*m+CT}&~#-eSZ(ZvE8P`)`d_AYO=L%*&;kOz4bzC+U7eWcyA z;mAAsCs4R{79Z#Jvg%5?rW6Auskw3i>nIIn+04MpLwa;XqpJ6Z1RK@5lK_evRT!j` z&}GY%>*k1p60edfWWSv+T~tpX5jgMpCQl46K;ZaiSdA{;29;&OVv|~r;yD}Mv&1sv z(%(G35E-Jkq-n#xtX{-&c!^?~J`3I?IC>SYSa2-Mm0Ni_kj~xJzUW02|;LmJq6KcI< zKzvvWTS?Z93(XWh2Bn?RWqvts5!c&<3{?e$Mekpl?2?zNRuFgbQY7Hn8W{ z^+o14>z4y%(PrXVFYkD2TB)qvArxi;4k6M#>HTPD#g|iF43kr_IuVa;z7&FGN1@(< zdcjifWfM}IhkuSyANAKLp;=Ao3Hh#Nm1b8Z@vyD>S)O49FXL8%_$xn2h9=LZ%EnSJ zE>hp5?$&w6CPnsWT%LsO>2@+H-7~exC6^kQU*l-BL8Mx0`q07PyUFOy{Kzbv@T5cH zvI*)VaPn?rn83_e8h$O|Z`pQgFjp}5^t$vS$YLOR!LH7EJpPFkW5PL;olI9g@R&wJhP1htUtczXN`1}dC?S*Cd2k^_v7~M3#YW0h^?I&riAsEEKIEfoxes?Oyh3~+{ zY*cqC3rDtFY?>z6lCrU4$p>1>gVXHku;l|v1qXgzJ+`|;r{25|98KLns&WuX6tqq4 zBU(+}8l!bdgCks32FsxcWExOEy|D-a3Y#4014})+y~>PYdXHx6V6FO(O-fvoObcdd*jah(=?mm=#?n(|FFbkUOnCol8 zvMwlZRxkhUP_M9Ak7K1i1R zYuW69e-PCjqkP=Hv>oL<<&Zn2F|I3yf6K?ILU=pBCb;?tWx|)~dNsum1S;lM+w---;ZC=H%)t?Tz zWENhMpu*<3^Reu;e9{?OeV1j=?_pq_S4>AxipJw{Oz-)!_Q8;Hge!_a^ZKo?4IfxD zi+0XtK}!+qdTVznm`SM-3e)Q#*l$o19!?jtlNBb%xK0b;IX2@D0t*bv5>L`1wv)<@ z37WYMk{V^sZLB_(Tx${YX;D7!xhOoNp^E~EBD-SIo2Ck*gje)|oV`Xe`m2T;3v3{E zE+KTdIkiq@!CbvD^5z)^1mJo$*Kv&*huuM!L)#7o^^>DRcW~rIKqD6I1>pfjcqvSH z16lZZlcPsLvQ3Pj3}xnfS2V#c=WHaQv)&zeyY{50M13ecOJ3r0Pkz8Ax-_asYny5}(A1L@5~Mda}D$R5&Kr2*Me4O$(DoQQd}42gprq+LNwO zT34oNl}%OFnw@ruj5W>q!>?BqMte&;cw z?KVu(Q(z_A0TXd!O!tts=jTNCj~F|#vzREaQk{c-p<<@`;|JGz^6#y3+2|-?>&C~B zQ|a(cY^?OK9Jp8#?mGh9CoSOd64(e9!%C7_IeOxry%B< z>B(<_VCKT5ZFMI^UkH6WmA0Il&h5V+azJQtFOdSZ?^-2ZgOC##<7?&@!4&FmVw=et2;G_5;^$ax6u zwk{wq#~xw!E(zLCwO8g!DDeEwg;9>6OQ7_SEBk@cro0?#QXrYS5IM$iHNAfEu5Kzh zon4YQNyFInQw+9Wme=p^da;n|KH^2Vwvo`dNJl?eLZ_T!`+J>Vny#8bS-nqX`e0dv zvM4Z=wrzHi4L!?dhl~9He2_-5dhJBA`ndams#@H*x?1-nn5j#KSpaKSXd8_ZsdLSh zW2(-C&k{W&S`GWUDp{3?J4=tp;u}h!&_VD?%eU{|!an+pCU$mtUAX3?an{`1uw!51 z&aIYH89BDM1W*NN7sxFS6%hz#_BZsN3m_=vVeoUK4FfB~wJ!lw6b?aUL%t>AILb9r zonv4GLw7Z;lB^L~H($f+V(W(MONEm}XZbCc2craV!GjhCo7_VdEn&px(O;T98`&Lb z@@u;>O?zKd^ER^b;j{}Vp@9{ zK(@u%ifQdMWty3Lq)23 zX`Fmdj6PNFP{O{hUI0FlvLA^y5^1Nzvd1cvLRw@J)2SrAE8$2W4h(KmT-EVhn5i7U z#0=0`)g~eR&u{9J9)>CGT*+GXuu@R5#wK02t@{k$@L^V@DP3oej&;mK&7Ji*-p5+z zolqcbO_<#+Si-7{T7w0&YIn(ZgQ7mn8VH96qR$KnOKgo5Gj#UnztNU~pB+UzE5r=| zMvY?jrb>=!J&01^l5EGfxSu2}D%HUFR@_wX33NzUe5n>cvdzQmND0BBllieoPxi6x z++d&BG5i{YJ=Youc=yQmMtaGG^_f%&`|}$5y1m$*Y5N@toX= zY~Y{g?0&10R507ZZKviFp4LAfnnf=Ni;PqsSv>5YA2vK}NtAR%F?G@a2A}LsDXx`y zQ{YS0p3=@(PpUY7Hp?ue^eLTWi~@SMuXY2eF?sZz{A}Q9qm6zXxceX{R{kKe{<}s_ z<;q{zyVG_3gM)wzrQQM?e71&eI;^$7X5}H}&c6LZ^3L}FV}X`Q9m2b zP@r>zErB%mnk8c`6gf?rn{yY*OrxCTUtQ&~kbL?z-NMA}e z>1PRiogZE7ukAmML|VT1H%8*-zkn}A@B2N+125=mmjq3lsNuk$NRVA8Xx%dz%+0tW zANC3oKtAloYf0#J{eqCQuy$r#u|{id@y^8zZ8?^YqRPfai**V#nsy&*kfcZ(BYVGW z5h>C9^xf9FBYKP0y5oX$qK@|9WZZl+ccoRi?k@aYtOsGiyURi@{-yp(!X& zrizfE=iFYme6?)X(LmqMKlr&}IFRG!#kB!2kdp~k`t<3MF8kZ*RBc1rhg_nV z408ZPC`%UB^*!AgnBHEIHjz1m;wmqs9q0Hmx@_VMi8{&FW7vi-BpBa{40L~AfPb%h ztWa)Zl}6?%OUTxXefK_;#4&s)2R{IMeL$Ez-!F3Vu$q!`X18bun#yDlOGUm2JCn??Qth$hcd9H z;KDL1{VZ94gakZcvT3fiu=KE0jH)#G8-PYRHZ{x6AFFll!Md>$36|Blx%^m0(Y<=a z)b?w~&b<3OlS7@$YWz-(n}>jfwnqK_^tVnUJ9+=>Fn`Wz(Ln5jB>@@Up|2#mGOGAk zXJ@!tn5r-uI*}XtnI*I^+W+WG+~ z`vTwmHAq}PC*2kLrDgL5togyrESp0=9a%?7^$ZBfV9=83+oy!lzL8N4b)WYBURUOX zkz}twgF*^a2;3%*Uu|dfJ;-?@GP&6L&d;%7)jP8xceU|L8cPIHv0(M0*`;8KR!2r$ z=g@aD#HbU;dLVt~mbqItype`{gZsFWkbR}8xF%Kr?=burF|H6?v}=sB!E`)hYWncP zM*eMj#Vf6x2c1OtOs&Nppu04%@=w;gjA=InP7Nh0&^l$6uont$eQo-5z@%g6H_0ib zWPaIk&T%g4{5G@WQ2C&b|k7j#raO)8=&(`unl}>V^M5qntuqw+@GILQ>wS znbhehy}VAgp~=1VG&Wt#I@w{9Apoom03d?G&?}J$sR=W-n}zJ2@05@E{Tz{0blGST zH>(_|1BBo~DndFspKGcXOsI{J!wmX5Y_Kl5?B?|o)o`-kb9D}C_J4;RcLv+qed{?b z9{QYi0*1Fl17UfpKWP^QWDl&c zuxW7!t7urBXV1F>NSA|${J z3~iuJSS2?QZx?+u`e9sxX|0r;bPS?PB4k+$eM27NXFV6qp!g^-ZcDDLyxBNp2++C4 z6e1n;XFQf%ZFYUd624eCZN56SHhd*t^j5nc0O#Uo=t?iVv5`txU5sJxBh5ofkeTBO z)Oe@Mw=52|R^JHgO_okE?&QkPyBCAQ!%aswrx-;sIH$r9^^fAeolpBi+(`hRS#xyj zpVs3hB2SPKk4dxC`{6giu+uM&(YiApOvCe83Gn(pw%v-AbBRJBNca&F2qrUD!~<1n z(lItOb8!e|?d;^8e|$A0mB|&MLAC9(dO=}%#XL!QM*T* z(VW3n6e+m!_n_Ewq(`haCOI!vYfRBA>O9GW-=C-xd?jl04ji0qJ=cDfU_BSB@NeJv z|4jyy>C5Z`aI!Z&07L5Bpg*?d^$Z@4i<)6h&&YbmfEmW{m+yHv zF6Y1Dd3dyVtpu;3eK~z#0^6RaYHOF&ekjkR z6;=_wX6U<^4HIG+hKvY`!3@QYm=rdOm<@xJ|>>|Y0!p@nV%cyR=|G8bR^S*Fqmvr=CRt9es9jQ)vy-GFmc@*+; zvesU3XRj^!)4firvE-NfE5x*AT#!;{oO#FTu*JRf$@7-8FgRN^b)Z;PvsP<%^ zP0`p%P)~6QcBH-o`iowX0s|GF*%zK1ui$7kR9=dwF^*d97&h)J?CFOrHyDTmc|N z=1re>HQ{1TE??3;Js>Lz?WUtcTfajh2~f3T_jaQFLmDoU9eMprkQt+{Z{gqNeKM2K zt7@|prgg)KNu?YFk2Kpebq&vSUaFWrmm2jTKX7F;&xl|22w&KOb1UGFoTZ^wScYXr)and?<2?+MV^?U zttdY-hq6D)C|CN-$HR=FdaLkb)lrmA@GsZFUtcXQ)$MkorHXhHey{(?nO}OozNwYj z>~+#&&deEjjP8drj_FY@C(np#oZ=DR$KfkOWKqgGC8E;iFS9_K3C}5xvF`2>VuD4-Zb1ZCASK2LFv#i=M^#`=-XO``3G%Ux3VWJJJ)9&fP<|Gym z&cfnHPYLh7S)Sh6xB^YKKn7K0+xhg7>>h+9EuMmJZ0>w4q4`~6uf**( zl^x~lCZ9yZWJ8;n+w5Jbm{6~>9jjgtT~s6LZ6;}s5MC8REBXhY1Nq;;ramd46}Bz> z8mY+}tb&=OzRAt~ranh&9?KZJDp^ErMY~iIV5L9&sfh0&DC~^6%*98 zLPRBWhh9sDDdnHd4+Pe?EcP$Ms|R42C!P__mmj!|G0{of?|Az^Z*+V8h1oBop$OVi zAi4`gn@t-lZ+8ceI-?Xgg_5J*##X(!(POvFdDfEFu=UQA8J{lvYJ1AXr-uHyOnvYi zfiQWouEdi%1He(8|7%1pOjBE@K-PhUAj?xy$i>maDY5RW(;+*DI*{dHJd?DsNRj-8 zvlhO0N)g6lnjP$Vf+BV&QLA5M2ILG;q^+8&VFcR$W#gI0aLN-8;VQFTAW-0#aDVK% z^Yw^~`2mB^l@iIFOrNI3OdB03mAl~y&fbmVV5%I$U*wj={HM&ST!cby$zQ>ZOysL)@eW_QB>wOsdQ)GleyH2$pKo%Ev z%-?6o{xYg2ZuZ@>?@Hy3%##OfKdySoT}94*Q|p{}OH^gRmClS*y&G+^CwJ%A8u{fp z0R>vOll^vgDzCbVXW8_r`n2WNln2HifO`VHU)xO5B;){)ByX;B|}}nCIjQqN`9^_ z{Q|oDcmY`vkaVImT-USMN#8q?ZrO%e;K#xZHYYozpE*8wk|^&Y07Yc_IjJ3=zC zkNA>V5YuL6bO-x;W9jw}42VG2Sxor(R9&uK13fPMQl4z2o2O%4t*+6nN<{m+41!3n z@z?pkrUe2in9Dc;clylt+sU1&6j4&1@HE71WTZ~8N*31M9ULwkgIS{E-{j&wDn-K* zxH_W`vkr34bgV+;HCkM=6X0j1BWA!+ha#!61cLOtoCj%}OQZqtN8OM&OxLR`j?6bK zV1iX4U;JRFX@!M=*7)Or4-q1ASdchOZ}GUKCMHzt-j^HDvcK%xtNwn~_n<%_0tara zN+C>-ZHR415M|#P6!{eRNCdVEB6^}oNaGJ@ zvS=xaAS8A{HqLPiu~^h|u~U1qd&Gf1s(JTMlZWMI_ArccMc;puDLqK{igE8g9qYwA zBa=@;9|-YDF2yJ1h#4P@N#7H8iMhO3(~{ZWL54-LssFRR%}_pOGgH)G13>o=XY9(LRC{3r~4797omO z2HK#N8){LW-`G=JEnh9umyn`}my``k7OQ@~@_lN*|83e%t?iV6asUv5mG}o%I2Ya0 zMjk`ivo%2BCkQU#JOpE1i>4u6VR zG?abcai=It$N6Gm`bt*{Iqh=beP`qL&@75!C(^s;EBjKN!GqlE;;3n0@g#!=%I1=W z&t?(mnv@6V;975Yg-y`Wy=dKknVA`?>AY`yTKsDa0jt}`v`m>+&2kp-Gvs^4>_;yE zg!YBd`Kh5@hINHvc#A}zPtrBQl{+J-j!6YfJ4qTKbXgzeo#A*&E6h1P1)A_LcvsHZ za~$x`RMa2;V2SuNHhh=Xq8V-Q9p>`@uo=rA(QcIs6*@|UJRq=k@e+k|F}}2?e|RyDnKQ*y;228SCM5XrO<y-| zMU{vz(yGFPwIwx@1WIBX476iSi(;P+?S5S}vIto$SpQ;?Q^XqaTd|Kwb#LPknyIs# zq`)!S0+4irH7e^%48~oqxXx*Oyc>+~TW5PyZ0Nh;8%1Z>*y-ey7wlzv&}pnEe`-i= zV0id$tp5!;ZCVOjcpq5px`*&C!qYCu6z^BqE}gpW7Jj$q-UaMA z8n)g&SUd1%Qbk1~Yc%U|yXN>i;+nN9W;QN-@sUhZ#u~crA*m2+;rhI{YKvPu-0few=~broW&Gg{7OTCEslFNhx-AE`5bPy zs?Kr&2J*_EKcFE(oyJJ=2Z|arFGm*$azXJR*OB>*lqwaWz48UjO}6#HbaTN6v2{d% ztiL$a@E8ZIsSb#Uer0*`RYOE~lxo0SfodDVndteuZj!vm*0t^I2Gj zsTE0A^VOuJRlbj(J65;er?0@SN$Cf$;!EkdcgjP;q+(xAC)kW&IEv4DGU4ndF+}$* z)xwW@GX3&&*$$qU$yc~+u6p}M5fC$qppEUEybW;VuL=%v6Wd*M`VR8f;}O?*cvlGsxtJw768+4Ozf>&dGVV7D zroU?rM)`(|_ZxNj)TTlf0>f^~467$wWbC72KW|J}QL61msf8zj*MXh$DJEM}<0+vb zar*ZGBESpq%ROje^8tV{KVFPx5jSUf>B1ZO`nG&*%3sPZ93gm z#;9oXBSw5@_G@ZRjzx#enK5kYP_{r3T!!iJUG=P3oEGPjHf{E-*KKMpdx;o3jxNn+ zf{pr3Rj@!F1*&X!Ddqdj*-#$Gokm>;d6Oq?N!jRN*Sx@`H-A+tUGGSYoq+0tt=t6O zSqek!>q|THKC0O0oQI#*@oktY<#BM%4WyF16&E{X*k}|L*N0;3@6SIJ-I(2!j}|Q4 zr|tJkNFtq?>T9@5qSNZglVy(>64+y=zPeM&TlMLr9a83giPi zqECZBkwx@Pv3ErTH)RbbTCIAq1)DskUP74UHBOn@)vg1sx7jMG0~ZKU_m&jD28A0| zJBI0n03rg)6;!cjx@katx?;2BAPGDEvPZneS+Qh1aa*%}cp!ct{GvC;HS>VUZ%SX@ z)b`@=K(kPA$E?ny;hY(g=^PTW4XN0p zfx`L~O`7*YeeA^%pdreuf;xdaRY?c#(KZV;PkNcra^PBdFWuVvepdlWpJL4<^kIqu znJa9QV^M^To9HRryNCz2>OUtP1e#ge`Z2Fou-ZHx+xXJkRNXe z-juI~?Tg^j{k}iYUfpeec44WA7viR;vn>JaNiR{Z7*qg=X+=;h2nn9OOVT_}iURpf zoU;rGUx71_q*|Z0=a$#zEyvK@HnIYy&L3Av2mBXSy+@;v&tB9b$Qf>$dAp9dRlVh- zIsYY_(DR>{V{rdJB_0GMV*e{|R`UMp`ePL;zTLSo`_`K4kEWwa?-kU{tRf4~52#H% zhr$m%-3|E{Fk$E)i?QGpfwP8NmbQaTyPC<0U#W!Qa$SbX;hwUxNehabKwx`T`BJls zl+>eaZ;7+rD+Va}RSy)QI!ACSXWrM<(q<_9H4I8Kb}4-}`fQS^9gwcFM7*cs;JD~X zFcquXW~Cqc=PahFwL)OIf$iSeeyzpOTKJiuUtcp>S1o=fd7n3%Vb|Dr2}|&YQ%jq9 z+*7*D_cgn(`W8h?B$Q@g zM@ul}V*0GF(w9MO)9lNhF`To0b|P}-@&BBz@Hc#6T(Nv~J~h1*)-@)DOc(sf_Ed8ERAKa?$X_HluknA{)!Y4M+j(BIqnzeyqiF6w8* z(3+{te$|b}{|-e7ww*oXbk>N5K+>uS%rrdf<~OBeAe+g+s`%)I~7 z)~Cgh#~dTHM>G%b4W~d^Y#58zm~e~Y=6=Keh|2dyKv5+{2}vc-f!qE6 zR0i`5APu$Wa}tm9MdSGHAs)RlkQ>AE;P&^g#fQ5+PsZavJ!V*6AD{Z!-WjX%526n+ zWPj!kEy_`1nj9PxTNzZTZUDn75U8tfR3$`UZET^~(KyiNw`K468GZEO5D5JOW`f95 z)gtB@EnRL|8=1c6PfHtH68!cdiV!{em4=gnlCrPXe^FPT^S7~> z+6WNm35e!|6>baSz#{g+ZKDGfv6ni$@{7rjcen^vZ=+>7q^o(L$R2b16C<;axex6Lj3kA2#zeM?t5ou` z^1RIspKcC(+ZD>7rS9|U*?#MpDb|$u(#>!>#YiJU?U|B*-G9r{J@F4Hbzp%pTp(7L3?WCWx(UNL{tyJe zhvoZX9cj7;c818}+#ckXwlhsI=>a;Mo_rg-=L^i;|+T@dSh zyQ-UIw3pfCz{jeKtlQ5CgZ!hlG#(50S#PYea<#8}6l|v^jG!2tFm${a2c^o7GQpem z{z|ZOA$Qeo9Uc4jrZW3&glb-KfdER%lIw+x_}^#q503~(t=H4D{$yg}nWK8V4!ln9 z$w7@HfATa%Y|@alOVVT>-pt|>lb;J%!_<^TkdwX;$8@3wmt%V~sLOkZCEjQKN%k4* zji{*FFw&7@w@BkO*LUdf7yI7C8bd4u@%3RPCllKoa5C4n-{s3oW8)u-t>t$+3#`_K zBBZv>)g+KQh1clfR<^Hu#cq&UdTO?x)rjPjHL~QZC&YPEGy2o+a0+yNts2CsM#uLc zCZVlP{mbni%XqgH!>aYs+Z3-G&g$|;!@ewsVZ!km_iCc88^V+QOV;|rtw3K_3En^ zw$Dx~!+s_O-R2us&%JAXr?cvPqaCYpqD9yYB~N^G_O(TI|8q;<9{GA8VV>LX$T*D0 z$*H|JdSZ}2t~6|y^Jnr%{3<2CT`zQ9wK)G^hLdCKM>U7fcMd^UKHzJ|cQ*q?EIPu&aPWLdl69PVgs33Mt79Q9M zEIaW!y)=<;=xd&GHCMp=&PZfQzi8ZRi#hPbmp9vADuc8h$I7=L8$E^gr>oA64=}7B z4osb_J8He5F6DAil{AJw6=Kh5QU0VJs&$I95)*LM-lF1yXS2Vw^Xtp>`X=Fs3M65$mom0d1V|9{fxXP_fm6VTIjNg>j|2PMb=-FI7iMoVIuDnIrO$$!ojjZAcAn38 zU`QWab&cIw$X~3aXl}sV5N=@2Sl zUUIT}0vsJW8v4Fvq(G94rN|o9P?lH$>Hgj|#jrm^LtQan)Bw2;1nirR4rukSMWG)q zSYDky%`rYMfwfNU_FT<%A6NeBhWyvM@^^XpM)h1q{N)2+!FkHcRNu_Y3!Lp|g4lU? zeoAd05&Jpj%6H4rfedpnOlYGbTjnx2|FHG+w9C%`iR+jv;_BD0mNb5STgvM@ zb#3s730u%je0_Pz^Rs2`A-9)Lc9L`Xjc=*d0+5}<1Uo3`h6E=%*DrAylik!?Ex3Oi z>3Rkujq`J(qIx#_^tx9eh(MuNMEPLTbe>&|#gKTN9k#`XnXGmyXed)QU= zWgQVbVQudbchck^c6+zupY$SqPt`K36PIta)HA#t)YOP9=ju-G_W0q*NC-FoURe5+ z`CY7=_LxsCV*Fr^pw{|-vG?ZxQ2y`Rcv(V{RLVXgL?mQqhA3N6A|WIq`!e=n>}z%+ z+o+K2`@W2Q$uim3vBp@2Ay2Y|)H-5I0)Cf7|ByGq=^Zn{+Qoo;d1QEd@`D-;0wEIH^xZ z6XU;vLyn6;{e3T*=wUs>=uepWF=GP(2S?M1R(c*n`8PXuwp?^c;QB_%=u%IqEWf6f z6Mk|sRskLijVLJq0opr>_=>Ds)=2=bR!*9CX2~nUVY%06OxJDLu9ft7w6s}WY6lNV z^ck`@scV;t^m{dnCUdBh4a>3|7vGUT&eylkoLlWM0y0E3{zjq+dbCwU1yC?=^$kq8 z9>feE&&{J?^We}$Cyj`)qc+m0iBVxtCE0L`hGJVvWa2b#asH$#?E3iBab0cLPG}%O zj{cxUarjgrOHF!lP#(WcTE%`Ht8w^>ww6B|elWGm!D&`{-*mrO6$Fh?<%ItH18Gq5 z^Llr_FM$5=!SvymGR_EO@xgUZ6_a=y6m#4DPZycS;$LCAxu*kYg^V1)!eZXz#0Wl8j zr{|84U-fHpH&DGwH&6`!EvkJndbmF?WAkW#p5-xB{-hMK&$!wxGOE77z=R)&1;U%s zrhKxDsMNw5J3Sd%(!1!rw(w0X0b?`iwj*t3WA%FafU{{}AotJb+kC5&+j*7~mx<+| zb9iL}Q?3xiROFv*sd~FKIr+ZmB($??xAnQEnV$yaBk!Ap4_JS2ZnfmpdOgAT`g{Go z`@Xw^Wf16tgyfm3yTmiu(Y;P-Uib;ueVe4qNSBc_bJHim=L&*ef5jrx;L|_54i?gl z`s?>?XMFdN)o)#$+>c7_yP0OAB7(V@b{0ClH>gnxOhQ+A?$%?RZ^72lb+%Tpp63Qy zTE5SwtN4QkUxl$dsRq^#UIDTSt$wq^pHb9CK_``lK*W`@iHw=$L)4Q;TZ>`4@rN0u zbQY864MO~KJe_pZrjP>blPj%e~>Mwvc)M@k*qBPY4J`fcbPW}Gid zNnM%a$xq=o=OMEN))KchXD3oOr$0A0>UO6FmM(V>q&rP+&is{STv&~iLOR5EV6syj zJm>!?qK^FMhNjes_{EUwoVstOzZSfn%wchmRl|MK9B;Nhip>%CA|W3;WZ)(|R@(3u z2%hS?WzAhfr;*K8=X;P+e$4x>G6`5& zlog%qnJ}{vSKBg29fuuJtxlx}W(G3s&FW;WOVZHbK6Z`65X(NEy%ag)f#&U7HHyDH zEaX`oAAGqHB2y@Sve+V^dZok=UtkZl2pJl&iuG1fhy#;o>%tzO0k-;6C|7z}hgTm| zuNwP#ILH?*>dNH-b?(%+l`k+rO_I22rJLNpwLfI)8rV-%io?>ZZ&k2Tf4Z%?Yr(iN zooDJEX^Hl%i-q+Ut~FjAPXRn(X=vNqrI=}Hc{d(UmF$M5Zn3==9fV<(3r_#iGg!?m z9}GSq7kWkd^RBWBd{jh1I^rsthgE+Eczx+k55m; z@KE@<@d`@La7XqbP1=E@0s9zt(UMes>os*fd}ke7U+7ToV8fgH-*QbPjB)qf9c;C9 zrk>f8WnPz5N?sTNsY?O=?_Ei^#amhl^C>8;Z%m zgp0bjVlN5$9t$#DG9QX5;OYC=w|LzVWv`*F=l?66_avCK-Mr{qbBX6#UjPzMzrkrZ z*X#m?mmfDdxs|xsN5tmLA$8GjeEd6w$6D^{a$iZ?q+-x3_ST8hFduxQQ%tQG)^(JP zeDX{Ir1)=1zr{l)bf3^Fum2!ja%9$zyxtq4GFk(^y&RtPcTJps+!XcKu3D#fPx=1g zcdM09>w!sL#_>3;Z$0A;cMt4%aak@sDzPLSCkj+fyC%{nFoa6jo8?iyM7I&c>+%-q zQPi1Z&sqO|x$(nB-u1S^y`lXIp=tu*!lzV78HP8hB$eEiljyRle;xL#;yP?}#)#q6LLyn;F z+k>OVa!=|$@4@Z?#MlLjb+FAO>+DnrRQq$+fzFhtldLZ!QgQzyGxAy#@k1mb!#MZs zKnFPN?oTYNXhYg(RvHq0H&1tEC2AO|vk!Xv6*wFpXqg)E8^=wX%^?UIM4`s6_b?SH zuVUDOpzcApk;oc*ecUJ+*aRBQcAoF9d_k3jlhlAT8iX&V31co=QqqYlWl-%5snVIm z|Mr|k&BnO+;V1OU<@PKCC3cBv@ zY2ty~6(-Z|R>JH+^HnyL5Q|BpR1krpJQfX>Yq~90M-)kiH{3xQ3RCi zXz$gPrTQj!{AaV#n(DYi2Jf^E@jez7gspyHxWFz%hpR^u<%wakwkrLO!&U2x1s0*4 z?Ew-qc*^$?C>91ciG6{|+$VP=C&C97ND4Q>& z|5oBCjM{*2_pr-%#@(O|6kWo7IgyxO@EH6C6pDfWRw#-o4ZYRYcs&B$2A0fjHESaI z&#F-Qo%s|b;YZXH-;K3SQR^~Ygb5CP8gA9PChDUaT9Eq*mGGk^qocCo-b>@ZTUuv# zSofofYn140sq{h)6I0C&sXCM5CW>c%NrG%W-b@JC-Nk={DK78l=HzXJT0i=vs5|*y zNr5qfq4^V>xusn7m#GIEbEc&gezf;0UngSV|+FCN=Y^5|2fOcSkH!l%}ca@`ra#`$cDec>5di zS9LNW%j$w2ej9eNZ);_^5k(9<2!vmhRhC8Fhca)ei27+n%JoX^dsXw*r_u%IdoAr^ zUTRO?Om;bTL#Z+fH3f}GnYVM7CNJ~&)NIS|sO3JssWNEpXSwK^TAi05*)YHr47^d? zzGCmRTbI}^piA!b)ZJe&PH!(kLUx@C$ooxu9?u^33L%n2;>!D`Z$xywk+MH~&c;~; zHZ6HP{X==N?c^$2KH7^5@Qw>9Nx~Lilp}U7x(+4G_fbhwCr#M*KL=5Ou%0n&saUXEogNM6Obt z_pE*Y+Hy88Bb$_Sbw^w&ii$q7XhpW2_A_WX&i_#TbXO#!I;j1(#HCQo-#W8bL***wq!9e>7S#@r1x^Za^*cg{uf@`SOAOxaRz6UI(PFukF8gcr$l=G1(*e1` z{+{TtKr9HWhIqN>(^Sq=M zL`9=Z-37G|bJyHcO0a`YVC?dSXOvFa%WRh}9H=Q>YL%Rh)Ajy79HXBJlRn7A_FTNv zG8@B5pq+qRx6UesRYYQP05t8t)g1o~NxKs7+G1&!STWGM(!r-=b7@{lEkDJ5LU$5E z{+j0M>#W_hrE3%UiSs(?p2S-Mdg|;>8sp#Oo*mprMsFI_s)~FEJD)jIHw7}sSM2+3 z3Ng@l6=pFHQ^@1Ub0vv&@;ay}&61Wa8MSt0O5J+m5-_Y+(s%G%`f0RMCk=c!@JDhn zqHb2qcV;JYsl9Qm0*%f>rkUMrqH?tmme9S`#*@cK_ulau29Jo?qq zK8>6-nwi-sEDbu{AWFI-n!#?)?!qc&=@f;DV6=2hu}j->8+xkxR^<=h(&K^GG@s)9 zh(fA&G#}5#iHK!e0HZ+LJFF4oqtkvOLqh9&t?8&q+hc*+z^^LhkC)(73SFbc4Ry9X z{6QeYymO9=pItX?a|}$r8|GLJyTZM4_vs@rw!veJQ{scuqG`j`Ne#TlBiWMC0V=E* zB{G4HE!TUSe+r@HDT?5oZ#?FH#^k2_H23vK=k54oXfnlP~r?RU?d*J0&e z+C2|g8zST)&Wa^N7Pe4RwlBJX15Skc6BmP1FBPAg6EXDwNR#+Z>a#4sb}8oH!C!abp}c79$P6{GjxsxqsAnk=6Qa5 zb!uw1(3*>v<-Lk!hii4$ZwcA}XAezp?;e)r8<0AFZv^b+icp_<0N>3oD9* zI5y&oN)C?&1-GA1P)&**$BIzF^DP~yTG*FwEvJr>B3f*wOiDX=tl^9@gwEKH5GhS& zDhe&yAML{e9k*$^pcM499Lo(S=>R&am;v6tD^i1M{jT<=9=vQ!>-^P(t?dYpL0nWHb9?%LnWE z5%RAZwKP4BI!i2qezBO%8XnE`3Q??*HG$c3etvr#8%DHj^7hmTT-iEH6z#lJ{u@WT z4cH^woT?V?5{0_dkLzc@C4#!3bx$kT7k+&Hus4T2@KMk(DlC1nD-aNH{k(n0T6m_D z6;#MFUTHc{oFxxym%M#d>6&KcnAC03aAtx#Kct1qSvA7Tr!b;MU;TCdJn&N2!fdm- z*8bwCwYDzw?^1iEpA*Ynxy1dQdp}c%`}45XIAd)M!;I2II({M!P`Rp;dzLVP1aC-h z&&T*#!(9^Nf(PXO)E1aZ?OpyX`Bj|szV8(PBKWVS$$uIHVFlDTP%%kQftQPa#n?yU zB}*OEw#%{q%7Y;v4rT&I1&8G5SH!PB9$b5;hV z0;~EQ0x+L@bHhw8i#`Hor1MFeuZc6g=@abNS`_vx^(CZhlK1<2HBaT8Y*T(9MS#dX-w&0Z0xiYC$#@&#lh= z_9>^0VPy^YYVn-v(#pOX(ELY$-qr8}-K|k5;>7A?*NQ z;p{rMI_v`DH#dTm=2Fr*UiNYRQt&)Tki_4zIr#7;F1>VUht&qCX)*zztaxPI$|jc2 z?g(b1r7=)!CKPY^t3t@cr||gIwDo zSh|DGu~?vtB}bCttTD(C`{d+-X`^cBfhFF4*rc~^BrE`=qR{};1y6Cc)bek1OK>LLr#BJ7-xFWnqo7x z%9}|xHwmMPxWXmYK7-N=e5Wlh1NEgS4DebxeN>}Eapi>dA`NZdpx}XafgkgmfnRQl z6=pWa6)C?#z(k;5HBc(L6`xOw){K{AoPWrz*vt>Ej!)8RFXMsdZ_$>v2Zy1TCoM-3 zpO`w22##ef;Rq;lRxh@=#E{r5X%G3Sh(9Kwp`-OK!B$4Au>Ih`C2A}aGBl1~ zDcFy{+Nb@&ex{PFcug>+JvWbYHw~^3^yIvh__ylY;)nry8;$4$zdf9Pzv&K__7b%& zPPfQ$a~d7pi(4oQ)Frh>e{zJEt5Ep~SzNoT3}a0V9KK5A1V>k>)?2-$`}xj<8X=}v zi$0~b5BZuK@8U_`?dzXJ>bqTWLYf;KBVqnpu8FhM$bm+JhnaJbf#47CZ7YUEv3=je zf8S(My-#65qa^Z+5nd0Nc}bu|7cHSZAqUu>^_q*s<)Y`<1f zuyNX5nP&e>HdP(^Y`iqCpO#f$Khb^httju=A#1vzy2gGZsCDiMo}3xZ1>15{MAk0N zX21l~*AS85*I{Y)+=~tOiOq|9m-&HEIM?1ojvHY_~8a5y5ny$^IJ4 zz#{L34-YS_$GzBZ#!h@TxBk8@KhI+Rs#r7x0yKxxf$fuqB27wd3ilZxpEkHr;ec}D zr~1>q3u-*S;lnPwcC+r2N5E{Jv$&H~ZvsR5lUPmxgkPba4D8$GUgr;^Oo2>kvW&7o zneSLqGK$4tgRH;V!zRgj6dQ<_1rIom9iQjl)_l}~FwU197InSq-C4%|s59-EZO~mG zcDCx4IVLGy+S42D6;YUI2E(~x<>A^M63=H#wR3KJU`(B;44et&^>3fO02zkhhzoV`w#18u86(nf-fe6t06em0$8XYt{+=xG!Ow9b5x1fJ$`ZxD7LCgwfUWX_dTBRVXxyM&{t0aC8P$r588rxBoCm>&i{f8dzFZp`j^=iu2N* zIX;5b*~_PW;ygVyM}kBIj1AzvYUC<*H07qKvuP@s3X*UFrru_7Ntbcy%ZAdChS>EK)bSSSZ?kx8q z=#qtw;_!h*DFaYg)6r2}J{jSdvJQ$bhXpZzNyQS@8{r}oRj8vk3>3jVcE&kNZ-DA@ z6F_b^Pu{~y3Iv(vdeiUwxqm);*psu{i+e2Y-#efP#I!Oq;-;FZ?F+%@+dbIlBjZ=T{3o67c#g{ohc7~`{LId4H%t5P9^P!O~Hz6FVi+gM3J4~ z?%@r$*f*=uW6mqyn}y5?-3PNqbu@1arQ{CPzWU?&1GzzgMF_Q4xbq`VmqT4j>m3HNg;>sfb$pE8Mx{-p>;c3%ceu`Z?9VsLJdJ8RGa*Z}}S(BNM>Ced*?WgnVf1Yir zTdx5JyCwL{pKR?qxN>^$O;|nVENo+}+9ro|C9SBLVTseLq!#MPd{;uMf?BSkA1B$B^LX8;iZf4ifo7et0X-?fJVX@ zEA{&?+3~?&F8?=|vtgQ1DUc#%AzBOAU4)s}I`}@K&SBuiMQMO2au+~;g)FTWAv#qJ zpHdX>Q)}JQ0Ps3nLO3(ZP%SoDTY$j67;3Vn;8j-rCz<=hf%kmxKyW7AXZIwUt;} zzj}4kn|k{MWdkxJ|NVYbCRBfvb<9nLD)rtJrAM*v`&)62ij_ewf?l?PFIe9l1d^qJ zG;NB33EpfWl>Y#xQlpI+wvrsJ5dy=Bta-B>`V{`(4&!6 zojpp{y2Y;-h5xx(ew#1eJ#UMv^r!%2DJTW8++4r^k-{O?*7Ka54}eJ@(MQJ(Bxr8< z@OTy?pwTkgR^E&qO1~wOp?sedNrOpucXKUr&r1ySodpP=;s%p%;DiLP`aMX)G|2jB z%e`l2ZH?ee{>vGe>>ZO_a$>-Y+N8J6;km#RQmz=JL{kJIwcS9)$tba*-yBE;G2Ocp z8(($0vx+R~P@KNBu0%ki)#UnLme39|!~yD!sJ(->EX#a|X&dBScp; zhElT&mYz5(4^!edSai2qo0^~b6c!y09s~(+>6_b_-9WkfHQF)BGVvMaC)=oD`TFvj z3Uzl1&$FcU$_es7aqi1;dQIM9cFB7{N9)z$E$iS=AuJDeS-RRMID?$f1&nhh8vMgW z>Fz1^uG6T7K_)n8AHT>rruPF5#@_WemwQCl{(j1}LgxbnBIp;~Wqynx^nu?SvrNVx z4%K!2Lt00(6T9e7e5*g~+(~;H3p3z(O)ha_f6Cs`CN`1fy82c= z56sKS>q&eQGzPo*c5pfCbVJ2g`d|Ohya;2->kcl;rAos5Y}-2Lm{6e5f6Z^KfD^c| zlr&))N{PqLtL;Kze{~$=y5l|Q5kwUd`sWJx?(rXsOh&jo z))eR$tNm-g_#Hq3vl?-Ddba_u%}h_6+H*;BZBMS^yHR!c`SY@MEbd$-G!J0Pz20}8 zGpYNyXNrOG()&<*cqV6e@a>pQ5^3XFLdkyS~y>zqdC1m&kl#_d%Q%Y+aI z`zJ&!yZ5;fYa97Iaw+!{Ce`eoNX7Ds?AlJh*Mt!L@T3sr%vpV2rMcg%`Gtc3shU;D z2VdtILaUbP|Mmo%a zZDE!fwLkK`N&G(<_1M&rn}tjgsDc0{|5-X8uv|MhB5rdEH6ojLE_snQIrJEb$IS`qcJJ->i(%CyHW?fCnb04?EEN3pb>fh5@`!St3XydhhXc>~iGg+V)_ zO!Ap&_JHZ?=$IRU;-Ol%HfR6PUi76%n{IFCYLT4q5e`5|1E+sOY>YAJ!~ovwy>h~Y zB+}s4*kmd)z6OjWVx;U(3?;Vd9txTs7rUjVgqsI}QX%3c*GHDCSzrA(3 z-HtExLL>^a)|oo3oU;6TApAoK;d{;$b4~FdUJ|I55{X%r?a)|QWwfcih55WCTcbQh zCG&gXj=mja99pw#h4`9R)*tc1&EC#d_e=Z*rWQ>zvpl}nOms35HC6TZ9@&kcr{<=) zpBqcrNabI~GlA>L`rXhTadH9mb?B&Addv(5J7-EllrzA7`0!2V3xA8g{sPWpcRYYb z+)~zBYNv3ZT2sk+k!hO^PJAMf$i#5@HslVvwUTh7yZ;tS(BLicR6qz$0|(JQRH9P7 zsi9!~eM9d3A9)SFJ-ThEmh=QEe1?}NK+L~FA?Yf=48rh<}vj~33J@nGJ`4=U@ z+ZuttZrOnYV0&pN!Bm6*1M>VQI0Eo=)zy6QYD@O$msT#&?DKi*u}5GU*Lv-}BDOZs zAA~EtH`exfXu{2q zT|HFHOwnMJl=PUG%g%V5Q=5F(W_mA4n%r5uS#e#gHI^HKm%gkfu;G2!K0&z`%*=cy zeTms^!(x-Y>{+H4Dg3r-k`(6s%%5G%N&5Qq&v?n-izDAWBI3mV$D;i2a=iy}D$#kp zzjE!J&PM6!8U3b^$fRy_GK&b@rJyU@zxJar#1aRgSe|ty&5xT1E-x?*z^qnPa`R~uU4 zRgm*nN-Vj=X|^4U7V+0lP$H9quB8?&lkkJjTqEu2KeB5U;ml(4ehTxi_A|4`tcTO{ zJEBs0vi(!XiF;Y4TIcteMK0eG9dCOWqBD&8!Qt~xG!pGz_mo4)r~Ih(_5=>76XwdMuK0J?F$Uh|HSQ2f=paOdQ(?w#VR!t1^$n0+`pIp?p1|As}H7f~GU~5+Vwt7x~qeTKP5hHpj)$rE{rc6kHd- z>Z5om@WPE7C^emb%Q|GbvivvF`uK`cwC4NAJ`9)>HhV2Jo7NxrzWIl?G{91H&lCMw zXo-3_DppnezSe7zvAFFBJ>R}b;bGeMuqC3eb17*>LZe~jJ@Z`u{9yelo5;&(mf&)P z^Q7Q)38M3iNAL4djvLJTne)g(uhOa16wUVUYKj-VW|b2GT2Lb4q%-j!Qi?a;;rbf9 zbk%#ra5O!UWmK9fZ8(U6!9D_fcFpO0US2i>?9{Fz)RmAB{q+fV@FfVA!wP&Hzj_^I zVm3Rf`%km_5MI9{C5^!h>M>Ear#@?G!(D3zy3~1wA@d+%#ErMt{06@XU2);KAQd9w za%pFslB`o@Drn7N522lkL6U_8tE@MhR#=c3r7xE$zXcx!EU6-|WnDAdY9&8K72@$9 znpb2$GyhtIs|2f15T9j03uYPpzWY{Pin~IJbyv1=?$Tm@aPU_z;w3?L{TlO$?3@gy zwLwU?8{t}f%)rib;p<)~-{>m?X-l;v5d>axTx-X`?Bl!67v!?EouLeNtzo!!)0r-F z8zs`|1eld#c9T}=TlV3_?9cA_lEm#vs%-)DNmikhOFi7fL@pPTMM#iWDQb6ntnF%$ zP~S&BSoVdK$?;^9i#K;!TS^%xvWpXv2Zjv@aq@m)2#3t3rFLbAN6Do=Zf#eD%*6{T zhRAu`I;Bfo#gl+uuKs4V=s(EDShUR2sti}~QiM5ii|hIv{|&_PmX{n^>)0Q0payKd z{O|XyLv9>iuMZ#m8y187iB#cGZJQuLNbxDQz5Go2t63l(Ewidv-po&6F6|JnSP&ny z-g%!#WI#KVQT#WZ!Y@CpGH%d2R?)fj!klgFC%Pdl0+2(wjEG}V;Jo7?ot&+U+q|e9 zdRaUw320*4#y@WhqgCa;7VEO$a{}MO(SglNKRT^YTid*&GsF}Jo=8}$uTBo#5I{&= z8g`t{F8CWLGwA!<@t7YQQ1iuYM7A-O_DZ2CK8?$12}kz&sqY%~salf;*K;XJ)DxH) z+Thr{JE_PFX=DX0^?+_ERNZ?N@sY6`s_3c6t0JC>wmbEyOX)xCH7n14rz1x*oS)$Z z_DT0@jaw$4`v12U&ZW+-j{mKGv3Pj;by5HAy)|6xH;@k#P2bWQuN(#C;~Nwdm`K}{ zY1;3P))Ls^i$C*>PwO)!$=Zt66aFTBggRV2BHgHf0B?bB2oxp8;m?>rTz=(X#&$}V zA7u?1_Y8LZwUrdq{@kT^%k|iG_^aF;po^s?)tQvB!g(VxgBMvR_(UIk&ZQsLyJ*te z=CZv^D4K3d`<2|dcJ4?fQlb@&cy3pO4)&L*;9-0SCZQ;U2V-lGGiwHm#0OPChUC7UG6abw@+?^@= zUZD1ICHdJ&fR`qJnblQ5@Keao@wHY>(5nZ0aLlfM^U2|NtamPVVt|+SI!5_i_ z6S{vFRU)Q3rUYR!yJqNiW!`91ih*?XW!2V!PM9XwtIKK6CIB{**7@L#=Iyug-#_A_ za~=h7+wGP#)_T3(<;80mn3LkYW|}{Y#e12OdhRn#oi5x&Z9**62#?Qjvz>%T5gkPT zazDLdxO8r{cU)EQ-#XKzKc7&X97V*5II*~5Itq9JZ=h4>E>67e5iH^Rr~7GLshOQU_8aw8hC*U z9_D3wv~SDolOzgO+k!`MBNm&q6v783;Pr=VxA~5uJ{|T&w3&u5YAE0ziAXQrY?+|v zpk*WPIFiPk>TO@>DZWCL;8Be24{El-Xg&nvHZSS-u>^`rll#vr$vZC`GvSp#WG&=h z+{)S)P(gt6O%#pGK5+irsrTk)p);2~Dx8tyAG98lHoL^h^fx@J|KfhLhy-t?SF1}f z*q|GVmsU}4@^o!hYAXHw7+;)gXv#|d)-qp0JxRSHM@qTyGxGA+fVrk-u^iu)OIHd& z3Q9z7)>Dp8ZL@dlFJ&k0kQTU|MIP#K?0lU71CXn?*!$P#0BQDaL`dQ(RrEFNcQ`%4 zlkhUgn2b$`tZF7kUXZ5pC(B2F``2C%{O?O-UG39!i(1Wp`XrlnMY(_mYACFPxXW&X z>Q4-ejg7F5AkhZT2$mbT2{(v8PiZeuJP-~H& zs1d38a!uyx^B=-NQDpGiFys;72a`J;L&WRux67xaH5xXf;=tnpm&6ro<_Qbe=Q-G= ziRL zSw;2T9xZ<@s4Dx@woNiFvoUun*+I#$2+eshD%H*3bNUO5U=JC0OJPEp4W>mWR1bL0F zf?<*mH(LCwy+UatM^zGM&G7U}x$~6xt>)~8%LF1_?Jh<`^m%Hb_K!o{BV;se4gr55e5@oO zK^d?Or)t$}Cda;hz9d6&M9H+9t-eynWZ^Baw$3^L^!Xn3eVr|Fs<}blXO;Kdddp)q zwZ-PE70go~?jE=?=)x`kl=dzg<36>d8T`S7qoa{-(vh`M0xtwr(k(e$J7vc&4G~Z= z?w#6UjxmpwAE3g z&e2IkxgAUAE*EnsJ5Xd#u@kQ4kt?i)ZaFv8+XDsmeW`6RlZnPW_85 zb~v^qvUi@!k+LP9t!1>m6-Qt>qZvrti6GUlW#lzA&lqV`QxId&>=HJ(qQJxN!%jKl zGQF3mU%t5Zgf(b8frl~&Es+24Un$V4yVC`rAf})FT{|Tu6O03vs|6Q!Z_|g}p}3y* zJHk8RR}rHY-gluh+*7lFN5+mlJwtN9)6+qTWxZ22v(LWPC85I24+8|$v5#||?!M(X zJG-e?-bZ&H!-$Nx?K=C2yM9zWhZ9rV4ZkfZc&^6QGQb`$bT-?;cq7I;6B<4gA17@~ z%4IP*m)Yoi@V}>H!h#(xd-p7zEqhvCxN${=TtPkCebh9`w^}#AMX?>bSisHs%_-iS z;Sfb`QsfDm`+f3s!-=Z!!nRX>sr;l)MjgDcNG~^MaT+;{`+Y)9SKo~E-}Cfw2x*|V zu}F`%BIkQT4VvHJs34}Q#MYBqFh)hD)(~lAs z5#{PqK2Glx&HWQ*zj?@f#WS4lhdo6bxItKg%~(YCsqfgm^53oL%ouYliTXYz4v8*9 z#f2#75Xv+iXe>(Kj0T=5e>>qr>h`5Y2g-q-p z`|IqY1^Ui7tFw{zpyT+!BZ)L3s4~Z;me-jK9%W=c>zTb;3ffjAT*mW39!|L|9d;_9dga>MV2oj>GO@$ZC1E4im7L8oW1!AEZoH>)FJ9N?1R6V>6(h zR62TnW?{l1D1M|qF8=GSqnu&uu+x{lq*^J_J-&{X9=fjwp>r@;URi;dJ=WaJA_q`R zr*UNW%Zn`a%V+~q@Bi2Y{8y*8b37;#)1#3Cy!Zhh^2w8x(gdVgfK&=*EcYp@IS$KI ziZ(<64g6MH7WTkjm2l z|6h}x$4Qyt7%eB0=hJ?$q-d>f8YeB%cQt)C9{C0Tp~cVg9@yVs16S5inuF0cjt@v8 zVgk>Sx}eto5zC)%O58n4pBYWh{P_6UU7j}$lGQCpv)Wf%q%x_e)r&I(4?N9v<(vN9 z7wCkZQq4m23)S2{r)nGrP52pG0_vqJM{l^8}yB7P1PGWuqLbi z8~z^-l*s}a$K>#?Z12Qz--EnVKdxm`i}Iw4fkuTM{G>Fw`6TF(n!_>GA?*}fOef$0 z@qd;k@7@Qd#6UHJ4NBn#mAH&;7m`ULe02fE)Bv=NHG%$ZCZWa`zoD1CU17IryO4`E7 z(gafNZ&#FmgZ&mHA-PG^s8Mxv{jG2)N-@vy{GaPyxnYYm6-cW?b2m6LJaSk#Ouc-e z&0q4oR=F1KTVmg|W~6w11$9$c;FHg~EWEnHyf0OX)T*po+WaOs;F-eWz_z*_{rcw(#B@E4&WERC|VLpmx!OHOmrEO)NNSz+jQUgYi9i@R`uTko6L14{{F-9 z#7^3oru*{I@eNQ+A76EF8C|2}oBjEgS92HCd>pC5sKmcxdOCn&mV+Z!82jgt>s+&-sZNvtHiN>6+xI-bz`@ah6f>^CCpSNrjHLyPQ8 zx>y6?PoX|JZ|n|;{jKzfUy1F0crsk(5_XJ?XnRxmJf?%+n|!qg)dbgbi1mW_vBYrV zY&~Ia2(b9h89sMpv6)WGd%!zXx4N`l>%`Li>sEoRN+JL&G z=G())>G_T`+K!WE5$A-uH=Uj?Y%^u{ZEdcX7ZG0Vf0M{y(f1{0B+Q-R>aI$ly8=RN z{>IrX(ipkAdc0sN2qU;V`E$m2fh}RmIJ#oqnud`>|KA>l^utbvO*LB7begrE2FWle ztB1}Wfo4kW1-pVg%i1C@{L;GfBlz6^kVpW=0jY#J`P`;LBfuXbPm$Lov~Ks;W#WZW z3?l&yK6nXhLyx_BmB%`FW)AM4*&sS*D@(Xx%XvvLY3?14!yQ}e|*Rn;}3 zqWa$7LHcnobjGbu(TxeIb`^_x1H^H>*%nLHKone;AG;? z44^(-Klu{BzwuK36Si&x^q3Dil9nyNnKswF?`a{E>2TF0+#oQ(1?zGUv!~kQ50TPe zo4IKhz6KuZma3Y7zY@^}St9R!<+h{iIZmhzs=Eb9?RD5bmy{C13 zP5knL*`GT7PObdV*?- zq~2`XmzU{K+HAy?_TOP2OoHR1BcSbGa!qTT#U`3~7`$53?}BxOTC?Z|ToZF}zIz!H zo<&}2IT4ush9}@y!~S8TYPzGB2WF5r4%-P^w4^$c)u(b-p9=SKx`n-4@i!3uLQJBfimR`h~%t21-s1EwYL@c{-HK!8VGXGYZ=43}evO=kKTXrP`0Z~%F_nv8g zx@XfL1?RYbm_~)*Q}x-ZN`+Hwf}S)7Db?9vt2r+*7M$Tnr^DU1WhXLZ)h#ZU*mIGroA zE7)y3GHY`Am9(V;8HK~F>rw6&e?$H;A!@u#&zlk;z#G?~`tzGeD9|};P}}=ucKBsj z3+h{Z+0|nBe2&4!AAr(eL_gO+OF%;ghy-1sh2fthHtiA*!hNCZET(hN# z;8S!=%E1l4zHH{z6GQe@M1uX7d3CpTZDy-q244xI|Gq>5`kA>K-FatMsp=-jZz@`} zyz5VryEUyBXlDU9i?qB8`bwyP1#z?0otNSUO!nd}(XjA8VDZHo>&U8h(dv-K%hF5> zarYLcrtdz_XdxWjQn)vRUl26>$5bG$3EW(($tF$wvC7=sbM1i5fAObO?}=ptYz3e= ze88;&vr!BkNx{8kfB^v7X!wP>P%eYx6}rTau`#YhGeK`1h40K4D%a6>fQJ0NP!xnW zhTVTej6?8?MX}{`9@kVrbXhBk2L?B-{iXk~oj~)k!De`9*zbHf9{l3l`?jMw9Q_-u z2+PlQ;1`fE#&3+?!(nM-KT3?pG0&j*G0A^mR(&ojXj=1l_CMXO8ps`~jfFswkeNz$MvBiyuacVg-KLf)T{A&z zaC=rUlYu3*y_~=ciM5A%g5)JmlejIFdDy-H07Kq)V6`zPv^jGC^x1bb7a?mnBrhN) z|3>;G^>arKGQQPAd2z-+J5h3c_Iv9;OfR?jBdpWpx2omDR6y}`mBPNOq(9QALJ1Qmi==_LB5#&?rN$_|xo{!i zf`+QHp6M3SOce0;XvBx0ajSq*>?|ApV$l$L{3oTJh2iapY+Km8%*_VUsu@#NXAoo$ zG%WoP++NG|?%P~8o7DNA5+p5dofO;5f$7a8`+dlJ)P!W6)lJL=2u|oTKRrx*#S+Vn zW7#0(4$@@6MfPF!De--*-?^d^;k0hHyb1>oy2kHAiiU;$TP-X0#h1!yU{LQHpzwLc zcLo@Gt)KALU>}mvayv@Iy;zp%#A~3$Bdrv}Q{ytt|3%t+hBei0Tf-I<6a$t=P^t)s zQdOFC6_qBS^p1+u5D)?ch$J=;K|ldP1QLq$66qyCkSbC_4?Xk%A)$mG0`KB^_PO4( zk7vK%k8k}97sx%8%y zmZ!mY73eT(P3HCpJ2XAsp;nY^A7V*B#mC8wcEEl>Um{l+?AH2llg za}nKbeREUcj}9xZ?DkaA&^jUYH(?B(P+z?(ZuL#JLNg(uLJOI1OWI_5VOZ7s6{W5U zYq)%=9wGW(g=k0QD8G2+C+FWv&#cj@5ei0HIC{lSAYe<#cogm$LvbbpQ|kNK5? z$w=Y#1s!0}S2$9J{7{Pa<%V+5jS<_kcqKqz1o2q`71ZIKOKjCl8%nI zOI6=_HQxU%Iuk!Lmbn(Rn%HXIa$=akdA8FcJ^9#?!O@Aa3*G##%fF7woKA9Tgeuye z2^5jfmj!T?gGq6?nc81=o> zsrODT`^*uxJKm<6^%%AHrRY5+?n}R(4?_rKo+sFXTtUL|p~CIj{it3AP94CDw%mqW z4s37?gkRcXFuiTOcfcXj zIRX~|Ye43l81iy~{P*vPlsmv}pW~Dz&u)#se8dPs_Y#`gl{>hRzxSm%sEpkD=s`}W zLk}H29zS2X6>N7FKT4;e{jCUEy%Ms=Z+|Y`Zi;l_IN_KmE-WR{ZdE5RlhgjTjj63W*%C*EHFNdN0UWd(p{2k|thI)e88 zcj>Tu=P8eyHQFYUQ6DWaw0Cdq*uDUAdBuOdxI~kAsJt%`>06_&Jt~Vmhd&c~=GHG6 z;rhJknJ<4+9A3`*iSAt<0Z7lpQ>$kF@K+K{cQ zKLwyE@$7rC4wpD30{ZErmvVq!(#*%Ba<5+9Yka$VKZ5N;)PUEmR zmf+xj=aQ+-_d&W5&sCcWqwW!&vkk8@Ta|uYXFr1&ExJHBXypDbmoi(8E+Ul449C=d z0faF89F!bvJ)aL^5^g|yhvau{#WiPbQTcIzGR~1V7A`e=2E!V0&<6cQ&fxx)h0Be{R%_MnJ#{+;NqzL!Th~f_RBFRZtxW- z6~cAsw&hJXte&=w-?i@ymIjN!x=o(*cv}nVvD??#-8u?L&mG^gOaf`frHX;^s0eLZ zf4jiswJ%J+ESiy%tmisZbnicTXL4@~;8Hu^e}7e8F4sA);mlvJ?qDxH{Pt@zpf6b24>+waYr}BkNEwHY+^pG z{OS>2)o8CHp6g-#&hp}_6VS~&FM+{fZ(NX&4VDnpz3Gm?*tMRIa!avz@;72dq=k<717F+Ju6mi)%HrFD#PvqKb%`HHz7M0=o5nhdrt8EH5n=&U3o-#gEI@ z*7Tm`7mI_9d|&EGQY*uJsV@CJiZhU&+g5s`&=6Z@?=}oM^u}ZLKO%Q;wLVxBs%}5g z>lYuKN|0!M59_db@TsMW=5YR$0jAQZNc?C@DPpuBw#NC?t7r6LWCp8% zAwJBTBZDvUv`z>JgRdQn2PjTEj}sy(YmRW!vXi~V=!f@IQ^?GlIg+1M8#Y;{PLGVO z1e2cYh}e4O8&z$_ob;>8z@|I|C`TrxqyC8}omnmelVm-vH0!0|`FzMH0LYrZCS~f` z?>#av?bY@`0>!_qf1c;6$8h9nQrJ^KW-e{*3+LznzSHB%TXbaE&Z(Q}U~pPnyZ&yR zh|8?%OyU{4ir9yGDBD8Mtk~Boj2GtxPHWwLm!pzQKAOTDm-~^`(JRAR2>>T+a3Qb+ z*|w!4&)d|0#{fE@>p*jF;OzHt`>p-_sfbM7EU$MI;EndJ-1AL!#oz#5hyo$&kkYbd+mJ$8ZcjeMy;?e{qlV_#%~>bcQ0XX2~t?a=boebE#S8Jm#7=|Fimh#%JvZ%%P;ihocH-qWuU( z9jvR&kn26$r9qz@y_A&j$jLM3DJQ<&{w|{VMz)jCEuQybr4r>Uclc(BEr#_(%7p72 zK~(&^c6Vh>@$kz;vqV7z;lRK1+u8gKr%ipjt>j(YtqkKLe+qG&9O-uoAW%D<&aC?icp}23L}|UqZsXRzO#?O*t$U?<(cL1jw!m{8UWqzF zakLd=2@{99CM10hUlgy7^_ym4DkNW2J3?98V{26<68`hf9RvoroK3B>pXv6GmT779 zms&f9Dy@2a^BiU2e*Q|}8B;?mK#Fb=z2|kZB^|n?@lecv;$i@E3Ny)%Io7hTNY@mX zaWRB4Tve2C=I-3lI{rFiAPi=|Qa^O)?l;?8>t!(INre>lxK-YYisVT*aJ&&>Ip5)? z;NqvxA0NpYZ2LC7a$N$nXl!28rgeWqr374Xv2#bG4nG_}oN_eIw=H>WX-Mlj(;e1t z<_P+F_dSOSZu$01uW7D(?*WC11>XamOt0q-i(fvfK=cjXJRiBGQM7d?IOv?^k$bmO zR%`p6nVlW3kT!OTA`1??27fe}&2phE{8-$6vchvX=9E>36k&B%aDWvrfHfAAf2d~E zn2q@ThCQ7BImj5ONFSY8`z^Z^$PycD$OLHJ2tM>2yXol9-1Jqp(Ql2VAh&*pzaLaegwZ}r^fh+e$ zE>Cf-KwhP?UAE%BBwXHuL8sQ;8q8)o^)7*#x+uH2-mtZSxG{e~ z5;*u$dh(?dwJL8b+=Qc+r|P|&cj7P28a>v}y|s&gob`HCK7B3Am!vx{1V^ScKsWi0 z;7(^AX!g*#Xm3<*>@%JD6sK=|rb!J-l@JxDqtETMt$ZLc6`t|ph%~3pCSi+>q&o+} zM-E?jia&wCft6?r_KOiV%8uw3#4;ZU!P2ov09#>MB$FaFfoVWvGXk+904IFK!oa~c zb17vS4%ds}bmIIWkS%>W!F%1F%PN|@bGLJd+8^WL`Ty7<#%4+8UN1lD-6H=bA>YC5 zp#9V^hC_gJ<;?4oE~QUzKl}=iF=@sMIlWR3E{XO6bm@jDg@82yi{tURYso~|W@hFc z4gpeaq;vnbua^$g&Nf~IiJRl1>B3P(f+8Z*Z>!J%8rb3@;T>?|T=0llNkgNPkJ=jt zV93mue_i9Wb(0`U@akhpMYHHWaOqO#sh9y;;6n5NW}KM{+r@~qY1&ov*8 zo_)=kUsHE) zUiJb+b8BpiV57K}@xB}3%O5|C`vUXB*1PO=;4Yf}`>pqf%-!29%YFgkFL`O$GmjXA zhfE^c%I_1}M+sbGoNDvjm#@9KRCjAb_tC>(kfLQB=M_9^=Ggmk+4LjZzsUpI$j<2r5oTg9hO~ByUe?XGU9{&>`0Ud@ zV=?h2;Ppn3ibyc<%IA^X=Ig3zziA5qm$H=#gI{Z|e5WF^wc`;&+F6W^@w;PH100%T zonafQ%V-|vKMr~IN^v$mMB-ZvvktTSx3sVuo(!pvi5|r#!J;Tf`@qngnhm|ogAtabPi5nG&S!4F zAjTxjeL;mUKfL9(@^Xw~(|3p{Yu(rg@P{14$2_7;xH~tCi=D2h*`v<%o;EYMSQd`~ zrGeE)=0(^}Hi&4A>SH@bP@3W9%COS@^6ky!NQ!7k)H?6P&_>%S`3%C`*I5-Gq-Kl5 z1#y%iSK`#6UAv1PqPsghr}X-7rRcBDa0W%7;qD6wIkDA&Uok6La zQ_2m~b=EvI=C;>ZqNBSXd~zRIi+8AW8C*@QA71ipgt{{Q{IEE4K|ba{^xj$CI`86d zmRbtrtgUu8J^c5aYD%g{` zq zGH-MGQ{=XH&6|_w2JYrsHb>tQc_9k>scx`07Qc{lLMY|bOQD~CO;kQxrw_@a^h-`} z)B%vXvptLJnZq$FcQ0%ZaT(KbOfrwQ4-++#4xPWAdHd7sM!{bM$%dJB=KW#DJ`d0f zW`{rcMZ03AOyb&Ld-HPH?ju>V#(re7f)0PP65eYPF4I!}`AIpFymIRGZPZ?j2?x0n3`z_5zEa7Uj=jYu|cb~a=OT7Y^lTQH8|A!=LQ96>AOm8Peo(92?;RCp ztv5-JTuS=IxbCKXDzlmd7V;YWn%G1A3n)=oE@OYhxa zb?DBOHWJ!&tg&N#jm9HKXP*DP^(habl;cRekm^Z~{$ z|MdO(hMyAzB z?UHa|3Ii~?%tojq{9wA9Jf{v&*Mq8i^!wH0;fP<*5i<`x-$we9({0u}Ou5YihQ4Dh zq9HU?|P=!gh*XFs^_F7bT2RDy^tKgZ|M%$%xw=lYMsRH!!|#jU7;D zOe*XZ1L|-Vp6Kd_kO79ocv<`tPvzS=MHAH?OdmWZ|0APJ@blT?gd5sd-1{{6UCixn z5>I=y^iSJCy9yoCu(__9AIV_nep*D!&izNuBg=+nK0AD&B&sz)RL!~6!Az^V9|5vQ z(I!v^4Z#FJ{4?{S|M{irw1A`pdBy{Tttwj{Ki-Bxc$t& zsUus&}4O!}AKJyV}ZI1S6JfmdKS-6LF)%LiEjCk~wzh&H215z1QzVpnZ^V!O#tA zA(all{Gz;P*$N|@_p2XFD=uRA2aJ`k?iNB-;G+0*8lcZXZEcc7n7lG39Q*A2q(zG_ zwVg8$`;=%m3;DSrVZh;|{3N!)p8`IeZLLf8=y!Pn;j z8bm5ZkcQmFB?=^Qp=^sKE3xZ45#IUkkc6b;g?o%8E| z%CcJKx)z_&1Br)}zrT%Fbaz)$hEeI$EmIIiC40-cW(&?41bMx%vqG|%>`knc~W7NZGqLe=ENylFimNtW_oFeuRJ-7R@LkHTCTJUW#rkP9~s?ZC-I|% z^qpquO)cR}0I#tQqi-LkCBpj@HcJe==3X6}-BC)$RabBmvUO zcR5kunF<=#fA#}o;XwUM99~F!j^j}Kw+kJ`+@_q>?lAA0c*PRH{y8f%R zojSg3hyK3CC0Xz{o}We8z2~x!;rMIFw^a7T%El3kqgvdy3SzByi>t!OLK}Eo+4Z7S z@J4vHGw7lx0aM_XUh+G~mney=ecYVVzBNf3X2GMQpK;Twz-Hgc-LZR$G0t0d*3HU< z7ncGicvu@t6d%_Ef$)%=%jg3^J10lMDdl|UrDgDDEaAG&B^6Eo~s)B&QIN2y4+n|?Qv6%&7BH}4x$Nf z?3mb(u1=%+0PZPe>7FCC{X>e*;^LpaH88P$DWJa*X@gTtEV(nC1Yhgy@5U1YxWw11 zrgL}eddPv$8m|Esio-BW(Y;kKv0Qa_JNH@#v<;c?f}5s%d4zhd+N8L92=?tsCb{dn z?OSMdOrfa+j*?Hsa-+y9=#}l4WIaY32I=-16ShKuGrUKd&-?Qee1cN_bzLHkW*{~M z;o%N>W|wu-ht(Yv*`_=U5@2<(sqZ#hrTfm+}-BS>DPh zOAeJa+xU`M!IU~{u>mDQav!RqLQZZWuMSGdmUm=uu|80&S9N5p$HmFTRMb2oyi!Gy zn>yCPEYZr&xq%nEFv@m^wPGoRb<%UoGTKg|bvp;~CbmT~|PU6(;Rj zhrh}NFOSAN@ok={NcBM{Trb8IG1Lm5=)f;`p6-T!Yw9-8LaVjj6{tSGDwj(m%h{@b zp}r$=)jk(bAdAzReZm|hEX8$)q~E}vPWxxgr#d%NMhoTIk9cYgwgT)lTT5p04dHRAk^lv>LAbi&00I=sN+pDUi%cso<7 z0~B#K>b!lUjtTJ5%?r#rD(n?xT%iXkmB+gZMhs%B>9_wrJkaUS-cZHJHnLF$8v0C* zwlWXA3N-gS6sF*VW4hO`-1BtRP4Zz_vUX64yjaxo1T?ia#Y`bBK|F z=b*URAf+Vtrtk&`xfCcD?_TPYW)7_vrG`0M-kGPDNJ-xFs6@zU4H-JU7^<(mGNCU2 zQjYk+pJ)AIlJycec1ls^!FJrTWY3(xOmM%z`C<|i?@@-y=qwP*2u;HNsutDo&s`8N zM43T?bMfaOA4l7{bxXcq@QWz&$~Bb~(07|sM>JdeWAFJl#3DS(K8`>=OiCc;3h-{Q zoxmUd$I3^JO(+CCtb;B-s{c|~jTKs*Zx(;~@PcCP8)Hz8%wMjek}(T9oQr8SKJEFh z!+l62D+ZQFkMZIxn>G45sfy{v?Y0(|!vX^h&hd*3is62A(oH5ROoG7jJ&NgtL4R?D z_g)dP^yNtX(#XDlTN1hYS^}2}_62nrI_edKXi-X)rfA0uq7t4Y&_Rq~ec}+y%qJ99$d0otJT2~?w96VxW2>DqB^Uar{ zt-Ft%)gjwAfbCXX?nB3# zWH-$9-?5FJ0OYl%A%j;PZCAZU`P5vKq7&JQAiZRrdR58;rP)MzMQ%YO>)@4~CaRln zeskI4vj@L_U0{UW3x|Q`A&iI&J!weB>?9V4?5}FDYC#d<#y8o+po~ z?}PjLk6~d0D})7$;rAcC$PTw=VHk@`Ifqe*S*%2SUbc@5>+}|sH<_oSU-ICZ zkFH{~;r=k4uhZMP+;67~t+__VTOPew-M@A*DNJnv3KehbAy0jWo=Q!mSL^)XxL5M{ zt!k848w_-<1Uz?=^sN&@IBoHkkv@4@-^q`{vw(DzG#{VW+sW9s8+A3ct#qOl8yOF+ z^tsi_?h>*`L;0(g=94eg?krh2#(NC}e`qyA(<>%XeIT@<4A`)xh9UVTw5fom&Fq4Yq%P6Z&Y4obQ-w> zQ;JB$Kdxp=Bx9#|7I0Asj?u@_7JUhd(89o_p{QWqvbrN#m4AUj#?SV5!)1Rg=kN5N zq!nL`a^3f4`J7rb-a1RCo8j3UZ4nlQHC8U0zEMTC zl@vuUt<~NY)D3*1^RxZ6QmCpvOi~>g@hy?8fyoQE%f)f`f7zB&#*Gf<)cg?L4PRQ{ ztcGr##w?FiKIc~$=!lim?j(I>n@>?cJ?FlyMWXBQGX{eMSH{?_V{F_L$*|cjlU+Q+EPLY6uOeWzezZY@cJcsZA>KDjs2YHdC5@9t@ z*C+R-%y3j&Jed<#X8y-Vyx@FCx^VLZzRQwQDTi2g!P zZJS`bOQ%Q5!Ly%BSUXu8gN3t>2My(6kDrtq+b*fSU#9-{0Z3UU>4QJTFJ7c4&J-Kn zcl+jQMY9AGVSKGOm0dGV-@DRhGy8RE_==le{2Wh2jY(tHc^@E@f{lOj63MrEzmQTS zUaqm>y>o3qD|j3|##qup%J%X+&EfY<#J`#Bkaf4C7^ za@V3vVKPfYsL$M{8D=4n+xL=}jx?RvE?EbcXY`>IO>*VFccNHs&f+5z`dU>;9*_7H z=-q~Aw-=>^1NI)Wj<_3p5Ahz<1G3qCM}hO6M&v>N;_tqW^~|eCDQByy|1g-T6(Qm+KbSR1n2FbNxof&cogt z6}Ae5g?&xn{6CAg#~BZ?m-|EJ%^VS+s8k!j4pEY9@5U(GFgpp=on(!@L7+b%WW3Je zW2O8y!|>;c_C2YxL&=f8wG0<`P*bmy%F*z9U(fTYEi0hv~bIVw7lPs5m*a(Pt#r@wL9{Cl(T4{|j?&VQ-nbm0awYXqFvf zKd2ouVYizE9;R3+?I?FTzDMw_FBC;mUOM0>!8CBKMY*G6Ea_{|+E75XoK=XwIXV@f z>}Vvy^F-y+Y37+o9eutc^24QoYW68+#KK53t3+|Tm5j#Z@c{oAn2-t^!AEn^mgaUhBmAqvmM&S+( zQ7TIoR4yA6=G%{>V5nuP%?9ZoqnrX%Z#A26C(p@trA@q&#>x5i+^&Q&46h6;a4N!zf;V(B}60 zB9(~2A`5i8u6>%yhIswB=KrkhQp>n*M<*&?J5hgp$oB`wi1PZ^K%q1G3!#h5!mHc1 ze%W>GyvwWnY{3+{j!@5}gE=J`}ei6vz*yhMo#|lMirUO6)o-M_$TWrT%cM0aDbwFNh&>Prsj<2iS z-fx!PS7nq>yIVNYe1b^0fJQOpC9W+CU({!T52^2m_iX2BpN)-t^iqH7-cJj&$28x0 zD+}_=6GMzLlQ1a$Jf{8!XDwcjJeHWNMm=$w@OxNnwL?eezbE<0v*V3b*e!(PZhF5- zfObUi!K#nT%ykE`D#jEBX>uhw+503x%9eL&$4W8&qb~CEkg|&?n30MD#>~Z95`3&! z?!pJ(At?Wx++3;E78#CONhqPaV49dKiQeYs9NK8)k_7(r3B?E~`$Bcn(;sfJCS_zf zi&#K;ttzRtn|_b`wUgi>P`hHk`{p_nSNLcUdnRPB@Aos%*cxB&R2sSGp-KvGm|*d1z4b;`>n5>&ZQp9Sb3yEdq>p1o zr8vAYRRPsev^dGUq|j=OY;_x7GRd2h9KsP4h)YAIWLiV1Ek>i7BaxB4oXtf|(66W6 zr!5Y3K{0mibk!xd^o^v)KcLuS?}j=X{aL&CgcnseM$Y+z((vA>G!6@YiQ$Ul#XFTR zHuc~R!@E1;ecKQ$rhT7IkSNcu^exbtDKjYrW6oFR=i|GU;HXr!l~eH^422!;Ya>Oe zI%T9GL5&r8W{EYz3q$nVGq@TbesJbO8|(l+N`5%AeZhH?8dK9Q-4HByGT57Xr+RbI zZ@vvoQ^GS6uFIRaesNA*=O|=poy^E-?co#iLO{NDu2id%i#6C7#7n5<-Q^P6t|3|L@)KXG zRayThje44gU>MnfX-iouDrxjGc(z~E=uh3LHDx~N$N8wK3F$$&Iz*u-@A|qGS z9EcaF^dy~fy5c|tg+oNwrK;S$vH=_5k zo6fsemC{jm$i7PH{-&dfIFplfRI60gPqb{Su+!EESg@Urll+R_2kGS^Sph}BB>8IJ0yO(+2pvos=D5x7@C1;It^7A%d z-3buZ!_-e46}B4_=Vm7~Ia6=4t$BMR@_v;r>{UoZ9(v&H{LbYKyEtxFe*72+%?+JqG99iI76OFp%V$A|Bd6~4$ee&e@hCw|FmnErdd)+34e~6fk3uUL4Wba!Z z%dV7Cl=R-nK3~c^H)F0%;IanDs1b%DNTImLHJwxKr36OMx zE%;MLu9maM_=hjhJo8LHOl#RuR4W%<_rKJjHS26sVrmfU2i7-BnFbT*@u2Ge$M!)7=@R3)*t3zs2>LGK| zjkCB7<-ULd@FkT#DX-qno9@67@T%LYMMttmQ^-C(gKVTKrwEpz83gs)7u32Esm6}M zMdhFlh?aB|kQd!X;PgbhwC3uz?dmQf9|KgljiKO-EtPQRh7$dBk_vuPwv5fDE>l*L zq5EnyW#;uwK^Vm)tMbLq9{BxF7(tcvO32Qs4ON(8LWs#YdEMwoK#mHrd$#QdpSof_ zl(e0!p8K6#%{}hRY=DGug`QL)Z=S@K70u3=cREUu-G3lJy5DlZxhbY%1+q;2r|-t*kb7npLIXe|kdKB-ot<%nCIg=h zx=*ovzyFcvKp++ymhtL^^xw9ONT$9Gldv@5xV|MX`@=IF;}*YEd1OI+xSv?S=wSa4 zE}cUoBbY4SAHyoT{m`=`b*uSyZ+n^h>?W?y`IZjd&nNLr50R`zjp3Ty@&pB&%DmDJ zB^GvXwGw}0Qs0zq)M@vp7?YcpocP1xx*5EL6lmg{_kv3L1_Vy|w)~NiU{5Zyn;T*E z2>=Vvw8vzD9w%&jTU5JwA@WZ5XZv8O3FKRkmZ=%2R&euUIB(~p?44C%d`Z@(p)O?n zP?a6so6!;APR4n*ys^Q;iV5#-)7D?1;1v|&gy+7cExvZP(<$0xBed~esjL{j!o^o&^hHC zO59`u*czrgVvprt8|rtNe?=P88I?=4MOT+nc9gwm%iso>#6z3keYmL?qxLpXcDw{= z5~GOJS>jlzst#eaw4~rSIYB-^q}5C~n}+wd%$^XvTkcm>xDs|a4g3#$aEq@ioIKj>HjyE}fLb=jO<`+sJl z%sTs=*v&w$s*;ky&=>HZJmbeU+Iu<49C{<;$LNs30ua|aAy;f0yDcZMXon zgNnRd|6j=T1s-<}l;Gvd2$3oPr@o;52ddWq3k_=4C!9+2R14PMK#%c6H9 zADoJ5-QNnGcDIqz6>dcI2wc9r;ZPJS^_g{PUk@li*$v`R+MJ{Tu|GolnYXFoM{}O~ z&1^#r5VOU-_TMd&s7kz-FF$iHmAm%%cb%TL`IeS*KA`r&cjK?KsH6Wt3gxVI&{J{m zNWpiC^Q?y~EO;%y=jDaDsNB1^+mRLaa}n0IttPS?{?z^RGS5H%QEPn~W%o-+S>qmX zRiUf)xl~U7@omAtH4y&?aB=3~DvX&=r$&BnMeJ~gu>;6Ys2A>hj;Kp z_ZHj#T=W0^l^0T81*d@ZjqCl>)&kze!JWtauZwON6aS;PaPU>Z)#i23e{S*+?2d1^ zK-4nN-z$a}y(9hWbLyM__gcN;^E&EF)AGk$-61skUd<0icCoDNuxhESoS!Nf9M#|S zz&Q)13U*#cGao#QKaC+Z#}ynqG%a*(q+0zX3=-9}YejE!uUsmmn5L!G+{u=*jef&x znRZ$6cin1wx4|{F0PPUA#m_^%f9-Fd2EG!W^~Yi>TS|dZX=0VlWi8=U(-`+`=x2}a?9?^*9m@;XS7f^Z7f{CX*=D=v@Ud;rr7wItd_d2q1pfUwN8b( z=4VG%e)P)H(fKm_TN}583w7~DmARE9?9HfqE_`PGzBc#N8C=6&PpiAz@>O0(Pi6P0 z7LUAv#RB>J!rhMz>kPBYw!Q|drEaT#|Hus|8_=@(<{y@GBMG>D@x^ySr>J5c0jiPR zb{dP)!20bfMU~NNI(m#e@h24^kDdodz4xKVJA@2u^f+ zSYD^WFv4QpliK9n?Zf{OL@iz3U6VqHIz!Wy=mX-$1vk#BjT?U0W`GTL*AM^42kbM{ z?wi=_caP}7S|-!*HKHo=~tY=&J>F<>TX$3&xW;OQBjrL zzPHsn(?DLBE^6MQI-_gbl0q|aR8ow|>j9u$9XqW8Z((;p<-_QwQqLSh=1YtwfK3_O zlI4gdzWMa-@6D4#2phW9KDJ_LFec@)v*@+Y{gsN&VBDS5Bi2DhuEQIX&zwb}rOEj= zL)b+q`@k8L)K>{d)XRG}W7=?hDE3{WXT<%)XdZh1e|${5a({7XcO^3-i`+`4bFGCv zj;ek!WM|y2)|vx3Chl{uC9UK4U<)v>z7G)Hmv}?gWiPJ#Or{_64!$7?cYQ%>TqaJ zjEx@j5Ptg9o*vzPc$8MSe7(gQ_n_NRKWc5eNC;NXbuB_!aIm9LZ+|sI9)yn%2^B^T zJG8(y(r#XP@GU1h?e}2m8xQ00G~YvkORE5_>@Kl zGoX7kz&BssF!(QTHIA48yxFUNxecYDBGRKS_Q95H6ktOGT0d)xrJ*dX<_|GEma(LiD4?Y{nHH1h7r4I6$q zwxZCWo3rDyG!Ahu#TGucy;Ko-Jr_q?Lc>ev-xG_rJCs+TT6}8SqEZQEwbiYNV%sl4 z2|O)(o^cXW(-Am#T3m+@8c70GZ2g4yUmbUt@cUBa3L2#Obk z$lF|WM@46vqGJJcN`LbGT9g<=?emg4KROzUr z?N*5u0Fr;;AF`EXOi7(xnHJorkYg#g_uUI+&Rf{aElRxMUj6)O#qm|3h01KG?wj|_ zUHliWW-sJqj)@uob9pW}szuMq+eDY&K`S(ai-k_{U%lauyYduhuXQNzefr*xy5b#o zQPrAo5Q|bUe>i0yC%aHWzZTT~OJJ>nZNRk*exzm{-!6ZPML}29rn8Wws^SWLBhK^K1lS zU7^Li#LDIDR9bS=QpUJ5I zenp_8$#}^OscR4kG{K%XUjo`^La-jiEPQ)`v)2eMg#n)iP@>kX_j{(#h)7HA2>z0( zIV|EJLRU%tFHY7ywh9uT+v=6K)?tooLhgFqTr}}R z00fTjbG3ZVd6=@LV%D|Xw9uJ048q|H`C>;Qmre-AG@WcV-XV7-jL#oFS_<|>N$~C!cg>{wM+u+7+Te^US-Fp;2_%7Utzk;OsJ7;B;EOCYE2stlm=0p>yeLD4e zJKi70`iDd-z@{zpwyIv1K&v&;cB>U@z{^jP4?_deLACDU*FNuzSUHP}dWLINF#1-S z!BJ7UCspkxtUmazJ_aB9RJ5Zr?2fZP@FUMM{;-eZGQAVqq54`aE2$hla6EBn;Oa4@ zGMxr#TrrgZ?ayD#9m&_xi7J1MHjkzL-3@PG(r+x=+_4-Mavxn7X2&CU13qw%m=0M~ zx;2Aacdfy*cp5extWl8Bu>SqDAXs_|O? zGmp2s{q`&hN#=Y=4DcNjI)?ROI)%@{SjDuW_pA@%flwIFW$%mg1gtAyL9jZS0E1D3 z`~GdK?ia2MTZsC&)xzL|**&&%ils}$P+n~v)BLI~DP@bBDjlJdX&BKABgR%at5 zjZjD9{Js{9ygnK=;ir4Isv%&b;GN2{ZRB;YSG{TJ$1_%Ued?jSG-W|+14liN@L@sE z*({Bj->;Bb{l8}n%8?i#%$WdfWS!OC6F_)Y6Z|`Ytr9PnV^etGswgO{I{p|W`k-^I+Xdugg#XYEBZktg#_g_?_1ErFT8dTe8t2|lcssY+cXTxR#HOolGf+v&x|6Sbcu6${l5gNDyY|2A z9-Ju9cQ%7fJ!RjEcrIZpnzs(x>+u^juoMf#mbS!+Alzs(kgaU8a>vbhF;OA!*1^|>^LJmCX|7DXp2OF9C%ULA5zP>V;wY@z6;#BD-n zc|o~Z2pcsDXjqR40{f_mlR9{<3!@?>k_ZXs-pVp+x~Bs*29B~SDyjw|&F?^5l^u~; zMHv=jTkKxeuuC=0snJK>`fW}Ww!{RDg$WBAEbySk7^(%p8EkmO)dL2U;r&2jp`v%k zTN4cV!U7Odw10L$x@QgBBY-FGi~9qDnF`DO5D_JYW~l4!ZK=&1#Ft`o!?fvTfom!r zMj;#2$T}dG5m4Lr7xuEm_NEK9eyQ1y2J#|ILcqicEwr?*c8%)XL!4zdXIl*5kWK6O z{ch{+F2jN6Zww+wHJyU>uh=Ot2Hu{PAGeJxdzu%`v;E*?DWvd5m%hrb`az-~H8)Y= z^Vrry&OmaXc64|@GZy`My2VZyN$1F!#GA?BE29XKQ~HW@B#>S_r4JifER^N4c@F~} zGlyZ%g$aI5fXihj$V8k!s0x-G|1k8b&+UD(kwrcwfwf%6(SDPT2ON#FjHb}D>%XC% zEAGhX5a?s;rn~MQv)2YnM&o9Mb5seEBM_7+s^mIj7wg`#y*U>7<2~}yXQ^F_lbe*v z8dX+2Y3Ciuy4k#J`Q@hG2jAJ1R}&RM?e-H-J=5?SCJf%axuc#N+af|c>zvbzI{L%P zXY|z^Ku5%t)qFyicVF*EZY3YxtzifDpz~Gn=mc3Y;aLhn`EX4UXlS{%$jvc6krEC# zX4blr9aZ~ovn>4YO4Tcs5fUAHO)hCwMb#WzYP;%L_?DG;HsG#T5dW$Gsg`>bI>5BK z`cDIWB?u^cfE1<09IGvfSaSrbg<~K5XUsnUVe^9@-B^o9)+jsQYN6X3ZfS`%egNK_ zjHM&QNn`$6DK-IPl`awd0~#lNAW^#jIn*zf{!+;PsfZ$}&kawLbN>{|Un3Q(MjtrW zMt}F4%PSUj>q@NZcI}G#HN_u<%6FTn2h9qY;E?Fvi&4|Nba$m;MpYn*M5O0^$Hxg& zfK31sXFLW75zIhT9=4||)|OJz8e$gooLoc8sva?`UzzKgF*lhsFOS2alkXyq&3^YaMM$-j*r_NUSF z4i90p!8)PEa&p?1hEc_3$MU18Dbf)p&&p(Fi9ZS}GfF7^>q^6jqF0rUUj3v+m?g9* z1H6T0skQ_ya^}XXe@krsUig3ikodTA zu;jwOu%Exb1=yu`HRWx64*;qW&_BTu@Y09>4e>gNn85Y#9}WP>3C?8)0RU~l<%{_@ z5Mco9>I{hr`R&poB_0#m?U|M19^GH+gZtY%0{$`Zzpt~3x$mS42pfYPpceo~bE%tl#!wU=IsP2SNxB{}IjByyWZiQ`J0*9t+|Z%JR^VKQRAfOENeRi>T7@@lMZMJ! z7E`kQX6eRPha~hdTBWYW)Duyk?x;U#4V7Z(9Y4h*@VKj>zq}Ua|F=0eprZdfzD7*5 zIAddDF5!Gp!SklFwn^Twq@knKmx(EdmhsPq_KaB-1B?ID-g`$iwRL@?p5sxE2N6Yu zg9TJTL`n`IA`n2qhBN^IAq0+6BGQD=LbZYv=_JyE3W!RRUIIkv5FivGgcb#o0D(jj zAcPS3HlpXz=Y78K-tXS~jyvuccmELvJIPvm&ppd;{^ndOHq$D$VT=3*g8L3hMI!U# zj%B{Wb@wRQk4IfBkLuY+ZGZpS)P8cASd8EX^C21RKU_w&jQPxLf__OE_SrT+HrPNG`dZZ5AmYs%)@*SE_6VKl<+wfT49R^Eb4K%d^2YP!6fy zEYBM)g>*rmBs`k*QVo=~cI<-4^U}#t$)}B?4{M1p@;?p6Rgpe!-&rIqkCR$IcoGk0 zSL>%J>M53Z@?PnDoqtyMM_b@PQxYsrCcpyaA6_y{m^T$}eIRM8S`c^B&T&i;OnA$B z@|sT(K@sG`W34L;Oq7cABR%b61DiTbFmA^9x1^?MJpo^rw<@7u6+Zy-KqjC|4(|A{8Ad z@sLoeRaqVPy|IXbTX|GQ^)w6kzm@WS*!62?56D^CknQkFBl^fX!4 zNRt=wn7T9ko6Y;VZy4~su^k6oHoS_)&d(g^+xrE+pGId^xjqf7@m^2MGB?aqCr!IC zPhDK=65o?W(q7{tMVDE9T6GZPLuT)Y=Xw}bB$=q_#FRx)stA*P_|VpD+|FQrzCC;A z&3mVQ2QY%$&sMZ#SP$m~HVo7Py>FAr8G5r#zp0Brk%R&H9C17Q<-ueo@zc&?=k8ZL^@0h=T0UO){cq=FC?e^5mPE`QMWz;Pq3TaO zO6&=B?%Abz#U(4&>q0`PHp<)%`|j2^y|8XSSV{vhL2kNTi7$!3>0xik ziCC%*$kj1Qzk0bR8pnRj8w84h#SgUm*!?J3C2C>p8lX|7s(NI<8(EVF60aZ}o@T)) z?SN;nANjbg*SGbzmhdHal}A*y0&Wtp35t?WM9r6R2y;wqT^>#aB|WqiE1K^C9B^#vau36zkyIN$Q#69^jabL8#~MI7m~nr6k&x!~4kD7Gp@? zG43@-JXCgvfK$bsh}ZCDIMVnja}p>X-3fGf)kAf>G|pa>JP=JbF*B8Eo3<>T#62Bw z;F?g~9o_C5(A3v?uY8Dg>+f$O7(6WQn+ixyix7Le2WKOiw|mXXN#v2zVx>!vSFp$SIdr`=6GSDRkduE?-PPKG3{QZymEf@_GJ?-s zkcS#RAK$E;Fn%gVfLnc}!0hYEge%uO98|w_?j)AFX2@DsU%F)QOgtz|Ke0_o3uPLo zU;-h0Qep7!+_8EUC8~ZA9k_B}dN|~ngv6`Lmzd4iGpq4qIf!+1c=QWcL&-uYq{uMz zY4WkHp+;s^1Zwq{puR^H2YcQyAib>?KLeku%b0~?OqvfMKv5H4YD(p!>0 zKH~bpL;Kd-U58J%*Rx(UG+REStMh*o=}#rUfOGs9rD9J>1yv}MPcN$~yWjnwyYiof z`R<7e9bjF3daqcwb+xg+W;XyplKblJ+bVYc=^G7)%09d!Okr{UUjCsW;Ha8en& z6JZ%4(CxbpN(0f6RO~PIbufj&^3rl$bDwBl$N>`LfvfYdnbVzlf$|^FmFVyIBEk(D zOUYrM**F2M8F4IPx`Nr$!khd=xSaL2df=bP{&VrJu&DU0)e?Q(>e5rREQ` zF}9p*_aJRfz3`(#z-N_b_}-)p`2*OjqT3pz|6qgDy5RND^%u>CpP~ELZ|~i^brZSW z4Pm;I1b}c;05JKRPUz2b-{o+R`*_${?c#rZ<7>I_-#`8T`IDj-79U@Q>!rfaL9*Xu zn^~oWRFv5+rqVCX@bLxR?49ixo=V#fMXmwM+P>nF3$s9Z`(Mjh5PLofO9PP8Z}M5o$HTsFGYI%I&cZ;Rkpg!Noa#!kv`JUh*a@J~;yb*~^( zs{OGDGyZ-ca>?D+@*Ix>JU9e!4PD5hRt~p6^oZy3jmn_HK2FyL{{tKv00X%>%f@0e zEZ^eAtB!_sd80LuX2WC<;7sD;_EB1&wXy6!HmWN6O`aA}^ACOexrbVKB}gZMq*xlc zRN7%ptl`~@N(b9+k4d4(+LiMvanlH%16_&TZQ&380Na2c;4oNDDV{ofh-Zthok^#F9Cm91c z;u>s75~tFta@mNeSf>$eRd=JzGW2Qsv4)neL=A4tM%1qz{4y%E`HXfI{0K^FQp-!r z^i1x&ib_?pUExo+AI)o#e5LCelv!GCTXu@oIO%0M-!C-H2-NZ)x8A9KM6OegAk$KY zV?W9|oxIMulWSsI>XP4Rb9K)VEvRkRN9EJ)>>tyd2NfDIrvwqL{~sS**hiEM5%D8zh75PT&)i5BaohB(|X?d38D`{OehPUyBt0HbwswE_M)CnjOPy z6HoG?^27Ec4Fd{Y%Bn0QRBVLdp9e5E9SO_8X)&h zI9jUA@u3Qm>~6-z+g?B3DVHA~kCuxpcubY48#;y9Cb{I<;EVXCsojpRaa=tp zEZZTeIG80Wa@zClu0!gk1FmCo;nE@|5Yk|_3Gb?QM8`9l2rIC!Jjmq8b3VWSG{vfX ze=O$t>+5G+NuY-2j(2+kc}R`;xO7T?O<)O#(nnv)pPMFajter zTtkL4;E&V7Ba(ELgdkIO-h^Y)K1c#Z*}(E*nfJQppykr*opAC6zmEpF#LeLq&i;rS zSQvl-G+z=`I{~CDWePYceaK0YsFs~w28_IaIXS_?p5;~J*MqfGsmQRM`e_^K457+Y=*FDdgd;%2W(yWUq^?F2CYQ^KGjD)r@Y|2;pOJ`s4CmRLF&F& zAg@=W#}Ad$lgM2pT_sJ_FAX`Zjnk2mvkR)Qu@hL=Z{hRPPo)ivlb$mMh`}2yi|kno z?(XE1TQBQZy~vd6N_rS(|0*7COLN5 zF&5JJVCkJwPyDkqc{61KCg3Y`1{g5v$I(cSSANX~c(#kehZKYW^L;ZDKN#$XA*ccq)UYz$1Ad z)bg#NZ_5_<-|>4DvIL)OeDRih(vO$4Io9#*vH$x{g>bNMPyIsk zD1^B+G8#yVRpI8`^77qjo zUF?g54R%J+@8fB%`rm{0BFZAv0#pnCld>}EQ>wRfmX<|Cz@8}^!0A0a$j%#=Dl2~d9a^`#d963>2G>2^)kog?1} z^;;)@0-69kLEGC?Et?P|AcJRi;3dJwF9Ce>>^41bgLD9YAQ6!kx>{8326dVIdQct& zEuE=({`$gz%ZT)bFOLlZxLHNVUU06J)Mf+dgJLD8sUYeyjtIVklRJm8o zmU;6tJL60Tcq`Xhbi$0T2I-hm*(;tB>N)2CZb%}*Q5Fd@ca7KB5!1e;VT*ef4kwp< z*az6*#=%Hh7yhK=Rrd2F0|3mNH-$OOCUO*=Kl~A{8A5bFcm!v?b!pyI=*IgxXU5H3 zeFm^3508_{C3{UGRJ|!_0QGeh8uU=&m3?a|5%+EUy*ej<3@?mVRu1TtI60~M%nf+5 zKPi!G(AWJ@_9pD5!^g%dMK1uPt}lAPs5FdzU+;ih-?UzGG~R2M*LN7w{nK*|XdPI} zHMwpj5Aiu1dmnJom2dd+>POTiuyNlD8!vuxd+gYZ5f~i&c-%tJ#D1RXy`cbn-3{WmvH-{EK6Fm-8;<#Rb|clwN>Wl> z&)j|Rn9e1GuViEakF@>pKHjDO$yY9<0$n9aIp@9x^_ETm3_G@k<_Ad1NUcZPl<)b^ z^GHC3h9nE$UGSOJkOjgiK!d|tEe`oy@w7sot|(nG2vPdR!R^%n{rC_B9<0P?0yuf; z2oQ#)Iukas0F-n2)j*T#ry+E8UjDb{;|sfLe^iTAc~@ubDRNRjbFs%%(XBmj!m$U6YWSa( zK*iO`8MT~sdIPp?quyD+nc&d4OjPmejcVFRb+40-?;?B&TuF221+?v}U2W|B^RE_g zmfKs95tA8d&syRY-=vKVdk)hJ$@Sz5Z`><6epA~nW)JYV01GAo9v^`|%>We94?8UM zNeRH+fB!5DZH>FxWHS>ha|8rwcAa>3dc~yC*Aj{vJ_S@}&KLpCv2^TKl-D=lSoh=e z+q|$Ji-Q}@)?cp{IC(I|;<~x+u*MXB)c5#%bm6<=9UnWFugT`+N&VyQe%JVJU{8+y zlNtQ*h0q({A;GF_zbdF^tN$1%ZqSc9jFg z5Wk=fSMqIFN@nU~O#5=BPbi#FNO^YS7Ndwg7GNM-#Qycl-q;gQBChV+dvX8t?^hTm zACpNX!F(~lG&b7*B?atoSV&+WfS(Oul(9d9>R|bcJB`u%w14O5PhRCK+^hZju}76x zPj2!ucQxDL8z=SvFO6+4HkSv!=bXgv+&uSak5m|QlW(DBf~CHG4tPmB+`ictpBBSR z+xYIr8y=qjO@l&5wNkKO*_gY({_kFHD@;7Z{j>7M?OoJHeBJBn9_y<(HgC{yH+hrj z>AH+C{3eJ;XH^q7+xyRokyXD7Vtn%2rh$A4Or(An#FGS_|4V~9El!CA-Jul{wcejz zw{*UMxAi4=rDuE-rRLlZQ=M1|dyrC{YhnWhH6?kQTsM}p~qn!4^HpNbbRd3UwT zK1tWG&Ed@(tbbp?xBH%C34MR8crp$yXA9Q@=`~gb68%qJ6k0*Yi3IGkH~XYIAJv}N z%JReaRV#8EdTK3AlT;$ub(h^T$=M;vecO~&t z)_ygjT>0R-|FeH|R-}XCEl6HX*(vRT$CAS$Q=KF>elpOoiW4PBo-1o{=)Z3d$)brR zr(hW+2ZJv0<7>xOEi$;BjBk&l(&is!L&@WFX$3oEB0HYda`i2Rft-J0DSBahP3>tSli=idml zDEan6Ca`h^)`BFC08&lRz^$Yvz+Z5^@Mu? z`1pbR)$9k|eO1g6;P;s*=LDu}W?o;&*&kHkm_cjbuI7l{NAx^i)>?4)ZbiP;xlM_4 zmjAIh>vC`*#?uTatJ)8i-{54#jWNl=Zp`#!XeLX6I~gZ(o{8PZBZoEAOlooIail0# zf;4?T-t$d8y)3^4cEG$1BC{KZWsk`TbnY&4@Mk#(A`^_SNwNaFS`**`ty55s_%w?# z`|TCMBA@b=TP8{VbI9F#0=n9l+JHL}4LUQQoZag@=Ya@5|5}#sN^wbEDwdJa<^*5U z4HzdUNq+X(zVi4|MjQ1Q41`Q3Wt;Xo+Pv;iz-ukS&jfFJfY$V#-;Ie{Oh!1KPtx~N zcZy_z7DvU|Mtt!Km~s2Q7yEZU!S5}c(odcX8mbXJYCBVMIasZ}rR$t;M^;@r(^}6M zx>l1{J$5N_GA6|#PpdE&dxs4H<-RRZYMk>>sV%(8Vf?|Wn;DW>5|Ar9p{AMMnOE{2 zQjHuX)z;l?4vGP8PKGx!*(CW{Fv;Y0^9^4+AzwXml}$A|+fsWoL(43Gfcht_*!ZZqctqY5Rec?*n zRz!mgS~7b)rl^@2gt#od-nP}Tz@U4Wg&P6ZxB4PFST4&oDI}Rq?QZn`$5mC?BMM5o zMq^;DyuOE%dO@R;0{d1S489=LOKRrzr)zp~#Tv)Wf)%IPvkV0HGrEV9MW%Y}w^ zIIlqm;a!{VaMkP*UGMiw_5rivy> zhv5%AqnQmKC(H*!J=Y!~GJIW-hmGXl;o38>82mZH`Y&)2E+*2y#dWrWqv z2<*waYS}6g+XUy-`5fWvx{p**zWPWPt@u;)I1x_?X%Zb8tX}fbTa|MK4kcB(1YoVA zop++4*CluCV>MDQAhVtY;Ll`S_PX=pNRH;^^#s-UG{{W`$wOXl*0h8A0{_?hK*JT0 z8S0_5SaD4BtJEyr*QzvxQG|A>wMN4Ns2f7-Z zC6AR{7*ob`;*vl3WIu#a!rC$Cb;q617#ozx)TZOFbo-b0k;SucckE~B3Cvo+SZhCs zD)#dd0Y6iAmRt3@*!&XXNfOC$2qe(C3zU8zqs>7XoU}dfAEACOnlHS3H{3@FU<Rv{^ekA|Ru))Tp1 z3DTnTf(cgkdTn39u0d?Q*=suO;PTeXvV(dA9CQ3w9Y*C+S+}4 zgrE7lK;KpyNOTB1Hf+`BCAP{jHc!B)NNMm8it0)YYrBQLFkN=cL{x#gHZjR#TENqV zJI`8d&p<^|#*X0WUgpWAw)^E{lDTMy=E=%}uJ_S(*G^81j%Rm1_zUs(rPx)@3SuaQ zjsK!1=P}*nBjnFgP>JrkCk8|J>;qODag9K)O9{L6T9ZT>VhLd#LHWB>K_xYUS-j%A z9NNM;jxFo3*y%!nvHh;t-#!guZ1nE(1e-`5H-_ZZPO9(DX}I#&_Wn*;LC}l_IRXygLW&Jmu*c000?|=v1#sq8T->?Z`JPFLkrh@;HyY{Og zWsuyOiZ#k?atZV=a?whWSJyXT9&{8Ty#*Im242(_^vs@M>M(i7(4LIDAkIW0k4b&= z3$vt$J2`gKhB^N7q0b3_kBj*lmr%P1A~T>=yS3rf)g29Ba>c$?GRSl*xvr>=Irl-- zlkqzUvP|0r*zu+FmQNR~#H81U;HcHX!>nPCU{BJsAZ9KQ=%z-t3I?9Q%L|XK2AA$9 z)I<0t7}g*>R-siVSos592m{%jb4D7!UPh4T^#5s#xN8+FHyEPSX1i8c)m71#7+MoOF4pV6|`t2OV0p@mHG^Nis2Hjz^1z5Cbaa&Kmy4MtIZ?Siq5ma zPIUO&%Qe=mGFT_`;E4-pP^=+N07qEC=;8U}Jmo8H7W&{Pl0C5q8{4Vc%cAJLE?NYV z!4L?mMBuzZ&}~moa0ZV0D!rQU0Vwvi^RVi|-D;rq7O;*62~Mfv`KJ}G`oGNJ6*n4P zno9`SUWtpj0CX6F!qZ z?JTj~tVB%;aY|Tp)rj04@PX>8TKIU8-9hzScBu;reTrj+Fv|4kM`omJJD-hame`Zp z4qJ|ANZ^x6`)b!o`d<>vj#1}q7BaHH1R_Umfd8{J^JC4{rN~1dS$>p3m?`-kg1)k9 zWyQI-34g~A{tFcqgV|5p;xEIt4+nMZaDN)dhd3aHsdRY*CM1tp39jS+0&y}vk16(R zjCJiNkUx~=^#|1oubgNHH7^elhpn_x=KaK5HhL3fFWP)`7ZaSCmXzgYOgjfJF(MKQ z`R}4^qsOFD1zrsj0PkmY3;#v`U4T1n*WFP#HLbY&ev9z|7x(Q?22i=HRZgkW$H*P@fNr@rE4NK#P<#&~ota~H8xfdTY4~kS8 zGWt7(rcyhUK02$& zDQed#bVFC3&1ba9bGt!q-%<)|@$V^3h8~j2eOWU3S>${+?9KL62}{zby;#)gSi$B`w@MB65AL1u9j0b-7#QB8DvdS`n}Ld zG%PFRMvow;EIVux2f!NC1aC4?)IE621W}-bueg{sq*3Snikkr6-HN$Sm6-HGr?sCf z)B8+g$zZJ4(5(scrU_Vd{1OceSQq%4}t6?wd#eB^g=;yO#7RT_!#Kl<=4?LVKdz8 zbSak?`D8l2Wu;y0)%KBAM$RlMBZie!$nS-67Z{UisAxJf`yzNT1zHY4IT5mZcI3sx zQ-wp@GG1+KcR#U$69_{PX@N$td)yO4mVGMiEE~*Za@CH>WzK`t=H;7JqfBcYrJSWL zc_#aH+x%m)vZ9x1>4+WuqTcvEKx>x)qvh#zv_;*Tu3f7fQ6GWSDR(!}b=JB&j!sw4 zyzZFSl&kX~mVX(LWTwWHdAQ|(Gu+WPgAomNl<0}$@yxlh#bCz(bTwc(K@^SXS1MIV zB%?ZtClTYv#V`kF|DM;1Gx(kXJ1zc`f67~;FWa6>+>H|$CN>&%?TmY;gqn4sQy6`N zmIK?8HjtXoJ7N>RQVO8*-r-9hQZrooE6@p`I`F~{Q{GVgW8GcZ&nxr&ZEk`zd7XZi36T(!3HNSNT0 zx#O@XzZimDlv7KOoXSCx+)W-+NRl(;!NS(@UD_bZb)K26Cq?hOJ2cOos zQgd9%-55?lIs+wxc zbMMd`-q^k@?WqsA`Rwr3j*@`ritA`v)WjR~P9NJjEyLaKs2YA}uuX?mE&k@4WzP7A z<4-0@v$?xMJtxUK4tmkziW*LUjG*uz}#^BUspUCg_85CsAERW#Qokkpi!q0pel zOw)))4aElf`r5$T%<>D^8~~yy%G{{2E1C2h-BD7RN(H=k(=TFJ@H#!Vw)n)9b%OIW z0yJsX`fjdhBfDI}@qdOfvnq=R=&5U%`8DQ*v1W0%R!>)>@8KNVC*2xTA>dwWIS?*H z>o`GzoA}6D=0``Oh6}9iI*k70&i)h}X!ykMg2Po^v%Y#W+}J}H^J~`HA53R{S~#lP zE}gIsZ2nt%!b{pkxL%bhnPbsG9S$P*oFEJY zO?gZ6S~?gl1OR8G=0>*zsSS|cL|sY1>hFwY)Rqtm&fGnb`?2d80c3tyCF8N%j_3GS z2t)ynq~6XdaE`ue?O&wviW3yP^5Xp_OV*hDV-zFY-Z>OvmzeIcngoRC@$rXDw{BI{ zyJ{AOuTWPy9%~c*&YBIS60i#Ip>;~FI*xM&vAu8A0s?`&b*)GTw}dt1f2UWEEnbcN zt%-Wo+_((727w(hA_cU|A6Q?B5FZ!w?GY-v2?MnOID>qMH%cxehe;lPbM6nEGx?=z zj*&}wDMZkXJ>u5M1j}JfLfvD^xP|M%FR^($HQo8>@$I4U70Ni)1Li@?1A&I3DMBY* zg&z?m@r#^keco->+WFL%lj>IJm@%nbodkFA1ky97ofV>lpU=q*vM1kXd1_X4$bS&? zS2Nn4QZy~R%gd4-?l!-K+hw)N&_Wmwb*LY;Rb+E2oPJRZA&ICa`sqF}BDW4|NRjJ2 zf|sm1ajZUof3O=>;5s}BbNmfQ`LbWt8I378*WKH`;~U#X`27cZp-QOxe2yo1(N|!2 z+#E+2<7XkIU}0BKNqdw`k-ZmVW7P?ww3)7{Ps) zQCvoHKp*H7*rh<(-y#hLWU0BP35s2(dI4AH)|Z>vKuIw3yRxYr)!CWpt=9Xht&6HoyLt2ZKFu2ds) ztBsZpXDBhlbl1v{@>b6Ia+;5_NWajTnV-j)z43R6J`$bskb;&e(IHGs_OM1jR^6`< zkr6gxx5gzk)VfrytUmaQ)AhWTxs^2}h%NCUA|Pn@+b8jh)E?nK+^ewydagX>@Us?2 z-D`!9X&s(%f?W#)Zz$C-_kyJGQ1;xSzaYxhKjZj{YN1738 znH}C44@Amjd`ANvUU+eZ(ZTb!L0qWL)4T&KRsrFiJK&@c#mj2)TC(fPjjU$nflz2{ zZ#x8E`Hfj08U2^js0I_R6QD_xHJ%>oNcjYf@oW<1B#@e44Rwi0B6IN(8%b{_1V?FZ zNxDAJ7A@|i=*iZ#6!jeID)3p=*RzKTLD@~B73y7GvGh86<*pGy@kn0R5UF9Uy0V^yudFH2@c$txwUl;o(>6QsLe9zeD0=8IND zGoHyNfAY9Wc{btgISK)`pF! z$Wy=7MhXu6$d*4{i_>2J`+0yXjY+fGB5XD=^xy`cxm-o6SZ0Xz>w?-ldaSp!5SQDY zhVZB^w*l=Nk;93re_$90OYd5__(Q@){8Wr1ERiNUWpx3TvfrYAh)7@YcQB}xvsfHF zL@4BbTJaa?Z1Gd?ahO^>T)pmBAY%Kt3U(wl`f^Li#A+w{zKw0h(`em{gf4jk!TWF$ zMOnizWNi6aD9p1T*)>f`&N^_NC_-238`Vr09%MoAFD80eG#k>n!&%Vu32DW{Y zgNsUi3d-v>i)YjC7jV;P`dlz;*FumS^x=QW=uYBOFRtJ29+GryP<6+S)a|pYOb<*U zc#YVxKzjpIoNUlLTBsw-L@CZL&9>UJT#;}2i{_z!EaN0T97h58O`ziBvwVvmpiIZD zHr{+*#>?dJ0d*p=aAsPiODUKX_}9fc^=_SDtudo|BPy^p>Zb4eopbsheibMMp`Ow+ z&}pV8)Wv%N_EOI?0z~?^Prgt8unN?>zIa^QsH1IiwEx?MqqFY@HMhJ+{6Ab;yN6d= zf^7$O9)tYXYx^QSfic=*b?!TSJ@%+nyP)*T&|K(u*Z)5)=`lZZ0>0G>_h?%we}{bE z%V7<7P3T*;2&?N}IDdUZ{{JUSV<=pbkd64GJ+S}d3-~7H|F)Xq*RJ&crs`)-5_Ki) zm+y-5$U0#NDBnR%L1umnHff~sP@HhH@=$&#uRl)FDla!XT{a&#AW+cGBv3Tuxr9UJJpU=MX(_1S-i*}saZr@h!f&PjjVkLW*=h#DAb;Ny*j;na*Rt#8 zOWJp0bW0`w`t7w}fwT88e|&>vUqAAmZ2Y~4VB>#l(I4Ktd->fw-xtI;!vo&UKqP{I zKfVWl_|TUB)d>Huy{WS{9~07A=1lmy>~Q1GfOfY7#^{iU0-M@XD3C3({q3nLYg1O7 zLs=d6?OUr;GBTYW%9Mtc09M6n-$Gh;wnKcPmyL;O-<-FmwA|-H>#AGL)($QC>vc!? zTcAlZGq|O}>S}-P!Og)pUIVSH>%fFxF|S^k&&LswxpL2%Yx{K@`q5F+MTEuGCiorCbF#A9IxP9Jc{1+p&p%{JC@QWXOYq*?E3qN(yl7)aHgnw< z&GW~OIyjK?HS6l@k6TvVNeA<0aZD4gN@E|6jkH@ixw7q1_qztBRf}71CiN&$Y)|j1 zoZQ>|{G=zDaf*SBe$#79TZknsrdO|CO~vwmzoso)=zjuNg-^#G%^k=?K`|PWCc)=7 zF3W$YzW$bFd0-isNRdRWHANTO<)kK}EKY~ydMij-2+3O=GXnP;+5|7kdBEA_l5pp~ z>|UMSk8sQ3O7@i5$AZ4hk5Xtv!NjoG9@!X;`I^#@suHDCV|3MXHZBC+ zGp<8!*pL6ZoGlqbKoz=7B04G}jtCdR(KXP(BA39Hc6hd=$GN|s)DW{#;Q5b{imoeQ zT?5?hwKM7kgZn&sF${HPw>ZB2)3MCS>-EVel51 z3dpC4PWq>H?J4}LWh#EoqR=K`^?|mk$8no3i4#PYa!$+zQqIMI1`o3(>&^_bjjZv( z^rBZAg7@;AYrcF8sWc5c${Z2B@L?uBr=KUS&nGq;(LF!V*eth_GQNfQ)lB2m>R&1Nik zyok_Z&3c`c0~^AB_?!t)X{%TDaFPlNZS(_$Y#LR}9=jYH7w4eIqdcw@HNAH2==}Un zLC>T5OO*lbHibcg2mP-A#+zdOgI&;9n5#2o&he=z7|w2;_n{m-VA=Qfb>)R}h8M~b zF4WdzXI!q2Z)+|!w+Y7Ot|W25I~a_i($nQO zR@h1nmnK9PV&&@Ue(`B87ow`E2QH@YD|!vym|pS;nYIsJv&x|_k@lVFOpJ|vXku=D zvoPDCR;VkpMITs~JywK!k58|-;LjGh#g@!a@-31puB{2ozKp-G=s0U19uZyZfnSk) z0JxB3HP?cLX_f0^fw>i4rwRVGaDj~_l{MTkD_ujwD&sYPbN04e;qW2bdL3l4xr-h? zvmXtr*?%4d*4h;*jV?z1F#~|GBauL7h)u9#plOy~MI9yC3#BqPE2$A65T9HkGzi)O z*xngwUfI!*khv2gr|lDK`paUx{4>Ke3iJqdiox~3Li^>Zr=)*r;FiiRS0zo))XfY3LwjAx?Z`C0M*ma!Nvi45XYMF9OU{4AmPMknJw}O+Y~F zmY#jOnI@uLR-H9$ygCy#J@sr~Z!Z3C#BvYSez|q0C*8XE2x}Xw4#7gT^UbNXDdB5n z-D`-ZD@$UhH2nGF%kjSN0)WLaiYB)V8;JoucDIZghhJL4sw)Dfy%E_u!iZY95u_Xh zDH`e;8LLEKz)OvMObVpdB|M)Eu?=bJYGw?(zlPqjfqlTbHjfmp|26G0#s*B`3TDZ@ zHNuyKijNOvVm%ORQxkZ-uxKc`%y87@b3VC7Xv!7s2EvyG^>;04rFzkui2t-`#zt zTJf&C_J7VCQZl-vU4|K+o+hoKO(vqxG&suXwiSBJHFa_k)~o7&Ou#0oXgFLdRv_xOVec8Lu<(P&??=E$nwU2LtRA{wmN~-^3`tk>=d?*5OO(G~A(~+101Yr^V(o;Ns)&su`Qtu$E%x#H=nM!Vc{Q*YLa+GKHesdjBq@!1;b& zKoG5VMw2?Gx#nZ(DOVtz9MFZse9Quee0q^H=Q5Ysa@@73K&cP-U4f$1@)2t^O&Oo2 z>dZdHUgRsC@a%BJch%j7b9v7k|?rD8sv$%s&FOtgLCm zJ5Cs&rQ6!xRLJ5NlU+#DCknm%a6-!g?3F>@nD@o|q2y&yTQND;rKo^ipvR(>d5QR@ z&jqhPbhQVzjqn@_M0$HKE(L=qlS2+OI=c^-t^-NS_ru!)Nws>8jxvgMz**oPJjO{J zAFoXB8LeEc3*;34_S@q@5u6&vn$31wh08%=E?>e`?(B15CaT8Ar?~Nb8h9Rnx_qg5 zu(ri}dTD+iY%qJc>|S(4L|jF{u2LL2=7?6Oyb|NtVgb2OUKbq~=fqYdfPTB}k#8&5 zOA(C}et zDcnh|7yY=VkAQF=#1%wX~g(4k(l4LAFzC?YSv5)&{SMDxz8mc`iUM6xAuVOigR-Vlp{jf{v~ze`db+rhqx?Hb76i&|ebLb3VqDwe%6KX= zttM^*t5LuGIhS4L0BJzaJ|u~_!g6SupImLHZljC|+5yZ&q7R4#RM&*MWyYZ5l9G~7 zFL~0K*3fp)JEhV^)#yW72L9|L#|wSwH`xb6#@mF+Ydg@zghjSMF>VwHC>bH2m5Jp+ zMhVW+yx#iiMTlz=Z^juqSI4XXsz-(FxXcqnwWP%~5SIDME0E_pz0ka)XWW{>Eo5s+ zLn`Qs8IWwww%pjoL*+vnpBK+!EUK#p-k;B$U0ZT}zWE06Z(_=RP0!9(>hfkV zCG{+bmhDZFk}7}nl`ibEtPU(ougX(OD!c8|&8utJEgA=elJ*CWWhVXXqvZS`c0`{Y z={p$|x@2M9z(sUO(TkIWmjNqLobqcSn3gS=#%eoCc{J$6nXax&1QCkWJKq2dR<673 zlbEt2^Jy{_@Z8m)DAXFR^6UZm5sj z{;A92hyGY_keQ1oS&7o{rO(op+{2+mJngGPPbF)PG;tP^`RqTuJRo@BfQ*@$*lg06 zl~?#uWx`IyyWPJ-kTHL%o-cPBmK&{RSLjt4q17P8#h@X9E7O%ETa4}yxNpp{zA?EN zukxNAR8aCdCWZSk`7@w`v|{$dFrdT9H%G<4wcU)?!BTf&pEoizj4Pv^8P?{SlQ{{l zLqzJBpHGEm!}z!$w?oW-S%kaoenVKySTWd05BJXYgdg*bj}O+T)=;}%1QUkP>)~}D z$;brQ!ROC$gv%{ydu*{=;On$mlX?@H7hGI@(XiKt!yY(=-}+EH z+b)Ohx#1GWR};e;LH2~|&1R+B zttZvHjO|Vk71zwkh~VJ+d5DmNn!nKoY|*U}5~oLktIp#ydn7*@Nv4(C_2bWKVY{O> zl$D|N4dRV>&^39Rjxs6%Zygz6OWMM9*j8J(S6s^Ehcx{ieTHd0%|9bJX>}ZU7*SFB z-1YP4Unu&n3C@$mZoyuw|KTau>mAO1)CZ%tMzNYpyBAq}v4#Lh6#y@kf|)lU>N3^7 zB;Q%Tvi-iTowfGOn9`dkmT99+xM2c)qTum6`a@0lfVLB>1D9`(4oihCI-;c8tH?jbi$NpY59*!x+rJ>Z%nK4n-J1^y0y<@(FCpfk;59B&@)ijlN z4DcGX^1y_ek8Avhw!^sr#rS8cw%hqdcGx*!#8kdKK)mlxBDo_B%9aNwxJq-^}&Ok$4R`WKGaL3b~?bQt=0Sxhv{N7AL17oi^4M@xSUJu z=>Zc6?zSA>miE!0CTMjoj}0h=W=7g^mauF^6QdzUQ)&aTbd3*q1`b6bn3t&Naxg(; zsJa6KJ)t3QqlWF*L%VV#(zg|q%pU3^j;2=3mXbLTsQ)mL(_fg?ph+NUANUKp&EmWSkNGBpoD#tSkrU+BWA(Jr^zyqia8-$>{0bPWb^e9azs{ERycrciyb>J z0W?LD%V6awos;e*Z}~uHcYAa?-RDd#9aSK?oW1%h249hiK{Yl>4L-mq$mJ~Z{iY7A z5-$viO`p!+R+{-pQ&dEJxPlRPfKd>~HZMrfa6=1f&aHXiG(ouRG3gKQ^yZAiIVxo_VVD@`6+I#zgw zioFG+(G=8>%`H>4XX!fY`5uQ0drYv|9#g7^CqCM_Ey8PUYu#IFRj_ppJM0R}CjfM8 z&*v>iJj9Uvx9gNMFT2}+8sww}I$YAA^>m&lxgbo=s4{nsw!r@R#iJ{e!K-Zf*R9=^ v13F`V$XdJq{9nwEM27tIm~GespK%*oQJWMLXmWmB9k+lnJ~j_ zicmC%9ERDJiT@Yw|8Cd&mX_r@AiBBQ@y;rUeD*_`8eJm_eYO!SeQs{ zli#*(-8!jjSO2zNw{COmx^;hS+p-C`)6%B*W!<`a>#qHM(Kgg|in2M#j+4U1eWg(x zb!=W-E4h30?YG0n0`1Pc{g(FP-M;j|h<>DwHmu^Np9JHq!YRt3a5;*Qg_L=8^x4A; z_bvc`7p?I)Nk`1m?|{#`xA95c@N3HpEIvxOI&A5>BAly6J^uRG`0wAYsV~dpN_o|p zrl+s)sCO zf%CuJSr-(#rFH#pw|MS8li6_-x=D6j*zDOB2&VvBVB?a;zs`gH*P~V^&$XVwcMGNh zqH|uW93E*=z}V$h^qb1qb%t_k(7S^EwUv9wKjZO%W;mHX(~nH0D|cQM4PiJg0RGO2o$=ci ze(bPzb-}ff_hZ142=GR+T|q&Sowq-ATR_LFna4fb zy{w{QtZ>Fg#?2KwA@VZ+?TqfFYkGhXM*2GOs&I9E0uBfAw!)Nj+)mn~nER-d9K6uB zO@izC{=I=@FmKH1a*UF-kMqOXk{7mCcEgH+oY||jb9xtDh_?HW=4gPJT?kvmxMP>g zWNy{sPHP^l;9$G(QAmB%-1MMvFh#z|Xj|X0n%iVpuhIFi3zRJNNz-dP*X#azt{3$D zG-5d*8IPu`)FLxa#Q5UVb&CC`u5IqN^y<2lnmg7>JyInb@^{$VYgnv`P?1-DAruwg znPi7OdcsocYnZh;G|~@)a0pJ;E8u-|%jb2X7g-%^R>AHyuO-`?cSpqf$erxAC^$|} zwKoR;@q;v>{H`aDdOA62Oq}_fWIm>iu(r2O+FHNDjhQtDM{xROFD@m9c@5o3GpMKq z6@c}G45@)7wHv99g>h0DDrrGib8L3tmaXG#cV$$?Tb`AsMH&d{ShM{aAkOlRu*MJA z>74Ov%M`m>K4Ty~-7uTh>y5o574*yY@1+|MiA0qXCqN+~PtTk=la!pCS5i`<*C#Iu zu>yhcQBlSo9v-Tinr7$ESMr=t7J;PmqobphNU*c@_lf=~;_PeyoUOt(H~LD8;c#BY z1?y^CdJfJhxan~yvOxxBChAAVKMSr4OZomr!wC;LInkAITUgA4duw(k@>BBOH0Rm6 zI*sYAs9g+2m3DR)_^w`)sjj*pq0x$PQ`MHhsk>iqF0R(9Lme8KnpPA%wXp+d+hJ>Ouc~fn1t#&o*VZ>Pt0y@%f5*Qr>@4W`q;6Zo2qY91+V(`p z!(f4<>fd7$z%mL7d|FLI^u)rCD0jD^!QK5Ex9c<|#Be@6zTBs}nDZWQ> z*wtuvGC?Z#(%FE%TLNV*^Fz5OJ0~LZ02z_$_u_lIr>jdcZFhPih+FF5S8z^=HL``+ zCI($5b$aD!L9-fYAk}Q*L11ZzG05$a9dpFqY10TkY@sG!9ahXQM!XwL@ez~Xi`6#p z8RIVpJeesIqz726{D{o!W$Jd}PAx5BQ;TZ5%c@A?KPTSiUcAjyGT5`l^*t+cvo~)g z$EhkJ!H&?If5gn*yQTVaicIkZ2pw)0biLn2IwSQ(ax#G;+VK_rJxEI7JS$qiqc8VSBNH2*q!!Ak(kltg_C=uZ@R(h@Uou0o za&xa-`+9=c2YaQkwH5z8Lcp?F4*0RxV08)-KK4QGZ0O2<5|r`SYbP6qGEA+^1&WYf)(@lDO(!bG8rFsua=Jx-wS3jEGQD!2 zpR4>CbJo<mQ1sOIE&R7D7?N??O0 zPW|U3?vbNMj##ySSPuVq$~<-FdmGQFNQA#k$AH|Sv%$;z?N6sYdoxUKb~&J7k{jZ@61-@f>LMp z3C&<`c-f1WHZC4D24DVEPS2lum)fk*CyxQwFXd)sOneus$~{drubZo!Tp0Ugf`Rnk zU0oRP)bjq+CwrTC7hF3xxN=>Qy|eA$x*CuMhL!Q6HkFK~_P0;#AJuk6E+}@6;`P8< zD!L8PiKJTQw$|No5Sb4%B~5mla1rDCl9rWkxLmtG(IQTKeQ`;8-xAAZYind3Pqqkr zvc}SIk!5N0iml`J6+UxvNs-wbfL2~RarmmIB-}usfGq$;m_Cg&?UQ{WFB`?{L;PKL z#j@**zovd(GdkejYkXh!?M6#gJ<&puCY&SbP+Tjj+ciNR$7E(^TDPB`VZ{bN;pghb zLAJiM?;qWK_)JL&F=S{5ZHoieESazbgC!kmvAKSVuRe0V1z^{mN}BT)F{ z^A{;a-lfT7^S$L1;lk!KgH6Hwz|)@$hJT5semcihRN99NO11QEX3Wl^7ug&xdwOVa z*V)KXeKp|VO@vVC!h9&5Ck~%UA_=B%YmBAduPZ~gu7~zk*#Juj;r7`VIT0?!ZX|{< z?^2dRbi^G5W%@Js+shbI9E~i|bjjaIe4eR8BCEq zf|1^B!P3~a&&2_16%M)PjhY~r=eR0OH0#V^I4uy3uNp3(USj+A?ZH?os@9;zgb|_9 z8hOPPWrwoVKUq^Fa+^iYS}oDuuDo2o%-z*JC{v{R`&`KWm+LA-fm z@bvUnZXePi{x!bCYt6B*>UKKLxW;AA9$D|s#eKS=!w>nn$hfGegWR6r8w#YU1!j=R z2h-W?`4w&AD9Px%`#`dmUw+NG5EG!?NyUl3X$U+*~eDHrvO_hHf_tYkReOCY4 zsj{SVeCb|N-Ldi|N-IsZElvwu&2BuTq6!ghJn$d8UPqF|=_WpTVl7OhdUY)Km9IU1 zZzHc8@y-IHJ4vo&7C-rjC5oi?k2;kgP?ML$yyu)wBGS@4<&0UpEWwXE%29KeaLPiU zN^we&gO>$7y&K{h#UeE@q98k)yYD0Z7PNUrBg7*4Lb_r<^-!)vl|&D_2oZ z=+ig9uKsgFrI?w*@kfNv=3G1v33@csQlf_dGd}`O94p|ky~@RpJzYBrlNjJ9T`5K~ z7<#v@YVozMC0^H1r?8YRnANQ5vPoPqMX$hDZ=h$=S3iqa8q5;CLTiL&L08ZQq8`G0 ze9elcfq0BC|M}8de$AR2I)~&Ic^$%$g2}!&0n)b1jvx5m@HY%u45QMEYv}B zDGQk^+61q#Z;D%5&6-tY(%wW~n)EvRkTa>x3+n2OiM-&5gCl7h=HquhPnd+rh1Wa) zEX_wq&FVw`cw=09(ALhb{hVuC!JO&U>)n;l;??K-hq!X6ai5`g5p{t`=BVH7e3)Dx zUvF=|S@Izl2cL`ZVS$57MNmEHfX+=zr8HfI%+J}j!gZ$8OMcO=kNh|+4(%(de2wb+ zP8_>|sgHLF?I@DcUVZ!H26w)t(v!VYBKDz&iF`%#+;Eg0YHeUBu3DDMOAsSM z2k#Ukf81OdUZ=zP0>RtA2aixCxJL7@9rj|RHd#0DCcW4_OKK-e{V6X*Z`DNeZBK%MMh6(8{w7eU+kTUV$R(^!sw#v-RS}`)h-TgyUlm(8H>_+~v+&O+z(QyCRh7ial zw(IcdsCQS2RM7~9cqhHa?`_P}y?H<8GSvSfg)BXYdGfu%oKXf9!RWGU7KAYBvYisN)vJ#Ug*kXp!cS%db_c@x> z_RIotXV#=yxHvlYEW(&@cOdNQk4-Yexl5RZm`XL^)few;!&pTJ>KZ1-KD<}J?xBME z^z_mEzoS>1bC-Wq7s%#XCLB*L(JoM*`tr$%>F zJw(f6)L8DLvQb#K*veZTL;j&(a|4W+qW3&5)k4qs&@kkFMTH=hp6JeUcJ}z3i-@=B zq*uB&(tzc*W!~2^x7N!)q)LZ@yd0X1{t79w@iZ=rRc^=BGZ#=F%*g50k~4_fyv z>;c`fPC+P|QAEWpO!V4`^}LJ+n|uuq$f$T_^Xw`#a0%69Y-e+d^(Uwa!VZ725yqoj%Q_qA7a1oZlaEg!^K1~qRj>@B{u_1Xzu1Q@Zu?GL{2`>1-itkSqD4zdf)uwAVf}ul=R}eHK}E>f5|LDho~^V?`_Jtuoys-MvFde;CvW5N-pP6 z9iCAG>4x?*k%q%jj7F-F-*i5|2=OF8f3NwQvvr_!aLcn7DWg$AYmYmKNFhof4lg!b zo>w(bQ+l697FHTJr{(}rzD;majTut*wi%&BFVcJt6D?0NP?%?ih;{ZP#kxq-fbS0uD=teQw%qbZMlV2dA&T25psHk&}| zYTbFF1QtE__PZV}w|!sP9Jo%iS}ey-stUg59@(8m$ZdUtYisj!sZr`Us#Zp(tF$Wj zgS!u&(^(U?oZ*@k+1-Fe4R(~{4x-9{@Q_ngiUujaOJCLOiZ;UbFD9j+2TN8%`ec@* zw)?NHww)5N-eyP5>aDeXGLPkq{y@!&7;7hLGT3GRV;rQ-rwR{NR%b$GzDcb(gu32v zD7+VqEAt(>;^8q;@mEh22zU5t++)PW*<~8pxuUnNFS6%N!7`S;#l8#3(KB)MOs&Y4 zTT;rJH2lT(v-*U2l%d=%p0N+^4oQr!LeiF@>OnODT1`Yn(z4^h6I9xS9BgUstz`3$vt(e249H)WY!`@0JH5;THG)&%LZrcOJ@h zmiLuZcNA+vIDn7gfV#SLe=r%;jg4bLes2_ngE=_fiW^$5n<4~CQ=ZtR@^0y*{LLZE zxnK($PqiQh7txMtJoy)?n_JFQYAcRa(}pwh9>hLyuCJ!Rq>XwuDmwP+kjl6I$2dMp zTiM!XlUU=q*~7K~2=OR5)uqNg{%#9~PcC3SN=QK5pA(Gjwa?M-tUO42?gJPjrtZLmUeGN``zhV_TkpD83a0g^KIh72EG0&B zM0E4ErrwQROZBk=AX`dY&OfSR zzSY-?xncuoJnTMir5@sZnI!Q!J{ga2FN}UC`wmB*cYy1r^hTkuAU;hDwW4x0}jgJ<}+A)+1L6hZG+q@u?F#63Hx2jB**d#2FGBtXu z5ey34*v*Uh_SrFo6iO8J8utU~xtE{{njk8RVeS?^@S)#4P!>(mR+jvxHf$6!cs@l%cFDMNjeIuS)Z_PAB0 zGXXEi8VjWqIR-+}_g$XLONk!01qGH*C`@gJYoK&GBt>#Y3hD3>J5{sKRvE+C8&YWC ze3RQlFsb)$NLX^4&XUx*e+hMH0^wr)#7f{>ftxonQj_KKvFI83JL$dT&fu z-oQIlw#cY@-evU!G+Y7K&2@YTgSpJ{+;((Irm;HU%Hg@aDV*~1uns|s!hStSSo{a4 zxxCuBA9XnJA1otTOsc4R2_opfD9_?Y2BSHS2GccbPBklVbdio5>hI>e^KiqKn8&7Z zs{`!E9X24?tSt5$7>2B?9u<-c9p1XF=cR}C_DZr&wmzP3{>DsYab^}$qaWnV0Z ztn-DRB^(x#(1&UsXE`Z#d&nj)MNn(1)dcV-mAQAyEqFgX2s4jLWMvd%p84(_yE9#8` zO9oh`O9g}41FInuOmwy+SD~nm%GbPErn92QpX|#&arEM1c$DN0pMEjWapQYp1lP1~%b(_(pfCH&hF0*ix=i--8{p z{R-Vpk@rYUm5$U^_ud~>TdyMqD#be-JlBH>{koga-b@+}kp@e);!7x==@~q#c6~$X zoYq5*wh8iFol`ACTpqZfaIQf@a0N0@nE-`!f>lEyb1?i^%|87WgT)_YjNUI=i?_CN zEXZl5S7?1=$bZkx&i3wpC*ef7`+%PtatJ_!#LLqDYCXGOzR(KnUQw2+>!65_n!hbj z15eInE)?n~K7HKv#{XsT=+t>(;FT-6$im{>iwd1KLr$d;B@$qSZO)W&4{)43CS~5DP-k}YO9zSIIIqyNeUuR--ow!t;9f#_E_ah1p^h-oAC@ZGF5m>*(>RTD;}N6)*m@{^7hU(!3LN zH0uVIo@nOinsg`Xh=S^QXY{&MV0x`y%F`bCpk)N<<9?Dro*Hbd4Mev38m5xC!Q4gs z?R)rZaOthT_U=A%b643U!eov;+se+4F{=g9FbtUg!=-Z9I1tB+C%8MaR)}HE7WO@m zi;Dn4mXyi}Z}D5a`W_spzjEs#xCt?}c!FC#x)eQaHqqtz{`>dIwKVoNRm(rpx^*_j zcz28{HZ^P9_%UOnet}Iy)et!CfI`EyA4lM9qb|Au%S*fAvCAAv34+nN zDcP&xSl(yw$sPY^Upx@BA(Po3=jHKF3c53%oS}prv0ckd0t&pfiA5#KpC}8+p@8}H z1~*^Xlr;?J(i~wj)cH9UI<0p-wQdf*q%k6NTeC)48Xm0Kto)4aCN@S%ub84rkA3BT zdHTBX?2KJqAnxy{ajkYBL4wisHm6Y6NhUoWKqH==_g>yWDldzE-@SnRl7C_w`Okq3 z-p!Xa+^9u@)DW$rCFnrd+NYtUWtV5(8B3=Ryq>wME7gv`dM_cFta|jQYi#0v1OaS!yK98KeSZ;GZvk6eeDx=CUwB?p z2Eh5byXBJK4;&KnuZE(=Ze_B@S-8umSeT#KMBI+T^qzy~)-nK3lGJG%t-T7kNO-JF-a8J0*aP~hS1azR%-7?={a=ql!?Z`lG z!D9`ilvh_)qeVsDrGJvmgcRL^vMLL{vs6coE|qjSv_Iu%qxaypxZuONS0x{mYWcav zxw`Djf~5`;*TOSYplu=V0W>b<@~o&hex-_{T9e31W_vP+g;2L8HO!Hk2VgLdKLpeT z9wVSQ(|qX@@K-U@{l?Ap&E4nmM;40PJDmMc>hqa8sK~a|q%<5*gE=o&-4fijKks{S z@!^TNejB5hXpSAtx6$b@BlL_Dy_?znrMzh#aGlZfc1hHmGx7=YI+q|iQ*AF~6wa~~ z&_mtK1oXX=hYcd;v%?qmjW!TJR^JEwrkXQ`pPcdi*YTg6Ouf*Gz z2tS^-XF`*P?Q+n^KA6RuezSH|SZ(V|89mf+J&-=CFcs@oJxFm23?94s42y#}?}bi2 zX?;`rnUXI13fxsGHUtvtclv>@>>cU(-hr~@8xbulBeTMW;_fMYG-rX@&~R)#_2ST3 z0D-|fk!YZ2(u!L33AgzaiD~k}{_h{%cRS}rB|*wVYwXv<6a|2cMm=kEw2hD&zLZd$ zD}cci<6oyoE}8b|^CI|Bo6&&50Wjf0S)$q2bL;CgNcl zkgMs4R0{QWy_dOypwbW}3=2lhxKjj8SrY>PW3<#BFp~ZRUJk!Ab`kW78EOx4gF!-h z@zLYS2h~*%&l}^M$U-EPHn%ANt0LfADtYbPzxGTP=ACLcdd6lg0LMMr;>T`6Le zb%3l>yLU1A0veAT*1~XoY9wE1|tI@?r?_-zPBA@L=ytWo?RgYmv2Ps6%=CI1?P}$qm8ZZ(u1FmwY7w$F^>K&=M{@UJH7}5ZxN6kl@%|hVxVLk6~_5N?@Jtra#i9={^ik!Ch`oWLtDk zDv9SW#A+2D)CZsmdsMSy_5kn&3O(h@;6ucGwxLjTM@F#l*Op&W&9sjto0<>4COAxP2m+^s^~Pzz z40yRc@=TLNiAveA`;C^`jBb|0raJ?3hY~68V+}U%kk2XobfBn;(Jif`UHU2v4Jj7+Uq{DVEf+p;s6P*rTGr`HIY*esC-v{SRRyk}3!WrOt)smT&k<%dIx zb3coBa>us3f#%9OxEJ0!-Cq#_gUA2qFH@OQGrQu&D6vv2 zcf1N?bhjuJ3g%+H$fQ;(k@jFNi*fhFiRCDSGJJ|fY*3VHWjr9uVC=(dK9^%E;eIQZ zR@0yDu1Y~Wnbo2S!Z>TT@t4pUmp-IpvnLubN|hi0cPI8lau9lA&a=NH*uJ5z_IVG> zoJVAsJ25Ip8}Bda_&tZh7Sn<4rW2&1EQ?r^_Ehip+wIlp(#eVY`? zjt5fL{|OyIN}0v2GcP?;718sH-td*V1cGDNq7{5UgZ`8#hSr?pCq8pmzSmfNyD*^l zDUsNr@YFzY{{&Po3&2$6-Sqrb9PYDXCwpU-khgpFEz`s(WhAYkB+zLwe7NUp!z8|@ zp@XF#Rg<1YqPdnr;L9nrE|mhcezHg`s3$-!LoHc@2pjeaZ#$_;dza_v)wA^G^- z_pEs0(PNGAkxA9Z9lC1k2EtKQ7MQmZ2J1Da$QFkI0fvh4csk*x3@44xlR?HKBRRjb)pY4;EEa;vI+<04ri_PGh+M zLQ-0;TKiMYq2e399@e#T?b=ru)jYYjTt7RbV(yBU8BiWn{tezxCs@=ZFuSI!vrpNZ zkXn3qK4W8(Tc&KUSrzfeVcTlwz(0~6%`M9{q9Q1Bo6s`5@+ZSKpXKx`LqevN&m&xs zE;&hD1&kcsb~5q70_hE#JO6lEv+71fAgFZVERDGMts!ng;nRk%b&VE2GjRe^AxMp( z`~Zk8tM^ViR%XpGv}?pv_kaj)urpMM)cInidaxJ2NH0ApAX-~6%Tj6 z_WebU_rQ778~D!XN(l+P9M$oz-*lT5T~_?1eF#y8Z(;lJspd z?OIb@>=;<$r}yB5Mf*G6zVc7_v{d`7rmY}*0E>sDA9ImEj>G#8l=Jt)^C(#wsyTzB zQSF&8;!;sYcr0DzKDUlzM{IHz-FD}aG#KQ4; z)2;?J%U7}*u6I(!vHiNdB?$=~P+^#APvi&n(zkDW)#ZE==SV?ard{Giilu3)7zm+EhpS#`r`hO@JfmzrRXE{s0@6IUp6O;1m_TNTcVvBqt z9a*XOr&nZ;;|r{WkO8&YpPbL2l0;6;)M6^muP?r3(M%zUx0h5VgOJ_N8Uj zCBF!oHjc7zZVn=($9-+TUtA%(>9PlLZuMg<(?Tr3SI*>RCAR3fToHoF;>v* zm>bmxL}!K ziSq?$HEYH5PfRS5qe1yPUH!aDx2vnWDsDDq!W3i=>YR*( z6S~3~ygOd3b-$Khz_LCXTn&b%)$#&DmD24Cno{(XeMy`D&E^#zcdYMH+rV8oqmRE{ zFGF$&Ue%2HFWT(UtP0cQ?@fDNTVvZo+OSN*o!14!b`0X$x4-_saDm^~T?*atn*i4- zD*cPo`~Q}nj5^{WQoajZ3W8t>GlUEu~Z2R@QGp?tPQs1_>{81m;&~W60x}oFN$0tlJzE%k7`kU{i z=4F;RJuWz3C7YJNxOn);;lrw@PlK*q^ENewF^69T{mSY7jI4dt`9wB1_pWY7M`;q~ zdDgc=XAjOE0R0KNGf_9^e7P}4MN7@bd)$$C>0q7V;WL3?Emc+N-&Vsqtyl9__EqZn z%IKErm0Kfnum1Vu~y2$f-%f0f1~;XBz^I$rlH9d9^b zYctQ(2HtymJu(!NSMhnf$DM9cmY4i99r3gm_rV{(ebTj~c6O86S)KT}=B=&kbogormAT_pMDcFt$*NrGtmd`1YNy-v68=e+reM1LCT#=H(58m9c2d2UodH? zog1FlKazW=@--J9JxWzRjE{Wt*DsGBWI>#6vTT8E?sx(ZWtF*zfJW3GW4|wUOyLFT zu49m;!BR@API6~XmfJm8p11o71kgl=t;>h%T!@A*S%N# zOW)+z&lL)b9&*r{f|8X@G3U@|hd1He>(&zv9WUr@|soz>MBfA6sh?cbbjqd=<4Up;~snLmv$g7W#@T%O_cS9=XB_W z&p(zEv}Lu9KW}vF4Ah`ze7ayX7K5$3sSJ0>Z0Wl zelH*(AW}zfaBxUqm&}tt{hck=_v9HHEDSgQgbR|AlKM*d?^&WBn%v&NHfAz}o+X&c zqx6T2?fu`@t7=ae$FVlf<2EZnMv;6pHeOC+?PloeSkxqG4+cz}f0~ALIp>?PSRw=2 zv(x`FS-9V?t4lW95~JHJL34EMl|Sthg+cMOxD3P>z4A^9Or~E;iw17Ax3?$zOchS; zx9@^=^-_B(p-31EgT+#7V*2`=MmTa6J`s=vSR-ddrUDB`QoN%{2@sCP$&*2!%B|2m zW4Q&nzP;uxlwgKBWpNffn|}6Ef%iUE#S&|2j(J+@RdO-_TSQ6LCwOaan4jF7{=IX2 zJq-4i6}d%2XiII&kIeCTi=fjF_iPI29-@*JKgj?SA)SsB?hXjC>5j^v>bcmK{BsTrXo%yh)?o5#x~_Gmayd7P`RJkI!Zh%(vyJUBn`@#Buo%u42uExe0PISs)Wu4Sepw|pvohK@(T zQt5rcsm>Rqh3XGEzk01l0+!rBC2_yBBsrgLIRB(7WHKXvtmiHRKZsm-C$TJeVClnJ zIbv$o>^HEqu_n?w(QxL4o*98C3sW5)TTz}=sHsy0(49A;LZis3IS#bAXG8>De}{bZ zBON8Ka19@U%1tR7MqF3Wh6T?l>!ITGj%sRxhs1f~87ArU38I1m{dp{M_wU~Ob2waA zpU|vsRX=(vX*;{?TX6<%z8;)Tf`qz)!Fhq4I_FcqG96UNJ+SH=2uCO1L;`HoBS(*t z0Sr^ifA)I)=X%v6S^%l)31a;Uz@2uP7Jv1m{3QFgeX28YNe!0F+PLw-9_940z9e*) z=RE*cXZ|G1eb+prb!TiZAm}+Kk~`#fDD2ZxE=}*%ix;C#WbozXHy>Wk4{H*9W?m%0 zP(YKs{U_*?OM5ff;_;~(^wo_TKvTSZpCqxg`=~jBA1e$Y4OORAf+T|huwZJow=DJIf62?_L) zXgtk+3(cEg4ai{fC;Mvse%%tyXKdPEH*oYF_+@{ThaRh8Wfr$O(E%?G7b<33q_I05NE;0~73nfh%?Ga?D3V!jzkRG<(6ezJ1Hqda9VfU(QoG^_)!f>(=d5bzs?@;J zz58`ZuV3>Th(1fwWTBsoU?5q2GSd?v!|3JV(Xd9;kPCWah;m_Cb@YgA3qxEIB3x*@ zk4NqhYX6tD0mO9fqiwDj_P04cty*>9XQNL2cscQNow~D6IkR>YAiIoxipBURu>c~d zx<09i4@{kC@kkyF3(EWi1K8X%oO)|ZOV_dhEb!p351)FR>@2ac+mezAWgy6>`c=NE z`6?OSipY{JmR24hKp7!AF&sX1?Qv5R)lH#)Q~`C`n2(w+023lsYja>}Gk^m;p{3=r zb?Y^GgOC@J9JME;a&Ecy5??8-C3+knOYb}+W(v+u17XKm5PEeinz0MRc(6HyqFrNk z`)FlTq+}}{-f!BxAX@itGvUWi_g@9Tiwr*SGP_H$i9e^Skd%rF2Y~kg2h5*C$ zf7Za9@=eP?Oai#ZqYK2>Oc&Irw9rVd)W?nTs$3{-42(Jlq7kv2m7e!!! zh#W|3G@b?qRA`ve8;ORix8kQ)qLbM{9G#QX=%p@%vj_n(SKjGA5(D%dS7}2N9ef7R z2K_PfG67Ovv(O+~E*8n@D(wGWp~!RD()w#QyK|DVabRgXpyXLVUgt8o(B@|#s-0Y> zJ+Lg81A=|%*xul^MKigh;Nyny)m`*6lmq&tuzw=`Igea`szpfF3-$*wQnlf0Fxs3e zuOd3$eq#7*>2jfovYa9KNQFe7>`ida!Vqh($x|iz&rpsOcw&$=P}v&LYk@q0vp+N{ z!q>0FGLb5a&XIp92F*UfnUdO&BUpiM=vaPgJeQ+@VL-&2chLI;sa-^{w2l!NM|uB# zET&suM}C3yEaGcP7m!8y5sn?nshI1l^re;`jQ}bdar8$6sefm3Li12qXJ_YF|I!W0 zl7$WlQ-R+JbLV%oQgU;e?QmFZAD8|o1}yRiC-#>!sIvRPr`};O1GS5FCL08=6(+sq zbQ$*GWPNpY7L-K%E_c#-wC@vGhMYFpe$4gzuy-l593ZhIGy{FyHmGR3!f6W$iD+Ih zm>)4wcD~3QDSo3-5yx*#56`Jj;arMM0C7lFRh5nv&`-i7)#tnwBN<@8Qv|fdh)+lY z8uy*uPUTaG4@hQFSGO){B2)p*c*+#WtrG&1vHuE+_5e9pc0o4z)$s$Tubr=~G^*4l zf$rz!cvRR;QAK^NvgK|yN?EhBO?Mgc#gUn}Zvj-qu?;JX`w8BY*u3oQg6#P`T(#O_ zx!p8C@uQ}~wjlU%@k!60w@*10mav>iLV(D6`EO@vz#sk1|K&O72Er^JH_2j_9b-6t zqKb$k*6bZh1%N*b?BbT*)wmHX;D%jT$20t|We0^8_346?sEv`d_|QX<{Dq+Vl#~TlW2K4BO2?QrOdTj?@wknJllP{MV@ii6jnt zrHiv0bS5Zy8{09rRwwy*A@bfbwbw@4VAfgFXn9eUWVdiX-&maPXfF`e)ut?UW*!IX zqmY>C{lA*b2NuA}smUrTb_RW#!S?LQ?ZkT$J((72PSu%j!6dFVz>mocY|;`2cH;;Y% zx5UgsceLIAch!_Uz5o5je^*KxKw-K0-+OlbUkb%rl>a{#>JW-~^BOm{7?hLEQ8B<> z*w-7~^zDST9n3$gH|&Vox33zPf2|6u;fH^25BRNTDY!3h_S7G}d;Gu=FaT(%->@u+ z3$nyrw`}=u zvO?>ek>AWp82isAC0lLI%qC&p;((D^5C~LIRpq3mrG>@gp=CuyMbW>ZNy6R#M=rnK zy%!G5ng2Y%UvI7x{DeY)1N;p|oB$@=e;(j3K=itGogF;Dz$}U^(sy*XxQK!dj+M>M zNup#gzM~B+K7P5)P!0NudigrS_jS zzJJUD3(RW>pM~TAvv)x61IWcCn!bITWp4L#GyWYYyJ1NNTB~Jg`jK|&3u9RXk#yIB zA~|^Z+j%Z4@PgZd{EyoCFJC6rv&mowhtQcp51qu>S+c_L#xlA8T9jF+tF<-u^w7~s zoZ-fx(W%M?l|adfgX(UeWQ39R8j!xECKG_RATZ%dL|nf%G$T8#2BuyCmve)Rz!h>z zsB4n4>K)%4=ZNUFo%B_TJ9wBl*+&gbjB1Vc0&+>9v@X_bd7km#b)%8<4$tn=9P^i0l`UaITE1k!apCANYZ~Hyjl>fLZDj+PdDiCii7ZQMK+=?Q(BuJt+z+y| z<8Al|OoWYf(W}NfT9G)Qe(d8Zl05krDQtlzFojs^-``g37pZyk%>vhGYV>s2#7Vp} z#T95msQ*Z>xmf_wfOpLpR4>)64RHFV6yXeG<61#L9^%!zcY_VsqN4UmIO;v%o^8Uz zt9*QXf=>*_vBHFh(zfV!gi_WS9s9RZdM8h>e0v)>v0!DXXt=A#2eRaS*=(JXb*5;mqUd_T8VP=zvZ^7r4`R}M{f4P8>h zgKO&bsNX>MYE~u~MNS5~M=ip_mf~ipD810^qn2++R9c`)z$ACjWD(Hp4dLw5x|=Dh z?!;R#3L1N3IK{Fdhwu@NS1vbJ`BCP;E;8xQhEmAEPw;?RL8Z*$7q(^j{ zSy`P<;1rinbsIDL>KIj{z`Te28Q&+l*VFKYg}x-qj_HV%hXoUTl)M&<0XtMlPpAoG zARV4jOy^Bf`?xN2PhL;&dPzZ_0)O&nfn1_<*WEoMCQ+UM@IT=1HhyfC`i~agTgaOI zq6PA$OsBbHOl&K;H(%17=BhcTLB4uFxX3S})qG)a4QGbmP#hU$(5iKQw2&k&77Ctt zKFi}mhR!OJ0~ksm7<(|1$t_!oFd9wVr=mbYDX~tooK;BhRoIhKHaD|YfOb+@jG_zL>`gxf>VknUEZdn)bxG(=#)fTMtM+l^M|RTXt33cH%- zI`Ue_M*w1BgmI?iNTJipKqCeLi3YNj37`n?!yCXdSS?JEbF@&EK*8y-mfL#A1;YN- zbio)dDr$oq2AsNhhu@P6)PbE6gTPE~8(?n&5dS``I_A8VRI6xSAv;zn(t@CU-jbt3 zo}fz`=A@AqDxb}Kd49oQwNtg|vdD~3jRz*;y}4Di@F6bDbh>C{#DZTnfw-5h`im-Y zO?u;qDrtu1_3UqfvMAotc!UgE&pyW{x8P3g_9WWdOlv;GiZ7wE67Za~W}8IAynpe* z#&+@R1{vv;f|3)vZTmGYNVp{9emodanJWKVg83Rdot2|9#)}mDJ~zE`-QG$AK4r+N zq^5Bd$rUI!I619#L2db)9{(_!|8A&yZV@* zYbVyT%FnAzXqwf#wFVC*Z%;3ZMkbx*RA9E z10J;X+c#@I^}$)h>MptKI`vUi_a9st@8!55x|lp-ihN{uX<|&`JiQxAo}UjSRBDgO zj!A67bndpS$-HE;A$Vkhc-Ki!5Ysf*T|4*W$@K(9qsv3bt|QcXY9=%8+cN?0n(jWa9bY`HvQN_@XZ5zNZdjS= zv8PtO^UqaglyRAuj-<6deHqkg^BflS$e{+{pnIFp!PHs3Far8)2gUA;&pQ(TtW33@ z$r7Q}<`a0mN~q?AXcy0dV#di4MEQ@1+_=paejE*@DSjHfEG||=7SHMRhR#hkLfiDH zi;S(Tng55dua0ZF-TS|93l#-K5s)!NKte)F7>rPm4(SGw?v9ZLAvL;TsFajQ=a`C) z7%)OQCNV}M8$IIpiSz61T zk89#t5gpDZaf$6EZCOo=(uF|tPwuF@#U3{G?Jdr)pYE{JQD?sU5R$AXVOcx$sd$V$ z&g?Y0I}MFS2CGH{j*?G!{rDv-r%~TDZAJPjt;_u?ZQ;MsxktyXNV3h|`&nta*7<45 z%?XmrwHi#$A=#QdUf;0zsIT&O`ytteEZRbki!%`lsdTKlg5BhBbOe^9m=_++5hw4T z>QlL&4)6mlfF3pHZ!hCD%xW#?>(QcLDpC*6#t^=#x;eIAGO28B-O3Pk5?el?$Mu_- zHLtFo$W1w2f3*`MfGWg47!|n`csolo1F93a$LwfIYOVV{wF^uVl{L5SMKM|RP5t2E zIXsCs8TvhC+&Ve2sxRth*_KO|?|10Uk+SIOD%r53WN7gvPgT4*$)?EjbXi=VC~rO< zr|Mq(I&ywW3V=j|=T^p~6mfx+`+l}aVBd@(EV`HRqH=ejs=BXCP>3W#?((KFZ0FoiZ-6s2EW*#@6)RppncgBFT7i}qm;TXPHi;2 z5gpWnPny5jfp3oba{JYoC~;b^o1`?io4d&_EUCzEh7EbXHSO1`uc73SFTVh3^kCDu zgua%ni7`mOT_Lf&*=ypH5-(lx0r?f^lr~oCG;0b_pW!nwHxHfQ3M1ywJh{vo z_Sc_;BspR1e7+v9oCcc?=p4f!)1cvxht(LS__Q^!97h@Jcj9Hbb{f2qPcnPi3`5t3 zkg4zw*5X9Sx-de=a{8V*;SJOvamups!lmyYoedmJ1-RM2B?dDmwRb+NbhI_3u(Hzq zZ523<&M^{Ac7D<%`@v*#x&_>tf)w&> z{~U~`Pry7M%2^^oY1wS_ww?T)aCnlKfPC%RP3G2^>fGo3hq zIhKSzt|4=e99tU-Ek`6p_4mlt6Z_kNM}KTJ2-i%SX+5Jg!(@vw1~)87E;>O}@KWs1 zb4FY5*LHapd;d(B$})2U89ek&01Gd^E*ME#9|`J=P~;9+^=3tI73>T5(fOlZ z2iIEi$2f5;PZsypucohJs}Dl?gizI2!bZtlE#o(5dVuNWC8(-_EqP%f_y~*FO$VQx zW`0~x35|SN3`ofvkkZt-7gXc3OX~1Ef76t=Z!SmnQ&On3QM~#38s>@bW7e^^DxGZD zw2uhTA}tbdgH5>{!z2<(4{W?T%ZV6TXGmnS)qpBA`I1d(;uoc-Q%}O6(a#V!|6vt0 z+MXA59x2_uuP;~@YG}*MyT%&ml1~psCVsoob z{WSu!=RqP$BH|JQ7xSO>*&bMdf=WYBSo>qW!{_C=bm~xJL%X z3oyJP z?(+=B&A)kR0E4$}`LuVEqSs*Hs599|pT|R3Z5X<}{;35|RNy%!$#R7~tRZ!=5TR1m zPjwd#%#@jvzINW;6fu3>`4cRpbneXyJ=ayDW7lEe$8^ZzXO+0gr*5dPS-l9oyH#>t zqu&C;J3`zTNaQ;c}nZn^J=GsM)?J zw6j9Ewmh?;Q9FIx0O+(>R=5=L~!P zyxizDa$2c(glaox$a!t;c7E-YxOH9hw&2^436^Q@;5y!xVN9!UlF=jPmtIvre+g({pE<9Pp`23Ha*2#-cJNS-mXRVPY5SVIJ`ob?h!olJ3cP@+x-s zqx_cW!*J=vT~U56t<5aSE@)mKghv~pcn`Q+!W>{*N{kWzI}Wpn+rGN${+9Ub|k?bWv8u--)F^1{92~k&L|@CpYe&LmdoK2#CDb$oB?qY_j z>UGY+Je+(7jfbAe=*KH!PJ+-izJJ0Y#_l}$N>FU&jA0mKWuxt5j|fU>3{b= zx<>-=YM3O7h-*J-@sO?awGEKNynHb+p#s*Nfl(&LDJ~9I8#gvdrqxmqH5*Lts)4%J zESz>@tPO>wS$_l8pq0zY&uc=4`s>#{%$!Tr=@BA!1~lx6R;D@IzLZ=-cO8@XNW zFW>RFIKE|BJyB&=*4kQ!{2(+U7+KXTyZwA?4`eLP1YUjb1}SI^W?svyLR|H73gi-q zud?i}m3%{l65l~N!){Rke!BZ1U`+pnvMC^l4yQw=Z?AtuV?}a7(w#wl)sJF~d?)bs zA2^qc%y77x%jMl0=WFF*@4?dvC{c8l)IhH1D9#U~aCI-epPzg#>aE?9vv$O5y!DRc7hzY8L#OGoc*zIQX=_J8>3=L#n2u^H7= z9S6_%IJ>T6nDcE$1#f?2PP#L`!sF(HWbfKA?5CJ!^<}M+3+`X1Mc$p1U@wTncm720 zMkis7RglA6SFSzW9oJukQf4lAyy@Zfai+w+j}3}vo!gYI{k&9}b?-!@y{;9iQn5M~ zfc6-DY70|&Th=*y4*YU7dk||=BMC&hMTL#Vz-{Y_2?-?;>g!LQr!eJo*@*$ z|F<8@sMW1@j2A70#Z}EY-Kj)kk8>lG-DS&nH~U`8f6BTiZBj{GgSS&&XfQ&6Y$o)c z$<;~YsXS11@U!wNFs5qUv+^*nQ(^HuA)nxkga!e&7$fkhXWR&1sMZ znRwovhc=TwxLhoqyzi>koKwcH35sn2zg`yp=nMm_mAD|h$1kN=pmW!cPe9?npE#jW zgB+A?^plOFX2NjG5A+_7(aSRNy#1nC*1yc!OuUOLp2%NlLCM09VQW$l-IVFC ztVwWMr=PS%)vwkOOWa(0>3>8dRJ!hJDMr-m>^~VHw`AgH zaxrU3GoxIry0&IdLl~6f*WazR)=)GF@C=B5vb42r^kUk(xof^&{{?cH3S3}mGmkTP z*U?-xL!G*(|K9~E?vZ$b0EhBjA@+cyNETd&`2kJ(xABd6O9^Ck=?5V%Uf3Sm}x)$QwYZ{(#O z@wIOl5<c8+0JW`!|TGL}CeuHcWU1sxf5iwrE*|NUroE7o1gE1VFkSfw?A6LUE| zPjX;~1I+ufS8)N~t%Px{sHADv0_$O~z4O>7BLUmbrxkq3H}-gQH?CQi0il9)5J}fI z0(3YB5w8EScXb|g7gF#8JIXSg6HaN>Jv?*rmf91` z@w@Ai;Rwz!sQQHOhOV=BHwe&S(6`IaA(3v0Yt> zFcQ70+S+ACsCCMBbX>~&_M6t-wMKKj;vZ?JUjR+BgKavRO#$o8E|;EkYX14ZAz5U% z*8`na?dbiMYd3+!i{yd7)m8f9!B@EXl3uUpN~hYMC?lVd=+*9KVQ|1dbotpmA{5xr zEa9`v$K0}=bmeAoS3#Gs^}j>`lYN zeNfUt@^BEONa#j|Qh|G_*qQSM$~Efq-Ny_+r1aDAJe{c zXH~>uL<5+{rpb!=5BFZiaBx$jrX`z}fG}wGx?LE$8WGlai0QfhA=j_~5i2H9Rhsm~< zT8B|}V8oZLOuupn&m0Ho2P%VG$%o`^MiM(i&%p85#(0hwWrtxB0nby+u9_Ux0L%oNf*8 z=_2xEPAgQ9Zz8EM4LI{>1JZsQ_eyjsGjpIYW5Vlwxh5Z_T@o(nffqp_?NEzPWC&DE zO-nO}bRg{t0b7B)dWc=0XRi!4n;Ag-e}9HEIzknSBvpQ}IU)6P(bbMS0n_w(SWY`E zBH2+iUpLJvFoEFKx>Hrf+tTlGgZ9c9ckmCk2Oz(a#gz4@1zG=$!42#|Tb{ON8qM5I zOoBf7r)fs=W8G$YQXEC^bQUNNaWGuFokV~g90&z1FqD|qA!;{&>V#Ufy{NN|lGBfm z)lAxD4qT#7y(rIe;TK?k*3Lxvpm+5!m#vi3sl>PVvkg?@A85Q?E}am#2V00ysk7PJ2ecp$Q~O;qv=|0Rsy_0(_Dl+4pgB0ki+~ysTI=+V)J1t8M0>B#U^Bex z)v|=-?ua_@wfL^5N}|)3KK#HGIMyAW(Yzju_Y3sX+}o7W8GVi>8VfDj+=PCV-K!#PY*1EDd+74R96L6X6X zIo|677LLO%_i#a8kMkNZB!I2%UJ+%gl@Ii-x1eHy+>gtyO9i^sqp|)_x04qoT4k0W zv5k5o%=ih-JZURli+esRVnZkR+a_%jtXgr#T|Jp3Z|J#uNWIBV5^ih15{++z*QV1Q z*G#O&n|+Em&VRpGa13mHSct9K6u;E%McehS`a>(Gdb_%tiPIkDo8pWu&Eq=hYo|ex)xVK382vIc^;(e;~V#I!BKCzkcw`fyy#83$LG4Y+--bYO~=Hd8e4)%R;) z)?Q=p1V_;i*1%TQr0ncst99bhRFhkQLWP15mv7_RPlsVWC&$E_o-X|R<2TM@BE(^l*7wXr6}h-)zhtSA9d^}>62NR;)zsNP*H zpE5#Evg-(`@;D8aVNU22-y3FOGZIBNrwM{x&)mT50?gy9sE2Bb4uCwGxo^PW#3in# z6Ql4u6FAVoJ4;n%jZEIa-L+A3!fo#PBBk)?x^0McpnzGkwltrGSdh1RP*P19rAAm78lhK%t zJUsv(-MI3PPshwE-X!T~FO>7c1 z5Q_7~&+KcqGE^?f1o_turhyxT(u9$#n=L}tKr+6;Pr#!8B6MCDm;uBFxpK@=W}9TK zubw8069=+GuCKG_e~do-%Hen;;f(xIvZb>vlev24cWx;nvPV(5*xLXDm@ugRz0>PS z=bOm?%?7q75rC4Lnlik4T`&0uiL;6cubf<%pp$!3?E&2!jPU} z13f%Dy&>_4cpY`YlZZDrX!2NxW@NMI!~fFev+BXW=N>*uXYS3YuIHK;-vIc23&?0m z;*&zP6XX2AW#F3w7fqNkaJ|4Tw(0vGzgsrbc!^3GOa%y0MeNMW{VNZA7kg|Lq5NF7 ze1Cp$7vulZ&HwnNV$JWLq5d-C>NFR>tK-j<_g1>*VpOilL~JQt06w(kCJdgmHlpYH zc1sdBor?DlYNt=hX`SThaXa+XO~W<&D5n3P-{OYSl(#{`WWIK^wU|c2uP=s^UY2M< zaON2tS|dU^_tK=(Ls#LZ*sEDm{Vt=(UNtY0M?b?V^~`#x2EZ6EpXtlLF|F=LKfh_W zszhHn{I0Cu%idKks9$Xo>#1xEfPAlO)x+&de+QauIna)}4atk6U)o>!xHC_;<(#SC zb-=Lyt?D8BZRH!W)wue?A$3~$gfc&b>1wRq!LB0znaZ?4_bz&hu7d6znLj^Rm-IW+ zJGuY#H9Hw)RD*iw&F<;vdq(fC#CgbI{n^jl{pW>)!gE`3vQ54*Ijtt2c)eck^xvF* z{eK<@D8jHau<#kxfif3UwQHd*sE%jp1vb#EGkqMx9~7>R-vQF~*^nXs6F@hoIYZ9Sj>FJ7?QsmWZC@6djy`0Om$Xu#l@sgXKYz7B9_ zvPr{+_=r$tzE$o6vGY7bT5Y*fz}GSNBbJ(WBalB!~OD?Ps zST5_l=}qi5-aevPhSP$-%2|@N@b-Vc-FUBps(xHmk#mH6L%Ln1h(^$LS`KmNcNY$? zKLXRUjkIqlPiT0CIZ(bDw6w- zN4q}{I9dCDyW=qJR8jjyoXxS$Ou%QNGF_0{$y#^r4x@}iTr8+Xf5pdGV0f}T9UJJJ zsBt`^qR2*@Jlfe9anm=goC{IS4jj9f(trpf-^)Ah>T6c?h1!)Q1w=DS{Ys`9Hv4XemM)qgpMFHGq z5R)Qr8WiQtXHwIlm%=2I7=>UKDctW}Go@Q?^aXDii-WDeyJzP2Di|1{%xnnx1#hO)3$wT<(_{Pqoq@l_>6fLC2`%h$ngTG8xJvzOnU7-y-TSx^u%hDPV_!+8bJokuGuzI{1ffvwwL}0xhRf9 z--zMBRwS*yWomnO!HeW$B<@La!vL7=dow#6msrt<03xnAz-F!HiZ{5eUKD@eZb_}Z z@%Z(+?4hN}(=I7!yo=RT{<*$(yOhXcH`r+m}Y>S#@DB ze(S>Ud9B01@S}&n??_mfe2=Fa@(-O27IW`^4%ghD<99Vx?Lvp>=cHKw_YnjGt#OdT!~ZsH#Ik-lSD|Ef>I`fshks9-bC zV{Jc3UaYN~+A+QGeWIwQ;9Fw_aX~!(XcSyRG?3E4vs@}H{dr<>3?*hSh#a){h`?;0 zWF2)V=@iLGa;qcqoKL8>ju#q5U_s@I9Y|;SdELq*-Wj${UgdOiJK=(_8{Q6x4ZT+< zD>)(u#fI@m7@GK?W(hL{*zIJ^|L21`zk=0(Q=0k2^rGUD?N3d;WrHWUh=78XwC#jz zZh@DzrOZm*c2wGf&6k79Kl643(QG2IS@ANOhV0l7B^X#aObAO^jb{BaFbaCN2l>A5 zSHB9`--!@V40_d?z>e*0;R8U`7%3+~TP>>7%M_%huAU6c%{rAodNF<2TkW(L(&W2- zc)mrP`ilF0r`C7_R%hYqr=D`&aVK6G*h;L|fZU(-D*)T10Ch0Ga_LRqkFcYHGcWG@ z)h?L4n=9lncq>!fqxykuZVja+Fyphw!f zH+XjqLg*)7!UZQdFj7!;586CnhuFN{-Wal28FpjGKhPb?^Us00zUDP+Hl+fIv%ix4 zY>3M&L5Pe>V-ZpYpYDWmCU!2OAmqu9e=3f;!dW_)z&E zKJQrK7PF*Js<0h40-Y=6XMUU4a3LUcR@m~CDQKhhB9UZqQq*sXg_7saAFRor6Q^(S z+w{mS9`{=83a6ycZU0-3)xp$6ZK@@8nI4Q;lYJX3RdB%{JEph zUG-F)hDc2_IR}$)*n-ry3~shf3;oP%c4u?1o5ilM>vSc(R32EJgLqNui|TEB(9k1jEJf3 zsZ8eQza4Ye`>ZCj>kGMb}*;TG+G61~Gt zqAB&v&8lR$Q~|&*5uf5Ek}^chHS!<^1#4|A?yq3qKeFe_6u*txq@W7ntC;XjbQofZ z69@wBB?%ZP0dyR(w}Cz<=E{Nc8Dv@WoLf+KpcyVm;POJJRZN0AQCJN)Sn9r3Tvl`a zXq|~B-KtCk-2(%R4z~4~{mkjnffYc#1^}Wxhl}gb%t^R%lT-CTfTxAss&W5=wqB-$ zO9V(JWG+zEftuyUrt#@ssQ*(TAu936q|4_wfr*ZNm-nN)>8KFxh-=Inpa6@Y;~h%} zhDERKNSU_#Oplze#+ft)#I?+Pn1{kUc^dCoN z38|@tskhg*dK++#PotDB=52)>Q#AJtZJz!vT^p;yK#pF$LACegouYlrJ#G%YX&%V< zE0jR*ge4PRxX>G3w4`ul&tS2@LErCqdYOnm z5;^eKYfdrA;y;z>$v0ZyDmRu-99jCK=wSoe&=Z;w zsQPI}M7Xc=))7Ep0S$N`h(Wup;Q>{AVq%(Y$Gfj%nPi^w7*ue|Mf_N0kW3e_NCdXM zc4pQP%<%U-{#-`KWqT4A93ZE?4eu#KePQrxUe-}LkU))~@ss}MG-#fLOZ~17H2ARG z{9|{Q2gbLD94C0Xb+ggkhixtVf%VNZLPvOfecUtQIz7KBZJvNh&1w}?2G{BiA1u$< z1D;cCZqq@?sU05w32_3EONQ*&C+kncph{<{NlQ-#MAiIcXq8{fIzGkYrbx@q}n2#RNH*}uQD5TSx;ltIE?m|QO*cTOZP`cd@pm8xdD@+9lk@ue)%F5fdI=N3*S9u?cZ``I z+Q8PC%@6cmWVNEEZf$6hTeC{2zQTKa-flNb4*8f8<^iN1Yla{!%+Q+RsTgExj+zd~ z?2f{eBA=lgVks9EA`f#3xD$=)YOlIjNpuYXz~kwEtK1lIu^o-9PYMO2LEON5a6p%H zhKht~<3y8F{52Lqg>cW)Kjp0Pr9QM=Tn=zNc{dQ?h1r)UW%TDF&=|D3MM*;a0_^x> zTDA4E3ZtNBY*k23Pgaers{T1u1T}-Wu5B+u07*tGZGT}U;;U0V@!i7-w_1VPTe(ro z;}`P^N|gYyuQupEo|kpI8}!C>szpo>=&V*6bv^b*gvX?nZc`W;NuQO|dU6|-Xwk9B z@7op1#j_2M-z=U#+8d`pCwm z(v@$eM^gxe>3J#$r=1TRs)bV&EKGU$;stut5#XE%ez7RNV!A`nnXbhKg$tA}nHrv~ zkx=Qtirzb+9d>|+n)(H?S@9kX0{nz|z3a5Oy)*mPXFRO5gKaZ(zr=|w6}U5i*!iot zS+M;piBR~^w>F2r*UovcdT9x;Lr?1@w%_}C6oCs}DIz7+5Hr<$wwuVK32&IAX_jsB zydWafF(~VZz*R$iSee}aU^<_1?NmZUuckxJ2!GLN!H`-CBMItCkdRE6cI_tOG&M)7 zHyA9OS`1E#P>Lt~5_&cLTc)e$8HvEFKnE|72MpuC$L{Z5AsNhMd^-Mlij}QVg95b5 zTneF6NYTMJ#i65mO%`FBN5C~#++#-evSO;P{c08u!HS{{gNM%2_h6_lj4EL#ZjDrk zF>unqSlzn%(~Sq1MNAU3;#8XI*CK9^>8ytqD+>J{gUhaZ5IEbPu4Ox>hGj3x*6 z&+og@sbvKQc_(N>aXPQzXG2WTB=;w1N9b;1)l7?9sKaPma%{BbPwh1gE^O$XzmuNb zR5p(hl@1cBrRw8FM!!Obhk71`dgdsqev%6b{R}k=jBAj|Vcq0YPw(gmSctNYKaqFX z!HyQH-lP`l8W09DC8S?znx0~jcmTqR>g}F}qVPh@^=0D3kq8|=?~_J)C^)Bd)%Z2j zagU5~CVyUqXr7$DB>S-r`sAIdBw{s~Urx21&5AjmbwlfRTkqEvo9RT3Q_=u9muY;h zGp#a54F+}?!$Z11v(O1V&z3 z3VE$lj4fR{8%MDHXf-)zPWTjDpxV&JgWX~vTqVa=lg8|<=ZXUcDO1Ba7apJWm5!g! z!zm{hcT)YqZ9Wg)X-* zIQXyum8_ClrmE(g(~~P^0hCWUNCW{PFmFyX$Q}iYK~lU-S?PSG8H#m>sXhUy{bSA=Esi640Rq$FSsK)BvMunVrubpZ z6Et-+^C#NLB!X2kXGB1JsZxfJ4zQZ4$a%V1?lzwh|IP>Fw_@|p-^Vz1>MGtQ1G#a4 zCFy&VPPONbM5eUYC-(Sk-eE`iu0R&uewzefk&T5p@G2UU@#$*2Vxi^yNcBF3?mfZX z!xLCjHCPv!2@6>!()DIE2w~It%{VBi!6#qodoMQu3}9G_6tHZKBS1Fx=qMe<&2A44 zoy+`u+=}{WsMnV(W|DV{;%ycsy+AiwJ=VNK@LOx{9I3ETFhF-!U>>+7e%Vb6%5559$hqpAX^ zl?kj}UZ}E!_X-brcinG#tY~}%O>&v^(fzt%NI_>nGWqRoYH;kb=3jldL)0A zHk2D9^?@c2U#$6x@9*G{oe9zLyp_aZr;)BT2+8^=Oj*cd@RreM_rxu+VTFp%Z%~kE zvQ&I<`}J2qQFnlLZsbH=c-QTKm^!DdI*Q8P;GhKr=9-f{4YUqqJu4U7-CP+iYX%!r z$Zo%|&_S#B3muBvPK`C%t{*-D7A!4%^t#FV`$SW7@3t{TmCq#AyxV6?-z?8#kDEU< z=0!~$TQ`f;^GZ4*_qLA?D0g7I)SU16HUP?IZ>KG|M96L>%}Ub|k=E3DSf(al3A}w+B>_ zNNpe0=BhaF)Vb700irs`T^@dTNcE(QMfN8~!iX2w!Hj#Q0pW=uwn2JnnD)0mx`{61 zba@M$Tf7?8VpaB#1fBc504Wdypt;>ey^QnL@7YMEm}&xUNAj=fC1OARU~8VUP&>7`I^_61@?~v6Zvfx;OtU&YBZH)=YJ)+ExrOved9*p# zx2HXE+4bE^->q|Nw30^#Lx0hXBke4d5DlASY_-g$AG3hO=~^t~?QZ8tXrzC~Q=u5Z z6=90;WlpEt0NPN=FLKfIoqT*{|0*$jD8;4$Cr( ziHh*d6{raG~9Yp5G+ca4g{3e!1 z*&`-1!i$H!$=DT;%qf1J7@2O73Ou*nHE4t3n9laFAcAmm7EGrbaCI=J&x%49VClDM zkC(7VMh7Z9>vsjy`791(7a(E3U%smP6#QMCV(EO`anq>ZETG1Pmie~CF*k%qub}(0 z@>SgShXsgyLr3y`ses)yKTI(DS$@}ijkr@MHj{S0*SM>ev1WU0vrdK!k9_fiXPHGx zsdV_GRe2083A^0%7)n};nMjxF9wS(`D>^nE241mrrqm8PdHvK_2$=XiIhc+KP05?w z-Nefv`9+;ZlOGFu1f0Y)-*BJYWu8#@l{z|e^+&c_s*YvUo_V?}GPY^vGP9)6Nu@cm zNSiqA$wF_uIXsF>v!7>(IY%gYig^@1@>s-mLK~NUn`a%HtJ5@5qDp+>1j;*3T|gs+~=@X_YoY|qya41 z{f3AMeC6UVOtp0KQ)nh0D|M>kgHqix?s>Fk0^rT>gsxJ%Gmjz{Ag)}7t=1(f zdspeoy7OYatdN>F_K!k;&lV5Xn{ghWNW5s}-^Fsf!Wm>jK7c1<1dz1#-4|!*#R(&j z42Tna)%I3Uy}MU$za?9Ne(ohAK@6A7iD;dCa&B`{2DO6_ahXv8h#yw+Zt=_>jQuY} zK}}T*#g@t_yxtn1eH)cn9-z#BgE^|I)nX0)d)c_(IbSE)$-H@*0#w5vr@7d%iGtoo``lf_ zCrg}lVvy>uf!pABMl1k~^N^d{`S#$;qq&<&g^qED)pna9MlHViKTAe+Yx)ymmp-qj zRY{slV3G)<@%j$Ejh2AGv+>2sJX>DmqWZ%O>dOFcWy37 zO}l#c*!Pngj_N|+%g1lpuO7JrK0$1$eX3bK^7FU8tJdE61mO$6bg;MhGf(6eAVRt_ zmCw5Bn5S;NTpOHwTMQI@9A&%-An^{3ab^vKoP1w4>ek4obZh*)Smn=B z9gDJa;sm5+kpAIzoNt9ri)+f(-p2d>#yJ47i_8Xv{<`$%)Wd+uvE4qi7BjD@2f%NY z&=mnpH+yIh{`x3!mQ5jif(`Oj{roJC*e}U%-0;ot@e}(7k++WJVq4;bnsZ{M+rs8C zhu7~!8r?QW%%9!>cD?CVtwY^r&xzffy#y>i^bM0Hi@8qqlQuwsm9qLR$Dm&zY=)q! z^!`%KXQGs;Zkd*eo5&o_>u&}|kq)g)W{2c|;IOl6ggc6Qmm zANliyARcdJENc+d-#UWfLGm<9wvFy_}kl8W1H!>>H`U^)T)qli==tXV0>rz}55S zbn~5#r!7mmFc)xlLpBiznz-=m#fpf?*1aySqQhD5fCZz|8M{ zK8%FEClB0&6oGXX{~B8PWi@Uy4De{nP#Jy1yqlQyhy1JIUQ>HNCO1Rw0!1pa<=;Rn z?Kf_$@PlF{-|WOWH_0c}j&Pr-C8b!HmKQ$iam&I1cjv>sQrXkuuiyiLX&pV+d(hF2uD%BxoFr5IdA<(xYEagybj$|52P)7YExKWWD?|oK&Zyo9nkZ0JJNn^z_0K#sf@KmhO8*cZWoPV720i4gtD;b(XV|E=89-PhjBBZ>f1 zbst!=I#|7&fCrWi^7@YN)}wQ@;!ITc5a(l?4wZW);_5UdrSu@Bv%a)S{9t6iq3OvFo=>ofeSBr!v&Rln^(x_#9YBl82_L}x zY1BN)wW{!69LG5<`&xtMt8`9`CRcHP!?Y=DZ2bOaG8g3@~gfzXkr)F9HO6Iv)iLFv6p3ra@>q<0Wd zIz$2zsR1dW2SN!XB>WG)-*@kK=iYzD8OIqUPo8tmK5MVN_S!B}adYo$PYXaAt&RqN zb&0a=dlC>WQWuh=3y_)l;z<(Scl+f&Tj;G!<%jB*>u`UOP-@uI%&5C5WjnVZ*+GH) zh-RA;`cvw&-+*yA^qY#a&`H2E2VMdEsZ{y`w!)7NOWiG8lG^>w$Tkf_PQ7*CJ(y&Y zowj^6Z;E4>+Ny9*Zi+bjjzq-W8ZFOGhxl83OOg?QK`vVw&5z^Zc$(s> zk)&Tex4{fvJv(jD`#n_sBQ@*3O`VWilh@|=2tN7t=`Z>oYN8QKJ!+vJH+{aBko!Q8 zlVX=HbRSy>9*29eR=YPt^IWl!)>ceqO!wP;XPsASDGoakP^ZPy# zpd6=penc{z2&1@=I=(FAp>l@P3^b>m+m@m!*gL_CJ&JWH?0T|s8G_zX$Eil+*puKa z2gohvUmcw^BLH@RqBcmQq6B86U-d;c$GRQoF@s%(7jeCMHlJ^T`Hd?zQs>W14(E1T z1M_hw>X^spfg~Oksq%oK2_&j1<}zNuAT;LxduVf-w5zaGS9iluy6cg*zkORgHXiZ{ox6F zQ5)d)&mqG7O^k;5z}RL8!VVCUV>?0XMSvbZ9P|WJJ}q3`#7!P*&ePknb+nVwf$@LMrZ#!mm% z-Zk>-^Gnj{t|xb49-^brEaTW&_(-LjV=&MGJ02CU$ z-!*vK&8>4`!yCjeayy9i7wvjER0ltm-t;Q}b@~d;T~;RP?*~ne5v|In#O(P;q_D}Rmc8MPBSiw+be{SU(6S}`o3vW**=;_(ssxczYgzZ6x!gDu<+5Tll_J47&HD^7=3BNM3YL zatrjz>E>$dR3hj>Hp*k1Jf)T(&L^^NKw|u$JBAhe;8%>?Qk`=k_uDCxf(PQ1w)d2! zxYc^NbM(^?VsZvNd38DRug*4Kap92mG=2AG^7#3N(8VF$9KzYwa}_MMU6CyOol5yR z0!b$QI4Uw;bgc7yRnF26x4DDO8kcuRh9?DQ>5pg+0&9yIe!;u#IFaAHRcIGSZKeJr z!e9}^GCy;$)AUKVQ)?C6KsxvIvce;IW@G5QpAB|%nm0Ie{<;>d72xV73MVCL0)E9e z1nk%pz}e>fRwrs45+rOK4d24s@XReyRNd52V44XN&Q6&~KDBbYjP?kiMBe9l0HB3T z>0~n>X~n*M@}zstP-pr+V7OeRnzg21`dn{+W3t@R&G`Zi<9g%aEPWd>nqMfU^N`TL zztNNz5GnxN_DuGeipW;;3s)nkFFhL&x7|F0_D3FXTBkj7OE~ZcEJC{e$SB;G5}t^^ z-sC_){QM2@EJ8i;qD`KYUJXDujM{U@vpJJQ5-q6YPWSp0_eE_#Sb+YqQIm6UiH1~V zODHwlE#Fx9&S0I8=fu?&3ueEj{Vaf1y6xN99c5I-)$iqh3b%nbujdn(-EsXYN2d#?Ejw z$tN}WOUVHpe~0%)Xt1ZTWH)f_0iCv7$*;!|Bmxx$0TlYH)|%%7@N?bSOx>+&AiXin z!UJ54< zA`?bVR3AyxPPDL^cO*I<)(!0#_w}B8U^e$CoF04GWZ*_JAvM20as;(ND~wW5VCocj;ZL$%o0m;_QCtt|YRzsT9u~ z#H>4oMbafX)qM+m>T=*-{av~XvwMDzFo}5#D9ca-oP2-*2uSwi8e{Ro&CrSE-fBtG zA)?PO=v4gbHd}@fc!{?IYjZUF! zvRJFV^cp;0=uPmY!!%(W1`{cYPrmX8wDf zn!OwJR_M^gEI`>LJo7a5>3k%>m#lmfhYm?Q^tH6bA=ppise~!Y_*oxK0wYPM#`qyx3TP*? zd7kn-Ldw!#%hmEp*W0t7#^7AX;R$hW%NfH%k$k0Tn3@|NK%YTfj=PLLBYhv`>8 z^Pi*FHc!f?uG$Gg)k6Y9*Jiu4t#UbqSwK3KEDS3>8h<5g|JM4(Ri4g!phg$k|C#wF z6Zea9vn$a*uzpkT!tsC91Kp#Y#+su`qI>Ev@HIxNPsA~4T<9&iQ%2n`%_~C>>iVJn z1a>|&&(1aV)Q7YtSr8P4%N#uZ?^X2YmR^8o^140lU)Vx7{B%H!bP)rSke!dk=on}t!B0L za#}W>yY!oWtjA)_w+gICK#BH?QGE+Zxhcnb&8zIjlns>=#Mg z2zSi6AOv8{Mh(FFTC-2D78S}mz}#)~)|^E=KqY-?8QpF{RY1i{ zL*6i{WkTm=m$vgH3pxH`1JGmZPmZL_A{btO%K6Z!8BDPb1J96!%vN#xukTCd?VCiR z7RpI^ua7LhfGLtgx#WTP=$OTFqUbyLH>rLMSF2;dO1j*-OrT<^;-n9`7pT z@9_x=1egZ{4)A3aT zA2ObcNsA^Y$>V7Gv68biGtm8wa&*O-#&vr!+yUa;g%CjFF>cdzrL~Y=&}g-<68urW z$rB1>o%H!;p+jZvgF^=!Rf4P3v^~x5Ju*eC8)x(_K+hd_-eX$Ujp<3JE-?ypIME~J z$4++Fu%%4Xhw&~ze%Y{pDd+|%%JR)K|3Agp%h7;#8njBn9Qytl!uP)@>xoLM0(v6H zbepsSino+*B{yCxzBV^E)O70ypgW;zA?;Q<)jT>deeZ|)`08834%SoSUN7{GhC@=j zcUdT8X^a3A2BB{=9j#&x!1$)LRx(xn7>^oa zzAM7IOVSbjDX})^iIA^KCnlR!7$bdf2S%Wk`mLJb3<7U?o_Vwx22 zTg7glBpVmRX0kx{!1^{uOR)_PD7=Hfa;Au~@!1wfhPk-aWU&JE(hcuLi4>C@)_I-A zmc(2u=`#$g(=6l51iF9Hyt^$MZhOj4%I?Ik^bfp;hVA zyrcJ^Y>Dr7~Bh>52uyTYT79C zg*}?}(J~^f&uhyp9FNnMofnX80}SUC@{>DzcTyp61EBo0&aoJHt$70|0<+o8x zr%tsZb#xii3WwkrLPYBEZsWdo$X0dh&SQFr3HCSJjmH&F6}runWU?jw%50M9LpP+o z8t=_P1)J~L+pqWv0EXz#?HC{?yATj`$@CL!%VmZ#s=xBHBC;93nqh%Ci=hWLjL$>m zSXRqPcZ;uD^^ozJ*J!lR96M@3QcnErg|0@S3LWyP(lcL~agtbSdL13jYE%dL%^`)k zpz*x3Ts@rJ2(1r7vl^VwTm$F>fT>Rc+5lEbV-0OT!l{6Co9k@yeK}&i|L^B_Fel1{ zlPy6TTFH*|u1mi^%qOn4u>m=0rZ_AC1pa{+3e*~`S5S*SAtLHK|ETOmo~HXY<4G&_ zc<-~ii!FkKi@deS4-5-PZPmoK?nd{*=;gK19k3k1wL z6`OJmY`_1~xz!YTbs73#n025bUlvtbky>W!aDkW~)crTtKZzZkCpA;zTjmTA*ebzB z;kNis@o9m|pXI+LFEDg#X4F(~C|R%{vqQ6hcp<5#=e;^LD0%_qwzE_oal~re=+SW5 zizEfajCO!Bcx_V&C0!#vxMapGVAjf!Trzsm1kQvVgj7mr$^>rbzqlv*%Q9nIz>vP1 z(b@T8UvqPl?oCTT2A9)ORk=<4gsXyPxxU?b-UiQoc3Ya_mL=h)i}A*AbLiYUWi$%RN=s4yN)JXnt>2Gj zwE~v-r!5(%ZMr+ryC3eZj7Z%FmiadTwj&@UU!>e|!ptmmY2D~>YaVH~0~pNXTGeWU zff8Zw32~HuMVw8-FWO`l$2PV8$CNu$1~(~4^aEY7W7EmCF*{s`5;U*TDj?>e(PPvH z2-h-8+Gey|`7@)~Y1rA5Zbo3~dpbYy_wHzQ3*~JJlJrz5VQ5NtMW0WAU7qyqIvftBRg{rodTsW*sl)2mM9Lw4@b!%*T zqnx65(rWuxSl`b-j!1Uemjkn%RO2)r!&{ytklX?PJ+6uPH26p=pAkjo;h}Rc-~geZ z#`a&g202qMKzX7Dw|;{cBoYUUN*LQe%(7&syZhF8T&QGYeY{C~29BN%ofJTBn~gSU z2cqwM|NP5g*N>MufJE)lJIBU>q-7-6B8h&*H4``D8Gp_1Ty~`b#3ND zKv|vX)SL2!U;VjF+z03o2T#JQA;};~Y^LfX&PUjbHXOEZ<{Uw`uA$KghHH5$aUUeL zfq_zKh|S457fi@f1J-oRftC`>G%sdfK+7h{;ed9ElZ0aXXFql3Yqea!x3C@EQ#jQW zp>1#rN39>mm+f&M$?{usfcN(@l{qg8P!9*b6Q+2^GYPGCBPK93gLrCKx31(@C7j(Dz|HY}PuEb>p?lGxzTC9In0uC4#@`Td7PwP^484o&{k*kg zavWAfm2c5mAoS3_5uikXvdk1eRSV_O>)rY=xE+4#(bdjJSLe6mF5>i(b(j|N zZ(YPayH}rbg|t`|u!0}$dB(dhhK`5%k)+xW1AFH^6gdD{@3 z>B~PD;~}PuzU4)ErpFs&(&8}ZJKN#C&`yx#Tn*{hhzy<%RGvrbkOZ)^d)zck_3*%MZ*%AF1$|h2Wb38-LfguIkUSu(`uN_Fq zARN^*Y-iTLaFgMO#b{jJoCkvr)A$YR^H4AyEE*DMA|xd6oG7y~T!(pcks(v=1V3u(rl2$JKcdHa$M!zl_ynA+56h)+}!%CP!xtmXRi^5>4Y+FL%nU&)VF{k43 z2SM`+ktt3hSALK?Drtu&LdaECZ$N9o!BKbEz`bEWoB2bNn#g*@da7JU-km_UIo#(i zP0rLJpF4Q}_8=vE2|b722!ZmsJQIkOseCUrJP5|Pa-vdH;e8}EuqiqpvC@XKBNLf4 zl8Jg_{Y@q#dE~Udj)q_19sw+OXNXqI-rps!W1X2edO#Ct0_83$Bc7=6=iGl}9+U^a z@7Y}fYa&1cH<0+|`n)O9u|8aISY>xA=te->$0ChDTPEFlJwvLNqH0rXDO8rnX6;gg z#dksAqdDI`KG_AD_C{$MnKGgZyU$d(Wqf)b-D;>%oAx#DX*;&HY9zd%P;7iOow|b2 zGd|LJzUE&wk_j*%apRM#F`POYH+1NLctfSxjo3cZjbR=XE~wA+vpn zZ5~0&U)cZ=wc?CFsU>WqSMib6a@dyefodW^FimG$9Y*xPue~b*x;g`LQMTCuo2htn z4B6uQcB(+BY4>V}ZIQYw{xabv;eN;O%(XPyY}^9uAP${Fxv3o(m7y zAVzOdn5{0&veInsz=0EU(RnJ&v@pwIE76v-`wh^Uq-eGDWLdc3?(f$Bv5{0KXRLdD zlV=nosPcucF9^6Zk87Tj`ZL)^Ei_%~H-q-W2Xb`JePYv>DZe-z!`{Te`pi2A@Scn$cRTB zEFFZ?;gy2BuIDg*67l%0lI+p|gFU_y-#nbhw2~)iT7ONBCP%iOy8Eb|Hrt>fH6fk% zi?BxH!hKDXE>mr(2S~#Dc%efGRb4Knylp#18H_8H4uIfE<@NcSJG_Iy!)C}hyGr=OyO6ycLyCx zku7U5-53_>0-mx!f?v*ePGICqZh`yus|PtmRDM5W@qjO($0SE?dj7NtB!zbez3bfg$WEGP%$RAc)LVE{EqQ7@a5yE zvlPp_Zo%`T!kFUrI>y)nm{R;Z; zIv03GaM_u^wgKGxM?SmF_kM;uA-r^4MCpJ_u9=kzbma0w2>%X$2=Sg-) zRkgLr>Zc#(bjB}x?iciP`*ECa)=szCz%RX{3FHp%yjK?+I&>RKzoou_gRO~qH z2ctZ~+_XSvQ8AShX@s82w*r5tVwIW<8Iu=$mKLL5SG^H(z3pVTo$FcvqL=uZxMPyJ zQoIeYVZ8EtFouur`{Rww4(nW$B3^Q2n=Ndv2xAwdkw=eSF)7|$iON3y5y=}FHyAcL z>s5AcQBr5ke1E;PL$rRQjY23CSah9c+ zo#)Jn&92CkTpU5Js(1Z})am|dh?nuWifQnDuX;%y20o1a z@$T9eJ;D_R3A>^fAw2+}QW!tjF1Ao*JCsR{PP9F5KNZ}qe66yT)E^k22}rgp{Ee~D z(zU>&7kOVv)mi~gFSt4%6YmGk zMVYrly}3TrW@*s0KMp5t10{{fsO(2ZV_%F4LFTZ%!7!2CGQ~vf(M*w>RfKn$EJ5u0 zI#5wY?e$yCb^Oo~w!9WS6repysm^1-4|jVmP=S2KRu9u;#7}@xr;p6NAQ^Kb@5ZAX z-0j0QVqVWNic^VFs6|=`B)exH;aYSTigk+db3=W_zf4$YFS(;?IKNFIzGQZ>v{Q16 zi}A<%+VNtK&ynUI+($aF!C??XX0`4i?}a=YWFH@DZ*b>wxR79i29AKjXSh$2j(<0I z=r*L^icsLzB^##zP$<<9Jie|Y#Ydl(9 ze9`$Q+RbuxG%w8Q)vfPzLJ|jnPonTxULh{E4ikVZ@m_%E+{%Fl$0KNYk#C`ssR_Jn zfx6*4j5~S>ilM8mW#k3P1Adm6lLeMd0Gt$KNqeV$iGReV3X}$lJ zl?@=q$&u^!nR(1}&lsclvhv=k8wvXnVzBn))gCDEoc&Pn8L8)YD+5QC9wx7nf%Zes z-z|RHqfu8WLG}9t77%GafB9a>tnHC?XP4$&I6Lhb!URIrZ;>|8pXU{3_%ix~pTNmC z#$f`VL5`djYUaI(7s;XF56WWCO(p?Bh3>AL=frLpnb=PVJoqw@CTv~@f*-wWCLm*T zoV726vr(2MHJ{?{@49MVs1pT1$Voie_E9+pYi-`V3aceNKO75tHhQSXskdMrlGjJL zU(iP-t>Ey1#3jX->J@06Nm@@4Yw@S#>q^-)SG@VRbL{|$lNcb6X*>k)P?76(0H zkhSrbczp!P%g3c=%O0S0@TcXY3{_V? zHIrDMdSJjFf~1VsPD{TTk2uKafqta<5~``T^_inT_twJAY-vxThlU#s0DyDEc?P zicl2R0+~YR-0rBz->H0g+mKd&>n%$Ql}OFieY*}}Ly;@rVtdX!gG~aw5eQaamb(M@1d7KN@!`Ho5Qr{+S&dfP>4= zlp8h}!x^oeTm$E1$vlak_7#=+6^3oq_#z~1NyEz&l>=@K{d5zcm%sX zd{CGpe$@ye`9=5OS2ezViUs;V%qjD2yx@+E|2*v4&W{Wx1g6*@#^kH7(UJ1=2~|HT z$f!P&cXvb>{=&)%?-=HH94kB;MHzr=VrF>Qd*he16C?^h$dm_2z=kFk!`$Jow<($; zk|3Tu2jsv*JO#tIOO_~}4p(a{8^*q8toe&o=>Hq5SPxEk>TueH-@#PdtGn)ecqGug zvkBtNY2X$8o=i~)2%%=g?p&GJ>Ps&1l~wt{cGS!V z7&;>M-^a=o(_McLF@wb%$at<+i@d&(_IdKw{RfU11al1wYoSbGRvDy)H#qcaEKfWj zlS5qIGIVXWGkW*{m_GLNk|b?#LW1siGtl`qafvmwW6zT3Ov;UAR1Nq$NghU%m#CdC zr`}2k&IV#qpPu${Y77{Jb>-U2mp2A}Kq^m-!9Z zmRXxjc>T{1Kc+lW;}EOH7AU`&6-%xSBu;{ zKp%nnq(`rsE~mG6(~^4lqe|y2MJr2cK3aY_w~8V4+L~eq@`I#Fqvx@%ag9AUFa%mR zT=gFR{4HIc30PoaO(OY`^3u{04C}5tqNbfGqBP;X%`ZGJR86)mnp1n0=+w?hS zkZjuMA(=DeM<`G+GO{yWA_M&dYUMKld1j;--k&Ou;S0-;dy&XCZ2bVKTDHS4qt2xa zT*un75F9J_YjhoGdrAOW{(QTq3Uj6f4J_N`R@AYArq3iLUwyZ;|J9fUz@z~Csl5EF zY?8*$ON~oB72kCwoTz)_l18h;cECejL=A(VkR~ti{%OVgp2b=wcez#wip7Kt@h7cz zKMlEguCfYg04B0!90~KTpz9CUK{S6RFz{VMmNXv*GzDmCvXbWZ=ujVNS;Ta4sWSn@ z-i2b-NWB9=F46`9nEBvOrbi?M2iPuD;?0A zUyG>!OoaQvrW^N!UXL1T{?aOVpEe__CVlf(>N(Ku5LJ=#BXab`@&1Jjp!y~IvnKXD zdbJUa-1i~e9H%wZ&boTG6C8ztxBK*N11pNHkze$hXcAQ79y&MI2-zZ1jB!(;S6Kx1 zKrTge4)tKw3go+#jG3CIxee*x`#e1MynDIrdqV>QC@wxjbmk@AFI7W|?|}-gsrHx8w%;VMbszOH+e27-A&Ea0U>lv;wX)LX zhI-X>N}H7959L?;`dsWsC2=d-E=?RR867!7(JJ0&rcV&@f8_I52s{KqLRFhgSX@Lc zo0@^;X&k5H9h0epKNz_Qxe`5bO6WVc%Wgm5SvT=?Q@EB@BKud+en0GPdtA?^4BLW_ zb71?QPz)KXDJ|3EW@n2I8O`WuEB5m&lNTvs%E4f6A3?He!#p<$L{kIBHS;8rBq#>w z!j0af1SppHRa>5`yM$n?nw%!PgU~rr-Lay#&rOO?wB|U`e-DTu>Ujr}ONi?OMpd~5 z%z>NOwy|FB*fXn&(?Rp0CAQUKMXNHVY!)DjUpVrxF1!}$cfD1ckEryu3_c}F6Ak8? z^F7ynk!bW);GY~sc`y-R)aJ3ODF0!bTLam`ZeE({qnfHObhM1UAjj;InwTq>S3Zga zCPen`On?m$wzpN}b<%F8B$cpZG5%Qn1+vzzMUbk~d-4#WASY>u57^sDb`f6OgGR{An;VMRJ979F_U^pjbLWay zWNn_W_x0ryj)w9GfGL+wV9E(m^g1YSMR;L6o2-lWJ4PQ-T0*YBIKk6~wgt^8N&KbSipnWXH|t-re{-d<&=4t0-Km)-onDd1<*h6&Ek%m zl0wf8(xxv%*juF=O3GgZZu4~&$8c7D6`=ojO!F^E*`}-r)3GwCNi&H^7t;HE1SX|=m%|-5#?2y8PB}W!aD~3_aXo= z(MT&v5|!yWSZ=e_zqcOb+S~UKb{_s_T=_9f4D|MP5DIR#V!NLvO^5HYUjQV`=DSX)<5#qet+0&K2& z=r><%58fqOBmVdkS?;inRG<<}{uOH&$o%*0v%!Xt15*mo9LOQQl#V|_(NEf70JCWSsc~Y~@+0Va!&$}43u((*#Oe&CAvAv`02>igm z7SD+kLY*oOdO8f)WmPpr~%*r8*`DrFx=wKB_)oYoh<4?l~k^^{OOgx z>r0B+AZb|xN_PxtAyiK{f4f~plCnA>av0b;!;RF?Xejr<#peFqS&J|?)rO>`_hZ7~ zC@g)ln*HIRs}!NR<3_JSg6-|12S`EwUr3!yiNAYGHM)N%n2J_Ci>R6B*(8t<4mgn;9GP79ul~^$Lg1VT7)BhW_gq{Ok307D?VvLbQQiWhsBCBjiJH z9?oseO`@8u;yg+-Qy=cLoQ=ocwDMa^T+zY!p(6e{dVUtFX)pRjok)9M6wD?w2|M}; z^snVVn-gXL1UZI7!J?5fJr9LWk^>Fk`P!d?djV8$0y&z-SYgXrcvqNJ8dE9zwd>;< z#;Sdo#BY~*m|F$TrM+hxzG2!EdEkrf)y})+LQ<+8Q`KN&njCm;VQOHJB}{WIYZ$Z zwkGh(hif0D=l%lsM8;%nMx8S-vil3S!9b&!VC9F4>*G6f1c1_-s98hh!AxKq zgMn(D_e&SqaOiki5XBT2pq?|CEf??{PR>YOtZIzjYk`wP)r^U!4?p9c98Q+t`ufY8 zIX9&D;tU+d)U~u?qF9AhA%Qz*i;tC{hYM99x=2!kEG#wr38%#gNB*yv`gg%Z!5qC% zjy~zkX>;q#`^f!#(6&QHH}DD^*t8I#Rq`1>eSqDuJzWMl# z1-{SWI4&2gUG$~NmmCs-w|OXCH2V|*IxYdJ0)0n|6MJiOmS(N~2E<(^{^_=LCip{1 zSgQY)P5=YoXLIxR?OuS-v+l^V2f77r^YC3^!92P_{cjHMUtdiJdM`o7#oM=SR9!VS zgyc}j-1g!mnce~;9Cl$gZ><(@tGd}YEYKUMK+CVWA+lclA@j!pVX1ew)~$o(?T~il z2^XB-wQv~Cl!nSPl4cO~4YIN_O^5`#|7`ctRnV*fyRuvT&@rLod2>kW(nG0b+|4l+ zHX+Aq=ft$+Qv4Aikl3V=CY6h-$mxa39otWLp+0Ncj#qLS#jt^R8elWuY;OGgTd(@h z^#D$f3ci`VLe>TST7WqTZ1W<^twK<>oW0lQFM71{32yi8Wp;eM!)+iflx62Jrr@0o z#Q}+E)IpvykcB%9|G9-<1+4ui_sy)Qz84F*^?4jFk6geLP1uUg*)p}sAcuzH&5wx4 z8QYniT2hYg-DJP6AL_&gP}^<+ziIUs)Hd+A?`Bs;*A^o~9*X=S&m#dR{N53Rg~?f) z|LbhrgRv$JZa@Dgb9v#WCFPZUk=xTxM>Va?R*UGRD2Zow8)95m{A7;gLD_kp+(MYq zFd0Dsfn+b1#{LYP|2=aNN1o{P>fw$y^OLxA*eA+pznO|XfBrna3DnGcmMS*x3Ilyj zW}B-HKnOpy9YVb5eUUGNlU5n|F5Ton@gMKUGI!RKS_i@-ffAwYHT4jY=n%ksc== z(7Ws5VV$>yY-c!nk%B)(yLgV6!e>6}@BwCnzFe@FW{2t8Du3g;_>;K?5s@vYH~I{W zDn0TYr>ZsUqPdXc=x_3zCuZ%8pCJ0CIgF6gu)S84>=**JW8LvLc_1=e;BB`B ztftOhpiUK^p{N8_I`IQUqv5?Pw*``EE}Pko4YE*mBbBmhB? z-C)YR#kUk?OU)U70z?1v*olVr?i}#^!?d!h{el$zVYc5Klfrt!(W1kmM45XNJOYDF z<{$r_wE6h{ozT;G0cq|R5fPD#@XTo^m-))e49ibw5(HS&obQCk{I8o`1JSL05`l`C zVTkfdV80#d>p-r@BeKjn4wdo~%nd(Ja*oF@9ZA=H)W^*4oM2_S;#dRZ+WfZUfO`wc$YF5R@}d4Puq@+Rh>@UBwcC#Np(zhLOS3sY57 zXmOVrJUnD`g_}AB2Am(1TalPT#?r!)YK3@;9E}3{pq2o7`)O_9Hw!f-bSQdlTXDI; zU{5kWK8#=a@cesk^Aew-hCuq;x6~~x;zvDp4%W8oXEUMh(Cje3xZ2tDF5cw2k_NBb zKoN~Rqe05G^&C-7>ePhk~vIjH)!BT@o&ORuzS(x)t~q8F&WW%X1Tj z|D^5n7>FTJE+W|FtQ;i_;65C5P)_RSH?j);&F{ zLKc0FE5E!yc;I9WQ%X(C@u%tw2So6@e;9-A|u`bd|7@f~{4Gkr!lIk)&t#Ru9M70)hEXMZG2 zcOIF9wW6z#kL*WQ_!z`|BT^`kY&&#*x&OFrk>g%h1}Q5Ey1ENX#t}#j;PYt5IyAVx zu#Z*2>+HVwN}mBv$|)6yWF6&DoYrpFnXdV@TLd=|KnKUGXFGt#<{a-R7dbJ|iaAZM zkXhWg4)*E5URsFt-&wq&G0e1WU1U{&uwxRmpE%%lLAVBE%y@`k zIl|$GOTu{psja+XuXM8fvYo>ISdaYqa|77ci5|=QHGrImpuSP%7$;> zcOGa*8#v>Qe4FCMVb*mlK6y>()qu#YW#VM zT^f%yr)AAW^WCl(%IIb6F}>%@|0+Q2qEPw(ZE87$w)NJ1<0eRp*V8V|OrEF88boD6 zdGH32<_^~$W6cYm*x$SK;_+{Z`zs(dDc^Y@9q=2ln{@o${B*+ONbS5-+UYkN%WPB9 z*4EZX%Qj`qDp*A&y zEY0OVo5ZsJB2Tr{&IgFoOh?)gtUbf`2j-5cY8@x@>GZrdRH<885?5!STbirP3%hAM zsK715G*NHWeDund!e+vey5~XobM)#c-vss~51NNRhOvUUoEHvvSej9)2zYBQWw(vq zm&Qk&gy6)qoU;foyJ?$f0&JoO&4H6N@x7v8#zxc{Xys>q%dX>x^y-n3Y~9UX+OmSG2rwD&eaE2_ob> ztmW2v@%hl%VzAZDQfZUEvM$?d>rZK_TJFmjP>j0Jv0DyB%{-VK5=du29}1D;m@jbeC(B~u2|7!Yf7?xWVI6S8$T>}Gdf09xc1BFC(klXR$TCD zdz;JG3q||@#!hQZjyZ^@n13`s<;jIgAT>Qj!-XX65ssLK7mK3ZADwr>We=TdQETep z7{sV5YsE|aH(lJ!wBBQ$cklriLIU>O%hySnB)GunN0_gPfFki_0KM$c(nvejD&aRH zw2?}aLd9Nko^YMOU3ok^XUSN~dSw;205jkKrORL;e-1v$eeIJzu9?6b*&n1mQj|v3 zMz-u&$hch?*Dk+X)s%WCP|WAJz-*JM zYgv$VbwpKzqH#Un+IptJadhBD6blV1$_2gF^t?Q>KW0`=osCV#KS#uIW}Im)by?1i zX|~yWLz5PFOqqd6De7sx>j!fnO6| zGL}`93YJg!rw+aatas_J%KPoGdM+Uraa8xsqZp+%3F?zwK^3vs&V&ftwRBID=ErhR zQ?1;#uBvE)iUPT}9A6#Hr`JC&P1^2e;`UnCx)gZ9j+Q7qFNhpx2ON?USE_ESHw^{k z6VRNy#>~=iW6XSJQ4>>%9)S&or6O5=S(17r9|E1He0o?6nxAcd+RZ1M;ju2~uRyxs zSy)CeX8d-N0DbOQfE^{($72~`o3|EV?3YjK0(Zj004)43jimxRSQ0S&WM9rCw)REnHE~^uXf1TcXDRassuatvnHwdtIpGkuyDqIU zgrHTzoe4@Q@?w2=wrSWM!pa|rr#~w%J_LWojTp~vbyyUZ2!m_HD02P zZ0$6d-9306c9r$94j0cO%3ZPR2`$Y|VLy*o*W!(@NvoVkaqCg767#(?i$~~-zOnnd z{rq}~S6d|L@JLCP=0;pCr|0?$GT81rDBBHxjYrtK-MusrS01|NH4!pjpbCW5nxWw* zM_&wUbVj5&<#XJYOhal}IC^`}F2F*|%>A$;3X>7@@dBAaU%hUGU!0uFEwp2*pnflf zdU0*r)Q|Z4cewEGo*cvvTDt6#NA}{_=&49dC%;*CD!YUYQBhimVNA{YgUP;qXHKET zC${>aP%C>xe{J3S+s|jR%X*g0^GhT}Ieg~Y5GCzvyQr0PEeOtWZ!RwPDOf83kf<%= z+)Q^d zVyV9{y5UgHw!gbcO?;n-mGO=*4l_wH{fHYeFYX*=xKiCxX4bForYf6WN7hC9wg36W zTXAizCriMbX4G<+s?l!)+(_Z<<}KVN1bs}Eu`q5r0kvLxvaCE(=FT&3wi>d!G=D(`MO}Z zOTVg_ooD{FOtc%?5f8OGyu7&$KMRIgqMs!fo{Pr9?ZK*g zne)0h|FoY^R!NlL?iKR)52qdbB^$OgvNdR4YGl;8DjnR>H1--<(C7iqV{`*2@*>gRKrVJC#;O1!lL(uZrL!|Bo78d1 z%+uO^{O*ffcJo?45Z2r(OT4EGd@cFt?z{;%=j_(nS-msChHM*>z2G}P+VLS#PvQdF z?h6`OPh;BF9z_cw>Ch7I(s5rK$n?uyGOK2lX|l|(1xs-cnikC`B2v9+J+>#(FFl|v zQX2||v|YF3>^cJ%a~Lt}HYc7+Wc*EqWNxb-8t99M$dotNhNV=zu|0>Jv2pUXyM24p zN$AF@KyCKXX<@{^Wu`ll4q?L5f~BA51#oK?;mCe7+AoR|EnL;HhsDt#GNwR|PyO`F z75%>S>Yk*oI=Aj4=L^5b%ESU?e5R22u>U|sDn>aa2k!JdovD*5ck{gC1sQ2Ry*pUE z;&Sdzv9TbeH76S^w4J{@FdivNj1e3QS93yr&Vb9~tj_!?*NGged_AZv>Gh{N;=YyW z+H1}~swI)jPl||~!$;Q!!{4x@XrGr)atu!T7n^_M{I0U1RV^aqFfnj`?xM*%>OV=# zrZJj%3^%Im*I0GyESg;V{&0e|?apn#>#Y(My0iU_xXLTorDb3*|9vJY?~u57u)iQX zbC|6c|JZ(&*{H><>atFZv@J#G7HyBi_tSKAapzS2A6efW&Sv}f-QKOyDyrHlr8c!U zMNoUw(pGC$?LA_}Y^hbNc8x@-QM>l0W{eW6f&?{VB|+>M@74SLJ;(Dt&zr+P4&jLF z{GR9e9iNd|_prWXdQAM61?8Azf&65Sz0%4*24}xAD2zjT1YIIo6d$wybG(#;kaV6` z6}zqy=094mQU2N>?6I8Ghfpx-inP+lEiDy6ID2NI%V+I=OKa-HIjfn^sk!d5NJU-ob&44yyB%JG5%?YKzBefi?H_GaHA+?5SI?)x#5IO} z1t|m_wrW9vOKT&j^ZK3qn`7xw${%^WW$<-UNSb2&DN?uck&fS2{4qQJd?!}bhYivw z)ztB&tW#uD3U@mVv#+Y6yKwcJ#Jex;VDuIee4l@!o-;K0&`#;Pw<^_`9=U#=lzzYw zGwti!Wh%ct6+}BjZwSU-gWP+=8M?Bv7T_|iNOH#=nz(`PuufxnsNy)A`$_Yj@=N(~ zy^VSAuVysQH^`_0u#8Coxxx365Gpqa5H3b{xx|>LX?tvslOAk>xpCy8EB_|>Ab3SM znbf|at(bVwIx$YYC9|RPKDUj&CQ8L-@1N(@`?RF)^q4^zWi`x(E|&h zWG27avMF9>T|627Ut=_p*b59jGKk!>|1f{Z#QWl zNX&kbA8349Pl}T}MT+1b*>zFT+CC_iwyU_Y^aXR}oP%L9dP|Yna&OeKazQM@W1;L# z!%O^)k;vW9t)4GGor1{XKk=4B;vTzhJ|)tgkDL!IRO`Wj=dmYTv1j_FMOb`(r|j|J zsU%87l4Y)#;)pg`LE~ry96z9L&GEE)?<_`Q0P1Clb=)EfA-)bbZL&p6 zIm<`{JMiien}4T4FQx1qAr(i zm1F!J{$1JUc5%$lU&BL&9#Q?uqD@sd2I6AX+F7sq(Jw}7D5Z%&-iPWyrR}2YDQJ%S z4cIcJ=|0k042nszCEZrnTT(G0fYLzBpm$0IUJcpYp6~CrMp>*pp}8dghYSGBmXoLW$!n<4z+wVDQt9~7ico;dKcv+kY2^>gyh&itDd4-Z!TAIZ{a zvHm(xcD>W9-NGg!>4GYzy}b{<_m0%^BR`?CNw*EI_oW!ly?F-E7%=_2-^w9+A6Jfn z!<1oKwTdnFNji@vA+PX0X+8t3Ow^=LP-?whml7ZT!9_oKbEvJqZnbp=(Ik1+#73{xa#iSKA~rbAxB-<5i}i)(a(ZewshlZSP+@!HkSx>@pc&m(!7Y zFmSn$`G#CYNDw+W6ad*Uo?GYFw#sN%EarPq?sAKSMhWgJ)^0@PFR) zfjnkVf(ITh)3?|^>~XbEdY0kq2L0{CwAK0ga@Bp~))<}Y6v;Tpb-&p}A%5V8R zO2n{hW8?f;2V*6*h@jY`@e5Om@dJXiX!OtXGKijusK+M^W5~51;zJ+0;a*FP4uNR>ri4E{zF##3O5j33e1r$!W_$+oHMO_A z-DiXwU+L7o9cK=~?D*b2&(dV5C~rbQB*!kli2vJ=S4 zo`hlL@zb+KSd>`UCOpc?7bP2r`@BB{Huyq%Qn<(X=4bj;yotG-y8ahIrk0TMq+7+I z$7|W4T}eU%Gz_eeVD*l#7;OmK@e`w)JOPP+0yW#M>^=>WvQeIhGV=VARN14+U1Q5$ z1mb;ZB&R)tTjD@yw;W%l}0N2*-4&I@8_*xggIps@9KY|2nj(dG3C zFZMaOZe}s<6^$4j=nL1x%tkhUX%0audu!qGjAmiTQcNM!OY6q{^?vZUA#t&$UyO@7 zTRLlZbVYi5KDorDTTV5Lf4839AS22!gx6Og|ARV=J^7qPMU!URf{-0e&9gyP#~g`3 zZ6!xBvt=;>_~j!4pziJ6wz6wZ9LGqzaV2~<22IWO0zWZ`wtq%8R#wJS(IpB=Xuq!u zV^52kUz<&Wc2YYHf-gUh&k4}}iS+T^3p_Y2ml^A^$W8%lUghD|*Kmrb56?Z;`v+vq zh3jdc2uU=8U!k+HC!dOo)X~rKdeyy;kFm$Pw%E~yZ(GCW?%ENhpbOUUO$2~ zWYFa=AMreVH~IpRPpwc)q~1F3I*9E9^obqD&bNNhW{e!zE>WNW-iT7xF06p=i*=WD z(!f$)1NG(gP?mmhANwKZtBnxEio>O=CJ{l9I^10@^5(hQCx>$oeeOQoh=7<^uUuW$ z5)RGT&Dg@ONH5>Q_C47ODSXZl5EMb=n{6XOcdP4XCk<$V+x&lx`wQ=e4%{hoqdHq;Ff&GsQoGJDY%CMTE<&>&=(rL zmDJ9r%ixv6({b#jVVcg|Hm`m`K$@}lg3I|`%L#gW`-s_oLj{-Zb7!Z&Q?`#iK!1Tl z`0w1U>d*WtMew+Eix(=8l}Q^$OAm6NzMdM&4hNj(oa*g2|E!en}4M&y6;`k@D7Ut(z3&hw1)8op4{@;M|4tkO@B zJoq!@cl}N%D#!TmEy4r%d*`gH&%%82&!?%!hp6GX@-GJnfo?fKNAURvB^4L(3V$R+ zm8j>h$sa#eV1`0${pX{>Dj*riNX>h%)-rsYyVB;E!fnCUkTI0Sc^~%RxbrZd#r%u7 zyAcdQrL92*XX#3koUadR@Ew+NvQQk1fT=gU2xdu@9swpX;x-bPxF3I0$a3aWiLs^x zB^Y~6)CH4_W0EcB(=M8O*r~LHz6jj`-fQRQq_^93Y(4g}Q^rwk%OV3GZrsYp79tYY zVC^A75WP!P#(KvEZKN+ZiOA9y$yPVWd|?Z}2~9J1r>@4+r&an@wMg zPOV5+ESOTMMWH_vgSLw`>^D1o;sA31f6Pe6JhkRO_Z&VI@Sp2vd5XIIVY9-*8z_G=dtU$?U_OzG!l2(QrDw7Jj{T$M!$8wG4I>2C6%!TJX_@BOpqOD zXL&_>{I^1G)Zx3~1pV!J1<;C^BHwj>;!U72Q z%O~sF>Fwu$i`hE1EU?C!P=gnYbSAqvFZE0+xGSL-z1 z1hp7dq8R)oudhhs$&do-u;ivI4{D^`I2k%xwiVn}zFjoIzr1*M57pTvJa{tbBt zgWUjb$Z6BmUODqrs+$4|{kOAr?MEP zu*RblmjXWmqV4d78Dg?6ZQ3QtO%OnD31{F)e$)d-d#!^`MsknYTy%`ZyhpRupfA0E@Ik0M~=t^nr3>+BMhmnV&G2 zW2S`=iTr}S3hpEQRMrD8E15w*KyC}#N!JnqW1cD3HRGfu*hRR;uDTGJA}Q91Sl>iq=EWj<)NJg4IlKAwPF+j0kY z^kn+20$a>xj3j4b14?{#sU z0<6eXTSXYbi31Rm7lqWo4B`p0w?&@sl}nj;8tc%T`&|RzifhXxThQe2o(1aH_$;5e z!v+~5$3qgUAjeZhvxsnyq`Il51i%(qT$-;Qgn0lI(8%@{OK|mkWj5Uqr*OqWC8%i7 zs8vQ}<7>jvEeu4T_(Fo`1|Saret+4@oCYcatbCembk4#9DoVcl{e{hFSnI$PnpTUM zrBaGQrrO7y^eycj*vPx^5x(aN{u#oAD?`Erbd%6D1|jR{~q+TW|mN2<)! z|3Rht-G+=Df4rr(hJbbG7(OI$$`V;TDR-Ch1QTWZS$pDQ`jz*pZTSUAtqu45FEY@k;bbCO^oOLHMtg4LtxUp~qKG=6kK*AJ+=XCPf5?M)_=HNmEkA(sO`JdPIJ7^ZB46Pt;E(_lZlOt(Z%D^-M{GoR&gk zEa53Q<4U9Y6Y3QcP6+NmYP0L)AMYab{O3nQ;MoiWR#W~7lS2vg1@iHE)x?W=8diMH&&99pM?#1-b=GCz@ry#425~G&9{^&4zzV!#FE=OgdnT+hZjfT?kLvT5E2P*Ek-0~vF;+gE+o zPxKQH5D;j<^$)+29{dz}V6k2Ubatp4?}KDNBct}Z=fyHaJ{?Q|*|DGw!`8gh4_kJ3 zm-s7%K@gZ)3DvDqy{<5vLkH^KKh;_AhSW%WO!X*wU@ zvQfOb^LGT?9o4gPl57&iORWZT8uY=}xn0&4-vnPeEkN1}#2w`%{h|Tlz!JlMS1ScS ze!Mm;+EW$T3$Ig)-d4S+wLdB-e62>>Ld+nSWo!Lhu31A@jD9PJslT^nl>F#^^skGk z!qRw<@0hO&jy3OgwVvR0$ZZG}osfBAqE(^hR=kB~WqWsR1!IiRrrC=0=fkvvP6?9p z>0(~d+bL%wnecwjP04Oq-;cCQ;hLmTx8ft8`QC{XnxQcxF9WLbj|WKR7qH}inCR8A z*xqTPVxMr&9RQiJ#bz?kd#3^U6aJ*|1IxtlvP5VrUqMo!5{&SOWaeiRdos;4joa6S z%3jwzxA`<^U8&2Z11pEKG*dSX*U1Gh0cLj+uTfd{eE@vM-b;+gbuJvVWxki~qCp>< zzi7;|1bwy&QQ@%MqOutH$+}!uo_JQKsS^ND56@ezkd-#Sdg%RwI`(ICoUgSU=7)2x z0cr0v<^bTa)N$pZ${Q$kK#HW}2sQsBHGUrKS1Jv){M+X#n%7M2aMVU2PowTg#6Ed9 z?D~;)P?Ebl!cMsX19AgQx68nkPCziTS37ei#+Af{3T@`L1g-#NLc3qJX7QJ<`pvrWGL?fJa) zglqnZexk54Z%r*eFhGd(SyG56({ zjCksol2+x*6?ir6zEPUbpJ3a6!jdtySO9nLy}dTS zcmls3XD_U&Y={pyVnC)xzeVfEf~naM#SPjsh@hIwpKZP32v@G2A9BeL?4A5x?`6xB z?;rmDA?-AsFy><=eRnpJAd};9)b#dmn%4&m8WaY4%Uy7M2;cF$SpCaeRr9Q8rxS>V z^vl4C58}>%dd>gdlo8%#iHT)~!*r`r9PN{sp(O%+ID$MXuaHv8vw}Fe??kHSnSJsew#J)GZ}> zL6asuPNsL!j~(+e-ee&awa{|rEo}CWb#6aJCoW|P{h?__iiz3ax>je+gCV-tC6L#m zakB~a>Rn?I1iH!;Xn?`$=osx$3g%}cbP=2Eqj-Ho20brftDurd_Dz!J6?ugK%6C8< z?>~A!yGZ*|yGM}aOv-t-Vr)(0F$dE|UvWnOsk?K0qBuBFPv_6HN>}n4vfxRfYd;TL z&No%1f4X9#W(v$(TDER7M!vwRh#0^XyWvg&ZZqvBTzXJ}0E5F)6%y;dJ^@*;I3E?- z1A1AHh{7!2u`)EZ&dBR_QI4Bg2$P0LF3Bs%Ou}O86G^3U#q)J$ z4K@x7Z-b+11squqe;!pLeD^-TaRIHs`{3a2Ew_E$3eGP256!d0ppj4;|9PtG;u|M4 zHDw}tJ%UF9PEW<6-+n!MQ^AVNie`;zm0!#GwMe$1mDO~(c*>R)b=!B;jwVf0jPAPz z3G~a;Af(G7u9zp&Gm~IlO_8|FhjgCOyqPVumlWk-ZB*95=?C@3M%SyIZRuO&4maV@ zl|TVXwZLvFR!ymsDXG6I8k8mRS;|>+>IRMAwQF#-Ls5?p?YhuLoK7sc(1LqR*$r;* zuIpBv0Nn3|v#7__MO>afP06M(!7AEspfd;9d8eL+%=Xz|o7o%in8K^YVP8%y^{w%hd4Gp?r2%cK`- z)Q>vj8V1q6_1V5zux<-l2AO#^U%NUyjrg*jUPDIBJh9bfaDObnd^zvv%;+#CRD`J!^OJ0>vYy=}2vqp2?W)wMe~D1bh7XGCgf_qZ&E^ogT}r-DW3} zTqNmg33)&Ir1#6P=&f22Z6V?M&zcdZPasq}txHYPy<7OOHpz!iVs|~_jS{*~&BdRP zZFb7jhkeOblAChVnHnIA6`>lTPed$S)8QZpZ7fAf+A7^VqV;}z%hL0~(IczKQVQ$} zSNciDpSV?i{l!SI3QSBS)S2ce)Cs;IPLWnNe(3GgM>x6;mjer?*t|>josTWh@d5v! zM8~udg(1 zD+kb8qD^#W*SBT{ZjPJ4=CM@SADPx|O zd6OToU(81d9s*XV-?eMIAY+r0s;FV9`_HM7mC}#sx!2*jrxEem(Bmv_bVH@xMjIU? z?M6#Je2qbvbSK!=9EKZWX3|sewBmfL(UFLv0}kGEg9scnD1Z~tLD2KvlYjwN zrm*4$WFb1{LgqR32z-w2V!-TWr%$cW5%)m>&J-~UnVaiqSum5`gUO2pTGhrcn=gDb zdz?Md*7Mji?S^w!I$ zA#8Ns-#Tg(q%P9Z)#G!68=WV+;{>)V8ym&ZmuI6P-?_0Szk`O(J0VR@@QWrRzqtd= zIfbJ)UlR=M`uNCDIWj@7(%1e3&V8&10D4w_?RF920Xul|c>RDAWO7lwjL)e#MO;u* zuAR>D@6nHJr}P-eZzs1Ao+&@ae>*P&1micRyuNshp@J*N!o?e>^YaY4W(_M70?=i= z-u+))#_sP}e)DFv3F?F#QSEP}H01eTY+TlZ!_?GMtMu=v6x8Fap-!Y!UXoRmrxF%@$lwt`{T&sHhLgn5s06Cg%PwMUE%hf@Q`vZ`k($ zxx(BG1&yJOU_;Me-}n5k@U*=<;0h|Nxl2K7@^3!>9U$a|RBLO*8krxRZR9jipFf0L zd=pwhDYz7NgdBwnj(?v^`QJry>@3xDSN1-=)HRoY&C?!ez`jwgv{w&D9An_P;z#G% zW^D!lcjbg;8-8Qg4y_pSUy4q@j3%dLREx{1aJrYkD5i@XsK?}4a&YD6x=rTAsIi6^ ze)*z&>O1w@7D@!rD_h_=I|glv+Xas*ttc_Qd+g;h`%_@MxjjEQqkrprfX|~avs#=Z zo>UYvkHb0L>p~Z}7$url9iI3G&pl_Te?;5b1EfbDasP!Di+GN*1SuJtw)&}#KoO(f zF>lgkzsQ_uM%2y$n6=-{U@Ch0bn%0-XaYAaELqCcdXTd+C)^+fkYdGqK=a9@H)v9Tz+N(bD+Lid?sYx$`7b>SNhBb|NVTzFjL?IE|Q3tv%<}8 zsKZ*8&M&YS<9;zApBg~<$&!QdZ5}F3$4oPX`8og7=Ua`(IBrku7!5}!`>%`Rtp)!{9LDe93(raUeLrFrjZB5nC%6mp z9P>Me^<m*J(`Hf_d1*FkYx$j$w1T?r zRngK}`b0Q`QsRHI>#!rFRi%!;S2?%-)rgWue^3tz7Z#s+)UfCJM*=t?iJ4 zy+AVjx#Zq23NwJD7?J2c`5n~ZkIjtD5`HOPiqbF-*}8U;r$_;a}Sh$&R2J+9>fC{zZ)-j*&TE{`mwGy6P1@^XLXF6Av_Rjb?$7n!V#3P5ePpXY?YQ40aIoJZvzsR_$% zMU^B8muu54-W1N2z31k;(p+2*5~!0g`bx#d*)5?@J6Z&2FuHsNUY9ruvsJ>BVQBia z@GbU=Vi8F2!KQ@6@A_mw!Yg3>o1H?2u!v^J#Yurwz5}7&^IXk#haDi5y!)SoyFlgR z%#|so)cFPSqoAQ-RFY9h^UbZU3nz(8qK|oWO2w1AcY567j1+?i>-U-<$DhzV9h|EJ zMVv>_8wS%(se^m61yZY1;m%D#68f%>I!Y2z8qTRhZgI(Zy92z#ANmi_h$OFt@OdAS zxpapVDby-0-BpexmXJHOGwZn20KD&ejq^@U{oRfL4m?&I;vIoywgnW`o zv9{O$Z!!e10~uM7ZR!>$6WVV55pgE@wY55{j7hGjL+IY%!X;~#q#F{;2pltMVUh9u z1Ia~gNVn6&J{90OK%oNggq;0(1@`c8Rp5GC_hD_yZhpkd?ZS0j}xCy){9FJCkvSDG;w1V?;L&$6SD` z3*U2pf+8I%&(a75?(2PnlrEEi;91Vsy+C!vOoelTkNK{8M$3`x$B)vhk=|_v`XRx@ zrnJ+G|2|A5*bsn-Ef=88mVQE!rU8)G3yyAs&6*F>>ai`3r#?Mq@DaIHOvl-`)*V#( zDqY7#a_in~0Po?IrUw6E(vww+kVK2NWBb7F0 zV}@3IUOj(e(B{0w6DLR(hkI1b$}uzKra5zJ#T)(xPF%~?&PBF)7Ui4TNRPJ$BI$Wx zt?aeb2JJ$!eo}1#VHxvyvK2j7O^p#k8`Z{AoBxkT{)$DMnO$ast{cHI>Mn`sBQCAr zZ!^5ap|<9GRI|5}7W7PMB_3(yju@{uRNm8&-&nntm-T%=R8afnnvs73xwpmLfC?c| zz%iPP7JH&=>vSH&jcp9L8p{9&I(&xh=gDe&lL-%BX!V*G1NetEh40^-vLnrv8wtVc zCpZeg)J7fPN8e(v`c4CB_q8YiOjT8;+@{OeDtIGqJrw9T@8+xan$em&1RV8v$0Mnj z%kh|%l|d7H;L5qY+5*toiETZ=!2#uWx_iNZ0eLE*t@}(Z4)&b}=deMRe?d2#k4GxE zE@*Q?;DRUldhGOKuGMP!?7y=bwjambuYBfU{~-F~|DZ+2MqXb?N4I}-imt)=9j{hr zd2X2&-gJAcYV2#u-%t~iA4qg)N)C~l{_fl@!ei#ivOiRgGJtuSd(K0@Z)K!c$TQCC zsY0Z?P_k>f9K`1XZZhhF4S*MnL?kB$dc(JOKWjPP+A^~+t;73N?TLS@S8&Nx?pLBG z&vt{FVe3MBn$QVTy1k0j^KBImx?1zw#^6?^XPDnN3jC^St@?0p= zJ+0xgj;7M6<+?!)oL6OMtKRK%S}<|0Ui9Ci$Dj2Sq;}KS2xfOqu-(f+1hK}=>fJPd z2f())3)NOmnh&y8a+rUo118$@hRv+lPoF*&l$Gh&NF{FOOgV4>qHRn;IqUm?D86=~ z4m1~E1ppiZsm3mBDk}k3Psz+QD1z?ZJWXl`u53>im8kzaDm%%&tB6 zM9JcYKUEQezqSL!Qli`KIo#Dl>RcZ?PzcDy>fh8D$W;GHTwLX$%m0CAFbiwdGR=pC zW$;32wl9wMeJ?H}F16eodz!lzj?z87b@8nUMOwSZSWm)^&48P{ey_*advAu{!LmiK zwde}9gWKqnhzL#I6@1Fvxc3BMQ`czbSM!<_wOQIy^Z@VBkmMue_kC2jjc3u17prIG zv`EgQ?txT}xLmLq8Jky_kwDwiWdC}Tj1OZZMaLn5XHaC}5; zh7K#yT)Fc8il&MpU?fcs8OdDJkZnh+`njR%l>wV_ZhXjVBOvWiKA91^UR444DVNq>IxdbK{iY*wHs56yyGUw&Y(ww^Ht%wDy2%7wLGl_lfa$N~WUUIylGPtc3( z+&1%hsh;co9;wH_SAWgi$`G;B+*u{Bt_E9=oY_=EP`E!PM;u~&CR47{TmW;g5zjAc zy}KyG@E4THuZI|FhH|VNr9kAqzywbS}*1ZfF1rRQ5V_! zR=$kaXpjJOt~FE~RbUp4?$5t<0*Yh|Rcq3T&+>IFTCJPZvP0zFemOfls?C_h+3CPVn0lC7IK70Rrg8li5AeB5c11qj zdO}%VveU|DHB*-+ zB=RLm;%4pE`mUzLeBpmBa#o}A$HN(ZGj?=mhque_&A|y#@xiReds==Wjtk8x>=0(% z#A+KdaZknp)9E190xw(?a3zB!44`%06f#1op?cZ{_A9nc$wpPMCiRneu~YMzG+N%V zp)}@6azeH*PR)i^I-W&nyT({6eLMZk7W^_Z9WTuXBsbyLWsB$Su&F?~l4K;L=^4#Y zsgYBWh{<=nRPRN|XeL>Ns1;1&QdcBbp*NC@qVEEE}6$=ZlC;;}m5buqBJM(o%r~g|*0N4%QR&_-1-bg^sAYdf^ zB8h$DleU)lCb3RR;WLClSK7+18i1mj%m4cIDT%qFV(!_=YD3pvw)dbfex7?~riu3i zP;}P<>fOIG8!Jn_+T%xCo#Q_|oSHljO4{|c4r}ZX168!#2flfg@r<$+H0#?6?8`~D z&U2a(R1XC*j%Y~i9_+sVHy+OR&bq?2GgreOzf-AHpoo>{8{+FAMPr;zpm(=onKa%U z;`J3DrC_$Xxux{Cx>uyhD#46#o`P|vTAZ06-ve-l(_WhuR0hnNtr>9_vmJBv#MemS z(t`xSpX-pfiTw?>#Pv~~QA4_-In30dSLcqs)uPq1o58qU3x zEt;?DU~;}4cTM$cu;LuZ62h-B6Ati-Z5H+18r9{ySmvZ6 z38>AozRQz|P=^N5pwO228HKi9^t;76CMlL5QU_lwNcq9_W6u;;OP5}5<{Ce%LGvepOm@Sfc9iqq^gmR1c~%ndgtPw0q|C_txhNWbnOKy?Qcl-|@iLV?hHE~9$+?%occQF$sp#PM+$ zX~O5Zk@}eQvd_(wnM2u46#Ss;Q5@umt6g+LAS5rqu%a58VhXSxsIIGa?Un@C+0_Ih zo-`Mrm!$)2kimn8(TYTFX`QhWix^9;5 zAaEiIw90{Tp=GE>T~Sdqcnbrd=x1X*P(C>Cz6Px{X}CP()bv>qy=5-z zV+o&;adrcD&Y3Pq`7?d*!{PNdEm8k+caxHUawOA1tFZv=?7)u#RsJ$S!ncC(&Y06b z*5tQ2I5b}}n{~r1?e4#yPch^|uf}ehvRQw}j}>$Y{=I{y{7Io; z&x=`J3gb;p&zq)K*!ES>(#o*M#XV@aoSG z-LF2F1I9X8Zmny+2L;*<^PZd)-+MQk2y_LIQmXn3f{>HuGGKHMM#2m_EVWT;m(Trr z`aOJN5$)f3emhO30X&t#0_}8{5VJ~fsngdA;#TYWtY|Q{IWGM2L7*X*UZ&u}`RG%5 zVs+umZr`nWlXq77G~`M>ihfkL+x-?HFEH|Z;2hTR`4dCs?I|XI`Bj;3#EyNbpfLlhC&XrC8gVQAwBV>aIHqjkdhl^ zA@*$KwKqz!yH6G=_EY+z^QX38#K@|=PuH!D>ADU^X`k`<-$W$M{dTh8mz#lj8QV4m z|3_^WE;5HH&qXGHkS$kR*f2Guz&uh>Jxav2k!r(T&!H{>n%!$q96iiQJqI9=$sn35 zu_%C)8&GfT{b=soNCAYzdk1|`tOVTb=SL2x>O>qgDukZezdV}(r|08;J~!xaP%p;E z>NkvG^3hsai3<_BKLU!8W8F;_{sL`8>V_*!e`B46ZS3+2`5ETUc?;=W_@(9N7Qv}5 z7bqO$yUgPo4>oJR$gg{efcgI9?Ij4!dtu~#r|d48r+E9k+g=3#2RD`!|LKuz<TdKWDLIUK)9`ixtgY)8|p zs1Px8S9}{sQguow=a* zw;oCitdRjqDb@QA#b@O$+BPrn6&LXd4`fwmRgc=Y7?+yM5bqPmTV167>e>Vu*?%qr z2Rn_H!`m$UV7N24s#hNyVo%?!37A@@&KOt8xs7R2cuO=Qg=Z)b)J)Q>$R)See5WHL z6810aj5>oGc3OvouB{HZU$s-Oe&!)>Ww^({tz6+(3OZz~Y0rLzYR<|l!_x?JXv6o@*pp8(gm z!03|3^Z0ey97WKp=A8K$zqZJwcoPf9(R%DW;=SNRK%UUsU)eQ{KfD9t31#)#SyUbU zN%yuw$w>Z2m@!dxes$zoGS=1+Dm2yP5bw$K2|ejKX%$l96*$+auCoBs68;oR71v^OmgI)UgW= zv<@MWJo4{M<*=La(Zv6F=6U~7y%u4`txtO}!H^?hf^HTh#}kL;n90(#KJn4u56Rg#I-9b zH$$}isIKUfe#Bf^jG==$^;SjvdUPr)7c!>hFb$gRa-dWw8a93mZ9Yn0t}1fL>M?0p zNpDxSX|4%zblg2${zN+G9}6H+NCl8rAbs1ao-6j-LEVHJjF8r);1XKxKPm$JP?Oakw#d^n8@z@cC9DB>gmw9e-e7>$W z#yb@RXp#48>kqZBaxoUXr*0fh2d;`OM3Kub0g6<^tl>1Yi=9AVM{=SQYcmP1WyGYh z0y|UZFIWB>MDeSR*OaeI!c?zV>}54(J3TaChhnGhrl~SvMW|297>sEwjW;Q1t@EV5 zQD~U;tJ-JF0h+EczxZU}4aC${7MZtvWA+tB?$RK`&-U>TcR{~m@re2|wIf7_> zeRO9BQzmWhb@``C+3&)-L|{fc-HqRdkFL&(S`s+V>=#Ee%pZJJI8u{x7!P(_XD7Wv z?gS)^Y!AA??{|8E-Dq>vL`V;v+Bo}dY*}XMSV0J=RIGhvzlFva50qQhy$W;k!@ksy ztaidHQh<-P6&RZbF~N%`Rm(;B0eIGtlULz5hL7<@sbVkyvm=Yye*1fqVVumfVF$D` zdteL*{J3D(CCZQ|v$Eb>LhOAyH=ZP++H3(z#Staq-~m8UuN(C{XdZsWT7h}^#5%jJ z)_rYTmDoNh{ku-!boz!^jCbpsw&0kBdb5szIPGJFCEcU02CiK z@Mp0bZOA`z`{w`r8xz-0-8dTv&`U#$XUfl+ixqUzT9rLqO%8xeEyMR` zmkni=gnI*|tAmj*Bj^6pZnZKh7d0^{b+RwJ+7!o1tRGH>`ErbO`9d+E zZ*Wn~V(GCpcKr)2WjiTTJtxtj8C=P5x4HXnVO>JQ-~oe(XTXB$Kt{;3agb}UvltgKH+x6U?nLCMhGeA^To7Pc|Ekk&-<(H!s6BXU@jc?Xn{spaGHf55dV{#EfQ!Nnen!O+ziWL|-53{7srgDWg$tRS+exBn>~ zn1%hyNT46eP(Oyd?4d~0u%(ALqNirflou%IgivVo6b^(l9u5BBJX=51MNp2!Ur1h_ zcY&eotpSM6S8YK;Kst4}0}Xk^;v#!k4XLjq3HY-waO7+z9oUj|t-()aH6%Ho@6W_=u#54nKgg=z zCclYLkIQl-+-Lw&#QblB`saNrvW3x;!PZ`NTodta<| z=Q*3Q5E^TrDPNIP5F(t8E3W#f<@`>PbIMt<&`u5g=+)G=+-lvs{dpe-Tr#*9Qrj2r z%EI>>j?AhDcYj$vPPHp4mjQcuUuMNb13Erx& z;llmU+FKEVH-c-NUi!y0;ZEJSpAcn{uLHE66TK;?I`}icneokgkL+7R73L^@O2i_6 zEX=4Oa!OLSa8Oiqs3%3hYfwX|cW6p%mu$5B0A4Iy!p^xda$o2eulCIb}?%oV7Q*T92Q_yA=&t z=|k(DUbrqcvO8<;KhOH;89>QYo zHy2H2T4NV$FpoZ$d7wU#%(jns7_`Ujmi{)}(yQ@+2(122akQFqX=m7a)j>wO1(U%y z*9Qx+zCb)^&0T-gW%W0Te(3a08Ep3Y8#J2+K}sC^(QA&WhX(cUO1ltaQ{!!atIJ7k z$~l`6dBh6`VE7Vy;sQcN0@)Hk-dlJOwTyhAk>y4s@&OCgIwGYX;pC zXt@!__VZ2frxa>+&C?Wx+DaI$1f2ZO+2kBq-?8{|47$-KeIKWQjt}bCIqQp4aiX99 zhI~6y?b0AHF&cE<=W^e1tI7-JNr{k{RtOZI`o~T#g0xP?DB#_a0P+8D_nu)*WnKR; z4kM^Ed!gD8l`c)Xii&`Wfb^y!QbIro1OkMh2-rZSigcwY5PCuh5D=A~&;tYrNC_>W zBoG25c@Hz=JTv!mKi~h?n-5-IoMfM~&suwx-)grvPK{ULt`+t%hM@MuH;y$2r4r?u zthovy1te)L!dS@C($V~CLF58q`DU69{usnj9X6K&uW%3Y7sy%F@RH2FVQBb4^o_QY z`SfTCxti1mTJHX6FLZ2D)D{?7eIuiRzQAmgc?g&=b&UFbvja%%>r{otLR)+$;nNc| zbsi8*ibaGR#tpK+e+9-Jg5tGEn-BO1u=cCNfsQI?37n{-${r~w3;}M|1N5WcT^cxY z7_>l&o<-jEu0CSVp_)N9oZZz@8bT2^seHj^K3MVlX=WS3FZ`T1t;F zlLflxlCa1M=D=c>GttV2@WT-IQBQTcV7F#LRIq#FvBNp@E=Xa#F2Za@&@Q1j0V4T{ zhp8$?cbZmeO2L?U3_s9KnpIMc~os~2wKm3GV{`0M0R+sbIuicw*RfU zZLK2)dTPv7vMhuK1(}SN0Y+(sYc}9>SlRf`xXIR=nf1JkBp*9g`tX`bK;e!Wi_0Ka zV%g#yBBH-WvU`&--fy@Su;8X?d@rDIrbH#hllUdq@dP$ta8U@4+R5x&pFg}lx2&>D z;=+TE9U_H&GmJg>3d(?syr7JA9q!8do$?I~oLq;i?7wmSdQOTCWRz-lg#3QHPp3L9 z(P)uSNHBJ0VN{ z_t!@?zgMO0TPuA6nB34$KW@c(Vz(Zd(;z975D{@F`F%4fD-OWJDs>qKq`rdBwyv&S z3FnzYrY_Im<8YQm^W{pHdMxa>mbR{cy>(2@J7=U(d(*Hka+|lf#zWCY1Xwdi%ttL9 z?PRqVu~LmG9*dq7t2sHS#4v0?z8(|vUG3m+u@1KK>HlW)Sp2HPlbusc@_z8`)q2CV zr}JM9SCb5&IREh+TLI3zP0L6?_m$;gq{}cIFJ+ixk*Ya=A=0Cq*^Bz9?bN9ebnH0i zYR$talHAT0v*=rIxd{f-ol$HT?b~a;Bi}26p1G@NZ^8DaaSSY?pkxK1U9D{q?Jx%m z=}x}<&Nho^9}mlQhN@?PLt!EICY%azNe1QFe{hLW;Po67yMHf?5`nxB(k+vmXrpH) zU{d60%s=FSD9XK=E`Q6$4?Si{j3Eh)xBy1$1<#){d}%5d`|hm|Ghd-~G^O;R6z#LL zBgnX{tb=3-F!?FC9ar?EG{$`3dhkj)Otmia)0vj?B)+MclGwvg>CH8XcZ0NqmMLjV z76f#*a7Vegt#q=GsMdM2RF{PwABr2CJ79fKBdgMRp%YouoFKg4ixlN z^L&R)%g4$R*9No!4?Co@N^pej+r0HteD`iOq;_3h*4qyWo(y+F8uwv~`IHp^%`G{? zN7qmZUh6EfME;&$@i=?Lc*J6{W5ry=!;wXE_-0@0326ppW9s-bHx~xr^;9O1Y`zfW z(B!l5%`HhWs04y{DyXd)rG?`Hq;98z4o!_RwmOmxaL`vN%eT>fFGn?N7Xt<1U02dM zC&?*+js$hat*#@YzJhB>kOZrvLVvIi*E{ZUW-KVl5Q+R*vo1Q5n&n${U6l-*-P5r( zg|F+ko-04PZ{zt6uCKy?XR<2-fKPlnUpl3>5&4kZT_iW;9tmCV1oP~9yGbm$!VasZ z{My(^+CgAB!}U(#Ww4>)oYQ7>*Pxsyp(g(@wl4T2)wTD@kx0+Sfog{nJjB1XIruO4y?(r z`Cf^(B(!=Vzw-Qf&rsfNEo(`v0wu3?PYEAP7pisF=j(2>m_3fK?Kk*v_12$g)h~t0 zW#f#5d}7S$4i9-bzIc^*gL#OsSOHolIB!i3c7I~rNw%!H)#RY6UxPL!sFH(8fB3{) zTw6NZA(A!=$~{_=?$nlbjdsvG8)t{=-~)UuuM+faoddu4tY+PuQeD{+vClS$Joj&_ z@VJunc2q%HKl-~3k-oJ>BAndP6=Ui2Kxu%Es$hQe^IT%_zOlym*3JL9F|H8ZXJkYn zAjspoudmBY<_{$3L$AYfoHSH^r|7c+z4leezpa&izld?qTx8vVE&I0Hd;+8cdQD&3%v4 z5k3>iv&>#bxR?hV1N%GFy&#=o)g4a5x+dWoMwb~om#}(_0S7(?)Z%_&TX{GpVureM zb~7kxPsdbJ>#ZyUjQ79U_1EnI(x3eb0W~?8G>(Mcsj|8xM&TKcN4?x238k~{RQcGF z7aM2^iCrae3W-%HJ;M35&WWAR#sdq+>b345?Xdp$isbhXyx-#}{@Av-qG~ZDCyh9G zTbg2o?d`PbpGU>Xkp}WQ+AIVEPBaWst1O2MV$n`|e?(S(NrzvL0`Sb6XJnzfVAk>R zCGEaEYG*xb)W#3`efoReFzUSKSy#c*togHcISm!)1jLtR?P(36;L91GP$u$bCE?~M z+nsgj+@j9zqC$dtds|I!);IScMj&7QAf>VkDwB%0%cqYxRrr$O@`U1(487mR*xX5%KVsnn+KX&Jh4)cjnOA|X z1 zZZDtT@Y+f>76RWGJda1dtVP8k2fC-D5NLNJAOL&f|6&^Uod9u#BmSQ){OmKYy=bVg zu-}yJ%l9pQ>CTs=mtTRsJ~SOp0}Vjw1G|&7oFjZG{kA*;;wR<_UI}zMKOz|hBv7`0a|04n4-~s7 z2vaG87}A;-sRTpc^eZlaM8_s1h*zKE8s_~9`NaZU0q?ioE!DhtIBt)M-8tBAI?Pwf z{ncHdl2wJ32JJ+lB?xyeDt8L9f)o94B`Oc0(zVI9OXAhFBK;VruBt|GG!64?0T2kN zWn#)?=DZ(uIrL7AYaRU~NXQ){ez2Q2a_u`IGA%zgdG29V}+!Vr6DUqHp`$4y+V^`WtkIQzcAt2#}r)O4_C)O zB&vY+NvgQ_#g~_tzdcnsIX&I_xl7Ts_J=X9ZZ+FH`8F`(LTNivKHC>mZ_nTkjrq4! zTikxo)W&PPPEBbe68-A8a@$EuM8(cqZh*$ zs@nysRBpZY7=Q%j28{n!FcN+zH_G>A`Gd zR?cCe29^4rmoy<=rVWsjd3<|fRh#9{$@V131uymk7|k*LMv)G;>^iM8)VT4Iz=#U} z@1fhU+%Jv*f!Rl-NRKx)JCl@^O5IghbudSy+36a zK;)68oNOM?8|)ZcH|oxb!>yLC7VA$#A^6oY3p{UmLIv1&6hhWvp@O-;^mttT6Gav` z3J96F{F-JiX31 zOQV=yz-eh{j@uI=)@ zpQ<{Qd?ebI;dOVQ(7xha!Ar!Kv|!TXdw=gfEh$OTM69~?h$CFeEVm=!TXMx7?u*E? z@_WXq08o@N%?aK-kfiBlGIPG-JRBbaV%9m4#rdXGZWa+T!rL8-uc~?soE$+=PXTjb zijPZh+5IQgX&CFAQj07#Z@mdjIML=Ec)r%T%R&*kqZlPyRM6M=M%wzcZ#%t z+CKJ(pA8=`M??Li!STc4Z7LTDhF*-LV%c}A0!?!snDoIEQIdf>k-rJqISxD;0dW_B zC#7AF7adymL{&PzDVSOE+=giBGE*A5bRYm5cr{dLUCHfZYEGO|o@264h+9A@hC zvSxKn%7;GiqSG9@wVk}5=!lR9(vRO7B~D}k`2_p>GLuhBN*Z}m!BvmPKc+m_mIO{( z{36#o!G9YIh5>-~j|5#}+2&^BR938$R zkT2QMuCG(OvZE@xV*Nc>&PSlHHq^c`NFar~&{)q4oGo7Nb-!35P>ZjARk%FRE^H-~ z!cuPqC)tJ<663yD-4#Q4eM08hkuMYWKx&Qi>Xb9)Q8tcEv$z-3VG)-qPX^(oK-T5? zl0Pjjn8$ckB#*ZZ3%P^wG~8$^7Vq9%$KsVO06f^Vw6qgm?D+#gO1kOHc`SId0yU@6 zr17vJ%_6194rKvkK*=}~KFdl3Z=uQ-uaYm$W@5On%KZCDzPaQA(UvJ*;~*rF$ut@IIq)5tRifJG1pB-@P!U1`wod)Z+tE`iXi zhR)0S&8fs@O+Mt?yl~+Ha6Z0I17mVdnOuJ@>IKOFH4Add{p;227Q}N)e;;`{n-Qv( zp;9fIf7jG#<>TXOS54$MC|R!}gOMHK$>l*ARXOTq7qBHr6&;T+4;<0-ibI_ys7_rr zpB7FzViAj(pFha9CJB)Aeq_u4Hd8~sJRb1Ee9Uw2V#I{s2p3U3hljRy}4>B>L_hXhB*-_>O;rz<8XIE$Y zTtaJT>?7!#jTZ&*x?5S*fF}NazDe86bOhGrCjlN|v)%|y(PxzoN2hBCIc%&+oRomC zM74h?>x@1i5@h%R%M z;2vIvk`mgL(q_?J^_^P>^x5vVbW@n^m&A}RpO>0+A^FH~02zfz{KjD>S zl$yV7jVAFK?n~j5YLSy5^9ppZKev0nsZicw!g(B`36XO@Byo2cNiZw9 z)@8NFwshWVSP|2=q}o&s2~ivKoR_eyATV3ORpte1tJ2M@Q`|v28qNPZIoeZJn#5@d9gpgODP>gdDNl$Uj`Y>5^w;;qs0TW%YTj`E?u7%oWgL zbG}!Nlu<%Kap&!>rJ9vC&Pv5{FM8ha2_(hL1qX}*g`4=MSd!50^kqde*(I~`x!@lK zFr50R9~wqP2TiT|J1@O8!BzQedGENY@vj#Lq`>40GW1BB`S*)N9tA;yFgs8dZlJT& zojt-?n9IImYQ=&Y(H8eG4MmP{B)FN|CYf0C(`JhGK)b?l1a~YTCKEFid~PA z`3Ixe&+q@TY5RdFXc_=){ln(;*_u>w8}R%Pw@Jp=$=CIb@Y}6z!ZKF*A2IdbD`vi;QH`Ho4iBK;Pn_~cd+>A9R8K`$)`h19Y|g*zEBgX-%7 zQ?M2uV=1|rS`0&wNF$#YbQzz$Sv|3$qv-@MOQz(KyLA0*iPsss2Nu=I!H6IvyuLJO z^CM&wTieyJ)~7fZz-C{U;%sf?hJ>)qYbAgw7KyfPz-ES^_=^OVZ}txyi8$cLVXfZA z4OIUgMa12AqTHW%c#Q6Gnn7Wg-neRFgTx6~>}Z#|rHBj6k_igmh!#k}Bg3LCXKNk0 zb2d}{jS>G+yIdStB?r3M#7<2>kaluaY64vTFAxLxVkqBV5v{*}1pH_0%3l!RKmSy?|I}JqY{Wj%(4s`i~F4$nHN=QvUI`t5+@m z0)qds{=TmGKar|`{oGgb&rF7YesQ1ue_xWe|LobbZ#Dg?&*XS^Y3{=R`!^Cn0cpuW zwovM@v_3E|YhfX!v#%7;!BxKM)VguMM~`v}9I@7dVj9BLbEKbN!(Ux+9+GhhZkk%7 z)O7ZJ@AP&bU>A2yj4q0EZDIDNojUoCPqoh4Qt%=>th@YLobPM4_0OM$5rt?!Ah|oX zre>?tTnENvmU8M(d|`vdW`}C=dICj^g%NobY>_-rJb6}eSZJ#EOWB17y#XzF>}CLG zm!?1E9Z(w4)|XGXV!1<0`M+#N$79`!xzJ{_U02c8kJNl=?r*s{tq(XQ?MJ7p$s-3Jn(Teqv?etvHgI{3WE8e_s8uoTc>%@3Y zFvIDTX1}pta&zeA#;5(D8TdxKdeTK$1SDGVf;;{9!P=m7$IP^tnDg^$9`D|La`NDh z&Bet5c_@R`0J74&pw2f5%!)(TM*IZ&mZHJHj4w&W138AlTYjJ~bs-avT=?y?TH81= z_Zyp)Z=z*Y*W%jKFn7?D0ZFGHx5^b|tSayR zEOdaZb;KiyP{Y)~j>$&jx&$C|xFu6hU)kLPOOTcfrlOL9GVCjuaX0*0?LBvvudT@Jr>8*&tDf-c0bhnz&>m#4bEdovk-d- zD9-K^)sf}yJqA$95NLe$WjrW5ysWSZ&wBV)DLPQVrg?q0*;GIBv^rF)pE+!&3Lbid zoJf?jJxAgU+^Obt8%MkmmDk+Bxp z8YXc6NOtZ{Dn%2T2&G^QuRQn|J|SF+Sb+)54lrHFI{b-+BSCFKC=rA9tN#4JK(G=; zINi-}mJLL`gC~!Ut84B5UtDGzP?+h5ALY)1wF&xc(18w}prT+JSd6b*<<43qkh1#j z-H9&ykc8_|wnpymA3O%D^>o+;5hxo*rxRhLuFgEp@fFr{yvzbBp&mH=bvA^>YlIQB z2anQ0grCmKF^5W_BiHk9=>GJuosZ;!Y6(oLgc9oQDsBNF!b_jjS9VP)2?^BKekDK| zG6pKjDwr58hb6xj)ph_JQt9PowTC0sw^pVIy3Gl)MC5sUJcF&@SD>;P51hPKczyl- z?o2Zwpi-|iOOx<9bHmv0!vNoJ*4BeN{JF-)F9$?F|Ho%$W8f=oUTr^6o`3e3HuU4p zp^d7LPYK=UHeC3!wSi1WQsp~W8h}Rmfw>V|-wc?UP^a16>|DoGWtI)R`I@x z6tGb1RGW89O3DM-f%v|BwdVXHEEx|gZ0qUnKD{>S#z*nHO(#XXjuX;h+dRU3AV-n| zqq%v7j!;jPHe2_r=DkXJT&RCc<t|ROIghlCtJ{w&bAZyI;_0ZwECuOPP71nKMF{2FKEkmFH7s%$($Yl*^vRL=c<1-5SGW~bppdG<3ErHu`gnCff2)n zJ4cq62~z_l2TGmDo^Ji6wI~?DaH(@iOBZ{o(9!rYItt~4@+7uA4H|L89}rG+dHB$f z64-G%&q{-48|5rG?Yb+@6DhTF)CfkBHZ0!9kK z8h9+Y5f=xRt!zn%`a68hn;ea+KtnY5P51n@9bpk|#KjOf5mnC;i+Lb7fELf7YTlSu zpXfTg+)7V^OsxX-cYMGAz<@g7cz@ZL(>(lAT6hS-?(q(#*!xI`qndAA;^=2z3eu3k|q)QRu!yCB-v_i0<8e2 z42M;|SWU@-x^$omr}HxwyOD{(8`o~R5ev(!!5Ljnex) z2@e?DWA`upr%-4H62=z#6@r*AReUC{KbUc^diU1#eyIiQ$id-v&TSU0Kr?)>=gKAe z#lY9!Us(>2xVtW~ZMOXQGUOfWP96htO#DeZ^6BD=?ltZ2)h*Yk+V|T0h?V(-?b+S^ z!f?CxgFv3}RBQZ2%|eR`02a9|r{2`1Xon5avnaF!$#c1?Fu#6p+wwDXaH#Vj))}3- znR15jh-?L@Qq!YDn5ki&Jh@qUkT z&~Eq6f(qbrKoUv~H!y61&YS9l!}Gpp!Z&dSLF>bO2YPQCn*14+R+J#Lzaa(wfN zI9J^{2h+B+39L5H3)-BqiZwG$QOvTPhmPR+>isqs78Wu#Gu!A|qZhOzJOT8yO%K0& zN#Vb6m^znM)qmPu`~OS|`iB^Q{=D!nTl-(yT>4M*{ofKF$hF^&;Q!l{`+s)H>(NQp zFx=uAnC!20&#+6+^T1{QGtM zTwJ;`Ec*hJcGBS7U`(39^XQ|vUz;8W+gvZSt9|Fr0bJ56d086RiH*&uzhAGAr_H12 z)5C^|v_vnPCx-5Uw@VPO^u8^<{mXLacSNPe@sKTl#-@@6?W!Q;+cTE`;|6UBuB_0e zY_7aKlCSG%e7aJY@Lt<=;`Z&`6`(RPYOJfBOq%>lHrV9>@NAIOAB;(k&?E z?`4-BcRh_i;4&e3Y93mGNCuw94+jQo83%>Uef zoC*G)7+*F_ zzb@5(0&1K7xW#t%_#b!ubtzOI@PPk+ys-_dZR5wQ?MYbV)Jputb7#-)vKQb&?Ei}{ zzh1*%ZwN3yV1U89HB7SvrVOJX-GDQR5GJA*W4;?%G_TI@&dldJ`P*OQ{`K3xUc64i z(sr29rXng~5OT!O0t%g((~a8q>4y>Vvm8+CaChc>==0FO=eesk!<7 zVuwu?9tbl5u(4$0_1A#GTWDj;NX4wR0-l$owsxa#1Uf`Q(I@5R2jvkR^7Lqec977G zbiicrO>}(Nzpyjr?U=<|7iZ@dG)2>yT61mNJw2x78@DxFhAptim;ey;Y2vZQIhFY- zqRr~I9S{e&6|F#b-mQcc;hZ<3hfaxo3L2=yrE1DEnVwvk=5*jWAU{H`{`h{=dyVp7 zo<~sp1ZHi)k9YnpSw<78W$`0AUFO`mFKnMssonqm)v(WvGshd7CO0KSS_vxdMr8>U z$vizv=6a9UOs_}HJj`sr9OQcRgfm_>xMQTYB(k;NlIRsJ7-1I!0~T% zkaD_xZYNEE;0$2GzE!1Yv~>XOaDpcuoN435t*wfn;#5sivpreUD_v53&aJ)HF$rmM z`Fk26+K+-X_=jcol@`V;)J9MV zi2I?bdXYm^1yHS3CRQK2=f6uHPVZ9i$i}V1HqytAC9TXJQE?`* z^(<<&VXZe|tPUYbH8snXm6b`rdTYx~Clupt#0oECEOJ0r$hp!V9Ycoss;M%fK&b|& z@JYqT9b4tIkStq7Xwygo6aATBoJs+E z;njz21I{+#?c1~R*tO{PWb9SX;Tvy(rZkplFwwbzUV11$`$2rgWS`n-qT1+2XK&u( z`Jx(GpyN=lZJ0Bo$iYeRdVSlQ=PZbE_@b27XAU+Tm{;2S-Vn8;G3SzrHP`c z^<^u*Ming*D#+`OCRD6UJU=i>BPJo?1eU&G{sHy;qqC+~*Drbhi=F;dDfAaW`g=|E zT&MkFxqfSCy$KV-iUx=eSeBEey}NA%MA+ zznVJxo}Yn-`rlFuwd>8*O#-aoRl!m|7uy#?M^q&c4$1@osYi+fF{+Z zlw=8Ka$#*uT$~KxzgX=GDOw5!%GNF1wp{~UNYFx!@Qft~jo$WyH|U!kPib#-SU;vU z2^kIyIGGjG2mzlXKudFa8f20kN5+BlgN-zxQa`|>^*3RPpugEx_n3Z5+MWQN4(vg1=F1E@qa6->)qX-?eegBPDSM5 z5Pk4)f6&ZY8CfnSS3}KM#`=hg)oaAwUgaRBs;q1j3HHYhLOGZI zd^}p@w;#7`vq?pI4@vB>yH)iF{_PV#8@oSko_@BZM9O(AqhUIO6w&=g&Wl} zc9q}qTD31IDP==bdDyCRSuKB{k4%E5#CqHLyTR6;qc!H`6Q_>L$=ybK44wxt*|%UK zx-Cj%H-H^`D!)Z+3?A8toODW{Qzaw%&6|qVjgPqTM*Xc#*w*@s{h0e&=jmG$PG@*ng}gRvMR=oR zG-axqmU<;r@Q-aSP3ry2O5LU!AlK~^it-8c#!N)bYBbP_t--NqN7u{v{K+Xx_P&EB z1&&@E7&;ncR|~yWhh&Cf>wE`YoHy4}0a3ylXoLt*(m6peO;Q=Y7D(%t0a(aiFF>3P zsJw1OoiJ7Bth7bJ3M1&tl|wI*E}ru}uX-*dz^rExZmOsBuNuoSgd>9p<%vcqK( z;!g@LJ^Z%?J{x;5Z9cdWzQLa3)pO=-r1(<1JBsppLtQ67cda;b%vwp;DV-%ocfu*t zvc$;|hRzy+uu+Ik(M2>&3&@?*A}HA8_n~%{q74MWha_Hl7J<6~Q3Knk_$<&U)tAe$>czVz6!jnq_6!g>a|5AqBrB%#sw zI;4N<8u4IJYv1x*rQeoDG$uTlTJjQiL?aPC6L5vVyI+F@pDEj&BJUvZ4MQ4LA%|}{ z%mixJjr4p4b$iDvC)9ffFz`0sn&}i++!EvyxrYLPQPaAP@cvP6>e^OKddsy}iNCY# z0%Tc6L-`Y2wLqK7GM|TDfVCE4?E#(H*9WQ<&G+M9lV~lF;9cm zbvviM`@ELwL5h_!ZlMsrb9Y>#SEJ17HB7#Tlb;nYK&Cwgs~{Co6d;Rllv_a5I88$m za2{e_9LQ~UbxG;T!N&oH$-n@W5MqNb8631|$}6-kE41Q+gS~1Wwp>6YugCBHCTtMXbRcKWF4&Kcm!=G<8Tn$v6zBnDl`&HxtbB`|6bh)tx3r0 z*&V>RLLN)gMPvqV%_g#GeJ`D~e*j^;c8%cT@d z@OQ&wN^;j9oVgjZDxx~1-4_%r%dXa**o|B9o{+joM3#0|WI<+Yfp5nY*kT*12tBE! zvXcJq_bEfG=r=l>_37!h6`tyNzbf4{8d-h_pC0jZ1ELn#9ze!8S7}QL^lH<|!A~HL zeiF6Dn$U&vdz;^0SRK3Yu(E~*%xYu>FS3kN7N48+vwp5jNwXE{;oPhdLb|nfw2rNI z?&tyVX5o|Iu~$+Xj0}#I?^HlE(hz)zet4QsZ5I!p)n#p>_>CqOI~f zf$L_YvOu4(s{33~&+(AunC!!y;SuC1>AUfYPEBpErp{a2KJ==>NiLW#1iGFLIjP$J zwS~;KC>%KIaMse~qo#jFv29ak!x#_;G565KlX!$scPO5&p=w_2E6F|Dk3EFz--zg% zqy=txu}kZh?C{9TbRg??vhj@$-;iY=Ypx%3+7|6u7RvG*u7R1&^?5B+L>1m;nqxRm zZl)*?rpw!aJBz|b!bO>s@Laz7RAxsTnef^I=l&`fbnCr!QjD8=vAtT;mfRD~=pH z2tRiTTc&Z%zictI6P#bS62X5=_3PKQtzflF1oBeFk(VJnt1c*)qB=Gii@nnjBA#Cv2#5{9vWf~y3)@uNDYRts!VbU7=a!9_dWKeMxxAho(klFMnO#=LQ6s63fmTg>b*HTU4upI|8KwD#d!$o0pZ; z<)Wzb=*n2Oa3H?IljuovjO5u2lw(yb^kLGqHQ~E2N$1t3BkR*!>b+-CpyQ6F=9T(D zy=+rw`nkn`CliF$S-@CX*TrT&fzGR%uwR`XR9A<}j|R`DW`M6W<;q{0dBt-qTs{== zhdF_paE=2nH5Y;4G#XR<@18rSWqjkt;}Bi_gBZcZA;9*MwJslEd3L6+0%~=F z?B5_~kCdzyp`S36Gsu^qTr8^fu+rQBH1Fe8g@zQ7GG0jBLAf80+_pRcKeaVd0wI3T z26hMsIH((@;d!Q?riGw26(rdYPF8(YttvC7ghG3AFsC8VS3YDZjYUZY+)G}(R6e(r?uC^&SU0P}vcjZAnKd@o zdk2nJS!BEK%sav}$3`GZo(6N^V7JcV7r`4$%N2SVg2Cu>G@!Z z*^w7m>ZlRiWE>C-w8a+|gCJWsF+Effc9qd}$3)s`)sDovW9tyID#6x3j@j1*XNxV~ zk02Yec%oSM9MelI4oC+IJlRpku7!^9pl?fet`5%m2WFrEVgW>*sI&v*f=MZC8)=hv}d-f-@`pUJNbf@98Jq&~Nd>Ql zlTkzds`wLjQoS7+4UK)nDs3)udVxT!-qV$icAC`s*yxRaEuw3%*jRl@dF8$LfvH5? z2$HgQYGkb``a<{TS3v)eJm$;G$D;A|Qt5D67D7zs)b*&Yc{-M3yvkAx{^n|6T!f7l z>wxU?i+HlcF}ZE8xuBUa(JA`D`vL_{PRILf$jMVL54OE492(}?w+zq# zjpL;$C%b*!cmL(*A^&|MBGTz_b`%Pag|B2^)eg>bOE(3iv%GEl&MbXe%*$vKrr07IoT0URgkeO>J5#iLq3-~XsN-&d8Mra8Uv zV~iVejOVVXX2=x=Y^if!ZThl$Au-FK=k$paCW+(X`l%X%kL$N+7t_jM(NE;xh+ng{ z=E}L1?k20(&&7}4;g>{y1l^hSLE?f(9E!i^=;wc93=C>T-WNG~)MEtnS(^Wwf?4yaJ=!WNeKu4< zpwEVqS2L$X zpG#qFP|&gNxKAkx)s{upF817Z=@U(GF`;u!ud(;PB@=PU*gLme0Aa%|CTfP8P*+_v z;-}WLcItf7(ob3*RZNt(D(`J==Xz`X(TI@N&m0T+2Fz-LMHd`feL_AEX0C9QXZ}H_ z9)OCSR$iF1O}7Um$RA>)gYN_RptEt8mQ>cEKN#W5v};=9uF;?O3LB0CT^ZjUYS}Q# zrD{kheZ1&`PvSgsm_T$^#Rk#mKww@ok=cS@409e!AOy8&sT>W6~a*+UJRn2Ji)Nar#Oile4diy>=Mta(ad9j>jUCzhp z{8MM~K>3lE7?x$6+WQRbK@%nSeu4P6DNshsiiR;qJdd$&MY(e@rw*vR+~Cak zEVPYGs{|igDj^KdsM$jyV#;^BySqV2))b8P&dJK^t(5BvbEw;7 z>+jyP$J^%Bwsrt$djk?Vt$uCLOc}r1?R%$I?%AL`^$%o)Lkf#B^Ofp=cBID#*Qonx@{Z#sjas^a3(riXZcj6lXYMs$!1r|f;hbp@%XUb6 z7fY2Ux*2}LAoYsJhMku}4t5 z;2OX*=&HsS3uP57-is4+X4A{^Hh;^*YjGU?-jic9FV^F#GBEzI4pJG=_-64RRh} zqL76dk$|**4weD&(?kio@n4drehUQp*c?gyjf)WhT=JXe4%>qUGh(p9cN5A?~~O5dfsWtY3RP$W({3LbRE0 zXa{nguS79{^ffJfOUt`ac%Erl3;sf+(E`qg)mvxeuC7(JeF_*y`JZ*I*MZ}cM{XQ6&t?ZBEJO2J!KJIG>>g6!RhBTi{=zU+fh%Up_9?cO`LG&dI~oU+}S zBdM@hWvt7o9xbN;%PQXD9*qRRf}WdPN91`lihjw$teuzsQx%GKK)9UfZw6`ZM{jmk zkWleGE?Whw3Rrsac;A=Lx8Tct{_djK<&*IY75uv)R4QBKot>(PDM=s?w3n1qCHU`o(Ke(?E6AF(vfSdSnTvhp2CAYAQK5eyT&2 z>(i(m^(9R3(`bqKt?^0)9}}r`5x=n-(RY(3CMMNFSEnQ{K5n*&SOt`QAwm4z?EU+e zSrCGF|H_XGc&VeS4?H*Da5mE=&z-Yw`{{a`u(KV~Q}7*L0pxAhdfgFsrEEm?D=O}N z@O_U^)bNkh7s`bPax@fppN_GGun6p^lPVe}C@88`u#dbh$~em7{_UGq*UEi|r5FDn zd+!<5WY=|#swh|x#6|}JL2UHil`aATD!obXLTI6iC`Fn`Zvp8Y=^X?#p@$ynozO!F zy@YS$efyT@e$R8>amG0RzJHDpfn59Ad+oXAnsY6VdjK z8%LS&zS^=|(`K__LGZ)P@jYTcI>s79eAA+Km3f>8c5rtHl&^}4_>iRZVwM?A@apf0 zIu&oCsG_zh4Fs}6lWGP9T+)g30a*(av}0Un72_86t&F^PnHc99#dG*pKQB}IUc1&S z>@jDa2Q&Eg#>*wP1e2PcF4YCES=gHZW#N!kN?)Vm3wDW3JQTgg5eztM&*UoUMGSO3FTD*413g>dAy->=mWEX^@ccFsy1al*+ zec`e8B(yt*ok;WWNBR0tT9_&M#af3~yPkp^a%%Glhj^g*hqttCs!=7PTygp&vbYWN&X@lO)^;dG0$U@D6R4?2+Ru zx`PpCZEHhrd6u|df+3b&l#?3>Og>`8w2J#A@jFW~L+Gm84Gmf4G*@|%Dlx5MK8I(v zgFA_^mjb)<$o@XU77M>Gx=#y&3rt(o zh}M)cY=c*uDi`xuThmCGhJfrBN0p&v96S*+C%8a_8P3xWu`wjJ9i3)oW*)>b3BQMk zd(34Yp(e#jpG(P3yL#IPH1l;q-g)!ejyyQo@;<2_at=NCIsN_tD10a)`q2niu3Q7(Z0(4Vvb6VJ02wOXV`rXQbGLNxo$(P&~R$>8La=@$+lqF36{ntoS@A2_sV) zFng{?TWl?v>9+yVRib)--LPS1!)LWo4-2 zAfI7DaDl!EDdKM*lx>P=I$sryBY#Of;N&x~2aaw`ve)_>6E=xBPWnn{y_#y@kI_+C zbSytpm*R1ZJ$)D*_Y+Wt%-&reb&{ak7dh{pgx(2E$=KE+TMCVGKFGp;%{aX^)b{axSW95UN zZZDdWK!hgw)xaUL(J>szIV{tw1Y6U;0?@?xNUQE8k#ovw>$Ry^Pv1XSv*X=Aux0|9 zPQ2z59`G+Yys54S)*ZA$*Y$xkSE;MJ( z8jKh%pVM&}pbe#ci&YJAT2B3z-Rf%FY}^8Wtfi#mA|flGeq-PysdjhZ2i);Yl^9(f zsy#dnF%auCkADZXfzhW9tB|sAocO+%%%4Yu9p?I6)oXBLCJR>?D$%X=;L-MB(%@gf z8lB3*#q3z=yD#htWs1CQzyPs;Q(U!jr!*#(>@134_j>d+9r4BNTv?rmh?THbFZ3G6 z_jAar>#~t&SH#_J+7$S1bAFx;PHxPf{HBQ^y@+~vm#5R5`<9k3W2a~8M3>Ri?qO=0 zoClKc#cuo(-&v{>|AV(46Z|9hw1)A^8fd+GS@(iqs5jX0LaYJDvB9U4{j8M*@>Eqa z-lK}efrIay#g9AtK9RFeSoRHGScsG{eylpnv^>t!9lmp@;#j6|C@DIOr z+pq4y?SylCQ5;_OYbsfaulRIaX!>tSj*{WLBt?hJDugEJIr3MuF-AUzSI{ZDMcAT; zy9vS)^(k~Je(KwG5A%kg7Lnzk&Bvig(YBB0>;XT*O6u=e_k;IeL!CJ+;^3XUfA+6# zT{p{vx9P#)f{^NAYL5H+q<|l+qyCr21{_|xSV>8#$wp83(Ae;`1xL8ffU?o7nAS~> zKfvXwoPzJa95Haq<%E@Op}D-LuUqt2_<9_AYEy2k7$or@s5k~^X0iOqGcGa|KKU15 z3xe|i(SmwtNKlLwu;C3_q2_^9LnxX1KmOiD3yOcuPCzF4pC8+^|KE@QO4|PaSr%>v zVPVd%7rka=nlRWwDbdpu%fI*~1bb<8Kjg(J6MkXnAqZMGpa`4_y!(a>u6j z^#oC^XdLoa6m+ELi+K$eKYyD){}9y{Yp(`of4oEyaC9Yw;KW1L4DyZW7u<%pX6;t5 z9Kr>M%0sK^q6K4oe?@$s;#eB>t_n^Tki5E8vmOZl@aORT;{;f$;%H2_29_Ye8^j(0 zMu0d+%q`4ob{K*(R=M&FP?*eQ+yP?cKGI7I#`mB&Ohb=7rCQ0iEAp6;d2tsP!ZXIH|sJ;Qc~Rj}4HSF&~4} z+cs}m&37lg?a*Q8jvlXbLTH?%{-8qaY>lM(Uj7zJNgL)686DjYCOrkOp#l-{iq|Rk zzxAe~<#Fdxo|AZ{%?NvM#aIDJI_lkOVIswU^U5q?L^_uv^*sIM3|?egkCaG)j#;di z0_BGsq=uV$R)>sIj>d8-iRlHOc10C2S!DGQPMrgkq?#I z`PzcevX}y7oOPvZjz86Sz*cvAdvp{X^&BF(rsK1rQHIOp*S={q-HbPzMA{D^g)*6$ zi|ecKB&Rf`X~evn-UL%4<`1^DEmPdx_T^A?1djWW7LdDBGbW;@2^C56VZ%Y&CqI8? zl$fk2?XUYQahWetP+~_heZ>&^;i_S^2M_h1+1kSF@vy!fL?PGP4Lhw+Jx{+yFHhwI z3sGYewD|}3T9R>|pT`D9Np$suIdSXj=Ej@$KAK)rQz}d5A_P~+3wjPmbP0uiBVu#d zjX$^Ghifx>f7Ne{0lZxSZRXm3Vf%Ud4tLhv`$~}p)ie}uq>U36_BX<3nT7AEi+8lP ze%TS<{XB8(x8x9uPWIkTdmhK9{^?T?@7lpy?KG%CD#!5|!DLKPW-z1SuS^J&#Q=K; zti!kXd0?w4vHqzQa-<}$7(qmuYTPx_<#6&Ooof8&Pv$-himWE={rjhn`$2oRN_P#?tWmk0xGq>9Lg3!fRgiLOxWQ~t6O>#Sc*4?vJw}$KkJ)6!1V@92?W5y3NzI|(j+Nb>o z?ed?OWEJ^e>02BW7L`S)1!TM|H1_~@1ud@Ea0(K zYHx2(Qn$GI2O9n7OTD)HyJnfg!ifYUqmAMD`<7D3q{io6*5=(u8Ndh(;Ce<~YBLv7 z`7o)HvBdBJ=o733E)HX9nD=Bw>0WZ9c^851%a?aSWUJ%e)IkgDm+M78!hP<{&t-L3 zW#VVoXX*_X^J>Xl>$Cg*_B5)dXJlC|?-bw2v{-hQ#d&mA-FJ#dQ$g2@pAeEz7ML~y zHMV_U?c@v1`Qlz?91Y^}1GZjs90<)oB<|T)kCGTRk0f=HSiQ9FyPBB0zwW&>hN@b3 zXJ!|lgqF+v2PXUHwQwCLvVc_s7VR&Ig6?_`^c%{=WOE&)%t>j*^tiZ6AK^U4KIB4s zuLON^V%q?QjkeFzMg@Y%#=QgCI8G}c5%=g^oUi{!U3DY3^|}nZBpi+3QL#~$@mB18 zhxIXL-eQmz8fPE~Lu8Z{70AN|sd|gO?#v2hJuF3^3x=?M0U~lirxE=F5(f2tv!tYeL4Z2>Y z=>!>rn@3COjWY0VY7ax}tS~zm;PwC@TwYp1P!pQI!P0#lqkEV!`OdJf z7W1OoTU-_855*71tnq~Gr{6C%!M$c*5(i-V#IxqK!n`s70^3P(@uiZt*awtC)`_n9 z!*{vy8rirAeG=mEm?Aw3s6j9?uJWab%eo5FiNAAF`SZ+hOH{c&~7Bja~#c` zKCi*$5Vvlau&1LJj)c}7RLNJ;Q&XFnaYs$QtZ`g6p+JB6s={V6!}r4HXZQh1@B0P! z=0z-qzYFa0!EPCgX;gaUrHdoq>Sgr)1;-$~Nd5W)wPzg;o4(Yx5dqd<_ z$D#MU*u1f-T#z7UF=pB8stzIE+OX@Y5N6Jh-z$@AE84;OnQ?Y^U(}C=d(^(g*ni3_d51d^A9RbKWVkn)zZl?l)9+!Y*$o zt7_=5wJkxvMCd;#O2}3tm%Y#D)zZX+YM~Uo~l<$aUU7ZCCc?+1WLy6n95jO;=G&MUr}_y z7{=sj?q(WpY)oFc=RyQH?bGb?s^bh}0W0Cv+tDd%C};>gtIr(slf_Iy&k$Nrp`dX6 z@BenC>?Vf>ndVhaT_wn0*|X7Yld zw$69%WzARqVr7*DRb%k%t+f(Vy+_Sl@*R)Nzih2l?`MpxLu@O{c>el0;9*MryBtd{ zhfhi5o_}2mgZZ71r*i#&KgJuFk!9rSdsTVlgWOl}XjY(T0au3o$G**H@?DQUf4aOY zD`i-?aea0-0aBZh5eUd#@E>%}7F;MR|J+b7_#f!uj}Ar$lpAHYMQSy;9G+Q56*HgG z!KXj*H9u9gujKOJfHQwDHm-c+(PNdra<`cWix{`~$h9M^tj`~u|EFd;9E&c(4`f6B z`c@W-k?M6kBN7})eF1h$N4lRT1D2&_Qhz^b-W`ou`8Uxx1pS47ruge*f31Agxh|Yv z(BEI_G__J$zYRY5yBv`UU8noAZapG)Reu4+AFn`&xH)eNKKZ*$4>*JW`wRbit^c3b zFlWdBwDVYKPpT!Ib1=x>ORi-#J0_Sr`q**(x|?FE(VK10g}N^P|JXhm3Fy76v0vgD z0Ph!}5F?piG4%1B#HCsX$(fl5>iPmes+?k-!qa`t>T>#u|1Lrd4~rn&A24!hg=~KN zwsQT}w%p9j^}C#$@-VTGh>Z=R>u)*bqT-`9tqw{5Y?7x6d`JlHljFOYkMBAh)(#Y* zTdXo*YQ(8nhz>C1m3EW7BZe_^?SlzIvBkw+)P29tVnE($kZm9TFEwRnUL-cO#%(QH zr{?BeWf)xk$rGPCSC#wTcuf<_MlYLubrl9+6?H({R_(#IB0l_x)H;Of|Jj3OFL5Hk zr$4IY^W^LG%kcL;zYKy| z>eyp&aQ;4+CbBphOwy>!dPhdblg&rWtTxKNpwZeHd8sEaU+Fb?%zIQ(MS|?2#lP3# z=!Zoc``*T^nw4a!!os5c;~ypTVQs4$aBO^p<%%b?cM6iKLtnmrZArwDnwq$~D+ZS9G$N~;TPz5AO-dtvP}yWk z02^Fs$w6IEb2Fo$CtSbsCq@o^%qR6HWPrQolS3sqpM9TxU;dHfosc@nd&$D~HR0X# z{QR+f4m)PhM5Y3>F|?b2^PHqMRaCJv-1ih!fICrPwN*D}|!Q^ysL(7)$jK1LYgX+C_!3tDvF=s(O z09xBRuD`eux!u<9s>|o`<2+UrI%L=ZZ%M2y`|2crx;`kdKG0{DexO9aJ)(uZYD;fG zvXzGLaH6N*6fQ3A#HCC<%}AWI_67W=6)e zADGpTT8B2-R4pRN?zX68uO(*h!~Bp={i-^dt?NSEOpJ8PC3X!MR=o*#nhI-?9a;fK z0{$zB`mf{A?z^j)qHbq9v=&r)G!JY!{SI`sIT4I|ZTM-Upub z3xd&}$Kyzls%Q|=)?+?VxoI2s!n=g$YU#bgPm}*_|K9GPQ#y9jr;G`~e+M|mqu`kDC4Gko0vH_4S|5a6?K?q{ol+?vr>)8dJYH&QZkJtWOJMg@ zocE(h&^=8di_Oy*FeRWZkF&ho^C71SYuuNLwOUIw=Ri5)%)aO5b6{96-H`-;{WED= zMjSdUHTfCfl_Db}1u*y|o{m-s5l)1UO;6@%rxx`7(Z01{#{Tdj$_b1^PqP?1q+H8Q zPtUEm-i_Fuqdd0W`qlO&CPu$S1T$`zy|+)a=nS&&L8s5tt(>ABuU}WJio3q_3rW1w z=(uE6)&cyYKOdGWTEUk1DOhZv5;HUSHm!$!eVsV7`$*=yTe-b-a&IS& zg>$mAfjZ-G@AG6J*p{SpVr-2eap`M}M{5>k1(&bnU7hamX&PC0>dwlt5a{K{7q?qj zf1v4~>@N5EwbE4(0*iLUoltzY@$d%sZAwP7ke$rgcZi~f<2E6-osVmv{UK8&=EI6x zsVRFOvN!XvLQ&SH(Qy3NFV{FM!Xs@QrB?|`B@iHcZ#*QW87zs8j%q8pWffAPM`VUX!e;~HnIJ7JJJmJT-@!DxsJ-um<*vj`Ljlg5D zeAoqTy!y&00sRV;`>Za~rfQhRqXqOQBh1QuH}mX-TZ6@KxB3RK4%c*P3qR|HR$Fe% ztbG%4*h+VHd!yuZMBh92P?T>G+vDT5J))R|bHJ*S?k^lB^PUr(QvFt}SM&094Xh^e z^ro@P0%vFMs_Tk#6^P6c-ePIt+537Ifo%5d+yUF{_4G>wu7Y=}S!+^c>>;E8vpl zccW)%?7`dL)_=5>ZfTff7#`609hO-@oao#s7E32+NXgd7&z)mtFOpCV;k!c!dD9qR zNm_L?9rqO(TQ0F1xWl^RvgGj1^kMT3@HO`PB!M$D2sx-$vlF!ME0UQL1+i8!96n6&Y>m<_e*Eju1pLrP1+bi~SDLwp#H}5@}J7{N8>G z8SR!=9IcoS7>mHrz`@DS-G|lzV}>x{%W&SlGNT5Eh+R(P;TC;n&Q!10CvJR_fJLSk zel)ht;rQUOW~E_5d@n^+z)fsh+x;)Gv5yp@3tmflMix(`$%cXR3&^<%W2UFtiU2Rz z2vOio{Zat~zj(k=(pv#$P9@`yjr`YziiDrrBqD~^CJqGq2F)7odv^&U=`HueXhCD| zr@-^;mL}p!Rdgspbsz>vW;6xy+t~%1m0#kNYZ?Qb-Irueg4&LC4rV>y2;4 zs#;p6Yi7rOHV6AfzTOeQYoK8Mi+8ElD& zCf#GqT6Ab9RN*M2iOH)qHE;^kb5a1I5Lx?QG%~A}uvt$>tSay$IlhEtq?@BNAp<;k z8T9O+75@*btg!S9vq9jQ&MoeOq)$o>e7@99M}~b76Sn}>(yDP>?voX#=5Y+ZS-;c? zKXZ=z73+dzBRSpIQ8QDM4w$EZx_gmNd}06Uk<{Fmlj@*yMx@2>5=4ly0xuG`8N@6w zmkWrwtYNEVTeD-`X9^1QGe0FlbZql0qJdB=wkwQYJPNR=nuG_=%JjUxK50-q>p`)X z-_Cq=f$(-|O((9Y1+HOgujkcpYhKiP&Q-C zyZd!vKZu;&xcAGe1O80BX1%Fe5~97Mqo`kmh=_!)oEQuI6NbWwHLP8*iZ{D{eP8P? zwTvJlIKi?^Ee{Rxe?b&QVxt8X^2hi;fj%#ip)LY|#rdhPMl(S?U%}*>moFc&>%Dvi zE_UGNl-yYtPFLX)to~SDadOQQ2zQf8aO7pOo7Zp4L#a2B7WcIBAk2T~93>-$S`PCU}}ceBRB2>K+{YbXWV<3{_DD53;-s1B-B#mhF+^P52 zS0qX*qFw{DP@Cte)4D!7sk`N?OV)hLmUG*o%ufc+BA4Y6^>b{5%Qdm2bvB2#2m5=I zSsiJzoR$Jc8#Bs{TYc5v?LBmNmle~F-E<0d8<{_Tl%}_aF&&F^lX_RK^eDcUELtq) z_;%L!0q73Ns9renB8{GaA-X^(Z-wzG9iruq&-auU;LLsYS}!(DGd4BJxrFE8QyT3H zNSCF?eYMwXkf~3#`Bb)EMNcOlIJnI0w`Nl$Mc7v& zy|7y&1-;w>(a)YK9Zo^{SNafuOF4CJND08I{t}zmD71@lxmvzYQ#>-X_@M{CMF>+d1y5~^J;{y*7-P- zYFmR85`onIrUQy783_Eq9x)_2D>K9U8o9EFF$`P@(H;Lp!KP3o=zX&+N^_iCJ ztz*|(-|%=YoZD~L2%UYTUHlp?c1psRT z`%dfzFs$9L^&pY+^7>jxPDjVUBy(JNpZ_;#T@if2RC1aa^a+$X;*N~6K`z7Xh0ah< zW&pV$4Mi&1!Wqp^K%$y8?DEaJ-&8py1xz9g0X1LwQAKlor`0jp*98;VD~{_!`lFfw zW9#EC*pgV+-_j^P{C-ONfbh6xXvl-gKl*pnNsMTlJS!x>C<~YU$a&dbPvskc*fHr zSO9a=HgW84vUc!zX1-p%lIirg%}U_vrhiiduohV*bN2@foH;Vu4}}(rS4X|2Vi-OO zji_jNtv53df3v9V?H;+WoD8>m=8zAW`mVwo8Wf~3x6zyH2@_gl&&gRT0aZ;K*(O$G zXL}*ryOgU(&tMdX653XS@gXJ7Ew8aS(w^<-5tMMT9U=zanzVgjlwzrM#-Oa91d#AI ziG9O^;$;Ey1%7VsrY^aSROAwhV8ElwJ{+FhBsD?)re^uh5CNywQKr zH;1PNroXb%t`A}13&DSLx#LWKk+=4MmAy*--`J@FQ#%*{0gE)sQBkj!(k~V>$(8#- z2U4E-516n2k@x(&p9iH(PX6l)AKKYjvpFXRYUQ3kyPaI`Z;Wrg1wV;MB#aSk*EE4ShY#py06 znZ-{7j-T`2ug${f*||+0e?HtbOsN$gJ@>aNp;q<}-^PQaX8U{DZv7Qn6yLzeZ{BPN z$bW7Ts|F8iy*xX=qXlFK^YeM?AfaIptcHS{)>=BF5zveB^2j+{kyj+x;ioK^xU8}3 z6T`1Smm`k))jc=gp>FvcJvaBv!a}ov)j=vcjYi-#xFXpQq@{pwi{o|)1aVTCF^x`M z`sWp0LMB=h-;xl|H|~!f4miBVP@6P)(T4fsBm`BWOG-+pR`lwf)d;WBG9iL%Snod` zbh2;AfS=H&_3GETel?MxHKffC@*xta92@iK(D=!fND%sQI|-RkM)THNr-tTHBMB8V z$QP`x6D0jFwoKR?7ywmECxBUah{ux~ckr=ehaoTMq{YM4i}VyaXYZBR)K;Ey5OIw_ zy&>TGa+d(-hFbT8JG&So8zjLwd%_!L$U+2CK|s2l%7z4|-DR#{k8q^yG>%<1R4?ja zOC~58{Dq-x#C?gz>$JCboaWHPG)Dt`?mC`Hrv)Ca6+HiQ)vIoEQyQFh{_vJ=ZLDNRsJi65X9o zdGT1Xb2iIidd8%!16jEfWbWEnisl^`eU5z>+@RzwmU3qUEAINL+!Bd_#T zzHY1j+scBDdsRPvq>$)q9x^<>GA4dc2^J2>oQ?rX++D`ya1vsB^8dx&_PlvoZ9H1+Vwhi$Ze`ES8Q zB+y>fqHTGjPx%C0cjC`EaI-773qMb%v9x~4$m6A=CL6<}&l&&7o-|p=|LB$<-l#ZG zJz!{>4Cqw^e22B8K--14*?sJTMIVB7cClFPl+O6_C7x~6*|h^;s(dmm3DZeX(P-W@ zNhu!QHG0Zt!FT#idS{~G#a=PM>KOAQ-Rw)^(esX9g_16!{zeF8t9=!}`~7G+kEf~S z`ot{XD?l##%9n22-$5x+L;+lPtd}myJFLMUhrFTZH7$Ydg1+!3iT3$f#r9X@wP8H$ zZ`U}?2~gC##@5yzA^GP+{wfZh-YoymXOw7!`Rp~M|06-=lxMnVUUR1%`|T_ zQ_~J|{S#Jx+p&rr0^CuDolq;_6M43UT00(o))hN6K~6{l%U`PL)+K#$N+FLrAb6Hl zYp|P`0fW!j2LU3X?OllV7VY1oR;dq)&hMLVL#jF^2fX%&PMp^4-7yWf+Cae&r41}h z>#)ra*@4j zIFCvEawL|FOohu}N^ZDrP@%sk;px_?fWhg`S&QL2rDrm4Xw;iV0Bj||Zu>_cGbZ|{ z`j7(dvj1McILKbu2joe<<3Pa3`iSQ{8Mj8jvjVhsonGID%V?4#$~&1yp=$xqgkLV* zFstK45)33ZxMO@C=`9=PbE~2Glez73WRl5m->L^Yquv>EHLZ>fceGrt9SsdFTb-;} z%I?K&Pv=5I1^W#@fYd#OJApW>$1&Rh!ftv^!9!?s9tZ9EQ{g8)>8UY~JX-AmX zOvqxA3d!?O)lF_eubJRrI^kDcJ4EnbwufW@C7yG2i)oZ{UgLND~DE^)gt+gm*jjds-A@()YhE+vOIe2(|(`P{o5 zk7hkgVKAC&{@C#aFCwYdCmELfJjnymyzS4djMEIdmsP1liFM z)1QTG3ukKh5+0r-v*o8KY}{Fu}3pwZhXb%)0mKCV5OQRwo8Z=R99iW;6LJ zltwg1WrjawjfjMDjRU=Zg_7SZ{&_O5GN}CJj{5oO_M5*=k0eqdH8KX;+Y(TvkG_f! z0#%+&^u$uVx>_Go`O%`i+Jq&{%*1SkX3+{|6TTRG?~C1lyCkAOS0T%Q|w{1VVD<+#7r7F9DPS+HPRaN_qr)Q$v>VUNGnb#8^5wFdc zrrmnkghCZ94To1L*nmsC040Jbe)_biZSPXQ$S%w_1PCz6aaGM24gX>J2RN-SBwe>D*C|0{pCj6X5;yU0< zr9)|i?*r+5_%?NAhy5h?m&mP7A!ikp;!`{VY%K%kKyc-N#WmhhFB;G1MLE74U=k(l zRGf_Px=u}AG|xkH_Rdw2KDgb;Oa@}KboX;+G{0gGIlG?uva?iNGDrJaNjh{W3~ z0D=Z}mYiT7$d`CWgMxzQPwU$jG}J5cQzx;99{wm>tVXFkA2s5K&brC`dK`U16)Ewj z?^73vb0ymGWsbYl=s)J3{}&*fa4r@F>cN(Js0*rfEf@XI>Q7=gDX^KB@O%a}OnpZ- z2Kpu@CfiggtYHvGfzXhq3)?no^uLtlY|x~<6dM&BI9uXB1ur$ayMzi4%i@4CsqB$jM^>)~+$ zJwmm7ZAkTh<^)V&?3%^$@aKsSU7DFJk2T<=2Uo}?P4bI9TB3D%qdhNP`1sR7a4&xB zYFJK&XKl3jL<~S8(R?Fa?hXVJAdF|R(^Bi zhf#f2Vk3pliXK-}$v3OYbl@{M@oTFySaK7zU-s}7>WgP8(rb+FdB|Trdnrk`Ah5HO zruyyu0k=%;>tEIFmhLddJ~Y5I-LNd-nLmzANMJWZ66J8>iod6@)Cs>X7%yCySSpPv zD;+U9CgI%!GG8Zyri!G)!81Q5oycw-OAXmfFb9QTqJ3qNi?yB!D6u#`_c-jy6~zPV zND2(4{%ovD7+s~tY)0`Z)Zxv9(j~_}g4L3=_q|F8aS65?gcyn_;BFU1MPw1=qc0J> zV(HSjOQzCW!5t{Z!oh)1j$;Q(l>`0>$zB;@iwtaoc4?DZ*F*Ix3Rh`oj4%rndZ9Zg z{sPzt^T8)3wAt8VSIe>sXf`dQG9tz#@_KS*7)wBy3OdIEsXfO{h7)-0m0a_V;LXIf zi<^-4hS`Az%WnFrp?ZT==!2K>R}mIu*XpU zcAs$H=7_$;xxZVhW9G(}x#_ff0Guf33CCu9l>RxQa>lzWhC#k`+z=|-m_vGpgp?%Fw=yA=$eo8+Hg7XOxkr3xM zc8Z^Y^7rFEiQVH@UYC`zx@;x;V*REOJvX{Aay3x|3JcGWphDXf6kw_AK%06n-OYI4|3;4sN*CU21=Bi|$< zk*;fN>qB>CS3$RTKl=m$FIhy`yWuhCP&B)Uv{;P-J9PJ*fro{LTeBMVBn$Ot-g>I3 zar0bo&sPa+gS&B%kR8wHkOq`A*ZaEYI6R9N35IGJ2@c8LWor+05O%pdePHMw$s~NQ z^0lA}xjY;?@Jh+-+S12GmN9=*9&dU1IJ!wJtWaY7Zq^d_d#65_*)q45@z_dL)|W48 z+hROEUwwssl)gjLCIO&2h~()e+huC^w+dUN7^|&qoH{05Ww6SNd*M-x_-$A7 zxQ*w+`b9P0g;>d91d$KxL%SP++sjk=`?sc26FoB#quq7!0W);E{=11Qp}pZwJ`gEd zVLF0cu8ACpNhG}f6Z#76PCy|~%;1F`f;57p%m6+_`A=SDdCx-MOU|zJJ?_^qV~>S* za(neb7on9}Pqde2v0L6)HMypfG9~g_d(dKcU_bd%?Z_+O_^%Ii7YFi}l?$|aRoz2E zaA6X3fKy+{;V%#LtCufxEs9-#%81^pBihIp)Q=fD)j#GHcS1bE?hv$ag*|qdAE7;- z_)&Wsd11Y47$>>~?X?gOcK2u=xUhL=GrR%O18?S@ODUkOjr1xx}#%)+nQ@R`#N_=oi#fJW9TqyO$)UnPU2VkNON=yuN z6R%8Ahfc=1>aP?Bn+ykLnh1&RRSv%9|YI5q+I6KCY=~Q5H%m5-U;G!)?E|VVJh?O(Q`;- zA#`$DUX`v#zEHAZuY=OR5k3mR&{M1kRB#W=jHg`<#z-PCCp8jKEbWKg2i;BBgDKb# z7gk1j?08U<6Q$Vn}I7onS^|R-AC&@8wRm zX0!Xv+_>+1k2l7uTw(3(omy_RuXoZz6)vi z`LwaP`t>fbJu0+pNulEo7DAlS7Qr0U7SQ?L9EJb9x01qLs))Y0Oo`-;PU~9Q8zm!1 zv4;uhh4yA5>d(xM<})SUBh8VscQ5EU73Y_!3K2;na(Jha`-^3NtlnRv|>7Nmu&faUFD0I5&VNkWy=@l zf7G5?vy50xq_Me@S{VMS>%3FYaYm*%YL{@C$SE*bY|qnpg6P$*Vc`&IyUU1cA;0Z* z4ks(zT5U$JD?2SIs3aBk7CCja($3+J{6^e3+oLzS1ko_<*0va@9)aftY-SD8DBvjwD!^o|Kt_cj`~BDp()EUajdS7%avs^R4??}-HM-L z8x!9hj2oWTPgCMG{!!rkeVy;`$@Hr)C(tvlu|tXmD(|IEI^T8 zlZY0wA&%)#jG(1;qvCF{n=iO}XbWi{X@qt^@$kDy==g43+@tRSlZ2+h9lME!N}2P- zLiFGoWWk?p8hJw0vO3k)Ntr0@*%R2(8hLvVzMs;@- zEpI(Rw<@NIBvfL^!kmPS=SOVf@q;|GWYd9*xzM1YT=|gW!3&*M#y2!-EFD98r&Jl2EDFmWwMjo zxMNzk1UsCPvDh{(7Y<~lJ3YrTBsqV0F~j8P2bhr=qtHx+JMCxYhx}IcHWL--0*lwZ zf*&_iL%)gbP&;o|L@Ci`o?{ezP1O-yIFh>CoAEvGHK_iSR6y5a6tz9KCR%DZx>3|9 zas;n%^b7qezbd*#o!YmYQXV_>mC+{ibIU28=jpV!@Xe67YYU=z5m$Bv)cWnFrJYvXKa<=L&JqT7%HW~DTXi4)VFFBA#JX0vaMaZi)dEg4*Ke9a)u z595wKe>SGscs6>xri*Y^KaqM!mMCes_j1b*vq_c5SFCg}r5N}UHu#~fvl$;1~Y zEnANrK4*+L3o01mu=?nyyH%x1GArqXeK!5Tt-^cDp6(sk(!L*7<;QcTYG`v(>G$;F{dPNt9O7C8q`=2oKSE@>T*m3 zbtA8isJSXPmAw-*16WC_vPg_xaaAwmZcsN6nyn@5=biGjbr?5Ko*HfuCc!){6W;*iKR4ULL7 zNRrbE$~s(&Snj@}rC(D@tc|fJ$yTpJV(YKq;MU~d4Vrhe_Sb)IKcRv^4zAQ$^*T30 zXGe_OX|7BPRDtXGq#Z;iwusSQDC zDCo@0CMzEXR34Y{v6yUW zoIwinGTC9X=X;Fk0Oz`NS$`L#*@d8+Ad_jwU#P|9XjI~mofR0qZyaiuJNt{d?BQFE z&k~R!$r^ln8it&cR3;vxFd9xDBlq_vemeaW>!B0ySj`XSYd?ia&Xf&moKu76O}R1^ znu-mDW@@i(zgx*_yb^o>mk`G3aLS$8U0bUq&G$5*qIiDA=aAfnZLHE&Hl^T`!v)G+ zN!>NMNVCRXzaO3x?Eq z7bcjOcJHV02weI2HG5hhj!2qs6c(=fXz$c`@U%UhKp< z4u}gCMnr#BkT=AbmDY5s~yxr?l=-Msh(jW6ME58Y=VC)dyhn@qsPMUB9-GFLk(FH<)YLR*{edV zJ!EdU9RgaxFdKvJ=2f^D35_7L5lc5`C`8Kpv#@Ob%*!ud`pY0^lU!H=Ha}1jw9qH< z3D6&LkY29NObT1H)_ij$Cwr6s|Iqc`QB8GS_b9!0P=XYx0#XAiy@#S82o^v(p*|Q| zCUGHT?4WOp*rGcO&*(%7IG+sX{~D>;E&>*0*iM+Gl81G_aEVVJhkrJb@| zaZ=6K$F~-(K4uDiV;=EU+|d-d64(wka)8zivWqEK0xE?Rq=pi{)AB=pPP@FzC2q@=#AUR-zMhe8+wRO8gZf8hY)^}fzBLs-eEReC!@h!Z1W7CY zMT=D>IN|zCN~;q>LOI4x5a#PeK*;3fyN^+vU+V%B^_LEkCr2H}$*S=lulr9g9gm*p zK-m-kmB6+fIWulDB&4p5IMN`wNth2Gdw1rFRpJ>4M9|IE?4nezo zvA9IRoQuIv9XSqk=z6Kh?x>9{2FX_P*fhD3d#dcoi2KPMY;Btfgg%R7#>4xu5dRTt zGoQgbw5e7b1-aRmRSD1h4j|2E*@r2ZPdQzJcI8c;>gtj*fNWXRFrxk6u9_Br6|01m z+cugTosddc^|<}B&QvouB{Rt?Eua118f^TDl-n+jppgiu<%Nz{nyI2gOUUwCPeyci zBo3Ve%-B#hgp5}=PMuDfkHGmekiK%2ak|bp@93iy9gRHjJ4KI&R#WV_FbZRw_&x3t z?8_-1ju`jv2fVUY)9oThIgcCnmpyD#(4%icbWffeR63wmFNw2XHpI zz=+t_Qv|VB!_*u6Afn?;ohN5BQ+za|C#0*PUMKURm8@mvN`%i4eG*Z;C@5VX3nz9f zZf=Eyg#`CBI=4B|H(t?^v(tkvlI83+xJyurgJj0+m*cMzQv-dBMPe-sb;Bps7PZx7 zNG?UG6!G|ONbp4zf`G8wx3rc+x)Z0{%cP^Sk(qj&hAHfqk65KNi~^lkjg~F#j66Mi zbVfUcayq73N%f{HpmwK4-E%&bJ##qYno{>l+UaU6h$*$mv+12_B^nQZoT~(H4fkR zbHY4J8j=#AMWNo@hUAm7G{Fe!TL?8JmZ)$_;??&Co5G=NmxS@p5@SA){f39~gz=tQ zqa2j@a#fn_ee}x}*@@^o8OWsrGyJzo8FY7S7+~kS4MAbyV;eKF1qH@jBT5T(bbBl% z)H=_$!k9(c`KW)`HQzSyiJPdPBaf)5mf-ru^gIU*d9ppTo&`(&vfuZq#Ka8dk}y~@ zY$JA497)(DNtY7qwihW*r$$F9(iHU5ibo&4$wO(nG&3zMlZTGLYRFQ2o&%DP1w}7$WZHFM9yY7v7>e7Sf8D*c7LL^5JS!JKf}kEbB`a$-vJ|hB^L#bN^iQA zwQtdjCt}^AyOAmPz~TGV^srTu&;AGg6t4@sJ*2o4ZIdTyTj4@pA0sGLFW6LC+BxgN zF&E!m-0JKKZOSLeX`;K9xhMGJuHRB}Q2S-tp=S*>~;dhao- zvo>`V?&D&@hf*(JNKA?1Qv4;)0540a6XHg+*cHV@Xy^hMD>3C0gSZ`zV4AI^)p2u%kTrTnRF&0)%;! z3QgJ48M_$z*E}EO_{oI-GT^1*MX}l-A#bK5n4i0dr%*7AI_xot!OexPt#wdpsO(1D z>({kR&ZNIX2p_yT%E|EI4L}B8j_W6e1LP&m$HW1AlAmluc}@k$yc97})&w9OFiV#6 zT;!`y069rJn|Iutd|HBgx=JuItrs+RKqnx+(cp~aN)XMH6MB9?;eD+b|MR_}R;T*~ zZjyR)bDvg{J%O&aV`0C#{*caKXm}?{iOD0rIIT4j+dTvY$Ltiu0{SI!3`Ng5vE-}) zB-|}L^O85JZ;sh{L$u=rm9DvNcS#fJ0XCb`vH!|)>fG}&v)YRO!O6!GfYpR4vTBGJ zvdMBDu&rJ6dq~^2*fMzahb(i-$w}!03Dk@R83~k+a&XK_vB7z5%L=oUt1y7i^e!6Mq*7nmbf1*uUBo0rQ{)XV3Z$cKeO`jcGc? zli7Ho!`*V8%CZqIc&jaO9TEKa9!x(kSIPJ3Y(~?VAOlw1jF^rY#Mjt#AP1Rdgz4X+ zEoFZ;uymfVABTRaivIT>VL>P(Q(6;xqf|SQ9W(|CBoN#MpaEE{}|QJ z&XRqVC~Pi7)Y@}jl7h2@cxXyK82F1>;A_xs-_wn9Jq~?;=D-$tG zXPg3~tg-C4oXO7&sMrLjwa3TNlSKgIuhfu^rUWq2DWOFYW}cl`toPQ5JCvAT-54?? zYlUbsEYL6|{>t3`yRp=5m@{_L4rv|#LVWg)Edwu6q~!RPRI%il6j{?VjhvkqM~Z<@ zSzvAcZt;l>H&|zt%o4kI*83i7u;@hKqH>qt(+79pucvgUcG`&hvU-Nb`QPR?4lQ=J zgmQL-9y8upU#pbCAvWy8GCUJRnL$`pdSqknHv$)<*-E8&QxFBI1#Za{)ldA9wu_G`^d!5lnR91#6 z5|{l4_+W(x)wuNL8!;{Wj{pMx)=dlPh#oaIJCI(aXZ9=p~((WADmEh&oJMpG8(C zaUp0wD}kW|YmM%QqVJTsqFPpNY8b(Br$KG&GP1)*bgS_qyiK{vL6b#!U;z}m!kw3b zDUWWF{hHEfu9nSP-e;v0%RA4^8GFuGA6ebkBx=y|Qtbnh__Hxui(`}YYt-@Qp+`aD zy|TTB-K`?umA@-jkqv&bzYJLt)s#pJjM75TXZUid!lvfr3x?ol3^$}XirsT?35qE_S6QT zchc5a1W$E3F0_ZEnY%}n4ib2vpgMV*%Q+9YRWn@xhrp8t zDalbRxz6j^yP*r%)GS*eKBDNuEe?T@W$8UlujD+T*lI;%Eg<9+Ky(A$XvqjEv;fj4GF~pI?*Qk5CW}19$gxjoSo^a-=kshDXRngi2 z3?VStR}&#obsYI<6D`FT^qfs0tiu!2;6uV{6V(-b|0G{l{TERCqlVr0yEqI`3lclL zWB3fw9+8YW)Gg?T78rVHY23mi@NwcndDQG)|8XmMLY*1Aghks!mj_wCcr%p`?+pF* z!-m9@Z6Vw{_Aza8cTt*_$@JJuZe0#oyhh5$rEu$z_W~Lu+e}UL{6hRR@h&@A49S+y zT=v^`o)0_c5QPSfaaS{t&?GgLo-+hu8Fw;<9XGyP-4>MFdD=kiIN@pde$ah<%L+s; z1 zc`d$cFu#rM$Mh@79$l?y_KOVv&+Lt7+V>;j7!w8teiVAzq?#vd>~wyA%nWNlp?l(5 zVB!Jb2h)cE3%wrUqfBb7`J#dDWxizB-x~U%v-dmGTH~9(8zapmwJetK+ZdrS<4hfh z*$NXMFj)&AJIZN`_#Af!>s9CwnS)fa%d5Mjw7U;YY0bg>@unOtcU&rpWyrRyIiXxl z@Wj9$=FEiP3W>p){-t&DGNVXxI?j}H7F^yrofPmpD{h)N>J!%^%U;jYHMzn-?Rd!Y zzqw#+p+1U0F{$aZ%jesw@-a8MlSn9uJ=a8rhL*l_iNVn#{FuRo0Ir3%QGV3>GRe{N z@jn-RS~d37BIC6X8aGW(Y?Sh!b64f!J3A!QqdZnaYss!Z-K^g$?+Yfm{>JxNhC!HC zIBu12J^wZ;(*d#~hxNP~s-4d}xxc#f^Qm5y;2Fw-ZJxM zQx1g|q~?>M3+#_r(jW|e$s#MNWq`h>FXf)B6>v)E%fx6QkT2!&fdFb*x9?=%_1)dt zrG@1ExU$Rk?Z=4M9j;J|j8p?KK07oWP zIqg_-aOfpurm5LtiF^P`W5Pffcr>3|yA_m_A&(n?8sYotKs($?e}}5cJ%lMc<$$CV z8YasQLe1NKe}a`%(GCx?g-Ke1&}yy-KQL z$)C~`z#G#`6K&v=a{W18Xk2Z$XT{s*^|-)ZlVOuMErfK&Q$Cc5>K+R-Z12?N(GiEy zH%^$c`@1!ox2m@(WPqa_Xh<{BYF2H8H*-m5NT-Me-oAPd2oVr6niC7LLWblge##xi zy3Hn)(ga%9^h!ooB5ry=$5bl)Di7D34$m|?x_X?dm|(@EiGcP#_9p~SmH7s$@>gl8 zrOO@Vz+G==P2R76lI3UQ9Gws00OwTuN>%jgXY%RC4x63`o)DbT-nPi5`KoQC^P!&3 z?4fKsp<`foDsV!F4V|F+2BQn@CB4gPKHu(sj62H7+9LdO$ou>ohC)yQ(TQZv;A>&HlK0WV@VjY zCI{*N6j#l+R&?tNbCif4ecoP8?qNsWXSW>mU z@5yQdmXZ2>m0BQ+)kn+mwtgv!A9<%G9mmK+AhF0`K9t-z_uVlv?9apwtbF1)DQiXl zjk=Zm5r;)o4Tf&LPCS;r_YsttGjcWC9pquXsCI&17#dUs9}nNn#$%vs^vkWGwR}*s z%htrk=hrPr!bN`6w{P2pwAX8LAUnr37<%1BN}EgBFSoHj_>5-@AgGoTe6@Tr?BXTL zgW7Elzoqfr5C;>Kykv+|EXiRm9?4J^P*QPWALWXzjqitU?FY4WDvgn%D+GuZx2~~I ze>AE;;YR4PODz^`P6Wyt0mwNQlhCK`CU2`g@#BB@=0PNlnbD#=!B}iz9PQ0XfY9Xm|m+#(%J5 zR}v@%({ci4;9cM#BfAl+l-L9W@jB00B}X@z=u|)yte7DHx~I1TF$yFj=K`pwcd(;Z z3SNH-L1ak|D7JlW749UUzRg&Cnqo$EGK4egCb&TW*U9*+1eL?eC#}Uw-rw4D7M^>& z^o70mB@JgFFT?7iFcaPZD1~5bd0{`4pKX(Don~lrG0UIf&CgozaeaUi{QHj=+`aR& zI0~5lecQw+veAQ3y&fHH67~R8Yis{;Io`Bv0z8G7`E!YT?-kTH^P-*x56t9n-#y|8 zr7~sQOMg88P?dZLy-~o_lmDm&BGkt`#k5{Y6u_E(@0d{d(s<59>ca_p7nnoEy}RIx zjQE1nHhMt1ZQqFv5H24YAPKpwW#^jlA7w2HBjgYypqYzRn$4-QVJV;~EVo-ckN`)V zz`ecCyT52E0r~(Y*S*5zV^T`X7|vHE@G zgtAxa>xhSXA`Hu%*?96Rce2+sgRe3OdAbJ4WfzvDG z?VF-7j1jl_h!O5s?!KmDl9rqf5POSVzB=U-u0B+wh1ffD)$MR~{qI zOn{poe4GtRD1R7>%7*H zRDtO?OIXwz_WS!vj6N=jGhdV2ehf}N)XPJHE6G=Po?YP4E|eIh{=mSB`+B8<8JDc< z%_#xXw{o0qb12Q{GrHT$tbMwydY2kDs!RiGw$psOWX*O2a(5i@6qe*Fwv3(XMc&VA5<_IPz5|v5p!wluhcXj zUf1ssR?BE{XCd6h7VoH+xKD!hhcm0qy=WF^OeV%;qVycap$3cW@JtMabcdsiTiReV z5gVmEAIjrhVcA%WsUx~_6U7aSPoZq$7>#zNtE*8=14A9eOn6*4_IF#@<;kCOP`xka z$OcbaDPvlLkPkTSWq$%mL@N4fmp4jJ-G8i{?h(OE<4+A?BUvvtFO3YEydCE3%~x27 zd7RzY?JvFCf3ItH;3^?f@qD~4FXgbG!+kjyAm}B4QuL*@$aJw_2&yvIgo(U2_*R>dx)(ArDOnZ_T)U=0YycDitS zvKqi*saifmx#YAWNn?z4FW}E2S;FTH_+k2&8aR);g15=MjL17$Ub6rVE-hvnXHdR% zm~7xtDZt%lZ}e`L;5F$$qtk`_SLh=mP9$Z7B27ciP=;@@s?MeL>>2)m+KUQ)SGo(O zD31xB?$(J$GlKOT*W@-;fmJpfMGKOnUYZE7WH+3MkP1fqG>Q?Se3%kP2l!I`&L8N2 znmvqAbEpjvUybqUZP5Mn9YNL{2fFjEpX)>LHGj0<}^Rl-ou38Cs0%Qf; zLfZJlNSg?kU6VCzIvbD8tbdA-R_1OcADYR`QeTm5=l-C;ivqf)lxI{v+p-xSlrrFU z$xQ+>u3cR9xbSb2Ml?p!w|;5KuGj6Rz~W}Hw)s7<_K(+EpMWIpaq5vjUyx7uI|Q2pn5KYy>D zUplLBG;q$M@BNvA-i4Z#dd_#0Vu!VX7R&f|bwstV>N{YCsbE$g!?EmBwLNJ| z69p%B-tX|H*q=PSZ24=jt7IX(@mfBpoT$11a?RXw$9t%AK>B3)wO_xE8>ZGqRA(^d zk~69o@}S{~cg?##(f&@XbN72K*u%!)o-|G>Fb(*Rg#m5|prdUtd zIYu*$U0WModA&Xns`}@%NM#8l?Z~}(bmRCuy|&C=A1{tIIq|1tsqybnFbqbTn`aikUKBFCdrQhu_SYp(FPcgCqtP-ILzEyrNYkcxxiwdUSI`Amyrr)v` zO}0Y~N^jPqwf8YsElz<%9sgisl_hPWu#oz-oYQga?2G&BlJQIU6Z^kmn4HMHk1{W^ zWJo{xh)PDPdPbiUO;K-9 z_>q9Q$gSWnyl8mWwCAq51le)fQu*gS8i;Bi$@?(!LJ95(bWvm+g7;EMUcTurzsfNI z`Rjt6nb53^R5?6Wu^_Tl^tSNJX5M+}F=g|7wGq_t(m1}z8WNkKNREXj4oqM~lg>vK zdWs6zrDeEbjoSEY^dsK?QaXSI)DW-9g5yvos0Cb~-_S3u>59^SAIt14m0Fc1Vfl0M zK%DB}h6p(F$40auvH*pTX|-XnrB5eVb&9EbNtzgN3zU~K;4EYxK)Qxb?fSk;v zgmyb=oDiJ{^Y^^yiIM3Aw1pCQ*vF+Ql8dJalj$3s$yqn>g(Tsu;YekqkwbKF#b%{; z%`)1c8}-7BjwXU(7f=uX@Qfce`Z$#tNq%0u2;h(@+=mx}1Re@n7^Ul{9UYlF%C4VN zMDXlI5%Pb^r_rF{f1+he!>*xiz#JK3GEoPHBOz4@YtPIK$s|TLJbCKy2VYb~=a;@} zZqKK>i+5n+5MxULec~L9_I>mdz;;2=l*0!Wi#8rDJW;T}PJn+OuQ1fDI&cl2F93irWR%WxM+grtvcdLxB^)(uoqP^bFsi)=3!Xrum#%}sNs(CQ9F9L+p|9-3(HNwn zhM3{N2Lli(9Y3C6!4yeLg8_&klfI>j;HBC%$L~un(E`NQxp(=sw((|{c!QQq4VMLr zs=UAQ8ILIZRD;}eNUnPT-0CqW&EhF)y!}vo$%&YtDNB5wyod{lmUl1gk>nzG8u$H% z-ZGxVegI%odsfifBI1N+i7%GNcS8X}7OZx8U>+O&VUf|qjBP0gHVBB!5v&?8KrpZG zQb6kwst7MHamnl8{5yR6s%B(?p^{{hUR8B+M;yq<5s<;H0T6U|1H$vZq1~|?A(A)o zAb>m}rAjs3P35qd+aHi!t` zJJRTf5;&*1Ouv`9r`B?y$C3Rf+dEAuL1!5cRBPnz?%{~14+Cy4I{V*}Weo&Ac^6w^ zMf2T7fSE9TEPL`%-BdZwPLR^K^Lhb9tukidyiY zeDVI}8lGdIk=q~vYM!_Q4_U};v(Pc~x-*+m7m>N)H#q#kc4v%!Uiuzv^y>F}Vkrhv zH8I`6ho#D`Z_b|d^7@P7j7pv7(1gO$efMCiGuhc@_4{epnK%0sCt~shU~A~cXg_AM z$KKx)R0x`Sdrhc>-YsdVPGTf%jj7Y72eHOQDw5OhRJ&K%jO5=Zqs!)(pIUX0sQOg5 zWPKUZD6}u+W2wHfDoSO`gAz_?c{y{P=iy#bsJD2|J;^pb&l-?-`92AASOg)*mdQRG z&1$cDo|nb%7g8eO$HtAvu8lr1oC&dyrSu!*ekd@ye82s}Gvz@6>8&bFI+I~&N)6X- z;zeb}%u}m#tN;SYTjvZA&HElgYizOPH}(tNa)4KFUe7g^#bX0YTXzV>AqpLgq)H>3 z6D{qPi;XqA;_RW=+B4-7+I{KaeSA*8^k*GSEc;U{w{!k? z_c~s5=|0A*_t-wJ_4W}9gw&)?BI6R~7zY@TfIN<`7ZYR;xblO=UxKfj8w-#(k&iSW0z`*F~D z%HY$|qOo;os$G~$jQTCVwZ6CDCShc}z&pc` z=al zM^C0h4qoE)?bdI^=7?bPSzQ@0Hx9B~_9L!%elgN(2T%w6r`hW^Ng5TSYp-|c>kWaF zK$*uf=E>E!H+F4J=PY~}xLq_}ro>)<{?kWxo^RlB@AGqj|Bpk>SE9W)bP-i2?Az4G zp>iMPN}RnN5D%_Hm%eBgNjbkBfLOR32LT&F8s;5R9vxKUtAHR&$D1=g|h~ zC_h7;D<{E@@FEWV@RBr)pV7bSZhczMCLx2(jupeRSpSlGLPSps_+vzlZM?ka^e(3K z_m5Vhh6{Fx#BYW1cgN=abc5KuOLWH--`jv6E03#;|NK6?=cQthSDJtg3c~nbP6wc4 zoY-d*TjO!^oShTkrP3H;?~VE&N}RdLD2q!!ZMXT9C-xGDMp-J+lSz+LF?>6WH4?kO zm$oe{bZZMLzMp;8Xb#*^K(L8QxKw=1wG;h*Q@J7k!V#BzxQbXPvPGcdhAySI(%=``C2z$Lu;R}e6{Q57TCr1J2iajXtql8>^(;?dgcqYJ!O1=3I~ji zZKV1-@xrx_^R$FccBKk)ITsnI)xOf$(siKcMN$&^;z6&G`xW_*+SrSu!G~F^H5DJ1 zQvGMz-e1#oDnx6S61%mZPSKI~Mo-Xlx{KP0N-kZ{UJLB|zd;o(jLj@G-#zt`PlpB~ z?{nDDzgONSgZ?CJ-41SzKTT;G3%q%pP#0D7Jg9|F$*E%E$aNTp`B*|+bv7GV5`fjc zoj;iRro~8Z>@$n4<-!&0D)moP3fI^7wommG=Dqj*E-whp_HSr{HO+$AhOk;E$Z3aj zzG?X0ZQ_?3sVtS)`+HB7EE?_dY~~lv7PUihuNf9`GYl|ehu!4!u)5O}V8=N&!!BVZ zt6cwT$p6bWxb0Yh>Lu6SItPiOQp3O;{SM}8C{WJ(jA>x&wC*$Bv5$WCt6=T_@bU}# zkM9#%+QDGn5-U-vHU2go$Lvungb{QU4@TFz6!M(Tg%TJJcAQY>$Zz}1;pMY+-}coU zmk8VF?*+8c+d9{Cue2`mr2Ab4|EQ5Z;#<57u=4t;Ws!#bw$v95n&)HeaMG^1YZwMV zOBP#*w(y2Y7_M04e>;0da&;adE2yAh?7qH5VUeb=7#Qy(mZz3}UJ2Rc{nwnur_|lW zRk1ya?5kU?alpc*xR}^+2}ndJm2}3ZWyZLVMNAUreEW%jr}+0!#vv8hCAKS z6H{wfop$+qrAK^hQ49tv%+_~ zXVcBe)%q(9L1Yq^ZRK4{Jx1lDZ87APsqNpYyhtll=04ulwd##AnH8f6GtA&_`Zv3U z*n1|yVqZH~i4X2{z16oZMcy98IZrJ3h<9t?VI(pA+7045lK+@U`=aH)G1QL46EXY5 z-0N>j7loX$I+2U$#vH2f0{tDJZ5MdIuyyF()aPYIh`Y0 z_sgK!vj`UA{YZuKWn^&9OAACK;nb6L|d%$!CZE5u(jv zi)UD0%G4OSqqa>ps-C%sYz1s&Vc193#nUu=Hq(&O4DVb0e^Q%hDLo ziSUtO*8d$*{mrw!>b(1Z5>ozN9Si;ojMRUh#Q%;&{(6M}zZb6vODZkK;bp%j)#fqKze10u&gE7kMg*Z+@uadmNwsVZrIkCr}b zE%#z-b8~gAY#Qxy{Yl#N(Ac0WrKAi`9{S$QJ{;AA^WVUYC=^%y`^IY-uQirc+?P<4 zHx_P&_$3D((z<9!Z*Oj5cF zW2=VXl&@|Lf}lfsLandD(ixe<5dToC)(j`V`FC`ja?Vn-ThPjbf7z4*i)VZfoR$Z% z9RxG(`!@=^da8N3!$UI2mkwFMT@OBS;$;QiW4{Ke%BA@(p0GU{eK!Z={!@#8*8Cj* z!v&|7u#$Eemm0}Uu39#JN_vKiOt|;_ImDubgcmpXL!)m5UvV~!ZgTsS!f)tj-KfMZfYKN-na!-`;n2v0 z;ou$c18<9_uU|@^{Pa;Q(#vw|(<^7dE|BV6cJ=9JTlhnV`4q~*g!{6Oy=CFb^npb$ zg!~Bp%Zl2hJIZm2`C6S0_t=fJ-HyM;Q+JO3L=qs)@`6`~SM0Y#@N@P4T8rk@uW{97vFaLg(md1$7uu_SWxBEE~n6|w8sU_`lL-o?HUj1gTyBu+1 zO=H#QGc;^f)w`D4%5e1-zn7Tk{wHfvf-;wU=^$RWeKYcRzNCgrmuePh?g0n3t~gU7 zQDt=QzsK)X`)H(p{dbQm`S+iJ>f-(7!`$?5B{rLbrw&Ian(8ln1>ruZUv+)4d5Y8K z_~V9-miC-0bA+vV_&2yj52_o(sXaH`@Dw_-t58(jcoAh<`(z=f-Go1Bc_AFHZi9cU z^q;)h>z<{DnYdqU(MrENnRI2J#&4a4kpHrE@TC7J@rp7R1`T>%;o3Q)7%e_jo|3=# zv^&K6c`l%(ft>q#qbo9DEs(-cIWF!wQ)Q*AMmn2Mx_utc<`yHKp4d@k_n4A>#c0Vl^6@MFjyY%tk zML|;baEtsm4J2WFI{oT<~FjpC?7Sem5o&QzLio>pa(pID@XQ zEfp8{jcb|v@8Tf9K&IBw^Fm^B0Q_sUiwq8lJozI2cK9b+DMpXbU=BBBp?#9xK5~z} zl_fi9e{bod(C*0NtIJF$3IBzh@NarkX92~9HRd$PD>6POi>~dqqS%|7I`1>LifcAE z@9_srKVNRwilDgfTwPz%cRTIJrO02jRc?CQDKM&nq*}#&b3s?lo~s=lP@RnZ-Y52y z_nhx59xNd(w>HQ(wbuPNFa2N++SVL~Dzh{sL;c6sjBg5kOH^9w{!M``^Ja4?zDsR8 ztLHpL#>PU)ac=^x*3*`h*c0#lto_>Vc85yS^RJ~A&^yWrDCyl}4z&2uZb@7s(s2E2 zXc?+S!St&)KQr;AI9Y@m zf|*By|DYp(Wn9T;&dq@`{#jn=nClyJ&be9JU8RMf&Jc6|csG)ny_x3PImh}|613t& zGaAL`9hFAn@D~WomO)mb_}K-X@3`jO{ANPDFyrI3=m~8gW)>c(Ug5ROwd)=4H`8^! zi{(ABP{5t9a*r*H)i%a&H{SQ-UPkPkPev)tDWyE|ZE9?ew2I8XqE0X0#gjbfTRi~s#;vsPg$a*FA#_8i1pt3iOXku>DlXF*){iDy-QvVqGa>)?xEdwy#tRp zB;UN9_0rzb_aFOM{_bjfI=CTnBFjk{M`7^^CI5-O3 zehxSyA@}?+>Vj0$HnZzXoz3wRY0r5*Ad5kE z>nj}#qr{Z*%eg@0j_<^J7NAiwGpWvRW%AzhJB%n8>2~y8Cu96DYopJ@bE(y1}q?hVQ z<3o?&OUS1z>$$^?GA3uU0xPFm;J7RFUEYYKrm-tX33?~=cW-QN@lqm7b$^}6I@037 zoZm~j!MLx7Kag70{!2WYx0Q7x4g1An3cS5n;6}&7GK|<;v2&Apk8g6mH_0c$bo2n0 zi=2}jK=g%c6{ld$L_-vGL`cCEFa5(T3?58{B~PW@U~XfFw$Co{HA(}mg8F7c_F1jg zMFZ_GoE%2Xcmjq4o5uEr9zjY=QjJi`of! z_Ct?`%p2az+2-_pX}0U}+ayN(Fj=S+RIq)~$HNVs zM634YyX?JPzbMac>XgoZwRIpV`J? zI`UVISW7Ss^5a~-(Mn7ieg#%yZ|j~EWa#JAb#T=CKO&J+WwosItKPw+rft)4jm9yo zF?>Cd`P$#Aj1XoVMUQfo>|x1wF6JYZ{6eldab)s>etz)~N3V+5GXJu@?;Wwir>$>2f z$caF!u#SsE)-B(8H*D4|pewmi=tv=rLWv!Y{P+)ADtO&D!`|`f0Ihy$wBV*oSU;>n zbU4?v?n;+8UXUuB7xv%0V|<{W_oJkpxOvkki$$Y2X!ok;+w*-waQOG*6bt}4DDo|A zGQ0hKTqC~!Sq>_W&=r?c#H2<`7#U2F%wm*vthBH4fxmlo3vZJiaE^?me6gnSBZqp1 z>n&6&%*{8v76tJ}v|9LAw^CrXnkeM_DzX1II#>K~zv`*i06#$Or@#J`Dhx<>q~yVy zF0qJKrOO0(rQ1?4a${q}7RYd1N-Wpc11I~f;`E1~NA;;l6f;3Q=`~qNCbG{U8{gj| z=11a5AwvpimZM+Jfs8KC$#bW+#@^M8go=)ofcK6Dd#_plV!^lRB8#?dl?UnwC>_7n zd`ii2PY^sfTe$;HWBRN)9w1|}N9%0RZqraS?>i(SP(ZEm#nHrEaM$O0gA-V4REP6F zzZ&8DT(JqJSxmeroQj;c7adcn;Q@zN-{(mOicVMoW`M5aA5Sp($P&HVd}cenTsdFE z*jo_A>sPOb0_yE{fiiA*r}g=)XJE6aH?q;^`c0u5P>YGQ_k9=7a&{YXSp2eOWn9Xm zuHoHBZ8@N&W%cP`Ex7o0jD^jtM&rWy4v#oarK{; zzp(naviA98z~h`PRTruOGf&8Z-%N_!tq8jW7p zP6Nnl{p|^FZwyw^CkKddPX7taAJUI-;qKSO-`@+C~{ z8A60b3GjEoUxGjB;`u`qGrr6xH`|_g2)98E5Wv4I*9ahE7RGQyW5?5 zfRd1slGcU>MmK;hKj(YDA=f*hIW*DzIg$s}Y}E=91IPAc)(2qJfStAg9}<4Fy45)w z8!Jrz)nTug0$-kuQ!s4F_J|-s(99`{(S2|XdISIzpMf4~8{Ar1^< zhQw87;XF~cmu!r30FI}TlrVkJJwsV>Kf1(90xeM1MrsP!d|Gv~in-G`w~q4ma?q3Rj> zD5J;@2l^JbbGu-ALC;81l0M zv%KsxztxvYInGiNncG~w?zR^U=F7{EEYK~0ex_#np>L-gps$3Kn>}PZ7i#*Tlx&-K z7)BS<^%>8VOXQ!ur@CC?xObN*3olPfxQQ1yh|+n&dBQ`niLc1wcz7j04E&atq!}%$ zjTOhU$l8bLRImYuNT4Kh0=(e9g(uRp9>967E zVWE-n{}*HL9oE#gZV#iVs30hai1aQXAiag&yMlmpmEMI=3<08|6s7kXl-^OQl#s3T z8VF6g)X*ad9YVgv-uvA1J@@YOyZ0ZS!T28oJ^swrTqDAhIZ$DyH-GF+_an+ECc;mQ8WB_{UGDAf}k5(lOD!5z_sOoh~ zZZR@WRh1O@BWwFJII-p2AN0GV3iV?DCGAeU8#W<8fG$5awd- zb9mVRlQi5BUG1j@jn&Q)114tJF&MrBDjE^;KfZ+9zC{M#tue^nL4QA)@4{bb<<`!Y z9n8)%w`vJUkYbDtU;;ccT=kofWt9m9G8S`JLs4H^k$lqc3|m zD-GKw)Y@jNj+4KMZJ5fGGi3!Rjv7E8AIl-q%Yj1C-A-3HxW~<_Z*>I7kFvY>r}9j0 z9rwQweSiC?4z^}mb$zhoYhIi2{o7diKWpQxD6>K{f41S%lWS0g6KZ;YDdsCY>X~Rp z*6pt71%Tw`Yg*_ooLd%r0TMAheMGK?gFJW*a-?!VUW#4Jn+Z+zk%=zk*Nf}2+E@0u z3MfI$oystra6lhx0IYJ#L z<%k=D`w({7qTQo8DKBD3y3BLxB^@{8eST*e$^Wbq9=H+>vT@#+&pi1?bu5G87}i~> zL*z&*AIiSGu_P0q0e~gVJWd^Z6<+P%-} zy)mHn?xByP5h+E)-3yBxs1%(ZeX>Y9)$2ys2c}ezeR(ZCeO1a(g>da0S4ChEP^{(v z8^(KxyFwm_fMoZVQpZfN&95kiZf;Sk>e~(i%qrWLA@`U2j5O!UWvMjp>1%~eT!svo zB|F!#uoFhc>SFT*8z<+*A@XeA!LqM?Li?8cbaGt62e_A;T}6wt%QrsfT8~{|Lt#4A z;R);1DhQ;&>eSP2F#Eg`K&Ofeigah+eJRgs#TU(f*FJ)iEEbb@+c!?-^}atq&-}TI zuifyUjB;Heb3Z2?LnDtXtfr@bIlXnlgaTL=5^0jJRqmKz;VyJ1zoBF|bSabc_(C4PtNaim*7dB*XP+V55PrOID6`yB(_`0)uCK%p6M$@|H@S0B>E5*=nq^*Ml> zn3Jc-lLhK5*!-EqWHjk_GYMqVXu{ad`0CE_eC%VRWzZ|bpj^?HK9Amk>bH8OcLv^2 zJu=y)^0}M&xI6XTKte47aaMcq>lT}TL(8{sx<2b8H3HOxC|fSxv5-$T-{@5N>7h~# zOmeS9*8ob4K1uZL0z?;lu?sBH`%4$2)(btbpX{FLRWy{vhgpfMFC>hO*UA=fW~O2kCy*6(HO!#kkSkA8qK6Cs8Wf!ujVh4hA1h~q zB_ui=9aG;w75sXD2?o69DYJ6IlQIE=>>fGi>>s`3Tt6a_T3Zp1X-Qe{Z|{vzkb+3)AJDkx3EMs zzPey)eTg1*59Iw}qGjW?-9^@RNk`om?|j_-@P1$KItpucs=z%btA_J*_bGB~E+4cW zcBSEX@B=zlG)nMcSPjoPnLy?h`zNPt;ND^6&~(<%kd#!2tD?Tuh1GH&n9JqqO9nrp zuRkU1u8BsBVJuJn3eiY^bIEo%lOM<8WxUcqDX`MA8hvZ2t5e!mgQTY14Gv(oedMJ6?+$NFQj-iUZgimwc$l0!22L7zb#pVzJ%SZA1J3^L{=LreXSa zBsbEIFAeEbt6E69y%EfC16X(|VQ;~c4uPq5=Z_-4BX!=Jmczlu6^_Io^wfy1t@i*m zd{b_f4lsTIW+tfAEyzjI&~ni(eEX^Eo?a&L=XeoMqm^;3Mr>8gXEJZBlcL7Ds8iW< z*m62Rx{*Ja3iJ^&M9E}{xv+GF+4QXSIE6+A`9&KOD z4}GxsS_UdJ#V?({{LwS)1Le(2dna{snqDP%#_RB2Q9wlj1#h|^9kCjk_#Qjt{?ciS z&t3MCP;_PmklXD>#K%_^0i-!ab<#}YV8S6&fO+zkMYx0ELYN+W*dbFGm1=7_=wL_r zgZC>3j**bC59nc_3M*C-Qrh2Ywlbf`ERt(TK=AwTrHTR0qz`WwUN*j=bC|%bXYs5T z`Gk?TnA|MHa?0Mm05CFI3CQZrM&J(tlj; zbIy7CkP+e-VzZVA;*m+KMn;SQy{;sz@Vn>XlXbR8P`2hB_5#S2H7T|$JpE7at2%9W zgS}g1oF$N_9#7waQWD26tFaFO^tmu8P%PN8>m|E;gHVSCZ|?xMDqIQ2Ld@z!RXP4p} z3_Yva0LFIVk>}DU_~{soLo+`4!`Pv zwVh#+a49M4Tv!4oK!~7YsWUV&i+(I&KbeL7%-@038flkFNM4g@sVY6`9Ey=sjo$eJ zr3@egxJ}L^=wmzUmQ~WBn*hhC0T`nsq>&ig$jBqM{+?3x9$2x#U;>fwK)llcerx9b z9iWj!As35Dczl_Ob97tlW)p^7P=|g)VF-S<(qx1GqfTQ0p1KfuJb# zixIM`o7n+GZn4_c~jd{$XsCNDa1?izTOW!7#XtS99FNtMPNSMM0o ziOwZ?`0$J!+hRttw#%^Bb6`IJnkJT#OkRilae@D#F@K&7+1Yi}$th3k zWgyzl340WEs^-sLw>`S*eD(R&@SHzxew@DL?Dd89w z8H?qGqm}oSe!eIIrGhO7tlGYP__WfY9 zjw#lM)A1rSDo;;P*ogT!v7!;uMIL7ao63bHZgmjFa}v_K%VBMPmwwMQ(Y~-;w7z@b z#4;e%`6c{us>Iuomf<^ks#)6F{CNb;+UOl$U-N>y7iW%QV}IOr72baFE0+;Hi#NG? zq1k22fvp|&^LS8Wn&#r2Tn=|=(_uy8d$Hr@F8uj93-i0ys*KoNbbcTBcXK1UcK>tuPhEg4($W5~RAF&#nK zgyf~zL5-AeEd3vE7B91ktXjMly~c|_l3Q+%ASEpUtForMHI>T_kligRrgBEJA#>mC zW|z8K(CBHf7~Y9&+Qqv~IRbHYSq)t@!`=BcmE-vR!W;L6P?&?fT@18?WRU~&TdO#? zx9c^ywMT;I;&C!mG1f@P(=xetI>WwKPj-l|uir`C;l1+CnbLVz_Azk#nQd<5)m+)6 z+dLspE=wl73$iB^ly4cvR%e$_#qzoeyNc#X9f#^n4bVkt4wyoUUpI^0(t!U zzC*FFmO;0rWJ1#xqDJX zyl&X-uJl<|*{G9JURaIa3|cd5%8PC~V5U}{qGH_6WNx$Wver$MUHd&`PvRa~(P!Q7 zYf0*b-S0Io&Hkk;?f7OiY2{TTvtzuZ*el1Ei-{3NEPJXc$_k&cZ#C9Qd|rc1=zjZ< zW33a(!T|nNOeZ8U;INuvFlNs^_ON z(3CVSx?qIKQAdHb^S~@CMp%m>Cq*%{i6fO+!6WYAQd^X`h~Q>jfL!#g)xE&ZI9aJ7 z!#h5pD&F}>t(mTuf28_8YZjG{6g8EiO&JATTz*l~4eBd<-vAkVsf6QsjOQ8T z+*05C4@eWOO8}9$@0OQR8^v0daEns>i!$Yhr_WZsUpuuvy4HQ|aqq;^z^5+%*tBpC zTBbvWi5SneNv%F@qHhv;SKhrh?Wv~_9bsNvDb#O0`hw`F3;WF zd50nn#|ULYy(vQYqjabkZbXB4s3~pl7k3Ho%Y8xJxCaKbqg>YS(gyQ;G z=X(wkr}A}tKY>6Y(C0Niyt_bRAde?)Ek^e9vbb*&1;&5Zi}s+yGU*5C^YdQY_dU|@ zAul3bQzL{rwk(Rm=DZa;er3fs?FUzOB1los9}Lf;58Q{KLw_{qGFMQb!|DW_$TCG% z!LT-&aj@!-Em{BeyOc`5vUvhg)oiS(Dv|aBy?X~Ni;-UXBe2>me6Ys#id?JvlDtmB z)c$tQOn`l3Irp%DVnaejTF@M_pvoZLDio3In?Y#bdS2FP_ma1ILl{bXA`(D#iTl>K zGw8@jzyWKnfljY$5Gh8iYsRVgkMFKbo%{*I^p=gje-I`LPocT1QoegRqRA74+lT=w zPbBPtZ%*GPeq_eL=i>eY`2%dO-SC?}A%W7HGw3V>%AZsbKSF&RS!`jxGB*O2ixSfo zd^AVAG(LGGjf$hU^@Xl&4+rXJ4buMHh^W}#om|lb1e0?3Kc{#-(S9h`QYbX?LH;#d zD~O;HA)gN)AtU5fdxchCj+?0W$R!)sOk3mM_vv}-(e4;bxW*JWau&>#?0Ua)RmuH8 z(e(Pd$aX*%e$+%#HRabg4nY3$`{Oc|x$x3n`lE0|>K>_1p}%|Ms$ad!Pzm!`5RVy_(5~b+>BV6X$>LuY9d@U>ho%*ww6A7@b z|H?!Fj{45qNM0RNkHq^n=(j5Gu+s^)S7K5**SxUehghyRb5`0QodsqUN_>{~N%l4Tp9h*3$#D zxX$W)GY;sb`nOQhg2i*WS*UUVuKD4B;T)9b`4Oa1&vrvy;00Cq+OX$OhBdJ!2Ir08eouw7z9%LKc?-jxZ4$?rRt@id)45$q z(koG77+h1BqUqnl6!@0_5>+kd_2;;1#7CWGJo+4FdX9qx1w$+V!N#>NAzG_yZ{z45 z$dm-58tS49TjTsm5uM@6aVWH4wZ|7+{5zdjP#}hJITu)-=jQ@x0Dd*!q6<7={r2W5 z3byC3?1ZmpxfvF8d_x>YAfATMgM4(Gz(K5&(h0c7wzf^+i%gHuhjNaS-$Wsb?(SJ> za*lCnAp7K3MCGnU`i&SDO!Lq*O`)!tS;OfKGp$4rYH6AaP=442E3m)cQQnUHwPY3^@U&=!|kfECVqEqzeJ^xxqClM3C+yLvx2Z z>`xl$lW-WMZoH-6aL&mZJ#8?cTs4P>9V^#7?Z z{O0Bgi8A5${G!A5X}&`Ng2;H132eao=_@1t8+9`dtpyYjC8)khwyh>!x!z2fppG)j z+JQ0X=dNwJ6OJX=&~mB6b~Bf9GsnhQVMbry7TO`ve*2Wm0X0i{>qX{SgKyK%2jl*f97VY_B{v{ptUx?~|##gVI-~w?Y zW-E&ZEf0aIgd%{X?~-gz7Mmk%Z=PqxlemqES7*X8z6f03m0l?%?tYG4;WsH4g`IA? zih4}njws>2-uUZ9+}aeZXl)ew#VjqIn|BU*SQR7fwNMj_iCspX^%puE_Z{H~zaR6i z9Ka6Ic6M8_qGJGj+4Fdx!C{|8iqk$##69|`)p0Hrm@uBkrDN28m{`0LG8f36Co&$A z)wG{B7r4vAR@i{4pSvMKxI#gPmJJ8ki0>rd?Wforh%Rm-QUndef##6}Fgo&Kil9|; zb(JO?aaoekM>1utx;D(L$_93jcCYm^3cXpHO>C&YIY~yzED{wJwSpIde$<7_SX}k# z*`4~W9vt1n|fJd-9lxz&ED z4s65OX`3n=%3>9%8st|Ln5~Mj3D29+Eewov4;Lr^Cj^03!;za3aZ>PUeQ78Z2k6>Fez+{O7CQA6@oyypvMe@t<9l!y}4S~z)d78+8twvSW z%DGs2+o`_kCroTz28r%QeHeBTt2+27z%wHro(D$|W0i zdV+GdNS-*U>!F{DJ@+~Zb1FSBT&Iwp`ih?xi;d0PGm~;_&y!U^mb2-CP}#*leiE0- zkfOz|5~&(7_d-%QFa5hA4_F_-;s7Y4JLfg?|9WQfw`2F=hqM3_yAv9G3uCJ~qqA=- zLpv)F)NDbED+2f-tb9x?=Jjn%p?=n_i~jDD+-$8d92GKFb9#N<9KVA_KE$sGMS(CA zfLV!_cAhw*i-&F=@+!-aYT8}>_1Km>9o=OAxEsGiQ=mSe7?#K^6POv>XTMClGC04u zf+Q|h_SMjX`$MDX9fntQj}AJCTaGJKuwy<$$}m=7Cj6`R(}j?^v|G7GOZ8nn#;#mB z8Ja!=e3%C~21$<$#7R|uhh7@BFHva!sMvK(r%4eGJDE|807jDI0%t;fyu?Uq1l-l$ z1p+l>DD}?vBNG$0Tc@H9{d84Ymd18`AJo*^Z*I1+Xz4KbLD2gs!%gCYjB+z}*feoMxYUjpdK)EF)+}?!4 zh+!^c>7ngR{xg3V5y=@4j806u_1U9UJ<`)ZTJ~x@<}w|5zryJz>2M)&u*(w|FT)mh zm|1@IYn~$k%5JbO`)p8CD`TKxJ+F}tcluQWe!%chmwlM<8iWD)Pu_TxoPF9V#APi1 zxDV+0Lebll%d|=H7qcZ^{r>>btE&eNE%}5G~tu5{Qb0E8pKfGv59+r1kOT=ZgQO zP4&MpO_Du$P}1YjwW=p?Qj(j135x&`*DCueW=_tX z7^gXNcfXvy$MiSaqbQYFP*`9ng%!dDGh;+?GGh+Y5l~a?TL?``P=yV9C7}Y^X}BCN{?i zB5oW>ho(c{1&Wn9HEd9@L8gR&fPi=CQJa=17p?S?v?JUgLw-E)xUlkFVDN5H_fj^} zNj-W$=bNj`I<-C^W+#PtYfy_SFDjxIVR+l*KgVWR&kA&~P@L<*BdJ*a|85(zhZZGvY^ zuUZ;59juG~Jl)7fe#~=+?JT^%*%cBRDUuyD)VsSTIdZy&w_YjrJWc~2U5>Al8(NZP z?Kw?Q2()k67XM>+OQA2hxc=x!NIo9i69Sz7yeA5FL~dHS<##?|r^JGBMKErJes~)F z0$uMWntit8dNM&W+%$KyVcSuGsHf{ZMWY5M&7_e^Ae@{2z$s|#)u7*7R7Eu}JD)De|YP{4h}Ono-CCCe>~DeCT;d>%dNT49ZN4wrXNy1m`r zp1-oc^`i2odr?tQqR*OYwZg04U6u_2R_GTYQ~n>eJheBmHppMI&Ay$M-(GfGW8=`E z>QBGoCz`OICcf~tGWJQo5d4YEjmsP_@Md4{uWAN&7v-yl#EJC zj%m$mZtxk-t;ubsWoq+h?RaJ{lGV_}ns>|4%uK*Ol;j}y%W73|MX@_weqT@#jXei7 z%iFUf@<^gkUOA+K6oqN2_e|-UJ6$;=kQp9`I^z2qz;u0ZIkNV+=f*DPOa33)Uhimr z@M9lHDSv8vZ}Zz4<$nr||EG-=SURG*VE5A2)~K+!lr4m)rc+Wb*iG`agO)f^0^P;`<4;n=UtGI$z}~q{3cq}wlK$5-+Vcbc4|u-+3K;%5 zd^rF2|9^zRzc=nY!}<5K|A3(QU##W-Bnkq3xuAXnoAfb^izemeN;gsk*RMnnRdB*1 zkaLg&vp6s&Ia`kWoMd+U11Df}cY3E-Q5M+<5rOi`vVlJ*FUNQdFuuj0Q)(tfY}Ge>@Ro+Gd6<4*PWz}3$>Iq(Ly zF8v0f#u?dB6~Y=qa@VZ)w-+Wz@i{(OqYc|+NT7xZ@M|^BJ?%dbJmbD}gHN^{(J{cq z#*_;ytee`OVX=H_XXqZAgHkaT-6C=R14*rSBeEZPMpxRCZVw0iCW@f+gYI)S3S*x_ zvL!Pxk|KJ&>%`%j2S?<1yD7&Ndt2Y%CGX~2)A)6R7Hz?69{ER=9FA$kT%zi*tnWuH zS--Iwc`C_utMf$GlkEHu0rX9}$`p8R%`iA=;UjSM058y^@LiGZn`2ogeRiV3%I|2=a6bcE0ie$)i3+L>D61B=5sU zE75^cU&qRNokgMq<`Xf{#R(4l!hpzdBT*r33;}y?en5cYH+MbzN{=mVl_f$uKbWH6 z={#y={UOo{5(4~Zxz1+$bSrDysQ%K0~i)6^wwLXomvw?Evnv8;`Fy*F)wX^u>^wq#-v61;NWHEPLf* zEC!{bO{nG&&SU=480$^Xy)xKTfh&Qm)Rj;T8MVCCZ1`vTpZ6#C^&g0^5!|R!AgJbL zVD@urBdm4Z1OE!_Wyt1;-DJsowKk0%lY>dVXtDtb3zhn%jb*Yxu2>1LpUL7kM?Cv< z*am5)g6GJ9Pe?sZLyGUwob`z55@32Whe$E1@gQ4kIcEy%^oJvIE+R15fanHeLi#6v z!suzusO}ux{VWK(<1lo#h*ekM1J2w6pgan+NC4OCF9T~Dr7&NMTT!yQeq>|o%4H=> z8TlQ1Ry|sKX0M%P=KHC;**@u5yi9O!VgDjqzs-g@@jD20^0V1RaQ^Ktp+C)yruN?n z$A7mN=R;41hdNh0kCDzrzRD&0+0iA!&;bd5%?jBgmR#4q72BBp-g+mYpuP1Zh|5&b z(NGX@dmxexODmc?i~%3RPJ78BDe z=#~!S#$?(ii2i)${Y6jW*E?{syYy6*8?t`Z-OeqIRh-W@1@2gmx~P+HsKu8wJ87_m z&{@h>VK#C#+Z!cY#B(i}kJ`G5L|G5M;+;K1;k;HYjI7Q0#f@nV=@b^fYbvDY5*7)}H0+(5REVSNK`|fDDOWe(9+^ zDkgWdEYmdt`oP^&x%j@Vmd;fq%wwOplQC^bh+I(~@0bRe=9f+0;`t~!lbE?_xl`bt zI7x#Nr&%TP)uyz>2aMBi+$h?!dA}w0$|Zkygjef$iB=1H^dT>3k0pL~52o`yC)nZs zLEW#`wca+X$Ij_BcA1lBCY4{0s7IMIYIT43nV08XqKee+O}Cy7k&V;l57JM zxM}!1ZTOu2L07K|SkJbM5?O&yam9KuG4Bp{U#^-xwt(syn@EQH%HMCd-!n8f6N(!z zS!&%mD)@e|sC9()tt%~#JLo(TY)D$)ft4s|{yK@;mqPKEC30nWYNvee%s&a&Osn26 zv2(;|mhUSn>;#g(*+!g}i`}+znNqiMWspmoh#x7hpN1@E$D@}8w2pr%aFvfw8Q%Na z3Ui)H{jwO|C-(|XT)AUMo1}>pm$hH*KwR}9c}+=y10B9Igkz{M0?{KCNtBlqW+0p3>@J8_fa;w-6?0iAJXlP z3r)82#mzJy`aXJAY3y3wH|5DJ&Kx@Hqz-CUz@Ref)L$l%lTv5A#wMUF`<8;|qM7Wk9B5YKdWa8c#y% zL97k#Z4IT$$?gdId*Gm>=S$bpkn@dpj?3Yaz9AzeiVEH~pEOSEN4NxHLmT;sqZ8^u z#1xi4ZonUI(ZB%c=FfT-kwpCA*}KeEMzn{EvHyi5!<~kBK^#;+JsNyu`rLgrVcgggks6tK zogPFe^KmwD4N?FZnqXaSug*@}5R==rjCV$QOoy*W z9*%WPS2})M!jgjfyerT$qJd5OuhDF3wT~rHRy?A9i8bluK|N#C!>;Sa*EBOf-cA`2 z+mrGXM2X9(XT_>9cxswBB)>9}(A?^Vg<}qhag(bahBmL*K4Gq28w)ilwC~!Z1DL49 zqpCKO26|_w9=N3v1^iLzskdO>s zP=u3ZKkCN6jh8vH_j>;Eo|eXev|qk9pX>VaAIp44c7`nt?)_iAc`HjKIWDffk0MQ` zOY?m)DkgU0WV?5R!`uGg=sMEzB;?XhJZRh)s5i+H2hB@Qx-`w|H=+|8tQHWm#-LlU zDwlF1HFh*RzXde(pVuuG*r= zXU!gza=QmHZO$+#iQ%(Ah8NBE7)lQewt?E*pEnJ%NLQJH$TVkLwtsn_DJ1q%EklcaaEANt-j(7iZ(--pjzUhLsR1J2@?rWrs~4~qTz!uXZ?!vbf~*M2V;ok_!=SZ z@F8RRMWw2Br34s`1(`m7cT8tQu8T-|{Kzq&AjNpJx3ZLZS7!VatQp;Rj2I!Vxh=0w z_^gQwmKaBkHjho#C|HANFB_&bt2WoG>jas-y~Mr(7(^M7F0gVq5Vw)O69yh-(l0g0 zU3(8Q7})EX%4NX(+Fj1K0qYrT114C#jK?lOmkPg`BU4=D5&Huj(Earcw&M}CYh`G+ zqKQo3jMJyVS(G{c{=nXS--$uEobJNyq$j-d=iP<3H~oK>`!wR;)rL#>}ftti&;!4tHN=1(1=Duu>?(X_Pl9 zag3~yN^qKmK33G0*8QcUebFS`LS=)%y%!4bRG~(ft)V>nZ_R_dZw;M;e;MYl1;MQ! z@gV5#m>*#7y$P0`;gG{LnU@tN)G}uc4}0u#ii=n44s_V*XsZ`*%Eqw|n|Acnh14$( zcE2)1o+Rs9`j~MGMZ}Stf>m%Wgj?&bi1?u2nW|@%2V5()p39ps*aHl4nZ=v%Uf=K= z<_mGb{YPWb$Eua3%RpVfr*=g5$Zq9&TH{I4$a_U@5)#F!zfB+cL5g{;N$(J(4$hY{ zGHt#FD*wZ>=G*3@G-FqB&43ou{mjZ(^HMv(s&&Eg?wUIpO@&XWt6hMKJwib~cZ|rZ z65T@Q74e=rh{Hg{yT@)VIYY#MMtlN#TEQ5looFoU(bFYOXV(+&q@@eaxb+4wcR#NE zgKJj47-NQ&06a2j8Rhs{{h2hbzwBahwLD+a;&5HlvUgzAtL7Wt^Bz%a^Lb#OWRtOs z*+*c%l%5cQk-A|?^X~nxCAfC1~CHPdrqb@wwv1tiK zxX18JAuCackbI}R#@z#KqoszJ?k`H>*J9S{DoOf*mXY?&HNURC&e`-uf1q!VR;*U);l-4hlaj^~6`(j}s3K+0Qokr4MbamVY4wSqslLM76RIldv_3 z#qlWUQh-a{t7dC62H(dEBHjc#=Qou2S;u9+3E#CzBl626Bu=vDQRHnLh^@NL*^ZfZ z)hd`jmaX)|($XGZaf$O6my&>nq?I_G9dW~Fqh<%*E?g4D>NR%J`ekuC{;o?EwbAM3 zR(1O7mHxe`kL3N2wj1@gYFnOV2jSrx(3fig6_M%S?<3|il}9*tFGC|Mw%KoA4WaX* z#R#`ibK#l%&r9jVR=}kGxbja284i=-vN`iX79Qpac!>5LV;%W8OTXxQ6ueq0T@!?O zJd1uXZR&8(BcTdW@YR2=T^kHVLEd}M>qn)P8hH+PmOeb_#(ysT$TduR3_&s6yT{2^ z`;=QCLKy7kV!M67!EV1(z+h+t=Y$V?YFeFoqJPN<%v$8OLCY&O-6M!DlaZmv0leSh zIh)SPKW3i2h&(;3v|9QD7AP=I)}LI`*GcXwYv#Mqyom@@!RhoY5!a_}THy6#;kz1- zmy46!F_oI*Y7CtF)}e_{Ofpax0Xr*sZfCDUf~5+2D9S6uhZKO**~4LPQvQTj7G;u3 zPUS0;8N>{red!i}w0|Z{*D}dUBUHH`M0-$U(zk&% zUf!2-zTd=OTWFJVJZ;NvJYks9XzpSQ)l~7VBbH1?-rG2Mu=ON!^UT#|;$-FS1mOp( z^r&xWBDejK&}4z7re<8WsYk+8S_2LSlhvGsH>$FGcAN-}UEIo&e>o$VFv=qcSmg)B z`ylggq$Gb-lR=mRl>zK}$7q+osFj}4q!_9KoaDU-*9cBsjQ4cBt@+#x!T9Y7mz5)( zwwf;@v&l*TR+XIbWkR3=9Y9}I^*B`$MIPeaNBFF6(=^~IAF!>q=4X@X>XVqwS$YLu z;F&NPj?`3fZWbH))&_+(zp@QDth@sFGq->CXDvF$xRs*jf>}(96Sk<@Yt$R?Sqb%x z?Z$>Yxnr~$(*0zDLh-t$S$(GnRl(WvI5|4L$mY4+QTG@1Gmlk<<`AX&a_st+ND#^k@_g4#Iy;tKF2y}AzJ!mcmND4*stoI` zYuHF(j?_{2lw&RQ;L-9@%O~al5vu;55o#AW=yY;%8Q0M@=8HZ6TY8H(s7G5Bi?CaT zxg7`;B8CyOS47*O4sXW$-f!EK65JJ|cg-I;1>}XLTbkzgSwhrWSePer#?Ww#mzJ8L zX&QemM&S-N$|hgX8HhCX4O6Om{!Emflj1UOzVHVI<~^qX9ywltco+bCi}1Z6;^|r3 zECH%F&fS~>;*fRqq(swEo#bAA+cCNfYXkg#@?ExV!O9c_u$IFP;LH=;b}DGX2OW^@ znq4t;^c)b@j^>C!Lj#{wcT8VB^6ik00A;h?*sC?PVdR+I2x)^Z^AtD9>fP%}I5i#i zd+Mp=tRL~PMA~M`A z9VHAdqdMmj@;e85JT|RCgbF3w82iJjXS4Uqq?$jC3s@cEDv9@a^pMS0v*f!1a!}!n+^GT zN&aUklb-9tb{pR>t;s1d_;T2-_JO^3-O`;`CB#OwRNTLcJ#jQ6CQC%`okjjON4iV< zd)ukh8+&{2Xidy|mRe5HbNIHnyE{G^H_!GD{IJxhL%_Pc8Hj?<^GT>6D`kDP8Xruv zl2dBP`3?90MGwGig%|+v^!Rj)_zO#o{hi8;l`Y<+r==Z@KJ{N)M8uQ#>Z50Kjpmvq za%z2Gqb0R|@Y2}HM&NS6_dxFru`O)$YsFRGoqB6>f;|*7@*dy08UmVrDG`cmO?=^E zPwdV2CUP~(&X)@y=>0=gsN#0wNH-PUe4x7+kzU}&FU)?Ld+i7v6s;2=@F3A+44G9( zo65Wa1cSA&A|s~dw? zkjMIklzY$E5Y8KI{R27yW6IK%3KR5tK^ z^}1|maiZaRbkl<$2zq4!#{K`OU?gHb4A{)>Nv52x1ut&eoH+KD*xI9=Uu-;|5a%1g zVEL1fyRL4Rf&s@3Qu=J%>6jvyB{gnNPD1j>_kVDkBRETGSfRP~Y3<|C zQdOA!&sGMoINx|suL~A0SZ(Q`c@S%ajcbJJwA1Y6yox?GD2_T!7~$zpxZ>GBjE6;r z%2+V?`U;|)svTvafLHeexPd*kkk14GixRS)#T3!N?gYw1m(v>-!zjpS@1f))R zmOg7-IsC-#xD|K$>7>>K*Ly6pu$`-8U$@VO(9cba-OPeac5qx@E@Xco& zXm<*TXa@nc`v0DGMKIwk&HRe`C?>Y&UY!&b*}*(@;hR!c^T?9epTLwU&wBOmZ4_Ve`S7xm4e>c1Ot`f8Eq?H@neh=~?e{U%$li`#BE z_4H#jQ{$peiQ`aPrY)EUK6;Ys{JK&=rtx4G`?FcvQU!tbcq_ zMm&uhpH-h)4U?_3oXTyz$duDkF!m8dM&jfMoX?mnoF(sr@_Lsd^9VgRD~ltHheLU- zz?tipkSoqb+V%0z3;M4`OH3#NtS7%~|I-6*CSq>N+?y<@1v2+vapxa6gJT4)H1i+4 zCEz-NaPKPc!-4uX@Og?rrv2Y??rVR(`Qim2Zu;xh_y1>o11NR?cRefcT~vR)`trZ- ze?P^bAjEV7gV2GYVf)73@tixuzltLN;Z5#*C_oRnDTObielvDW6w}?fm%$|%KP}p7VP~Z7+YDtNe(ELKiuZ6N)7*|5tZ zW%;7gQuO4R#p}P*GoW4#{N_vNHw;j;2I8_ue_HZk2b|^QqZI+94$7KzsamK}6XO{i zOQmo&dEA6_`}xhdr>7?)Sq{3L6PYcAC?>1;(DpIKcFAbNYk8SguXjStr;paGF)+%` z&f#co?+GV2cQ1g$;>0aE6PsB3ii?ZmKGNCt9ejqy$b0Xt?@8QR{omGs9c6rRd$QU_ zCg`|aH$&J|KU-c%(xa`r0Z#{{q$pXK5Ju24d2&+Sti^r$pdJS=nYmCx2XAVcvm|%2KVQtQPV@tKAOTc!BSM z$iYlAEe`;*iGR+~(VhC$$Zn%9OCU65eB5_o$vI8RIn>Odr)I)?_h&@G31J!X`0>}x z8JK2=UaA8^fyS=A$2UGR6I}y($1+Ju7+J%kmrrKVxsEmw5eSzJ#{a`+EiTgJn`SFj zVgHCT0VkLKoJAbG4je45&MS26=`N}kSsEY0O)JbM0EQ84qVB;gxm+0IHWhiI|o)fv%r>L@)I!ugt8;Y^BeF9Sb|m zcbl$h1r1OLzW@Lx7+nU?bM_yJX;$2eK&8^dV(sWQ(B%)Oa6F?p&=#Sfys%_zJD?bx4@63|5}dd zX4wV7H1xCN`PXh-)1}-f)|q`nH1FS2%3Aq z9Z@YIxE;s2bmmzIwRoK*+eemJe%F}88a65a9rn9s2A|s}?L!0=fHNUQ|?mY3)FJWGjE!metkXV~EZ`RYtXcjC`{_&r2|kXb zRGHa`!=26|o`|wE_J9#Ed@>UbSBh1z8^9mrfBW`xx}O4mfnY9TZQa* zzwvq>YQAHXzQ^0-hfVp8j848r<9PR41>^!6lLDqeK4qWPrqQi7 zF-76#ls}d`of%i}F(V;2=L_F&)nM*(teApr9$s5J?Wa=zEt!Jh`(;{YF6438?55qTlu5rk3QI;@ud@%;JC_`HMU{LzNFK@lsHTf z8HG6hlL93SVr}c*X*#zb%b~%MUZ=%-|GpRwglprimYWnko7`j2J8<>fT}|aL=nQZ$ z@gs+9XJCUSaK5;9)45*En21&5UNQg(w_u4R@cbNX;pG)bx|ZOO`jMZKS;iqCXX?Uv zf(eL6-~j-$7i|i|n{8wi6Hwp>e96^!A4=3A6>@`HE7t0trD6C=3mNmjJ*&BZQ+ZP6 zJPx^$_NM~^w!NaYjOw0!!!vcw9z&LIS^t{@}LmEL#Lw*9!}vW8Cbf97I`wZ z$2--sWE=zF8-Bokei*ml$_s#?~eP&cQXcK zWDFqXDeIZfoO7*p<3?x6FZvw!!%UA!zq=P&78hv;9eTtml*Vm~HY@$jpG+JN|LaRa z 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

0Cqgk7i5R=a9Q8Sz@Bmq|0GT3)-KXn@qPq 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�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

  • n7W6r>suA8hZeld#ODBzb{K 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પrx9L}-_PzE- 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 B25JBR literal 0 HcmV?d00001 diff --git a/docs/user/images/table-coloring.png b/docs/user/images/table-coloring.png new file mode 100644 index 0000000000000000000000000000000000000000..6c96daf381164c53e2925b314527c02124826a1d GIT binary patch literal 278972 zcmaI7XER``q{XxR1S$z4rdCwa#Om>s%4K+N$(4cWD3s0KK}JvK|0H zg#Z93Qm#>6UilRRmf<`zW;g zVdamv{op7(2t(HvVHuy2Ds1?_nxaAGvb0m$D!&QT&HjI}!>&nIXFj1M5G|s#mfE>wJPJR22@FFii}q>M>@D>FkM@h;xwn+#J2L*gHea0C{xSM<*&Ybh z2@(7st=NHixmMn$;L<}^Xm+)5aKZ3iddz`qq^^zIH|QAHPYsVa&J2$@pSbM! zy_uw99LS;U)URmVY7e29D#?_RgU0F#gtM9N{6CNBkd(r|RO7H?z&cL>?O*eO*)0?L zHb?4FFP#o8_lsxlXRSH*()PvSif44;ynL&<+ad|wRtfiW{j`4xA)8;}j<=Ir!nGBZ z746)v*_F-&=uUy>MPF{Ec{ z$tCBtow&LAPUg3{BUfY6|KBDVU&4Yf|GvJxvdrEDYamm~OV}YuQQ$RDmM3n${v{^E z0B*N)*Xec@E^+4ba`9ST4Rjw_rCzs-GGg?A(R`o+4GA8zCw}}I5MSj~&f~UVyW{s3 zzBXCq46LYf1J2Ys*Sjn%XE2*i`tOKLCh(|m1fW`kuSZq@9=(IZx%@tKq zF2gT)L}?K^&!8DZ@S+eSPpC#ZWw5tC+i^Qvz+Crzdd8q%o_l-sRrb?Q`xeZF)$^D$ zg0h6+9x=BJcT+YgJfHH~)CdaJtE=~Q`~KHAIvMe@qy9L2X>m)7rf-u zHa25)&w5AHGA}$aa!C#d-vZmA4BpUgyZSK-JUPBnI@Ow$Y*=R`g_YF>U*KE(it|cb zG~^rp`AR8f*9uPnG3P(|CHbjU{$BVoIG#f8d9Lrk<5@G={_nNu$|~xr@;6273+cQl zPUOn0{{QEe>c4K?ffZwXk}+7ro@`P$qXwec!)YF{pfDLmbz022uUFwXEiikL@%Whi ziO|*C#L^xDV{g3F&DMadZ65z7v!EybCuT*z=6Lh+r2Ly|$HCj-!$)LOgnyHF(_^c` zm$+Me5Z{vCJsF;M`6s;CgeT1$dOH@2?oUztdzhPkg8zMhVaxDcAGc*f!~?K*l6lQk zIp>Um#Zk4Gl}WSDPXk~Xs)Apzb2J63@b>u01=-!@`RU8RzD%!avh{EVj`;rmox3mR zncObZ_E+hTH|a-D|E&qd;{{+wY%+!1^vlD1(YwK^Qzeoq-;x7vM|!f6{pTiZ0f_9f zN)+_p4Z&E(gS+aoV$m)_iPg`HCO^#;jGtm0U;a4{fSJfS?I<3UCT`DIF_xGTZH#?q zEd`2Yv;B~AZxBvwt&66R*<|6hDsa}JQ00G@PT5RZ{|db$uobVL^fxzvwQ2QKl%bRf z!>&4hyXrq>9mV8BKAdbfIZ3p4{-Zr>Z1`cJ4(^|Burp^Ss^vW7NZ$#$P%i+&D3%$3 z3Ja?*8VmFnA$obP5?%Od@te81zU7Wn+NP6KZAqR<#LcI#ofX-+{rx6e8xts3Trk5A zXB$St!1Z3fuH*SbRo>ungy(-={cUTnqqHh$9(TGlb{Rc&S}SWyyUGX==YLDop?n}Jy+-woou>ut%FBjV$#Exim)f{}V9H=wQCHQ}y|4Ad!bJhODs zkX40pXBW3T*z@IKR+O^S_~72z#)Pp+y?4w%&iXNOCZEyJB7%C8^%_;b)?-rwsJ292 z%6P0-7#O-G(6dQRQDh9cs;K+LK&{!(MW4gt&0+WHTW z-JM>hSgUFq>x4K9j|5|yzB9sBnxER0{Ic+~BSu?P*<#%A7fAs_b(6O)bWo;neJR(n zSc|5eA1gm2>Wa&pnq23+n(PqBQ`c~OJ4}931W`djwaH%n&e&gG_WfS=(bMkVUi$TC z0T&^kJnOF3ytCveW2KNQe%BpL7?-4E@Pqm4$y(0^IIl4X2$oMAr0YekEIRn>g#{4X zh%5N)w4j=@L3ZSX=V8Fjo!0Te#leBWQPk^8L{uA4y6}{SX%xH>3QSp}eqt7%XMejt zBQNA;LgH&@XWMbRW!!a>T^19Jx6tEMvI3Ji*vuqxT8XRF{Z`f%lK)dEUxn3xWpm;a=Qz&vX zaWiWpVvKL~&N3V&?j&IwU&A4(HWyt|`RMs-iGXeH&fl~#+4nvq=jaZYW<=aaeKG_i zd-7Q+KO^Gjv{B#Lj2_`(bHkLwi{#$;P_3JW6&5$|HslKk)j?BAGzC*k(3Zs#4|!~! zlOXJPEz~azAvbx;6V_w)mEicgUpkKMaoY#prY#P|+sSoK+rCswZ>nsNQDSCffR*h5tVZ-X-DKtzW@VMB3Ji!)R_^Zqn-LvuUad%&jV+7dLdS{TvvHT6yTPu^1^&l`>A-QTQ|9KY(`CEU_I@-%r%lgu6e&4bAX?OQMw-s2Q&EF&-PneA+4AhczL zKpkLz_`@sy#%wjR5*wL>2@t6~x8QZxVwug5Ye4SX*8ci?BmUOh^Rs0Cdw-m=`gXr@ zZ)M^?)i{J={15mR9A3T%QU2rj(%9oypwKs+zBtb<4SNLg9YP~oBe;8!k3KloF<51{ z#SdXQYt~ZE5VZ<>>df>VrOo4<2Y&z-mJ?N4$Q z)nK?C#L`8tE-^8=Deui>?5%gNcalpM4ow}GA34cN{a~u%F-EVufJGS@uEN<#S@(Ob`8Kk&s=BqrLu7vUTZ!SIQ6J0PS%Hi)orjP+d?K{C$ z*}TGjnaZi+C8&y7{N5v4HR=*OZC4TNzJ{5)mX{y7<25b*yz~mJ#0VHlz8Sqsl9J`p zI0{r{VSVd|o#A~HF?;hy`l}vjftu#f_&&L=tJB!$Pw2%^??jS=hz!RiVhQ&JWAH7X zw$8eZEnE5Yh(#EJeY&8hf;n5dh`m{zlOOT(?`ddu7P}Ivw%D`^|CM*@KoIGA`R1Vo zSU#!9t}EFWV^$0nri2B}c~^iA2iv|+oMYiBb|cx#uzJ}%SrO>2q^fD#InW6*FFba1 zWR|y+S+73dgpI9hyC|&**cEUZuMe*=5!W!iT3#5m^Qt7T3*Wx&iaXxFftzo2UTr-O zbZ@JqqC6SM3a1)i8(*<|^FAlEeEt=-F`;(vBgYunB>C)vS}fiEko-fJ^Fe+yP6^DR zX`+bDRjsU){3`16tGI%kjxm&+#(f&^DY?L3LiNq2UIxHlcp!wNGpZg2MhpqYiWUsT zS(09;Vb8g95sutjGYt_|8ZR8QTejFK#6^!xc|V0~U2h8(yE;*g7K)2eV10mR_SMjK zYlTt8Qa(;#4$ee%PIssJMaAk+Md^)frFrR_85+X;CA^(nXMK->MQdJ3B(=1HKuMjk z@#-xLRO~B9ituQO!-g{CqaGY?x(|2zT->@Bx^LQ=kKE6%+ujE4n{0?e(0+XnQSCoP zte;pqi$I5iRAv7YM^s1rwXc)>dQK0#+(b()EB3nkl0l|rzLCd6I^&O8j%*?||Wk4FAN$v24sl$%4w_UngypdCh%;twdj2|3NEep~ykh^Pl>+ z^GzkQf-RNcNo0@aUewT{qsY*)gU$D6y|bONXS%h_CW-DFzux!t3Y27~^w$}@G0imYim^mkuI9$9>9GREg5RXNajBFCpsByop7H6`IT;ej+^@6jRF9-WgI z<&V%Wd8f=nJLjL{{bhTmasa>Q{jBjzu}iVfd1(JaUI>jG>|Q_iG8}o4OG3X_nqocC-rED<_caX%I1 zA1cZgm)0~AUO163J-L%V8DAD#E%KI%v>BLM_|?_~5MMjVfg5WS7=n>w%Y^TPH1L-C z^0PCN3a)3l0~cgF-JkU$v>!|)4yf#;^je^eFV;+MT1?b%qPTqK*ILr3-S@*a^6(!g ze)=Z1Nz18=Y*!c{Q|}5sh0kwsfCZ$WCi&)bqZ-JxxO+K-0!Cax;%?GkS7P3&_2NZM zwdv&T)|ML1brAEwa9;`+H(y^9@F=mBLUmw<+G?^gt(rx{&}+q-O$@Y>t}<3>7IYc% zrZlvX_TPdEHDOY!XB1sLZP~hCzrM8FoW|#&mMUpRGR1bNBZ|ZWy2;ZX`Nci+N7SUx zxx3Ta&Eh0$?b&4CRe5YYQbKNxXize+S`mq7pONutlP4d^y#0uuV%EB1PG4$AJI5(K zPj=pw3tD#H7^%$~{N9v%nP`vu8{YTPq&-<ES9zXW{yML#wZCYiBVq1@>1hh#d$o&WseoI@#=@#GP88Vy~^cU3^s>ySs{ z(}KEZ&zN|4Z8Klcv~OixeTr}XcnevI8hNZs7qjd6C!NP}k@D)x=qlWl;1ZW;dYwU| z#fRlgtK$7af+Q7(t6IhiBGjDRAk+VkbVu`X0aq+XeEh8`uXk?0M zocX(WGuA=?@V zC*JA5oATD$@zVv}Z`C}?bBDy`-hB%5ixDhhT!d3$ZafPpgNqV8bQrlAE75b==D2$G z0hUz#V-T*Rjl|BFwdDN#!F1~Z2E+1FNw=Zo zTh#09=s(@On}jnCut$rI%MaLAns;Z8qdi7l*`OKy`SJc8{>OgLVcSanf!_TuzIbK( z5QnqArqqLXup6wijn@E-KAd<8+#<=MDG?@* zm5^QBZzOYxqt8|^L{EF{bbxiNBqsBO1l?_dgVtM4GMgv!||-M8g(oT#YQo5(~Q%Q2aHax5<77m^Ye*^ zOhrOZ#-t|HZQKByhA`XnRRS-)j5oI<^oKu|LoI%bvGFv z&^6Tw?AwH zwaAC{uQ!^F-<)S!8T|4Lo#r07ZrmGST+->q5*q2q{^UpIHRmBinnA(Uq`*~%8}iHW zVQ)Uyx!^6YRG+Q4I{`~ePxZ@a=!x1W`w%K08}mk01}^&3W8Z|H!HoMmv=iZea5kpM z+l7iC5BWbQfMnYV{*4dd;p2nC`~?8KxszV@#X6!)zAYv(=DgpyeW5E&Uq`z!v8#xw z%-*FE8vKQien>Dw9d$1z_o=DS@Lzbl#9$vqWPPeAT-B|Ea@Mr6`svbu{KIbFr~q}tHSDOMxrPIw zYrVP6dww%1w#fc{F5>fInWGHi^T)%yeDL?M_O$+tQbp*qnd!!H# zCy3EJyG+V?7yI89*=HCCPR;5;`3%yUO)3dQ=BQB>wj|>hy`sKriyl8oT#)Vd;?o%N zySlTPVdaWeY3?>@?~+T$$e*W-I=-bvx&`jVGL{m#3bV5||ECLgVbE)hPns0mub=PRWwA-O|rq629xFws)ZAmh2g@8%b$ zFSeV=5#XK5XU+O`6Ee&hO%|}bxA{s@-$k)QU#3wr>Hg|((mXQKg%HtZflGzs%|q}j zUC&mzAjko$7XyzI4DD=^kowDnaE&$5u8(VzMUQZ*cnpbxw6^hRS=`+d*6GBLFqatN zH#>J2YX%3mo!M9ipV>akjiP@bhJh=|y(bxhl!u*hCV!akY29u!T^f$#sV0@Z+pg4b!k%3`Eb_rXq85K{f<+HFXQ_+Gy zyG1Bg$K;TanYLbNe@iasei?oD*SWG#0iS=9oFe9_`D@SrLOuqiqoe&|?}f!ZrDKx~ z{+~TM3Fn`B`bXjtZc)Z?Dz-3ytkBgjVhCjn$*Zd#gm>s?^5@z_om@xMvbgWUcd}sMU*nIriATU<2u5d{L4e-_aGX5+s3LszF6L>k^ANGSEdf1W4aA z96+SM`?JCqo$;p;8VtGn5fgmT&|sHlKg=fX{)6tsKO^d{v;|t!v@DV;W8|pkT|4oQ zhEZRtXuihDoN=k(<{qtn_{3G8m~R@tychT9HbODMxa=jdjj`I4sJrq{rCgp=NvHhx zz+#e7y?_?BqD5NJ_wHvCMTuGk?8l!GvB$mKj0+DCiUBE6oM+9uheJN?bAa-rG5De_ zZZN^S*OqaS2ch7ZLbrKIG&&C#J-BnsBY38p89Yj_+Tcfc%VMvrl~rx z{IuqPJ@hBsgq7QL^BEp)HBcCWNCyQzeEp}3ckY6_WtU!`Z*vDFy71G9v}IxxP@=I} zAjU?K978(8;^Jk(ea|laiR=4mnaGIrRU21}e7|GDXwBaSZu4!+KTPQfEb^3sj1ADN zXX0L*cqQ+0ToiJVfRgsSF)f;Mm9aTFSE*HN9X?{V1BR$xf;vyG?=Xl4KWe|W#0o5& zO}`Cq_kt_`&fijXRCwcC9uXVcYj-t&o8v1$QvrHSnBL$CV5B25lO(qP#T?C+)AoVx z8XbV5hUq9ZCU;wSyPEH%V(|TYpRL|DpHOx`r0bHngW%pp1pL*9+@5QoP;GZGcdrX$ z?3VE8`}LkQGjJ$K`gwa@&c=>lY*~||8N>8__O|cTT1Ow%_$G55fR#~blYYK#MGbx< z7@&LYJ(&U*6--|wSk@C@K5-X%Pr+PSvF7aUYD`j~es*rIz2}=j?f%smBh+VJZrG8%!FeRvVeBTSD z2OzU3G`sfzxNyVz_S=3~$$)0Srqnfs98*!i-FAB0;Sfpa+9=;HyJpv3x>QbPoy%gr z>&r#5ee%wml0xDeWnzbeClqvWRhPGF?azj3BejeAjJ^n&?)I}Fb9QaI)r%|a5<=6w z_N8nirOfTRd425nuh5E^-fYlN>-!*l{s_-vJCl?2;2F@SWNVD&A!G`2LtAOb%qxTH>?)GSXkH$+~bHPNh7G@Uh$j zEu9ad2Ah=LVhCg&UEHY$sRJ2De@*8;dGUC(Rs%jOs((8B!)Gr^hw$M`l`^aIEzM8Q zh$~R*wklAA`M4upo)KW@XD)6nURp%z)1#E=3k#72pN4g8-Bwl`?QQ<|lj8$LOK z*XW0<<1w58QVR#vV|$^P$7FyT>uiN93Yx^pU+r%{Ck{&NZb;W(7HkMzq}GB;%OmV7 zZS+mYD5sWGN6o}E+e}B9`EO!UP&B!8ruWV68v!2!CM*yTbmjGcu!8S3i!84NxX;UKDKybPXi^^e2lTC!?~XSJ zwOF3hqH_x-!BWN$J?-O?#JUB59Ip%tN4>(;%r=KVnXVY2#zHXxG43PfP^0_6gB#3V zV*I6#usKmqXzntM&M>ukdhWE?kr%d13IUpa!`82cT3!6C!09r)vY7b!s*)cK~A0n-^Mn}=JSTu5nEQMF99jbGE)2wKhI7wKf4oq z1P@T5T0w7=3w@&$Wgn|q5+54E*l+V;nwxaVDucB1d>w*rm_MjLGUu&l^YeKb)%;k- z)NKo{7r5wM8%6y<7yN#SKmZCQvo#TVC2YIauuS)dWQteMydu}&ADsUP`c(VAr9dFS zZOS4$70SC8gF5FV`x=mK^u?-tLb+wDIB$)be78(J;x8S%vMFZ4Wjib3=j!bK4R;G8 zFuVYDmvzf1+kOd&^}j7T?Y}DAw$=8+GL4yA=Nq*IMmU9EYnHj&bqwDqtd^9OR;53M zN+T*bj@^axS;-${-C=#0;&~9SNXHPHqDkNcG7GhBFLNsf`aKl}@!yhHI(LU4xu1WW zNXV)-? z1FXSWl4I3au|R7 zf2q`;=;BafXG-T;^rKI1{q&+(^$8~`c>BmgAxTGp<6%O+KX*dGkYNR?$S)|Z{w+M; zs-jHIpY(A^rYqNW`kbbeUo$PwufSVu+IwR^O~`m#zq|zI^%&YZCapWpT|zujw;HG^ z$Mp3CguPWr_9Z?%LxYxN?01}S;_ll9Y2pFV2NG+9y`O>NPMgy4FxcchP>hb6EK zn>>}EOV+!w0*=PxbMt(E$#UjqVB~06HAYy{C!;*_<~5m%Z*YVi4 z8TBvkolAiKi1A;-S#aC~dhYP*=MRp!QvW;V3oN|sec8)*su6C2m`uMq&_Vk*96AV_ zGJS#fgKzfZSHreM;^Qc?ARP;ZmblHxSirK%NZmD6=#Jyq=omJ6NihBHB!7{2Ec)ywF~=JmjyQls9MHu#HU)gWZz7H%L=Bt{;Z z@bSa&hb6*dy%m=ziNsl2Zw7{IZtW>voVb2VIlh*raIToYkkb1te;6>Uv@7S-=BBNIqF{_avoc+fpAB?0fn7oVMW zuP<8A*gI!a0*M4QxRg|>7s4YLKy+#XOQ=kY|CQq18#?RhB+UVm0~C&_wId- z(((3D#x53I509BqqEr$lHz$+W+q?3SB00FdtYT=J!0~R(AqLE10H~u7@8e&ixK1Vo zNKsN-boBBm49r%A-X(mm>D}6leG;KHJaw@Do!?bSL*pjk^ZOG97mAq%iYq!Ydl~Nf zfq*+}D=X5#G%~7ftv2WSffd#hmIkR;^MHz8d4Q$49HQpwTZ4DPPr3(E0+r_gMso}& z%0vpaJ)ue6V!pN-mTbX=&MG`+hJFPw$=Om;M-n?lFGz&cv`3 zah7~rqka3CpMROe${l5dTLUs<@0JU8-cov^dmUkTs(>MXamVjGpYDLMo3mmX!u1qF z6Z`|xsb>^)#hsmguey}%u$M6WgRGm5*7qc{l@|1@hSqxg>iahy=VW!2-V(0gZBB)p zmehyqsAaQKy&NL1OSh_{EiAqBKl-}gP0iNGsyuH6}NSXc+?JBnu-wX0BP8L z3j0ld>y-R`7B23^d%O6w7+Q~u56oRILd7E=`uuyLf0~%u^TehzVhT=2(Xrp`*L;P2 za)EL`%D!lSbbMsrC6|h$@K;Z1d?wWUMvkFfa-MUKKaK-na-f=hJCXy?CB&K2mQY{g zf<7e44quKW56p4FMw?~dg{d-Z2KlHHkH5hi@Tld$mqjzk6cVBUS`T7^?B|G>)4R_mQQjEuL<{_|AtdIhL%|<2@xLk zPLEC2B}&MoY5{LpV4y{b_*R=KZa9ZLHgobEKOFPY1v+^~5n(~o%QBWTDW1j;9ot%z zx-uv}E1vMFTV^o}R{xY%Q`(iH-w%XH1L0*&F@s;{vblzv1~sMvCbEExS40zDZeTs*3BGE5G<|id9Z#!ZEEGdeA75m%WpD2bKRE19+|rV*KQ_%nVxW$4duQLvkT^oW z`TkI0?3%zDZgawzK=6xP!`gP5b;36tejDzYt-oGmI4z)3m0^_w%sZlZ0eh=DSh1K+=2~$^<4pm z3gyPm)MjaB!Ihpu+~0)>T@HUO6j^yPo3cP4M!Ja0Q8D5bc=z|}<32H;^rm)=u6f22 ze;3yiuO%6upKgUr{T1Dc%D#cJ1}v;6WemTl5Fr;x!L!_f9tyh&X!G8RR+>AnziU*~ z9SN0k+l~;5^%w_}eB@qOmY7feN652U(Z}{#Cu>3xU%yU+zTK793j21dw>6JHU8zk7 z!R%A3-(AQ&sTu;ua!VGsOr0XAeox* zX2<9((u&lk{jf}q0>@fDn@FKr;(_y)v1TyGqjeUR!cuwBUB>jd_&@9 zZGNP$UJUSv5x##KxmKiz;)~#tpCF#rx3!v*5r2Kg3JPh{ZHP#xLCTuY&*%}BFe1G9 z2#Xp>b39l3XBh3S1)EB*8q7Gcf-hZy-+nkac{>#ue|^E?5)dije{m3dqb;{}{SZE?TmFOD7|FJ@S1oy4;V}a`LB7c!3G}QK z&PxP)_np@)-_II1W#7++;|8s;iIJkGMgCKGaMhoQm9GSBUqD-np&NWdk5&HU>ftkf z0|i$!1A?04;=sx+rMO(y>IDN-8}W09#s9F;+;fe9E0!yt5W|J~f)^W;%;^b4TaG10xbJn#szT_Bne&b!&;wRCqU zf+de)BJ&zR_~}8GXMT_jE%^gc`)tt)t*1U~UKY8_2UOYjvXk8RI$$^num1jer*r^W zuyPHV?u}se#sdxh&_|vcO@Ph4w-jo6;Y$AP4DaJ*Dfq~;f;FQA=f0e}s2$wsoQoG- z;#i75A3lt_eM+tyQ5g>46hXXY0gYTgLz_1*Y_Q$Ee|+m%-pcLe%#EgY2`aZIw!wQ% zgWS8cw1u|TJf51p@8@FVW5|R=3OTc3;RhQJA;L;92!SbkgBlTnRAMQWP7t}5SQ$S3 zuqRc~SSe@c*7w4DVIQvO>V0u7%duFe7!0r7TR5oCAfHa<2EBh{+KT=}ylL6WMHU7Z zy+K~ch!)}(9bATbjHAp6QHDB)jE;+*PLA{R!8^17(pIyEUc)TSohobx)SRK(=d_pP)(V7Gad8THu}L$A-axn_CiZt zwNP@SYhdO#m0!4qL2WlsPd{<5bC>;LZFCJ$Px&xh9T`w#;?ePpYcod5Hs?Ai#G4DJ za<>3yg8fIYCwT>-^IMw|w$f)|UZrAq+OvLQ?J|UuFdGOyU|Ue6iQXEC&Ub=FZ-cHu1U&GLIjg2bLEwY2l69>5Da@r)_G zOx(}y?0r9nea4t89UP*Yi)DS)p&ecXS(la!Cmf-7=^h?zG~>}cnv&;|+(bO-pF}VG z*-xL)$ZVOJl@8FW5a{~qlF(xZFKEj$pK+`7e=KcM?&$*)9f{p$SdV^e?`Lb8kwH9v zv(frM>;7O{rtc|s^$uZ{82N75r=il1SRR+v+NAb;JgADtB0ucbhQc=2r37TB3wbNq z&c#Bd_J~o(b-vD`#X~;F(bkX_F&}ha-j_ZZp#U^<25erXP0+DCpVW&_t;so#_oZr#8=XGS8uEn1A8pT)>cA% zt)iE|A&XJhA~e*BFSz?GY89m=$9T_{uy|;HB;6r9CN8?+~kc8mq%{qwzv@PnlyXl(Xq*!jN1ZzHisn; zyU7XZWC|mSlNDZVb4#2uw7xwb3Rt6a+#&U zi@7{$=D2a|?CewSfNG1~*lKx65By(&e}*MA8Y9Cwy}hw>CguD$==M7KF9OG%^Cl}R z;kE`G$mimlV(;p!i<>Bw9S^X_5v36$=7&xEjY*9uAt!!(ev1fG_=P?evUVHO*K%xL z+Rl_LauC7r-ZSC`zuUC#=AR=cisldh$b+ zWG%3&GJ*)ik_L!#~-w#*+kBAM6o{d+GlO1?)`Qvrkv8J*Q()iG8A zSbt?4_iv_+d^yP&-%gE?hv`euI?G>M?9u_!!zeh&A^;k{dpcGtWH zv$@GXf3N}?xtqPNBxAJt$@ps0gdh9$0tYf0WXyzgB&#`Rip^X&S%9)r_HMA=M3ThR z44AF=shNbfRMSq=uE?C%bea5IkW*0iBV9ek^YljmCBRFuvKzMFoAq7*uB@b=xy{2h z@Vg&J3m6`9lmjLX%Izd5-!idegTyHxaKny=?*Kd~Jl?9JlRi<+YFj5bhlIkta#)Gx zs-(XgjlKMuHWsFJ18j>-Fu6BRukQ3M^cqq{8yEh}=^Fw)Cvud`qJw3B(`Lvzl-X#z zhhvnXOX<5AtyBn5mQPgfbIh; zG_d~|0uiTH)wR0sq!%N6QWPFtR<{cZLvW# zHJiOgaLpF!eoxA2G>e__gk7S%YW?FEvfLr;yrf-&pljI*VVwb?p0#!It+_;$^1QKI zen~`Tu{M^R(QPxA_fl;z-rDL=w!%7KNYQN606MVP8778SmtKP~;^}FpjrW!k6Rxrg z6>^s@c=Dc>Q1vD#tVCU+aJ{FnG#o)2cadk8-j+{&P+Ru zeT}Pti$>CY_eDU2iY7G6;Oyq2e6(l~`_0`e3vksJhS8nwom~{cWRuW-M$V(p zNR&*>_5JOAt-`~E&lqZTr%U44WkdRXjsKW;VVHi8KD#Icw7$43gS>1fFs4TuJ=|>p zDXrp8b1sWP3mhUx)RTeeT1 zT)&GkcLVY?XH)soquF+Ry%pSQs^Fm9J43!91cPm{WPz<5?kJfa zJ++b|a=_8QXjez6z+)a#4s;Xp4dAvzark;?R-rTj8{}6S#vfz8s6ytV?E>7m*tc3+ zR$RE}z4#$-!J~_pre6I*+WX>Jr;+Cvp4p$&xKul&fNVcvMEa|d9Tq-CI6v_klff=P zZow!zz|BbeX)C{+vjcud0U^uUrGWkKhjsa+UZ7jN1+OYVj9|lv@4n>eDcvXz^7@*%O6UQ@qp?5J8h(t6emm3mQ_dG zWph4CTA?<Reh`!1Es2#0E^2N;NHGcnJTx%TA zR%my6W9$;UK2=SUzE1ElB*?3-PGT7Y@0qqbQ@w0gZ(8KG%d`=PChvMFSep>BzhRi@ zlZ$fls=El8=GALOLp_d%+4z_--Nw7*jc;vBrA2_ZWe|^=dotcPDlv|&u2|@IL8g1~ z&2x|&z~_W@>SpqnWVd^n+Q`^~^`jq%0{aNpv8;6***``)6XO_*l+eFx7QV~tIVZe* z^g}3-9$}-PN0AHA5&<6o78Ti`U)Z6;l}}=@`A}^=uYRouAC%`N=(#4T{UR}suSa;1 z>A~A6->+K>gD_on&OvM3fFIcv23xm&25cU%e)b7Dt%Svl3u~RBd>tn(KTAx|!ki|U ze7rti43+MT)3|E^ueyy*??1_JjtnrT)dT#@rD$KVl{;*J+85Tb0S`=?pJq~)YE9@) zOek{A)t0r8d)j>QTYTi8X2i{#2tS&3Q(L9Iu9-;H$qo^=%x=FjcV%WBpko9jt($)N z!Vk3P;&FeSB$yGT!Q^w_MFi0BdxAIH?{x)jg&r7+PjT_sxy?{R*{$o=O^v6soSu*i z`YWj!K(3A-Y8ZWFz*NP-!3e?x4(bnMg?_zfK`u=ak2X$tt#)nZ_me$XveR{!?y7LZ zKcGKc7VRH*mU!{9fP}#HYf!q!RCZ&CJ!Ut}Kl#zDrI(wSXIoi=W)D5*IrQ6#${;y)=MM;{ zC)F85G`;B`nEL=0WWF3F-}fbhq;jLRe%y$4JX&_pw(f{unKiE?sBv&_Mt>F;`fHs- zW|NbtVt?=m;mY{(W&K1524K_w8(bqzsu^x5r^ah5Lcc#-3&){l+q!Eem4>Do(O7c-Zb^k~*bkc&Xa4^cEf0;0nVvjwrt>St8; zNhJ75T#Qlma$_@wVVHL3?uR)u8!Xz2Z!*SX)^&s$m&}oeP=y4BxO;##p|BNpWZWI2 zT-7_?n9SH?>pJ?v+UrJFu0{Vz_m49|oYh~s+$UY}fq8$IN9gNI@I3Z#O)xb!4$XCJ zIREs%al&A)`S91Dv3w0bC(l{lvC|O0yrGE?hvnektpj_Y{DzlvLz=Nt;GvYDDEets zYlKjom4{_MF@U1l&(B^>F-yp28=q|o9rg)ce$8q&xzaqoVCUntZ3?g3a;NV*pT)WC zOB`PgBbDSEnYFI)EZ4u8$AYqSFpj15OCc3PRP18cdKbIO z7<0tJ|Dwo9emYjM1rfH0Th^TB++_fHZ-(q01+-MJlG65ZGb7ecc(gwpGcI|!c}cw% zdBm(H8fi?ncKtm!{qxEFcz2OTIx=$WIih*H?3W*B51`y;IUjfc6d_T5dnM|D zF*Y^L5A#-(f+8`gOFq-EPn+$KqrLMA4U{RAfsXR%SlUNj<5CbC716d*ysD7p{Wu3FQ^verZL~egCrp#Xx8%g?TvCE9qqo@{RD@% znfnDPzOeE#+lfjDqYn2rsq>GZhtA>Nmpi4!gvjK9L?_6tjGk`Z%LRmS`!51!$`f&Q z?`SS1e6}(f^0fn;t@fZMbTkYp$BOq1h&%#<&N9S%|8Cq%)?eWeO zOc$v(C0w-I@2u_0mAl-6RX?#l8)*}S23|^--nC3U>ddDo8E~f@$S(=0-8)O~EC1!# z0zs~&WE#;T;NDHrz{IIiM4~EZ!>g`x9aa*U@O$FJ^Sz9^zAqjf_(irCy_agI$xeup z0w+=091@3|Z=wH5QW(2R%K++OB6V+x7-I3~zzZ$;e)+Bb5bQin_$KTCnpe$2`gCkj zKEi?UV}1dh8husDx(qKk(WPJS;Eun<;f3x3_ z%yx&?KjifPKWu#kR8-yiH;90OfC37VN+VrTLx^-rOQUqhP(!1lbaxEh-Q6WQbf?77 zHFSQ*SMUAb`>nec>ns+`?6db%dq4Ht->lI*w*`Aw{IBlCfVu!5Z=L-IFOYLt1(m>p zVg61%*D+410uElw`mJbgnNvUDH`uKX=kmsEXs5YI)U8#qr8!5hi6loO)-l$bBnXHO z?R2k;yrL}URf>h5uLp9Asm|wHq`#&$zj_x5*iO#r~DEc;qVl!`(m1Cp6$L|>ja+3(qYx?H>oP?-$3vD9-E)%_SIEa;;l zY!}Pzk~$ebCInjHU042zeWBTX;g>%ZTlQ)!MWa*fHXIFb>kbb?qy~yLK+z@84iJv} zR|AJTlm4gO@fE1=-UEIcQCXV1)*f4<%5!L9-I7PK$ztX~LkIYU;RrWj2hjK9(AM6dB7if3keKftw-M6YC6yhtINf&4N7#NEX7Cex2IxByI)z|*z zfeFlIL-+;d2--L#;{ewfgggW3{$OKCEi&84a=4ovl8lNr&|hh@SRXw5_T=S8wW}Fg zEtDHX89&AZDzOM|1B+zDM%7c`h;?W0fCJ!u))Gp1SMv)A51?*DhtQKa*h}KINKf%a z?@iI=Pdkr;e}3NZ++aWMr@#h;>Mbp!B?VTWa3+e$92&Gvp3q4cbl`uY_X2+S#QLWT z`K^2#f@|<;_3d>!5RNKRX9=%Hag{0Hw~6Fn;Zc~qITtfq4qcsCFtAI| zUhI`Q$4tRh%53r4h|arqy|;7mE0koKLc}BrdEIYqYr2rBmA>!3hWGbiDyO8p-I6sZ!ZS#KTWaZEm^?5)Jd7B=WcL5HpXJ{(&0{- zEk`PuQMerq(XGF~*bXXUr_oQo0cwzrFFqhrvN8vWTo-zxR#NaX?r1@9L6>wr!{b{U zaI?*o+HJB2Y)1LEu!aCY@(4NAiFmC;kmc{C=KDP$g}g?J`AWa+W;|1-88o+Q$mlrs zyF>pKx`2qhs=E4)C!Cu4)CWGY`*E2!ZPegbgyC}7(P$A|U!#6N9hv8q+i8OSX%djG zfHywdHd~N!S3?^YS;6yxuTgU`$+(`97l)CUKH2T&hcWpe_rUK4yq9eQ1?NlM3I z!lHKI`hwJDBmV5O(8U(VhK!*~Qf7`xe<5!mmkR&AF}bTqTWI28w5V8*#e!S59lKNc zA&IJrN?*H}?(tazsnOyM_0@xV`{a$VOz|V0`cU6>rn0Q=_AZ4vmaO7PzO0jRTXr9U5bK-3?jb zNNP;J63~qikUYQy(UQAls3%lTk2Q9DM}4#lN3w#AYVlxTm7xTi5W&~tVP zxe$i6_`@);eBCfbPe@Qy8ZfXqdj zm|*_ch_Mhl|7=CunoJv&3B$Wfaz~H53`9Iz?p%Ml^9IN394nw88HXU@Xn&o!nCxPJ z3(1joZ`B9B4T0_-gG?G#Eaw#61k-VlqKJW}ujhwJf-+iT8{bf!$unG_CBgCqGl>Ga z9cA1!>UGB!-lLkyc-o7Nud7z>!)ZY|NkPx|-w_&j`W0EqUTM>W&|865p-_7TVWg8DuJkW4Zl|EcS&v7O}a6 zIP=amTon381b-7>D$}~I8RE#^1Hpt|y6Dzf#fqn|kY-!Y!c`G-B9C( zIWM9SoK?j;vc0KErc-^H*ZXGB%&vavTx)D~?dWwI#t_WIE4=Y7b+!}Ek-yIl zr|cDJliKfM3wFU$;X4j`X=WEMJ0_5c!U^^gRWBDgq+dCs!!XVUdU8G#agBaqk+A!G z$Rm^hnzCeF2I69uy<+JfcV9dy3%zMvpxD}p&I?QO=(%TO7V$h=q_`Xld$ncbc~HkH zw|{VubC?8rHgvo56Sr=B{ybJd-MqOQt#Hg^pm*;63;f$>TD@nN87N7HJEWxKzurG;H+kn{;+B;AthmW^?#|UM8S!ed z+G@^j&v8Ev1%^D=At4vTi-?(IJNwlQ=HuW{@2E#f5F%w&G9J`@OhZT$ zP`roS_f43#@iO%jp5e%7^zSl8vNhTVFyz5S8olHJfd)@@NuXW#jRCDYb<=g|uv-!% z2t5ktC7Yr^UrUl8&_>+upmz);o`&rq?O>5QFT>-r(?Z|!X^ZGy7$?>Ywzo-(lY)!< zOOcKY2OLOy8(z8xfNLRQdlr>LQgAC`eje>yley-wFqOqpmaB5(>JO z|1RG6{24cqB*{Py88$MMta^MJ#Cu%g)x!M#M`*OVuA4%4P;#OEzwmha@{0lY!G?i^ zrl~>jb*%OYN8L(&;QF3Ac^FVoshsKoTTt)ig;z$yQ|e`^*Xlu4p{UT+rrnw~6f6nP z`-9?%!#&}X8oegH4sX0W{3Dkc+TJw^347r2{_BSE(z>J zd^w}wRd}6)r<-H|v?dsRyf;~=g(qc^jSB0XeLye8!?+c?zbV4cK8bC-P*@L+Js3N= zKl#Z-6hU_30laX`0Z0yg6gOm9a7#Y9yBk=j*W-B&_kxU36GeEA1aTXAnBN-!?IwFB z(8l*e=5v|?Gaehwlm=)muUc+TCwj18+(uZVrKbnYcj!9W!bCQA=Yp40;Fd|>2PTR3 zyoc^^VE>^7eY(}xlGlDTtbfLm-dxH5v9?jT!q&~HQLMuKW=nl2HchT zn(qC2ZHO1fJUzBePPgIz>?F%*50^8J@>29>C9s=#Hs9i$|q9 zLVf|WG{Mmd0jd{mkaxJP6{o9;JFB?aY%P|WZ*dc&G9YWs{C7XjH@9%fFCM=uurleB z_2BjPG1x7T;ooY1=rz^;4Y17PkIAEaq{b=9^jhCup_8Q|bsG4>*L=Zd+KqB~1i;4U z?NW(l(1H3u+k4J~#1J06X{V1ywx78*PHKis==}lf9p{k2z%SB3ZZct?&@FA5+QSQ# zDcw?R5c>8r5u#V^DJL(xyM}a5eDQr_T7|AeWWpZkaR@1L1Bn%8p4*Ue6i$)@&oiCu z-61xS?>lkDM@pSv6P7gmke(V_ryh*uY#qoaasjz8=9}#BM|~kYY^Kw8jTVCfn;b(o z5{p~hmE6#fhV%UiCmRfxpo2tjiZ5K&9|FO)~>P6 zg$&iZ9q}I~8FUd>Z=RmC;6@URW_hG$>V2?e%^}J zT~*WGuKFua5zrl-cGTX}I{j|ur?Hz4is6V)sA-nykvbpJPxnA6$-ZbO5*v*B5`u&b z<9Lo6nf+{6gn_71u}d1?mQN_Ft5b^=s{Uyl>|VL_)KC`%+95w8es8 zfXc4Q;0oc;A|;m%o*q-T?r09@v2IKH_N4B(m4y&Qe8<_Y9n+$|pflhlAweJE1o3wl zFdK3ls4za!$8i+sX~aW#W?_DkU3#TAPtH&>od^4n%Gcr+la>|d3zsWg{Q?g(?u++= zXbC@l$Mg^U))ijyq$U}7AA}n; zs|@b~g<~2+o{QKZICp!Xm!N(6m+jx}1D?ofxTKLEQD8l}Q;y=|A!G-}p8Q0h9(E3} z;Yh@D_Rh>+-CYm#knj;b*(uf?xia`A(ftRx3h+7dXvX=|tr_RIpxa*zz6f%s%SvGI zD*(YJrdR-dr)kc4Kf^5x{o#)S^~QFDSS#YLe$#vB0!!h{^J@>CN>4_M^7-Ade;sTd zb-O=LR1g~ov*4h!Ua0X_6_5H>@`^&i$n@G2Vx(%Qc(B#Ng1E{jnb=%UN z5-0}gm9%uNJ@=D`a2w%7OzB-Ui5$=9y~TzVNQ=|Ww^U^}dqEJ?7){9Atq20ywFcW5%}U>KUXLarWLgr0&`fPz8nN9!Fl zp8_v!A6cT7B162l(-iZrd?G?eg&zxABg)A20l%hk3qYpAuRdl=IP4Bo|JHvDfazob zQ5kfLR{SluqL5+R8YF6Tab&s6W&c=0vf|yMp`INeMVJZeaTjzy=GPT-|7K((t!`?i zPABi|LiQ{+t@KA|wXp74li_P5Hze@BQY1O-@L-U>F`X`v+4_+}zV8E<)fGF;sO1jU zSJ?smwaPa7-al#@euSRKyvi#Vg54p z0J>IW^CjmW5plmzRcvGLy~6h6A%5x9QAdz@_8zfe($NB@%#h- zttlYLx%_&Mp|U66+timl3OVjUDOD(d`?ljfxbb2+g025E*#`NQry9qd>WOU5c4{ z)6!_O)jq(srV4*Bc2Hp-xRbQ{81~E{2^DAFLRG(T2=&`RHt9>Dz<~-sHbt|IHxm3# z^+2xJN`w=i_R7a1<+D0*Bn@I@C%9?ka={1gcT~7ItXu4{mM3(@2s3%%`JtptO5;}@VNsm}kcw&)X&8pP z42>BJd%d`MD&UJM$;i4w`hJNTBcKZB5cCQ85$wgNzHG(w$6K^nD;kX&JHtMSi^hVK zD2bB>B z(s>_MTQ!`JhFl@uB3`Z>Kqgmu_aJw@t>DIa|Fw1=%{9Dq80m2rA`}%nh<8Jtf(U68 zh-9wbbk}xcCPP@Ln}jozco2<1U1AD&5j~ze>74GxXBF#$d;yc1mp=w-f;`fxh9$tq z+;K;>x+yu0q^QPmYAXC_5;6a!EFPauJcGx_o>!b&F%MbqI30W!8xMK*N##c6^qbjo8TZhUQ3W z?#&7+zeOA8ix!`!>(95F1RPY0WwDuXOV$QA=I!J0wBEEq=1xKS94&G##tLS)7#oF>u3~=6OWN@liijDhFVM#%0o{2V_Cjn8kI>+@lU9t9sh)Q z(pVMi81(IE@63N~RFufLMHp!h^I_4pjE)mbRZQ`(FVC|odj;b5uLY)xyxfdr()(V_ zecF^)Z3*48qxb`$nonNraesGP4go_1enJY-4CN$cC&HGnG_>6#)(G&o>wJN-+m81g z>4woZsSi;lOyg`B`Doq&pf{nV+uoS36l1BKE&>?^ zu+*^0#&zM06oqx)IIk3?ei75W;YzjVB5+EUx!72TBG=!a z(r7zTU)7rwXc(gyxW&*u?*On~A{`>p_oZH<0KhQAr&4JGRD!vQmc5R?MK(VV=V?yr zmPT=8J@pi)NsRhr7oK&KX1K4}z3=wsvlaU6NN~H*i)j>ywfRP-1tQZ=wlbG>HamW( zU@lUE6JdHEN;NW0Pqrej$%x;|pM?5woZ~!ATWsSz>M*p5B+8%9eba{+e_*UyUf_A+ zO|i~`#)g8MoUyEn#{1fwqT9?N0qIdR$nLR?uuH!X zT3qk#Bcyh`oagganj3uX0dgI#567{Qx zwxO;QVyG^8R%82 zxHhb=^4TedDKe2_&VY%x$1zH48dfc|@#wtVUOn#40Ba7rl{eudP{w{WO70Wr0v@wQ z%J8do7{u%`)lw(tzHMbudQZyzP>To`{%b_abBk8BVOu=J^br(=yMHi=95-HROxN38 zojk+q*rc9!Y9WINsk5CH4(W`u6G_2)?!y}ZvSk7%aWoStDYt?9%8Yj229u=jX(Hy= z6m$kM!=E~h4}BHhkL#2jY_YIZWMS0Adr(RA4teXB@lbv0YgRqTg9p0+asH)o)z z`fxA7u(K5vxdecc321z1cMKx-i2b;wIUvEiwZll28kZ>Nf$&@w z4NALBI>#ucRsp4pOU8=5$b6Uh!MXU#Nq|6ut_G;BL<7?ng?n20b-ZB!H4YWwq$aaG*xnO`NRUqC3LW2k?@2TVp z41F}!VyHTJojBLno+JYS@^9z1>6@Du9B`zruyz-+}6rmnk`rgQI*)t{pdmrjej1C1UHHt>M~=tBJ4G4Z0e=1WXfvISb^@iF7a zxa-sb_L-aXd?RiLP3O>5+IL8tuO2^LbURQyBztHI6rt6`b&04we}wb&<{sRP^2*9k z)G&?xzLtC51L`cZb{Uptuy&3kFp_q&5}so?9_K%)?3k}<1a-z0SOD2DuzG&2upp%= zqt#cT#3iNikcjW%p{1BemIE_rHYaJW&R3Dah{J87u*5yB5mU>LcSC)UTE}>0+k>oF z_4u|s>Wc+lZG#$q1<2GpWm*^HnrhXbogoQ$8%u+d`1nH3ADNdit8<%si zc9%6X-&ad5shtp&!!5pn1}t}6@#2P9lh_Db>-Xiy*JlRJ8|?P#o4HJRlPJdLMC><3 z<9SzXj>TFeCU(EKg|;F2`AK|pzX!mW#}B3C&PJTrh60hFIFfBI+oyT7B2}Bo2=H#w zAm-hDg6o1meQ2c;HaweYHN7Q9l(jQDdrE~ag=deEC6iG$6HqunO+TB76DmuzLBt|`J;7VjMK26YcyMa zXve)DWeAQWnVNp{74IZew_V0|Y&lZaxXsF{!Flk5tN8ut4pzCdBmzzWhu=c$$9 zUtIX&6Qa^q%Y2_|+Qjk!eG@Lp@dR&Zrn1}PTYViNZox$i>^v&i4+DLCy)%B$_&1O*OT)#N` z8jfo^&QC!<$fr^xQR!I;GTjIjvT_OnEHnwxG0vczBDRvS1e%(sq35ca40CZ=T1X&4MP9CODjOH1qiY zcA@2Yg?%I-6f~0?L6wP;3e$B-)5|7z4Ia)Y5E!B?NKR2bnm6e z@-xC4rf&GEbr~d@nmE=XoNMF0@vFH_;Jcr@DDA2j={^CxZmkSw_Qh$SoAAAtPOFJ? zBhmWMSd#F?&;x`(D-X*R75k9G#ywR*+f1bC5Xc5=j}3<0O!*7(Y-wVM_#9*ZWu_{3 zOJv%hT}#|tM!2v|xu8!Xz^851T204ApFtS*$>zaFY^dEl4 zMtiL5IW?{`Nf0ktvTf}~h>V35e8oPWM7w~mTezz2*v)GP0(+`AHoomgT3P3fL59~k zz7}XMV;UeI``E^2Nxg2)`m1poXQzxwH)@tr6eWR>jt+C+t)-r-GK*tPdP1SNq(TH_ zkB%cq>^o^vrVT)mwgtsAUlncr66Avo(;8k%|N8Zof*zF`^s z$OCiF*P`MKY?3ChoAOefDMeyw)7~m_M-EH6$Ky-$!3tS>oubLmEs^67*SFV-w?)Ui zDN_q3i+heW{T4cKc~?OLw>mH5T*nz#|0|~@^*s1660B+6p;whi?LTt_c z^PBr|cFldT@&%(XRn?tM-SaZc_**Q;4aSN>*Bi|fi))jBDs0y;yD7xR#C40#wdC^) z>NVE}Usu5uca!%oE!@%tcW*b!v7K6P4ey24Tm{{=%8o>7t{vESTTjcy&H59kr(vqf!Iqr~SJEiElgia>X! z(h;!PqxA=_LxDF;fxNhwRm%C=KsJq@%Itk+(53!P0xn6ZTgO}UZAMTl0YR*!uCC8N z$}{dNZC>wk4OK?CY!6VILt%Q2;@D(olf0ux8iorc+}=AP3E)hp9?%g|_{GeO4!FtJ zSFBrTKjgkJ;~&LI2L*0iHepiiKGSIaG{Zl7KB2dBvll9O;sH4bUh2JLx^-lBg5w|S z$a5#a)mF0XEEb7tjOU6~%*C6tA!7BDhtn!$(Q2lmuSd1X5mhkmAUa`%Ee*GAN3NV9 z*OjG_o(Vx?o#_tWH>Pp|mBw?ExdK1BikX;VJ+yX4p+%F`iq5&T&r4{d)~$C<)T+*i zG%Jeopo=B^B1Ltblj9N=b2$}8Ts&^L8oY1iB12BD_mGzw!W18DEfm2`F(oUo3;P8| z60Ee|n~>I2*jhlZi}l?R)WZ27sOgqR(|> z3Ihs8O{Jzn!tK`ApGU;P&8-(1T7`QWH|goOa0ybV%Iy3jqLOH~UNR|^$!jVoD*AK2 zefxGR^!F)8Oi=~Cy#W-;Yf2$*bWt~WMhoEG3XyBWk0V|PN*%A}SeT!kWyjcXv%+@V zzC#wZzDZ`J9zG0CZ|~P1@PQl}dJmQ4BQll}+^T5BkN!D0O+nT7-C> zweWV$oX3MLU2}8utkl+x&z6h*!>k8HVH%wa?#BO``qswjn>x*P2CQo8;tlG$oXtr( zFgNE5n+Reo9e&hLHUt!7VcmF$39@snh$e|4dI=Aft;TA}Ei<_cxj&QDC?`r1z;d_Q zeiXJp?`k<(Rm%nQP$!K#p%b*N6q}eT?mKvYqw{31_}5+Pn0;BkthIv(GZsmC{?T_T zeC}Gpf=p*T3yZLH%_)aHR%RLLK5bb!5x&Hmn+JLM`5S>mzioPYZt*0y`nsz}CFhG0 zFdNI`t+$pkjvsosxy=g&V$5?6nIDC(482TSk>uG&!-}X_c5hx0!~`mvi{wc{(PGjQqN)+}u(o z3n5Pb`g-*F8VH_w{jTrqJ6g8o-)#ol1DqjWJb@-{Fe0sv7a7KElBb==L&aVELbKt` zpA+yzAi&7STa5Dw@EmngTlWuXe@GtCUph_C-V&$$9-#*3#ma z&y!K+%qt@nC6uHxj7e3yw6uC0_A<4ETRI$&gZTcwUEBk#YRzfdTZDEca{OoBO6u?e5-* zeCr%n>pivMTap#gEWTpkrmnaN5aoE#r2f@mFAjc}O--O>u=<>yp5Bp->+zPQWi>@! zQI?(jAI?{NgQJSns`QP$9$!8 zjkO~R|IRv9IWbO^$dPEBV_V?qu5Xm()l#GK4aTx>A`Ygy$PWhU#8f-5=<^zi75g%s zKUh|p+^SA(F78a(Nb2Y`si;pq9o>2*z<)It&7e+b^@jj|nEcz*3H>8!F08PZkpJ(0 ze@w(V=J)K0HDLO}PxDkcVf24!_FvEKXJ69HxOg9LJ+Yp*9lTiR`2mJ1|54NbdQPA? zAU3#}X=q=QVzHCdCNedIl2iWg5ntEat!8UCY?!;?jy`+U(8j%=1b#Pr_FOlDEZ$J( ze@zsBf=T2dpRBy-qYg>h%%)VKh1!)Fo*z8$zdqf+m;BE!0!oLxpPX<r?eLSsM_d|4o7PT(^%N?v6uX@&8FmF~#%Zxa#EpJuG~pM_~}0ZS_at{{PSH>zp3x ztaS1IPr?JQ)ij4n=mkYY921E=dj0L`e?8WqnV~Rtmbx`Osw4V3G+x}4q@qqAs{i=R zzSZZ*a;mpwtA5CjY2vZdvA$3$uPM1id|9GgW7qdvs^hClbV56 zue=;V&B3q0UTz#xg6aQQ=+^1lI>BOmQ6r@v& zP^!qRt&RIL%h9%|sHoc1aQNeQY)U%Hw9%?uN{SjqQR*srY1T@bYAes;_Wy&DCvTsc z+Din;Xo)J?`G013(ACp-JMtkOehqUPIYLAwv~3Ja^yF zf;9VTk1?$6nZLatkJ^wl z&yk(BA5>BIU!%7ZiT-+Au(ki#S-c@(i*>|CF5{61MdZ4OWYPtCm$a#D{o0EtNe>T! zznnm+bH6Oty1FPniO3x0shhVI!*UoC<@Sl+$1Z65kCA^agm8Ix;;B_M@g~VR!TlV6 zK=$!{$Z(?>3BIg$-YW%t>oJyYE|Mi8BKo^nQdt9o3``Gqb&?N=#JpV`D;Lt#Psq~#9}_dVKVy-ZVgIIqNyP$@zjd$(3p0IWST24Y zVZn7%U6??;fmCj<0=PIaaD-gV>0MWE-pEMK5FlgrV@eQBpodqSE~Zob6**Bx9QS!K>|$7)zfA z7G<`lN@D~v96&6oqs2X@>MK#|ob&QHyh>sN@->@mFao7dlHa)=udw@k&diJ}W4rL5y6BN?Cxld4n z=dsd~Q41g;bOeZ3PrA=yZDTO;uU0UphK6Qa*_cC@dPRF4EsqAcO8u~ds=r36%RTlP>A#%J>Y1OCN3XLxa3?l4cMUU?8ARP_+ zgd|2e`Bw!b2_As4V3a?DP*;mfYh?raXRT*f;?cY7#1n||qt)s_1`GXBD&x{}9vL$H zPd_UZgp9-0Gt2AM(B}wZ)l47Op9)$$4z3A8bf&xd|8(Z6=O-#)^Q0{_u9GM)pawNa zQ;zf(?4i}uBIY5Bh`9|&c@j=QG}vc^6ZS_vwmx57Fbgf?LKaC};(Q(l`XP3|V9+zR zbvP8^$DU*Bvzu&07hGEEICFog_VI^C>%Gp4&+0~*Q;mIVgcw6^6G;}&Dh)k7*AWlST}wRUu6p=uS!S2=f?uZ>O1Uba6iEuyT3+%%WPV%!PUb$ zkKI!<#UcR(28!cvswFuohPQ^KSC-40vy6dgozc!ID2CaRAM8u*+)k3jmT1S$2Z;MS z7&thisTthJ*AlMp+p-VIeLl9x%-t@ZyM)Oh=K0_dTf=ezEB=4$UXoxl1GXfP{ecx& z5L0uMh#XtGlr8@=Ss<<#rl-Qx8=pnQrf;RL@M=O+ig%-?Ap76*EF0(6oiK@2`Z_7v zNO8(PD$DU}o`Vx6Wg-05FFk^NRkzUmsLAg(pP6#Iv8`)u|4CuDi;OK>U(v_(A-Q(@ zeCmu$H4ejC4%lEWcnl;l>%{f@!2OTqm8{WMm?Mj!n<`#%XuD!Xd6Q2}#YGJMaxMsd zd18zpnTm?h$wy3R%}wA*j)gev`SH~VKK++~Dh8E)CuV++o z^*&HitDedYfGzr*3LyKyzGz|w{qvsD^^+s5l`Jq+D;TVxqQ)()=~OrEx)tcVXbJtw zxH=mkv!hL>BH$A~9Cy&zyprGF!TM)+_;x~N&gu-2(kK`eqvWeDtp&oU9K#^mBGj)M zVfCalyM^aT{Q6J=RlVq+Ulz@v66OOjXGX9?*Jl9D;!=kh~SGQaQ$mC z&Q_#=y#XR+?h+9wweO!#lxf8>g}#Zq+V5sV$ou?~NNQXbE{ z!s=H0suGn{z;c6#p-%J68Z_WE@v3Ihr^0`qbqt(OO;I9_!N4MOyDrW(eDrcXsd^y^ z(U@5|-vtVlVTvm6#))f`GN20AeP%|d%v99+J;jvqnNT~`6wCxI*`LG~r*$exP*+p(wzoP`+DuyM6a zs~m`@^Ls?nUnSK_gDmp?CU{m&Je)bZju!Yia!{IcXutbr6O~SrL7_c&_5P3}*1x{GecNdG=NIPH+WDz<>g)J2jUEqq-E@~qs zQwBA}4avV-rlx?;ZH$YAN1o&SOYCuhZC!+u<0ZmuHaqs4_ z35P(HCtMLA)`Wi(#PRFZMG+4j{ckJD3{8bBIt2uyXWc}YOAVGp#SO6gOS43mR^n2> ztx$=u@29RPmBx^<&_3Iva}9v#F4?NS3H~9fWf#A;F-OJ0uUBq=eCo_tke|mr1Q|3E z`g?Lb5_L|5^N2esMo-U!6h3P>DOTY})few<{o#8YoJneGe*^?`vVkUc^RmME&kdm| z%}-z3(f=R07$$n0>tZv%b67PO#pdab*mHs;BJ3F)$am~!WfWLp{R|dsH(mM~O->a-iLCFhPRXfCn(vw$ z&$`i%drjUOj!*ZNd%!*YL*zKCi(n!l46Ta5Fd#9(OQr4o%5|c&hIt z+BAoM|1M6?#1z@r_omMC_PgW1!aYBv$Es<6u>D?W92`PD@rxjtR?qTL#68DJ>Wv=x z!P!qC&uaB%?rpy((jI<9;z(Kq0Z-Y z{3sj%JxRm-uQN#dWsOOLBfZG&B*k|zoEaOUw5iNcqm{f7_Up zvXw9TvQ)+hIyig#y89SHt8Cak(uvIm`&#iP*rvJYidG+Zp?!Q;&>%SN5|GT2KP$}iYF%u z)Vqus>?<*6w{#29|1n_u%%?{hPQps2Q2tFxMC0_UIW=nCw)o?oEkR~+2>1r(gT7XQ z^$s`g<8+$Yd_zA7ILXB)(`Izb#yAUIXw%5YQ%dEYgI|CG6R+R#IH>%G72CA);P;A}443*MB1IJ>lrNrPg-#y^)u zJI;gkB*tDKfNd(km=sW@hMnfIU-3BW%*;%&?deK+x%uJ!!O#-&sUOYin!0&oVbQ88 zJEvMT7MR8Ylat(ws;AR-fg&ecm>_A&UCNYq^_Dzq3%2ULSbI_ljnx(+f_Q`-%=E>`gT1lQQpe=Idq8p9xh39huBf=&|lPD{kFO0T?7FqwiQq_g*) zuvSlShOp3!AF*Ej;Zl9|@}P;!=ZagY7H5IzjTa}BpywbsN)}X5$E%=_%CrH|6pz`R z_Yii!8Ip3eI(Kg=XqeB1cc-fC@F^_wTRB*M**)ibBNI~;4P0f}TTSY=E+SkyP6+Fn z+&dC@+fw>b-sO60+zZi%hVGJ z?|6@!3#peN!`d%*Dy9`0+&fP{AxS$p0N};E;xI0|QG6+B>2hoFe=z2ZmnG7#UO#GTB&0CP8waAjL;;+OSXRRW#K_*ZW}wF8Kg=%xY^TASDi08*{t zoQ$1}NH97wXGl`6X$KQsL4Piz$HP(3!6v0bX{nFkEz@gedL6amIpzw2!iX76^@jD_ za}AG+A3j2MvlK7coW4_K8g7>F-cV@NT7JDqdh9@gH}ypMS@-I~$(M|rh=g#4es!D3 z_Yxj+oPH1XzO`YAWdUfhgUOJ&u|vLXO3I$Wut9#Dd^;lW4d;Ro*b zE7YIt%(8X`Y(-u$>#%4!xky2biVSp`i&U6>#ruCfPc$6pQ;(*}`9XbrZ?jeiJoVV{O z|CVGAG3$l!;>WC(-{x(Cwk$x`d)NaGj56%ic?9cSu}h;K(EGVWpz%HBC)DFd*7&9#6K@UehftQLSe)ca{XH1eMk_O_${K&7RJ2dL%pECetx8M?cG;>4T$4m_BT9^l;-PC#1=s9f(;m$nGD2Fc>ZV zs$wSLg@}{iJ*z4;?V^cqunq2{&d!&LOM)`#VW&_fI=gNiousu?DuuYE;FVAcD(N#g z^3s}-Dwg%KTb^)gG=0j!mM$%B!DHoANUo#fKPQc@9GF)VgE|oOC|veiW~A&bdNt1J zMyRSy^(SC8tQFXCoC>m4FnI$JqZ#mW?GsY2iCP;q;6~7LM`g;D<;*p^c@R3PXz6#`>|B-*cAgJNaJZfKlrXjc(#E{dY!H7WDm}8)pHb_M@d+7WK<^lsL1V`)aNi}Ma?Qt^CX($Z5e6l{DJ~3)8R|I%|wCt z`XikuPZWmUta@#KPr)_B=KOnCMpOM1*cS+N2}7&?Q48qa-d~g9o>@1j zhWda*&RacOKOw>RpkY`OY^bH(wvgd5FDh8>e2`MXOJ0vb?)3I07V_9a*^ElrZ`{z$ z8O9uN{o9%hUGu@qy^fH7@TT0XUI$4D=f^h&pMSyhpE9OL?-w}p`%L)cN-nBu@TN>g z$cIn6yUOHcqWgy?T;m_|hvaVkW4&Ip)!#o*TUOaNje8bJMP``&LHW)>X7A~)U7Rr< z9XSYA$5cbZ{p zTm)_xm0i53rTfw%`>AWF3u9nQ>_EyD=n7tpu=?`dd-T#lE5Y ze_gaET=!I%q4DXn!b15QNUWb?3X0PNChc}63p<^DWi$Fc6F5ekx9YGRh@?b3;gV7f z+AH@hrn%5_nq+r>4N^2eJU>(4v-KD-TOhP(MQ)69Lj(WkQ(Kn+ASrYo8Dtgr?Z7 zuC6+zgq-y~n63?M^W+5$r7O@X8!H~~u`cYd@n=2jWFdS}JJ?;`@8l;HYG|jC= zmTSIobsobqW(V&!U2aFA9Nu^$T@)OqJR;2yNxicCe3^-o}5r&cafRqqeoR{Ri*w zQJfT#n;Mq12wIopl(uPbnME28I{RU(ivJ~CC$3aeYravffOFs;Hc`}6_G*HTh{-d4 zx8%xWR5{uBB$1SJYV^OM=`3>zH|O%71^Dd{gu`tHhl@J z``zg~y`$a4uisTg6*XuX`3h!33G5R63$3JDii+*nI=v)PpgKD6Lb#r84Em?5vTt7` zS#=oNcHTWJZQIXqKM|VMxfs8;_8MR>GK0>$l1=#=+7>oR<#kv3!_>LwiA44P`uRbf z(Yiu!=n66WhaPeHo|;^uSqBX*8l@&keI-Jo$4Qdc3bEYvXCah<=x(_QmFk#%hX_w* zL*T#Sx0nb))BT6i-Y1HE{bC*_lh=3uW~OFV4C8-W`dE-8CZ* zW>auV_XmPAaS|W3AHN_FIy&`GL-m}b?t#a-_o&t5l}>Km5(Rucu>tK5BAzXuOr8JB zzbrSiw?7&rW+yI|{6v#Hl+pIEntpR3M6W_l8I7Hyo&4%}V32X#GR$`iqVyX%$g8JY z12#GqECY`mC|872$2wB~^&KJzb_6{g>>c*X9in-Z6D>b5l5|iI{~3(#j8Q^KZFIUk z855bI!@n(E_M?P8yCM@CP8v8BxE8{GKWxtuXLnZVd8$ulJbP zw&Q_S(!f0}L?vTv+;7NGcYywzTu)|U$F^S!k^c?)m80WWVjGjHXqM|$H+E)&W5;i> zSg+Hbo4pI|dY=@I#F`#8E?4*4?Bwg|^tqB22}APeJ(Vl8Ab~nMrc+(jO@#-lq<1O* z9rt;f)mnrpspLg+FQp1B8Wr6$0b(Ew+~Q<4-g}*z(TM;HsQb<gp@Z zw@7}t=>lmH%IOF(5V+9VxYIVp9KVucKSzXJ#n3CbE!>Ga-!n034lXGVpXT=v(@VZR zng&i86B4*P1b}vS8P1CqQ)s=MXhZJa0ysntUd8j(#bKxR1jhasfRyV1eck}o4jux?dA761{#NjImVa~T1s2?%Ry)s*ykw1vD%rryvvM} z`6IkQhVmoOS~pxpJ=mK<2RhN@3s5aP;N%w z`bKwoBf7qg^hk~^j#tepBUhbqC28zAr}B{EWL(ICP2gx=+m4pnsHiPR^pvWQkY3D7 zLJDZbs_Nl17`#8e=DGjKnxAkc?A}HQgOE4rPnC}%IO%`e1mm}uy}>z~o-x3aTU12$ zq4`c~^)h5%?C%rOUHS8>F~Dh^G)#kqGZ;i=b@ri8>2ka5UzW%4-M=ibUFNt(7iJI| zf`u_(Zdd`esHEaV)60sqC)}q>C*P^Coh&d1-+S~i_N%r?Zs1lEHQeqDti9QgY2!yH1T28^q@E~raHIT+gfqF$(Cg7 z?Vc*D&Nk_C@{;f*A(L{JUDwrg$h}IvtT=>wtPG#pG3H&P%HFc-Z6hp1##+DLVV?^W ze^vH^=6`;(fE-!ZKtC;n2nREP?qSuKwwqYw!|FS^KSowxZ{-W32rd7dOuX+sJzpAa zl@Rs^v?e-D{&98M325zipg{HntLS4T&9mdFCVcMS0SGZ+{nRqTs>x(+@1t$#(kZ z{eT$G=}Ye~zd`w^*mhrkL))#7sK6@Fs=pp^d7o_XsV}w4ZdpS8xit1$q`LB?DB-7% zvdwO<7@(@QTzkLnqK0hc`@NF-#TK_9s1!xL`e8TyZA*V;3oHHn_XC_)Qxidzb$gG&WYJtq$1y`(-4JkwTxBn!}T3^(0!8`RZ zagCGc6S}^fRqooX#f%~n@ylfKuya~V)YmK}XmN%TeAw!#`?TjXI-5;pe^p*STk9EIqTxsxSxYfQN3qtR4LQ$mBBhG`y3dUy&4(Y#o z{o&c4)NkYKH^-3?r@jkqNBcMDL(aw`swltenXv8cbX)YAnAx|R3O*AfX2<>JuCrfv zU&|pq4Ym)JvInI6-%hO+OAk-E_iPKs1}dpa4LUGOy4F{84~|?8nj<}lA<@BmqOa@9 zo(_61Bek$sH^106RJ>a@wypBCy#Kn+f-dlNMb>|s=o@zg<=sD> z(nn-HJ_-TqbW75t?xjo`7;Um}eOHBPm0Qsv>1=g9dF7;Uw27f-x|tGHxoIocS{9z{ zIS4wz1lI#w%bX?KL_E$uCEE8}W`(@@Pg;|)yZ_vpTlh{nHOtNr7UtpbA?U2{Epe0; zjjz3L-eQEOhnBS+J`Kr@%{gpdjR<{fJK zVr%`N{GLks`rGM7J@7RvXTvd=eHzaGLe8H_wNkAV+?{;j5sdnB?yg>*u7qY8Vn5r( zOqUz!>VDRAN!Jt*h!YgZv1xDry-((!8MUM=BD1)%Zri7GBu6!9-l%e1BV+4BzM|VW zgtCI=pYg#q(M=e?Hoq*cNp1I-u~D-+7r&H`io!W?x*)KIMIiY;ah;}ZWEFHv!DTMT z@E@OB7RwOr+TioE$697q-1oGElyjCt$Y#yAW5d`4wPGh^u`hoY^+?eM zgU1xhTh&4>&o_?u`%B!NR$%@bd3M)BQ_o0|Zp^|D!2bzHF;$w=gU;;_E~a3%KlDP! z=mjPQ!x+|R)^ej}7Fq)<(w36nzdt;~oW{0d&X11cI4FXrea$=YBA-axhH}H)9vw}) z0>0U4h?XoVgzLu+h1ET8i5A4t#J4|FlhR$oJ*Z5=xtihItv6=%dx zg}mV}QE1KxQ!c}5WNXInInJSHk%}Yb%PW_WBKOf=EiNY>_JZV7`U^#=;rUxM?VJI}z{;ZqoB1h@(B`N)h zE}^`Q!_KLpLCF#P2Pt|M!clp2D>XUeB23D$?t=j9K|yKOR+-7Eh`(himD5r-?LZ)VI|A zj}70JL0efAa-&U`*6&>ZW^&i0&Z$qbc(_eaT32Y=|KpHY`9zz#(ZZJK?nD|+@s+k$ zd`taC&YACsj)^zK;#~~XRPe9h$YL2OLwI7CL(R-N#Jv%K= z59O>U-kUjga32yq2kKPz52`Er|MXQK267``Z7l?91MCjBG;D)M?B3nsoyXdJs`d*; zmx|}M;+I~He+b!*P*^$9QG?6>;+h*YG&e1e-=JgSOB}W?>@`NW+*|H8P(a{an)uKz zK!7#gJ}XfFD3I56KlN2MGq&R|5<$pn2D$P3wwDv!ukgib(W z(&Qt+X)JITuFs%BDN7$i!}x;f;3fA8j!9A)1DCX3ZX%0MoOQaUBE!gFdVMh`9~)mb zb{k+{?pCz!)wwKG=?^USL3&yiwGZ96qCmsAK{HV+tEGR-_`>+#SXIE$vYX4Vc8h!p zzZ=QK8xJS7%954KyWC!$zhsjz{Wn}X*w;6F0E7hJz854bV~0LEMvu)DIDYmL=mIkw zOVTm>rL06HX*PN1W%Za(fMA0@ijFB^RjuW9;z@E(h=S>a}c^)VyRZ-xHF7C-d6rGxd`vC{{%a4rUPaU z>Z$syVWy$s<(Yam$!|a*bre#fl}I63Ez%fuTbFxlw5OA9)snhGpUhC0{dvbWFE&^% zP`tb{CZ?mGa zHzCb?WIyt8FWfq|e=gTkzZ~cBx=v^%>4}YI@jxw;)DdN3_Yo7}EF`GXKpvs*^ZzF8Y=4&YvrGD)#TR$C0HCxp`-pi|*)5el_x_8`)x zO8GSo#knEqN$nb%HgeH&8YS-nTVAU>d1-v>sChboGM4%4hA>E+rhoYa(Da7PT<^EZ zD6$EdSvBzVm?39kzJ6LHVQK^!zE!MXV{AfHM>CgviwsAxjj&KG{-< z)y8vDv25Cnl_RH2>mSAV2KJL@SNp{8y-b81Bdt%H$q^%r`f%pa8=4{`!)606BV2&P zHC+DjybA_C#X=5qaL~xL-n}q_vNnNYi2}K*`!UYl(&jQFgVxtBGQbX0%=tHXU8B@F z4J&nK{C?dZX|BLjX;ll~bv0iimm`E{Y|qAsrdgsi1$^z~dVivDCgOJh`Tyyw zH&~dJW7#J2P{Q%V#eR0Phbzy$5vsVQopbK@Hsk9yyozL1+9%ut-x0drJcYH`Mjh=c zeN}~6@}iA9XS2Auz~~bm+JFZ^*+EEE?O@gIhG_YT+pWz$l!?EoSn%IsF9GX2B4~ul zRSd=|XGhsXBe$52k<-@2xGbD;>*J|7Ae=nU+~NKxjSvBxhT}JUV}Vxm6e`(LEPRrQ z&?)`%2Pnzj8l8ZcU@5B`I8Zkq8-@}^w_Fk*%TNnAOBy&oou}+xxvw@-U^bcl_A6CY zY3u1}pe7hC%PDl_5f7nG?dZf3Flwd*h>Hq690=VxnUYYz6gV#M!!{jLRiQ{eI(+V{AwYvy;VQipOn&&P-`X_gMhXS!f}s0qx9ehxM={Q zz_{DGBu^YnGOp@XnBOwT4TdG{5DfDBORaSz>>9r*r{bcNfQCPvkcnZ$5|QM{nhMHR z7gE}0&4K7N_CZK}uSLA_R+@5i^;q15_k!AAs4kxt}|`SWvjxtXS-1`S+;{NU0n z%fJDaL&n?EZ1EGX={k>VCrM7H8vv;3K700y2jc&F5ZTahF;khF7C(|duu4}SJ%~Bq zwvw}m?>PI{^t(rPsIZHJycZ<=4y@e0oCG$EN$k{M@s4{ZqrTkq9v_a)Olj= zF5YVBruns_@B9mQ6{05<}acDAAGAYVoxODY!JN z1BH}r;0@7Uzja3$<%>I2f@94AGIW|26?L}w^;yr4%XvtxEY0TS)2{-Q>`2Pm6tm%8 z!>g)lsCTeW^|_(e7dFYnL=gkdZixNqI8-0;qZB_)s340w3!WMli?4{!HV=cJ)^Xg|$G!MgHz3{Dt=&wOInq4R*pEY^pXYzLdjC)%(0l$1V zVVPxldi%@ZZE3GpA2L3Pe_cZvkpp{=K-1n5`WF&hq~AV?k}!iRb$MpgrQxVp*2t5W z`r+M#e^Fc60nxXXA@28^Z((?YwYzsdCDokOp?%!`Gpi%TfB)$UnpgJY|9Z1Teq(VR zaMaz^Hi=zxH1jMbgRyguVYpU<@iShq)BDodU;0mp2;=2BnC|Vrd;}iDEub?`9yB}d zt>GlBj!$A<$;=|wlh*^;r)Mj>R`ICkjE9+i(_n;{0=d6OX$u z-dCI1BS?iW`xBu$w&-qYe8_*;@IRfJ#M;|sZJNb6}3>(1G{LxA#v3x-R0p5>RaCqxpqx2NZ&1j&8 zTL*hAAO9G-7Xow&c?PBm2+r= z5S*EezV>nH>Z6;6r~<$rD|dHNmJhI@rG#*4-Vq4W?-CIL_I^%H3i=$Md`e7b-~g?H z3i$ox3iNNkdn1@uU3EjlN>Cr1Gd~CiwKdD#Jh#tc9`h+^{Bj6%?ixIT|9A&j#9D)w z?HV_ecyHZ}B6j8)n{{4NUnbNj7t(2|P>zn7@#gzk!Kx4bv;P(b z1=XSk_0>E?2tlNyH?c`uQ8(%fZ?(C0cm7b25qz5-X2~SAQMFLHU;?mP4l;SUA*~Y9imG?mKMB*iV6oH?7f~)euGbKk~d`SozPFVFioXA+ebLUR1 zgWs5f5hi_@kW#{X=(2rWH7vq%J1$`MZA~Hg*Ci5pGtAQYO$%`%aOQhdkinBD$BMQ8 z>xzBq0R_O|GenIyQ$&WTr++0}N&=;LT|B$*u>{Fm2#|gSRWSRkSN7w06>&skfUVK< zMh-NZKJiPzi9F4WkBf=id2*YjEZBokLyI96%e0H zI^R%;em(}q(rTr$e2d-xy*m$YS5=cSdSezx9S)zz&PzLXzmrR!bwVtsrG0rIuMPuc zDPgl?qo2A|F-aPJW#Wz>0jkZ+h4`Tq>)@T=iD?M#aOP`1v95-EGCpu9P#NiH_t&Ax zEA83F0U3A1>(^>SP66eE8>Ccb>njoXWDt5UoU_@B%#@p1h@YE@`lq?!TVrTtn7V91 zut9`K`Ddh+4&l^IweoIgkstR6mw*ANUVE|-tdDyo%V>45{5=iF(GYqB5HQPVr93J^{o;~B#(KyRpM z#ebkXYJ4S}-+JV6P2lBs##cEYVQcUj!4Y(NkH(wZFO&-2d8qQw@Iujo{d_&r$$@|t z+W0n+K3TwfhAMAED-E7<((r0{@?pnv8pnZu{3q~AC6jHJ>JU8nKN`KyWcB| zB>rF@4de`qL|@~U!jL*ZuUGCJ)!;#eQn;f?GVL1A8VH?rGVsL-A()s-4m2xH8|l?O z`mIGHd;gRhPFm+#ibDAEdCvj?p8gciMBBMZV-353|BeI} zHo?_SQ#HMsWze2mfk)d=)E3h-;Sy@sn*v>fu-@M*Vx#G$6~$%WmIO7GC#;9uIr;z$ z%-cE7Hhg+7WH-B~hGFRNn)7BPaZI0vN2~+t(&=--v9hUWz03XsaNMO z_MDBf8aUQbqguCh{G`!RZLQ$Q(;fbx=lTvfQ74WCgY(sjSk+M3)tAdN&w;Pv48t%* z@@&giOJ#wQXz9=z@a{BvS^|Izzr6Z-i|TQR)@cx`lIeB=khswLe!;jw0TI;C2V>SF z@T@*o(NC3rgb2XGGD8+zv{)JBLqEk9UqC_sXID2c;%{4}6N&&v|Fz46IlE0fZ>l&2 zfD(4rmNG1Hcgrdv!))8Dd}4$b3v<$}3wj6nvusOc;r)6Nb0shD(Trb^DXp8$K?a)t<8a*bz-LzXI$o0G22@vdJW z|A7O7nP@utOF4^9vKwSy=ZMIycpE@&m;ZE6Hoc6x-ZiM1oR3<6#BUK$PZ^MQKB5H@IKe%2 z6AmH&1<_>ln^A=KBU~mS@-O((wgu4=isBZxO|B;y<%Lijha6J_L^YpkV*5H}f_$bY zNx3{djukMbYhkK(uNux^1r-ph4D0Wn$UmD$YHDfT1+d`8y{5EQP+z>}*_tPRW(c>Y zgg}#3Y&sTP*W)K^6RoS;ca1`?UgbwIOjUv-TJ~oGoen;Jcnn6oGId4>nsEtC=`T;G z0ukew{_YmE-A{l1Ht7CIR#vhJl#RQ`{ZvH)EcZw=NX|m_^yJBvtBqv%@Mlh#Dv&|b zf8_qA4Tg7_3Y zLvz^rS|~Us=}NhnLfbR_BjAFP?dpd9{+>v94dc0+~iUtmm7X3e!CsYF?sTLSUT;`7o* zx^ZVtrC-EmctD0$o2d_{jg5?bhCEUtEaS3-+>hW|xpkE)4E;UlCm(nq-meFt8lr-X z0gL&!rt4e_hmKV|u2or|b+IflJ>va%OV7dp3r1OJs9SR~JWi>O`k)Ze*vPUJdzfj3 za9$z)?lg6)c4Lz?u{-FQ6&J%LQbT-WXfb)^paJGRD^#XI9!1Iu#$!)8dN6G1WVmk(y zPypW`x2ui9d&A?DSyd^izNV5#0FL=>&unR%G0Bj2mvS{t+_VtZ=O%lOz~+j{0Ni!%&<>FCm>bl(TO7|_t7_X^)L-Q`bP^08p7 zD#kv+UD&N(rx|tWIPGSn2T@Zlewc3v z{}nN>cB@8b#+RXJst*5ksH@d?*-dW5(A^;`<-{fi8*$r_s{w#iC?7NoSRX(Jl$}e=g73+=zB6pK6j@UP)L#WBXdX2H@y{HKX21HH^V2zm1`>L7f zqfnMu`4pG2rLXbELXf-aBv>E{dIsNI;dJ%Od+Zl%7?m8*FtlgPRx<_Rm$Lhq(R?ij zD|@82#h*v&6w;he7n|8*Jyi5qySS(1rCUKW8LhqDrAhi1#L*ts3$rl^{S>_xv^fhv z7*4(UUxY=iVf`h|kOy!06oYg%V>632Rj`!`B&9knS@7xjo-xk*7R@$(^xRhlGgkoA z7q{hLu{Jqd>ez7Sj<+`%zVE8A7ll84ySRKl<&eQGwg<4@Nvz?LAA{r`li0RjFg*Jm zJmLIbO1sw;;KF*UXNuQ?IO`>i3ixB=zkHIH>)bmQs&JTgg&arZv6VQ++RjQAD94Vn z0Qi?g?EA$7zL9hXpt2?KvyTArzBlIp5Qm)t2w#6Wkoi9B7&tshL4w-;LlK?6Za*cC z6+0m%Bwk>inBr+X_CU>RGpVx|(dN+zAxuslfDfKx!LhYYgLcb`#;bG0C;D|gP0^+1 znG~LG8DwX6#;3k@uETSywlGs#8}5#yG{^O#dQW}0&ybhiBRiF>PeAHFr^V10I^>(d z`cWl%UyE{5+6n1_0B`xIUloL}H6;TVgV>XFm1N*LPwl_L!-?ow4N@SaD6aJh3vcBU@GYb)NBu z743uNj3`Tnf}c%y#oxSGO~$RfLM6AIy7ti|Tef_uu4`gO8yY`p*6`{iWn8(`?$OcO zd~C5WJG-T0FMh;Z4?t=5ItVxJTI zFN($$tjt&u`T~sy>D*PU5`NMNh7#}j^WCu_1?}>9@G&BeXRCy50{sjuFC%cT(vnc` z5|b=`*)4);|CE&elxjmB*@dk|=)Fv}9$fndy5+0mSRDF{Zs~l#mH(IPKg?kLIU%t6 zfSGc#_p3*oidFGbZCzbzXJp(}4LkT|L4lo_aNXS1t1juSd;eev|2GhzE<8E^0vL@tp8{? zFZ5d|j$@s2#{Lipm`x)0^o^gr7R_!-P1!wRy{EJH*rb!k7Pq2vIZ*gkgLics5~;*;>!sOj)qnVE86x{YCOFqq;f4C;^^ik zrPgvL;>Ejh$#(wlln@Lpr8lMMd-h>Y=GfwmvG}AZqrWN$B>FewlUU#}-`CpV;xBpY z<;^?vl4cKPZHyiTlDYy)3;ui6y>v0&?`+oZ^{pUqTEMON6{an;NtnK?{N%> z4ACtRe*^LLMFzhBk{sQj3f*0lTm{?XP3XJ%14&mMg~FeK0_Bw)Wwa2j_9f@?=5h1j zt`~O43y+ql!y5ne1Uxb>Ar2dqCw+yx^1fl|xfl8J0)qZtkax+4Sc!BKW6nz6ueuJN z<@j3?ZH_w|iPu&>d=lYxF$2yZ2Drh_E`(nPyQ)vA{)ND5_RrL0Q~|G_~SL+)A6&D3IU48=#<##=J=BeCv&H-sTi|=gD~sT_^*9n<0V@ozwIVUC1>1@!peEd)Y99nhf81!?AWVhrvA(; zG)W|Kde-+KU-(4?c}(GlR{&c(xpa)MES8E*!_2w5HIrD(6ta@7^C0#cBSuT$_Kd&B zW5!g~gulXQ_h!=4Gvss~M~3J_lWPgQXz!6HWDk}Lf8Q;F+xd1#Ws=+9pY6IVrzL@{ zmMr~kcS?h4cZ7wD&w3|zZb5cxd@`P$=@lt@33P7G_~~^tvwl|Pi{t;Mn{QMspZ1a! zVL#~=5q^wcj~Ao2N6B_+MMT684BM0bdSN`4X{##J=T6sSE8 z1-C0Iv`x*yckBqq{HIBwZpVCT5G6Oh5U&#AnEkna-7>X>8Rp&SSG(Y&FV2^g+ygyH z8JM;fDDrH>4a~L!Egz_tMBvTpTkoz@+UeBTJ_1qjwh#j8LVMU*OWXc-FJ`!-P7s3H zGotkNsJfpMEs<`)`=cd#&ZI8)2T1-{J~c7oS$lZgCw2g4KZHisL2f(xI}9YUAU2?m zwM$@KXAU{b0HJ}PwelN;#XZf$d1)3;y=Nj$k%P>2Z2eVq$2`SfLRVE4v*;1@ik7tg z!2+(XzoGWPVpQzpWCY|dlyKF)4Bk3IJ0>_+M>u)>>g*s{SYxTrKOf6$CC^`_Gq zuB}BE5>9{h3#vzL&vDj5)oHgKxzufjs$AB=Y8ZV!+lmd@A)RYZ2+`>+Krv*mO$@nH z>tc>-{UIzdA>ppGHh^xHS1H(8%ApGNO64MWX?X9oUueePRjR(g?ZEaqFFfyc&4oqB(G;gjceu99h5d@%Et z(ksqr)kVo)yrQkw{Lc?$%xoDw-clk}&#n-5bK~gORD({Uh`()=xIl$m{6f+YAWG5LP|& zzF@sYgZql)ZHh^7=<>WYRYl8bTCuxBQs2$Iu1sbsGTzx8L^|S?rE}q%3mR~}uz#h8 z;z-&lk*A zFOYwQQa0a@cpz{q$)5{B2tvg+MChv@Zo&G3aAUX8BDn3gkmAB*9&UA#DdqjYyT%qT zB>!Ifp{wmmhrU8$L|v4idB0~@UPtu*XY+kUeEoJ(3;paCO+8r_!kz3v6qQTns4<@9HpAC`T0gB-k#Ci;-u zSdvhwBHv=3^5Jvj1GnwSUx!Z)A%)wZhA2N(T!TAdR2ufaC1|ra+2-9vSj}ty*rouw z%|?qGzoIAQ2WUWxU7>Qf2l|XVR#-1&Ib0HxH|XWx5W054HcK1jw78KRj!R-;Wbze6syx8o0kFzdA{6%IG3)UJ7sybDaT?OP4@WA%!T_$@uZX;3wsiM*O7EJ!%#CZaLqa|8VVtc&{@ zv4(9C9B{jNGzc5!P53>Vfbwa+I~cZ4oj5Chdue()Yf{zG%TyRuxpA8ij-wx>oUH~E zI?E!2%dCVhq*Mq&L~KX_?{O7v=O2rK#eC!TW1!eJ-Dz&9R@~*_1l7-wB9&&~5<7(pwo=g)XsE4#kBD z&+9@5?CVweKi2u{hAf8jCoG43^EZVe+WgU$=@`|T#}Iex-_U4}xzbBpKkiKi;Ii7Z z9;juPzHz{Rdyn%6FGuJ*_zXRs2|J-0^P9yd^40AfWADd(rjw_=K|WKXm`#z+wn9!N zuBfATc%J(uQY$GbttbEp-%gsUWW`ozk=Xm_j;Qw<{aVWB)AmEo*>@5@U4p~OUPvO) z(tq%Ej)z(Zuu^@etS4qMMk46WLnu`Pm;Uugw=`MKBL#z0w)Zka&MgRo?(m+K73`G{ z3yse8Wy)DslJEGeS8Uc^c}(e{SUSu$FOXHQ81RYPC=1`-9uT*A|M7{!vvX^HN)0S{ z_KT5Se!eZ%40G<*5Y#XcsdlQ9D*B+QNHTA)#FE6E2&m&Yb4Gu@G!D;_u}j5f@)af* zsEZ7U39s_LeG-*yYkDJawFr1P#l>ZEvq@*Y2s!RLxLi%fZVMV~XhH~W^bM>G3MG03 zNsx~Rd{da`Jv$(NRSU9yahe%{m8Sasu^g}cS1RpSA7%KUQpb_bXlfJj@>X%_i#+_e z$9HZ@Uw*&Kwi{>i6KG*&6xCClA*La)!7VHTqsqdh60)Vv0@9pbtdXPVw#z4F1Xfe1YEG)V7c+fL%X(1AEo#V2iT9Cl}#J4>Y z9L?DU;EKw4*##%+^>qF~i}n?x35ZsxN$6RbpL_gS3vuXv!el!!kT1wcSO8Q>ab<_iS1^%)=b+4x=Xe+8T2OxUAO_|@gaYlQIT2DXIsgO=- zwerhBSHkNq$O<#6wVledu->kNAYEV1d+cVM_7g+VNW^rV^~+!sWpF+bh&wML36-5_M*(c|me&W;YGXW^gIK3iUsQ>pRV&OE+(G7py z{YSEe@~y*9f!SqJVWFVy48aC0O#jgr6>QkwyyVoXg6(ItDgEHYJMpw#ziiUQR{GA=Hq-`oFlKhla%D#QOyd%!86P;ta zS(|w3Kp3I&DN5JFrNgjcl%|xT}zrtljR2aMchuG8@Aq}r?GBXb-9xHL+(PNm; zDAC-kMbQH(lWEPFnfeR$A?Tu5B}qxa^^~L}Q3anJv3Xo;^l#I~x5xRN{8Y>8q7G^i zbn<0BX8srEZ2odtxt%6Xs&wy-uQWLVb+B-Ew}fFJ$qnAM@7shU489Of-#KGH`Kg?Y zV~0Ly7`2!~C5LqygP!vN`O#PHc<5f<)BcI(Jt3^q?rERNv5MkJ2d}czW+!1y zk-Xi@bh{O?&B4o~)&YW#7Je~-pnb7ydV2>4t#~}uL6W|An@z{1O4ge=YVI@Ks1fNX z_P9%F&qZ!+Ht1x+5j{9divdXq*^S?h>tYKM=K&(O=)h|i7EVqDCo2WY3>WDkXl?mB zg8br7Ee~DIc$J>bNsnC6xH!Hdg=f6EQWVKny#4tvwOa#z*ork@^fT@QUV%mPxw1)q z-R6@BI*5eP#(+{T7I^Cio_@7Yny5%gypfhO_8J{fwJg?R>Lb!vF=Fo9&bss*GvHz6 z_`y(uD@sG9yy7i$@OF`1m&dtXLUz=S(%w~}FP{^Gse^*_N1Ut}TCS{kZ+@VjqMjS= z2L-$B$P#;#9_swu&EXy9wwGZ0lm+v6aOXus9$9n~Y~og>9r97!3-LZ9qls|5`FBnP zu8B^L3|Hf+N=6!K@a1>?e=?Cp!^9P3Y?~GGvkGT-kP`LBtcfvOxe-;d-!sFBj*0L( z2!F*Wt__tN?cE`6azrO4HDvF5PLt^&Pv<|5QC5Qd(AS#nD4jto(YNy=3l1*SdTgTY zN*+HkVP_*^&PYk{Tnw#qg1JOF3AuClJ+UnB5fRRiY9YK+S^}2tahY=5&ALripa)gm zU^s5^_`0iPYdQCP2qDpDG$GYP^v1CE-nIL)dLH^|ImMM4y&Gi%iS1p(+Lku8Et4~^ zylN9t8&u>sQl~p`j7Zq9?m0)l{M^hSVQz6GNKo><5bGki)1msv7f3il(i4@aO$m@88_MCt~#nUdkx1Q z5_2)^S(kG}w$eEsU)UKu;gde6Vl>o9jU$Vss4lei97jyb52;Och?sd(YfJq+UKy2<6Ev7 zkonxK;ik>6sNJ;Mw!yApU`O7yZeRb6Yd6zP`~=HxK_s2mHRTb3O${5mCNg_t*GFMn-PFE-xyF9ZWu# zOK@dKj33;O>O#@$xi{oevw;LHC-Hn6d`v=Sg73rSzI()d(Ce+WgznvdoT*nNr!^Rh zV4`^6fp8`=iptF#pJf7v9uRs$j}eVaHi3OYzDX$e=04ELs00rm-#yR)Y@ttXFJ|uR zCHxEsi#-zcXNuwi&!8V%TwIcGd}oI@`y-n?FA7j+geA74Hyehu`g(7_Y*CXI=^3ft zX_^3Gx1Nw;XI-$%ZDEn{`uzOw4K;SYvh1c?m7LQR_;z+RLen7V$=Jm0fJ-6ibnQTn z6=l~D87Zl-5wS%4qAy^%@&sA5%`2i~;0cxMgEvb$>*i2kMd(87z_q~39siv;@88!0 zfl*QYUC!Ud6crU~=F&v7l{1@GH^_pTqa`$<`w)3aH@ z>mYO`5y$GM-RRiXKI=R0p})Rc4(um zdWV$1N4Ul`L+d3t+FKqJZ9Xr`#T_uk_Q}*-38M2r5O@0F6{>O3)ifu6xC9>PvcJ$y zmt(lP>W+=Mn`Qm-Y%_f4FiqujB>1jG4Pj<&P^QQUZ5>Ik{7az1^0*&P7gAF>qKIP= zW`&Bx`SdDHiv_ZIy=xYlRw8=9vjuavscoDeS$yGHoc2nbEGvoxM8|ptxtAvM(DL;$ zGIykOzI#=`^@W79Cc?0JSZ@{O>LFE6&608BQR}Rl;ECUL9bpeXt?R`Wa^-9au5akP z;j35A&UXSJXg{E5rA`f(uk`Jlg0v#N=KIR^=@@~;1*uQy@*No?-kbsr0E;!^AIl3v zHwWf*pS9{8C;3wwCFO9ZFX^yFQ(dn~C82tpf}9N+HvgKVu2L8DzB;?J1>4!%h&)Bv z@geLOa-c}|-MuDy$YpsHx-m9_B-Fn7@CetBZo)`mS4L2detBI6MG#@5v%umONWn~v zW}Jb7Z4Kg?3^lh*ibB+AGVh4#fPkL`PpRF*hSBx~^Tm@CDeIeM*YV!`@)yPqeNneD@u%q-8%OJ#HS-|MO=Oo>z;aWt|es;mGx@qCGe4E3 zZaF@XJfSn0gRT({~o80A)x1$3xnntgrz;@%)L-cx4Cdb>L_*A zuXwE|R~|BPaTS|tk+=4JHgBzo@Z(y~iaeyKN=>Ey616&P8jOylRe4vo9U9AZ+X6P? zrlK$C;+_qQ!HBPFgrAx#DF2;N%Gqb;=P6-Of33# zk&?|Y1M`!h+71q8QC2-R)hXQET%xKrf}^c1s!`*%I;fAD#&lL$_b=`_9mxwt=jjlx zIf>9GH8*d6^SdnG+l0xmOYGJ!zB!qTo8qai@W0n|H&H9`8sbZWMuYG1bPZ-Gfp_3o z1eaVyruQkJ0e5cqRMnLhfh;gt2w+~oVO;$ur^Do<8kHT==gTUpoD&m zRE8O)l?Xk&- zb4mTW66CPIZY4C1_f>FE+V7l)(dWYgE#RSahs~I&xcO(6-EOAwmVNGGa@DYWSL>6U zD4~Muh*IS}1oDGR(UqWC4|fSYMeHl!QeG=eg{juZHb@xyS-Fsu;%vYX_L4K^Ec)VC zP*2_X?#pBU0fo5}1{=?dDBp{`S^(aUbo%-S6aEbg=T+W;fgY@6u*fd0byMF(I>O@4 zrk97hXOwY9;C$9?2&P*z&dQt*fw>U-jUO5mju!|^f#&ZRK%100SFlkfmL}MAso@+U z@+yOeMo=~)v=WFUP2@U)t^%e6MWj8l*Ueo84poIq@H8UV9&#u(aaH|t^Y}6yj{S|_ zry^mCRs+6G{>gqmo6=gG51vV27_(eBxLr95fTZ>9H`Q*-g8_rYQIWX~uJ9r3Ive0FNep;v%k$KA52ryJz3ztw!!Tv%u_&hhl0 zoMy%f07Dpe3oM8u3|*OrG5;eKzc;0r0bo2PKG4(7FNefPu9g$=R_qLSI~Ej%CUf^_ zJWPNlD(nSG{bN**RqOE9l&#gaL3sb)6RC%ym1L>gAS8n~5MTa8NPoboAUY)Wb@ucd z>O^DU2%7#*1@~uwt=?Tnd|CR~hRtio=Dt$}80lZ*i*@RUuUq1j8-8pFZP+OTXvy#0 z`Rhz0|M{O|d9Tn)L{{%OGf%wQuxpE-fP}r03`pcDwB&cn_s^(#NPiV&sn5E%cungn za^frS#ed9W^cm>R!+wlygFJ39fU>b7NE!#xuh7Z0SCM0*{~S;HZoAc&_ys9 zW@0bAQH=@C z9T`FQw_uVeR8QF3|F!am)lXg=oozb4m69 ziz4-)pX@ARPDqP4&X6B3F4|HZp&QzF-UIqP?7tzL!hgm<1D`hOhW}^^k7Qq z{@;n4{t7Vff}iEh-^XuQfJ}`-h>eWNB*aKy>6j3{hwoE2zT->49BtT3-THOq_~9QN%*yfzkf*mUL!!QQ1#EYLDMU5x7A`j z)T?TZQ)IDqg{-nS@w?F@9q)j{?~z ze_v-8lgo57!|3nALZ#hSBXeCSU;rX1<~>;TA}YlZ|7XONWI9>|L}Z3;Grdb<6Sdwy zMZV-WCnGCJ_~@dm{9iI*P@KRbyUWV>p=`Uw^D@;@Nhd?j)%f$i~;yah;&_~3_O&XIztq9A!;@biwE&Q3U_phv3ddXeiiSv1l;~z zXv15)wLVfLxtWHx;qEskwp8(DI`R;7x`pC@=$5G^D%8%4i&y8F$?_iZ{@=CLHe*~i z7{$P|ITa;7zL%$u!6R_IgTbcqH?Ylnxs8qC-FWT!g|NvNQ_BPT@(|IpM-fPb{w^kl16JEsYtbFiti$wg^)IW7I|Hq9F5j_oDb_96|OJFvw{Q(Ij zZp)vv6Hf|_Z14w?jg`f`9eajm7-(P{TbmVBFV7cD499%G8yyWkxraRXU^EAl&+o0v zSI3YH!_j*azT*(m(cmA&0ub|@hF~TF6h=1FOKLYmI`!@UQE&=u=fxrE= zAu7J%-rua!9~=1$_K&&$&TFI6+~B!9*MA$ozt%VYK7fX;G{AVrRcg`izHaj0iGN(7 z!$-X`v|-<-w)A5t z8vffA{nv0E`MqS94RT4h`hTma-%i9c*#DjUxUy}^uxeWNTjXOWx@HXp+ z+)s0QcKV7b1LXRhXYiAe0GC-ak8TFgVBF|Fs8JZcw*lxwN81ha6>q?QGfx4*#?z{| zhdu1}-a7SE)o6{0zpaym9UVIO&jT~^k4=BL1mFC#=R&R6or~wVLGQmpmfsrQf*=Cz zr)C5A4=Pv)dOoJr0525qHZpAW;lYH>??sH@QLR7tMt&$fOHl~dHmrYGt-8S|UTndY z?{BTDB9G)~RuWbp^$kSg8AU2ub^M{|**2S4V+ft&Op`IfYz4bg1fzein>--N@rx1YjZKOU|oVi8@Ukbvco72p5@B_;xThT0c>5)&V|^> zlmfqXak2mCyLTB8H!}^98oc>VY_Hn$D?J34{>Mvvb20T$h9gRytKD1e%bxr1rjwu!a6NnL+z-Nl3~9idxMvO^6`ch=g%C&RK~)Px(jnst zklf`aE(!0-Uo{~JWgqh?G`+7AmcgXnRgQcY@e9H9TQ*El|K!@*1-XR)vEObhNSs~< z1J}0N<^c``@{={I?HK4v$iDM`N&Q-SewOE=4Qg*3Ly`-~m+c+I&~~F5 z6hrk;*60!hphPrT6A^)U4~~K38LK|%6DPc=1*B~Fp4rw8I|Jj+*G6OJR9P;%@+ynZ zPfXR-ovXdE2g&5Lhx)%2`=+51O|*s*Pz79#hm21DyEEid2sYdYl#bOmG!XoJl8CVl=)`b3wD!35=9Bk16`fNH%qW=-Th`A9XzMy|AU}%Y{74TzF zECkrBVh7*{2;Mv5s5_Qpse5yJNY?(Y@1Ufc~vUhZm8>g@q+R` zOQ}I&LJ5$##TPvfST^$(_Yt}IaZu?rbIL$Ol`2G1YMwBkMY5C7QxaZ@-NkVhRejb^#z$Iqy^(J3?8%p;T2VAJiInnC=LnQ_-%Fix*W zP%Qj|myWK@`}Lih5wg+zd)20xv`-`!jcPol-v-k_kC`7AnmFX=XU)EQFXDmIFC4D` ztn8m3fc=+xNS5}xNmhTXsA07zk$SoR;lEI#;wy;TYN(@iQnD+EA+mDFK*@L0(NRN3 z+E91tgxksmk0L2JvHk)>@1P88P8Uw#JtD(C4blmxds3)a1UyC8w=rw z@Vd#9-rdIm-n)zPn}G*_sbU#FJ}3 z=6`W|pjPW43YZNireIZEzdV$4;%Vj%w4Hi zkkXwW--|UKFvbW8dWe3kF0MFw4l^tONJ^j?gb`|y{G@;rqWeCZY3n|E-&6UyVq&8P zWgIlC9LVJgePNJIL?d6{=xVK_V#5J+!et0m`V>+dAYfcP&AEf)sW0onl1nm)sw#7z z>wF;m%?~;6{K8HAE)|yO$twEXnd|s*x?)R8jjJ-tPm;ExvC&n(VWiTHjd1DAE`bvs zpm{H+5WMwnQYHf)j2Afl(ADYk6;G-t)2E93#~W`W+hXr$=Ee(TxZ3{b%(Ev`7U_T}EOx7}LxTX2roj8TF zdExuH!DR9ZZd0tx0AZsXKveg10SMqbpfu3yAjNe)Q4K?N@+@ zjq?u&EGpht?JBr_jt0%iSfMg_c1dwS`;oMnaGXfCBH`1A+N3U3NVd7wb68*2U6iu@ zfOf*IjPvtE1HkeD-r3#?;ocupy`Ke`#ec^-?|~Q)2JEOPo!;)-X?n7Wtz9RTrre50 z7sQBNWrV|Ug;qPR^UK#Jiw2zW&DqOy)edV}Haq|5v=6OXDJjlG(81@ol4^DLIo#jEUXjh!@w{M8 zRX!L2^_?$|XTu|_95Q(~rz(pljw~F;28PGep9;|hLp`jQShWU!p*8J`y`h7+s|%o> z@$L9`*YJO;E6637-g#vEq^==}ax~qGD6xfRr7nQV`NAlZ?^Y4~iTxjwA<5M0hhw#%ak0myf`lIUe zLV~xmEu5F9K^iw-Q0zq3D36!_IKp=`0PcieU@QG8IY^X1O zIbgzaqsh5Ty#-RAaW_Ck&|$qn{v2pV9o*#H$3qsUlSpVA+>ecqQ-})Mi%)2{3e6Qc zm}#{;yX=w=%`vci`Np}Mg zCo+sCQa|Z~bkv;Js^{W^tn9|lq3UL~wseO#NRL0?@J5P6W@eAIpDfe{odGQ|$Khzc zxJMs`BXj4EHb3H&FF!;FW`LfuMuLR*Wn#Nz?;+ZsNeA*m16+OftH(b|2T z&8u^bl0qwUAvoJ}RvqlN)u(ZOPyt(Pf%^8R*LSTK$!Qirs2Qb08gr9@<+piH95T4 zRo1WNc^W*hdo^8==(hzIvkfi|J(!Y7Gl7IK7YQ)?Ohu6l)QEWP) z6ONRRh<{+#9AaX(fm&SAFWEIZ4du%gyNpSl@;wwrOD2OY`9Tzf5uvEHq!+lor3Tx* z7@a=8MAx*(U2F1C#9cuP61YD7)r*Ww2yCizZok zrzc2hNm9*>Nt4!wbqm!Q?=;a9AZfdXqEu-(u3Z;2f>SJ9&18792y!rKpHWVzqD0l1 zyY%hk7B|D+#2a=ly?=OeKLnlDJUDL1d4r|Wf$V``p|f~cP3f((L)8Vjb1LtwAWw5n zhaurl3`{lWwA(Gm3r=n13$Nx`^>PMRwfx&rA3o9V$W8-++LfAZJgkfIfmA5dV5I}m z!XEDcjZcQsZLVG0dA0a=2`ckyW;&8kDz_Y6nwROP<&3nma5TB)(!JI9TKjGJ898j8 z!g!0fP$G{8w=F_wyEr#)JFt8XKQS20s|m8>WI|&W3Y z^Xd#0+qLz3rw>umKl?PvkvBGYC(v>&fhv;lSO`Xtuh@-BQD8k9eEKuUq~_M-94`Dm z_xtKY*5S*1)KQ1G-V|D~&vnRyEfat@t(~CUm&K za)fuJtM2&PFi_l*eI0i$%{*#@E743A<}n~T7vF{cHCPIXenCyN|(IAG| zv2qf|FJL0I=U|cD_8*ary-zHuV6QJHnc2l5XbDqs1D#=VwGAq8a<`X)1I4A4C!I(7a8=((c4TDttt3HiM%n zE(k1{emQvhbOnxssr}gMs(a3HUQ1u$7ExC|Um+Rq@ggcAi>Lr-dO@`|@UoSo>-i;$)F;H*}k5^_df_LD@ZhxjKH zjyZy;K)kyYN|iy0ic#k(-)Z7M$@qg!9=-lBKazFkm?>){qI%phpGyg6c4MH}hcvIC zcGQxOlKS;w_~Y#TF~R$*%+8jSP^y(H{e#u?8-ST{=vQZ)RxRqLAb<3=IC5oA*Nm+( zB*!59&arbA$^>~s|1Qk;u;(MUH*s_m2Z-0A^9JRTjV@E&{8rU@JEA=cOdgEJW8C1O z3;)EPtJm=U%Aoz==f0Mm*9mMcm4gDw5p22dPl?VTo3q2;3!6uUO3M2#w9b8+2|p1~ zSjd0!9|cc0R8g1iK0j2VU6iA<{CrbhmF8=O$@HP^6+xvB1{@qx0CXt4ceCX>jQd3E zQmrx913yV#|0mH;2e0ri;iI<-H6&a`48ub(EG?SM$uoE545M~r@a`eBAgz!M<#l|D zee>qYrwQE>6-jHd4RKR2H9=-<0HAz)zh|{ zOcPVegb(vBb_#S~w{Q=o1^MwnsCF_)CE%{gvv==>ptsXO?P_?4Ro=<91-X-Mi0SD` zvJ+@MZx86?Z#U?+c?_X?GM;(K+G-I^?C^RCAq$e9|$I|#}!)LbD$(B zT3QGD2jgdP*|n07u}2C+L+YukF#x!f`1dB{?+%azrn1k2Z>`Y1y8 z(EOVpkE+=7P#>0!W)U{6#-(3tHA5B3+Mn=}M(ADQc4T(sCZ26dpOblyAJUy6Kr6|r zf%+aRj2o-1$?{IfRw62yU;&`(=#-^hB6@x+KYgE~^6=Ey^lk@k(d##k^Z&K?BN5>~ zMOQ&xec{29nJ+wPV(+?ukc>%oWmsd=EI0J!+3e`_%_DpDvzh`Abq-m}?-$-{*U$h$ zu;L=|G|7qKgG`bx$Mul+6yKJ^+Bu5I?V?EdLL$QBuqzjs7W{qjZ-bcyMHxzT^oUk9 zVix>X3Vtu-3^nE*WPy@ImZ+ByrzsG!^!O0G#J7ug%bI`2-4N3yjBetFo0V}e^ST#=tore0CB$#g**UD6;nHInm$J(>j3#_{$#E89b z4%hI!gIm3OlV0|;l%=)|xo$F_bXiNVt;Y*+kTa?=5hyvcmmnl)beY8Aly^w#^b@A; zjS)yjPc|?yBW_j+8-2k?_6RgQV2$CP|HjT?s}J=dD7-VV;FFn5UZ6X5BVmlJ?2zkD z2N&l}eTG6qcSY}uAkIeU6Xg~uj4IJXeUVSm@sy9K@rJ3Ag*{lqS;SG*c zyej9OuUkHbwLmr^%%U4VHCS$VT`qi5fz-sZ@x*uvp5L@wU%FytEVRCyqW!>{fCeVU z7UAVKU#3mJ5E$H+7Gmcz!9uRGXe?tB@{{5qe8$y}Qp@U{mgxf$bY`@JsxD_6?ST`bmc;SbizsspXtY#UOEJ4~C|n}>?F)lMb9UYI zR;{!;%|^(r;&lzbK=IZ{CHPS*>1n#9^Oh@x1E0 zQigLo$mu7Evw*rZUIhfS9qs!VPa4TH{n6h?oQzxY5zoCj6XzU*jIF>^@@Y}<2eQyD zE*k9EzYt%FwCBZ2>a2^-5E1MgJje%2)J zKGWa43mwe7Ip^qx-WB%WY7y1XziXX`qYU{)u|)f7vU$+_s-KZlL{}C2_ZLcX&^Zp8 z^(E_#A7nN(3c^llNE_0?dDy`L=jJtI1*UB^5$a(mAY=xPzzXVb@v_E zGI>&n3dBce)$K0GWj#tSVAfs*qkP+X{?zT< z({fxlJ_BnCJigt%G~G$vV0aXdA4_V^6vHzO^4rd4Z8%$A+ksER?6AiqJov z72Q*F{$4w~+*`)@DLf+-xu(Q$73m_vTlvt@0_Z@H6EEj{oJov=vkI0E%?zq%&~!U0 z^l9M<{B%tV{|2N5nDMeU6F;G^H5N>s;Q~MxdkOg#S8_V^6ESb7 z$2CiI>aTnl5&71D4&-y%ASfG+)~6{Q7YF%f@7fS>#_j*aQSqWtNBSZ$zI>L)*oe9= zY|Fe-;tH(bvkB*I`+f5=@1eZd({6wKxS!5lf(i=@a;qk`K{E1epOK?i=2HD+^5%%z zzmL?&D$_j-@&4WlnP$bzf~oI`lj*#=Wu$PPrA4>y(1W+ZbZb8O!3|0THmVPj;H2ZZ z&woyNIHmJ#A8S|mU)h|2zn7(fDSlTco;+*8_VO^n9d%|n0_Oa;;tMnI+bJ03p<(c= z(EDPOCKmIzP%M&o!`J&;`onr#A)qRHLZlj-Is*ydE?01`Wc6CVboI}mI8_*v3|0M1 zAi;>CzKFtIDZ)=7*SgtZHsY66Th;jr4VNHGuN4^^m44A*$J3TWTP9|8A&Nn^C~%D2 z#Uqx-$HP;V8Da+@;&0JU`3Z|dv(T5zbOExjdG3C5?I1+b(vjiW!SRXTrh;Mkr=e|n z1rIOEzN3K~J`N+iSMV!}zHYZY2`>dBTRFrI=|qI~)0Rn{D2)dy4qq=X1*2z3Y<#|= z0@_eW_D@a=Nj+Eb9$J&3SU~8x5bKaS4R!n|?z85gl1^s;uA~Ve<37v4ab(XpNGivCgrPDE?d zAP5tz=HgfoL-a;Z=Z7kQt9^<|axyXjgfiX}MM$A;cX^J9ydP53aXw}W z?{-SSqDA-}`HNi!uCJizW|;5~;gw{Y`2l0jS7=?&X2K}~+i6?<)Fu#(alSx>V2u@&aUnrb!r+*&S9EvFU2<2&U3=@_Jz)USdv`|Nue z@V^U3gCF{HDA=it0n@_aM?+sm&zmV;Uv{6kow{I!+}PUerEcC7Ea{LDMZh-eF%lhpKB>IEWBG_$1F;Ty}lj ze$`i)LU_SW2|5Uu35j-RopPSAx7sND@CHYEHIv}ooZlS_9vM6-GTa~@pX-{u>`h9< z@?Hn?(M+nAavTeMXQh%b8Gs=7!|gDiY!`mn&gGI~EU$uijrcNOwYph*50Upp;9KMC zg{!&_)Zx5bJTtl2po8An$W7I(&- z=TY^L6tc&kCo+`7^bC_0?9UT4WcjJDz-|7GIQB~$%H>OFFwfDJWhL|`^m>v!vq+|_g+EDwAZ0s zfRNuKK^Br^tx5?W@ivg`6`4|is4eMseM^GTvReDUT)e=^tHf`NuTvr*tQ%6>Q4SQ) zg6zPI2Ld0CAAY^w=k;HO1CsO3m^0uK3vt*oS|@Nbe#%P87SYEpskbJiqi51+BSAs^rnJW@>C z{BEd*VAe|Tw-%imAd;pazSfks4V@j8^hv2(DaB&!qfHI8{)ro zWSbn)WiBovJ>)0)wF_1p_Jxtk!GDSS;j`2nrD0#umzGC6c4|5bC~;aP!2J2{!QOizMS}|fn0Il?W<9=d<|KX#Njpskrlq+$X+PWvpuXAc+|h>O zk*l@Z?0085kZ0%x+bYDO-yH+BF!e2t=pO1*x8BI@NN|R30}`Wq_d01%2Hjz*c>azj zm{U>odE_zeu`bPZn5@m@diVou9vs~;F;t`42UFK2xIHi!ZZ?NrjNBKY$|t@x;cx`_67vCDrpr zQb(Vqlb)sGbo`IszzU$VrObeQklB7AM$#fY!awY{g+Sr=IHYW%wD?o(QA3ze3T;Am z0as3vb;f?;3JK5c-Bdk_XOYKy7m{&cEZp^^D~5QS#}Si)@A8$+MG#8GXsvKd|2$Zk zSZojEgW{eEco~~UPMx-p>CjCm#l-`1Qc-N6FF#LgH5_JSq4BmArN5)VZtg8g10AsD z+Y|}s5i=SjumD067aJ8RMt&e7G4Y4&Y8vXBiujR)qR;%J?C<5?Ku&Og&;g-09Icy` zY4{l@-;yi=Zj&FLiVa@!{POvBBAu69H+nlcK+} zdL{Xn$O1+E*Wd^$Afjy(AEC6f?YjgEWY9-ek=(4vT>ND$wT=ADs? zON8nH4GvbEAZnd8&#tal=!TG3`kfG8qs#QTK*X`^V4uWoW>A5}FuiOdP7!HzOtGTq zTo`vF`@g}sc~VTk($>wjk8L*Co%tuJmz&c|_ckwUPD3`a{o(Ff;!l;!Wu$|rlg?Y-$B%3f;O21+oJ z93)5~@b(YqB>p7_lxkTJm%vJqVWh@k=o@T`6x!F0SQk2vXnrEDAs-!yO;Q{CgaiN# zPO!2A6b$%m=}9>}9$562)D*B(gwo)PGJc~j9<#hn7`GHA&uY3!E35OS!5H0Xo4YLf*kL$Ur4fQeOr@5F<~6>QtRFvSH!ROD-tcr zbuBww;js0rugNmpkAP56>ZSD0TxE*+J~Hbk$RiKjKtouxnPS2j=k%SIlUE{i@uYD0 zlYVkV4kbP@1-i6Sqm9nsN$!u$WwFg`S4He1Th^I`}sIAHv=OsLE*F9|l1XDFLNJ z*o3Hbx6+N2Ad=D`x#>oc?#@kjNq0!sW=nU&-gI|ZZ`+cD2{Bz)lfM5rXIkPec@)Z2o~e*8p>yKF z>@v(}UX>anxH=;`7r_vFsjU@qm@0@V(Y=+dT1`c7_Ux{kN$FjnJ-wNVhznJY_3{38 z+YOWW_~*J?bON1gbTLHc!Veny(^*r^vS#<+<%eYFC%f7E1g&X+$kf3@QWRMA3@*Tu zj|J2-(?`T-8F>|kld}gE%X~LmQZ9M6X?gL#*~J6FIhB5)v*QorS#W>iOMy@bCHR4Z4%7ric_Jk&jmA z@nMNoM9)Qm0#T(_Yd2X9hJ9W@a}e~#*&a@MKb~rwKIg{dWUbYiyjZ3t`OeqBz-R-9 zt;QLV$VV#(N;zS5?#+zc$9>@z-S;*fQ%?OjLlBdr|7cbpIn{+#IqDd_TlEx(|ji5;5}m z^SN8T#8}V;px~qHf56F!das98PC|7UHJ%Ac>;(9MPj8Aadx9i@B zw}6K1INPU1IO!?dW2sqTOKs1P!G&b82Z2NuGZ-17f#=J~XX|%m->E-H-hoskJ{mX{ zJp7ykC}J&18##8}1&OS8)k-S;xM+cXN3|Cj#wW6v?N@7pkDXaxm`=^h!AyXQ6z^w} zU-r8Vc@arez;qO-_o~=BBIzUG^L(4n6Ly~@%#L~?X4%C+DrhQ$F1mMfvxawvY#ZE+ zQ+x0u(5aKd$KLn~X*=E<>rt#SA`wfXCD&8g1{pD~OvA8FIF&S?rFE5ZpHzw20rug8 zp9jzmPEfBh^2Ooik>BSn_GKgsDZaH0%hs}(_CZtyY$G{{*$cY5|h^h=pJ zT5seS!F*m}pjzJ^b}cljZ5|Xe;!>M8Yx-s{aH$Iu7Im_oKjbuh$`;fM6hr_>)FU&? zV=IJF4>Bky7x+!Q$-sU?WlB(LPvBN1a!@`xKuc(9U}8qKFdh-Ra@r4 zX40qq-T=f`(A_#m?{O;>{JsBsb8%%@(9;ml^7KDBY5y73=9<+3_Gk%EYO^kzpEK}! z@E?6bOc~*Yn58+nPf>+_kFes9ilF3)i2>)|?9PDmnwv)jD;%4yCR@;<2&!_n!n3v2 ziF_b;rS@Z3P=^b}iB4{Mwb1OCv3q7Nt{PNU09Rsi37>63N0qE#c5+phn;x7J z84mJnR}i%YWFP2z7ZS}wy-OEL#CuaTHWE$rNcLsu5*Ftpe<=nNlnyaQSN1+4?Bo8I zPOABQk+Cm! zI@HLuhRomsk7nje!1DLckWFi8TYkB%{pib|aG83!`VWE{cX#hBU)Fvncj+dIpTuy% z(3^u(>s}(ozYImyk|rMQZc)^)!l-9GG@ZP4@YBREa=wm+3^BXo zyew>D&~_N>-m#5(*gPJ%D1#@6nM~hf&1QT#%}DW>lR;3Eox8 ze>70<(&}&3o<2V=GVu*ATZrObb_VL=o>?BL<=&4>HD14MpU{or@8a4*@KWlFQ;B`n zC-Gh8`aF9WIusMROpoIw?`>mInjB4~n~|5hprA|@W-hyw!;<_>M5xY9Fy zJS7{a*xuKMwVFL*MmF|!KlQGd#d3@YdU5(fzI`?6eT$XFR#Xt~e$x9S3dP|Bueeqg zrY1qGBpI@mUt6lk4f}jD3x+CV)+uPqiQZOvn_CHv-j|kzgfK#zrOtz?G_WSPEUZP?dB@U-Vla}7qI!xgg)S7`psKmKjio&OnYwC zhNk6EkfxdIXUuVzWde6EhhbUd)GkO(;82jW!gR}O#9XKo%qhriK46&)javUr%Xlrl zXyDR&6roe%q9Hek!L&qucQnKyws`f`^)UQ}Afz^+PT)XipCZn!{UFJ2bkgorVxH1%sevxmraftk&9osR0?SHFQOmd! zVN#EKKfxguNO~>QNCx8hHCqT}NN1g3N?5bf-?>=-MqBZJ2DJbJ>FCs}Lcgzh$2a$f zMeo|}0#AN&0K{YF`E$aXgdlSwW^Gn%Yz6pM!bM8?k~2_=um)|6*X3jL3Se*&n)#Oli5sro!>q_x!x&f_$ol@d^qoAT442+z(qI{NWEafQxJq{fW87v0<+gt+4~qE zJm-37P~s1$sE^i>3|-VYE&*;pv&N^YIs5YGOQAZC88lDdQf&fTzbR4_56|z}D~CVt zkC1-c^G!aXgMJ6aJPJ9CMES}3bKjl0-w4TF&xI6ap6s*xV;VovRHcD4&&{xWF5UH< zD8uhJp8^ODcmz8dtkGThNbe}W$PDzrA73EaJwD8n&5=B#lP{RVxiwNSeMj@|iL|J& zM2dcUJ7Z=eiGKH3+>P;Jx+NNVp_q9R{yW*g6O$AX?F2zEWPzOEbsJ*?*Z`Y$1F`ynS1Z#49Xb{HM$s+rU@=yT`Icg8(u)2aeZ1K&2Ghx|sF_onstY1A=VVoA9T5)Hf9IlGCX?Ji=-4-*beyy|Pjx{m zi0&808IbYPk71i~c*AEj+W@1*xFHpvrtN)#1}1>n+UTmPppY z@xl)jiK&kJhhVzj0XM640K` ztylD};UqW?5!ym@Z9e5(r36uxk9;B$vv*Q#Mc<-J1v{}VYYn)MFnc9mLbH@)_MX3< z`2b^o=GoIZAysQ-NRy&AI!qq`DFpb=D~>E$I>EG#Bj?Ix<;R1Te6$DeYFmE$YYKnw z!x_2OX4s}Y3#zoKh9#oS>3-VoWWrbu2Osc_qqI@{SPT+9TWZ5`Bz&i&Rc|A+Chtv= zy1p86v)qz|!IBenL1m7qn_Li+%5X_3Cd^@%J5g)uYFd4V>)F?3bSkKc^S_ef8+TYD zOUv|EuZ!#GCqM$#{igp{@QD~p;`q3OugMYd&(hY+{`r$r>yw}+RcLvH!@%{<(d_tm zY~YDR)mVN$w5uzp&9(b2X*;b|&dTl83EmC&H#^w8fHKCD6%j$fFFm~sU+4HO7qz<@ zf8Cm>4BVXtZy-`^T8;DaVbc7tv=D5$24Tn04UAPQltC*)LxQ~QY|F(>+(Gl$?&;~o zewJ74O&8>>u2(+>A-L;oQ=bYebqkmXAu&`Zj2|CrG(l~=2VZ8VwAksj6ciN)+ARD3 zq}0-tS;_XCH2br?3`0d(%@k>0i#{_r(oKQM z3E;i(L)^E9WlelTw7+cLJAy0Lz$$VBH_&Dq(Gp(h7paY`(^DLk{XoAxs-{UgWS{c$ zb%}d&s2x}TKm93y_qXjH{u$oCi+s}S{87C9(B-U9AUqjS+tO&pi~U>%+Q+u!y6kf` z0Is2L!zSLQdNGG2R=4Dp-hfy{xAHod`e7L%a#RA;iQ&0Q(dc56r*Z_6t7erP~}I{Kruboo7~9jf_CDFNIf)~y$JZ{&@Qp+y}76aweT zWZj)z$Bn5{#fwC_M+q7#0qWZe`=odCA7A%F3Z~ud_EmW#6hI4aw)TR6t?%JZKD~`GF`#hp88x(bJp$R1}CI#BhY+ zV*;sBgNxokj`{yg84Q32J%Kez!BP(P&BBmYj<%i4nb^|~ z^ajd9C1hOt0w)R6<}G<7l7>%w!o#IT-U8f!v)+CU>YT{pxiNPSuYWsWo;};X9NBPi z9{_E+u;Nau)lQq>;Y?tklG)MQ(wYPaA&Vu&#n^w?5@a=_x)7F z&>ikqp!m~yb;ETsS*~_j^EH~PrrK))T#t~r*33+UleB}oF75Nqbe5Sxeyy}${{8`0 ze8NV;hrc3{$ZQ%_1sgrr>I%)1;DdU1wd4tDX+#s>d3)%9OdS4|!u;Cg;NT)TH2I`k z+bbn6^RmmCiM)dPq0<>Js|vz5Dfaf5Ll@q*KY*sEjYbzQpn&5$N&2u~$!qksKm9gn z)5^v@<*HNURt(R(YH!cRyQyKfa_}~txqrWLhxsJjxw(^E$jxDffkXRs=iF_+$X(%8 z%hHVy7|JyzZuPm?_)m5w{?wnGbc1coA{t@QFXnv9dA~BK;=anW zbi|3C61-tJC5eYaXm1~ej~#i&DTl0`3P=#XvhK)eAxkGLYN27ET6r5S&j!T`7=PiV%0a zWog4vG(7#t`;{SUGD6LY5DE^?D!67Srrr-Nk!%2cQaHIbgQR1@VtV96Uni{$Zzp8m z8I1%xM#rUDE&Nc;$;lgV!d2R0vq>L1REYf+y`5sn#RZd-l^yp{ke63kAufsPE?5dZ zUBzgWuLO#;E^+O-1s&}^U`)SWX2_7NmcoM$#r4es_8=z3HWZ=zi#@nSY~DI_?Uj)_TU zE;2SYYpc~}{uNK&&(iU6&b4G{Y>Ly3`1LWZVahpNB);3}5CZxQbH8xyN2lV7%k1ot z{$LxpCsb19)sjLAJAt!IcqV70ANuy-=VGC&RnnzKOW|a ze_!NH?jCH%q6MU&LQkd^&1m#ICbS|tEf%S_fx?e6$HVUF+xF*hJ}--O5(IA2lfyA# zsG!$svM5;;B_#pNZD0Sj{Na@-)RY{3pd% zszC!inf`vaA+v-t&EM#=2uZS^p0{OFnIj^+5g&gGYbW&O`GDD+@9_<1)O65e^-Lw4 z%c|Co?`D@wHPH}Q2-LlfGsqWhbWPYUL$%?Y6R!EOf$G}*Oz|E^oo{RV(aaJVFLQHz zvGR77r!V*N<=_p{Uf;-`;ipsV*|5D;Qt_MO#wm+0knB>!-tf3^3IW*w9E$Z2mexqU z`{RV;h=MW)s!*t6I!6$d8!kE+AO6^Lon6*V~80_e{hiamj=~N`|JsJRy2J)~7LE=Ok{V zR$Vcq!lfnhP??+D{kd*WrE{1QmcXP33Lz|yrJ{#MQj19q#uip>bo>~6F^k>lnNqP> zz$UWUig(uRv_Kye9NtjHfys&#RYZojFpW4R0ULJ}V6Ypkavq%?PjV-=w+p%)M#^8? zX|URIbX((tFm3d`vTpnfsShzG4cf>0-C8#RNC& zV8p+6$tgxGApB!;2GW@QudI#P#lXH-p4gIv+omu`)rYzKJEL6``qG(;@FB3g6R+c} zl2@vrDjGIP?v6ql{B^!kdet7$-d+Eu+^)^wWE#8MZiJhz0pVvh=m|ZQ7af)Nto#is z(4(+TyM;7kYAK-LVEd})>_;uujaSKS^`b(UwhwoycFQ8~@Z(DGlyK5z zC#MeDRPs$cMeT;ZHl?tKHoTrWmO{YUa;}YvO;Iu&@`{YdMzwPW74LR1zBI~m>e1N& z@FC{1R|+Y01FLjzjCU`oYLrHp=UL8sZZ_WBvoF*y0)4y9s|}hf+9Xz2D)f4k5{st% zUl5<5<6I9cXJ&I6yWijlRfpw=fqhziXAU+tvbWCc7DCys-6poN@t;4p;E=Q{O>482 zIS?V|xyG1k>fOKVX?V?3KV@Ufvw!gGcv65$u6*%(=#F`j2}gTNFqj=ykJwecSR*%N z@9|QyNqc60=N4&qH#F&Rj7e0=dhOb{JLmn5A+oERf!MQ3K{6sK=k6QWXXg=t3Atzd zc$Z)u`czM@T*7*iDJ04?-ScCab_19NnOybb$M{qc@5N1b+?gila_wf9k+4+;*hw4xf+Y4g%q!hQO5w0hf&!>gBFx*}ptY|iOmvGhhkMrLG(67jG- zQ9Mikb?hEY&BmszC*r)HO383uVY4KRfzbfQ?m)uD!Wy5dvzp68bJw0vgL$7$Wr_ua z!X`0m3*5;$t|_A~S5{UU-vTXhF3!#-s;}y&iZG#I(QOtBNWkro`5a?#QCgO(;so7@ zV1B_Y-Tzx$mGdPqKM0)N@1%KOcfOx#G^|tg{|?gcpb&DBZG_F!uQ>bkII(-?6;EDCI+Ot&S1BDMAWMareAXS$uPV*oShevXBhM{Z zpKeV-=L(g1!RH<%LU45RnWC6mUSp>?#sNHYOqAo!h_?7)o$Edq!#UQ}5x8Q{Qm;~K zWs-z&t5glPCJy{=`e>s!;>q@Oy^9W7P5)f=&TDFFgIQDF-gJ-iu;zO>`m7RC&rYtK z#>N<|4bSGFGoEl^%aWW5>y!Aw=l3bUMOZtbo3IcfmO-Bbf3mx2nI2LETArn4wkL(a zS$vf#Z0o8b8Ic#YFtE8q$RtpJEa0`uxyM63H&HxQ-C~9^+TFHviMcgt=p%n=koN-%@$ezDQM?c#oC5)WAT*rxD(ey-gnadGBA-`x|dk!PEJyZPTh>t zLZ%*|Sma$`T%!{Z@jGnOrF)L3fLf!t7oO55w!cc}x2jbn-dZsIIRa;zotiG|wN_fY z-l5Y8JMmlVI12}}9R(EPlM{!^!!|rn(kA(H*|^ z3LJQ5_4-_Iv-XX^O2fQ59re?%knnb=dq$0mCvv)LBG%d+gALPpyn|9XhY4tYvr(^q zUZd=FO|+=S^9;Fpez*53rK6J*W`~_Ee6`vgvH=Lvgr)oQy5pv$J4Id3Gxa1saGssE z4B(i;X;Xp-euB8~^Ie^ldzWr4Rp4Yz83-HljS2SJr+c0!<@rAxJlxy39``dCFEl!G ztIo*U+gI-2?A0yBZ;j;-5-15~&Pjc4bl9RXFfec<*R-Cmw>zG-ESI@C-`hBw(wpKg z(W;SU5N~K`kcpvJaQJL8;FhD?d+kCsa%nbJZ9X=Biq2ch2ZnFn|9m^Vl*nedE^@yn z!ig=^F62vkWYc<;#~iRHd^WB++T!kvfsH+JgHM35=>6bnK2w=H>4mXSh;0eP*;mdN)bD)srRu(`T2FE zjv)ypl}T|QBPYqZngg)NtU_|ofbOQ91bFLt82*7a;^Vrl_!)x+O|1OAp($TD4xX_! zcx)(Huu`6ueN{o>f)TxqD^Kx$Gv~ZJ@*FXZE^kE~U;MFL1BJYo+hmuPOZxkFF-MXd zlch$_1ST#%8d<#3JL9p*)#8y=9~^ANmYom z`a{xTy(+>zN z8*s=LGI4X4ckr=W$TVa*I_JyU;pc{Z9vu2~ayE}rvgF;)x@G#La5ajMGUin)=k@T8 zPlVN%CuORspQ~X}uGWA&rSS~&{IVJ-V`f%wqDXvy=OTobihC-u&!&z0xo&^d%Xb8a zgDmOUA)k-oyE!(yM9%;!bMgeS91~Z*qhUwGp(({ti;a$!3xrtUQ;ch~wVtp>N}5B1$%mQryCjG0aTyvA zh)b)*a;mJ6sk&F$^;^+j&AGeVeeolP(8EcdRsO3Yr(igrdV=^#YL-O;Kzucy{?KC9 zc6y0_Jx3+!Mz|3dbSK-@YuT-~nVaS3AN3eQ?5y&!6s(#J_wu2xhK)(N!Dg5^aJpo4 z?KTSbi)52O7XcTxneEuI*B- zWSpYeamt-Dco*z2p05t&tTRYxl%wA|t5Kz2Jm_Y_xVER~S+dd$hPfZ|T85IVey^}4 z!>=-af#?KjM$h?2t+Jtk4pJgi0(P>XLLCJ2sAtN};dG0V!Z}G5+)|AtD_Fp3I~UG7 z=#bVOi7^^kA4>p>op~!r!~Uh zTb328zjDf~1*G%0e<5znbSM^jphY^TYo6p1sI=7_;=H$b03jg&`q+;guy*4?Bc891 zuvNI>;7|zDr!~csZ6_M(+dxp}i3%LUWu8ha=(ft6h7qD~z^^XcbY4E1L%s7n%qTYz zdUx#vF!iOtL~h16P1HaezTZ=L@59c>lMqX_2bo(FN39t2C=Q$BpUXAG`#VeglfpUg z=r^TuKG}?4V&(%)h~yhgG7s zNb7~hLXt4gWnTSS(5lB|$tO~}h^Z+57UgV7xA{v7^C>pv<%_n5765UnzSSn_MK`2E z8y1Hy^b6wSn;a+XVn2a`9Ql&(~DbTpL83cl> z(E#djJ~)b9T@@G!lXk!F&xdk#bG;MV=UKY{fc+8N#_DAdxk~)u`+{1v*gU_~4?VPsX`oNj^It|!XJ6ML3eVFsFpRP?+!;xV8Ba>l7T>jeve zcqQR0@q4(ZUxEDH5Il$5v;q+3q6yK^d@$0hz20V`!DN{w|K1rb}x<#E4}tx ze3HONqv|9LePXk3n_k_NnGQlf$6==x`CNVH?+N6@#ttcX=7^+3g#XI!02~R(V5%Bexejhog=;tl4FaY&dZ&=GQWSMv zuptDV6cj@6viv~{Y4$|2Hlysl1MK#3sDzo9uy0$VT^Cyoaf2#SLXlPRc0gY|D(ooQ ziTz!}*CeQtGgxq`g!4Qr9cDVLz^r&TbqmE+J9qigQ9zIHK?& z;x^5BQJH{z?k6R>pP_`_<@L42Ye(^35I#k3U@i6RVk)hX4J2EL6>e}3vRG);Njw>h zXBvYsipPOE$hl^uLWwg+HWGP#`1dy5b0Va)JaWR9s?B3MVG~X7|CknoRwt=Z0NBT8 z3duKGm(l#1Y-9u&8D3r+MDfxNqIsm$mkVy5AL%?AWaRrtSa>I`RGvF}4-B$IU9Nv^ z;VHe)RUa6B6Ms1Ez_oz+^o>nS7Ny_Q&<6s>Emt=yLc%e@{8zz6ES03I!+jR9pVhTh zKK66A>759^5tx!WnLo%(K^)38KLW2qf4o0V$bOx&I=tBs6ky!bQG-uNsM}xPN~B5I z+h%}xf92+%;IM>Gr@S>$&S&{8xgYwuS_6b5nf*ygJG-wOwGY6p)d_IhU%o$O&iY}{ zl`+h@tqNM;8B!w7kv_P)>pNn1*?hGom|GBpGKL{ZIV4A1csYlsNhzuSfZRz(OFJ~l zFu?^g;O?aLvkT)qHe(3~2@Ahx);q6D3i?=N2?24Pwf_PcpCw~QM<*BcqWwZ@_1GxN zYvxwS$;kLUx78eA+2!Ei5PJS*$m}-kUewQ{R%g6CZm8t#r&jw?k2A;5pPC(Vb8=!2 z2yT4raK>Dhm+_9*){|z-17AOQb)k~*xn(6MXySMV)@J*2hqKJo+myiht_!5f4>$(| zINp4o@?9msH~zh>oIFW2rKJD`YlF->$IZdjlmb{@;?bZ{ik|hPsu$3cE6n)*DQIil z_eB6m3V7s+4dM16J|2_QzQZPHcX)l*saQl<~`#%Z+(I>yiimSR-BB+wq;eQqaQ_1gtnx zk(~adKZaqVof`yGULxC?9+7-f*l+L-w7@r2(FK?CGV;(;hXeK8+YS{jPDA`k zS_Z&n%gwm`{>cN!7yK&P;mh=uA@TRYS%AGVXb~s?D*j|0R|Rh{Pn}CaG`K#lSrkO? zZ!l)>dGr3>aCAZzuwAYLMi4m@)jE|U3t~G08bpa2tPCwc)wu)sessJXb6@;ml8RGR zWfGXBOs5Ipy5!U?*I1*ZBdkWSv?kh{mgWgg38n)A2H0jL>!3lFMji>)7x7bOy^4?6XP89H#Vet&EX4C>rHp1{(qces42p5wR!tVkHi;{& zl>n8k35~xx7_%vGxgq~pb+cZ`!S1~HWq~K_ltNkOgj|x|LZtJZRIETarej_LvrZ{J zpM^yVy(Q4>LsBw(k}oR|D*ZuT*yUzHNe!$`G@5Q43xAAvTsrH(9)4#?!tD|2_d{y4^5e-o zl=q?_CCn+E=bCurinU95Y0(1GW?Jpq6&Pf{+GVbTb2nNH(_hn8jP>(FO>w;kEV=Q> z^K;=6gjGTX`L$!9otIsj4?u{^zgM#P8TEJTsf=NiEJvLC6gl5)?iB(^B_L~6`jfkl zlV3cV!LdzWY3*|49pB_J;%%=92T%N(W|?epIVws$YkFA)e;XMQ=H4M}b;Gwt+2tzU zgL=xg&-l}5=Cu`-MSVKI=f?x{*e92#RfNu5Fl2T-{pcRzwM69z$_pBmJ`jZn{hT%~ zR*@022w=#WI2C6i8q0Ng3J&9>VOmRvAm_ys+N8c{OBZ(L8?1J0jNOQFYpNY`=w z0dVX#GRXtw1FTvQ#VVOce9uy1OC^mYosdCjh3N{ctpuv}Tv}XA#qVTO>#fBu?YvM)c=E!K7_^KLG z{0CjCi?PF^Nbj`eTRA@y&_CFm=E~*)b6uy~OtB8QJ{Tvv1j1UyOfs7$@&jj1)@Wg>Og!9+Vyr^(cfUQI8=^cWLXGBXUxJ zPeQ>#-28xT_KOV!BuZ41X)y5Ubgnxj!FW02!0`^!f=*(!!?Y)G8v8gT-g3Pb#Lmva z6-=}zCofyuLP<%j&IU(; zZ`{nn@8M*g5hqX9h!AKsl?FvL>=d3@C(TkYWPZMmlCbd2D=G#U`>;EMLSZ-!)+ORJ7SpsIuRlLD+27ZhFlM^OAjUIde4xBMJlLr zW4_I)5w_Y2__QsN2!y$<7ERo-d!4q9)stB5k`vtQR5a%I%AMO)y1HZ_7Jyd$~_w~Py=<4!dc@#x46|PvNq_Q+!D22{;;n4TxUH?IR5mZ{Nb8q zYpJb`^hP}iae2Gc;$FvTF)j^ts+BD6-N(msJS#mBU=|Plah2Y=4$psvI@5Qn_1Rkz_f3< zbyP-A((b*#ZJxNSwMvqp$$$OjX}*9f!S|+xJIoTJhmSpuHiHvsCr$Oa#KfCV*mkBy zT!W<+(r~_4Y}a7Kg#49}MBwe1-{3J3PUzA0c3V$sR5*uIUslcB#{7>r7Th#6&qlmi zt@SV0*8#Wm7S*#?)|A5RW{WuH!WZ?S3uJHb%$;elEgxaw<$RGU-QD7VTew+;NeVei z4w3fLv;Nfg=?v|u1VS{%o)5F8%Ii13tl`{dfh7wqX<9={?#!!D(SDd&Y&H3AI*DJ? z*gJRjFj<`D<>d}GVq5=lvNC-mds%u}q`t#BFoC+)WZ$hvNV=C|Qf(8yBRbP+7(u$O z?tA}3rhe%pL((Qie~DEhfwXZ4WW%X-V~m;qnikY zlv<0Y_5|c)=ON?gCS+0fWS*Q>jm1NNM?TC^oHqq;mNn6Uzq4AR>k2^n&fK~jze_uT zzxkU(3~3%`o%4`RJrBp8;+g$IdWkfJDARGLV`tZTknB1q%ueqJtDUcRMKqoXIRDxl zEA25=a~<$Zr4oOWea9NBY)Ec?>g=`~M^D8);jpic97Cdf7&u>xei5W=x?`ILod|le z=^Xo#wVX~q=RF)nd{c=hyx(yV|9y*tQDi&q^PFa$_oX+0BXQ^M86jn1xq$#R^-AOY z{FU6PHXS`(P?NhW+Ea3(>qnm9_jQj@CG_MLd zhm67b{Lr(d-K7cAvbJjvKOo_vA0qv7OJ9=HL`UNv&FDCN_nco|A=r)hbz2X+VK4J4q%{^GgK0mx!M zO~_qQFFC1o+3DS=+m>sRGp+Ksn2`0J(gAu!1)ql4^mLol0Kv6X zfpDOV93KWpZqX}ypS@q3zEKu7ZcCWNoYQ6IP7|oRxNzzr zNJ^(3UvKD=P^KcE?c*hRZjHX+!XNSP>w87QaV`b8;4Q;C${9EInA(Pm_^DV&>~=3* zd475Yp=1-3XNy=q-JduXW@@oaUjz_vD?|Jdz{Z(q?{27Rjd+fbp1?VofkG9+%ySg$ z9&Ufxv!+Fm^JQ(#*V!zUag9Vp&wmw>zeYjFF)MPeS~?;yhekOG@$=8t3c3H$9eF0t z&d=kaDLjJ^A@}iJp1Oz~TuJ^}AIB1XcKq$AY%5-z#Bt5VMPBs!edPlRtK*A{@>9ML z$Md~84TCJ?GUc}+(f~-ry`_}%qizv!0W&UCSlx2|I{P{q?L2FR1y*Z!7VwZ z%i(|h&|y%3s`nPaAuNju&8_dqfi~tbL#Z?}{e3ZA)!M;suViImapOZCYjUzdx^0t| zBP1){8rEJFIVS7H2Br%{63P<<`&2m{!%VM6ZU)@S)io~lzTJ=#RJ!P?;ELA!+cIT_ zzB}^NP61-3)b`^3I%BKmi~P+XD8y5~G7{_)JTjy#xN%GJ*pc4k-V$RC0%T$LA!T_n z#!iFaPQmi0;)B@`0hMu3@U?;Mb!fW7&Z5#z6lme9a>LSi{<2>S&0xPdw^_;t+y-}b zeDB?<=D$CA0k>CIkS)MChd1!8Ap1Khoco>|w4g6Y5>#1TZ083c|BWo+3jc%JWc};6 zK#KZr~n3l5#7VrZ$Al$%q)8?`Wmj(e#lo;qX3Q}0i0+?4)e z?*XaM-_Qo%Y+zw1F~wJ=h?LK~m$rJ8M>QH$uGRA1-u|`Z%Q+Mj0`rThl7-EmI2YfM ztoUr(rN*{!Z@f~mNVp}v5;=7&y%}i7-?G;UAA^$+5%}UM*%02*n$Ou?{S<%2J|hq8 z4sgl=d;hOrN3p+wYf$@Q(nePteN#}JyM=C&xM{4kv_%x^V*WR*AGt(w9v=&hh!$hX zIH4FL(x1l7l-PtZKTtKlex`#7rWjm!Q+jph^L(nXa0`ffpr+1T!8i3_-q^UiO@CjL zmirPbF7pUY{=C$E#F zKcqeyw{37eiAR;nm35*7onRD3)L)vd{{@x*wfBD>ins^<%btG$O!I_VT^R`d#jDtg zPL5*Wu@=50UCcTEE<^Ci^#?wF+-uh!7oTS;54J~1y?p>{`|pv8_WS;G7`qdAIxU}& zM%F3^tx(gur(q8ylMf)ZyB9rA0=XkNhrPA!0Ri~QvEi|(^g?bkobOKOJdmdH4Qq1LJFe=jc!jq6yw{(J$6^bZe#HJ9SAN&$}4 z{~ji|i0nW1sBhujto1F+>sN2NgbzYE@sliw2iRiuG_%$)CYu4=Jqyk^R{NjFE%DFe z{<{upzh|Si4LT>cTDdIL|GE=@9@NQZ@$uf|l7zh-6} z%bV`PQkQ=eTNWIyq$<&!D`WIESOJf%AD=MpRb~_hK55iT>Xjq>=Y$NtnQZn`dEh6T~LN9F}TtGs=>GhjBX?E~air1i~cKXEG4_YP=g+h{sqS#Y%8O6a`Mm9QC{AdnZVMd)* zf-zcVYV|Lxsq}NkB+*gHvMCXT%0&P%`d9D?<-#OwDsksHjAn|S^FAotk1fgF)x`DiHeS5Q9eq-Crx`z{U4|P{LJ<_d6K=-V?Gt} zO4LQU6&ZV>w-rz6`f7gLKlba9dnescM%ES}$sp%ppJ!yWq0Tz|uPK~uk03kDzr3bi zC#_!Kn_R(P#LKE^mHBn&$kb;h`pK`!iE{s&1bHqY#Mw<}yr2rOS$x8@k20Cch0f}M z$p`)6FQRDQ=XJ!;vI;6cvPs!y9Vtic-U6CBZAC*|d&Tqr$uJh$yPMFsU?JEW&tr-8 zP%FE<%= zW2(N&N)No%_~QSXSy+e0P=)T*+xNHMzt9QNOQ>+z|C8gX1lS%GzF+5~88(cmq-AH; zvBwN9oumCb!9QlnG~gPb*g|l_GB3Lvg2I$yA`iv6erJDCr4!;v_$NDbMCF2|6}sxG z*^5PU9McJM>r{raP}f=C^*1W~J*$8Gp(OniZAKaAiqqYdFZ03W+oY({IREB9FH9k3 zy-QQ0OyA756a=&_$j>IX8peXfW1jkt^ZrZR=_JL<`_d7kf)R4>o?bjZ!VQmmvSz9! ziSt*)0ZZOSVr~W3@y68(36yJQ5wO!S)b%wo{re*L|1P4&m69OgwQuGTK5=};2;yIB zxU0XcZi{;C z@K4hI`~L`}Kc8FEE!d_dHFUDN`XwkVEbfg)*}%r224HdmL5cS3a0NsO#UPSm8k&J%ZuC?aZBOnbGMO z7zRr}*Oi3uVfQfM;YHz-lG0yYiNIVcGM87^8YM(;DO+82wN+lr6ei&lq-PBb_a~&_ zF0Z<1ChApFa!#)US2L%&T3!|_E`Gt~CC@(?#b5a+_RAtx03Uj?ZMW8gEh8=cEMmdk zXn8qvbiGq4*DfX^*R;H~^6Sjg2B*Eo=PzFHou!tPl*re9U0}AFbByg*&6l&bhB!uP zp@*~3(yD3I+<)}PrJ@@dVVjiLmo+iTE2E;I00REL8TN`<_1!!EIp%RIR=z`^i~zrr z*;wuOP!fTW%eHh&9r>qEpBnWl;_BdNwR+?#YBlSLc6Q`GIDgLpPf^-m4XEe$Sgh~= z;cey0vreYa6TcjXnJrh*dBO0&USCywV!~p$oq<7xm+LD=Mn{(~295t8TW=i}<<`BA zt0)+xfHX*hA{_z)NOy~LcS|>jpmcW)N+aFf(lK-mJ;2a4bp9SZ=e+NEf8Wm^To)I5 z&FtsdYpuQ3z3zK$Scs_p$j#tsqa7?~b@kOo^&ZU*2A-#ed-dTr`u_JrM3b^AKk{lD zy=rV!Y#Jy_cRw0JAGRs3kl~nn1_j3yrq13y`T8I0$g0)@>?&yeqDkis>R`=cf|x9SJY2_B<@Wq{#b}c$8Moa^tTKihRu!M+sn*4yEm@57qH}a; zsLVD+75Z`Kw-*VkEj}kcN6X^rl7K?UDXL+`sa4bccrCsH=ZFXAt$=3X0^<3mnN_K-A?>g7b z^2WnSkE7qpkp5*#ae}<72lNr3JA%>bZrbeL@Eh9S`}UDk1iI+YpNFs?f!HbJ(22R3 zru;I)b`#W9W2XH-&cGeS+B07k+H#A^*)*rNykxlYg8V8SY+5i4O<(g#X}>KGGsZ}3 z%-Zei>6-{4idtbFM;yH!stgO49@$;G+4>@ZDD8PX1K*~Fo{}W&UPVZo88tew{MXl& zp4_{-8F-NhRI6R>ncaB3rFk^Y#w4|P>-T%mtH71yJ>3hucTo`nH%i`j)5@2vTr@P3 zr!uH*54is7fHS6^9K z3G*@nWLm!f_+45~?t+cSBk~hJC#PI=bPR`+xm0l3{IG(gr0fKzT7tL;C?1XTl;kBL zO@6-lC1EW9;|9PsHwnZ%C@bGdGz9}UhZd&C$J4Nx4n~=RJtUhi>%Y0WlMLSqvR@`w zZLdyDEyhnRxN3sV7W33;_4Q|ztThXD^vW=!pYiAOQVJkLkTrxzLnzW;sNwyzt|yIyWtEx zYp@U_5?!@!(JTwCM));|1JXZ;fW5>g%v4-jinq%c(tQ?{UQLX{7103%z)$9ScB-1G~>0i@H#oJEPigr$fgmxdU;o{^=`dnT+&6Ho|J^sd>fE@f^ zry;)&#`jM1?D_L3#(DR?67L(2&Do}ebCk!^q>ULETvl^b0INUFbE2|NtM;>?tPRK$ zpoqw?4{6hRU3ul^3yDV%Fahl1(SWAbD7Wz44D?HI)0I*CZ!(UICi%sOtR6!kZnv$< zRXE-Tf7F8K!u2;+=Q$DedaG|TDg4S^;pudyH$y7SGrl!vZr#oERQ%pwDp$Yo<618K3MX}Ot)9kolBNOsH38!dV>%~Y6{IPT1; zka}F3hi&ao=NF7jx?O%D#>S+e$TXV247(aJ=JrOby~l1~C-_U|*N7iC6YRxmMLHEmcLbUG3gKGN$^(eCma5${O%V+1Xs7Ormv! zMLKF~bzm&yp0?$(a_fDTe^TyybCLT`boFPq0Io{i+u{&V`PEB8mj0U8#l0tI(B>r; z0lhJoP0uEqY1VEH$?91IAN@YZr9v{NWj=nR6Rs{hf$aYMvtvgyuwh2)h+%iwY1Pz?=V|9u*P%BhQ_E2fAP2!R@pP0a zWYDe`BILML^R~1i!n)S=oY9(_tL`(Yc{f_F!h3N;298}M_}a$rKJYjwEF@+%7Keb# zJL9yI$hL`Tch)7oOO`*1Hr-oCESxmgOa8vNnhgOc+wZ#*9~njf1Mjpeh8~29mt3Mq zRIC?;9u7$pQUe@0N@+Bj5q(tOGZq>_f1a+Fz$cBeNJO!`YCAU@S;^+1X-`Bm%!}Z^ z&|0v){>jqpD%AZFpwB;ZH|&yQ?!sp3f$p=%+wwYccIl99xLVHD1|`n~%n{)&x@mgH zC&Tagn(p9Or!L6bDatolA6$&U9Ruhg!3jY9$uUt6ISjGqU>=P(XyVapNO2)~*&;2d zWX7^n7AE~r-+n~FTfYpDECx>L3#eDkC|B?Cy=kUply-IeDi)UA$&c36#9L}Eavb?K1b#I-9K)Nm7F^vbK+ZLd!bJFtWqMN53g!#gU zA6`K!zN3@<%%2muTzxT9ZJ3+Nw@pha7DmrisOurksMDy`3li^h$in~Tc6}ZLk=k#* z>4ZX6op+8SC#`31_Zy*+^{Wq#5wHZsF}y5*`3My<(4U z^a^0Czbz*9Hj)jB*K#R|_|`Rz4#y-2bCmJ?^n-Tn#7DHR@_Kd+V)=;z_X z6LC-+8Z^%qG;EOb$GEJfsqW_(RGQ6v>VAE?eqm=gfB+7`yo;~_P84+4{%UL9EaPok zCtkk*)TuH+fSl(!Q&}fgYzSIeb5fxFz-c=oqf=_eY5?09M-7+>b=>CV zlkfQ%lhBDMO|Nw$j>{43Yhge|34MXy_+T9S6#hPZlr{yfdAbB z9Z)_sKogqjz8gkU{`rs)V4S(S>~l*Ha$G1OqmxqKv|QW!Z$zIE)l6_BJO`80+3Tsg6m5nZ`Yr>{18ii~ zwr{fBEwGg%8tcLV5wT4kX9YQsMCy{3i(;`a%j6tt6((u?v0|~8aRs;4oO|Aob!w_XC)~$qnsz(XWHL*j_%8yd~JZe2593LP#T-o zZo0@e@gHJeDv+XJ@9MZ7a=a6U@!0wff*=C}qh&auHuxK~a^P}V4XrARFd$J(;aL}& zAq?dxl{LCKxSdyQ|{)ngc;2)!Z>W#S|fh~h)J63QpBx7G60 znx{VB$&3Jr2OpQ_J)S9@S3Px4pCDXoT>y1|^V>Mm2GdS}BEqGk<{E`0S(+VFk6%Q} z@_KSSx-sD}G3GG@ca&lT1;(5}8`u2PTUJ-sp`*V6CRVMQ9f+v96YCfO%uh{rJ@)jLg>s22&v{k>xeMqP#9 zfK%v`b$xI*sV%q5ax#N@^`~T?v7d6u@IB4yUdxh}Os9I6{h3@}iqoZsj02YAr(H-h z+f#myZlGAv<7)HA9U?w0BjOg9Ks&1-+ASPsl{v7Clyo5{JA2dJmEU>kM-Aw#y})9L zGP;i)qU*M6ZRfD~D;xiw(zw#9aR+GqECU1I2W} z0d#zO9%Bz9?edJl;4iZ#+T1_<+#nvoU+tdv$0ED{i=gwv{=AzE2)ciPOs>iH$Lktc z#HN45ylAnRRAPe-XqFC}fGI7}w&G#?g2LaWcXl1O@H-4Z{$&qorb(D5Q$WV`IojQi zMP$_2xgE~~!--@NjXz3LYh9P0T_(rgh(o0C@DOZ37=^hxnkEEC@ zp!?cq&jg&_fcc|pP(Kj}U?SN*(4V=Pz{Bv3HzE;$Qh}nm#%f-tcen;{ zA|j4kiLvP9)RxbR3+%H&^_$S@{m9f*V)K#mF#b6}gU4b>i@)o@F=QzYL{`a1K)g`# z@tN7*%*N7A)Ec&J)!U_<2vsK(6UOc@RFqB2%fX)dgFvv92MIpRP;Pr=uhs*=I z-X~~=g-SMHyjQs9^n`3j#4y~e!_EQq;&QJmxhvt3Zc-nO*~;x7>-Mq(2m$`XP^;-$$)h90$;EPX_S^AeF&>vJ z-X`}6-OTPo<{4UJ*d{nhDJu@r)sqX&}K@<}WF1hK+@n8oIPXo5JFlOF7+(ad zR0q0<{K#yk%b1l<=eD$jHQ#`bPI<#l$azLbQ?Sv2Sp-=(;evQ3)Ge z2&Nqqu)*x*~#Xv6TwNvQx1aXg;26YG z2V@VnxJs2Ji?!N=4v7nfU9xdN?B8Hj*sh*8>M1SbL|h+?uwC+7q`_`Dck3nhn}vN!CE$}Xl$6g&Z2!Qf2yiqU+7_n(?>9p%lKN?1D%Qx%?>mgd@8Sv70~AbPF!|x(AtBn64t$O-K(dhqywIa4;DC60=^-U0 z6*k~7t`T4!*7HWhuj9H4X}h|sSw9v98F|ys7*q;2-EnDwKLn(*`DGC`1v1cZ3Fksy z<1N&%QwyLX0)}$fdztYqHMAw)R*FOT?brHLtY1*n=|xjgZ?(2{IF>)SJUiZG8$I`v zuM9&%L5tbtb>2jB$cnma-LOr(gmvBhIFT92aapitkmo~uy>{d!0o_MZ3))Wz5IKwD zT{rBGTgPu^zFJ${&=apH<`_s+Wh9QzFe1TCmwjZn=dmU|ZTQIavx}C;QOR&N)1i?v zEY@>?@haYJp^I;rH{-D0Yh{>vGSZ#CeGVLeEH(!xd<-Q`hvDH9G;*nh1g<7Tu=kDM z?VfjiT3z@9gnxb~3AIUv*DfhEcowB3Sk1cS3C*4Y$XOAe_jO^*TrHn6Hph_ROC|R5 ztBuWquGZs)3RX)CaC)7qHq=y!#rg_u2JZ1G>~0n3cmxf1A%rcQ%$mzIbo6h~`H$ff z+#eHw8d9QSZ`VU9vwPR6Q$Per!dJWHbt0RtFjO#69mYTy=wTyMr#pzIcVyffURu{k zLfff8i#&M$c>3ME$7vi~*HvZE2y}3BVoNrLvyH%GjNjP6*Zl41>gpd#!lh{GO0h!J z#YHisS#4o?>{mkA#SA&rI|HiP#7fIW^~@q*$_>YCzF}^$1v(`wF@`gsASGm5*l4jN zWHGh{+s@a|pEeF-<+$BWLiYnBQ1yB^vl zhA(^%MJE63A`ba54XNo$d`{r|Lp9Wx$8pC%bH8WA5I|r&%k*I;B>f=s#_;j|K$~uV z!BFu?4e(qF6v!u3SGhmPrc>rJ71#k5vZm{KWPIkUT?ROKs#$lvlF+CRc;efL(J!(0@YAZV^A!UET6gx zC1%liTc;h7_D_2UFcgWwQb4i1+5-yEi(Zt?`-To!jUG7VD^`irKxsZ>GJNB0)>Bbg z2LRs(g7HMT*&(ZXjdv!ofSuA<3RJ+dgY8}7ri6I2Yp=as8m}(ds7|A+WSD~kfzO@g z%6hdZnga;l;jL$&Ternzv!`j)*5285*>40{xB+k(^B3<0E4jA5xx4O+Ozi_CJfHa; zqQleExHMiq#}puO7!Ukh!T0*j8;xokC?jJ1UF?LV_h`Tbb3d1@GhPYOg2fz6jmz2| zTV9^2cZiXzvka}$@C@8U=+-=J#ua~v;5B84v4(mpDn?C8y0|R9=}#z$jiHq{*HAeo z8O_PC1vCTX(3<^G3D0Bk_%i-W{9VB!*R1d2VaLv|6>W%+azotUWRg$4@+rsz1K+O3DC-=Z-icO*VBqzMgUo}9J}4J!qE zUBovwde-TMR$+1j>Nks-GQ$L|dPh;`y`xBLsI!EDLB^orAOw zOyMSoo+H6a=iaMgJes58qZF^+U!jO?gxS4&KWhT^YrLl5cH67BAv&4DAZ>aL zRJ|LEs>K0BP)4%z|2Kk|fq5}5(ZpN;we9YOwn}WuvM6EMu9dY7Lj+2LtDY7A+k$5~ zZVM|ZlNO(0>LjR_zd}tL!zGwJl$+}HwDDKX5cA=9`#&*?FmeY^4ol}QQE_(L{7#P~ zk#QI9yKfRm4*-;!h51vS1u@crj-;e{c9}nAfqvNmM*JZ@S-vM{kdjwdg_^O+fM)f&yOP=C1DT^oIv>rqN4V>__LY}%O& zE&F;F61Ijpq4TTTjdq1tH#%~Gf6YZ|Rk)xFRkH3D>><;}8x z>V&|tYpWkVJ}PAxkC9X|u@(EmX0{vUmT zCMH!f{3QK26cxyq#_E4?NOt~Jcm(3&?Q`3_v_D-I2NNx-vqwX5nt!v4eBSx?t+Oj3 zn>bA-GAWLhn%YIF<6k}9hQC1kzo|99)!D7DAXxt@WrTYCTK~LChd-5#P+&#v`Rk+9 ze?_OK`IKs5_5})WBLDd#@F_>2bE^;3F^zBjx1;*9Kz&c5&W$bw;1m7zR7zfz>uwv| zVt?}r?!P3m{{AVmR#udHdj|e#&OglugapMBQ17B>Nu9WVm)()#LH92u%Z4d}zr^f^ zCO{$k=buME+Z{U1Q?!}>!zuXB$CpR}z%>lhkh@u(|#GYS7~j&z0-**GMF%1|bZ#o5j-=;V0(DG+s1sDDTN z^UnX|6GUpVM;^~;cqqPNsyo8E1{;1A?tG7pkLUg_b?PHeExT3e9 z?{C`d{;J4n4NGvsd@Xs>Od@+Ey*l@WlETL~qS;(oiGR2#zer!e(%Pe0dwbuG+bLMM zn}nerkCwBNOtrm-3=GAzuZ&7vWsnvJhawVFB4m`+yXpp*yOu@m`+E^)z(@{s%m3L~ zzX@U&G3Jr|oD?qojK$A+<>jm?z^G9bYHDguTs*vjV7&~yS5iXuyBrXfsMoxBn>!U$ zB|jtpGLh6~nC4#;6*MvYI~<(2jamlEx83>Ui}+k7Ch!ecM%tE0!+dc%1js-u#pEfr z_C5;UVx1<{G}Dj&%Vh4y@7(W(0T_?STE2fEzAzOOHe1H;pY?}VV?oz9$P^oUEJIIU z)Vvv-=ODrZU&Z}6{i+KXWpoi;h_y*jC1s{8_Nf@>Rf5Wv-{tF6aU-k`B#xn1mcbzy z7GO4O-hbc#01cy5`$uFzx9%pWSjJB!RsDb=f>cUcNbfjzztKTY@2G8$zecw2qI@)&DP#Q2LU(1+q<7x-8^(rwg2(oV zBPT6g<$Dl}YJ*{{`d>Z{_|xA{i);wS!;uUgK^ECiBLn?qT167H_vD!W}rr{*?-oJ0bsbg~M~laR%m8t0XY)#D|HPGYu#DSHXs+k)e1wyhg#&6IWaK>OjK;5FwKq90K{x6veu&F&&AmmsSMn{)7{Hm?} z7#u83{Hrui&1dv)p4l(mU$W~LU-Sifh82~Ke%BJPI*$?)7@Dp6C$Tynf7}#sG{|1F z%s?>*;}LrKvM_d4mK{oRyz1(lse2Mvy&p;%>c-zK`xS!xk+ruVx?5L z|KmSQG2oZHt4|_U?qRs3G0rZcxl(G5!NT9fsHL@(kpFoa_Z)F+@EH-SATnx7Ue0Oi zw*q50*w23D*zFm5P-N>8Gq=x(?x{Ozv}pfi|1_EQgkFtJ2LYc1V(w0(R3?pIwcdH3 ziG=5*{F#r-)@W|~;=DVm!t(x*_SNj|-U5P`fZeEaXTjq`Fw5pdoA<9w6a%n_t~S9$_I$YDRuVp^l8zV4oja_4cwt?G)6UjEeU5h|sC8<9cMQ7QtmUYr87q7^9%{ z-FmfqEMLc~$?gdnF-WTU{8w1xsTlT+$H6cQtHC(N(M?a#(Pau*PYsFt=Hj{~AgPV# zzxggDs3@83^-=YHOqgGe%g>GFMxfhWH4v&C2UGvdkI~}DlR%)v;biOIKrm34-d^el?!7&YbdtTBFH7mvki(8g z%pB9zU#y)68OhGy-UYO0<)$6aO3IqLMviJ^ljOkHMCEZsnN-BO+YObm6*pyU+24?G+ zZZ^bAuB^w|(>cbes(YH1W(5?-zWDj}4ftD8|bkwHYcYO$w@`u4@AzG0Rzql;fB<#zox zNj0ui=}YPxKQvZawG~ExvmL>^G|l#SPuRlbK*YWlW|p?oRt$MG%vP z#Dw?WBpN}3M;iN!!vq?lM_HTIougLp(O^s7c*$+2?X0nDKOJMgo72AUKi{r8=5Fek z5?%WDeHCn=)*IF-DSP5~))zISNu|GMQc|v5aJ@F*`>9LAJ+9M+XKtLjaqW~+>c}!34OLcUq8F4V1IPkfC+&!sZ%Gx8T%GC)WXHcFasGWb82KQx+($CM& zSF%}h)%Mtf;i9_>Fxr=nAhB8h#}Z=)Pe!f8^%Pm^GYC2n&rNY4Z^IQqC2H$9;HEaf z=yV%w7#cLSC3ogNlz)9yJNbdB>+FF2>53%%=4cW8gL)&oninmcWwJa}0JrpWJ}Lpf z+$mY$m_u53tdT&qYxqh3R3Y?@x#?^FfKARqCw{jsPXaiM=_UX-jH;U(J7*|v(>uf| z4Z-i%ZOQH)o*zTfaF+1KiMJCGJ;DKjkjlTMh)yuV`I~8dpStxl{H6~~=t?!H8>0i` zRi%D?L_ky~mu#!{da&BV_cJdpr=@_+#gkkKr?fI#$zq+*BH?}Ff3|4w{9QvEl?x+(S#HBck9 zt4fUx0&~QNaVO}&s_%hy+TE{{HTPf#4e;Mq?2H@M7O7&;r5|) zmRGLMihylU4sSQVNJ6e@YD`k|!_hiT0rgs=Z${e98mokhrog*i@Y$f6siGA#Fo@{; zxF}jqd-UUQ&?ZFyqjw|7n~99qsyuj0VmqA9NnW$eBGX8>o`OD?jSei}qq%aC>J;r3 zyYhFr`KM^XfB)ogG*Owsg|HKm;k-FyO;E`#kqo%h8L(CZz*d5d|FRXPyZDJBFqNY% z#Wy!bmJ=t`M?4~SB5^fl^P-+P7x(`ACKYHu00UUJO-`RkO=cHlYi!TW0_N?qx4^^_ z5Z*Vg{=)dGn68)8xI3Ma_Pp6~N9OKBkbv{(PD>7d<`_WeHP$|742DA%qg{*5p%E%oIB4ouv@;QMwiS=H38jZYs1;oBP(FV@%PpZJi^MoSy-!` zftsYXx%rA)Kn!$rD=v+FuY+~jZ=)Aezl~<7&=Rm%WXL443qP595~3<`8aJA4aaKvD z2@;<@4b!Ap1&*u3lp3um9$g@o-~Hx?z%b*yPd(#B$UqdD)%$US(9=dE%l7J?4atg- zIhYFYwMHL704VdX5`^yG@A=dDYQB{W&zoIgxbzqrB6|j%33HhK|1uUre*{8%Thbum zyS*{Y!tLll5vv7ug=#(vG1ZR8ZTmUeu+O|XVH#MdQBgc@naaD{{R(o0oMm2|6PVx2 zWZ_1(sA4XqCbi)i`D#_$+38Rk?_PB~VRLs4;%L>^+_ITI$BSG56_CglRd2eYa1EZ3 zAO)^YfY?cpuNs=Xcp-HuK+1CH&iv{NzmwdMQ*U2A6&{m`bhtSl8Hmnk@$w1gXC|#$ zIu!J--r~Tfau?moEU;XOl8LoFU@yw{&i<0u26tSM-NOK)ibG8DHv}~CY@+S#M;+ zfNiU#fJ8K1^&nu+XpO4x9wqU3Rr}k{{3Jn>KQJ5|0Oelg4kl7cCm^SwkKQDNUyy$= zg%71QL?^h2AH8_qTvI+06&%E!wU)Yu_uAuB%xj-JE)Ag92i-M_YM430*H z2k_+fV~-W{G1&$d(>)>eYJ<4nT_hvEj7J@Qz5`(?)myx3wPs0K*=cUp@Cw$W-I_c0 zA^URZlsZ;rm)rfJv@!u)!Rx-`&!GK^LD|!!w?{E1R5mt$?3&6|B@ejxA>rzlqwDbz z;)Rys({%{#deQ=C5UqUgv>iWB-gv2suX{OW(l|9!&gje9l)H&I(|~huHl6Xz@YAbNrJVNMR5E9do-bMA^4vSRiBsV@>sZ+SabaM|A>*!g zAY52n9ys(esi_BXy?~J}comG&78*G+=}l@8g8rA~OHR>|i4>*~)BZB--g17=giykL z%^W(%U^ulh^(a%NmI&B(u2$4y!u$=uN|Xl3x4)3~z)R$Yh8WwokmkI1yR&DJz-WmU z#{mpME33wVqcmD<+QDITkV$LHbH~`%m_Je{EZ9e%JzQfEY6eB6+G}ianEiD6w0I5h z0c@Wm(|eo}W-VgpdL620BeZSk?kAS~Si%JOc0mZoqj*7HK7&=)qPz8Xyi!IV2P}Eh znPij?OspeOUzlI1_&upHx@ zjMZ>T?itoMq~81NS$7I6*6xq$l>W4V-`+0TPyLRs!%ZUTiz~0e>f<78RDQ2pW0HKu zin7AR(oVO$`|V$Q`>7!P&Um7}Tu=Xp3CJEO2L37tZY>%vmV8qi-6fsVCF9@qcE7E( zmIYDshNm9Bff9LWygZ}sxk$6qF%4>v?^|xl1=yO&Q`7o}n`QLTSP45S@ov|Fsq)Ze zr}%grO8Ow+KjIm7Gz~ElKTkN`co&UdHebNNZIGfBI{ikKqWa?p=o@ZDEPMFJub@V^ zv2z7mQoCE>8Q`$HLM1JspT&-m>ko>_FK2LVVo)c2bD#M~j*QK9lYhGc&b*mYw*=Av zh9N;qPN_Tnm=G<5)4fACN0X#FKd!HF0F$4JR^p1sIVh$aq$3*rS8P)nkca#!`Rlvn~WA*YYO1+(|~ zUwjcSwP(LGxBYRgGegML&rBr0<1#feE9G;}nHt-c%^zCMxksYn&#r*U`Nbo_JO_)l zVOG#)>COc>B*f=7`nSXM2@%(7Yn$2(nS%m4X>g1KoUyk5dpRw2Zr>?MgE1nW#Qwa8 zWh|0DEx%DG!R-mmM^6B6A8$IIRoSJ*Kn%tBV9&*3*ne&u(N!$%^lI>cVrPI0_NJ5>dvy3RzY*9Z==6nOKR0MagB<@J7 z9;bNIotDPqE~+uu0bdiFQ}`S4z9hoOQ2YGx7+@afq=rp0g;?ry6<>FDq&2=f5pnkK z@kQC^CvLwImt46R%Z14B#$=y7;&o>bv{_y7WJwI-WRhQz<@;%+QIn%B4D?GK$hT18 z8EAqjd(XgV(s_D5z*J=qvP#7~hcB1?pzYa!%ZAV7{a*aDY92$qF}*pvj%i2-=!!bA zXt!eRK{0!l8l|4CLBEyV`4=!|TY(0?1yS(FN_lYYXw3>J)&Z7dJzKrf{HHegC^k&? zO(OghV`SYL>N0g}y3$K!9l~WZ_X~-x*xQ*TiN9m<9C@+o?tt6|KCgI3?up>E&a^8w zB|=}4pXMa|?mU0Vo=E2dFkn>E-=79TnS}1tppLMypXnjZyv0o&v4GTOfv;`hGJu?% zD9gL!lg4EIiRQ*jI`V2TOh9hIE(&Ya;TY-+x{ttB{==ZE*!-h32~j=t9`+5>K7 z`G&q=tB22MUsl;j9Z@SnYVX`(@Y?I#-xM=Q&%*>z$X*zCPCxb>V%=X7)+zvna$WeD5&X$Sa27_zT`P@(;I0$LgSAI zi;Y#Al1l$65Z4qz;sNOSEoJ;>z{p{add#$mQxcDjS+k8igCC?nko=RDUc6$ABW*&K zg5~UHdHcnWHj0XGPWjXpsyE0z(MI)z9O~w!&0`2Si@u?-)~a|#VssR%ZZk3?X}7}7 z^Km0~=!F_Z5!5ltnZ&)PaXfrZ|}5HuQdAR2#o6^o^wvW{I{;VBeF165@LRE~ai3-%?IUPEo~%$qwxDiynKZ;`}mpQwBGGe6%Kc$yj!w?`O%ggrxpQr+XXCWE{i zBEE`UEP@`soM=mKWi+d?`OULBD-GeCDAr?nEHNKnpW%GnUx)YCpDeFy@@Y`EDa7Zj z&*srqa=5wZq=jX_KO}|(OPU$VG<^if5KbmPUQN`_(zpH#>dkWy zTD{;j@QmQSYZf@7GTY3skj?+-Y?F7~%NiuWin+8{OXH3GAf~spGT4Ue>ah4hF&P0t zCUgY+lLRu@lyA)_a$!DpbL>t>bd5HLw5x4k5Dk98s9m42o7L210nuy&@?rmzQptz^O}?w=!pfY&TN6$@q#bvod!@Jhm+|uL4WVyO&+2ow`{h=PqBDevIH4m#3zd zwuOo7dqn6Ut&YID>zgdkyz9~U@g6$}v^+RzBIGbHxH%v{33P_6Eh`w3~*Etx0Mx%~#y{#;!*-}1{_)q+XwIj3y?Pq0aM z`KQ}*%%4iVJ51&=7BRfL8ozXQ-EF*?_dp+)ysACbfn}nRaqDPQ?qqpejIHlx>)z>? zTR7$EJ)(_|e@KT!^YrnPpM`!^g$ENnPJ7wS0D*L5@1*PD!g8BmfYZGDIZxh;ZGk}+ zZ#9#37wj7cdz+rpW!Sh&d(#b^F&dcYZ;|vU0l8q`1M2K~`DT|u7(&YRR2(NB1OpC2YZ4JzjmbqI$4i8>=@aZ?M~uIR#97p`PJ+DJEZ z7goI>7e%E}R_bM=U}9+rrH(}=LLV%C7<)_SsEfqN#_?1Y0K+qBH+P+1y_-+cEkYw= z(K%_w;J1HLDJUU6d{p~v>{#ts`M|cpdTEKJt0kT8TLc*A4+M_`=?BP3qow5b=wBks(pe5Sr13ljcr{!L~?@70dgj-96{9{&rI}EgT$(TLmrqgUdpRaNV zwoK(B(F%Nw8D{4di?rRa{C=(>WiyYm9Bb->I3DC1`ujQ@mAn^HGXH1;`XEM@tHh%&D@RFS#{d`Q_^@@WraJjMK9=z z_j}v>rz80IXwRToNN&^Nw)#c0vL_xPy~_9>{7ZvvNsyNh=6~za6S{cj+Ue}_3?46@ zF9;=ewK7oT)5<09k%BsFFc-BUwy&GB&03hBKFdY*OYqJKYi}*R5u0^>>Lcz^#p&pW z-p)tIF#b%p7FlWBaA{nOTfIXg(eHa`{Oao1td7BOHE`L|9_P!meC3iP9i)@5g0eER z<$m6nFc!LC(+)o7CG&I?q07;=0+2-uooFY5uD97yoz{um0(Gr*Hal>(dx^py;p-=6 z0S!A-XcD6=Qr4`&-w}KK5;?%*lysG+Yn+~|+=UlVEfHcA? zquHYPBA!iWtrpV~!F3XW;XD`A$yr$L`FTA>yj<$&>D>!un;l`V9}5RAl{NS{@^X^c zMmfG1er;M;q=YGp{kcrQy}qtw+#Y*hQ91TWoDPnzeq}pZ^@|+dkH;~7u*-TGY<8#R zbt5NQKJb$%gyo?Kw_&^C$K!{%66qJB}V&>yhMv*JMtu-YI z8*p;|uyzoYx#zfX5M^aT1T7JT&gDDUo+yK$`z6iACHZ44b}xlarY4B$&z9Ymm>jp} z#IH6xeOZFPT=;Hj&cGDCx7j#tXB4ZGfFX(T1dIKb+>=WJt+{kI)=uY~_`I!l2bLCu zWOy@4J5E3jn?LmJ5=pJ+a58H@(+9cS zG{u&S3Ow(^qQ&H@v0zolUsuOOmqM<2MMx(S{o(93ftMXl zuL~K_wesmdCNQ8WjXX&E&@%II)>pKCJ}AbtUO7YX$3m4yI&j@(Tw?fuGN{|DJM1iK z*ojCb^@I9rEC27-!vsTtlju6Q8ISmR-0sH_k2?llb}c>hH*&tCX>#>dweu${>fEf9$#&@a1llRiA{!Zov@zj#h=fxbGNyOglPS(tpYyR^?53f zd|GOl{_%4=C1is*>rkYD&2+CFuiec$%)RT!QaFi+QEO||?DrpoUnO>NAT6xc&uFBV zq3~_IC9sVDK0S>jImL7HCPf?K2;bqj^@b3^rf(tfzc9nEs@ZqRGExCs(LzCr49w9b zAkJVr-}zu0W3tOGMBG@TLc}?WXACAEa&-4ng!3^GK z-+GeIPM$ZFxAyYPa>|-<%HHO^t{)LlgH3fK2GVNOP>e?wUT4gqYv|NFs#A6igN4mV z`AnkGLk-IxW%!kn_%%tyL`WQ{H#?jpDbfZ8x340<7s02h!Y+UP(U2J%65#_=6UkoW za`N3_%2S5kzRn<3N5bq}sHl;)5?>{pWqx{F9oE6nOUj3`(I9lQ>;)rP;v3Q}{g^&O z4~C^t{34z~F+l&_w>7anw~undYq(DA^=Ulpg!@lZEuZ1X&39b`sHjZVTboEEug@Z6 zlucYT0z&V_bJ&fJd>8#s$#xrYryEjE31g7RIWt=#D))@BAo?2(lp&~|rNvzlZ6ea= z`uCtwhMV&lg{`7n3l3sII=b!r1heIhQ$j#{Av) zR=_h_c3D$b3K~x5C4=7t?^!?rbvodC5*SIh^8rv&zJUNuXXb)+u$zq3Z)X{t)+Q)$ z?Lt6kOF?tiO!!lqSX_Q%y(OuzF7eY3GH+U)MZ$y|zuSI4^OZcWMW>Nzw_PZA3OFp& ztiMqWW%>b}DGtOD8vp=l+CLkK##4t4BiB{6{Bafa@F@kiQdz{PN5fVJ;7B5OH28k! zOPwMQ5e;7=(0z!fx)2l&*vR7l8#>kmK{d!&B=oZ=VaHKFGjn@OS;po$jmFtGxg3?E z9HcC5l|cd1X+9+iH}mDwY1bac!8`#?xQ8Hn=RBj>iXOy1n`61vDz^zgw5P28L}TMe z^KRCMA9+_oRIP_YJGZ1-KWQU|+S=guKBbINDw=^4Xk$0Zi>R%N7(;dR%5lr12hz#%pa*=NUtZ59iy&k>2Ewnm398pB;cFkP!w9&rglJup5;}my z%{}ErR;_$b?ov|!LN@%n^2Y3LY3c*256NfJYdj;?j=CPyN;d>L3C4$%kRYGL-{D>o z%i)~$3@hB%PoEB&m5g+U1y1Ki%}oacopxhuna`BTXr(yMJMwy_&?$FCf5CV_Hgd_B zm=%<5RXT^+7ZQ6|jQW`)w8T;3YWQGcXVnd#<~GhBF#14Lva`MUM3NUOz8_?w{-ayvi6w*ce4Nb05Wd@2_l z{w|AfGJ$+!r91PqevA$WL-QYnh0;txa994&2)#`%8TUrVi(nJe_QOPlpl1n*?|lyw zfZ5l$J9gk)*JdXB7CDMeXOUDUZPLPK`?>#*v9}J3s{7Z6F$e_-krt2;6cwZ!q)|$` zyJM)KQ>D8b2BeXaZbk`dhLVP%haP%p-i*62g+Iwd2wb$Bft^0FF zj4_`j0W6erEhYr^GF@4q0Du(%e4;pA4bpK)eLK7BLAG~-5k7{i%m+^?XMq6SH2D>` zx<}Nk@?iK3ZXyw^LNYO;QEY{W4|)>h{mbbbKcFC^=KPHbfTQKp8S#1Lvj>S-_Lr3z z@|kLgVNV1ugspRk&rVs#O9)7%47s@o5=;eU4kHFM++OZW>$27LN5C}bAjj<0FK zUjcA>hF?fyjVb4!wn{r|D^EBGx(+5Z5>IrA-@%!jq3#F->@2b$@_h#avWB6?6yx{X z;jBZSoO^7{37s95I^OSm61AzEq0KRxg$2JD>=9x==BsBhJLc~MV{xoMx#vV*QI;yl z5_CKzI5F0F?hHcQ9aQK z>&LL4x}L(-Q7+j(4VI}5J{@mQVUN^iyh?kxNdV07*)~i{vJ5|RSw0~|s!xT5oaEAj z!)IB%FBZ?frJ7rtKuXib`56igb=`ID9WS&0R$wfmQR*?f|4xm<1bpWOKSoxm@0Xt@ z;*!9^(Wc6B6?=EiRm#y&f1%RAwJ8FQKA%wB`gbyYnnfwj!7(jd-E}2PeeL`S?$=r< zmlK(1IRdL!O3H~4dg9u#gUZSzZ@KxH(g8kI#f~U9?^F$*bXlUNO~HE_{(D)54r2U( ztEm~Mx8B^Yn!isMAPk37@prb&MrH_{yLZ~BKr);s7lfzy^~2BJqGwF?Y{faUz+d>8Fn55%C2vALGULhKQTM# zdjUcrsjp-BdBlqXWsW+@{q#Q=J$dN?Stl6zy^bD|1m%PQi#?i@6m#dq3eJ8*@}%w7P(@H~Zn}&9p^;i`K3=vtoY$9b$()x=gGZ)vPLi^lK33{rIZ6K!BN~-GS$D$S- z;A!uQpa(w;=BZxMfzphcpBI1s)adujKUi2{-wU-X?JfU_PsIGBn1mo4KWiwY?p;Ym zhVQ@Q$M_k3Hir@rEfPzVM-X#$+WC&UwKMoz1>DlhPwyJHskJkM4>eL9f9f(a%9|w-!9y60-0G?C7Lj3Nc~Dl$Hb0!v+bjg?}Ko~ZFB%Lj>D_n z$)dX5u7&)JS#+^b_v(~EkIw^~a8&Hx6PVy5_S7hBrZk$QG{qGf5*>AaJ!_$ z2E`l9wmZAZujr$168`W91jHe(JtIkH9Fftj-t4BQD=Nml$rVpF{9BDa$Stzl{v-MR zQ=j|in>@tEgqV0fb{jf>C6weFTFkdj-Kr;ZVjjJx%2$7z{QdLz;Oq**Tq znCbblfZRfI!&*O#if1o*Rr}n|of;*XjHpL`8l4;!<;K$nP8}vYmmzZVnnnkgpOzp4 zBH8&ui`9ZQR?x6}A39LM{A)(==ORSz<1ZC5*Dxi}ahJLloj6Cu)+IMP}%)RvuZNWH51tPPYt z$%{G$BLIsiFtvWH8!rA8B*R-Xl1lLFu^&R}s2NljokGul5o=~F;!jj-EQ(g?&$ES| zn2@m3T22UT>`cY^BWxH>xgp-6QRVptT|ekB+ILpILs~F;0fvgiE;_&Y^fR6cG%}61 z8WG?jGn&SAp!`}7uPE^IcV^MGPW0W8N0limE3#_gO$LFj$DCTEaxaCScxpuV5)#5~ zR@{RCi-PVLV-LCNzTsiafr_#hMX77tLEhz$VXVQ^oz(+s0zn#fs71;tlVum`cZ2K-=TWi?#MQ-|N6ZE9`?)%^Wh9WjDRvi1+gb+?_IJ5Vt+uR zf%b*xY#*G+q@(5g$CBIgoK;=&mnZF-pwzYwot<# z*-?`?lBBOv*qjraa7*1HyUEy_FvZt}NfV)6(z z-qMn#vsLQ`Hk#|_qEJ+)eKPlELH>wi4z+hgd z=-~(An@%`cbXJeq`-eqpCo%=xe}!rO{#`x#@GH9C9gTvChvR6JJSFIX)z$TwIJBI6 zm-tf!@+j~GBTgIIeXlXjY#2dA$dkJDPok5zsNn1X%h39Jeyq<^(;Dp80QB1Xh~|N5 zhfw@&@o{Hp>59gbd^gJb4>J1`*w=D1axv>+*6e{KRPb7pPUis|H5n>_7h_1mae)q$ z%BTy9yfCivZ3x!AZ2XLv58$?r4Zejy=i&>~^8QX|*4~(9)m+T>>7ZVJW3FXu3`6rq7$*g*K|N@u zOeqWz%q;32bMW|OA3>4x8%8O|@U!y)a6z=xLst`K%_=Tgt5*E*CKPEQVJm(^WUxo3 zW$Q>23_n8}{SJkJJ^nB}jF@HOP_YiO#LG}&s4FL1FPgG9YvD@pJHpk!n0$tPc2>Y zp<4+-)b`t2!4BkC_$R}2?H`=-$ya-H)gW$EGRW)EDVatndK}*NArMOQ0p_0I7AZW; zHG{%|KL>W}xCV6RI2)TFvfDQr7J#hCA?I_TwFMUU(l|f`WCla|MwS#NL4J1rSIMUl zA^xOeUtU-RSRK_MSg<%+2Obd_d7EPv`uc(K6L5uhdw*N+O52e#VAH;$nD#g&Q!D&M z`XenAfqy*Xx?VK1#cfkGwY(taE|2m3N5N06MVEt>cgr&L&+|y3-``z~4Wzn`9T<<$ zB&zvQ@7H#KgPZtWc3l+EIuAq&6;5+W@jm&69)we|YbvM1o86VYpJ^BP$$HZqQbP`xbI+48h-Xo~{rO~>-qyFkSb8g#5ekRT{&gvN0i?P ziCObMJ;2o9o@=Fh1u;ILWB7Hl%_-d#7@dN@)q~lOH|FrfQ(zqA`VjF1X8E^B!&H!< zDiD-OLRzhNj+>$(UdU`0h;?S^6ZU-hGVk9JtGH@Ea5xf-SP!Di{RFroDhoed#Am-A zMjrPxxoj0=D2bEGr?QFRqgzZ>aeo+%oEl^+x%sr{;S0MNJLT^naKhSgkZ$o5pi%4# zL441~#evyxYkYx(Md~>n-9eGtzQ7(C!KDz=%fWDv^A>`-^I=~BL$=;&qcRkYYXq0} zAp?dJ=Y;sQfi}jUb>+ucw@A+Jioo2fL2Hw!v+HcoXS9c`b3SzhE#W;f!6lzxgr3}m zx2<1cK1ZB8r?B?v!=xU{c}?WYrIq@Ha;1`i2FrrI9j_#J0r;cL@3SBl(xQF)Brrl- z#?kSc4||;Qh|?oSe*5raVIYN`7Btf|{brT~VJz1(5{dwryUr|EpRE_ugl*HKWHW`N zpj*_fr$Ti64>svvz0y8UKG`z{D^yFgT;L{du$x))2XOtY%|Q(6J`u;4kldNDbF0~W z#PLP|Lr<{tFfc+3aA8w){H^2ptDl$2Wtm*J2^B}T-?e(OBcRJpg~WnI-f_$|?Rv&C z<zjEyaa{1LxilY8KW=|5lp4c+%xQm+zvID}6jVA*}#9XlyFELWqy|&RxDsv?e_0 zJ*-*$>N~Wlj&CqiK=Tx5*Zmez4CV3n;5Q)zmE7^d?ZEb$W^hVmeP*U(P8Hd2OF8 z9cke#E<$HTVYIf=!#=m=m2>kj6RYbTechF+I22ms1~EO~)$kZtwHq4>alp4>(d!?- zg1pO;Xmm3P_tW<;@z{&_E{=D}e(Jb)%%G4`)cV*>dx;maxZQA=ABFr76xnmLr~hmX zkG=Kj=6x8BFnXMvqH9Ia@*E6DpEM3zal*}q{|=fA!%w`9Fv^9z6 z1xnL>VEhz+Eu+od^f8P&`G$nsR`FkW#M1`HXE>+Jju}Fd>dTmC1~9q9LW6&=_B=~h zNaj;G>7p8C8nIYnHo(OUMvND{LSu~YdE@(y-gXUUy9>28tn z=gfO$E+g`LUn#h4hnI&WrNp3Q91d7 zKYl!~UG~W7k{>_0zuMk`o~B0$i)5QVpgDi4`B8w9I@h4aw1f4#KOv)Yn?K_V#O0aH zY?pyOxlCvlGXZM=M~(~iv`OyM8UiDDDi^`d)A5Wt#WhGPMsH}aXZ2SLVW@(D6s5t= zM}GJI=NMyeO~1Vn^lVC${ptp&;&UrMUz^XyxGj4&uqE<70?{Q}{(Njb4i&oy?FV;{ zo6%(p&RCo>12r@yI2MQlr*Hq+^wc@-DPe1u#WLNL3sv7ubCDbFPx81)5I>$U2I0z3 z9W!n?jkrXY^vucJF_{DPsY@+1s>dU^wa%w!26!}=IfNmMc@tr)D>|*_Zv=@6@jg=B zG+_V6Yh%wT!Nlv_NL@d1J58%)W=*_DFncaohypCvn!3;yW;FF5J4fJ%?^XOP?f|1f z9~(969t@1D9wzQY=ub(&Yk(>~5WNZciu`%ra@utKDrSEjAidSGY*qKtLWDVPkhbL1 zwF^F91>8^MVm?d#r7TwW8bv{bl600y0NWZBJ!Sr+E(J*M@$8J!=}O84AHW>wZ3t60 z>D;s@)52A*$0OgM!@fK5;lngF)KF2Bh@6*$r9S}F#vwAkF?jlytQppPFhs1;-h5N-DFq>6aU0jj zHsJ9h3M9k74oiGJ@x*d{VRCur84urbyJUDA5FEepLnu;&3@9>=Jh5LF&jAMvj_wLx zRHsXOMmmoU?R%UbrIb}fvKdm3y9fLTmnWtjH3sTQ;hNwYV;sY$8G}S3*3NQVPOSnW zz0SgNNo$)OIXSqjU+bsdt{2L&IU8+(fW&Am`KMvk*6Uct)Fb(Z15OB8oLtVxu&{}m zAxvEIJk$1YP>DH4Ogj}`%>Auwg>(+F@}O$ep!HYV=xI{e16K57;wMkDx6)`*2@rDZ zzK=z_)4n`V!jIS&6ya0I#p^Pm!ETkqudbl>)oXB6ty{i`k8vMQZxS7?pv!(x^a5bS z=iGCJ5H>y&r3>KoR}tS_XyP$h*SM13ovG8$`Qr3!f(Bwd=Pa&wA)Ar6(L&=w*SVU( zf5zes-H#ATh~Ku#>94C)fPQ5&nbgp%w`fS`cb&fiNzCB8o)(5@^2i~pUV5cnke|93 ze{%UU6|_!W&FW%+ulXVR>b_ry1$Yl6HS?raNas5-Uu4zf>sN)!;&CWWQ<0RR@uhi- zsMi*K(bts2vlqs=n=M0J&&Y9(A32a03Et@q3bC5RP2+d1u=Ld(Mg@D^LLx6mIY4~` zixG$)3rrYAf^f!nT0=nfuUm=*LzI;#LIo)gcwgI{K!lX9=!dI?(VX1@Rw}BM_Zpj% z;?tqmDIwq#=&PsQuNJ?dT76ik&d~E?O zKkhH8abO=SHhXK_&qTP_^9;lI%d_nAVac`y>}P2+d41}0w3X;Wm`ZkZ#S~uTr)I%{ zC#*vF47+oK7iAF`^_b^t(jt*U8vq#4UsGqn!4H)9T2pMjelRLPHuv}Thq&5Z+v@|+ z+x9NeWt=n1^*`n2nXkLx3>kRa=@1ffFDe`LP^7Jv@(kH^)m-&EFEG+(d(`u~nht68 z^nUR@nPV60{*~;1%)XErfB$kESQF`;wzBITki6MLu|-ff1I{u7{(k3TN7qgOz`7)W z9Lz{MKPe>1betQ=1=-*Go}ro8z8Ymgl!19Fev_2kgRs zGgeQ&7Ju>Tm*-pDZ|c}(uY3S^24)Qz>YaH)w~{bP8U4rzQVdL^Uu~b1t$&*xdNYfAE2No zJLXLZArlsyICZKE7e1aerd?VtfUWMfi1u&_!5^J^t#*IR=SRnD9znHxcI19Moesd$ z7xsJS02s`ZC^3)J=8S%}uCd1P{1i#Ji~0H9uqD3YHfIIp#)2Ta?WJy?C8P_?&(}P;<`F3B zEw9s+h?xxofxX`-_H=dU9`;iXpxZ7BN zxcfM%*Nm@<+pe)UFfz-0%Kj;&Yrap}YyUpX9=AcPEda>{X7Sl_K z$a?g%M#d@!t*jgr&x;$wUN6)-F^FWI7QC1{wz1Q>fNTnR=?fx_QFH98KU^sTYY7pa zdT^tehw*prC0cMh=$g+>pJ2dUC?2hOP)7;Q2Ng5xg0Oq9b<=hm@JwIUyDDsr*CHm@ zG}YZO#uzIxs;x$+CqXv%*;4R(uzs>s(R!=gNjnT-4!fip~CO+zcqY zf;|;v^cYtMikaklpvw#J>7#owrWKF4hkvzh7e7IAe@0GQB;6Rm_KyYxMELP;FbKCQ zT6r#U)S*XTXY48vQ=qq7%V^s{$n~RFX!o6tq88hKWQsKiz?{EWFM8=TOpPPAq+I#oi4$_e`M1ak5zsDF5c{4K>jpId|Dh+t;ZVx->-8 z?9_+#VLF<6IWC4qi)I z7Cqh|VKR?`UR3Yc5gs{&Z9OBwjP#r{_I>?<32&r|#uRi+9x-dV{(VjTa(KCXI~Xdb zbG$mM)dZMQ99CI^uRob@&sF(_ZeW9TrUT%WWcXq?Ch7{O{$pi zq^!!WKZHNm1cvDyNX^3aJvrXc7e}4}QBFI3L4R-6LeFN;l}f;a*7X3{bDUPEk5!g8 zF|{B=vv=aL`(|Jbe6zSri^{(G9*9Z~LRnl+X{UNXPtkTpvX!*_hQsgOAm+nLWcCQ*_fMm``|mF%wvI*F@p9Xe z!}$~*>X}e`QmBNS=&J+oh&UvswU6PPCV=ree}q8<^^L5wfFD8<=eFQHn0nD37?lJp z4rBn@E1y#Cw!sh^02G#q@LBfaJODUF)>@T5e~fpS@cz}Pt4(!)v44eSI7|F}rLFy5 za|-T7D^p!Lucq!wXUPdy2?5OfjKlxC0SS>G?LD)+w}5o7x|iu+nYUgp2xcHux*oObtQHKBNDDks^_ZW2lO<*jI{`3C`i~*zu_z@*{K#ZJH zoAK8i>GmU)C+YuXq41BKGa-p7rj;g^09L*8&t(Az<{B+L>G=Cx{%k3MZzyVR4i*3~ z$^W`~Q6`Lk+XyI^{rQdPUYP{%s&S?Nt0^%4kIli~lciVlKF|YdzbkudNDjNhu~npr z8RT!{{w=!Q>SKCs$jHp$lY=HEts^5a6KO4v2Z=6{l~pW?|9p9e3~+PoQP=iMXF!Ik z$wF4l0Sd1*`)>vOzrL-v=4yvpzjfsNgyO?L7m3dTa3aI0--3W5^51psKLdb6OX44` z`QL_cV-c=*^SL+yX*Qb#9PJ2)-(FocckR4)(1&uNKPM#&3_*BiNN>MJ_1%^_F~#|Z ztx?xtOO_9{pU^-5+jRR%-^9;pKo@w7f4YL5AEN>^;UeHKV&rM;xwqGFVtM;?yspn+ zzO5DB7dv(3)po6Cl7P%vuSDceJ@W5EL@sv%!DP3OJ>Kqbk)^ccPwO{h{-cop{o=<&Wk}5+*162iYL$okazzVr|bZ{z&{;dX%N^W-8N4p`R&>J zRR8aOMxwrQ#`?#a>m~f-pS`%2X2h*{+wH%`+JEmyFNAYJe>BI@2aoTbE_x17^NnNa3tSHrZy#9vYbtm!5m%F7+6X+8<6>J(nbWT1F8JlRp zSt#zj-DKl&zO7K~psuI1)uttaMz1I4)NSfXs|1kJb9{q&dkw*LfXvjj)THAtb?AS3 z%%yC=Rg4>V5#~yjw;rUyTNsg78+IePmNFZY4QXE2rkrQLZ!Sfw#=aF~?_XV@G76Hg zHrpm(`qx`f-{*j^Cc3$qe^89+DJ;{M?*03hY+b_d#_c9mENNj<;ZJj*0YEm$#?77E zS1-Pu)Pw-6#002TigMe*xhWGaHcvec_V(G|zlX)_>ArtlA*_3_OPpwB29j9OKJ)^_ zlwjNm3VcMuCYI`<~pIQ5+=Jz=r^5F|%S(A3RJ zk1`Q-->$%3Z>r<4ncvl9vpVHq1`cJpIo)GVff`iM140e6HBDZRqhvrhr0jE*CM><2 z|HheO6EiE)cD6eK2>b=K>~pb+iTTG?FW(DvdAc2~SELKN>YYePzVH9+2YCGxm1_3^ z;Q;i4f^+e7?{72D(s@tzV%!>B-gJ5UD%cNb*B!2`S1ebWBZWe^R|jD%FC1U@I_(=J zic9Py0Yw8Fg^!Wx>06Gc_RZUKBrna`*p37)w4q*Sq1*E<>X9j)Q$6=5gN*lN z9UP=q+5*DX+z(|la{GGX3RY@gQk11-c)x%ASiUmC6XkWiZhk2f-YPXq*tO7D?~~COu~KkzEVD6HT<+f5zSf`%mGYETatz&` zuF>{o>3+LV;(FUTqC+JU3N>l;nt;sfeNQ~9zIG`EeMeeYdJ_%drOO9s1;vVe8#*|> zuc!%(`ubYiQzI3nL6gaSl5}#VE^|Ib@oVE%L%SOBGYw(4(=nbRg;~?n3ipGfh7PKx zXW+ZWE3=*2gL8I70(K6_W!q~pGJ%&mTF1DtIgC|M{?GWL0xu%maPROl@u>ksiFm*_ z`+e2g8`Hh$#mCi5;$>?qM7&gq=F^{c_)oe4f_eJVq06#V7tu9V!PC>tM&tp@8Y)rPfo-eje1$!r{S--RC)Ycy1PkJ zR)I`FY(1iHw8cdIr6O66;LW<1X0Qp*eh9n%jW-?2ERPrlh)CJIQ(O*^!dDHFr236s zXU}7ZjGUTqGisvlJ3N6sTI8mumz8kHHNDvmE6=lSkz_O5zTaRoh}ju}C{z!g0MweX z=Z{i*N%U1G4gq+9zF4g^hTnB}T~Hz8L+l-(JagX*DRhm|P!Ds%uJQjoJCSagOCpM6o-Pbr(YZu9^FE&_Qt z6ha>|v0;&pD+oki^C$F?EJI~M*M+RF`M9aw>iJJ613AY4w~4Vz+qp(vKxzMMt`WsG zk-_lDVa}>%;FwS5MG5U`hpXTI%ht_xZ7D6N(!=dfbB2H#WJQ+WSAA+dDE`sB_f5a@ob zpO@<18XrG;P6cr65`f4UOHJX6OY0Ur?nArWv#yI<)CH@k@YePL!hGwNL-bw%CXo3` z8L<0tEcQsL}(`HfV*T&8I& zKTFu6tK3Yj*$&^?Vdf3(4dUj~_n--WBjST^5xD<@X%OiQO%p@XRF&BNL}1k&U5>0+sS9=}m5%=eJ29fC<5e3tT~ZK%6OA z>k*sgscbfQkYvS4o_bM}pjJw=?PE?SB^O;~4ujIC(=EBS`CE?s(18Mi`;j{MN6Xpj zQVxqTEe6@tGE^ZzHAs9jvpNd<){DG3H6KMztrMrc2{w?If1d!L(Lix)MvI$*8>BXj zB7vS~RNMT%1@d3|o^1skY{4%TB@A=fU4gbV2CTkI3De;hqwrOj@7242i4)4kUh4Ua z;)iu2BE`qL&w9zfAbnH8z?tx#f=u7%enGesg&=c`p7kqMCgz)M5~yN~_jY~A!K(W2 z<7PF`bg@MQ{Ksu_K^^oa?sA7ZvpYP+htKjHxQ~f7@#z(yJdSCJj^7%Jc%cKE!u~g&%FNDc2tn5u3ABEs@uS(LDvG%mk+os zr$21r9Pj^>%G}8H)2g8;e0xoObA~NQV!7hLJZ^}bYRY^#=e)@^cK*ZUlW;SNq($HB zlJ$ymIb*REd2@yYwk|?39>;0j$eTU$7T{M7@TQ0=qy{sf&%lU*q^SNX15Y_HEF>;} z^QPdHdie+7C9#TtUY2rz=C#)P9}R6SpJ~9JHDVvR9d%_GU@dEQ+9>f!7SbfOOX9S_Lc=F)E%nK+Gbh*kXeCFB^ z?L6QuFar1un0Lc`ud&a1pf^pjCn+=)L4@>t4Dyl@WQ@0`LzSw`K)e|)gWiJ?Y3OX` zyLZ7+nbM_N&Okh#J?~Rr(Jx;ndXw~36K+nUGDDHu4YA;5+n9sf{ou~rpDm3$|1;fV zK!%)aw!`ok&>+(dRaLTBR=XjXy>ngW@*U}g785qoN(<-mw1taw3yS*p^`G^;EO`Fr zjhLt?P#gy&p@25kaeFc(X;7?jW09^)CardkUcf6Yx4^tRg+0YqjLA05g&c!m#yqur ztnjynSN{2C>Te#5m!&{}7o%!1XEZ>FR@2(|0#?^&%NM@v#~=Hep<;t`T0yn)d#;y& z=>XmtGV>;?+H&GOy1w|i*r}S~X_W6U79xA;3?%pY8c1U)a@%GH1zwxULq3eWHsm3R z88?SPz+nh{1kL@fr%rh;EU#aaFT~o@Dw@F{1xsA>Z+a`;9I`HV@qCpGNuaD)>-yfh zx}8R{pCpeih`@s48L*>_H(gPT(jq?v<@BQv-?X72MPV9(K&&6T*|}9bXEq{Z$=zn# zun7LW=yC$)^9Hbh7<;mTA4$-8GXrm7@x7V}lIS=Da^L{N!|4*sc>;;+CgDrX&V!65 z+Ul}Wx9j4YvzFKT1i8n=r1i1@cY9MT5O>0Jd$K_$0O1< z*$H2-D-x}+8X6VxQg0ly{=6IaJBeAl2>BBAIR7eg=!pZa3na*-YV>XBXqCn{rv@i z6mar&&;_Xww{xNNoOQKwT;E|O4K5K|)Q+Vr5BTsF`Cd@`%q;91dh_6*Zn`RWbfHEI zT2HlkH#b*5p?;Ypcj3AZaH#;Q>NF4mh@AzMx`s}%@^HRr35;5YM+c5MeH)3mznF)XlnIAglBbGeAmh5Xlz z?u%aNW#3I~La>EfMI!Gwlhjc=@B#ETBx=RTCDImfK#v19Usc2hqnXzQ{rhlc83;PP(F zeTz%iWN1N=NqnY)0ILUJd-f)&ZuJ7X*idm+&o9RnuDjE8s>Q#P9F_~L!~rsi5KneS z`*?sg{rT*tPL{k+^72B!Di$}U^(yH72dh+VfCd2IPsLeqz=PqvG*6Lfn|HK}5Z7+- zLsW|go|0iRTPOmU*;ZOmHw?fK6T^MVvp%cq56nkB2z?dhMd!ZSo%2gHYkRtB@@(Y6 z>Z`C|ghrR=&GkK|Hnpq9{M`J;>=H$VV7H)8I)D!IP#(9b^HBI^^`0iM1Kz5l|L()b zpz=)hbR_SU$`NSlTj}Lx5;P|BvJ2L4N3R+sLiTYD;C&R~P;w~&jDakIqm&dxH4gsT zy(H!d3y0tfAmt?<5aiKw*tF0yKt>+W@eC>pC-G`135wO6L-}N*-xPNJv~}n;sJnRQZ_8|$%VA~4Y-PO zLefM)+zIO}c!iqNthqm(QyYEfmz>sm6Df~dGLR27{072pH>JjS2kkQ7^LV2iMaJgj zZ-$LV$qyLn$U@kDU-^<7UBIueD{RZ*-$U{{q^_hSC1rL8(#kKPx1p8zO7j5B-lWFX zJDiFDz+IA?JXWQu*Olr-_3K8}`( z`9qeVGfq6a9~M%1&ZH>y&weu!uA=ni5)>%T`m!D@GNtNwx4tnp+m7CCZ&UFS_Svj- zV)wlf`)zq}7{$*Rq?S^IEma{lLMGcTEeNYnB$k_QoLd;T1lTdz+_d;%tsYd1WF~e!P-v{mF|o z7s!b9J8``RW<7Ez+<2I*=10s-?vz(_`L=O~Q+0Z&(jTAVM~KzYe|Q9jN6At8*z6v= z6Z%>T8`R`xwCoC%0p<~3xH_(5M(cW#2G$w}xlc?-8`xaNae;K_TJ4X&G7H!podynA z(gsJjetfG*XEB_4yn5}&$j57VkUrOVlSJ){5^BVK*jvlnKeS()2!TsrGfw!HPa0xXE69PNNjf&Sj++p`JZD|O0` z-?L9vi|cabGdvFLZcgmXeAi`+xM{l(7_Vb9FIN~xDwIhYyq>EE91y*lun2W20YljhLMHNSVxa2>SD|jR0QDFmQ|9XbRJ|zY`@|JezNDx@6HcQ zAY`PaRfeCmada5-JKR0K^OIPy4__%`iMPW@Tyt3fYdIJLlSi11NozD{`4aHqY3u}x ztCnj+hrOegq-BJ2wz8MWu8)%Nj`)J}C3)@3b93pvGlS=Cr%Mt-H}Rn{Mpx9-J`8}0 zWbA0A9+P%4=n-`(!B%jgB$H>Zjot9K(tOq~yK!Ks%geJu7tcIcf`@{eF;3@bG6cra zZnofI`5Tr@YLF=|USQ2}7DK4X zX49*77RFm{d-0sj^L@3=Od3-|-L7?qTNHue$aip72W8WLifmxR_|QhAdS-sidTpHg>3Y%YheGterJTy0 z3ooxdt944x@AqIjdz;3)6UX0CoF=@a&9yp2BN`4$tHdZ3W+-6SS=ujKA607Fq0M;m z$+-`Vb=h`dnUByb2_iuZks~^LCL@#YAA$BS60{Xjq68% zEhfF=Q021eSqMnu;=xHm?EbF7mvL9FX_1iPWtWpSIkLAtIr0qaZ1m!nNxKtQ^?G8; znOzE|*x7R^D%pvUM@aQF=12XW;_h!1(V%o=x;rjmM?T#cXh2wDz7ZGXt5(>V78P6~ zW{t{v73pl&^XWlazui|8si%q;!Jq7Aor}E2JM=Lk;kgJDRg0cb34)Olvn*!isF;s+ zDb4QsWs~tpuKb0>L5+Jsj=4=zL!VJU(mF@TE{y7xoD{0@qY&fD+(F|K5WEg`VAq$h zRiJsA!VhGbzPN!wFIlF@2sY-E98O}r_7j6T03p zo4?u4n2%0RdnXFK-MuF~i0z}W?QJ1dC=x2NARqvdBD2LG2Fe>*uC-N9d1LHEE#yTXByc0yb-;z~EweHkMaHhz3F_?SG%#kTyg1>v;0G6J zsk{4Jd!0BFHN3v~Za=Jav?cuUd4=?W!!qN>`ATD-Pp^=)#91_T;FjAGn@^*P$;Iip zrYfYowo2Xdb++$CWJV(uuP=a@ahw!+K#Ud(q<{Zxv?~9 zJ@7h8);`do{e3>-;(M3~(psF))s&e_Dv!7j+kF&hNE&FEjL8|rGd1~hCeNfBT(ppA zwIzQ~ZMksERJ@B`Y{gl{i7hY^9*FuDss8m%MK_pW+ONw-#6bG>lSO~ES7s(A-Vd4=$O7ku%hc~6 zsh>o2*s-XS3mni9X>DphGe(Npo+4QTC1CJd}wUG`@0tDSVG$l(`)`V6LTD>-`7ZW;NAZk zwtC*6|8V$N&6-!Lyg{YB@A&vAVkn8JmowQa9WyCCDC5=0FW(=*a)pyN42hG}>ch+z z#7~I}Xs?!232P#nt4B~Akrfi5Ckv*4VGj zKEIDHWi+YWL$u!`J+K4jmi~o5UAai{4>hKzvR$fxQfRP0n?%L_- z%nj9B@{id~J{(~dEb!-)>OepQabM_vB@TQ<9T6Wtwr%>ZWa^1+mP<<5NAgH4d>r6xa<4LDHCAP9IbM`3g|(@iZEtujf?4_^a-XV{3t zh-tbb!Odq8^31?hD$-=9xVkvWW$(_N&%HlHG?(iUziY32 zdJb1sOkV5Mi^HVC56D`nER)-& z{jGhcE`4N2i*~0)0;^AB^B}P*c%k0^$y1l(_N`T^oMklaWtm~;gdIOgyJ3e>^)lDr zEZT|PY;3!ADji|nNpAX)LmxI7=74-Z1TO-}%)NtDr;I8JORsq>z^>eyYnp+_E5&`t zqbHM_ec`uBxHr0z;lV7Sgk3qy8)Xo0Cvfk0nq>%_m?V&79PhHl*4m(R&%KC-hLut( z0{puS&Qv<&!naw9chrWJ>$c$h1NM3Dd zerM3MpX+c*_|{}wO*iSeBW@Wv3SOanJ?$e5?dI7TX)&10rNoMm9rBc+or$fz?uzgf z6K`xj`fk*vi#0#*=iv-7x0_mU52&Qs0^M6?s+#tqE~8xVOyG~nEp#$)V{yMSX%vA zjTzRHH`aE%x$Uta9-I2ftYGFc34|>rurtd&%@Qyt4QvpO$;9g>?N)lJm!oF94M(OI zi*lBCqYgiPdIspSq>@tjK((RDEG*Qo^$mkOjOx;MiXk;K+z$ldJx=*8^{sbhHdn>%3?Q-^SX3s9Du|p^^ig z$cf|Jv{2QU@3iuHs%J^7Obb9R`UFhq>e3nrrq#@=N*8P5JULyDE3u@FY&u>q71c4Z z36iHB%PCoDsD>pu>`0un0%76PN;*vQX&lx8-1D!CmE3ll(WPZ&Uw;=!+C>L2tI-cz zj{53t!7;|HMq?VlTrIX*l?S@0v7Q*JcK{Qu5;3X%Hf+Z5;?_utOTr*#(fsz@ z$Py3!P0q7az;3!Zf(o3+#2F5avz^*90p>)~K=+~8-?c6NDiE2K&mUJ#jGB!3)@oHa z>UNqQW{%hXOe6YbAyM5y3p0JXS4AQ!Yu(e^5{ozpW}cbZuqRkHL$Gi3sH>Ec`Z+{aLq(Lz17#@4M(jYsx;ijk^?5ko-n|iGA?f3ME z*0q&JdfBo|43NgHLSFnEG2)@a^!<$!MYCjHvr1RjuY#4AFjLfu7bW!@?^)TiGJ zWU3Ec7A?IlpR=Vpp*|QpGr4q5Vc0p$Q))%wZN0VLpee0ZkZ*CueU6@hAWNC3InX-+ z?~Ip>+wjsM6zM&D^da=LaA*lPQQvsu0u&0dlQHph#5Hwqh$?t(KL&znyNm0Sc9TuX z$Jxs4`_w#Onk5T-**aS)AiU^73|A=(mZJ84LdYQh+o2yUFYG#xjcnE?h6&$@wk9CT zn-7@2O%#TVnhWAPaXtpNMWelk`aWc(JBwgu!p!8z)~nWmZvy(?{SyF0O6ki#BV>QS zCEN#&3ru4X-@R6?5>nAau*Lx`>sR+MTrEL8sG&80=~LZ0t?Un898vo33bu9zgi%fP zbx*FmEGp6}V!o?wk|Vv7m1Pi4$}94!XQCXQePKY15EV6|1*)aFGZdU2*$?N^mo5$C z5RZ8S0S8!vqse`yfj7$mVK&73Or?WyKyH*TjuV#!(-B7nZQxY%gtI%XIy9kpD9>79tQ1b#;(?lQ zfWJ~N3V|Jv9_lcSt-@lPf$3qeuK{qvBM=pcF%vTf7wj=(aZD!rI#WDggatf(5Y|QP)fE z8(NM(LUHHajo!DWVwa#U-&0;=x(<%3L2WzBTIvO6=V>p8Kz zUeSgurLaKxEHI5Pd(>?~A5*JPMpa@cX)+&Z=AISnM~H6$>p);deD;g&mrER3{Q^;9 zi1D~4Tho$;#0e*(qmZc}ZJ%Ge z(P2DdB0Ek+&sW3yOYLj*DZMTX)l}F>#VoiN++emC6Y|U1;TLyAfjP2R`b2Tmg^qq( z?YXPSYJX3*58x*xzHO=+w%4u5QrMihWuo@f%&464+H@(0fH}&$c z)z8M7h#~ReMuXs!`MyYHwOA2x64jJ7SN-p6^Yc@B4lK_l*4=#HHPeI{)(@*#d&%Rg+z~Ea z7<›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 QUPGpame)$JJb3>909aROF8}}l literal 0 HcmV?d00001 diff --git a/docs/user/whats-new.asciidoc b/docs/user/whats-new.asciidoc index 2a726ba3dc4f3..25568518ad2ec 100644 --- a/docs/user/whats-new.asciidoc +++ b/docs/user/whats-new.asciidoc @@ -1,175 +1,144 @@ [[whats-new]] -== What's new in 8.15 +== What's new in 8.16 -Here are the highlights of what's new and improved in 8.15. +Here are the highlights of what's new and improved in 8.16. For detailed information about this release, check the <>. -Previous versions: {kibana-ref-all}/8.14/whats-new.html[8.14] | {kibana-ref-all}/8.13/whats-new.html[8.13] | {kibana-ref-all}/8.12/whats-new.html[8.12] | {kibana-ref-all}/8.11/whats-new.html[8.11] | {kibana-ref-all}/8.10/whats-new.html[8.10] | {kibana-ref-all}/8.9/whats-new.html[8.9] | {kibana-ref-all}/8.8/whats-new.html[8.8] | {kibana-ref-all}/8.7/whats-new.html[8.7] | {kibana-ref-all}/8.6/whats-new.html[8.6] | {kibana-ref-all}/8.5/whats-new.html[8.5] | {kibana-ref-all}/8.4/whats-new.html[8.4] | {kibana-ref-all}/8.3/whats-new.html[8.3] | {kibana-ref-all}/8.2/whats-new.html[8.2] | {kibana-ref-all}/8.1/whats-new.html[8.1] | {kibana-ref-all}/8.0/whats-new.html[8.0] +Previous versions: {kibana-ref-all}/8.15/whats-new.html[8.15] | {kibana-ref-all}/8.14/whats-new.html[8.14] | {kibana-ref-all}/8.13/whats-new.html[8.13] | {kibana-ref-all}/8.12/whats-new.html[8.12] | {kibana-ref-all}/8.11/whats-new.html[8.11] | {kibana-ref-all}/8.10/whats-new.html[8.10] | {kibana-ref-all}/8.9/whats-new.html[8.9] | {kibana-ref-all}/8.8/whats-new.html[8.8] | {kibana-ref-all}/8.7/whats-new.html[8.7] | {kibana-ref-all}/8.6/whats-new.html[8.6] | {kibana-ref-all}/8.5/whats-new.html[8.5] | {kibana-ref-all}/8.4/whats-new.html[8.4] | {kibana-ref-all}/8.3/whats-new.html[8.3] | {kibana-ref-all}/8.2/whats-new.html[8.2] | {kibana-ref-all}/8.1/whats-new.html[8.1] | {kibana-ref-all}/8.0/whats-new.html[8.0] [discrete] -=== ES|QL +=== Solution-oriented navigation +On Elastic Cloud Hosted deployments running on version 8.16, you can now navigate Kibana using a lighter, solution-oriented left navigation menu, called **Solution view**. -[discrete] -==== Filter UX improvements in ES|QL +There are four selectable solution views: Search, Observability, Security, and Classic. Search, Observability, and Security are the new navigation menus. Each of those brings simplicity by focusing the left navigation menu on a relevant subset of features, scoped to its associated use cases, and offers a dedicated home page. Classic has the same navigation menu as 8.15 and before. -We're thrilled to unveil a complete overhaul of filtering in the ES|QL UX. Now, you can seamlessly filter data by browsing a time series chart, allowing for quick and intuitive time-based filtering. Interactive chart filtering lets you refine your data directly by clicking on any chart, while creating WHERE clause filters from the Discover table or sidebar has never been easier. These enhancements streamline data exploration and analysis, making your ES|QL experience more efficient and user-friendly than ever. +Each space has its own solution view setting which determines the navigation experience for all users of that space. -*Filter by clicking a chart:* +When creating a new deployment, you will now be asked to choose between one of the 3 new solution views for your default space. If you prefer to stick with the classic, multi-layered navigation, you can do so once the deployment is created by navigating to your space settings. -image::https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt965a5190f246f7c8/669a7d41e5f7c84793b031cb/filter-by-clicking-chart.gif[Filter by clicking a chart] +Deployments upgrading from a previous version to 8.16 keep the classic navigation. Admins can enable one of the new solution views from the space settings. -*Filter by browsing a time series chart:* +image::images/solution-view-obs.png[Example of observability solution view] +_The Observability solution view and its Home page._ -image::https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blta20c9a93dded707c/669a7d40843f93a02fe51013/filter-by-brushing-time-series.gif[Filter by browsing a time series chart] +[discrete] +=== Discover and ES|QL -*Create WHERE clause filters from Discover table or sidebar:* +[discrete] +==== Contextual Data presentation -image::https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt50ac35ab3af29ff8/669a7d4006a6fafe4c7cb39d/create-where-clause-filters-from-sidebar.gif[Create WHERE clause filters from Discover table or sidebar] +In this release, Discover introduces enhanced contextual data presentation. Previously, you needed to manually select relevant fields and set up your workspace before diving into data exploration. Now, Discover automatically tailors the user experience based on the data being explored, powered by a scalable contextual architecture. For example, when analyzing logs, you'll see a *log.level* field rendered directly in the table, a custom Logs overview in the document viewer, and log.level indicators on individual rows. +image::images/discover-log-level.png[Log level badge displaying in the Discover grid] [discrete] -==== Field statistics in ES|QL +==== Recommended ES|QL queries -Field statistics are now available in ES|QL. This feature is designed to provide comprehensive insights for each data field. With this enhancement, you can access detailed statistics such as distributions, averages, and other key metrics, helping you quickly understand your data. This makes data exploration and quality assessment more efficient, providing deeper insights and streamlining the analysis of field-level data in ES|QL. +Writing ES|QL queries just got easier. Many users face challenges when authoring queries, and even more so when unfamiliar with the syntax or data structure. This can lead to inefficiencies in data analysis and visualization. We want to reduce the time it takes to create queries and to lower the learning curve for both new and existing users by suggesting recommended queries within the ES|QL Help menu and from the auto-complete. -image::images/field-statistics-esql.png[Field statistics in ES|QL] +image::images/esql-suggestions.png[A list of suggestions to get started with an ES|QL query, width=30%] +_Recommended ES|QL queries from the ES|QL help menu_ -[discrete] -==== Integrations support in the ES|QL editor when using FROM command. +image::images/esql-autocomplete-suggestions.png[A list of suggestions in the autocomplete menu of an ES|QL query, width=50%] +_Recommended ES|QL queries from auto-complete suggestions_ -We're excited to announce enhanced support for integrations in the ES|QL editor with the *FROM* command. Previously, you could only access indices, but now you can also view a list of installed integrations directly within the editor. This improvement streamlines your workflow, making it easier to manage and utilize various integrations while working with your data. - -image::images/integrations-in-esql.png[Accessing an integration from ES|QL] [discrete] === Dashboards [discrete] -==== Field statistics in Dashboards - -It's now easier than ever to include your field statistics view from **Discover** into **Dashboards**. While running investigations, it is very common that you need to see some field information, such as unique values and their distribution, to make sense of the data. Select the fields that you want with your ES|QL query and get the document count, values, and distribution in your dashboard so you don't have to navigate back and forth to **Discover** to see this information. +==== Manage dashboards more easily and efficiently +As part of a series of improvements to help you find and manage your dashboards https://www.elastic.co/guide/en/kibana/8.15/whats-new.html#_view_dashboard_creator_and_last_editor[started in version 8.15], the new default way to sort your dashboards is by recently viewed, and we are adding an option to star your favorite dashboards, as well as some statistics to monitor the usage of your dashboards. -image::https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt9bc52ff7851acc52/669a4f6a490fbc64fa22f279/field-statistics.gif[Showing field statistics panel in Dashboards] +You can find your favorite dashboards in the new **Starred** tab. -[discrete] -==== Statistics in legends +image::images/dashboard-star.png[Viewing starred dashboards] -Accelerate time to insights by summarizing the values of your charts using average, minimum, maximum, median, and variance, among many others. You can add these statistics for **Lens** and ES|QL visualizations. It is important to note that these statistics are computed using the data points from the chart considering the aggregation used and not the raw data. In the following example, the chart shows the median memory per host, so the Max = 15.3KB for the first series (artifacts.elastic.co) is the maximum value of the median memory per host. +By opening a dashboard's details using the “info” icon from the dashboard list view, you can now get a sense of the popularity of that dashboard with a histogram showing how many times the dashboard was viewed in the last 90 days. -image::images/statistics-in-legends.png[Statistics in legends] +image::images/dashboard-usage.png[Dashboard usage chart] -You can find the option to select statistics for your legends along with an explanation for each calculation when editing your visualization, as shown in the following image. +[discrete] +==== Log Pattern Analysis dashboard panels +Log Pattern Analysis panels are now available for you to add to your dashboards, making AIOps even more embedded in your workflows and where you need it. When filtering patterns, the dashboard’s data adjusts accordingly. You can also choose the filtering to transition you into Discover for further exploration. -image::images/statistics-in-legends2.png[Select statistics in legends] +image:https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt8288e01386b5830c/67222fb0d2da223e27bc1e67/log_analysis_panel.gif[Log pattern analysis panel in dashboards] [discrete] -==== View dashboard creator and last editor +==== Color text values in tables +Previously, you could only decide to color numeric values in tables. We're adding the ability to also color your string values. You can decide whether you want to color the whole cell, or only the text. -You can now see who created and who last updated a dashboard. +image::images/table-coloring.png[Coloring table cells with string values] -You can find the creator information right from the dashboard list. -image::images/dashboard-creator.png[Dashboard creator column in dashboard list] +[discrete] +==== Formatting options for your metrics +We've received a lot of feedback asking for more flexibility to customize the appearance of your metrics. In this version, we are adding the ability to customize the title and value alignment, as well as the font size. Selecting the *Fit* option will adjust the font size and make the metric value occupy the entire panel. -Quickly find all dashboards created by the same user with a simple filter. +image::images/metric-customization.png[Customization options for a metric panel] -image::images/dashboard-creator-filter.png[Filtering dashboards by creator] -Note that the creator information will be visible only for dashboards created on or after version 8.14. -You can also see who last updated a dashboard by clicking the dashboard information icon from the dashboard list. The creator is also visible next to it. This information is immutable and cannot be changed. +//[discrete] +//=== Alerting, cases, and connectors -image::images/dashboard-last-editor.png[Dashboard details panel with the name of the last editor] [discrete] -=== Discover +=== Managing {kib} and data [discrete] -==== Push flyout for Discover document viewer +==== Edit space access from the space settings +As an admin, you can now assign roles to and edit role permissions on a given space directly from the settings of that space. -You can now seamlessly view document details and the main table simultaneously in **Discover** with the new _push_ flyout. You can adjust the width of the flyout to suit your needs and explore your data much more easily. - -image::https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/bltb40a408acf4ab688/669a58ea9fecd85219d58ed2/discover-push-flyout.gif[Resizable push flyout in Discover] +Prior to 8.16, you could only do this from the role settings, which was counterintuitive. +image::space-settings.png[Editing space settings with new options] [discrete] -=== Alerting, cases, and connectors +==== New IP Location processor +Enhancing location information based on IP addresses just got easier with the new IP Location processor. In addition to the existing free GeoLite offerings from MaxMind, we have integrated with MaxMind’s premium GeoIP databases for users who have licensed MaxMind’s products. If you're an Enterprise Elastic customer, you now have an additional third-party product, IP Info, available for use as well. These additional data sources provide improved options for enriching data with location information associated with IP addresses to improve telemetry and insights. To utilize these features beyond the free MaxMind GeoIP database, you will need to have licensed premium MaxMind products and/or the IP Info database. -[discrete] -==== Case templates - -{kib} cases offer a new powerful capability to enhance the efficiency of your analyst teams with <>. -You can manage multiple templates, each of which can be used to auto-populate values in a case with pre-defined knowledge. -This streamlines the investigative process and significantly reduces time to resolution. +image::images/ip-location-processor.png[The IP Location processor] [discrete] -==== Case custom fields are GA +==== File uploader PDF support +The file uploader provides a quick way to upload data and start using Elastic. In 8.16, we are improving it to allow you to upload data from PDF files. -In 8.11, <> were added to cases and they are now moving from technical preview to general availability. -You can set custom field values in your templates to enhance consistency across cases. +image:https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blte8f0b295330b7e68/67222fb0ca492a5044b51bd8/file_uploader_pdf.gif[File uploader with PDF support] [discrete] -==== {sn} additional fields +=== Developer Tools Console redesign +We're excited to introduce a number of improvements to the overall user experience on one of our most popular features: **Console**. If you're new to Console, you will be welcomed by an onboarding tour that will help you get started quickly with your first requests. And if you're already a regular Console user, you will notice a variety of new features, including the ability to copy outputs to the clipboard, import and export request files, enjoy improved responsiveness, and other quality of life improvements. -You can now create enriched {sn} tickets based on detected alerts with a more comprehensive structure that matches the {sn} ticket scheme. -A new JSON field is now available as part of the {sn} action, which enables you to send any field from {kib} alerts to {sn} tickets. - -[discrete] -==== {webhook-cm} SSL auth support - -It's common for organizations to integrate with third parties using secured authentication. -Currently, most of the available case connectors use basic authentication (user and passwords or tokens), which might not be sufficient to meet organization security policies. -With this release, the <> now supports client certification, which enables you to leverage the connector for secured integration with third parties. - -The {webhook-cm} connector also moves from technical preview to general availability in this release. +image::images/monaco-console.png[Console's redesign featuring the Monaco editor] [discrete] === Machine Learning [discrete] -==== Improved UX for Log Pattern Analysis in Discover +==== The Inference API is now Generally Available -Analyze large volumes of logs efficiently, in very short times with Log Pattern Analysis in **Discover**. In 8.15, we redesigned the Log Pattern Analysis user flow in **Discover** to make it easier to use. Discover log patterns with one click for the message field (and other applicable text fields) and easily filter in and out logs to drastically reduce MTTR. - -image::https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt7e63d7e764ab183e/669a807bd316c7015db35458/ml-log-pattern-analysis.gif[New log pattern analysis interface] +Starting in 8.16, the {ref}/inference-apis.html[Inference API] is now GA, offering production-level stability, robustness and performance. Elastic’s Inference API integrates the state-of-the-art in AI inference, including ELSER, your Elastic hosted models and {ref}/put-inference-api.html#put-inference-api-desc[an increasing array of external models and tasks] in a unified, lean syntax. Used with {ref}/semantic-text.html[semantic_text] or the vector fields supported by the Elastic vector database, you can perform AI search, reranking, and completion with simplicity. In 8.16, we're also adding streamed completions for improved flows and real time interactions and GenAI experiences. [discrete] -==== Log Rate Analysis contextual insights in serverless Observability +==== ELSER and trained models adaptive resources and chunking strategies -You can now see insights in natural language, for example for the root cause of a log rate change or threshold alert, in Log Rate Analysis. This feature is currently only available for Observability serverless projects. +From 8.16, ELSER and the other AI search and NLP models you use in Elastic automatically adapt resource consumption according to the inference load, providing the performance you need during peak times and reducing the cost during slow periods, all the way down to zero cost during idle times. -image::images/obs-log-rate-analysis-insigths.png[Log Rate Analysis contextual insights in serverless Observability] +We're also improving the UX through which you deploy your models. You can provision search-optimized and ingest-optimized model deployments with a one-click selection. An optimized configuration is created without the need to specify parameters such as threads and allocations. Combined with the flexibility of ML auto-scaling on Elastic Cloud and the incredible elasticity of Elastic Cloud Serverless, you are in full control of both performance and cost. -[discrete] -==== Inference API improvements +image::https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt429790e1de1b4f93/67222fb048ec8c73255ef4eb/trained_models.gif[Trained models and ELSER] -The inference API provides a seamless, intuitive interface to perform inference and other tasks against proprietary, hosted, and integrated external services. In 8.15, we're extending it with the following capabilities: +In addition, from 8.16 you can choose between a word or sequence-based chunking strategy to use with your trained models, and you can also customize the maximum size and overlap parameters. A suitable chunking strategy can result in gains depending on the model you use, the length and nature of the texts and the length and complexity of the search queries. -* Support for Anthropic's chat completion API. -* Ability to host cross encoder models and perform the reranking task. - - -[discrete] -=== Managing {kib} users and objects [discrete] -==== Sharing improvements +==== Support for Daylight Saving Time changes in Anomaly Detection -You can now share a dashboard, search, or Lens object in one click. When sharing an object, the most common actions are directly presented to you, and a short link is automatically generated, making it simpler than ever to share your work. +In 8.16, we are introducing support for DST changes in Anomaly Detection. Set up a DST calendar by selecting the right timezone and apply it to your anomaly detection jobs individually or in groups. This feature eliminates any false positives that you may have experienced previously due to Daylight Saving Time changes, and works without the need for your intervention for many years ahead. -image::images/share-modal.png[New object share modal, width=50%] - -[discrete] -==== Quick API key creation - -Many API keys don’t require custom settings, so we made it simple to generate a standard key. From the **Endpoints & API keys** top menu in Search, you can create a key in seconds. - -image::images/create-simple-api-key.png[Shortcut to create an API key, width=60%] - -[discrete] -==== Filtering by User in Kibana Audit Logs +image::https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt5fb82f18cde26710/67222fb086339971144a31e5/daylight_savings.gif[DST support in Anomaly Detection] -We are pleased to share that ignoring events by user in Kibana audit logs is now possible. This enhancement will give you more flexibility to reduce the overall number of events logged by the Kibana audit logs service and to control the volume of data being generated in audit logs. While we currently offer a number of ways to do this using the `xpack.security.audit.ignore_filters.[]` configuration setting, there wasn't an easy option to filter by user. With this addition, you can configure Kibana audit logs to ignore events based on values from the following fields: users, spaces, outcomes, categories, types and actions. \ No newline at end of file From 4869b8f21c7bc2e0234bfddf7415646f72429c22 Mon Sep 17 00:00:00 2001 From: Lukas Olson Date: Tue, 5 Nov 2024 17:03:49 +0100 Subject: [PATCH 44/57] Fix discover async search relative timerange test (#197740) ## Summary Resolves https://github.com/elastic/kibana/issues/195955. --- .../data/server/search/session/session_service.ts | 4 ++-- .../page_objects/search_sessions_management_page.ts | 2 +- .../tests/apps/discover/async_search.ts | 13 ++++++++++--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/plugins/data/server/search/session/session_service.ts b/src/plugins/data/server/search/session/session_service.ts index 4ef741ec78387..48b563c5585ca 100644 --- a/src/plugins/data/server/search/session/session_service.ts +++ b/src/plugins/data/server/search/session/session_service.ts @@ -402,8 +402,8 @@ export class SearchSessionService implements ISearchSessionService { const session = await this.get(deps, user, sessionId); const requestHash = createRequestHash(searchRequest.params); if (!Object.hasOwn(session.attributes.idMapping, requestHash)) { - this.logger.error(`SearchSessionService: getId | ${sessionId} | ${requestHash} not found`); - this.logger.debug( + this.logger.debug(`SearchSessionService: getId | ${sessionId} | ${requestHash} not found`); + this.logger.error( `SearchSessionService: getId not found search with params: ${JSON.stringify( searchRequest.params )}` diff --git a/x-pack/test/functional/page_objects/search_sessions_management_page.ts b/x-pack/test/functional/page_objects/search_sessions_management_page.ts index 6d704387e21f2..8694dc51dfbd6 100644 --- a/x-pack/test/functional/page_objects/search_sessions_management_page.ts +++ b/x-pack/test/functional/page_objects/search_sessions_management_page.ts @@ -37,7 +37,7 @@ export function SearchSessionsPageProvider({ getService, getPageObjects }: FtrPr id: ((await row.getAttribute('data-test-search-session-id')) ?? '').split('id-')[1], name: $.findTestSubject('sessionManagementNameCol').text().trim(), status: $.findTestSubject('sessionManagementStatusLabel').attr('data-test-status'), - mainUrl: $.findTestSubject('sessionManagementNameCol').text(), + mainUrl: $.findTestSubject('sessionManagementNameCol').attr('href'), created: $.findTestSubject('sessionManagementCreatedCol').text(), expires: $.findTestSubject('sessionManagementExpiresCol').text(), searchesCount: Number($.findTestSubject('sessionManagementNumSearchesCol').text()), diff --git a/x-pack/test/search_sessions_integration/tests/apps/discover/async_search.ts b/x-pack/test/search_sessions_integration/tests/apps/discover/async_search.ts index 3e9429ee5ed97..1f768780a9c95 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/discover/async_search.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/discover/async_search.ts @@ -29,8 +29,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const kibanaServer = getService('kibanaServer'); const toasts = getService('toasts'); - // FLAKY: https://github.com/elastic/kibana/issues/195955 - describe.skip('discover async search', () => { + describe('discover async search', () => { before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); await kibanaServer.importExport.load( @@ -115,6 +114,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('relative timerange works', async () => { await common.navigateToApp('discover'); await header.waitUntilLoadingHasFinished(); + const url = await browser.getCurrentUrl(); + await searchSessions.save(); await searchSessions.expectState('backgroundCompleted'); const searchSessionId = await getSearchSessionId(); @@ -125,8 +126,14 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await searchSessionsManagement.goTo(); const searchSessionListBeforeRestore = await searchSessionsManagement.getList(); const searchesCountBeforeRestore = searchSessionListBeforeRestore[0].searchesCount; + // navigate to Discover - await searchSessionListBeforeRestore[0].view(); + // Instead of clicking the link to navigate to Discover, we load Discover from scratch (just like we did when we + // ran the search session before saving). This ensures that the same number of requests are made. + // await searchSessionListBeforeRestore[0].view(); + const restoreUrl = new URL(searchSessionListBeforeRestore[0].mainUrl, url).href; + await browser.navigateTo(restoreUrl); + await header.waitUntilLoadingHasFinished(); await searchSessions.expectState('restored'); expect(await discover.hasNoResults()).to.be(true); From 0f6c961174c912b8ae9091f0f880f6a092d5aaee Mon Sep 17 00:00:00 2001 From: Bryce Buchanan <75274611+bryce-b@users.noreply.github.com> Date: Tue, 5 Nov 2024 08:27:05 -0800 Subject: [PATCH 45/57] [ci] re-enabled 'transaction-details' tests (#198689) ## Summary Reenables `transaction_details` and adds additional timeout. I went through cypress tests history and it appears the initial attempt to fix this didn't add a timeout increase to `'shows top errors table'`. I've added this and it appears the issue is resolved in both locally and on the ci. --- .../observability_solution/apm/ftr_e2e/README.md | 2 +- .../transaction_details/transaction_details.cy.ts | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/x-pack/plugins/observability_solution/apm/ftr_e2e/README.md b/x-pack/plugins/observability_solution/apm/ftr_e2e/README.md index 8336c037ff21d..ecdb37a5f5229 100644 --- a/x-pack/plugins/observability_solution/apm/ftr_e2e/README.md +++ b/x-pack/plugins/observability_solution/apm/ftr_e2e/README.md @@ -1,6 +1,6 @@ # APM E2E -APM uses [FTR](../../../../../packages/kbn-test/README.md) (functional test runner) and [Cypress](https://www.cypress.io/) to run the e2e tests. The tests are located at `kibana/x-pack/plugins/observability_solution/apm/ftr_e2e/cypress/integration`. +APM uses [FTR](../../../../../packages/kbn-test/README.mdx) (functional test runner) and [Cypress](https://www.cypress.io/) to run the e2e tests. The tests are located at `kibana/x-pack/plugins/observability_solution/apm/ftr_e2e/cypress/integration`. ## Tips and best practices diff --git a/x-pack/plugins/observability_solution/apm/ftr_e2e/cypress/e2e/transaction_details/transaction_details.cy.ts b/x-pack/plugins/observability_solution/apm/ftr_e2e/cypress/e2e/transaction_details/transaction_details.cy.ts index 3ae431f5d3299..0fc1b609b14ba 100644 --- a/x-pack/plugins/observability_solution/apm/ftr_e2e/cypress/e2e/transaction_details/transaction_details.cy.ts +++ b/x-pack/plugins/observability_solution/apm/ftr_e2e/cypress/e2e/transaction_details/transaction_details.cy.ts @@ -16,7 +16,7 @@ const timeRange = { rangeTo: end, }; // flaky -describe.skip('Transaction details', () => { +describe('Transaction details', () => { before(() => { synthtrace.index( opbeans({ @@ -34,8 +34,7 @@ describe.skip('Transaction details', () => { cy.loginAsViewerUser(); }); - // skipping this as it´s been failing a lot lately, more information here https://github.com/elastic/kibana/issues/197386 - it.skip('shows transaction name and transaction charts', () => { + it('shows transaction name and transaction charts', () => { cy.intercept('GET', '/internal/apm/services/opbeans-java/transactions/charts/latency?*').as( 'transactionLatencyRequest' ); @@ -61,7 +60,7 @@ describe.skip('Transaction details', () => { '@transactionThroughputRequest', '@transactionFailureRateRequest', ], - { timeout: 60000 } + { timeout: 30000 } ).spread((latencyInterception, throughputInterception, failureRateInterception) => { expect(latencyInterception.request.query.transactionName).to.be.eql('GET /api/product'); @@ -107,8 +106,7 @@ describe.skip('Transaction details', () => { ); cy.contains('Create SLO'); }); - // skipping this as it´s been failing a lot lately, more information here https://github.com/elastic/kibana/issues/197386 - it.skip('shows top errors table', () => { + it('shows top errors table', () => { cy.visitKibana( `/app/apm/services/opbeans-java/transactions/view?${new URLSearchParams({ ...timeRange, @@ -116,7 +114,7 @@ describe.skip('Transaction details', () => { })}` ); - cy.contains('Top 5 errors'); + cy.contains('Top 5 errors', { timeout: 30000 }); cy.getByTestSubj('topErrorsForTransactionTable').contains('a', '[MockError] Foo').click(); cy.url().should('include', 'opbeans-java/errors'); }); From b5c8ed7b5c8883993a534626384fe92b728e850c Mon Sep 17 00:00:00 2001 From: Jeramy Soucy Date: Tue, 5 Nov 2024 17:31:25 +0100 Subject: [PATCH 46/57] Improves cleanup in spaces data functional test (#198921) Closes #52714 ## Summary Uses the sample data FTR service to remove the sample data via API during cleanup. Previously, the after block only removed the sample data from one space and attempted to rely on an esArchiver call to clean up remaining data later on. As the scope of the test does not use the esArchiver any longer, it seems more appropriate to remove the sample data more deterministically. ### Flaky test runner - https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/7335 --- x-pack/test/functional/apps/spaces/spaces_selection.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/x-pack/test/functional/apps/spaces/spaces_selection.ts b/x-pack/test/functional/apps/spaces/spaces_selection.ts index 113282e5a80d6..d2b1019b9d6ac 100644 --- a/x-pack/test/functional/apps/spaces/spaces_selection.ts +++ b/x-pack/test/functional/apps/spaces/spaces_selection.ts @@ -21,6 +21,7 @@ export default function spaceSelectorFunctionalTests({ 'spaceSelector', ]); const spacesService = getService('spaces'); + const sampleData = getService('sampleData'); describe('Spaces', function () { const testSpacesIds = ['another-space', ...Array.from('123456789', (idx) => `space-${idx}`)]; @@ -158,14 +159,7 @@ export default function spaceSelectorFunctionalTests({ }); after(async () => { - // No need to remove the same sample data in both spaces, the index - // data will be removed in the first call. By feature limitation, - // the created saved objects in the second space will be broken but removed - // when we call esArchiver.unload('x-pack/test/functional/es_archives/spaces'). - await PageObjects.common.navigateToApp('home', { - hash: sampleDataHash, - }); - await PageObjects.home.removeSampleDataSet('logs'); + await sampleData.testResources.removeKibanaSampleData('logs'); await PageObjects.security.forceLogout(); }); From a809ced10492ee973024646825b0ef34c97b33b4 Mon Sep 17 00:00:00 2001 From: Shahzad Date: Tue, 5 Nov 2024 17:59:24 +0100 Subject: [PATCH 47/57] [Fleet/Synthetics] Async bumpRevision to improve performance !! (#198658) ## Summary Async bumpRevision to improve performance Fixes https://github.com/elastic/kibana/issues/198203 Sample trace image image --- .../fleet/server/services/agent_policy.ts | 36 +++++++++++++------ .../fleet/server/services/package_policy.ts | 28 +++++++-------- .../server/services/package_policy_service.ts | 4 ++- .../synthetics_private_location.ts | 8 ++++- 4 files changed, 50 insertions(+), 26 deletions(-) diff --git a/x-pack/plugins/fleet/server/services/agent_policy.ts b/x-pack/plugins/fleet/server/services/agent_policy.ts index f93bf583945a0..cada1c8e64452 100644 --- a/x-pack/plugins/fleet/server/services/agent_policy.ts +++ b/x-pack/plugins/fleet/server/services/agent_policy.ts @@ -30,6 +30,8 @@ import { asyncForEach } from '@kbn/std'; import type { SavedObjectError } from '@kbn/core-saved-objects-common'; +import { withSpan } from '@kbn/apm-utils'; + import { getAllowedOutputTypeForPolicy, packageToPackagePolicy, @@ -170,11 +172,13 @@ class AgentPolicyService { removeProtection: boolean; skipValidation: boolean; returnUpdatedPolicy?: boolean; + asyncDeploy?: boolean; } = { bumpRevision: true, removeProtection: false, skipValidation: false, returnUpdatedPolicy: true, + asyncDeploy: false, } ): Promise { const savedObjectType = await getAgentPolicySavedObjectType(); @@ -228,10 +232,19 @@ class AgentPolicyService { newAgentPolicy!.package_policies = existingAgentPolicy.package_policies; if (options.bumpRevision || options.removeProtection) { - await this.triggerAgentPolicyUpdatedEvent(esClient, 'updated', id, { - spaceId: soClient.getCurrentNamespace(), - agentPolicy: newAgentPolicy, - }); + if (!options.asyncDeploy) { + await this.triggerAgentPolicyUpdatedEvent(esClient, 'updated', id, { + spaceId: soClient.getCurrentNamespace(), + agentPolicy: newAgentPolicy, + }); + } else { + await scheduleDeployAgentPoliciesTask(appContextService.getTaskManagerStart()!, [ + { + id, + spaceId: soClient.getCurrentNamespace(), + }, + ]); + } } logger.debug( `Agent policy ${id} update completed, revision: ${ @@ -878,13 +891,16 @@ class AgentPolicyService { soClient: SavedObjectsClientContract, esClient: ElasticsearchClient, id: string, - options?: { user?: AuthenticatedUser; removeProtection?: boolean } + options?: { user?: AuthenticatedUser; removeProtection?: boolean; asyncDeploy?: boolean } ): Promise { - await this._update(soClient, esClient, id, {}, options?.user, { - bumpRevision: true, - removeProtection: options?.removeProtection ?? false, - skipValidation: false, - returnUpdatedPolicy: false, + return withSpan('bump_agent_policy_revision', async () => { + await this._update(soClient, esClient, id, {}, options?.user, { + bumpRevision: true, + removeProtection: options?.removeProtection ?? false, + skipValidation: false, + returnUpdatedPolicy: false, + asyncDeploy: options?.asyncDeploy, + }); }); } diff --git a/x-pack/plugins/fleet/server/services/package_policy.ts b/x-pack/plugins/fleet/server/services/package_policy.ts index bc5bce9eea2a3..48dc3956d6984 100644 --- a/x-pack/plugins/fleet/server/services/package_policy.ts +++ b/x-pack/plugins/fleet/server/services/package_policy.ts @@ -480,22 +480,21 @@ class PackagePolicyClientImpl implements PackagePolicyClient { user?: AuthenticatedUser; bumpRevision?: boolean; force?: true; + asyncDeploy?: boolean; } ): Promise<{ created: PackagePolicy[]; failed: Array<{ packagePolicy: NewPackagePolicy; error?: Error | SavedObjectError }>; }> { - const useSpaceAwareness = await isSpaceAwarenessEnabled(); - const savedObjectType = await getPackagePolicySavedObjectType(); - for (const packagePolicy of packagePolicies) { + const [useSpaceAwareness, savedObjectType, packageInfos] = await Promise.all([ + isSpaceAwarenessEnabled(), + getPackagePolicySavedObjectType(), + getPackageInfoForPackagePolicies(packagePolicies, soClient), + ]); + + await pMap(packagePolicies, async (packagePolicy) => { const basePkgInfo = packagePolicy.package - ? await getPackageInfo({ - savedObjectsClient: soClient, - pkgName: packagePolicy.package.name, - pkgVersion: packagePolicy.package.version, - ignoreUnverified: true, - prerelease: true, - }) + ? packageInfos.get(`${packagePolicy.package.name}-${packagePolicy.package.version}`) : undefined; if (!packagePolicy.id) { packagePolicy.id = SavedObjectsUtils.generateId(); @@ -508,7 +507,7 @@ class PackagePolicyClientImpl implements PackagePolicyClient { this.keepPolicyIdInSync(packagePolicy); await preflightCheckPackagePolicy(soClient, packagePolicy, basePkgInfo); - } + }); const agentPolicyIds = new Set(packagePolicies.flatMap((pkgPolicy) => pkgPolicy.policy_ids)); @@ -528,8 +527,6 @@ class PackagePolicyClientImpl implements PackagePolicyClient { } } - const packageInfos = await getPackageInfoForPackagePolicies(packagePolicies, soClient); - const isoDate = new Date().toISOString(); const policiesToCreate: Array> = []; @@ -665,6 +662,7 @@ class PackagePolicyClientImpl implements PackagePolicyClient { for (const agentPolicyId of agentPolicyIds) { await agentPolicyService.bumpRevision(soClient, esClient, agentPolicyId, { user: options?.user, + asyncDeploy: options?.asyncDeploy, }); } } @@ -1176,7 +1174,7 @@ class PackagePolicyClientImpl implements PackagePolicyClient { soClient: SavedObjectsClientContract, esClient: ElasticsearchClient, packagePolicyUpdates: Array, - options?: { user?: AuthenticatedUser; force?: boolean } + options?: { user?: AuthenticatedUser; force?: boolean; asyncDeploy?: boolean } ): Promise<{ updatedPolicies: PackagePolicy[] | null; failedPolicies: Array<{ @@ -1347,6 +1345,7 @@ class PackagePolicyClientImpl implements PackagePolicyClient { await agentPolicyService.bumpRevision(soClient, esClient, agentPolicyId, { user: options?.user, removeProtection, + asyncDeploy: options?.asyncDeploy, }); }); @@ -2368,6 +2367,7 @@ class PackagePolicyClientWithAuthz extends PackagePolicyClientImpl { user?: AuthenticatedUser | undefined; bumpRevision?: boolean | undefined; force?: true | undefined; + asyncDeploy?: boolean; } | undefined ): Promise<{ diff --git a/x-pack/plugins/fleet/server/services/package_policy_service.ts b/x-pack/plugins/fleet/server/services/package_policy_service.ts index 967efb1055cfb..5a83c2adf97ab 100644 --- a/x-pack/plugins/fleet/server/services/package_policy_service.ts +++ b/x-pack/plugins/fleet/server/services/package_policy_service.ts @@ -105,6 +105,7 @@ export interface PackagePolicyClient { bumpRevision?: boolean; force?: true; authorizationHeader?: HTTPAuthorizationHeader | null; + asyncDeploy?: boolean; } ): Promise<{ created: PackagePolicy[]; @@ -115,7 +116,7 @@ export interface PackagePolicyClient { soClient: SavedObjectsClientContract, esClient: ElasticsearchClient, packagePolicyUpdates: UpdatePackagePolicy[], - options?: { user?: AuthenticatedUser; force?: boolean }, + options?: { user?: AuthenticatedUser; force?: boolean; asyncDeploy?: boolean }, currentVersion?: string ): Promise<{ updatedPolicies: PackagePolicy[] | null; @@ -165,6 +166,7 @@ export interface PackagePolicyClient { user?: AuthenticatedUser; skipUnassignFromAgentPolicies?: boolean; force?: boolean; + asyncDeploy?: boolean; }, context?: RequestHandlerContext, request?: KibanaRequest diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts b/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts index fe5f74529121e..9ed34399e74f2 100644 --- a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts +++ b/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts @@ -369,7 +369,10 @@ export class SyntheticsPrivateLocation { return await this.server.fleet.packagePolicyService.bulkCreate( soClient, esClient, - newPolicies + newPolicies, + { + asyncDeploy: true, + } ); } } @@ -384,6 +387,7 @@ export class SyntheticsPrivateLocation { policiesToUpdate, { force: true, + asyncDeploy: true, } ); return failedPolicies; @@ -401,6 +405,7 @@ export class SyntheticsPrivateLocation { policyIdsToDelete, { force: true, + asyncDeploy: true, } ); } catch (e) { @@ -430,6 +435,7 @@ export class SyntheticsPrivateLocation { policyIdsToDelete, { force: true, + asyncDeploy: true, } ); const failedPolicies = result?.filter((policy) => { From 4e753fa8b0270d16aab84e2a4adabfa778326693 Mon Sep 17 00:00:00 2001 From: Anderson Queiroz Date: Tue, 5 Nov 2024 18:08:26 +0100 Subject: [PATCH 48/57] kbn-doc-links: remove functionbeat (#198902) ## Summary Remove docs link to functionbeat as it has been deprecated and will be removed in 9.0 ### Checklist Delete any items that are not applicable to this PR. ### Risk Matrix Delete this section if it is not applicable to this PR. ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#_add_your_labels) - [ ] This will appear in the **Release Notes** and follow the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) ### Related Issues: - Closes https://github.com/elastic/kibana/issues/193030 - Relates https://github.com/elastic/beats/issues/40745 --- packages/kbn-doc-links/src/get_doc_links.ts | 3 --- packages/kbn-doc-links/src/types.ts | 3 --- 2 files changed, 6 deletions(-) diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts index 2e9183ed18b56..1294f72b9f208 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -283,9 +283,6 @@ export const getDocLinks = ({ kibanaBranch, buildFlavor }: GetDocLinkOptions): D base: `${ELASTIC_WEBSITE_URL}guide/en/logstash/${DOC_LINK_VERSION}`, inputElasticAgent: `${ELASTIC_WEBSITE_URL}guide/en/logstash/${DOC_LINK_VERSION}/plugins-inputs-elastic_agent.html`, }, - functionbeat: { - base: `${ELASTIC_WEBSITE_URL}guide/en/beats/functionbeat/${DOC_LINK_VERSION}`, - }, winlogbeat: { base: `${ELASTIC_WEBSITE_URL}guide/en/beats/winlogbeat/${DOC_LINK_VERSION}`, }, diff --git a/packages/kbn-doc-links/src/types.ts b/packages/kbn-doc-links/src/types.ts index 9a41985460b61..0bfb1c69fd6bb 100644 --- a/packages/kbn-doc-links/src/types.ts +++ b/packages/kbn-doc-links/src/types.ts @@ -240,9 +240,6 @@ export interface DocLinks { readonly base: string; readonly inputElasticAgent: string; }; - readonly functionbeat: { - readonly base: string; - }; readonly winlogbeat: { readonly base: string; }; From 2a9b42a0dbcf6094854194e6e8775e0d4e7a5a18 Mon Sep 17 00:00:00 2001 From: Marius Dragomir Date: Tue, 5 Nov 2024 18:51:39 +0100 Subject: [PATCH 49/57] [QA]Change to skipTourIfExists in console CCS tests instead of closeHelpifExists (#199017) ## Summary With the change from the ace console to monaco console, the UI has changed and the methods as well. We're now using `skipTourIfExists` instead of `closeHelpIfExists`. --- .../test/stack_functional_integration/apps/ccs/ccs_console.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/test/stack_functional_integration/apps/ccs/ccs_console.js b/x-pack/test/stack_functional_integration/apps/ccs/ccs_console.js index d52611dd3c6c9..5de9586440278 100644 --- a/x-pack/test/stack_functional_integration/apps/ccs/ccs_console.js +++ b/x-pack/test/stack_functional_integration/apps/ccs/ccs_console.js @@ -20,7 +20,7 @@ export default function ({ getService, getPageObjects }) { await PageObjects.common.navigateToApp('console'); await PageObjects.common.dismissBanner(); await retry.try(async () => { - await PageObjects.console.closeHelpIfExists(); + await PageObjects.console.skipTourIfExists(); }); }); From 0d19c21c202ace784374f2817168f4417464783b Mon Sep 17 00:00:00 2001 From: Philippe Oberti Date: Tue, 5 Nov 2024 11:55:05 -0600 Subject: [PATCH 50/57] [Security Solution] - skipping failing sourcerer Cypress test failing on main (#199030) ## Summary This PR skips 2 tests failing on `main` at the moment: - https://github.com/elastic/kibana/issues/198944#issuecomment-2457665138 - https://github.com/elastic/kibana/issues/198943#issuecomment-2457665072 --- .../e2e/investigations/sourcerer/sourcerer_timeline.cy.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/sourcerer/sourcerer_timeline.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/sourcerer/sourcerer_timeline.cy.ts index 3560ff4bfd4c4..1fb3b3c936f4f 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/sourcerer/sourcerer_timeline.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/sourcerer/sourcerer_timeline.cy.ts @@ -64,7 +64,8 @@ describe.skip('Timeline scope', { tags: ['@ess', '@serverless', '@skipInServerle }); describe('Modified badge', () => { - it('Selecting new data view does not add a modified badge', () => { + // failing on main multiple times https://github.com/elastic/kibana/issues/198944#issuecomment-2457665138 and https://github.com/elastic/kibana/issues/198943#issuecomment-2457665072 + it.skip('Selecting new data view does not add a modified badge', () => { openTimelineUsingToggle(); cy.get(SOURCERER.badgeModified).should(`not.exist`); openSourcerer('timeline'); @@ -134,7 +135,8 @@ describe.skip('Timeline scope', { tags: ['@ess', '@serverless', '@skipInServerle }); const defaultPatterns = [`auditbeat-*`, `${DEFAULT_ALERTS_INDEX}-default`]; - it('alerts checkbox behaves as expected', () => { + // failing on main multiple times https://github.com/elastic/kibana/issues/198944#issuecomment-2457665138 and https://github.com/elastic/kibana/issues/198943#issuecomment-2457665072 + it.skip('alerts checkbox behaves as expected', () => { isDataViewSelection(siemDataViewTitle); defaultPatterns.forEach((pattern) => isSourcererSelection(pattern)); openDataViewSelection(); From b71efcfe7c6c313aab3b85d7ad157d049c9bab7d Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 11:57:14 -0600 Subject: [PATCH 51/57] Update docker.elastic.co/wolfi/chainguard-base:latest Docker digest to 26caa6b (main) (#198639) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | docker.elastic.co/wolfi/chainguard-base | digest | `7082adc` -> `26caa6b` | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). Co-authored-by: elastic-renovate-prod[bot] <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> --- src/dev/build/tasks/os_packages/docker_generator/run.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dev/build/tasks/os_packages/docker_generator/run.ts b/src/dev/build/tasks/os_packages/docker_generator/run.ts index 85cd6d7458ba9..7a64ada1bfff9 100644 --- a/src/dev/build/tasks/os_packages/docker_generator/run.ts +++ b/src/dev/build/tasks/os_packages/docker_generator/run.ts @@ -51,7 +51,7 @@ export async function runDockerGenerator( */ if (flags.baseImage === 'wolfi') baseImageName = - 'docker.elastic.co/wolfi/chainguard-base:latest@sha256:7082adcc2c4380be273ab5b80c4a762b4f17279c13c6fc8f87a60190aee2e2cd'; + 'docker.elastic.co/wolfi/chainguard-base:latest@sha256:26caa6beaee2bbf739a82e91a35173892dfe888d0a744b9e46cdc19a90d8656f'; let imageFlavor = ''; if (flags.baseImage === 'ubi') imageFlavor += `-ubi`; From a91427d71bfab9d6a47c3dcdfd5e1a08b8e3ee6f Mon Sep 17 00:00:00 2001 From: Hannah Mudge Date: Tue, 5 Nov 2024 11:11:11 -0700 Subject: [PATCH 52/57] [Dashboard] [Collapsable Panels] Add panel management API (#195513) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes https://github.com/elastic/kibana/issues/190445 ## Summary This PR adds the first steps of a panel management API to the `GridLayout` component: - A method to delete a panel - A method to replace a panel - A method to add a panel with a given size and placement technique (`'placeAtTop' | 'findTopLeftMostOpenSpace'`) - Currently, we only support adding a panel to the first row, since this is all that is necessary for parity with the current Dashboard layout engine - we can revisit this decision as part of the [row API](https://github.com/elastic/kibana/issues/195807). - A method to get panel count - This might not be necessary for the dashboard (we'll see), but I needed it for the example plugin to be able to generate suggested panel IDs. It's possible this will get removed 🤷 - The ability to serialize the grid layout state I only included the bare minimum here that I know will be necessary for a dashboard integration, but it's possible I missed some things and so this API will most likely expand in the future. https://github.com/user-attachments/assets/28df844c-5c12-40fd-b4f4-8fbd1a8abc20 ### Serialization With respect to serialization, there are still some open questions about how we want to handle it from the Dashboard side - therefore, in this PR, I opted to keep the serialization as simple as possible (i.e. both the input and serialized output take identical forms for the `GridLayout` component). Our goal is to keep `kbn-grid-layout` as **generic** as possible so, while I considered making the serialize method return the form that the Dashboard expects, I ultimately decided against that; instead, I think Dashboard should be responsible for taking the grid layout's serialized form and turning it into a dashboard-specific serialization of a grid layout and vice-versa for deserializing and sending the initial layout to the `GridLayout` component. The dashboard grid layout serialization will be tackled as part of https://github.com/elastic/kibana/issues/190446, where it's possible my opinion might change :) This is just a first draft of the `kbn-grid-layout` API, after all. ### Example Grid Layout In the grid layout example plugin, I integrated the API by adding some pretty bare-bones buttons to each panel in order to ensure the API works as expected - that being said, I didn't worry too much about the design of these things and so it looks pretty ugly 😆 My next step is https://github.com/elastic/kibana/issues/190379, where I will have to integrate the grid layout API with the embeddable actions, at which point the design will be improved - so this is a very temporary state :bow: ### Checklist - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [x] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- examples/grid_example/public/app.tsx | 210 +++++++++++++++--- examples/grid_example/public/get_panel_id.tsx | 108 +++++++++ examples/grid_example/public/plugin.ts | 7 +- .../public/serialized_grid_layout.ts | 52 +++++ examples/grid_example/tsconfig.json | 3 + .../grid/grid_height_smoother.tsx | 2 +- packages/kbn-grid-layout/grid/grid_layout.tsx | 164 ++++++++------ packages/kbn-grid-layout/grid/grid_panel.tsx | 3 +- packages/kbn-grid-layout/grid/grid_row.tsx | 31 +-- packages/kbn-grid-layout/grid/types.ts | 35 ++- .../grid/use_grid_layout_api.ts | 109 +++++++++ .../grid/use_grid_layout_events.ts | 20 +- .../grid/utils/equality_checks.ts | 44 ++++ .../grid/{ => utils}/resolve_grid_row.ts | 4 +- .../grid/utils/run_panel_placement.ts | 116 ++++++++++ packages/kbn-grid-layout/index.ts | 10 +- packages/kbn-grid-layout/tsconfig.json | 1 + 17 files changed, 775 insertions(+), 144 deletions(-) create mode 100644 examples/grid_example/public/get_panel_id.tsx create mode 100644 examples/grid_example/public/serialized_grid_layout.ts create mode 100644 packages/kbn-grid-layout/grid/use_grid_layout_api.ts create mode 100644 packages/kbn-grid-layout/grid/utils/equality_checks.ts rename packages/kbn-grid-layout/grid/{ => utils}/resolve_grid_row.ts (96%) create mode 100644 packages/kbn-grid-layout/grid/utils/run_panel_placement.ts diff --git a/examples/grid_example/public/app.tsx b/examples/grid_example/public/app.tsx index 332649720742a..0e73a76d790fd 100644 --- a/examples/grid_example/public/app.tsx +++ b/examples/grid_example/public/app.tsx @@ -7,53 +7,186 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import React from 'react'; +import { cloneDeep } from 'lodash'; +import React, { useRef, useState } from 'react'; import ReactDOM from 'react-dom'; -import { GridLayout, type GridLayoutData } from '@kbn/grid-layout'; +import { v4 as uuidv4 } from 'uuid'; + +import { + EuiBadge, + EuiButton, + EuiButtonEmpty, + EuiCallOut, + EuiFlexGroup, + EuiFlexItem, + EuiPageTemplate, + EuiProvider, + EuiSpacer, +} from '@elastic/eui'; import { AppMountParameters } from '@kbn/core-application-browser'; -import { EuiPageTemplate, EuiProvider } from '@elastic/eui'; +import { CoreStart } from '@kbn/core-lifecycle-browser'; +import { GridLayout, GridLayoutData, isLayoutEqual, type GridLayoutApi } from '@kbn/grid-layout'; +import { i18n } from '@kbn/i18n'; + +import { getPanelId } from './get_panel_id'; +import { + clearSerializedGridLayout, + getSerializedGridLayout, + setSerializedGridLayout, +} from './serialized_grid_layout'; + +const DASHBOARD_MARGIN_SIZE = 8; +const DASHBOARD_GRID_HEIGHT = 20; +const DASHBOARD_GRID_COLUMN_COUNT = 48; +const DEFAULT_PANEL_HEIGHT = 15; +const DEFAULT_PANEL_WIDTH = DASHBOARD_GRID_COLUMN_COUNT / 2; + +export const GridExample = ({ coreStart }: { coreStart: CoreStart }) => { + const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false); + + const [layoutKey, setLayoutKey] = useState(uuidv4()); + const [gridLayoutApi, setGridLayoutApi] = useState(); + const savedLayout = useRef(getSerializedGridLayout()); + const currentLayout = useRef(savedLayout.current); -export const GridExample = () => { return ( - + + + { + clearSerializedGridLayout(); + window.location.reload(); + }} + > + {i18n.translate('examples.gridExample.resetExampleButton', { + defaultMessage: 'Reset example', + })} + + + + + + { + const panelId = await getPanelId({ + coreStart, + suggestion: `panel${(gridLayoutApi?.getPanelCount() ?? 0) + 1}`, + }); + if (panelId) + gridLayoutApi?.addPanel(panelId, { + width: DEFAULT_PANEL_WIDTH, + height: DEFAULT_PANEL_HEIGHT, + }); + }} + > + {i18n.translate('examples.gridExample.addPanelButton', { + defaultMessage: 'Add a panel', + })} + + + + + {hasUnsavedChanges && ( + + + {i18n.translate('examples.gridExample.unsavedChangesBadge', { + defaultMessage: 'Unsaved changes', + })} + + + )} + + { + currentLayout.current = cloneDeep(savedLayout.current); + setHasUnsavedChanges(false); + setLayoutKey(uuidv4()); // force remount of grid + }} + > + {i18n.translate('examples.gridExample.resetLayoutButton', { + defaultMessage: 'Reset', + })} + + + + { + if (gridLayoutApi) { + const layoutToSave = gridLayoutApi.serializeState(); + setSerializedGridLayout(layoutToSave); + savedLayout.current = layoutToSave; + setHasUnsavedChanges(false); + } + }} + > + {i18n.translate('examples.gridExample.saveLayoutButton', { + defaultMessage: 'Save', + })} + + + + + + { + currentLayout.current = cloneDeep(newLayout); + setHasUnsavedChanges(!isLayoutEqual(savedLayout.current, newLayout)); + }} + ref={setGridLayoutApi} renderPanelContents={(id) => { - return
    {id}
    ; + return ( + <> +
    {id}
    + { + gridLayoutApi?.removePanel(id); + }} + > + {i18n.translate('examples.gridExample.deletePanelButton', { + defaultMessage: 'Delete panel', + })} + + { + const newPanelId = await getPanelId({ + coreStart, + suggestion: `panel${(gridLayoutApi?.getPanelCount() ?? 0) + 1}`, + }); + if (newPanelId) gridLayoutApi?.replacePanel(id, newPanelId); + }} + > + {i18n.translate('examples.gridExample.replacePanelButton', { + defaultMessage: 'Replace panel', + })} + + + ); }} getCreationOptions={() => { - const initialLayout: GridLayoutData = [ - { - title: 'Large section', - isCollapsed: false, - panels: { - panel1: { column: 0, row: 0, width: 12, height: 6, id: 'panel1' }, - panel2: { column: 0, row: 6, width: 8, height: 4, id: 'panel2' }, - panel3: { column: 8, row: 6, width: 12, height: 4, id: 'panel3' }, - panel4: { column: 0, row: 10, width: 48, height: 4, id: 'panel4' }, - panel5: { column: 12, row: 0, width: 36, height: 6, id: 'panel5' }, - panel6: { column: 24, row: 6, width: 24, height: 4, id: 'panel6' }, - panel7: { column: 20, row: 6, width: 4, height: 2, id: 'panel7' }, - panel8: { column: 20, row: 8, width: 4, height: 2, id: 'panel8' }, - }, - }, - { - title: 'Small section', - isCollapsed: false, - panels: { panel9: { column: 0, row: 0, width: 12, height: 16, id: 'panel9' } }, - }, - { - title: 'Another small section', - isCollapsed: false, - panels: { panel10: { column: 24, row: 0, width: 12, height: 6, id: 'panel10' } }, - }, - ]; - return { - gridSettings: { gutterSize: 8, rowHeight: 26, columnCount: 48 }, - initialLayout, + gridSettings: { + gutterSize: DASHBOARD_MARGIN_SIZE, + rowHeight: DASHBOARD_GRID_HEIGHT, + columnCount: DASHBOARD_GRID_COLUMN_COUNT, + }, + initialLayout: cloneDeep(currentLayout.current), }; }} /> @@ -63,8 +196,11 @@ export const GridExample = () => { ); }; -export const renderGridExampleApp = (element: AppMountParameters['element']) => { - ReactDOM.render(, element); +export const renderGridExampleApp = ( + element: AppMountParameters['element'], + coreStart: CoreStart +) => { + ReactDOM.render(, element); return () => ReactDOM.unmountComponentAtNode(element); }; diff --git a/examples/grid_example/public/get_panel_id.tsx b/examples/grid_example/public/get_panel_id.tsx new file mode 100644 index 0000000000000..d83d0b232b53a --- /dev/null +++ b/examples/grid_example/public/get_panel_id.tsx @@ -0,0 +1,108 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import React, { useState } from 'react'; + +import { + EuiButton, + EuiCallOut, + EuiFieldText, + EuiModal, + EuiModalBody, + EuiModalFooter, + EuiModalHeader, + EuiModalHeaderTitle, + EuiSpacer, +} from '@elastic/eui'; +import { CoreStart } from '@kbn/core-lifecycle-browser'; +import { toMountPoint } from '@kbn/react-kibana-mount'; +import { i18n } from '@kbn/i18n'; + +const PanelIdModal = ({ + suggestion, + onClose, + onSubmit, +}: { + suggestion: string; + onClose: () => void; + onSubmit: (id: string) => void; +}) => { + const [panelId, setPanelId] = useState(suggestion); + + return ( + + + + {i18n.translate('examples.gridExample.getPanelIdModalTitle', { + defaultMessage: 'Panel ID', + })} + + + + + + + + { + setPanelId(e.target.value ?? ''); + }} + /> + + + { + onSubmit(panelId); + }} + > + {i18n.translate('examples.gridExample.getPanelIdSubmitButton', { + defaultMessage: 'Submit', + })} + + + + ); +}; + +export const getPanelId = async ({ + coreStart, + suggestion, +}: { + coreStart: CoreStart; + suggestion: string; +}): Promise => { + return new Promise((resolve) => { + const session = coreStart.overlays.openModal( + toMountPoint( + { + resolve(undefined); + session.close(); + }} + onSubmit={(newPanelId) => { + resolve(newPanelId); + session.close(); + }} + />, + { + theme: coreStart.theme, + i18n: coreStart.i18n, + } + ) + ); + }); +}; diff --git a/examples/grid_example/public/plugin.ts b/examples/grid_example/public/plugin.ts index 0f7d441a1be15..d57b06ac96017 100644 --- a/examples/grid_example/public/plugin.ts +++ b/examples/grid_example/public/plugin.ts @@ -26,8 +26,11 @@ export class GridExamplePlugin title: gridExampleTitle, visibleIn: [], async mount(params: AppMountParameters) { - const { renderGridExampleApp } = await import('./app'); - return renderGridExampleApp(params.element); + const [{ renderGridExampleApp }, [coreStart]] = await Promise.all([ + import('./app'), + core.getStartServices(), + ]); + return renderGridExampleApp(params.element, coreStart); }, }); developerExamples.register({ diff --git a/examples/grid_example/public/serialized_grid_layout.ts b/examples/grid_example/public/serialized_grid_layout.ts new file mode 100644 index 0000000000000..2bb20052398f8 --- /dev/null +++ b/examples/grid_example/public/serialized_grid_layout.ts @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { type GridLayoutData } from '@kbn/grid-layout'; + +const STATE_SESSION_STORAGE_KEY = 'kibana.examples.gridExample.state'; + +export function clearSerializedGridLayout() { + sessionStorage.removeItem(STATE_SESSION_STORAGE_KEY); +} + +export function getSerializedGridLayout(): GridLayoutData { + const serializedStateJSON = sessionStorage.getItem(STATE_SESSION_STORAGE_KEY); + return serializedStateJSON ? JSON.parse(serializedStateJSON) : initialGridLayout; +} + +export function setSerializedGridLayout(layout: GridLayoutData) { + sessionStorage.setItem(STATE_SESSION_STORAGE_KEY, JSON.stringify(layout)); +} + +const initialGridLayout: GridLayoutData = [ + { + title: 'Large section', + isCollapsed: false, + panels: { + panel1: { column: 0, row: 0, width: 12, height: 6, id: 'panel1' }, + panel2: { column: 0, row: 6, width: 8, height: 4, id: 'panel2' }, + panel3: { column: 8, row: 6, width: 12, height: 4, id: 'panel3' }, + panel4: { column: 0, row: 10, width: 48, height: 4, id: 'panel4' }, + panel5: { column: 12, row: 0, width: 36, height: 6, id: 'panel5' }, + panel6: { column: 24, row: 6, width: 24, height: 4, id: 'panel6' }, + panel7: { column: 20, row: 6, width: 4, height: 2, id: 'panel7' }, + panel8: { column: 20, row: 8, width: 4, height: 2, id: 'panel8' }, + }, + }, + { + title: 'Small section', + isCollapsed: false, + panels: { panel9: { column: 0, row: 0, width: 12, height: 16, id: 'panel9' } }, + }, + { + title: 'Another small section', + isCollapsed: false, + panels: { panel10: { column: 24, row: 0, width: 12, height: 6, id: 'panel10' } }, + }, +]; diff --git a/examples/grid_example/tsconfig.json b/examples/grid_example/tsconfig.json index 23be45a74c2f7..ad692e9697b2d 100644 --- a/examples/grid_example/tsconfig.json +++ b/examples/grid_example/tsconfig.json @@ -10,5 +10,8 @@ "@kbn/core-application-browser", "@kbn/core", "@kbn/developer-examples-plugin", + "@kbn/core-lifecycle-browser", + "@kbn/react-kibana-mount", + "@kbn/i18n", ] } diff --git a/packages/kbn-grid-layout/grid/grid_height_smoother.tsx b/packages/kbn-grid-layout/grid/grid_height_smoother.tsx index 7693fac72918a..960fe4f52e735 100644 --- a/packages/kbn-grid-layout/grid/grid_height_smoother.tsx +++ b/packages/kbn-grid-layout/grid/grid_height_smoother.tsx @@ -24,7 +24,7 @@ export const GridHeightSmoother = ({ gridLayoutStateManager.interactionEvent$, ]).subscribe(([dimensions, interactionEvent]) => { if (!smoothHeightRef.current) return; - if (!interactionEvent || interactionEvent.type === 'drop') { + if (!interactionEvent) { smoothHeightRef.current.style.height = `${dimensions.height}px`; return; } diff --git a/packages/kbn-grid-layout/grid/grid_layout.tsx b/packages/kbn-grid-layout/grid/grid_layout.tsx index 7f77a476579e9..c3f9521503107 100644 --- a/packages/kbn-grid-layout/grid/grid_layout.tsx +++ b/packages/kbn-grid-layout/grid/grid_layout.tsx @@ -7,82 +7,110 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import React, { useEffect, useState } from 'react'; -import { distinctUntilChanged, map, skip } from 'rxjs'; -import { v4 as uuidv4 } from 'uuid'; +import { cloneDeep } from 'lodash'; +import React, { forwardRef, useEffect, useImperativeHandle, useState } from 'react'; +import { combineLatest, distinctUntilChanged, filter, map, pairwise, skip } from 'rxjs'; import { GridHeightSmoother } from './grid_height_smoother'; import { GridRow } from './grid_row'; -import { GridLayoutData, GridSettings } from './types'; +import { GridLayoutApi, GridLayoutData, GridSettings } from './types'; +import { useGridLayoutApi } from './use_grid_layout_api'; import { useGridLayoutEvents } from './use_grid_layout_events'; import { useGridLayoutState } from './use_grid_layout_state'; +import { isLayoutEqual } from './utils/equality_checks'; -export const GridLayout = ({ - getCreationOptions, - renderPanelContents, -}: { +interface GridLayoutProps { getCreationOptions: () => { initialLayout: GridLayoutData; gridSettings: GridSettings }; renderPanelContents: (panelId: string) => React.ReactNode; -}) => { - const { gridLayoutStateManager, setDimensionsRef } = useGridLayoutState({ - getCreationOptions, - }); - useGridLayoutEvents({ gridLayoutStateManager }); + onLayoutChange: (newLayout: GridLayoutData) => void; +} - const [rowCount, setRowCount] = useState( - gridLayoutStateManager.gridLayout$.getValue().length - ); +export const GridLayout = forwardRef( + ({ getCreationOptions, renderPanelContents, onLayoutChange }, ref) => { + const { gridLayoutStateManager, setDimensionsRef } = useGridLayoutState({ + getCreationOptions, + }); + useGridLayoutEvents({ gridLayoutStateManager }); - useEffect(() => { - /** - * The only thing that should cause the entire layout to re-render is adding a new row; - * this subscription ensures this by updating the `rowCount` state when it changes. - */ - const rowCountSubscription = gridLayoutStateManager.gridLayout$ - .pipe( - skip(1), // we initialized `rowCount` above, so skip the initial emit - map((newLayout) => newLayout.length), - distinctUntilChanged() - ) - .subscribe((newRowCount) => { - setRowCount(newRowCount); - }); - return () => rowCountSubscription.unsubscribe(); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); + const gridLayoutApi = useGridLayoutApi({ gridLayoutStateManager }); + useImperativeHandle(ref, () => gridLayoutApi, [gridLayoutApi]); - return ( - <> - -
    { - setDimensionsRef(divElement); - }} - > - {Array.from({ length: rowCount }, (_, rowIndex) => { - return ( - { - const currentLayout = gridLayoutStateManager.gridLayout$.value; - currentLayout[rowIndex].isCollapsed = !currentLayout[rowIndex].isCollapsed; - gridLayoutStateManager.gridLayout$.next(currentLayout); - }} - setInteractionEvent={(nextInteractionEvent) => { - if (nextInteractionEvent?.type === 'drop') { - gridLayoutStateManager.activePanel$.next(undefined); - } - gridLayoutStateManager.interactionEvent$.next(nextInteractionEvent); - }} - ref={(element) => (gridLayoutStateManager.rowRefs.current[rowIndex] = element)} - /> - ); - })} -
    -
    - - ); -}; + const [rowCount, setRowCount] = useState( + gridLayoutStateManager.gridLayout$.getValue().length + ); + + useEffect(() => { + /** + * The only thing that should cause the entire layout to re-render is adding a new row; + * this subscription ensures this by updating the `rowCount` state when it changes. + */ + const rowCountSubscription = gridLayoutStateManager.gridLayout$ + .pipe( + skip(1), // we initialized `rowCount` above, so skip the initial emit + map((newLayout) => newLayout.length), + distinctUntilChanged() + ) + .subscribe((newRowCount) => { + setRowCount(newRowCount); + }); + + const onLayoutChangeSubscription = combineLatest([ + gridLayoutStateManager.gridLayout$, + gridLayoutStateManager.interactionEvent$, + ]) + .pipe( + // if an interaction event is happening, then ignore any "draft" layout changes + filter(([_, event]) => !Boolean(event)), + // once no interaction event, create pairs of "old" and "new" layouts for comparison + map(([layout]) => layout), + pairwise() + ) + .subscribe(([layoutBefore, layoutAfter]) => { + if (!isLayoutEqual(layoutBefore, layoutAfter)) { + onLayoutChange(layoutAfter); + } + }); + + return () => { + rowCountSubscription.unsubscribe(); + onLayoutChangeSubscription.unsubscribe(); + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return ( + <> + +
    { + setDimensionsRef(divElement); + }} + > + {Array.from({ length: rowCount }, (_, rowIndex) => { + return ( + { + const newLayout = cloneDeep(gridLayoutStateManager.gridLayout$.value); + newLayout[rowIndex].isCollapsed = !newLayout[rowIndex].isCollapsed; + gridLayoutStateManager.gridLayout$.next(newLayout); + }} + setInteractionEvent={(nextInteractionEvent) => { + if (!nextInteractionEvent) { + gridLayoutStateManager.activePanel$.next(undefined); + } + gridLayoutStateManager.interactionEvent$.next(nextInteractionEvent); + }} + ref={(element) => (gridLayoutStateManager.rowRefs.current[rowIndex] = element)} + /> + ); + })} +
    +
    + + ); + } +); diff --git a/packages/kbn-grid-layout/grid/grid_panel.tsx b/packages/kbn-grid-layout/grid/grid_panel.tsx index 64a4a2faff403..822cb2328c4a5 100644 --- a/packages/kbn-grid-layout/grid/grid_panel.tsx +++ b/packages/kbn-grid-layout/grid/grid_panel.tsx @@ -30,7 +30,7 @@ export const GridPanel = forwardRef< rowIndex: number; renderPanelContents: (panelId: string) => React.ReactNode; interactionStart: ( - type: PanelInteractionEvent['type'], + type: PanelInteractionEvent['type'] | 'drop', e: React.MouseEvent ) => void; gridLayoutStateManager: GridLayoutStateManager; @@ -190,6 +190,7 @@ export const GridPanel = forwardRef< border-bottom: 2px solid ${euiThemeVars.euiColorSuccess}; border-right: 2px solid ${euiThemeVars.euiColorSuccess}; :hover { + opacity: 1; background-color: ${transparentize(euiThemeVars.euiColorSuccess, 0.05)}; cursor: se-resize; } diff --git a/packages/kbn-grid-layout/grid/grid_row.tsx b/packages/kbn-grid-layout/grid/grid_row.tsx index e797cd570550a..ff97b32efcdbc 100644 --- a/packages/kbn-grid-layout/grid/grid_row.tsx +++ b/packages/kbn-grid-layout/grid/grid_row.tsx @@ -91,7 +91,7 @@ export const GridRow = forwardRef< )}, ${rowHeight}px)`; const targetRow = interactionEvent?.targetRowIndex; - if (rowIndex === targetRow && interactionEvent?.type !== 'drop') { + if (rowIndex === targetRow && interactionEvent) { // apply "targetted row" styles const gridColor = transparentize(euiThemeVars.euiColorSuccess, 0.2); rowRef.style.backgroundPosition = `top -${gutterSize / 2}px left -${ @@ -122,7 +122,6 @@ export const GridRow = forwardRef< */ const rowStateSubscription = gridLayoutStateManager.gridLayout$ .pipe( - skip(1), // we are initializing all row state with a value, so skip the initial emit map((gridLayout) => { return { title: gridLayout[rowIndex].title, @@ -201,18 +200,22 @@ export const GridRow = forwardRef< if (!panelRef) return; const panelRect = panelRef.getBoundingClientRect(); - setInteractionEvent({ - type, - id: panelId, - panelDiv: panelRef, - targetRowIndex: rowIndex, - mouseOffsets: { - top: e.clientY - panelRect.top, - left: e.clientX - panelRect.left, - right: e.clientX - panelRect.right, - bottom: e.clientY - panelRect.bottom, - }, - }); + if (type === 'drop') { + setInteractionEvent(undefined); + } else { + setInteractionEvent({ + type, + id: panelId, + panelDiv: panelRef, + targetRowIndex: rowIndex, + mouseOffsets: { + top: e.clientY - panelRect.top, + left: e.clientX - panelRect.left, + right: e.clientX - panelRect.right, + bottom: e.clientY - panelRect.bottom, + }, + }); + } }} ref={(element) => { if (!gridLayoutStateManager.panelRefs.current[rowIndex]) { diff --git a/packages/kbn-grid-layout/grid/types.ts b/packages/kbn-grid-layout/grid/types.ts index 3a88eeb33baba..004669e69b186 100644 --- a/packages/kbn-grid-layout/grid/types.ts +++ b/packages/kbn-grid-layout/grid/types.ts @@ -9,11 +9,13 @@ import { BehaviorSubject } from 'rxjs'; import type { ObservedSize } from 'use-resize-observer/polyfilled'; + +import { SerializableRecord } from '@kbn/utility-types'; + export interface GridCoordinate { column: number; row: number; } - export interface GridRect extends GridCoordinate { width: number; height: number; @@ -57,8 +59,9 @@ export interface ActivePanel { } export interface GridLayoutStateManager { - gridDimensions$: BehaviorSubject; gridLayout$: BehaviorSubject; + + gridDimensions$: BehaviorSubject; runtimeSettings$: BehaviorSubject; activePanel$: BehaviorSubject; interactionEvent$: BehaviorSubject; @@ -74,7 +77,7 @@ export interface PanelInteractionEvent { /** * The type of interaction being performed. */ - type: 'drag' | 'resize' | 'drop'; + type: 'drag' | 'resize'; /** * The id of the panel being interacted with. @@ -102,3 +105,29 @@ export interface PanelInteractionEvent { bottom: number; }; } + +/** + * The external API provided through the GridLayout component + */ +export interface GridLayoutApi { + addPanel: (panelId: string, placementSettings: PanelPlacementSettings) => void; + removePanel: (panelId: string) => void; + replacePanel: (oldPanelId: string, newPanelId: string) => void; + + getPanelCount: () => number; + serializeState: () => GridLayoutData & SerializableRecord; +} + +// TODO: Remove from Dashboard plugin as part of https://github.com/elastic/kibana/issues/190446 +export enum PanelPlacementStrategy { + /** Place on the very top of the grid layout, add the height of this panel to all other panels. */ + placeAtTop = 'placeAtTop', + /** Look for the smallest y and x value where the default panel will fit. */ + findTopLeftMostOpenSpace = 'findTopLeftMostOpenSpace', +} + +export interface PanelPlacementSettings { + strategy?: PanelPlacementStrategy; + height: number; + width: number; +} diff --git a/packages/kbn-grid-layout/grid/use_grid_layout_api.ts b/packages/kbn-grid-layout/grid/use_grid_layout_api.ts new file mode 100644 index 0000000000000..1a950ee934174 --- /dev/null +++ b/packages/kbn-grid-layout/grid/use_grid_layout_api.ts @@ -0,0 +1,109 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { useMemo } from 'react'; +import { cloneDeep } from 'lodash'; + +import { SerializableRecord } from '@kbn/utility-types'; + +import { GridLayoutApi, GridLayoutData, GridLayoutStateManager } from './types'; +import { compactGridRow } from './utils/resolve_grid_row'; +import { runPanelPlacementStrategy } from './utils/run_panel_placement'; + +export const useGridLayoutApi = ({ + gridLayoutStateManager, +}: { + gridLayoutStateManager: GridLayoutStateManager; +}): GridLayoutApi => { + const api: GridLayoutApi = useMemo(() => { + return { + addPanel: (panelId, placementSettings) => { + const currentLayout = gridLayoutStateManager.gridLayout$.getValue(); + const [firstRow, ...rest] = currentLayout; // currently, only adding panels to the first row is supported + const { columnCount: gridColumnCount } = gridLayoutStateManager.runtimeSettings$.getValue(); + const nextRow = runPanelPlacementStrategy( + firstRow, + { + id: panelId, + width: placementSettings.width, + height: placementSettings.height, + }, + gridColumnCount, + placementSettings?.strategy + ); + gridLayoutStateManager.gridLayout$.next([nextRow, ...rest]); + }, + + removePanel: (panelId) => { + const currentLayout = gridLayoutStateManager.gridLayout$.getValue(); + + // find the row where the panel exists and delete it from the corresponding panels object + let rowIndex = 0; + let updatedPanels; + for (rowIndex; rowIndex < currentLayout.length; rowIndex++) { + const row = currentLayout[rowIndex]; + if (Object.keys(row.panels).includes(panelId)) { + updatedPanels = { ...row.panels }; // prevent mutation of original panel object + delete updatedPanels[panelId]; + break; + } + } + + // if the panels were updated (i.e. the panel was successfully found and deleted), update the layout + if (updatedPanels) { + const newLayout = cloneDeep(currentLayout); + newLayout[rowIndex] = compactGridRow({ + ...newLayout[rowIndex], + panels: updatedPanels, + }); + gridLayoutStateManager.gridLayout$.next(newLayout); + } + }, + + replacePanel: (oldPanelId, newPanelId) => { + const currentLayout = gridLayoutStateManager.gridLayout$.getValue(); + + // find the row where the panel exists and update its ID to trigger a re-render + let rowIndex = 0; + let updatedPanels; + for (rowIndex; rowIndex < currentLayout.length; rowIndex++) { + const row = { ...currentLayout[rowIndex] }; + if (Object.keys(row.panels).includes(oldPanelId)) { + updatedPanels = { ...row.panels }; // prevent mutation of original panel object + const oldPanel = updatedPanels[oldPanelId]; + delete updatedPanels[oldPanelId]; + updatedPanels[newPanelId] = { ...oldPanel, id: newPanelId }; + break; + } + } + + // if the panels were updated (i.e. the panel was successfully found and replaced), update the layout + if (updatedPanels) { + const newLayout = cloneDeep(currentLayout); + newLayout[rowIndex].panels = updatedPanels; + gridLayoutStateManager.gridLayout$.next(newLayout); + } + }, + + getPanelCount: () => { + return gridLayoutStateManager.gridLayout$.getValue().reduce((prev, row) => { + return prev + Object.keys(row.panels).length; + }, 0); + }, + + serializeState: () => { + const currentLayout = gridLayoutStateManager.gridLayout$.getValue(); + return cloneDeep(currentLayout) as GridLayoutData & SerializableRecord; + }, + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return api; +}; diff --git a/packages/kbn-grid-layout/grid/use_grid_layout_events.ts b/packages/kbn-grid-layout/grid/use_grid_layout_events.ts index bd6343b9e5652..22dde2fe68ced 100644 --- a/packages/kbn-grid-layout/grid/use_grid_layout_events.ts +++ b/packages/kbn-grid-layout/grid/use_grid_layout_events.ts @@ -7,21 +7,11 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { useEffect, useRef } from 'react'; import deepEqual from 'fast-deep-equal'; - -import { resolveGridRow } from './resolve_grid_row'; -import { GridLayoutStateManager, GridPanelData } from './types'; - -export const isGridDataEqual = (a?: GridPanelData, b?: GridPanelData) => { - return ( - a?.id === b?.id && - a?.column === b?.column && - a?.row === b?.row && - a?.width === b?.width && - a?.height === b?.height - ); -}; +import { useEffect, useRef } from 'react'; +import { resolveGridRow } from './utils/resolve_grid_row'; +import { GridPanelData, GridLayoutStateManager } from './types'; +import { isGridDataEqual } from './utils/equality_checks'; export const useGridLayoutEvents = ({ gridLayoutStateManager, @@ -37,7 +27,7 @@ export const useGridLayoutEvents = ({ useEffect(() => { const { runtimeSettings$, interactionEvent$, gridLayout$ } = gridLayoutStateManager; const calculateUserEvent = (e: Event) => { - if (!interactionEvent$.value || interactionEvent$.value.type === 'drop') return; + if (!interactionEvent$.value) return; e.preventDefault(); e.stopPropagation(); diff --git a/packages/kbn-grid-layout/grid/utils/equality_checks.ts b/packages/kbn-grid-layout/grid/utils/equality_checks.ts new file mode 100644 index 0000000000000..6771baa3a1030 --- /dev/null +++ b/packages/kbn-grid-layout/grid/utils/equality_checks.ts @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { GridLayoutData, GridPanelData } from '../types'; + +export const isGridDataEqual = (a?: GridPanelData, b?: GridPanelData) => { + return ( + a?.id === b?.id && + a?.column === b?.column && + a?.row === b?.row && + a?.width === b?.width && + a?.height === b?.height + ); +}; + +export const isLayoutEqual = (a: GridLayoutData, b: GridLayoutData) => { + if (a.length !== b.length) return false; + + let isEqual = true; + for (let rowIndex = 0; rowIndex < a.length && isEqual; rowIndex++) { + const rowA = a[rowIndex]; + const rowB = b[rowIndex]; + + isEqual = + rowA.title === rowB.title && + rowA.isCollapsed === rowB.isCollapsed && + Object.keys(rowA.panels).length === Object.keys(rowB.panels).length; + + if (isEqual) { + for (const panelKey of Object.keys(rowA.panels)) { + isEqual = isGridDataEqual(rowA.panels[panelKey], rowB.panels[panelKey]); + if (!isEqual) break; + } + } + } + + return isEqual; +}; diff --git a/packages/kbn-grid-layout/grid/resolve_grid_row.ts b/packages/kbn-grid-layout/grid/utils/resolve_grid_row.ts similarity index 96% rename from packages/kbn-grid-layout/grid/resolve_grid_row.ts rename to packages/kbn-grid-layout/grid/utils/resolve_grid_row.ts index 4c300336c7617..3037a52c27c69 100644 --- a/packages/kbn-grid-layout/grid/resolve_grid_row.ts +++ b/packages/kbn-grid-layout/grid/utils/resolve_grid_row.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { GridPanelData, GridRowData } from './types'; +import { GridPanelData, GridRowData } from '../types'; const collides = (panelA: GridPanelData, panelB: GridPanelData) => { if (panelA.id === panelB.id) return false; // same panel @@ -57,7 +57,7 @@ const getKeysInOrder = (rowData: GridRowData, draggedId?: string): string[] => { }); }; -const compactGridRow = (originalLayout: GridRowData) => { +export const compactGridRow = (originalLayout: GridRowData) => { const nextRowData = { ...originalLayout, panels: { ...originalLayout.panels } }; // compact all vertical space. const sortedKeysAfterMove = getKeysInOrder(nextRowData); diff --git a/packages/kbn-grid-layout/grid/utils/run_panel_placement.ts b/packages/kbn-grid-layout/grid/utils/run_panel_placement.ts new file mode 100644 index 0000000000000..69ecddd1f5ffb --- /dev/null +++ b/packages/kbn-grid-layout/grid/utils/run_panel_placement.ts @@ -0,0 +1,116 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ +import { i18n } from '@kbn/i18n'; +import { GridRowData } from '../..'; +import { GridPanelData, PanelPlacementStrategy } from '../types'; +import { compactGridRow, resolveGridRow } from './resolve_grid_row'; + +export const runPanelPlacementStrategy = ( + originalRowData: GridRowData, + newPanel: Omit, + columnCount: number, + strategy: PanelPlacementStrategy = PanelPlacementStrategy.findTopLeftMostOpenSpace +): GridRowData => { + const nextRowData = { ...originalRowData, panels: { ...originalRowData.panels } }; // prevent mutation of original row object + switch (strategy) { + case PanelPlacementStrategy.placeAtTop: + // move all other panels down by the height of the new panel to make room for the new panel + Object.keys(nextRowData.panels).forEach((key) => { + const panel = nextRowData.panels[key]; + panel.row += newPanel.height; + }); + + // some panels might need to be pushed back up because they are now floating - so, compact the row + return compactGridRow({ + ...nextRowData, + // place the new panel at the top left corner, since there is now space + panels: { ...nextRowData.panels, [newPanel.id]: { ...newPanel, row: 0, column: 0 } }, + }); + + case PanelPlacementStrategy.findTopLeftMostOpenSpace: + // find the max row + let maxRow = -1; + const currentPanelsArray = Object.values(nextRowData.panels); + currentPanelsArray.forEach((panel) => { + maxRow = Math.max(panel.row + panel.height, maxRow); + }); + + // handle case of empty grid by placing the panel at the top left corner + if (maxRow < 0) { + return { + ...nextRowData, + panels: { [newPanel.id]: { ...newPanel, row: 0, column: 0 } }, + }; + } + + // find a spot in the grid where the entire panel will fit + const { row, column } = (() => { + // create a 2D array representation of the grid filled with zeros + const grid = new Array(maxRow); + for (let y = 0; y < maxRow; y++) { + grid[y] = new Array(columnCount).fill(0); + } + + // fill in the 2D array with ones wherever a panel is + currentPanelsArray.forEach((panel) => { + for (let x = panel.column; x < panel.column + panel.width; x++) { + for (let y = panel.row; y < panel.row + panel.height; y++) { + grid[y][x] = 1; + } + } + }); + + // now find the first empty spot where there are enough zeros (unoccupied spaces) to fit the whole panel + for (let y = 0; y < maxRow; y++) { + for (let x = 0; x < columnCount; x++) { + if (grid[y][x] === 1) { + // space is filled, so skip this spot + continue; + } else { + for (let h = y; h < Math.min(y + newPanel.height, maxRow); h++) { + for (let w = x; w < Math.min(x + newPanel.width, columnCount); w++) { + const spaceIsEmpty = grid[h][w] === 0; + const fitsPanelWidth = w === x + newPanel.width - 1; + // if the panel is taller than any other panel in the current grid, it can still fit in the space, hence + // we check the minimum of maxY and the panel height. + const fitsPanelHeight = h === Math.min(y + newPanel.height - 1, maxRow - 1); + + if (spaceIsEmpty && fitsPanelWidth && fitsPanelHeight) { + // found an empty space where the entire panel will fit + return { column: x, row: y }; + } else if (grid[h][w] === 1) { + // x, y is already occupied - break out of the loop and move on to the next starting point + break; + } + } + } + } + } + } + + return { column: 0, row: maxRow }; + })(); + + // some panels might need to be pushed down to accomodate the height of the new panel; + // so, resolve the entire row to remove any potential collisions + return resolveGridRow({ + ...nextRowData, + // place the new panel at the top left corner, since there is now space + panels: { ...nextRowData.panels, [newPanel.id]: { ...newPanel, row, column } }, + }); + + default: + throw new Error( + i18n.translate('kbnGridLayout.panelPlacement.unknownStrategyError', { + defaultMessage: 'Unknown panel placement strategy: {strategy}', + values: { strategy }, + }) + ); + } +}; diff --git a/packages/kbn-grid-layout/index.ts b/packages/kbn-grid-layout/index.ts index 009b74573e895..924369fe5ab4c 100644 --- a/packages/kbn-grid-layout/index.ts +++ b/packages/kbn-grid-layout/index.ts @@ -8,4 +8,12 @@ */ export { GridLayout } from './grid/grid_layout'; -export type { GridLayoutData, GridPanelData, GridRowData, GridSettings } from './grid/types'; +export type { + GridLayoutApi, + GridLayoutData, + GridPanelData, + GridRowData, + GridSettings, +} from './grid/types'; + +export { isLayoutEqual } from './grid/utils/equality_checks'; diff --git a/packages/kbn-grid-layout/tsconfig.json b/packages/kbn-grid-layout/tsconfig.json index f0dd3232a42d5..14ab38ba76ba9 100644 --- a/packages/kbn-grid-layout/tsconfig.json +++ b/packages/kbn-grid-layout/tsconfig.json @@ -19,5 +19,6 @@ "kbn_references": [ "@kbn/ui-theme", "@kbn/i18n", + "@kbn/utility-types", ] } From 62d16709e42e9282dc7235bb4a4fb6b008483021 Mon Sep 17 00:00:00 2001 From: Sander Philipse <94373878+sphilipse@users.noreply.github.com> Date: Tue, 5 Nov 2024 19:19:11 +0100 Subject: [PATCH 53/57] [Search] Enable AI Assistant in Search solution view (#198941) ## Summary This enables the Observability AI Assistant (which is also the Search AI Assistant) in the Search solution view. --- .../utils/space_solution_disabled_features.ts | 17 ++++++++++++++--- .../common/suites/create.ts | 1 - .../spaces_api_integration/common/suites/get.ts | 1 - .../common/suites/get_all.ts | 1 - 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/x-pack/plugins/spaces/server/lib/utils/space_solution_disabled_features.ts b/x-pack/plugins/spaces/server/lib/utils/space_solution_disabled_features.ts index 4e66260f3d057..066166e7e87dd 100644 --- a/x-pack/plugins/spaces/server/lib/utils/space_solution_disabled_features.ts +++ b/x-pack/plugins/spaces/server/lib/utils/space_solution_disabled_features.ts @@ -4,6 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import type { SolutionId } from '@kbn/core-chrome-browser'; import type { KibanaFeature } from '@kbn/features-plugin/server'; import type { SolutionView } from '../../../common'; @@ -23,6 +24,16 @@ const getFeatureIdsForCategories = ( .map((feature) => feature.id); }; +/** + * These features will be enabled per solution view, even if they fall under a category that is disabled in the solution. + */ + +const enabledFeaturesPerSolution: Record = { + es: ['observabilityAIAssistant'], + oblt: [], + security: [], +}; + /** * When a space has a `solution` defined, we want to disable features that are not part of that solution. * This function takes the current space's disabled features and the space solution and returns @@ -47,17 +58,17 @@ export function withSpaceSolutionDisabledFeatures( disabledFeatureKeysFromSolution = getFeatureIdsForCategories(features, [ 'observability', 'securitySolution', - ]); + ]).filter((featureId) => !enabledFeaturesPerSolution.es.includes(featureId)); } else if (spaceSolution === 'oblt') { disabledFeatureKeysFromSolution = getFeatureIdsForCategories(features, [ 'enterpriseSearch', 'securitySolution', - ]); + ]).filter((featureId) => !enabledFeaturesPerSolution.oblt.includes(featureId)); } else if (spaceSolution === 'security') { disabledFeatureKeysFromSolution = getFeatureIdsForCategories(features, [ 'observability', 'enterpriseSearch', - ]); + ]).filter((featureId) => !enabledFeaturesPerSolution.security.includes(featureId)); } return Array.from(new Set([...disabledFeatureKeysFromSolution])); diff --git a/x-pack/test/spaces_api_integration/common/suites/create.ts b/x-pack/test/spaces_api_integration/common/suites/create.ts index 3c65ba8aba156..795d177805f89 100644 --- a/x-pack/test/spaces_api_integration/common/suites/create.ts +++ b/x-pack/test/spaces_api_integration/common/suites/create.ts @@ -80,7 +80,6 @@ export function createTestSuiteFactory(esArchiver: any, supertest: SuperTest) 'infrastructure', 'inventory', 'logs', - 'observabilityAIAssistant', 'observabilityCases', 'securitySolutionAssistant', 'securitySolutionAttackDiscovery', diff --git a/x-pack/test/spaces_api_integration/common/suites/get_all.ts b/x-pack/test/spaces_api_integration/common/suites/get_all.ts index 236c98d9364b9..b90128ab12c70 100644 --- a/x-pack/test/spaces_api_integration/common/suites/get_all.ts +++ b/x-pack/test/spaces_api_integration/common/suites/get_all.ts @@ -79,7 +79,6 @@ const ALL_SPACE_RESULTS: Space[] = [ 'infrastructure', 'inventory', 'logs', - 'observabilityAIAssistant', 'observabilityCases', 'securitySolutionAssistant', 'securitySolutionAttackDiscovery', From 26f24c66b5843f5d2c4340dd442c4ddfd375793f Mon Sep 17 00:00:00 2001 From: Carlos Crespo Date: Tue, 5 Nov 2024 19:39:58 +0100 Subject: [PATCH 54/57] [Infra] API tests deployment agnostic (#198257) closes [#198015](https://github.com/elastic/kibana/issues/198015) ## Summary Migrate most of the infra APIs integration tests to the deployment-agnostic approach. >[!important] > - Metrics UI related tests were note migrated because the feature is not enabled on serverless. > - `Host with active alerts` test was not migrated because `es_archiver` fails to load the alerts data. This is because on serverless, the alerts indices are created as managed data streams and that causes the `es_archiver` to fail. We should probably try use synthtrace. - [x] Tested against MKI - [x] Tested against stateful --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Elastic Machine --- .github/CODEOWNERS | 5 +- .../client/apm_synthtrace_kibana_client.ts | 10 +- .../api_integration/apis/logs_ui/index.ts | 3 + ...analysis_validation_log_entry_datasets.ts} | 0 .../log_entry_highlights.ts | 0 .../{metrics_ui => logs_ui}/log_summary.ts | 0 .../apis/logs_ui/log_threshold_alert.ts | 2 +- .../apis/logs_ui/utils/constants.ts | 24 + .../apis/metrics_ui/helpers.ts | 87 - .../apis/metrics_ui/http_source.ts | 61 - .../api_integration/apis/metrics_ui/index.ts | 15 + .../api_integration/apis/metrics_ui/infra.ts | 232 +- .../apis/metrics_ui/ip_to_hostname.ts | 45 - .../apis/metrics_ui/metric_threshold_alert.ts | 123 +- .../apis/metrics_ui/metrics_alerting.ts | 130 - .../apis/metrics_ui/metrics_explorer.ts | 4 +- .../apis/metrics_ui/{ => utils}/constants.ts | 0 .../{ => utils}/create_fake_logger.ts | 0 .../dataset_quality/data_stream_rollover.ts | 10 +- .../dataset_quality/data_stream_settings.ts | 13 +- .../dataset_quality/degraded_field_analyze.ts | 15 +- .../dataset_quality/update_field_limit.ts | 10 +- .../apis/observability/infra/index.ts} | 16 +- .../apis/observability/infra/infra.ts | 255 + .../observability/infra/infra_asset_count.ts | 89 + .../infra}/infra_custom_dashboards.ts | 76 +- .../infra}/inventory_threshold_alert.ts | 8 +- .../observability/infra/ip_to_hostname.ts | 51 + .../apis/observability/infra}/metadata.ts | 52 +- .../infra}/metrics_overview_top.ts | 33 +- .../infra}/metrics_process_list.ts | 30 +- .../infra}/metrics_process_list_chart.ts | 29 +- .../apis/observability/infra/node_details.ts} | 30 +- .../apis/observability/infra}/services.ts | 120 +- .../apis/observability/infra}/snapshot.ts | 47 +- .../apis/observability/infra}/sources.ts | 99 +- .../observability/infra/utils/constants.ts | 61 + .../infra/utils/create_fake_logger.ts | 27 + .../configs/serverless/oblt.index.ts | 1 + .../configs/stateful/oblt.index.ts | 1 + .../deployment_agnostic/services/index.ts | 4 +- .../services/role_scoped_supertest.ts | 6 +- .../services/synthtrace.ts | 46 + .../services/apm_synthtrace_kibana_client.ts | 4 +- .../serverless_testing_host/data.json.gz | Bin 3429 -> 0 bytes .../serverless_testing_host/mappings.json | 26353 ---------------- .../observability/config.feature_flags.ts | 1 - .../observability/index.feature_flags.ts | 1 - .../observability/infra/asset_count.ts | 91 - .../observability/infra/constants.ts | 19 - .../test_suites/observability/infra/index.ts | 22 - .../test_suites/observability/infra/infra.ts | 129 - .../observability/infra/metadata.ts | 132 - .../observability/infra/processes.ts | 67 - .../observability/infra/snapshot.ts | 91 - x-pack/test_serverless/tsconfig.json | 1 - 56 files changed, 1114 insertions(+), 27667 deletions(-) rename x-pack/test/api_integration/apis/{metrics_ui/infra_log_analysis_validation_log_entry_datasets.ts => logs_ui/log_analysis_validation_log_entry_datasets.ts} (100%) rename x-pack/test/api_integration/apis/{metrics_ui => logs_ui}/log_entry_highlights.ts (100%) rename x-pack/test/api_integration/apis/{metrics_ui => logs_ui}/log_summary.ts (100%) create mode 100644 x-pack/test/api_integration/apis/logs_ui/utils/constants.ts delete mode 100644 x-pack/test/api_integration/apis/metrics_ui/helpers.ts delete mode 100644 x-pack/test/api_integration/apis/metrics_ui/http_source.ts create mode 100644 x-pack/test/api_integration/apis/metrics_ui/index.ts delete mode 100644 x-pack/test/api_integration/apis/metrics_ui/ip_to_hostname.ts delete mode 100644 x-pack/test/api_integration/apis/metrics_ui/metrics_alerting.ts rename x-pack/test/api_integration/apis/metrics_ui/{ => utils}/constants.ts (100%) rename x-pack/test/api_integration/apis/metrics_ui/{ => utils}/create_fake_logger.ts (100%) rename x-pack/test/api_integration/{apis/metrics_ui/index.js => deployment_agnostic/apis/observability/infra/index.ts} (60%) create mode 100644 x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/infra.ts create mode 100644 x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/infra_asset_count.ts rename x-pack/test/api_integration/{apis/metrics_ui => deployment_agnostic/apis/observability/infra}/infra_custom_dashboards.ts (84%) rename x-pack/test/api_integration/{apis/metrics_ui => deployment_agnostic/apis/observability/infra}/inventory_threshold_alert.ts (98%) create mode 100644 x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/ip_to_hostname.ts rename x-pack/test/api_integration/{apis/metrics_ui => deployment_agnostic/apis/observability/infra}/metadata.ts (88%) rename x-pack/test/api_integration/{apis/metrics_ui => deployment_agnostic/apis/observability/infra}/metrics_overview_top.ts (73%) rename x-pack/test/api_integration/{apis/metrics_ui => deployment_agnostic/apis/observability/infra}/metrics_process_list.ts (58%) rename x-pack/test/api_integration/{apis/metrics_ui => deployment_agnostic/apis/observability/infra}/metrics_process_list_chart.ts (58%) rename x-pack/test/api_integration/{apis/metrics_ui/metrics.ts => deployment_agnostic/apis/observability/infra/node_details.ts} (77%) rename x-pack/test/api_integration/{apis/metrics_ui => deployment_agnostic/apis/observability/infra}/services.ts (51%) rename x-pack/test/api_integration/{apis/metrics_ui => deployment_agnostic/apis/observability/infra}/snapshot.ts (95%) rename x-pack/test/api_integration/{apis/metrics_ui => deployment_agnostic/apis/observability/infra}/sources.ts (70%) create mode 100644 x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/utils/constants.ts create mode 100644 x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/utils/create_fake_logger.ts create mode 100644 x-pack/test/api_integration/deployment_agnostic/services/synthtrace.ts delete mode 100644 x-pack/test/functional/es_archives/infra/serverless_testing_host/data.json.gz delete mode 100644 x-pack/test/functional/es_archives/infra/serverless_testing_host/mappings.json delete mode 100644 x-pack/test_serverless/api_integration/test_suites/observability/infra/asset_count.ts delete mode 100644 x-pack/test_serverless/api_integration/test_suites/observability/infra/constants.ts delete mode 100644 x-pack/test_serverless/api_integration/test_suites/observability/infra/index.ts delete mode 100644 x-pack/test_serverless/api_integration/test_suites/observability/infra/infra.ts delete mode 100644 x-pack/test_serverless/api_integration/test_suites/observability/infra/metadata.ts delete mode 100644 x-pack/test_serverless/api_integration/test_suites/observability/infra/processes.ts delete mode 100644 x-pack/test_serverless/api_integration/test_suites/observability/infra/snapshot.ts diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 1aa57cc822b23..43a315646772d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1023,7 +1023,7 @@ packages/kbn-zod-helpers @elastic/security-detection-rule-management # The #CC# prefix delineates Code Coverage, # used for the 'team' designator within Kibana Stats -/x-pack/test/api_integration/apis/metrics_ui @elastic/obs-ux-logs-team @elastic/obs-ux-infra_services-team +/x-pack/test/api_integration/apis/metrics_ui @elastic/obs-ux-infra_services-team x-pack/test_serverless/api_integration/test_suites/common/platform_security @elastic/kibana-security # Observability Entities Team (@elastic/obs-entities) @@ -1157,7 +1157,7 @@ x-pack/test/observability_ai_assistant_api_integration @elastic/obs-ai-assistant x-pack/test/observability_ai_assistant_functional @elastic/obs-ai-assistant x-pack/test_serverless/**/test_suites/observability/ai_assistant @elastic/obs-ai-assistant -# Infra Monitoring +# Infra Obs ## This plugin mostly contains the codebase for the infra services, but also includes some code for the Logs UI app. ## To keep @elastic/obs-ux-logs-team as codeowner of the plugin manifest without requiring a review for all the other code changes ## the priority on codeownership will be as follow: @@ -1188,6 +1188,7 @@ x-pack/test_serverless/**/test_suites/observability/ai_assistant @elastic/obs-ai /x-pack/plugins/observability_solution/infra/server/services @elastic/obs-ux-infra_services-team /x-pack/plugins/observability_solution/infra/server/usage @elastic/obs-ux-infra_services-team /x-pack/plugins/observability_solution/infra/server/utils @elastic/obs-ux-infra_services-team +/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra @elastic/obs-ux-logs-team ## Logs UI code exceptions -> @elastic/obs-ux-logs-team /x-pack/test_serverless/functional/page_objects/svl_oblt_onboarding_stream_log_file.ts @elastic/obs-ux-logs-team diff --git a/packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts b/packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts index 307f43932e94b..e9e5add3db075 100644 --- a/packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts +++ b/packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts @@ -16,10 +16,12 @@ import { getFetchAgent } from '../../../cli/utils/ssl'; export class ApmSynthtraceKibanaClient { private readonly logger: Logger; private target: string; + private headers: Record; - constructor(options: { logger: Logger; target: string }) { + constructor(options: { logger: Logger; target: string; headers?: Record }) { this.logger = options.logger; this.target = options.target; + this.headers = { ...kibanaHeaders(), ...(options.headers ?? {}) }; } getFleetApmPackagePath(packageVersion?: string): string { @@ -39,7 +41,7 @@ export class ApmSynthtraceKibanaClient { const response = await fetch(url, { method: 'GET', - headers: kibanaHeaders(), + headers: this.headers, agent: getFetchAgent(url), }); @@ -79,7 +81,7 @@ export class ApmSynthtraceKibanaClient { async () => { const res = await fetch(url, { method: 'POST', - headers: kibanaHeaders(), + headers: this.headers, body: '{"force":true}', agent: getFetchAgent(url), }); @@ -127,7 +129,7 @@ export class ApmSynthtraceKibanaClient { async () => { const res = await fetch(url, { method: 'DELETE', - headers: kibanaHeaders(), + headers: this.headers, body: '{"force":true}', agent: getFetchAgent(url), }); diff --git a/x-pack/test/api_integration/apis/logs_ui/index.ts b/x-pack/test/api_integration/apis/logs_ui/index.ts index 625ff24ce25cd..694698d41f3b6 100644 --- a/x-pack/test/api_integration/apis/logs_ui/index.ts +++ b/x-pack/test/api_integration/apis/logs_ui/index.ts @@ -11,5 +11,8 @@ export default function ({ loadTestFile }: FtrProviderContext) { describe('Logs UI routes', () => { loadTestFile(require.resolve('./log_views')); loadTestFile(require.resolve('./log_threshold_alert')); + loadTestFile(require.resolve('./log_entry_highlights')); + loadTestFile(require.resolve('./log_summary')); + loadTestFile(require.resolve('./log_analysis_validation_log_entry_datasets')); }); } diff --git a/x-pack/test/api_integration/apis/metrics_ui/infra_log_analysis_validation_log_entry_datasets.ts b/x-pack/test/api_integration/apis/logs_ui/log_analysis_validation_log_entry_datasets.ts similarity index 100% rename from x-pack/test/api_integration/apis/metrics_ui/infra_log_analysis_validation_log_entry_datasets.ts rename to x-pack/test/api_integration/apis/logs_ui/log_analysis_validation_log_entry_datasets.ts diff --git a/x-pack/test/api_integration/apis/metrics_ui/log_entry_highlights.ts b/x-pack/test/api_integration/apis/logs_ui/log_entry_highlights.ts similarity index 100% rename from x-pack/test/api_integration/apis/metrics_ui/log_entry_highlights.ts rename to x-pack/test/api_integration/apis/logs_ui/log_entry_highlights.ts diff --git a/x-pack/test/api_integration/apis/metrics_ui/log_summary.ts b/x-pack/test/api_integration/apis/logs_ui/log_summary.ts similarity index 100% rename from x-pack/test/api_integration/apis/metrics_ui/log_summary.ts rename to x-pack/test/api_integration/apis/logs_ui/log_summary.ts diff --git a/x-pack/test/api_integration/apis/logs_ui/log_threshold_alert.ts b/x-pack/test/api_integration/apis/logs_ui/log_threshold_alert.ts index a9d3678da702e..8693e902c18ad 100644 --- a/x-pack/test/api_integration/apis/logs_ui/log_threshold_alert.ts +++ b/x-pack/test/api_integration/apis/logs_ui/log_threshold_alert.ts @@ -18,7 +18,7 @@ import { RatioCriteria, RuleParams, } from '@kbn/infra-plugin/common/alerting/logs/log_threshold/types'; -import { DATES } from '../metrics_ui/constants'; +import { DATES } from './utils/constants'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { diff --git a/x-pack/test/api_integration/apis/logs_ui/utils/constants.ts b/x-pack/test/api_integration/apis/logs_ui/utils/constants.ts new file mode 100644 index 0000000000000..bce30fe2d0408 --- /dev/null +++ b/x-pack/test/api_integration/apis/logs_ui/utils/constants.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const DATES = { + 'alert-test-data': { + gauge: { + min: 1609459200000, // '2022-01-01T00:00:00Z' + max: 1609462800000, // '2021-01-01T01:00:00Z', + midpoint: 1609461000000, // '2021-01-01T00:30:00Z' + }, + rate: { + min: 1609545600000, // '2021-01-02T00:00:00Z' + max: 1609545900000, // '2021-01-02T00:05:00Z' + }, + }, + ten_thousand_plus: { + min: 1634604480001, // 2021-10-19T00:48:00.001Z + max: 1634604839997, // 2021-10-19T00:53:59.997Z + }, +}; diff --git a/x-pack/test/api_integration/apis/metrics_ui/helpers.ts b/x-pack/test/api_integration/apis/metrics_ui/helpers.ts deleted file mode 100644 index 427909e10ac94..0000000000000 --- a/x-pack/test/api_integration/apis/metrics_ui/helpers.ts +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { apm, timerange } from '@kbn/apm-synthtrace-client'; - -// generates traces, metrics for services -export function generateServicesData({ - from, - to, - instanceCount = 1, - servicesPerHost = 1, -}: { - from: string; - to: string; - instanceCount?: number; - servicesPerHost?: number; -}) { - const range = timerange(from, to); - const services = Array(instanceCount) - .fill(null) - .flatMap((_, hostIdx) => - Array(servicesPerHost) - .fill(null) - .map((__, serviceIdx) => - apm - .service({ - name: `service-${hostIdx}-${serviceIdx}`, - environment: 'production', - agentName: 'nodejs', - }) - .instance(`host-${hostIdx}`) - ) - ); - return range - .interval('1m') - .rate(1) - .generator((timestamp, index) => - services.map((service) => - service - .transaction({ transactionName: 'GET /foo' }) - .timestamp(timestamp) - .duration(500) - .success() - ) - ); -} -// generates error logs only for services -export function generateServicesLogsOnlyData({ - from, - to, - instanceCount = 1, - servicesPerHost = 1, -}: { - from: string; - to: string; - instanceCount?: number; - servicesPerHost?: number; -}) { - const range = timerange(from, to); - const services = Array(instanceCount) - .fill(null) - .flatMap((_, hostIdx) => - Array(servicesPerHost) - .fill(null) - .map((__, serviceIdx) => - apm - .service({ - name: `service-${hostIdx}-${serviceIdx}`, - environment: 'production', - agentName: 'go', - }) - .instance(`host-${hostIdx}`) - ) - ); - return range - .interval('1m') - .rate(1) - .generator((timestamp, index) => - services.map((service) => - service.error({ message: 'error', type: 'My Type' }).timestamp(timestamp) - ) - ); -} diff --git a/x-pack/test/api_integration/apis/metrics_ui/http_source.ts b/x-pack/test/api_integration/apis/metrics_ui/http_source.ts deleted file mode 100644 index 1b298d79b8aa1..0000000000000 --- a/x-pack/test/api_integration/apis/metrics_ui/http_source.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; - -import { SourceResponse } from '@kbn/infra-plugin/server/lib/sources'; -import { FtrProviderContext } from '../../ftr_provider_context'; - -export default function ({ getService }: FtrProviderContext) { - const esArchiver = getService('esArchiver'); - const supertest = getService('supertest'); - const fetchSource = async (): Promise => { - const response = await supertest - .get('/api/metrics/source/default') - .set('kbn-xsrf', 'xxx') - .expect(200); - return response.body; - }; - const fetchHasData = async (): Promise<{ hasData: boolean } | undefined> => { - const response = await supertest - .get(`/api/metrics/source/default/hasData`) - .set('kbn-xsrf', 'xxx') - .expect(200); - return response.body; - }; - - describe('Source API via HTTP', () => { - describe('8.0.0', () => { - before(() => - esArchiver.load('x-pack/test/functional/es_archives/infra/8.0.0/logs_and_metrics') - ); - after(() => - esArchiver.unload('x-pack/test/functional/es_archives/infra/8.0.0/logs_and_metrics') - ); - describe('/api/metrics/source/default', () => { - it('should just work', async () => { - const resp = fetchSource(); - return resp.then((data) => { - expect(data).to.have.property('source'); - expect(data?.source.configuration.metricAlias).to.equal('metrics-*,metricbeat-*'); - expect(data?.source).to.have.property('status'); - expect(data?.source.status?.metricIndicesExist).to.equal(true); - }); - }); - }); - describe('/api/metrics/source/default/hasData', () => { - it('should just work', async () => { - const resp = fetchHasData(); - return resp.then((data) => { - expect(data).to.have.property('hasData'); - expect(data?.hasData).to.be(true); - }); - }); - }); - }); - }); -} diff --git a/x-pack/test/api_integration/apis/metrics_ui/index.ts b/x-pack/test/api_integration/apis/metrics_ui/index.ts new file mode 100644 index 0000000000000..6a74ea4cb9b82 --- /dev/null +++ b/x-pack/test/api_integration/apis/metrics_ui/index.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('MetricsUI Endpoints', () => { + loadTestFile(require.resolve('./metrics_explorer')); + loadTestFile(require.resolve('./metric_threshold_alert')); + }); +} diff --git a/x-pack/test/api_integration/apis/metrics_ui/infra.ts b/x-pack/test/api_integration/apis/metrics_ui/infra.ts index 457955354be62..c113c437b753e 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/infra.ts +++ b/x-pack/test/api_integration/apis/metrics_ui/infra.ts @@ -6,19 +6,12 @@ */ import expect from '@kbn/expect'; - -import { - GetInfraMetricsRequestBodyPayloadClient, - GetInfraMetricsResponsePayload, -} from '@kbn/infra-plugin/common/http_api/infra'; -import { DATES } from './constants'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { GetInfraMetricsRequestBodyPayloadClient } from '@kbn/infra-plugin/common/http_api/infra'; +import { DATES } from './utils/constants'; +import type { FtrProviderContext } from '../../ftr_provider_context'; const ENDPOINT = '/api/metrics/infra/host'; -const normalizeNewLine = (text: string) => { - return text.replaceAll(/(\s{2,}|\\n\\s)/g, ' '); -}; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const supertest = getService('supertest'); @@ -40,208 +33,25 @@ export default function ({ getService }: FtrProviderContext) { query: { bool: { must_not: [], filter: [], should: [], must: [] } }, }; - const makeRequest = async ({ - body, - invalidBody, - expectedHTTPCode, - }: { - body?: GetInfraMetricsRequestBodyPayloadClient; - invalidBody?: any; - expectedHTTPCode: number; - }) => { - return supertest - .post(ENDPOINT) - .set('kbn-xsrf', 'xxx') - .send(body ?? invalidBody) - .expect(expectedHTTPCode); - }; - describe('Hosts', () => { - before(() => - esArchiver.load('x-pack/test/functional/es_archives/infra/8.0.0/logs_and_metrics') - ); - after(() => - esArchiver.unload('x-pack/test/functional/es_archives/infra/8.0.0/logs_and_metrics') - ); - - describe('fetch hosts', () => { - it('should return metrics for a host', async () => { - const body: GetInfraMetricsRequestBodyPayloadClient = { ...basePayload, limit: 1 }; - const response = await makeRequest({ body, expectedHTTPCode: 200 }); - - expect(response.body.nodes).length(1); - expect(response.body.nodes).eql([ - { - metadata: [ - { name: 'host.os.name', value: 'CentOS Linux' }, - { name: 'cloud.provider', value: 'gcp' }, - { name: 'host.ip', value: null }, - ], - metrics: [ - { name: 'cpu', value: 0.44708333333333333 }, - { name: 'cpuV2', value: null }, - { name: 'diskSpaceUsage', value: null }, - { name: 'memory', value: 0.4563333333333333 }, - { name: 'memoryFree', value: 8573890560 }, - { name: 'normalizedLoad1m', value: 0.7375000000000002 }, - { name: 'rx', value: null }, - { name: 'tx', value: null }, - ], - hasSystemMetrics: true, - name: 'gke-observability-8--observability-8--bc1afd95-f0zc', - }, - ]); - }); - - it('should return all hosts if query params is not sent', async () => { - const body: GetInfraMetricsRequestBodyPayloadClient = { - ...basePayload, - metrics: ['memory'], - query: undefined, - }; - - const response = await makeRequest({ body, expectedHTTPCode: 200 }); - expect(response.body.nodes).eql([ - { - metadata: [ - { name: 'host.os.name', value: 'CentOS Linux' }, - { name: 'cloud.provider', value: 'gcp' }, - { name: 'host.ip', value: null }, - ], - metrics: [{ name: 'memory', value: 0.4563333333333333 }], - hasSystemMetrics: true, - name: 'gke-observability-8--observability-8--bc1afd95-f0zc', - }, - { - metadata: [ - { name: 'host.os.name', value: 'CentOS Linux' }, - { name: 'cloud.provider', value: 'gcp' }, - { name: 'host.ip', value: null }, - ], - metrics: [{ name: 'memory', value: 0.32066666666666666 }], - hasSystemMetrics: true, - name: 'gke-observability-8--observability-8--bc1afd95-ngmh', - }, - { - metadata: [ - { name: 'host.os.name', value: 'CentOS Linux' }, - { name: 'cloud.provider', value: 'gcp' }, - { name: 'host.ip', value: null }, - ], - metrics: [{ name: 'memory', value: 0.2346666666666667 }], - hasSystemMetrics: true, - name: 'gke-observability-8--observability-8--bc1afd95-nhhw', - }, - ]); - }); - - it('should return 3 hosts when filtered by "host.os.name=CentOS Linux"', async () => { - const body: GetInfraMetricsRequestBodyPayloadClient = { - ...basePayload, - metrics: ['cpuV2'], - query: { bool: { filter: [{ term: { 'host.os.name': 'CentOS Linux' } }] } }, - }; - const response = await makeRequest({ body, expectedHTTPCode: 200 }); - - const names = (response.body as GetInfraMetricsResponsePayload).nodes.map((p) => p.name); - expect(names).eql([ - 'gke-observability-8--observability-8--bc1afd95-f0zc', - 'gke-observability-8--observability-8--bc1afd95-ngmh', - 'gke-observability-8--observability-8--bc1afd95-nhhw', - ]); - }); - - it('should return 0 hosts when filtered by "host.os.name=Ubuntu"', async () => { - const body: GetInfraMetricsRequestBodyPayloadClient = { - ...basePayload, - metrics: ['cpuV2'], - query: { bool: { filter: [{ term: { 'host.os.name': 'Ubuntu' } }] } }, - }; - const response = await makeRequest({ body, expectedHTTPCode: 200 }); - - const names = (response.body as GetInfraMetricsResponsePayload).nodes.map((p) => p.name); - expect(names).eql([]); - }); - }); - - it('should return 0 hosts when filtered by not "host.name=gke-observability-8--observability-8--bc1afd95-nhhw"', async () => { - const body: GetInfraMetricsRequestBodyPayloadClient = { - ...basePayload, - metrics: ['cpuV2'], - query: { - bool: { - must_not: [ - { term: { 'host.name': 'gke-observability-8--observability-8--bc1afd95-nhhw' } }, - ], - }, - }, - }; - const response = await makeRequest({ body, expectedHTTPCode: 200 }); - - const names = (response.body as GetInfraMetricsResponsePayload).nodes.map((p) => p.name); - expect(names).eql([ - 'gke-observability-8--observability-8--bc1afd95-f0zc', - 'gke-observability-8--observability-8--bc1afd95-ngmh', - ]); - }); - - describe('endpoint validations', () => { - it('should fail when limit is 0', async () => { - const body: GetInfraMetricsRequestBodyPayloadClient = { ...basePayload, limit: 0 }; - const response = await makeRequest({ body, expectedHTTPCode: 400 }); - - expect(normalizeNewLine(response.body.message)).to.be( - '[request body]: Failed to validate: in limit: 0 does not match expected type InRange in limit: 0 does not match expected type pipe(undefined, BooleanFromString)' - ); - }); - - it('should fail when limit is negative', async () => { - const body: GetInfraMetricsRequestBodyPayloadClient = { ...basePayload, limit: -2 }; - const response = await makeRequest({ body, expectedHTTPCode: 400 }); - - expect(normalizeNewLine(response.body.message)).to.be( - '[request body]: Failed to validate: in limit: -2 does not match expected type InRange in limit: -2 does not match expected type pipe(undefined, BooleanFromString)' - ); - }); - - it('should fail when limit above 500', async () => { - const body: GetInfraMetricsRequestBodyPayloadClient = { ...basePayload, limit: 501 }; - const response = await makeRequest({ body, expectedHTTPCode: 400 }); - - expect(normalizeNewLine(response.body.message)).to.be( - '[request body]: Failed to validate: in limit: 501 does not match expected type InRange in limit: 501 does not match expected type pipe(undefined, BooleanFromString)' - ); - }); - - it('should fail when metric is invalid', async () => { - const invalidBody = { ...basePayload, metrics: ['any'] }; - const response = await makeRequest({ invalidBody, expectedHTTPCode: 400 }); - - expect(normalizeNewLine(response.body.message)).to.be( - '[request body]: Failed to validate: in metrics/0: "any" does not match expected type "cpu" | "cpuV2" | "normalizedLoad1m" | "diskSpaceUsage" | "memory" | "memoryFree" | "rx" | "tx" | "rxV2" | "txV2"' - ); - }); - - it('should pass when limit is 1', async () => { - const body: GetInfraMetricsRequestBodyPayloadClient = { ...basePayload, limit: 1 }; - await makeRequest({ body, expectedHTTPCode: 200 }); - }); - - it('should pass when limit is 500', async () => { - const body: GetInfraMetricsRequestBodyPayloadClient = { ...basePayload, limit: 500 }; - await makeRequest({ body, expectedHTTPCode: 200 }); - }); - - it('should fail when from and to are not informed', async () => { - const invalidBody = { ...basePayload, from: undefined, to: undefined }; - const response = await makeRequest({ invalidBody, expectedHTTPCode: 400 }); - - expect(normalizeNewLine(response.body.message)).to.be( - '[request body]: Failed to validate: in from: undefined does not match expected type isoToEpochRt in to: undefined does not match expected type isoToEpochRt' - ); - }); - }); - + const makeRequest = async ({ + body, + invalidBody, + expectedHTTPCode, + }: { + body?: GetInfraMetricsRequestBodyPayloadClient; + invalidBody?: any; + expectedHTTPCode: number; + }) => { + return supertest + .post(ENDPOINT) + .send(body ?? invalidBody) + .expect(expectedHTTPCode); + }; + + // TODO: This test fails on serverless because the alerts esarchiver is not loaded + // This happens because in serverless .alerts.* indicies are managed data streams + // and the esarchiver fails because the mapping.json is configured to create an index describe('Host with active alerts', () => { before(async () => { await Promise.all([ diff --git a/x-pack/test/api_integration/apis/metrics_ui/ip_to_hostname.ts b/x-pack/test/api_integration/apis/metrics_ui/ip_to_hostname.ts deleted file mode 100644 index 3a3e6172cdfcc..0000000000000 --- a/x-pack/test/api_integration/apis/metrics_ui/ip_to_hostname.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; - -export default function ipToHostNameTest({ getService }: FtrProviderContext) { - const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); - - describe('Ip to Host API', () => { - before(() => esArchiver.load('x-pack/test/functional/es_archives/infra/metrics_and_logs')); - after(() => esArchiver.unload('x-pack/test/functional/es_archives/infra/metrics_and_logs')); - - it('should basically work', async () => { - const postBody = { - index_pattern: 'metricbeat-*', - ip: '10.128.0.7', - }; - const response = await supertest - .post('/api/infra/ip_to_host') - .set('kbn-xsrf', 'xxx') - .send(postBody) - .expect(200); - - expect(response.body).to.have.property('host', 'demo-stack-mysql-01'); - }); - - it('should return 404 for invalid ip', async () => { - const postBody = { - index_pattern: 'metricbeat-*', - ip: '192.168.1.1', - }; - return supertest - .post('/api/infra/ip_to_host') - .set('kbn-xsrf', 'xxx') - .send(postBody) - .expect(404); - }); - }); -} diff --git a/x-pack/test/api_integration/apis/metrics_ui/metric_threshold_alert.ts b/x-pack/test/api_integration/apis/metrics_ui/metric_threshold_alert.ts index 96aa8f91a2c9c..b91a2185eb728 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/metric_threshold_alert.ts +++ b/x-pack/test/api_integration/apis/metrics_ui/metric_threshold_alert.ts @@ -11,6 +11,7 @@ import { Aggregators, CountMetricExpressionParams, CustomMetricExpressionParams, + MetricExpressionParams, NonCountMetricExpressionParams, } from '@kbn/infra-plugin/common/alerting/metrics'; import { InfraSource } from '@kbn/infra-plugin/common/source_configuration/source_configuration'; @@ -19,11 +20,13 @@ import { evaluateRule, } from '@kbn/infra-plugin/server/lib/alerting/metric_threshold/lib/evaluate_rule'; import { COMPARATORS } from '@kbn/alerting-comparators'; -import { FtrProviderContext } from '../../ftr_provider_context'; -import { DATES } from './constants'; -import { createFakeLogger } from './create_fake_logger'; +import { getElasticsearchMetricQuery } from '@kbn/infra-plugin/server/lib/alerting/metric_threshold/lib/metric_query'; +import type { FtrProviderContext } from '../../ftr_provider_context'; +import { DATES } from './utils/constants'; +import { createFakeLogger } from './utils/create_fake_logger'; const { gauge, rate } = DATES['alert-test-data']; + export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const esClient = getService('es'); @@ -1341,5 +1344,119 @@ export default function ({ getService }: FtrProviderContext) { }); }); }); + describe('getElasticsearchMetricQuery', () => { + const index = 'test-index'; + const getSearchParams = (aggType: string) => + ({ + aggType, + timeUnit: 'm', + threshold: [0], + comparator: COMPARATORS.GREATER_THAN_OR_EQUALS, + timeSize: 5, + ...(aggType !== 'count' ? { metric: 'test.metric' } : {}), + } as MetricExpressionParams); + + before(async () => { + await esClient.index({ + index, + body: {}, + }); + }); + const aggs = ['avg', 'min', 'max', 'rate', 'cardinality', 'count']; + + describe('querying the entire infrastructure', () => { + for (const aggType of aggs) { + it(`should work with the ${aggType} aggregator`, async () => { + const timeframe = { + start: moment().subtract(25, 'minutes').valueOf(), + end: moment().valueOf(), + }; + const searchBody = getElasticsearchMetricQuery( + getSearchParams(aggType), + timeframe, + 100, + true + ); + const result = await esClient.search({ + index, + body: searchBody, + }); + + expect(result.hits).to.be.ok(); + if (aggType !== 'count') { + expect(result.aggregations).to.be.ok(); + } + }); + } + it('should work with a filterQuery', async () => { + const timeframe = { + start: moment().subtract(25, 'minutes').valueOf(), + end: moment().valueOf(), + }; + const searchBody = getElasticsearchMetricQuery( + getSearchParams('avg'), + timeframe, + 100, + true, + void 0, + '{"bool":{"should":[{"match_phrase":{"agent.hostname":"foo"}}],"minimum_should_match":1}}' + ); + const result = await esClient.search({ + index, + body: searchBody, + }); + + expect(result.hits).to.be.ok(); + expect(result.aggregations).to.be.ok(); + }); + }); + describe('querying with a groupBy parameter', () => { + for (const aggType of aggs) { + it(`should work with the ${aggType} aggregator`, async () => { + const timeframe = { + start: moment().subtract(25, 'minutes').valueOf(), + end: moment().valueOf(), + }; + const searchBody = getElasticsearchMetricQuery( + getSearchParams(aggType), + timeframe, + 100, + true, + void 0, + 'agent.id' + ); + const result = await esClient.search({ + index, + body: searchBody, + }); + + expect(result.hits).to.be.ok(); + expect(result.aggregations).to.be.ok(); + }); + } + it('should work with a filterQuery', async () => { + const timeframe = { + start: moment().subtract(25, 'minutes').valueOf(), + end: moment().valueOf(), + }; + const searchBody = getElasticsearchMetricQuery( + getSearchParams('avg'), + timeframe, + 100, + true, + void 0, + 'agent.id', + '{"bool":{"should":[{"match_phrase":{"agent.hostname":"foo"}}],"minimum_should_match":1}}' + ); + const result = await esClient.search({ + index, + body: searchBody, + }); + + expect(result.hits).to.be.ok(); + expect(result.aggregations).to.be.ok(); + }); + }); + }); }); } diff --git a/x-pack/test/api_integration/apis/metrics_ui/metrics_alerting.ts b/x-pack/test/api_integration/apis/metrics_ui/metrics_alerting.ts deleted file mode 100644 index a091a912f8cb5..0000000000000 --- a/x-pack/test/api_integration/apis/metrics_ui/metrics_alerting.ts +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import moment from 'moment'; -import { MetricExpressionParams } from '@kbn/infra-plugin/common/alerting/metrics'; -import { getElasticsearchMetricQuery } from '@kbn/infra-plugin/server/lib/alerting/metric_threshold/lib/metric_query'; -import { COMPARATORS } from '@kbn/alerting-comparators'; -import { FtrProviderContext } from '../../ftr_provider_context'; - -export default function ({ getService }: FtrProviderContext) { - const client = getService('es'); - const index = 'test-index'; - const getSearchParams = (aggType: string) => - ({ - aggType, - timeUnit: 'm', - threshold: [0], - comparator: COMPARATORS.GREATER_THAN_OR_EQUALS, - timeSize: 5, - ...(aggType !== 'count' ? { metric: 'test.metric' } : {}), - } as MetricExpressionParams); - describe('Metrics Threshold Alerts', () => { - before(async () => { - await client.index({ - index, - body: {}, - }); - }); - const aggs = ['avg', 'min', 'max', 'rate', 'cardinality', 'count']; - - describe('querying the entire infrastructure', () => { - for (const aggType of aggs) { - it(`should work with the ${aggType} aggregator`, async () => { - const timeframe = { - start: moment().subtract(25, 'minutes').valueOf(), - end: moment().valueOf(), - }; - const searchBody = getElasticsearchMetricQuery( - getSearchParams(aggType), - timeframe, - 100, - true - ); - const result = await client.search({ - index, - body: searchBody, - }); - - expect(result.hits).to.be.ok(); - if (aggType !== 'count') { - expect(result.aggregations).to.be.ok(); - } - }); - } - it('should work with a filterQuery', async () => { - const timeframe = { - start: moment().subtract(25, 'minutes').valueOf(), - end: moment().valueOf(), - }; - const searchBody = getElasticsearchMetricQuery( - getSearchParams('avg'), - timeframe, - 100, - true, - void 0, - '{"bool":{"should":[{"match_phrase":{"agent.hostname":"foo"}}],"minimum_should_match":1}}' - ); - const result = await client.search({ - index, - body: searchBody, - }); - - expect(result.hits).to.be.ok(); - expect(result.aggregations).to.be.ok(); - }); - }); - describe('querying with a groupBy parameter', () => { - for (const aggType of aggs) { - it(`should work with the ${aggType} aggregator`, async () => { - const timeframe = { - start: moment().subtract(25, 'minutes').valueOf(), - end: moment().valueOf(), - }; - const searchBody = getElasticsearchMetricQuery( - getSearchParams(aggType), - timeframe, - 100, - true, - void 0, - 'agent.id' - ); - const result = await client.search({ - index, - body: searchBody, - }); - - expect(result.hits).to.be.ok(); - expect(result.aggregations).to.be.ok(); - }); - } - it('should work with a filterQuery', async () => { - const timeframe = { - start: moment().subtract(25, 'minutes').valueOf(), - end: moment().valueOf(), - }; - const searchBody = getElasticsearchMetricQuery( - getSearchParams('avg'), - timeframe, - 100, - true, - void 0, - 'agent.id', - '{"bool":{"should":[{"match_phrase":{"agent.hostname":"foo"}}],"minimum_should_match":1}}' - ); - const result = await client.search({ - index, - body: searchBody, - }); - - expect(result.hits).to.be.ok(); - expect(result.aggregations).to.be.ok(); - }); - }); - }); -} diff --git a/x-pack/test/api_integration/apis/metrics_ui/metrics_explorer.ts b/x-pack/test/api_integration/apis/metrics_ui/metrics_explorer.ts index 7257e8583ab8a..309d0bed4ce35 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/metrics_explorer.ts +++ b/x-pack/test/api_integration/apis/metrics_ui/metrics_explorer.ts @@ -10,8 +10,8 @@ import { first } from 'lodash'; import moment from 'moment'; import { metricsExplorerResponseRT } from '@kbn/infra-plugin/common/http_api/metrics_explorer'; import { decodeOrThrow } from '@kbn/io-ts-utils'; -import { DATES } from './constants'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { DATES } from './utils/constants'; +import type { FtrProviderContext } from '../../ftr_provider_context'; const { min, max } = DATES['7.0.0'].hosts; diff --git a/x-pack/test/api_integration/apis/metrics_ui/constants.ts b/x-pack/test/api_integration/apis/metrics_ui/utils/constants.ts similarity index 100% rename from x-pack/test/api_integration/apis/metrics_ui/constants.ts rename to x-pack/test/api_integration/apis/metrics_ui/utils/constants.ts diff --git a/x-pack/test/api_integration/apis/metrics_ui/create_fake_logger.ts b/x-pack/test/api_integration/apis/metrics_ui/utils/create_fake_logger.ts similarity index 100% rename from x-pack/test/api_integration/apis/metrics_ui/create_fake_logger.ts rename to x-pack/test/api_integration/apis/metrics_ui/utils/create_fake_logger.ts diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/dataset_quality/data_stream_rollover.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/dataset_quality/data_stream_rollover.ts index d11d93d9eae51..9936458f0df31 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/dataset_quality/data_stream_rollover.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/dataset_quality/data_stream_rollover.ts @@ -8,12 +8,13 @@ import { log, timerange } from '@kbn/apm-synthtrace-client'; import expect from '@kbn/expect'; +import { LogsSynthtraceEsClient } from '@kbn/apm-synthtrace'; import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; import { SupertestWithRoleScopeType } from '../../../services'; export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { const roleScopedSupertest = getService('roleScopedSupertest'); - const synthtrace = getService('logsSynthtraceEsClient'); + const synthtrace = getService('synthtrace'); const start = '2024-10-17T11:00:00.000Z'; const end = '2024-10-17T11:01:00.000Z'; const type = 'logs'; @@ -39,6 +40,7 @@ export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { describe('Datastream Rollover', function () { let supertestAdminWithCookieCredentials: SupertestWithRoleScopeType; + let synthtraceLogsEsClient: LogsSynthtraceEsClient; before(async () => { supertestAdminWithCookieCredentials = await roleScopedSupertest.getSupertestWithRoleScope( @@ -48,7 +50,9 @@ export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { withInternalHeaders: true, } ); - await synthtrace.index([ + + synthtraceLogsEsClient = await synthtrace.createLogsSynthtraceEsClient(); + await synthtraceLogsEsClient.index([ timerange(start, end) .interval('1m') .rate(1) @@ -69,7 +73,7 @@ export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { }); after(async () => { - await synthtrace.clean(); + await synthtraceLogsEsClient.clean(); }); it('returns acknowledged when rollover is successful', async () => { diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/dataset_quality/data_stream_settings.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/dataset_quality/data_stream_settings.ts index 16c463e8caf6c..8d6b219457dbd 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/dataset_quality/data_stream_settings.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/dataset_quality/data_stream_settings.ts @@ -8,6 +8,7 @@ import { log, timerange } from '@kbn/apm-synthtrace-client'; import expect from '@kbn/expect'; +import { LogsSynthtraceEsClient } from '@kbn/apm-synthtrace'; import { createBackingIndexNameWithoutVersion, getDataStreamSettingsOfEarliestIndex, @@ -19,7 +20,7 @@ import { RoleCredentials, SupertestWithRoleScopeType } from '../../../services'; export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { const samlAuth = getService('samlAuth'); const roleScopedSupertest = getService('roleScopedSupertest'); - const synthtrace = getService('logsSynthtraceEsClient'); + const synthtrace = getService('synthtrace'); const esClient = getService('es'); const packageApi = getService('packageApi'); const config = getService('config'); @@ -56,8 +57,10 @@ export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { describe('Dataset quality settings', function () { let adminRoleAuthc: RoleCredentials; let supertestAdminWithCookieCredentials: SupertestWithRoleScopeType; + let synthtraceLogsEsClient: LogsSynthtraceEsClient; before(async () => { + synthtraceLogsEsClient = await synthtrace.createLogsSynthtraceEsClient(); adminRoleAuthc = await samlAuth.createM2mApiKeyWithRoleScope('admin'); supertestAdminWithCookieCredentials = await roleScopedSupertest.getSupertestWithRoleScope( 'admin', @@ -86,7 +89,7 @@ export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { describe('gets the data stream settings for non integrations', () => { before(async () => { - await synthtrace.index([ + await synthtraceLogsEsClient.index([ timerange(start, end) .interval('1m') .rate(1) @@ -106,7 +109,7 @@ export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { ]); }); after(async () => { - await synthtrace.clean(); + await synthtraceLogsEsClient.clean(); }); it('returns "createdOn", "indexTemplate" and "lastBackingIndexName" correctly when available for non integration', async () => { @@ -166,7 +169,7 @@ export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { roleAuthc: adminRoleAuthc, pkg: syntheticsDataset, }); - await synthtrace.index([ + await synthtraceLogsEsClient.index([ timerange(start, end) .interval('1m') .rate(1) @@ -186,7 +189,7 @@ export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { ]); }); after(async () => { - await synthtrace.clean(); + await synthtraceLogsEsClient.clean(); await packageApi.uninstallPackage({ roleAuthc: adminRoleAuthc, pkg: syntheticsDataset, diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/dataset_quality/degraded_field_analyze.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/dataset_quality/degraded_field_analyze.ts index e9e2665548764..38ad6e04e2ef8 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/dataset_quality/degraded_field_analyze.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/dataset_quality/degraded_field_analyze.ts @@ -7,6 +7,7 @@ import expect from '@kbn/expect'; import { log, timerange } from '@kbn/apm-synthtrace-client'; +import { LogsSynthtraceEsClient } from '@kbn/apm-synthtrace'; import { SupertestWithRoleScopeType } from '../../../services'; import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; import { createBackingIndexNameWithoutVersion, setDataStreamSettings } from './utils/es_utils'; @@ -17,7 +18,7 @@ const MORE_THAN_1024_CHARS = export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { const roleScopedSupertest = getService('roleScopedSupertest'); - const synthtrace = getService('logsSynthtraceEsClient'); + const synthtrace = getService('synthtrace'); const esClient = getService('es'); const start = '2024-09-20T11:00:00.000Z'; const end = '2024-09-20T11:01:00.000Z'; @@ -50,6 +51,7 @@ export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { describe('Degraded field analyze', function () { let supertestAdminWithCookieCredentials: SupertestWithRoleScopeType; + let synthtraceLogsEsClient: LogsSynthtraceEsClient; before(async () => { supertestAdminWithCookieCredentials = await roleScopedSupertest.getSupertestWithRoleScope( @@ -63,7 +65,8 @@ export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { describe('gets limit analysis for a given datastream and degraded field', () => { before(async () => { - await synthtrace.createComponentTemplate( + synthtraceLogsEsClient = await synthtrace.createLogsSynthtraceEsClient(); + await synthtraceLogsEsClient.createComponentTemplate( customComponentTemplateName, logsSynthMappings(dataset) ); @@ -86,7 +89,7 @@ export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { hidden: false, }, }); - await synthtrace.index([ + await synthtraceLogsEsClient.index([ timerange(start, end) .interval('1m') .rate(1) @@ -133,7 +136,7 @@ export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { await setDataStreamSettings(esClient, dataStreamName, { 'mapping.total_fields.limit': 25, }); - await synthtrace.index([ + await synthtraceLogsEsClient.index([ timerange(start, end) .interval('1m') .rate(1) @@ -176,9 +179,9 @@ export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { }); after(async () => { - await synthtrace.clean(); + await synthtraceLogsEsClient.clean(); await esClient.indices.deleteIndexTemplate({ name: dataStreamName }); - await synthtrace.deleteComponentTemplate(customComponentTemplateName); + await synthtraceLogsEsClient.deleteComponentTemplate(customComponentTemplateName); }); }); }); diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/dataset_quality/update_field_limit.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/dataset_quality/update_field_limit.ts index 3f842cd43f3e2..3a5a621001d2e 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/dataset_quality/update_field_limit.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/dataset_quality/update_field_limit.ts @@ -8,6 +8,7 @@ import expect from '@kbn/expect'; import { log, timerange } from '@kbn/apm-synthtrace-client'; +import { LogsSynthtraceEsClient } from '@kbn/apm-synthtrace'; import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; import { RoleCredentials, SupertestWithRoleScopeType } from '../../../services'; import { createBackingIndexNameWithoutVersion, rolloverDataStream } from './utils/es_utils'; @@ -15,7 +16,7 @@ import { createBackingIndexNameWithoutVersion, rolloverDataStream } from './util export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { const samlAuth = getService('samlAuth'); const roleScopedSupertest = getService('roleScopedSupertest'); - const synthtrace = getService('logsSynthtraceEsClient'); + const synthtrace = getService('synthtrace'); const esClient = getService('es'); const packageApi = getService('packageApi'); const start = '2024-10-17T11:00:00.000Z'; @@ -50,6 +51,7 @@ export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { describe('Update field limit', function () { let adminRoleAuthc: RoleCredentials; let supertestAdminWithCookieCredentials: SupertestWithRoleScopeType; + let synthtraceLogsEsClient: LogsSynthtraceEsClient; before(async () => { adminRoleAuthc = await samlAuth.createM2mApiKeyWithRoleScope('admin'); @@ -64,7 +66,9 @@ export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { roleAuthc: adminRoleAuthc, pkg, }); - await synthtrace.index([ + + synthtraceLogsEsClient = await synthtrace.createLogsSynthtraceEsClient(); + await synthtraceLogsEsClient.index([ timerange(start, end) .interval('1m') .rate(1) @@ -85,7 +89,7 @@ export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { }); after(async () => { - await synthtrace.clean(); + await synthtraceLogsEsClient.clean(); await packageApi.uninstallPackage({ roleAuthc: adminRoleAuthc, pkg, diff --git a/x-pack/test/api_integration/apis/metrics_ui/index.js b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/index.ts similarity index 60% rename from x-pack/test/api_integration/apis/metrics_ui/index.js rename to x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/index.ts index 9e203ac5a3ada..85ed3153b9d55 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/index.js +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/index.ts @@ -5,26 +5,22 @@ * 2.0. */ -export default function ({ loadTestFile }) { - describe('MetricsUI Endpoints', () => { +import type { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ loadTestFile }: DeploymentAgnosticFtrProviderContext) { + describe('Infrastructure', () => { loadTestFile(require.resolve('./metadata')); - loadTestFile(require.resolve('./log_entry_highlights')); - loadTestFile(require.resolve('./log_summary')); - loadTestFile(require.resolve('./metrics')); + loadTestFile(require.resolve('./node_details')); loadTestFile(require.resolve('./sources')); loadTestFile(require.resolve('./snapshot')); - loadTestFile(require.resolve('./metrics_alerting')); - loadTestFile(require.resolve('./metrics_explorer')); loadTestFile(require.resolve('./ip_to_hostname')); - loadTestFile(require.resolve('./http_source')); - loadTestFile(require.resolve('./metric_threshold_alert')); loadTestFile(require.resolve('./metrics_overview_top')); loadTestFile(require.resolve('./metrics_process_list')); loadTestFile(require.resolve('./metrics_process_list_chart')); - loadTestFile(require.resolve('./infra_log_analysis_validation_log_entry_datasets')); loadTestFile(require.resolve('./infra')); loadTestFile(require.resolve('./inventory_threshold_alert')); loadTestFile(require.resolve('./services')); loadTestFile(require.resolve('./infra_custom_dashboards')); + loadTestFile(require.resolve('./infra_asset_count')); }); } diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/infra.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/infra.ts new file mode 100644 index 0000000000000..6ad6b1799ce91 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/infra.ts @@ -0,0 +1,255 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { + GetInfraMetricsRequestBodyPayloadClient, + GetInfraMetricsResponsePayload, +} from '@kbn/infra-plugin/common/http_api/infra'; +import type { SupertestWithRoleScopeType } from '../../../services'; +import { DATES } from './utils/constants'; +import type { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; + +const ENDPOINT = '/api/metrics/infra/host'; + +const normalizeNewLine = (text: string) => { + return text.replaceAll(/(\s{2,}|\\n\\s)/g, ' '); +}; +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + const esArchiver = getService('esArchiver'); + const roleScopedSupertest = getService('roleScopedSupertest'); + + const basePayload: GetInfraMetricsRequestBodyPayloadClient = { + limit: 10, + metrics: [ + 'cpu', + 'cpuV2', + 'diskSpaceUsage', + 'memory', + 'memoryFree', + 'normalizedLoad1m', + 'rx', + 'tx', + ], + from: new Date(DATES['8.0.0'].logs_and_metrics.min).toISOString(), + to: new Date(DATES['8.0.0'].logs_and_metrics.max).toISOString(), + query: { bool: { must_not: [], filter: [], should: [], must: [] } }, + }; + + describe('Hosts', () => { + let supertestWithAdminScope: SupertestWithRoleScopeType; + + const makeRequest = async ({ + body, + invalidBody, + expectedHTTPCode, + }: { + body?: GetInfraMetricsRequestBodyPayloadClient; + invalidBody?: any; + expectedHTTPCode: number; + }) => { + return supertestWithAdminScope + .post(ENDPOINT) + .send(body ?? invalidBody) + .expect(expectedHTTPCode); + }; + + before(async () => { + supertestWithAdminScope = await roleScopedSupertest.getSupertestWithRoleScope('admin', { + withInternalHeaders: true, + }); + }); + after(async () => { + await supertestWithAdminScope.destroy(); + }); + + describe('Fetch hosts', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/infra/8.0.0/logs_and_metrics'); + }); + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/infra/8.0.0/logs_and_metrics'); + }); + + it('should return metrics for a host', async () => { + const body: GetInfraMetricsRequestBodyPayloadClient = { ...basePayload, limit: 1 }; + const response = await makeRequest({ body, expectedHTTPCode: 200 }); + + expect(response.body.nodes).length(1); + expect(response.body.nodes).eql([ + { + metadata: [ + { name: 'host.os.name', value: 'CentOS Linux' }, + { name: 'cloud.provider', value: 'gcp' }, + { name: 'host.ip', value: null }, + ], + metrics: [ + { name: 'cpu', value: 0.44708333333333333 }, + { name: 'cpuV2', value: null }, + { name: 'diskSpaceUsage', value: null }, + { name: 'memory', value: 0.4563333333333333 }, + { name: 'memoryFree', value: 8573890560 }, + { name: 'normalizedLoad1m', value: 0.7375000000000002 }, + { name: 'rx', value: null }, + { name: 'tx', value: null }, + ], + hasSystemMetrics: true, + name: 'gke-observability-8--observability-8--bc1afd95-f0zc', + }, + ]); + }); + + it('should return all hosts if query params is not sent', async () => { + const body: GetInfraMetricsRequestBodyPayloadClient = { + ...basePayload, + metrics: ['memory'], + query: undefined, + }; + + const response = await makeRequest({ body, expectedHTTPCode: 200 }); + expect(response.body.nodes).eql([ + { + metadata: [ + { name: 'host.os.name', value: 'CentOS Linux' }, + { name: 'cloud.provider', value: 'gcp' }, + { name: 'host.ip', value: null }, + ], + metrics: [{ name: 'memory', value: 0.4563333333333333 }], + hasSystemMetrics: true, + name: 'gke-observability-8--observability-8--bc1afd95-f0zc', + }, + { + metadata: [ + { name: 'host.os.name', value: 'CentOS Linux' }, + { name: 'cloud.provider', value: 'gcp' }, + { name: 'host.ip', value: null }, + ], + metrics: [{ name: 'memory', value: 0.32066666666666666 }], + hasSystemMetrics: true, + name: 'gke-observability-8--observability-8--bc1afd95-ngmh', + }, + { + metadata: [ + { name: 'host.os.name', value: 'CentOS Linux' }, + { name: 'cloud.provider', value: 'gcp' }, + { name: 'host.ip', value: null }, + ], + metrics: [{ name: 'memory', value: 0.2346666666666667 }], + hasSystemMetrics: true, + name: 'gke-observability-8--observability-8--bc1afd95-nhhw', + }, + ]); + }); + + it('should return 3 hosts when filtered by "host.os.name=CentOS Linux"', async () => { + const body: GetInfraMetricsRequestBodyPayloadClient = { + ...basePayload, + metrics: ['cpuV2'], + query: { bool: { filter: [{ term: { 'host.os.name': 'CentOS Linux' } }] } }, + }; + const response = await makeRequest({ body, expectedHTTPCode: 200 }); + + const names = (response.body as GetInfraMetricsResponsePayload).nodes.map((p) => p.name); + expect(names).eql([ + 'gke-observability-8--observability-8--bc1afd95-f0zc', + 'gke-observability-8--observability-8--bc1afd95-ngmh', + 'gke-observability-8--observability-8--bc1afd95-nhhw', + ]); + }); + + it('should return 0 hosts when filtered by "host.os.name=Ubuntu"', async () => { + const body: GetInfraMetricsRequestBodyPayloadClient = { + ...basePayload, + metrics: ['cpuV2'], + query: { bool: { filter: [{ term: { 'host.os.name': 'Ubuntu' } }] } }, + }; + const response = await makeRequest({ body, expectedHTTPCode: 200 }); + + const names = (response.body as GetInfraMetricsResponsePayload).nodes.map((p) => p.name); + expect(names).eql([]); + }); + + it('should return 0 hosts when filtered by not "host.name=gke-observability-8--observability-8--bc1afd95-nhhw"', async () => { + const body: GetInfraMetricsRequestBodyPayloadClient = { + ...basePayload, + metrics: ['cpuV2'], + query: { + bool: { + must_not: [ + { term: { 'host.name': 'gke-observability-8--observability-8--bc1afd95-nhhw' } }, + ], + }, + }, + }; + const response = await makeRequest({ body, expectedHTTPCode: 200 }); + + const names = (response.body as GetInfraMetricsResponsePayload).nodes.map((p) => p.name); + expect(names).eql([ + 'gke-observability-8--observability-8--bc1afd95-f0zc', + 'gke-observability-8--observability-8--bc1afd95-ngmh', + ]); + }); + }); + + describe('Endpoint validations', () => { + it('should fail when limit is 0', async () => { + const body: GetInfraMetricsRequestBodyPayloadClient = { ...basePayload, limit: 0 }; + const response = await makeRequest({ body, expectedHTTPCode: 400 }); + + expect(normalizeNewLine(response.body.message)).to.be( + '[request body]: Failed to validate: in limit: 0 does not match expected type InRange in limit: 0 does not match expected type pipe(undefined, BooleanFromString)' + ); + }); + + it('should fail when limit is negative', async () => { + const body: GetInfraMetricsRequestBodyPayloadClient = { ...basePayload, limit: -2 }; + const response = await makeRequest({ body, expectedHTTPCode: 400 }); + + expect(normalizeNewLine(response.body.message)).to.be( + '[request body]: Failed to validate: in limit: -2 does not match expected type InRange in limit: -2 does not match expected type pipe(undefined, BooleanFromString)' + ); + }); + + it('should fail when limit above 500', async () => { + const body: GetInfraMetricsRequestBodyPayloadClient = { ...basePayload, limit: 501 }; + const response = await makeRequest({ body, expectedHTTPCode: 400 }); + + expect(normalizeNewLine(response.body.message)).to.be( + '[request body]: Failed to validate: in limit: 501 does not match expected type InRange in limit: 501 does not match expected type pipe(undefined, BooleanFromString)' + ); + }); + + it('should fail when metric is invalid', async () => { + const invalidBody = { ...basePayload, metrics: ['any'] }; + const response = await makeRequest({ invalidBody, expectedHTTPCode: 400 }); + + expect(normalizeNewLine(response.body.message)).to.be( + '[request body]: Failed to validate: in metrics/0: "any" does not match expected type "cpu" | "cpuV2" | "normalizedLoad1m" | "diskSpaceUsage" | "memory" | "memoryFree" | "rx" | "tx" | "rxV2" | "txV2"' + ); + }); + + it('should pass when limit is 1', async () => { + const body: GetInfraMetricsRequestBodyPayloadClient = { ...basePayload, limit: 1 }; + await makeRequest({ body, expectedHTTPCode: 200 }); + }); + + it('should pass when limit is 500', async () => { + const body: GetInfraMetricsRequestBodyPayloadClient = { ...basePayload, limit: 500 }; + await makeRequest({ body, expectedHTTPCode: 200 }); + }); + + it('should fail when from and to are not informed', async () => { + const invalidBody = { ...basePayload, from: undefined, to: undefined }; + const response = await makeRequest({ invalidBody, expectedHTTPCode: 400 }); + + expect(normalizeNewLine(response.body.message)).to.be( + '[request body]: Failed to validate: in from: undefined does not match expected type isoToEpochRt in to: undefined does not match expected type isoToEpochRt' + ); + }); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/infra_asset_count.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/infra_asset_count.ts new file mode 100644 index 0000000000000..0c139ccb2023b --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/infra_asset_count.ts @@ -0,0 +1,89 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import type { + GetInfraAssetCountRequestBodyPayloadClient, + GetInfraAssetCountResponsePayload, + GetInfraAssetCountRequestParamsPayload, +} from '@kbn/infra-plugin/common/http_api'; +import type { SupertestWithRoleScopeType } from '../../../services'; +import type { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; + +import { DATES } from './utils/constants'; + +const timeRange = { + from: new Date(DATES['8.0.0'].logs_and_metrics.min).toISOString(), + to: new Date(DATES['8.0.0'].logs_and_metrics.max).toISOString(), +}; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + const esArchiver = getService('esArchiver'); + const roleScopedSupertest = getService('roleScopedSupertest'); + + describe('API /api/infra/{assetType}/count', () => { + let supertestWithAdminScope: SupertestWithRoleScopeType; + + const fetchHostsCount = async ({ + params, + body, + }: { + params: GetInfraAssetCountRequestParamsPayload; + body: GetInfraAssetCountRequestBodyPayloadClient; + }): Promise => { + const { assetType } = params; + const response = await supertestWithAdminScope + .post(`/api/infra/${assetType}/count`) + .send(body) + .expect(200); + return response.body; + }; + + describe('works', () => { + describe('with host', () => { + before(async () => { + supertestWithAdminScope = await roleScopedSupertest.getSupertestWithRoleScope('admin', { + withInternalHeaders: true, + }); + await esArchiver.load('x-pack/test/functional/es_archives/infra/8.0.0/logs_and_metrics'); + }); + after(async () => { + await esArchiver.unload( + 'x-pack/test/functional/es_archives/infra/8.0.0/logs_and_metrics' + ); + await supertestWithAdminScope.destroy(); + }); + + it('received data', async () => { + const infraHosts = await fetchHostsCount({ + params: { assetType: 'host' }, + body: { + query: { + bool: { + must: [], + filter: [], + should: [], + must_not: [], + }, + }, + from: timeRange.from, + to: timeRange.to, + }, + }); + + if (infraHosts) { + const { count, assetType } = infraHosts; + expect(count).to.equal(3); + expect(assetType).to.be('host'); + } else { + throw new Error('Hosts count response should not be empty'); + } + }); + }); + }); + }); +} diff --git a/x-pack/test/api_integration/apis/metrics_ui/infra_custom_dashboards.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/infra_custom_dashboards.ts similarity index 84% rename from x-pack/test/api_integration/apis/metrics_ui/infra_custom_dashboards.ts rename to x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/infra_custom_dashboards.ts index 2ed6607630060..140b0540c7d71 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/infra_custom_dashboards.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/infra_custom_dashboards.ts @@ -10,18 +10,31 @@ import { InfraCustomDashboard } from '@kbn/infra-plugin/common/custom_dashboards import { InfraSaveCustomDashboardsRequestPayload } from '@kbn/infra-plugin/common/http_api/custom_dashboards_api'; import { INFRA_CUSTOM_DASHBOARDS_SAVED_OBJECT_TYPE } from '@kbn/infra-plugin/server/saved_objects'; import { enableInfrastructureAssetCustomDashboards } from '@kbn/observability-plugin/common'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import type { SupertestWithRoleScopeType } from '../../../services'; +import type { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; const getCustomDashboardsUrl = (assetType: string, dashboardSavedObjectId?: string) => dashboardSavedObjectId ? `/api/infra/${assetType}/custom-dashboards/${dashboardSavedObjectId}` : `/api/infra/${assetType}/custom-dashboards`; -export default function ({ getService }: FtrProviderContext) { - const supertest = getService('supertest'); +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + const roleScopedSupertest = getService('roleScopedSupertest'); const kibanaServer = getService('kibanaServer'); describe('Infra Custom Dashboards API', () => { + let supertestWithAdminScope: SupertestWithRoleScopeType; + + before(async () => { + supertestWithAdminScope = await roleScopedSupertest.getSupertestWithRoleScope('admin', { + withInternalHeaders: true, + }); + }); + + after(async () => { + await supertestWithAdminScope.destroy(); + }); + beforeEach(async () => { await kibanaServer.savedObjects.clean({ types: [INFRA_CUSTOM_DASHBOARDS_SAVED_OBJECT_TYPE], @@ -34,7 +47,7 @@ export default function ({ getService }: FtrProviderContext) { [enableInfrastructureAssetCustomDashboards]: false, }); - await supertest.get(getCustomDashboardsUrl('host')).expect(403); + await supertestWithAdminScope.get(getCustomDashboardsUrl('host')).expect(403); }); it('responds with an error when trying to request a custom dashboard for unsupported asset type', async () => { @@ -42,7 +55,9 @@ export default function ({ getService }: FtrProviderContext) { [enableInfrastructureAssetCustomDashboards]: false, }); - await supertest.get(getCustomDashboardsUrl('unsupported-asset-type')).expect(400); + await supertestWithAdminScope + .get(getCustomDashboardsUrl('unsupported-asset-type')) + .expect(400); }); it('responds with an empty configuration if custom dashboard saved object does not exist', async () => { @@ -53,7 +68,10 @@ export default function ({ getService }: FtrProviderContext) { types: [INFRA_CUSTOM_DASHBOARDS_SAVED_OBJECT_TYPE], }); - const response = await supertest.get(getCustomDashboardsUrl('host')).expect(200); + const response = await supertestWithAdminScope + .get(getCustomDashboardsUrl('host')) + + .expect(200); expect(response.body).to.be.eql([]); }); @@ -73,7 +91,9 @@ export default function ({ getService }: FtrProviderContext) { overwrite: true, }); - const response = await supertest.get(getCustomDashboardsUrl('host')).expect(200); + const response = await supertestWithAdminScope + .get(getCustomDashboardsUrl('host')) + .expect(200); expect(response.body).to.have.length(1); expect(response.body[0]).to.have.property('dashboardFilterAssetIdEnabled', true); @@ -92,9 +112,8 @@ export default function ({ getService }: FtrProviderContext) { [enableInfrastructureAssetCustomDashboards]: false, }); - await supertest + await supertestWithAdminScope .post(getCustomDashboardsUrl('host')) - .set('kbn-xsrf', 'xxx') .send(payload) .expect(403); }); @@ -108,9 +127,8 @@ export default function ({ getService }: FtrProviderContext) { [enableInfrastructureAssetCustomDashboards]: true, }); - await supertest + await supertestWithAdminScope .post(getCustomDashboardsUrl('unsupported-asset-type')) - .set('kbn-xsrf', 'xxx') .send(payload) .expect(400); }); @@ -127,9 +145,8 @@ export default function ({ getService }: FtrProviderContext) { types: [INFRA_CUSTOM_DASHBOARDS_SAVED_OBJECT_TYPE], }); - const response = await supertest + const response = await supertestWithAdminScope .post(getCustomDashboardsUrl('host')) - .set('kbn-xsrf', 'xxx') .send(payload) .expect(200); @@ -161,9 +178,8 @@ export default function ({ getService }: FtrProviderContext) { overwrite: true, }); - const response = await supertest + const response = await supertestWithAdminScope .post(getCustomDashboardsUrl('host')) - .set('kbn-xsrf', 'xxx') .send(payload) .expect(400); @@ -184,9 +200,8 @@ export default function ({ getService }: FtrProviderContext) { [enableInfrastructureAssetCustomDashboards]: false, }); - await supertest + await supertestWithAdminScope .put(getCustomDashboardsUrl('host', '123')) - .set('kbn-xsrf', 'xxx') .send(payload) .expect(403); }); @@ -201,9 +216,8 @@ export default function ({ getService }: FtrProviderContext) { [enableInfrastructureAssetCustomDashboards]: true, }); - await supertest + await supertestWithAdminScope .put(getCustomDashboardsUrl('host', '000')) - .set('kbn-xsrf', 'xxx') .send(payload) .expect(404); }); @@ -238,12 +252,13 @@ export default function ({ getService }: FtrProviderContext) { dashboardSavedObjectId: '123', dashboardFilterAssetIdEnabled: false, }; - const updateResponse = await supertest + const updateResponse = await supertestWithAdminScope .put(getCustomDashboardsUrl('host', existingDashboardSavedObject.id)) - .set('kbn-xsrf', 'xxx') .send(payload) .expect(200); - const getResponse = await supertest.get(getCustomDashboardsUrl('host')).expect(200); + const getResponse = await supertestWithAdminScope + .get(getCustomDashboardsUrl('host')) + .expect(200); expect(updateResponse.body).to.be.eql({ ...payload, @@ -267,10 +282,7 @@ export default function ({ getService }: FtrProviderContext) { [enableInfrastructureAssetCustomDashboards]: false, }); - await supertest - .delete(getCustomDashboardsUrl('host', '123')) - .set('kbn-xsrf', 'xxx') - .expect(403); + await supertestWithAdminScope.delete(getCustomDashboardsUrl('host', '123')).expect(403); }); it('responds with an error when trying to delete not existing dashboard', async () => { @@ -278,10 +290,7 @@ export default function ({ getService }: FtrProviderContext) { [enableInfrastructureAssetCustomDashboards]: true, }); - await supertest - .delete(getCustomDashboardsUrl('host', '000')) - .set('kbn-xsrf', 'xxx') - .expect(404); + await supertestWithAdminScope.delete(getCustomDashboardsUrl('host', '000')).expect(404); }); it('deletes an existing dashboard', async () => { @@ -301,12 +310,13 @@ export default function ({ getService }: FtrProviderContext) { overwrite: true, }); - await supertest + await supertestWithAdminScope .delete(getCustomDashboardsUrl('host', existingDashboardSavedObject.id)) - .set('kbn-xsrf', 'xxx') .expect(200); - const afterDeleteResponse = await supertest.get(getCustomDashboardsUrl('host')).expect(200); + const afterDeleteResponse = await supertestWithAdminScope + .get(getCustomDashboardsUrl('host')) + .expect(200); expect(afterDeleteResponse.body).to.be.eql([]); }); diff --git a/x-pack/test/api_integration/apis/metrics_ui/inventory_threshold_alert.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/inventory_threshold_alert.ts similarity index 98% rename from x-pack/test/api_integration/apis/metrics_ui/inventory_threshold_alert.ts rename to x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/inventory_threshold_alert.ts index 4a60158c77e80..a57df6c06d426 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/inventory_threshold_alert.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/inventory_threshold_alert.ts @@ -11,11 +11,11 @@ import { InventoryItemType, SnapshotMetricType } from '@kbn/metrics-data-access- import { evaluateCondition } from '@kbn/infra-plugin/server/lib/alerting/inventory_metric_threshold/evaluate_condition'; import { InfraSource } from '@kbn/infra-plugin/server/lib/sources'; import { COMPARATORS } from '@kbn/alerting-comparators'; -import { FtrProviderContext } from '../../ftr_provider_context'; -import { DATES } from './constants'; -import { createFakeLogger } from './create_fake_logger'; +import type { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { DATES } from './utils/constants'; +import { createFakeLogger } from './utils/create_fake_logger'; -export default function ({ getService }: FtrProviderContext) { +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { const esArchiver = getService('esArchiver'); const esClient = getService('es'); const log = getService('log'); diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/ip_to_hostname.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/ip_to_hostname.ts new file mode 100644 index 0000000000000..d75c16aacd7cb --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/ip_to_hostname.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import type { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import type { SupertestWithRoleScopeType } from '../../../services'; + +export default function ipToHostNameTest({ getService }: DeploymentAgnosticFtrProviderContext) { + const roleScopedSupertest = getService('roleScopedSupertest'); + const esArchiver = getService('esArchiver'); + + describe('API /api/infra/ip_to_host', () => { + let supertestWithAdminScope: SupertestWithRoleScopeType; + + before(async () => { + supertestWithAdminScope = await roleScopedSupertest.getSupertestWithRoleScope('admin', { + withInternalHeaders: true, + }); + await esArchiver.load('x-pack/test/functional/es_archives/infra/metrics_and_logs'); + }); + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/infra/metrics_and_logs'); + await supertestWithAdminScope.destroy(); + }); + + it('should basically work', async () => { + const postBody = { + index_pattern: 'metricbeat-*', + ip: '10.128.0.7', + }; + const response = await supertestWithAdminScope + .post('/api/infra/ip_to_host') + .send(postBody) + .expect(200); + + expect(response.body).to.have.property('host', 'demo-stack-mysql-01'); + }); + + it('should return 404 for invalid ip', async () => { + const postBody = { + index_pattern: 'metricbeat-*', + ip: '192.168.1.1', + }; + return supertestWithAdminScope.post('/api/infra/ip_to_host').send(postBody).expect(404); + }); + }); +} diff --git a/x-pack/test/api_integration/apis/metrics_ui/metadata.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/metadata.ts similarity index 88% rename from x-pack/test/api_integration/apis/metrics_ui/metadata.ts rename to x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/metadata.ts index 3432e834b6ea1..e6f2b6ef625ab 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/metadata.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/metadata.ts @@ -10,9 +10,10 @@ import { InfraMetadata, InfraMetadataRequest, } from '@kbn/infra-plugin/common/http_api/metadata_api'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import type { SupertestWithRoleScopeType } from '../../../services'; +import type { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; -import { DATES } from './constants'; +import { DATES } from './utils/constants'; const timeRange700 = { from: DATES['7.0.0'].hosts.min, @@ -29,22 +30,35 @@ const timeRange800withAws = { to: DATES[`8.0.0`].logs_and_metrics_with_aws.max, }; -export default function ({ getService }: FtrProviderContext) { +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { const esArchiver = getService('esArchiver'); - const supertest = getService('supertest'); - const fetchMetadata = async (body: InfraMetadataRequest): Promise => { - const response = await supertest - .post('/api/infra/metadata') - .set('kbn-xsrf', 'xxx') - .send(body) - .expect(200); - return response.body; - }; + const roleScopedSupertest = getService('roleScopedSupertest'); + + describe('API /api/infra/metadata', () => { + let supertestWithAdminScope: SupertestWithRoleScopeType; + + const fetchMetadata = async ( + body: InfraMetadataRequest + ): Promise => { + const response = await supertestWithAdminScope + .post('/api/infra/metadata') + .send(body) + .expect(200); + return response.body; + }; + + before(async () => { + supertestWithAdminScope = await roleScopedSupertest.getSupertestWithRoleScope('admin', { + withInternalHeaders: true, + }); + }); + after(async () => { + await supertestWithAdminScope.destroy(); + }); - describe('metadata', () => { describe('7.0.0', () => { - before(async () => esArchiver.load('x-pack/test/functional/es_archives/infra/7.0.0/hosts')); - after(async () => esArchiver.unload('x-pack/test/functional/es_archives/infra/7.0.0/hosts')); + before(() => esArchiver.load('x-pack/test/functional/es_archives/infra/7.0.0/hosts')); + after(() => esArchiver.unload('x-pack/test/functional/es_archives/infra/7.0.0/hosts')); it('hosts', async () => { const metadata = await fetchMetadata({ @@ -63,8 +77,8 @@ export default function ({ getService }: FtrProviderContext) { }); describe('6.6.0', () => { - before(async () => esArchiver.load('x-pack/test/functional/es_archives/infra/6.6.0/docker')); - after(async () => esArchiver.unload('x-pack/test/functional/es_archives/infra/6.6.0/docker')); + before(() => esArchiver.load('x-pack/test/functional/es_archives/infra/6.6.0/docker')); + after(() => esArchiver.unload('x-pack/test/functional/es_archives/infra/6.6.0/docker')); it('docker', async () => { const metadata = await fetchMetadata({ @@ -86,8 +100,8 @@ export default function ({ getService }: FtrProviderContext) { describe('cloud and host information', () => { const archiveName = 'x-pack/test/functional/es_archives/infra/8.0.0/logs_and_metrics_with_aws'; - before(async () => esArchiver.load(archiveName)); - after(async () => esArchiver.unload(archiveName)); + before(() => esArchiver.load(archiveName)); + after(() => esArchiver.unload(archiveName)); it('host', async () => { const metadata = await fetchMetadata({ diff --git a/x-pack/test/api_integration/apis/metrics_ui/metrics_overview_top.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/metrics_overview_top.ts similarity index 73% rename from x-pack/test/api_integration/apis/metrics_ui/metrics_overview_top.ts rename to x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/metrics_overview_top.ts index ae80772bc2d03..8411d0e9d664d 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/metrics_overview_top.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/metrics_overview_top.ts @@ -11,24 +11,32 @@ import { TopNodesResponseRT, } from '@kbn/infra-plugin/common/http_api/overview_api'; import { decodeOrThrow } from '@kbn/io-ts-utils'; -import { FtrProviderContext } from '../../ftr_provider_context'; -import { DATES } from './constants'; +import type { SupertestWithRoleScopeType } from '../../../services'; +import type { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { DATES } from './utils/constants'; -export default function ({ getService }: FtrProviderContext) { +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { const esArchiver = getService('esArchiver'); - const supertest = getService('supertest'); + const roleScopedSupertest = getService('roleScopedSupertest'); describe('API /metrics/overview/top', () => { - before(() => esArchiver.load('x-pack/test/functional/es_archives/infra/7.0.0/hosts')); - after(() => esArchiver.unload('x-pack/test/functional/es_archives/infra/7.0.0/hosts')); + let supertestWithAdminScope: SupertestWithRoleScopeType; + + before(async () => { + supertestWithAdminScope = await roleScopedSupertest.getSupertestWithRoleScope('admin', { + withInternalHeaders: true, + }); + await esArchiver.load('x-pack/test/functional/es_archives/infra/7.0.0/hosts'); + }); + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/infra/7.0.0/hosts'); + await supertestWithAdminScope.destroy(); + }); it('works', async () => { const { min, max } = DATES['7.0.0'].hosts; - const response = await supertest + const response = await supertestWithAdminScope .post('/api/metrics/overview/top') - .set({ - 'kbn-xsrf': 'some-xsrf-token', - }) .send( TopNodesRequestRT.encode({ sourceId: 'default', @@ -59,11 +67,8 @@ export default function ({ getService }: FtrProviderContext) { it('should return correct sorted calculations', async () => { const { min, max } = DATES['8.0.0'].hosts_and_netowrk; - const response = await supertest + const response = await supertestWithAdminScope .post('/api/metrics/overview/top') - .set({ - 'kbn-xsrf': 'some-xsrf-token', - }) .send( TopNodesRequestRT.encode({ sourceId: 'default', diff --git a/x-pack/test/api_integration/apis/metrics_ui/metrics_process_list.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/metrics_process_list.ts similarity index 58% rename from x-pack/test/api_integration/apis/metrics_ui/metrics_process_list.ts rename to x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/metrics_process_list.ts index 99e0116977e76..7b49950ef9963 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/metrics_process_list.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/metrics_process_list.ts @@ -11,24 +11,30 @@ import { ProcessListAPIResponseRT, } from '@kbn/infra-plugin/common/http_api/host_details/process_list'; import { decodeOrThrow } from '@kbn/io-ts-utils'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import type { SupertestWithRoleScopeType } from '../../../services'; +import type { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; -export default function ({ getService }: FtrProviderContext) { +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { const esArchiver = getService('esArchiver'); - const supertest = getService('supertest'); - describe('API /metrics/process_list', () => { - before(() => esArchiver.load('x-pack/test/functional/es_archives/infra/8.0.0/metrics_and_apm')); - after(() => - esArchiver.unload('x-pack/test/functional/es_archives/infra/8.0.0/metrics_and_apm') - ); + const roleScopedSupertest = getService('roleScopedSupertest'); + + describe('API /api/metrics/process_list', () => { + let supertestWithAdminScope: SupertestWithRoleScopeType; + before(async () => { + supertestWithAdminScope = await roleScopedSupertest.getSupertestWithRoleScope('admin', { + withInternalHeaders: true, + }); + await esArchiver.load('x-pack/test/functional/es_archives/infra/8.0.0/metrics_and_apm'); + }); + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/infra/8.0.0/metrics_and_apm'); + await supertestWithAdminScope.destroy(); + }); it('works', async () => { - const response = await supertest + const response = await supertestWithAdminScope .post('/api/metrics/process_list') - .set({ - 'kbn-xsrf': 'some-xsrf-token', - }) .send( ProcessListAPIRequestRT.encode({ hostTerm: { diff --git a/x-pack/test/api_integration/apis/metrics_ui/metrics_process_list_chart.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/metrics_process_list_chart.ts similarity index 58% rename from x-pack/test/api_integration/apis/metrics_ui/metrics_process_list_chart.ts rename to x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/metrics_process_list_chart.ts index d0065bcc67420..a1b453d5b074a 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/metrics_process_list_chart.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/metrics_process_list_chart.ts @@ -11,24 +11,31 @@ import { ProcessListAPIChartResponseRT, } from '@kbn/infra-plugin/common/http_api/host_details/process_list'; import { decodeOrThrow } from '@kbn/io-ts-utils'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import type { SupertestWithRoleScopeType } from '../../../services'; +import type { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; -export default function ({ getService }: FtrProviderContext) { +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { const esArchiver = getService('esArchiver'); - const supertest = getService('supertest'); + + const roleScopedSupertest = getService('roleScopedSupertest'); describe('API /metrics/process_list/chart', () => { - before(() => esArchiver.load('x-pack/test/functional/es_archives/infra/8.0.0/metrics_and_apm')); - after(() => - esArchiver.unload('x-pack/test/functional/es_archives/infra/8.0.0/metrics_and_apm') - ); + let supertestWithAdminScope: SupertestWithRoleScopeType; + + before(async () => { + supertestWithAdminScope = await roleScopedSupertest.getSupertestWithRoleScope('admin', { + withInternalHeaders: true, + }); + await esArchiver.load('x-pack/test/functional/es_archives/infra/8.0.0/metrics_and_apm'); + }); + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/infra/8.0.0/metrics_and_apm'); + await supertestWithAdminScope.destroy(); + }); it('works', async () => { - const response = await supertest + const response = await supertestWithAdminScope .post('/api/metrics/process_list/chart') - .set({ - 'kbn-xsrf': 'some-xsrf-token', - }) .send( ProcessListAPIChartRequestRT.encode({ hostTerm: { diff --git a/x-pack/test/api_integration/apis/metrics_ui/metrics.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/node_details.ts similarity index 77% rename from x-pack/test/api_integration/apis/metrics_ui/metrics.ts rename to x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/node_details.ts index 9acdd82abc085..e492e0dc9723d 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/metrics.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/node_details.ts @@ -7,13 +7,13 @@ import expect from '@kbn/expect'; import { first, last } from 'lodash'; - import { InfraTimerangeInput } from '@kbn/infra-plugin/common/http_api/snapshot_api'; import { InventoryMetric } from '@kbn/metrics-data-access-plugin/common'; import { NodeDetailsMetricDataResponse } from '@kbn/infra-plugin/common/http_api/node_details_api'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import type { SupertestWithRoleScopeType } from '../../../services'; +import type { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; -import { DATES } from './constants'; +import { DATES } from './utils/constants'; const { min, max } = DATES['8.0.0'].pods_only; @@ -26,21 +26,31 @@ interface NodeDetailsRequest { cloudId?: string; } -export default function ({ getService }: FtrProviderContext) { +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { const esArchiver = getService('esArchiver'); - const supertest = getService('supertest'); + const roleScopedSupertest = getService('roleScopedSupertest'); + + describe('API /api/metrics/node_details', () => { + let supertestWithAdminScope: SupertestWithRoleScopeType; - describe('metrics', () => { - before(() => esArchiver.load('x-pack/test/functional/es_archives/infra/8.0.0/pods_only')); - after(() => esArchiver.unload('x-pack/test/functional/es_archives/infra/8.0.0/pods_only')); + before(async () => { + supertestWithAdminScope = await roleScopedSupertest.getSupertestWithRoleScope('admin', { + withInternalHeaders: true, + }); + await esArchiver.load('x-pack/test/functional/es_archives/infra/8.0.0/pods_only'); + }); + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/infra/8.0.0/pods_only'); + await supertestWithAdminScope.destroy(); + }); const fetchNodeDetails = async ( body: NodeDetailsRequest, expectedStatusCode = 200 ): Promise => { - const response = await supertest + const response = await supertestWithAdminScope .post('/api/metrics/node_details') - .set('kbn-xsrf', 'xxx') + .send(body) .expect(expectedStatusCode); return response.body; diff --git a/x-pack/test/api_integration/apis/metrics_ui/services.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/services.ts similarity index 51% rename from x-pack/test/api_integration/apis/metrics_ui/services.ts rename to x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/services.ts index 785d9f5741296..54a74ff72c26c 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/services.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/services.ts @@ -9,30 +9,111 @@ import expect from '@kbn/expect'; import { ServicesAPIResponseRT } from '@kbn/infra-plugin/common/http_api/host_details'; import { ApmSynthtraceEsClient } from '@kbn/apm-synthtrace'; import { decodeOrThrow } from '@kbn/io-ts-utils'; -import { FtrProviderContext } from '../../ftr_provider_context'; -import { generateServicesData, generateServicesLogsOnlyData } from './helpers'; -import { getApmSynthtraceEsClient } from '../../../common/utils/synthtrace/apm_es_client'; +import { apm, timerange } from '@kbn/apm-synthtrace-client'; +import type { SupertestWithRoleScopeType } from '../../../services'; +import type { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; const SERVICES_ENDPOINT = '/api/infra/services'; -export default function ({ getService }: FtrProviderContext) { - const supertest = getService('supertest'); - const apmSynthtraceKibanaClient = getService('apmSynthtraceKibanaClient'); - const esClient = getService('es'); +export function generateServicesData({ + from, + to, + instanceCount = 1, + servicesPerHost = 1, +}: { + from: string; + to: string; + instanceCount?: number; + servicesPerHost?: number; +}) { + const range = timerange(from, to); + const services = Array(instanceCount) + .fill(null) + .flatMap((_, hostIdx) => + Array(servicesPerHost) + .fill(null) + .map((__, serviceIdx) => + apm + .service({ + name: `service-${hostIdx}-${serviceIdx}`, + environment: 'production', + agentName: 'nodejs', + }) + .instance(`host-${hostIdx}`) + ) + ); + return range + .interval('1m') + .rate(1) + .generator((timestamp) => + services.map((service) => + service + .transaction({ transactionName: 'GET /foo' }) + .timestamp(timestamp) + .duration(500) + .success() + ) + ); +} +// generates error logs only for services +export function generateServicesLogsOnlyData({ + from, + to, + instanceCount = 1, + servicesPerHost = 1, +}: { + from: string; + to: string; + instanceCount?: number; + servicesPerHost?: number; +}) { + const range = timerange(from, to); + const services = Array(instanceCount) + .fill(null) + .flatMap((_, hostIdx) => + Array(servicesPerHost) + .fill(null) + .map((__, serviceIdx) => + apm + .service({ + name: `service-${hostIdx}-${serviceIdx}`, + environment: 'production', + agentName: 'go', + }) + .instance(`host-${hostIdx}`) + ) + ); + return range + .interval('1m') + .rate(1) + .generator((timestamp) => + services.map((service) => + service.error({ message: 'error', type: 'My Type' }).timestamp(timestamp) + ) + ); +} + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + const roleScopedSupertest = getService('roleScopedSupertest'); + const synthtrace = getService('synthtrace'); describe('GET /infra/services', () => { let synthtraceApmClient: ApmSynthtraceEsClient; + let supertestWithAdminScope: SupertestWithRoleScopeType; + const from = new Date(Date.now() - 1000 * 60 * 2).toISOString(); const to = new Date().toISOString(); before(async () => { - const version = (await apmSynthtraceKibanaClient.installApmPackage()).version; - synthtraceApmClient = await getApmSynthtraceEsClient({ - client: esClient, - packageVersion: version, + supertestWithAdminScope = await roleScopedSupertest.getSupertestWithRoleScope('admin', { + withInternalHeaders: true, }); + + const version = (await synthtrace.apmSynthtraceKibanaClient.installApmPackage()).version; + synthtraceApmClient = await synthtrace.createApmSynthtraceEsClient(version); }); after(async () => { - await apmSynthtraceKibanaClient.uninstallApmPackage(); + await synthtrace.apmSynthtraceKibanaClient.uninstallApmPackage(); + await supertestWithAdminScope.destroy(); }); describe('with transactions', () => { @@ -50,11 +131,8 @@ export default function ({ getService }: FtrProviderContext) { 'host.name': 'some-host', }); - const response = await supertest + const response = await supertestWithAdminScope .get(SERVICES_ENDPOINT) - .set({ - 'kbn-xsrf': 'some-xsrf-token', - }) .query({ filters, from, @@ -69,7 +147,7 @@ export default function ({ getService }: FtrProviderContext) { const filters = JSON.stringify({ 'host.name': 'host-0', }); - const response = await supertest + const response = await supertestWithAdminScope .get(SERVICES_ENDPOINT) .set({ 'kbn-xsrf': 'some-xsrf-token', @@ -87,11 +165,9 @@ export default function ({ getService }: FtrProviderContext) { 'host.name': 'host-0', 'agent.name': 'nodejs', }); - await supertest + await supertestWithAdminScope .get(SERVICES_ENDPOINT) - .set({ - 'kbn-xsrf': 'some-xsrf-token', - }) + .query({ filters, from, @@ -113,7 +189,7 @@ export default function ({ getService }: FtrProviderContext) { const filters = JSON.stringify({ 'host.name': 'host-0', }); - const response = await supertest + const response = await supertestWithAdminScope .get(SERVICES_ENDPOINT) .set({ 'kbn-xsrf': 'some-xsrf-token', diff --git a/x-pack/test/api_integration/apis/metrics_ui/snapshot.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/snapshot.ts similarity index 95% rename from x-pack/test/api_integration/apis/metrics_ui/snapshot.ts rename to x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/snapshot.ts index 8b70c5c32e9fb..0b32cf5b8ce8c 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/snapshot.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/snapshot.ts @@ -7,31 +7,42 @@ import expect from '@kbn/expect'; import { first, last } from 'lodash'; - import { SnapshotNodeResponse, SnapshotMetricInput, SnapshotRequest, } from '@kbn/infra-plugin/common/http_api/snapshot_api'; -import { FtrProviderContext } from '../../ftr_provider_context'; -import { DATES } from './constants'; +import type { SupertestWithRoleScopeType } from '../../../services'; +import type { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { DATES } from './utils/constants'; -export default function ({ getService }: FtrProviderContext) { +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { const esArchiver = getService('esArchiver'); - const supertest = getService('supertest'); - const fetchSnapshot = async ( - body: SnapshotRequest, - expectedStatusCode = 200 - ): Promise => { - const response = await supertest - .post('/api/metrics/snapshot') - .set('kbn-xsrf', 'xxx') - .send(body) - .expect(expectedStatusCode); - return response.body; - }; - - describe('waffle nodes', () => { + const roleScopedSupertest = getService('roleScopedSupertest'); + + describe('POST /api/metrics/snapshot', () => { + let supertestWithAdminScope: SupertestWithRoleScopeType; + + const fetchSnapshot = async ( + body: SnapshotRequest, + expectedStatusCode = 200 + ): Promise => { + const response = await supertestWithAdminScope + .post('/api/metrics/snapshot') + .send(body) + .expect(expectedStatusCode); + return response.body; + }; + + before(async () => { + supertestWithAdminScope = await roleScopedSupertest.getSupertestWithRoleScope('admin', { + withInternalHeaders: true, + }); + }); + after(async () => { + await supertestWithAdminScope.destroy(); + }); + describe('6.6.0', () => { const { min, max } = DATES['6.6.0'].docker; before(() => esArchiver.load('x-pack/test/functional/es_archives/infra/6.6.0/docker')); diff --git a/x-pack/test/api_integration/apis/metrics_ui/sources.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/sources.ts similarity index 70% rename from x-pack/test/api_integration/apis/metrics_ui/sources.ts rename to x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/sources.ts index 8418c8c0087f1..a2f7d7ca591ad 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/sources.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/sources.ts @@ -6,43 +6,53 @@ */ import expect from '@kbn/expect'; - import { MetricsSourceConfigurationResponse, PartialMetricsSourceConfigurationProperties, metricsSourceConfigurationResponseRT, } from '@kbn/infra-plugin/common/metrics_sources'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import type { SupertestWithRoleScopeType } from '../../../services'; +import type { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; + +const SOURCE_API_URL = '/api/metrics/source'; +const SOURCE_ID = 'default'; -export default function ({ getService }: FtrProviderContext) { +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { const esArchiver = getService('esArchiver'); - const supertest = getService('supertest'); - const SOURCE_API_URL = '/api/metrics/source'; - const SOURCE_ID = 'default'; + const roleScopedSupertest = getService('roleScopedSupertest'); const kibanaServer = getService('kibanaServer'); - describe('sources', () => { + describe('API /api/metrics/source', () => { + let supertestWithAdminScope: SupertestWithRoleScopeType; + + const patchRequest = async ( + body: PartialMetricsSourceConfigurationProperties, + expectedHttpStatusCode = 200 + ): Promise => { + const response = await supertestWithAdminScope + .patch(`${SOURCE_API_URL}/${SOURCE_ID}`) + .send(body) + .expect(expectedHttpStatusCode); + return response.body; + }; + before(async () => { + supertestWithAdminScope = await roleScopedSupertest.getSupertestWithRoleScope('admin', { + withInternalHeaders: true, + }); await esArchiver.load('x-pack/test/functional/es_archives/infra/metrics_and_logs'); await kibanaServer.savedObjects.cleanStandardList(); }); after(async () => { await esArchiver.unload('x-pack/test/functional/es_archives/infra/metrics_and_logs'); - await kibanaServer.savedObjects.cleanStandardList(); + await supertestWithAdminScope.destroy(); }); - const patchRequest = async ( - body: PartialMetricsSourceConfigurationProperties - ): Promise => { - const response = await supertest - .patch(`${SOURCE_API_URL}/${SOURCE_ID}`) - .set('kbn-xsrf', 'xxx') - .send(body) - .expect(200); - return response.body; - }; + beforeEach(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + }); - describe('patch request', () => { + describe('PATCH /api/metrics/source/{sourceId}', () => { it('applies all top-level field updates to an existing source', async () => { const creationResponse = await patchRequest({ name: 'NAME', @@ -108,41 +118,50 @@ export default function ({ getService }: FtrProviderContext) { it('validates anomalyThreshold is between range 1-100', async () => { // create config with bad request - await supertest - .patch(`${SOURCE_API_URL}/${SOURCE_ID}`) - .set('kbn-xsrf', 'xxx') - .send({ name: 'NAME', anomalyThreshold: -20 }) - .expect(400); + await patchRequest({ name: 'NAME', anomalyThreshold: -20 }, 400); + // create config with good request - await supertest - .patch(`${SOURCE_API_URL}/${SOURCE_ID}`) + await patchRequest({ name: 'NAME', anomalyThreshold: 20 }); + await patchRequest({ anomalyThreshold: -2 }, 400); + await patchRequest({ anomalyThreshold: 101 }, 400); + }); + }); + + describe('GET /api/metrics/source/{sourceId}', () => { + it('should just work', async () => { + const { body } = await supertestWithAdminScope + .get('/api/metrics/source/default') .set('kbn-xsrf', 'xxx') - .send({ name: 'NAME', anomalyThreshold: 20 }) .expect(200); - await supertest - .patch(`${SOURCE_API_URL}/${SOURCE_ID}`) - .set('kbn-xsrf', 'xxx') - .send({ anomalyThreshold: -2 }) - .expect(400); - await supertest - .patch(`${SOURCE_API_URL}/${SOURCE_ID}`) - .set('kbn-xsrf', 'xxx') - .send({ anomalyThreshold: 101 }) - .expect(400); + expect(body).to.have.property('source'); + expect(body?.source.configuration.metricAlias).to.equal('metrics-*,metricbeat-*'); + expect(body?.source).to.have.property('status'); + expect(body?.source.status?.metricIndicesExist).to.equal(true); + }); + }); + + describe('GET /api/metrics/source/{sourceId}/hasData', () => { + it('should just work', async () => { + const { body } = await supertestWithAdminScope + .get(`/api/metrics/source/default/hasData`) + + .expect(200); + + expect(body).to.have.property('hasData'); + expect(body?.hasData).to.be(true); }); }); - describe('has data', () => { + describe('GET /api/metrics/source/hasData', () => { const makeRequest = async (params?: { modules?: string[]; expectedHttpStatusCode?: number; }) => { const { modules, expectedHttpStatusCode = 200 } = params ?? {}; - return supertest + return supertestWithAdminScope .get(`${SOURCE_API_URL}/hasData`) .query(modules ? { modules } : '') - .set('kbn-xsrf', 'xxx') .expect(expectedHttpStatusCode); }; diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/utils/constants.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/utils/constants.ts new file mode 100644 index 0000000000000..13fd1acf7b199 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/utils/constants.ts @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const DATES = { + '7.0.0': { + hosts: { + min: 1547571261002, + max: 1547571831033, + }, + }, + '6.6.0': { + docker: { + min: 1547578132289, + max: 1547579090048, + }, + }, + '8.0.0': { + pods_only: { + min: new Date('2022-01-20T17:09:55.124Z').getTime(), + max: new Date('2022-01-20T17:14:57.378Z').getTime(), + }, + hosts_and_netowrk: { + min: new Date('2022-11-23T14:13:19.534Z').getTime(), + max: new Date('2022-11-25T14:13:19.534Z').getTime(), + }, + hosts_only: { + min: new Date('2022-01-18T19:57:47.534Z').getTime(), + max: new Date('2022-01-18T20:02:50.043Z').getTime(), + }, + rx: { + max: new Date('2022-06-21T17:02:00.00Z').getTime(), + }, + logs_and_metrics: { + min: 1562786660845, + max: 1562786716965, + }, + logs_and_metrics_with_aws: { + min: 1564083185000, + max: 1564083705100, + }, + }, + 'alert-test-data': { + gauge: { + min: 1609459200000, // '2022-01-01T00:00:00Z' + max: 1609462800000, // '2021-01-01T01:00:00Z', + midpoint: 1609461000000, // '2021-01-01T00:30:00Z' + }, + rate: { + min: 1609545600000, // '2021-01-02T00:00:00Z' + max: 1609545900000, // '2021-01-02T00:05:00Z' + }, + }, + ten_thousand_plus: { + min: 1634604480001, // 2021-10-19T00:48:00.001Z + max: 1634604839997, // 2021-10-19T00:53:59.997Z + }, +}; diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/utils/create_fake_logger.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/utils/create_fake_logger.ts new file mode 100644 index 0000000000000..ae591c51e767b --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/infra/utils/create_fake_logger.ts @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { LogMeta, Logger } from '@kbn/logging'; +import { ToolingLog } from '@kbn/tooling-log'; +import sinon from 'sinon'; + +export const createFakeLogger = (log: ToolingLog) => { + const fakeLogger = (msg: string, meta?: Meta) => + meta ? log.debug(msg, meta) : log.debug(msg); + + return { + trace: fakeLogger, + debug: fakeLogger, + info: fakeLogger, + warn: fakeLogger, + error: fakeLogger, + fatal: fakeLogger, + log: sinon.stub(), + get: sinon.stub(), + isLevelEnabled: sinon.stub(), + } as Logger; +}; diff --git a/x-pack/test/api_integration/deployment_agnostic/configs/serverless/oblt.index.ts b/x-pack/test/api_integration/deployment_agnostic/configs/serverless/oblt.index.ts index d9ee2daa42aac..a4c568713063c 100644 --- a/x-pack/test/api_integration/deployment_agnostic/configs/serverless/oblt.index.ts +++ b/x-pack/test/api_integration/deployment_agnostic/configs/serverless/oblt.index.ts @@ -14,6 +14,7 @@ export default function ({ loadTestFile }: DeploymentAgnosticFtrProviderContext) loadTestFile(require.resolve('../../apis/console')); loadTestFile(require.resolve('../../apis/core')); loadTestFile(require.resolve('../../apis/management')); + loadTestFile(require.resolve('../../apis/observability/infra')); loadTestFile(require.resolve('../../apis/observability/alerting')); loadTestFile(require.resolve('../../apis/observability/dataset_quality')); loadTestFile(require.resolve('../../apis/painless_lab')); diff --git a/x-pack/test/api_integration/deployment_agnostic/configs/stateful/oblt.index.ts b/x-pack/test/api_integration/deployment_agnostic/configs/stateful/oblt.index.ts index a467264698e57..06eaa9cc217b1 100644 --- a/x-pack/test/api_integration/deployment_agnostic/configs/stateful/oblt.index.ts +++ b/x-pack/test/api_integration/deployment_agnostic/configs/stateful/oblt.index.ts @@ -13,5 +13,6 @@ export default function ({ loadTestFile }: DeploymentAgnosticFtrProviderContext) loadTestFile(require.resolve('../../apis/observability/alerting')); loadTestFile(require.resolve('../../apis/observability/dataset_quality')); loadTestFile(require.resolve('../../apis/observability/slo')); + loadTestFile(require.resolve('../../apis/observability/infra')); }); } diff --git a/x-pack/test/api_integration/deployment_agnostic/services/index.ts b/x-pack/test/api_integration/deployment_agnostic/services/index.ts index bea63ea216c93..2b51bb1902dd1 100644 --- a/x-pack/test/api_integration/deployment_agnostic/services/index.ts +++ b/x-pack/test/api_integration/deployment_agnostic/services/index.ts @@ -12,7 +12,7 @@ import { deploymentAgnosticServices } from './deployment_agnostic_services'; import { PackageApiProvider } from './package_api'; import { RoleScopedSupertestProvider, SupertestWithRoleScope } from './role_scoped_supertest'; import { SloApiProvider } from './slo_api'; -import { LogsSynthtraceEsClientProvider } from './logs_synthtrace_es_client'; +import { SynthtraceProvider } from './synthtrace'; export type { InternalRequestHeader, @@ -29,8 +29,8 @@ export const services = { packageApi: PackageApiProvider, sloApi: SloApiProvider, roleScopedSupertest: RoleScopedSupertestProvider, - logsSynthtraceEsClient: LogsSynthtraceEsClientProvider, // create a new deployment-agnostic service and load here + synthtrace: SynthtraceProvider, }; export type SupertestWithRoleScopeType = SupertestWithRoleScope; diff --git a/x-pack/test/api_integration/deployment_agnostic/services/role_scoped_supertest.ts b/x-pack/test/api_integration/deployment_agnostic/services/role_scoped_supertest.ts index 41853cadbe86c..35c8bde01f0a6 100644 --- a/x-pack/test/api_integration/deployment_agnostic/services/role_scoped_supertest.ts +++ b/x-pack/test/api_integration/deployment_agnostic/services/role_scoped_supertest.ts @@ -83,7 +83,7 @@ export class SupertestWithRoleScope { return agent; } - private request(method: 'post' | 'get' | 'put' | 'delete', url: string): Test { + private request(method: 'post' | 'get' | 'put' | 'delete' | 'patch', url: string): Test { if (!this.authValue) { throw new Error('Instance has been destroyed and cannot be used for making requests.'); } @@ -106,6 +106,10 @@ export class SupertestWithRoleScope { delete(url: string) { return this.request('delete', url); } + + patch(url: string) { + return this.request('patch', url); + } } /** diff --git a/x-pack/test/api_integration/deployment_agnostic/services/synthtrace.ts b/x-pack/test/api_integration/deployment_agnostic/services/synthtrace.ts new file mode 100644 index 0000000000000..1ab2692095ca3 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/services/synthtrace.ts @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ApmSynthtraceKibanaClient, createLogger, LogLevel } from '@kbn/apm-synthtrace'; +import url, { format, UrlObject } from 'url'; + +import { getLogsSynthtraceEsClient } from '../../../common/utils/synthtrace/logs_es_client'; +import { getApmSynthtraceEsClient } from '../../../common/utils/synthtrace/apm_es_client'; +import type { DeploymentAgnosticFtrProviderContext } from '../ftr_provider_context'; + +function getSynthtraceKibanaClient(kibanaServerUrl: string) { + const kibanaServerUrlWithAuth = url + .format({ + ...url.parse(kibanaServerUrl), + }) + .slice(0, -1); + + const kibanaClient = new ApmSynthtraceKibanaClient({ + target: kibanaServerUrlWithAuth, + logger: createLogger(LogLevel.debug), + }); + + return kibanaClient; +} + +export function SynthtraceProvider({ getService }: DeploymentAgnosticFtrProviderContext) { + const client = getService('es'); + const config = getService('config'); + + const servers = config.get('servers'); + const kibanaServer = servers.kibana as UrlObject; + const kibanaServerUrl = format(kibanaServer); + const apmSynthtraceKibanaClient = getSynthtraceKibanaClient(kibanaServerUrl); + + return { + apmSynthtraceKibanaClient, + createLogsSynthtraceEsClient: () => getLogsSynthtraceEsClient(client), + async createApmSynthtraceEsClient(packageVersion: string) { + return getApmSynthtraceEsClient({ client, packageVersion }); + }, + }; +} diff --git a/x-pack/test/common/services/apm_synthtrace_kibana_client.ts b/x-pack/test/common/services/apm_synthtrace_kibana_client.ts index 63bbd917f93ea..88bd2f615fc46 100644 --- a/x-pack/test/common/services/apm_synthtrace_kibana_client.ts +++ b/x-pack/test/common/services/apm_synthtrace_kibana_client.ts @@ -11,10 +11,12 @@ import { ApmSynthtraceKibanaClient, createLogger, LogLevel } from '@kbn/apm-synt const getKibanaServerUrlWithAuth = () => { const kibanaServerUrl = url.format(kbnTestConfig.getUrlParts() as url.UrlObject); + + const { username, password } = kbnTestConfig.getUrlParts(); const kibanaServerUrlWithAuth = url .format({ ...url.parse(kibanaServerUrl), - auth: `elastic:${kbnTestConfig.getUrlParts().password}`, + auth: `${username}:${password}`, }) .slice(0, -1); return kibanaServerUrlWithAuth; diff --git a/x-pack/test/functional/es_archives/infra/serverless_testing_host/data.json.gz b/x-pack/test/functional/es_archives/infra/serverless_testing_host/data.json.gz deleted file mode 100644 index d247002059721f0540e747562ad9a979e3f897c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3429 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 HLGAzmp|6cP diff --git a/x-pack/test/functional/es_archives/infra/serverless_testing_host/mappings.json b/x-pack/test/functional/es_archives/infra/serverless_testing_host/mappings.json deleted file mode 100644 index 968a66f96219b..0000000000000 --- a/x-pack/test/functional/es_archives/infra/serverless_testing_host/mappings.json +++ /dev/null @@ -1,26353 +0,0 @@ -{ - "type": "data_stream", - "value": { - "data_stream": "metricbeat-8.5.0", - "template": { - "data_stream": { - "allow_custom_routing": false, - "hidden": false - }, - "index_patterns": [ - "metricbeat-8.5.0" - ], - "name": "metricbeat-8.5.0", - "priority": 150, - "template": { - "mappings": { - "_meta": { - "beat": "metricbeat", - "version": "8.5.0" - }, - "date_detection": false, - "dynamic_templates": [ - { - "labels": { - "mapping": { - "type": "keyword" - }, - "match_mapping_type": "string", - "path_match": "labels.*" - } - }, - { - "container.labels": { - "mapping": { - "type": "keyword" - }, - "match_mapping_type": "string", - "path_match": "container.labels.*" - } - }, - { - "fields": { - "mapping": { - "type": "keyword" - }, - "match_mapping_type": "string", - "path_match": "fields.*" - } - }, - { - "docker.container.labels": { - "mapping": { - "type": "keyword" - }, - "match_mapping_type": "string", - "path_match": "docker.container.labels.*" - } - }, - { - "kubernetes.labels.*": { - "mapping": { - "type": "keyword" - }, - "match_mapping_type": "*", - "path_match": "kubernetes.labels.*" - } - }, - { - "kubernetes.annotations.*": { - "mapping": { - "type": "keyword" - }, - "match_mapping_type": "*", - "path_match": "kubernetes.annotations.*" - } - }, - { - "kubernetes.selectors.*": { - "mapping": { - "type": "keyword" - }, - "match_mapping_type": "*", - "path_match": "kubernetes.selectors.*" - } - }, - { - "docker.cpu.core.*.pct": { - "mapping": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "match_mapping_type": "*", - "path_match": "docker.cpu.core.*.pct" - } - }, - { - "docker.cpu.core.*.norm.pct": { - "mapping": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "match_mapping_type": "*", - "path_match": "docker.cpu.core.*.norm.pct" - } - }, - { - "docker.cpu.core.*.ticks": { - "mapping": { - "type": "long" - }, - "match_mapping_type": "long", - "path_match": "docker.cpu.core.*.ticks" - } - }, - { - "docker.event.actor.attributes": { - "mapping": { - "type": "keyword" - }, - "match_mapping_type": "string", - "path_match": "docker.event.actor.attributes.*" - } - }, - { - "docker.image.labels": { - "mapping": { - "type": "keyword" - }, - "match_mapping_type": "string", - "path_match": "docker.image.labels.*" - } - }, - { - "docker.memory.stats.*": { - "mapping": { - "type": "long" - }, - "match_mapping_type": "*", - "path_match": "docker.memory.stats.*" - } - }, - { - "etcd.disk.wal_fsync_duration.ns.bucket.*": { - "mapping": { - "type": "long" - }, - "match_mapping_type": "long", - "path_match": "etcd.disk.wal_fsync_duration.ns.bucket.*" - } - }, - { - "etcd.disk.backend_commit_duration.ns.bucket.*": { - "mapping": { - "type": "long" - }, - "match_mapping_type": "long", - "path_match": "etcd.disk.backend_commit_duration.ns.bucket.*" - } - }, - { - "kubernetes.apiserver.watch.events.size.bytes.bucket.*": { - "mapping": { - "type": "long" - }, - "match_mapping_type": "long", - "path_match": "kubernetes.apiserver.watch.events.size.bytes.bucket.*" - } - }, - { - "kubernetes.apiserver.response.size.bytes.bucket.*": { - "mapping": { - "type": "long" - }, - "match_mapping_type": "long", - "path_match": "kubernetes.apiserver.response.size.bytes.bucket.*" - } - }, - { - "kubernetes.apiserver.request.duration.us.bucket.*": { - "mapping": { - "type": "long" - }, - "match_mapping_type": "long", - "path_match": "kubernetes.apiserver.request.duration.us.bucket.*" - } - }, - { - "kubernetes.controllermanager.client.request.duration.us.bucket.*": { - "mapping": { - "type": "long" - }, - "match_mapping_type": "long", - "path_match": "kubernetes.controllermanager.client.request.duration.us.bucket.*" - } - }, - { - "kubernetes.proxy.http.request.duration.us.percentile.*": { - "mapping": { - "type": "double" - }, - "match_mapping_type": "double", - "path_match": "kubernetes.proxy.http.request.duration.us.percentile.*" - } - }, - { - "kubernetes.proxy.http.request.size.bytes.percentile.*": { - "mapping": { - "type": "long" - }, - "match_mapping_type": "long", - "path_match": "kubernetes.proxy.http.request.size.bytes.percentile.*" - } - }, - { - "kubernetes.proxy.http.response.size.bytes.percentile.*": { - "mapping": { - "type": "long" - }, - "match_mapping_type": "long", - "path_match": "kubernetes.proxy.http.response.size.bytes.percentile.*" - } - }, - { - "kubernetes.proxy.sync.rules.duration.us.bucket.*": { - "mapping": { - "type": "long" - }, - "match_mapping_type": "long", - "path_match": "kubernetes.proxy.sync.rules.duration.us.bucket.*" - } - }, - { - "kubernetes.proxy.sync.networkprogramming.duration.us.bucket.*": { - "mapping": { - "type": "long" - }, - "match_mapping_type": "long", - "path_match": "kubernetes.proxy.sync.networkprogramming.duration.us.bucket.*" - } - }, - { - "kubernetes.scheduler.http.request.duration.us.percentile.*": { - "mapping": { - "type": "double" - }, - "match_mapping_type": "double", - "path_match": "kubernetes.scheduler.http.request.duration.us.percentile.*" - } - }, - { - "kubernetes.scheduler.http.request.size.bytes.percentile.*": { - "mapping": { - "type": "long" - }, - "match_mapping_type": "long", - "path_match": "kubernetes.scheduler.http.request.size.bytes.percentile.*" - } - }, - { - "kubernetes.scheduler.http.response.size.bytes.percentile.*": { - "mapping": { - "type": "long" - }, - "match_mapping_type": "long", - "path_match": "kubernetes.scheduler.http.response.size.bytes.percentile.*" - } - }, - { - "kubernetes.scheduler.scheduling.e2e.duration.us.bucket.*": { - "mapping": { - "type": "long" - }, - "match_mapping_type": "long", - "path_match": "kubernetes.scheduler.scheduling.e2e.duration.us.bucket.*" - } - }, - { - "kubernetes.scheduler.scheduling.duration.seconds.percentile.*": { - "mapping": { - "type": "double" - }, - "match_mapping_type": "double", - "path_match": "kubernetes.scheduler.scheduling.duration.seconds.percentile.*" - } - }, - { - "munin.metrics.*": { - "mapping": { - "type": "double" - }, - "match_mapping_type": "*", - "path_match": "munin.metrics.*" - } - }, - { - "openmetrics.labels.*": { - "mapping": { - "type": "keyword" - }, - "match_mapping_type": "string", - "path_match": "openmetrics.labels.*" - } - }, - { - "openmetrics.metrics.*": { - "mapping": { - "type": "double" - }, - "match_mapping_type": "*", - "path_match": "openmetrics.metrics.*" - } - }, - { - "openmetrics.exemplar.*": { - "mapping": { - "type": "keyword" - }, - "match_mapping_type": "string", - "path_match": "openmetrics.exemplar.*" - } - }, - { - "openmetrics.exemplar.labels.*": { - "mapping": { - "type": "keyword" - }, - "match_mapping_type": "string", - "path_match": "openmetrics.exemplar.labels.*" - } - }, - { - "prometheus.labels.*": { - "mapping": { - "type": "keyword" - }, - "match_mapping_type": "string", - "path_match": "prometheus.labels.*" - } - }, - { - "prometheus.metrics.*": { - "mapping": { - "type": "double" - }, - "match_mapping_type": "*", - "path_match": "prometheus.metrics.*" - } - }, - { - "prometheus.query.*": { - "mapping": { - "type": "double" - }, - "match_mapping_type": "*", - "path_match": "prometheus.query.*" - } - }, - { - "system.process.env": { - "mapping": { - "type": "keyword" - }, - "match_mapping_type": "string", - "path_match": "system.process.env.*" - } - }, - { - "system.process.cgroup.cpuacct.percpu": { - "mapping": { - "type": "long" - }, - "match_mapping_type": "long", - "path_match": "system.process.cgroup.cpuacct.percpu.*" - } - }, - { - "system.raid.disks.states.*": { - "mapping": { - "type": "keyword" - }, - "match_mapping_type": "string", - "path_match": "system.raid.disks.states.*" - } - }, - { - "traefik.health.response.status_codes.*": { - "mapping": { - "type": "long" - }, - "match_mapping_type": "long", - "path_match": "traefik.health.response.status_codes.*" - } - }, - { - "vsphere.virtualmachine.custom_fields": { - "mapping": { - "type": "keyword" - }, - "match_mapping_type": "string", - "path_match": "vsphere.virtualmachine.custom_fields.*" - } - }, - { - "windows.perfmon.metrics.*.*": { - "mapping": { - "type": "float" - }, - "match_mapping_type": "*", - "path_match": "windows.perfmon.metrics.*.*" - } - }, - { - "strings_as_keyword": { - "mapping": { - "ignore_above": 1024, - "type": "keyword" - }, - "match_mapping_type": "string" - } - } - ], - "properties": { - "@timestamp": { - "type": "date" - }, - "aerospike": { - "properties": { - "namespace": { - "properties": { - "client": { - "properties": { - "delete": { - "properties": { - "error": { - "type": "long" - }, - "not_found": { - "type": "long" - }, - "success": { - "type": "long" - }, - "timeout": { - "type": "long" - } - } - }, - "read": { - "properties": { - "error": { - "type": "long" - }, - "not_found": { - "type": "long" - }, - "success": { - "type": "long" - }, - "timeout": { - "type": "long" - } - } - }, - "write": { - "properties": { - "error": { - "type": "long" - }, - "success": { - "type": "long" - }, - "timeout": { - "type": "long" - } - } - } - } - }, - "device": { - "properties": { - "available": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "free": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "total": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "hwm_breached": { - "type": "boolean" - }, - "memory": { - "properties": { - "free": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "used": { - "properties": { - "data": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "index": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "sindex": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "total": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "node": { - "properties": { - "host": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "objects": { - "properties": { - "master": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "stop_writes": { - "type": "boolean" - } - } - } - } - }, - "agent": { - "properties": { - "build": { - "properties": { - "original": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "ephemeral_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "hostname": { - "path": "agent.name", - "type": "alias" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "apache": { - "properties": { - "status": { - "properties": { - "bytes_per_request": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "bytes_per_sec": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "connections": { - "properties": { - "async": { - "properties": { - "closing": { - "type": "long" - }, - "keep_alive": { - "type": "long" - }, - "writing": { - "type": "long" - } - } - }, - "total": { - "type": "long" - } - } - }, - "cpu": { - "properties": { - "children_system": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "children_user": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "load": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "system": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "user": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "hostname": { - "ignore_above": 1024, - "type": "keyword" - }, - "load": { - "properties": { - "1": { - "scaling_factor": 100, - "type": "scaled_float" - }, - "15": { - "scaling_factor": 100, - "type": "scaled_float" - }, - "5": { - "scaling_factor": 100, - "type": "scaled_float" - } - } - }, - "requests_per_sec": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "scoreboard": { - "properties": { - "closing_connection": { - "type": "long" - }, - "dns_lookup": { - "type": "long" - }, - "gracefully_finishing": { - "type": "long" - }, - "idle_cleanup": { - "type": "long" - }, - "keepalive": { - "type": "long" - }, - "logging": { - "type": "long" - }, - "open_slot": { - "type": "long" - }, - "reading_request": { - "type": "long" - }, - "sending_reply": { - "type": "long" - }, - "starting_up": { - "type": "long" - }, - "total": { - "type": "long" - }, - "waiting_for_connection": { - "type": "long" - } - } - }, - "total_accesses": { - "type": "long" - }, - "total_kbytes": { - "type": "long" - }, - "uptime": { - "properties": { - "server_uptime": { - "type": "long" - }, - "uptime": { - "type": "long" - } - } - }, - "workers": { - "properties": { - "busy": { - "type": "long" - }, - "idle": { - "type": "long" - } - } - } - } - } - } - }, - "as": { - "properties": { - "number": { - "type": "long" - }, - "organization": { - "properties": { - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "beat": { - "properties": { - "elasticsearch": { - "properties": { - "cluster": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "state": { - "properties": { - "beat": { - "properties": { - "host": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "uuid": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "cluster": { - "properties": { - "uuid": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "host": { - "properties": { - "containerized": { - "ignore_above": 1024, - "type": "keyword" - }, - "os": { - "properties": { - "kernel": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "platform": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "input": { - "properties": { - "count": { - "type": "long" - }, - "names": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "management": { - "properties": { - "enabled": { - "type": "boolean" - } - } - }, - "module": { - "properties": { - "count": { - "type": "long" - }, - "names": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "output": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "queue": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "service": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "stats": { - "properties": { - "apm_server": { - "properties": { - "acm": { - "properties": { - "request": { - "properties": { - "count": { - "type": "long" - } - } - }, - "response": { - "properties": { - "count": { - "type": "long" - }, - "errors": { - "properties": { - "closed": { - "type": "long" - }, - "count": { - "type": "long" - }, - "decode": { - "type": "long" - }, - "forbidden": { - "type": "long" - }, - "internal": { - "type": "long" - }, - "invalidquery": { - "type": "long" - }, - "method": { - "type": "long" - }, - "notfound": { - "type": "long" - }, - "queue": { - "type": "long" - }, - "ratelimit": { - "type": "long" - }, - "toolarge": { - "type": "long" - }, - "unauthorized": { - "type": "long" - }, - "unavailable": { - "type": "long" - }, - "validate": { - "type": "long" - } - } - }, - "request": { - "properties": { - "count": { - "type": "long" - } - } - }, - "unset": { - "type": "long" - }, - "valid": { - "properties": { - "accepted": { - "type": "long" - }, - "count": { - "type": "long" - }, - "notmodified": { - "type": "long" - }, - "ok": { - "type": "long" - } - } - } - } - } - } - }, - "decoder": { - "properties": { - "deflate": { - "properties": { - "content-length": { - "type": "long" - }, - "count": { - "type": "long" - } - } - }, - "gzip": { - "properties": { - "content-length": { - "type": "long" - }, - "count": { - "type": "long" - } - } - }, - "missing-content-length": { - "properties": { - "count": { - "type": "long" - } - } - }, - "reader": { - "properties": { - "count": { - "type": "long" - }, - "size": { - "type": "long" - } - } - }, - "uncompressed": { - "properties": { - "content-length": { - "type": "long" - }, - "count": { - "type": "long" - } - } - } - } - }, - "processor": { - "properties": { - "error": { - "properties": { - "decoding": { - "properties": { - "count": { - "type": "long" - }, - "errors": { - "type": "long" - } - } - }, - "frames": { - "type": "long" - }, - "spans": { - "type": "long" - }, - "stacktraces": { - "type": "long" - }, - "transformations": { - "type": "long" - }, - "validation": { - "properties": { - "count": { - "type": "long" - }, - "errors": { - "type": "long" - } - } - } - } - }, - "metric": { - "properties": { - "decoding": { - "properties": { - "count": { - "type": "long" - }, - "errors": { - "type": "long" - } - } - }, - "transformations": { - "type": "long" - }, - "validation": { - "properties": { - "count": { - "type": "long" - }, - "errors": { - "type": "long" - } - } - } - } - }, - "sourcemap": { - "properties": { - "counter": { - "type": "long" - }, - "decoding": { - "properties": { - "count": { - "type": "long" - }, - "errors": { - "type": "long" - } - } - }, - "validation": { - "properties": { - "count": { - "type": "long" - }, - "errors": { - "type": "long" - } - } - } - } - }, - "span": { - "properties": { - "transformations": { - "type": "long" - } - } - }, - "transaction": { - "properties": { - "decoding": { - "properties": { - "count": { - "type": "long" - }, - "errors": { - "type": "long" - } - } - }, - "frames": { - "type": "long" - }, - "spans": { - "type": "long" - }, - "stacktraces": { - "type": "long" - }, - "transactions": { - "type": "long" - }, - "transformations": { - "type": "long" - }, - "validation": { - "properties": { - "count": { - "type": "long" - }, - "errors": { - "type": "long" - } - } - } - } - } - } - }, - "server": { - "properties": { - "concurrent": { - "properties": { - "wait": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "request": { - "properties": { - "count": { - "type": "long" - } - } - }, - "response": { - "properties": { - "count": { - "type": "long" - }, - "errors": { - "properties": { - "closed": { - "type": "long" - }, - "concurrency": { - "type": "long" - }, - "count": { - "type": "long" - }, - "decode": { - "type": "long" - }, - "forbidden": { - "type": "long" - }, - "internal": { - "type": "long" - }, - "method": { - "type": "long" - }, - "queue": { - "type": "long" - }, - "ratelimit": { - "type": "long" - }, - "toolarge": { - "type": "long" - }, - "unauthorized": { - "type": "long" - }, - "validate": { - "type": "long" - } - } - }, - "valid": { - "properties": { - "accepted": { - "type": "long" - }, - "count": { - "type": "long" - }, - "ok": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "beat": { - "properties": { - "host": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "uuid": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "cgroup": { - "properties": { - "cpu": { - "properties": { - "cfs": { - "properties": { - "period": { - "properties": { - "us": { - "type": "long" - } - } - }, - "quota": { - "properties": { - "us": { - "type": "long" - } - } - } - } - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "stats": { - "properties": { - "periods": { - "type": "long" - }, - "throttled": { - "properties": { - "ns": { - "type": "long" - }, - "periods": { - "type": "long" - } - } - } - } - } - } - }, - "cpuacct": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "total": { - "properties": { - "ns": { - "type": "long" - } - } - } - } - }, - "memory": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "mem": { - "properties": { - "limit": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "usage": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "cpu": { - "properties": { - "system": { - "properties": { - "ticks": { - "type": "long" - }, - "time": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "total": { - "properties": { - "ticks": { - "type": "long" - }, - "time": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "value": { - "type": "long" - } - } - }, - "user": { - "properties": { - "ticks": { - "type": "long" - }, - "time": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - } - } - }, - "handles": { - "properties": { - "limit": { - "properties": { - "hard": { - "type": "long" - }, - "soft": { - "type": "long" - } - } - }, - "open": { - "type": "long" - } - } - }, - "info": { - "properties": { - "ephemeral_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "host": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "uptime": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "uuid": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "libbeat": { - "properties": { - "config": { - "properties": { - "reloads": { - "type": "short" - }, - "running": { - "type": "short" - }, - "starts": { - "type": "short" - }, - "stops": { - "type": "short" - } - } - }, - "output": { - "properties": { - "events": { - "properties": { - "acked": { - "type": "long" - }, - "active": { - "type": "long" - }, - "batches": { - "type": "long" - }, - "dropped": { - "type": "long" - }, - "duplicates": { - "type": "long" - }, - "failed": { - "type": "long" - }, - "toomany": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "read": { - "properties": { - "bytes": { - "type": "long" - }, - "errors": { - "type": "long" - } - } - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "write": { - "properties": { - "bytes": { - "type": "long" - }, - "errors": { - "type": "long" - } - } - } - } - }, - "pipeline": { - "properties": { - "clients": { - "type": "long" - }, - "events": { - "properties": { - "active": { - "type": "long" - }, - "dropped": { - "type": "long" - }, - "failed": { - "type": "long" - }, - "filtered": { - "type": "long" - }, - "published": { - "type": "long" - }, - "retry": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "queue": { - "properties": { - "acked": { - "type": "long" - } - } - } - } - } - } - }, - "memstats": { - "properties": { - "gc_next": { - "type": "long" - }, - "memory": { - "properties": { - "alloc": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "rss": { - "type": "long" - } - } - }, - "runtime": { - "properties": { - "goroutines": { - "type": "long" - } - } - }, - "system": { - "properties": { - "cpu": { - "properties": { - "cores": { - "type": "long" - } - } - }, - "load": { - "properties": { - "1": { - "type": "double" - }, - "15": { - "type": "double" - }, - "5": { - "type": "double" - }, - "norm": { - "properties": { - "1": { - "type": "double" - }, - "15": { - "type": "double" - }, - "5": { - "type": "double" - } - } - } - } - } - } - }, - "uptime": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "beats_state": { - "properties": { - "beat": { - "properties": { - "host": { - "path": "beat.state.beat.host", - "type": "alias" - }, - "name": { - "path": "beat.state.beat.name", - "type": "alias" - }, - "type": { - "path": "beat.state.beat.type", - "type": "alias" - }, - "uuid": { - "path": "beat.state.beat.uuid", - "type": "alias" - }, - "version": { - "path": "beat.state.beat.version", - "type": "alias" - } - } - }, - "state": { - "properties": { - "beat": { - "properties": { - "name": { - "path": "beat.state.beat.name", - "type": "alias" - } - } - }, - "host": { - "properties": { - "architecture": { - "path": "host.architecture", - "type": "alias" - }, - "hostname": { - "path": "host.hostname", - "type": "alias" - }, - "name": { - "path": "host.name", - "type": "alias" - }, - "os": { - "properties": { - "platform": { - "path": "beat.state.host.os.platform", - "type": "alias" - }, - "version": { - "path": "beat.state.host.os.version", - "type": "alias" - } - } - } - } - }, - "input": { - "properties": { - "count": { - "path": "beat.state.input.count", - "type": "alias" - }, - "names": { - "path": "beat.state.input.names", - "type": "alias" - } - } - }, - "module": { - "properties": { - "count": { - "path": "beat.state.module.count", - "type": "alias" - }, - "names": { - "path": "beat.state.module.names", - "type": "alias" - } - } - }, - "output": { - "properties": { - "name": { - "path": "beat.state.output.name", - "type": "alias" - } - } - }, - "service": { - "properties": { - "id": { - "path": "beat.state.service.id", - "type": "alias" - }, - "name": { - "path": "beat.state.service.name", - "type": "alias" - }, - "version": { - "path": "beat.state.service.version", - "type": "alias" - } - } - } - } - }, - "timestamp": { - "path": "@timestamp", - "type": "alias" - } - } - }, - "beats_stats": { - "properties": { - "apm-server": { - "properties": { - "acm": { - "properties": { - "request": { - "properties": { - "count": { - "path": "beat.stats.apm_server.acm.request.count", - "type": "alias" - } - } - }, - "response": { - "properties": { - "count": { - "path": "beat.stats.apm_server.acm.response.count", - "type": "alias" - }, - "errors": { - "properties": { - "closed": { - "path": "beat.stats.apm_server.acm.response.errors.closed", - "type": "alias" - }, - "count": { - "path": "beat.stats.apm_server.acm.response.errors.count", - "type": "alias" - }, - "decode": { - "path": "beat.stats.apm_server.acm.response.errors.decode", - "type": "alias" - }, - "forbidden": { - "path": "beat.stats.apm_server.acm.response.errors.forbidden", - "type": "alias" - }, - "internal": { - "path": "beat.stats.apm_server.acm.response.errors.internal", - "type": "alias" - }, - "invalidquery": { - "path": "beat.stats.apm_server.acm.response.errors.invalidquery", - "type": "alias" - }, - "method": { - "path": "beat.stats.apm_server.acm.response.errors.method", - "type": "alias" - }, - "notfound": { - "path": "beat.stats.apm_server.acm.response.errors.notfound", - "type": "alias" - }, - "queue": { - "path": "beat.stats.apm_server.acm.response.errors.queue", - "type": "alias" - }, - "ratelimit": { - "path": "beat.stats.apm_server.acm.response.errors.ratelimit", - "type": "alias" - }, - "toolarge": { - "path": "beat.stats.apm_server.acm.response.errors.toolarge", - "type": "alias" - }, - "unauthorized": { - "path": "beat.stats.apm_server.acm.response.errors.unauthorized", - "type": "alias" - }, - "unavailable": { - "path": "beat.stats.apm_server.acm.response.errors.unavailable", - "type": "alias" - }, - "validate": { - "path": "beat.stats.apm_server.acm.response.errors.validate", - "type": "alias" - } - } - }, - "request": { - "properties": { - "count": { - "path": "beat.stats.apm_server.acm.response.request.count", - "type": "alias" - } - } - }, - "unset": { - "path": "beat.stats.apm_server.acm.response.unset", - "type": "alias" - }, - "valid": { - "properties": { - "accepted": { - "path": "beat.stats.apm_server.acm.response.valid.accepted", - "type": "alias" - }, - "count": { - "path": "beat.stats.apm_server.acm.response.valid.count", - "type": "alias" - }, - "notmodified": { - "path": "beat.stats.apm_server.acm.response.valid.notmodified", - "type": "alias" - }, - "ok": { - "path": "beat.stats.apm_server.acm.response.valid.ok", - "type": "alias" - } - } - } - } - } - } - }, - "decoder": { - "properties": { - "deflate": { - "properties": { - "content-length": { - "path": "beat.stats.apm_server.decoder.deflate.content-length", - "type": "alias" - }, - "count": { - "path": "beat.stats.apm_server.decoder.deflate.count", - "type": "alias" - } - } - }, - "gzip": { - "properties": { - "content-length": { - "path": "beat.stats.apm_server.decoder.gzip.content-length", - "type": "alias" - }, - "count": { - "path": "beat.stats.apm_server.decoder.gzip.count", - "type": "alias" - } - } - }, - "missing-content-length": { - "properties": { - "count": { - "path": "beat.stats.apm_server.decoder.missing-content-length.count", - "type": "alias" - } - } - }, - "reader": { - "properties": { - "count": { - "path": "beat.stats.apm_server.decoder.reader.count", - "type": "alias" - }, - "size": { - "path": "beat.stats.apm_server.decoder.reader.size", - "type": "alias" - } - } - }, - "uncompressed": { - "properties": { - "content-length": { - "path": "beat.stats.apm_server.decoder.uncompressed.content-length", - "type": "alias" - }, - "count": { - "path": "beat.stats.apm_server.decoder.uncompressed.count", - "type": "alias" - } - } - } - } - }, - "processor": { - "properties": { - "error": { - "properties": { - "decoding": { - "properties": { - "count": { - "path": "beat.stats.apm_server.processor.error.decoding.count", - "type": "alias" - }, - "errors": { - "path": "beat.stats.apm_server.processor.error.decoding.errors", - "type": "alias" - } - } - }, - "frames": { - "path": "beat.stats.apm_server.processor.error.frames", - "type": "alias" - }, - "spans": { - "path": "beat.stats.apm_server.processor.error.spans", - "type": "alias" - }, - "stacktraces": { - "path": "beat.stats.apm_server.processor.error.stacktraces", - "type": "alias" - }, - "transformations": { - "path": "beat.stats.apm_server.processor.error.transformations", - "type": "alias" - }, - "validation": { - "properties": { - "count": { - "path": "beat.stats.apm_server.processor.error.validation.count", - "type": "alias" - }, - "errors": { - "path": "beat.stats.apm_server.processor.error.validation.errors", - "type": "alias" - } - } - } - } - }, - "metric": { - "properties": { - "decoding": { - "properties": { - "count": { - "path": "beat.stats.apm_server.processor.metric.decoding.count", - "type": "alias" - }, - "errors": { - "path": "beat.stats.apm_server.processor.metric.decoding.errors", - "type": "alias" - } - } - }, - "transformations": { - "path": "beat.stats.apm_server.processor.metric.transformations", - "type": "alias" - }, - "validation": { - "properties": { - "count": { - "path": "beat.stats.apm_server.processor.metric.validation.count", - "type": "alias" - }, - "errors": { - "path": "beat.stats.apm_server.processor.metric.validation.errors", - "type": "alias" - } - } - } - } - }, - "sourcemap": { - "properties": { - "counter": { - "path": "beat.stats.apm_server.processor.sourcemap.counter", - "type": "alias" - }, - "decoding": { - "properties": { - "count": { - "path": "beat.stats.apm_server.processor.sourcemap.decoding.count", - "type": "alias" - }, - "errors": { - "path": "beat.stats.apm_server.processor.sourcemap.decoding.errors", - "type": "alias" - } - } - }, - "validation": { - "properties": { - "count": { - "path": "beat.stats.apm_server.processor.sourcemap.validation.count", - "type": "alias" - }, - "errors": { - "path": "beat.stats.apm_server.processor.sourcemap.validation.errors", - "type": "alias" - } - } - } - } - }, - "span": { - "properties": { - "transformations": { - "path": "beat.stats.apm_server.processor.span.transformations", - "type": "alias" - } - } - }, - "transaction": { - "properties": { - "decoding": { - "properties": { - "count": { - "path": "beat.stats.apm_server.processor.transaction.decoding.count", - "type": "alias" - }, - "errors": { - "path": "beat.stats.apm_server.processor.transaction.decoding.errors", - "type": "alias" - } - } - }, - "frames": { - "path": "beat.stats.apm_server.processor.transaction.frames", - "type": "alias" - }, - "spans": { - "path": "beat.stats.apm_server.processor.transaction.spans", - "type": "alias" - }, - "stacktraces": { - "path": "beat.stats.apm_server.processor.transaction.stacktraces", - "type": "alias" - }, - "transactions": { - "path": "beat.stats.apm_server.processor.transaction.transactions", - "type": "alias" - }, - "transformations": { - "path": "beat.stats.apm_server.processor.transaction.transformations", - "type": "alias" - }, - "validation": { - "properties": { - "count": { - "path": "beat.stats.apm_server.processor.transaction.validation.count", - "type": "alias" - }, - "errors": { - "path": "beat.stats.apm_server.processor.transaction.validation.errors", - "type": "alias" - } - } - } - } - } - } - }, - "server": { - "properties": { - "concurrent": { - "properties": { - "wait": { - "properties": { - "ms": { - "path": "beat.stats.apm_server.server.concurrent.wait.ms", - "type": "alias" - } - } - } - } - }, - "request": { - "properties": { - "count": { - "path": "beat.stats.apm_server.server.request.count", - "type": "alias" - } - } - }, - "response": { - "properties": { - "count": { - "path": "beat.stats.apm_server.server.response.count", - "type": "alias" - }, - "errors": { - "properties": { - "closed": { - "path": "beat.stats.apm_server.server.response.errors.closed", - "type": "alias" - }, - "concurrency": { - "path": "beat.stats.apm_server.server.response.errors.concurrency", - "type": "alias" - }, - "count": { - "path": "beat.stats.apm_server.server.response.errors.count", - "type": "alias" - }, - "decode": { - "path": "beat.stats.apm_server.server.response.errors.decode", - "type": "alias" - }, - "forbidden": { - "path": "beat.stats.apm_server.server.response.errors.forbidden", - "type": "alias" - }, - "internal": { - "path": "beat.stats.apm_server.server.response.errors.internal", - "type": "alias" - }, - "method": { - "path": "beat.stats.apm_server.server.response.errors.method", - "type": "alias" - }, - "queue": { - "path": "beat.stats.apm_server.server.response.errors.queue", - "type": "alias" - }, - "ratelimit": { - "path": "beat.stats.apm_server.server.response.errors.ratelimit", - "type": "alias" - }, - "toolarge": { - "path": "beat.stats.apm_server.server.response.errors.toolarge", - "type": "alias" - }, - "unauthorized": { - "path": "beat.stats.apm_server.server.response.errors.unauthorized", - "type": "alias" - }, - "validate": { - "path": "beat.stats.apm_server.server.response.errors.validate", - "type": "alias" - } - } - }, - "valid": { - "properties": { - "accepted": { - "path": "beat.stats.apm_server.server.response.valid.accepted", - "type": "alias" - }, - "count": { - "path": "beat.stats.apm_server.server.response.valid.count", - "type": "alias" - }, - "ok": { - "path": "beat.stats.apm_server.server.response.valid.ok", - "type": "alias" - } - } - } - } - } - } - } - } - }, - "beat": { - "properties": { - "host": { - "path": "beat.stats.info.host", - "type": "alias" - }, - "name": { - "path": "beat.stats.info.name", - "type": "alias" - }, - "type": { - "path": "beat.stats.info.type", - "type": "alias" - }, - "uuid": { - "path": "beat.stats.info.uuid", - "type": "alias" - }, - "version": { - "path": "beat.stats.info.version", - "type": "alias" - } - } - }, - "metrics": { - "properties": { - "beat": { - "properties": { - "cgroup": { - "properties": { - "cpu": { - "properties": { - "cfs": { - "properties": { - "period": { - "properties": { - "us": { - "path": "beat.stats.cgroup.cpu.cfs.period.us", - "type": "alias" - } - } - }, - "quota": { - "properties": { - "us": { - "path": "beat.stats.cgroup.cpu.cfs.quota.us", - "type": "alias" - } - } - } - } - }, - "id": { - "path": "beat.stats.cgroup.cpu.id", - "type": "alias" - }, - "stats": { - "properties": { - "periods": { - "path": "beat.stats.cgroup.cpu.stats.periods", - "type": "alias" - }, - "throttled": { - "properties": { - "ns": { - "path": "beat.stats.cgroup.cpu.stats.throttled.ns", - "type": "alias" - }, - "periods": { - "path": "beat.stats.cgroup.cpu.stats.throttled.periods", - "type": "alias" - } - } - } - } - } - } - }, - "cpuacct": { - "properties": { - "id": { - "path": "beat.stats.cgroup.cpuacct.id", - "type": "alias" - }, - "total": { - "properties": { - "ns": { - "path": "beat.stats.cgroup.cpuacct.total.ns", - "type": "alias" - } - } - } - } - }, - "mem": { - "properties": { - "limit": { - "properties": { - "bytes": { - "path": "beat.stats.cgroup.memory.mem.limit.bytes", - "type": "alias" - } - } - }, - "usage": { - "properties": { - "bytes": { - "path": "beat.stats.cgroup.memory.mem.usage.bytes", - "type": "alias" - } - } - } - } - }, - "memory": { - "properties": { - "id": { - "path": "beat.stats.cgroup.memory.id", - "type": "alias" - } - } - } - } - }, - "cpu": { - "properties": { - "system": { - "properties": { - "ticks": { - "path": "beat.stats.cpu.system.ticks", - "type": "alias" - }, - "time": { - "properties": { - "ms": { - "path": "beat.stats.cpu.system.time.ms", - "type": "alias" - } - } - } - } - }, - "total": { - "properties": { - "ticks": { - "path": "beat.stats.cpu.total.ticks", - "type": "alias" - }, - "time": { - "properties": { - "ms": { - "path": "beat.stats.cpu.total.time.ms", - "type": "alias" - } - } - }, - "value": { - "path": "beat.stats.cpu.total.value", - "type": "alias" - } - } - }, - "user": { - "properties": { - "ticks": { - "path": "beat.stats.cpu.user.ticks", - "type": "alias" - }, - "time": { - "properties": { - "ms": { - "path": "beat.stats.cpu.user.time.ms", - "type": "alias" - } - } - } - } - } - } - }, - "handles": { - "properties": { - "limit": { - "properties": { - "hard": { - "path": "beat.stats.handles.limit.hard", - "type": "alias" - }, - "soft": { - "path": "beat.stats.handles.limit.soft", - "type": "alias" - } - } - }, - "open": { - "path": "beat.stats.handles.open", - "type": "alias" - } - } - }, - "info": { - "properties": { - "ephemeral_id": { - "path": "beat.stats.info.ephemeral_id", - "type": "alias" - }, - "uptime": { - "properties": { - "ms": { - "path": "beat.stats.info.uptime.ms", - "type": "alias" - } - } - } - } - }, - "memstats": { - "properties": { - "gc_next": { - "path": "beat.stats.memstats.gc_next", - "type": "alias" - }, - "memory_alloc": { - "path": "beat.stats.memstats.memory.alloc", - "type": "alias" - }, - "memory_total": { - "path": "beat.stats.memstats.memory.total", - "type": "alias" - }, - "rss": { - "path": "beat.stats.memstats.rss", - "type": "alias" - } - } - } - } - }, - "libbeat": { - "properties": { - "config": { - "properties": { - "module": { - "properties": { - "running": { - "path": "beat.stats.libbeat.config.running", - "type": "alias" - }, - "starts": { - "path": "beat.stats.libbeat.config.starts", - "type": "alias" - }, - "stops": { - "path": "beat.stats.libbeat.config.stops", - "type": "alias" - } - } - } - } - }, - "output": { - "properties": { - "events": { - "properties": { - "acked": { - "path": "beat.stats.libbeat.output.events.acked", - "type": "alias" - }, - "active": { - "path": "beat.stats.libbeat.output.events.active", - "type": "alias" - }, - "batches": { - "path": "beat.stats.libbeat.output.events.batches", - "type": "alias" - }, - "dropped": { - "path": "beat.stats.libbeat.output.events.dropped", - "type": "alias" - }, - "duplicated": { - "path": "beat.stats.libbeat.output.events.duplicates", - "type": "alias" - }, - "failed": { - "path": "beat.stats.libbeat.output.events.failed", - "type": "alias" - }, - "toomany": { - "path": "beat.stats.libbeat.output.events.toomany", - "type": "alias" - }, - "total": { - "path": "beat.stats.libbeat.output.events.total", - "type": "alias" - } - } - }, - "read": { - "properties": { - "bytes": { - "path": "beat.stats.libbeat.output.read.bytes", - "type": "alias" - }, - "errors": { - "path": "beat.stats.libbeat.output.read.errors", - "type": "alias" - } - } - }, - "type": { - "path": "beat.stats.libbeat.output.type", - "type": "alias" - }, - "write": { - "properties": { - "bytes": { - "path": "beat.stats.libbeat.output.write.bytes", - "type": "alias" - }, - "errors": { - "path": "beat.stats.libbeat.output.write.errors", - "type": "alias" - } - } - } - } - }, - "pipeline": { - "properties": { - "clients": { - "path": "beat.stats.libbeat.pipeline.clients", - "type": "alias" - }, - "event": { - "properties": { - "active": { - "path": "beat.stats.libbeat.pipeline.events.active", - "type": "alias" - }, - "dropped": { - "path": "beat.stats.libbeat.pipeline.events.dropped", - "type": "alias" - }, - "failed": { - "path": "beat.stats.libbeat.pipeline.events.failed", - "type": "alias" - }, - "filtered": { - "path": "beat.stats.libbeat.pipeline.events.filtered", - "type": "alias" - }, - "published": { - "path": "beat.stats.libbeat.pipeline.events.published", - "type": "alias" - }, - "retry": { - "path": "beat.stats.libbeat.pipeline.events.retry", - "type": "alias" - }, - "total": { - "path": "beat.stats.libbeat.pipeline.events.total", - "type": "alias" - } - } - }, - "queue": { - "properties": { - "acked": { - "path": "beat.stats.libbeat.pipeline.queue.acked", - "type": "alias" - } - } - } - } - } - } - }, - "system": { - "properties": { - "cpu": { - "properties": { - "cores": { - "path": "beat.stats.system.cpu.cores", - "type": "alias" - } - } - }, - "load": { - "properties": { - "1": { - "path": "beat.stats.system.load.1", - "type": "alias" - }, - "15": { - "path": "beat.stats.system.load.15", - "type": "alias" - }, - "5": { - "path": "beat.stats.system.load.5", - "type": "alias" - }, - "norm": { - "properties": { - "1": { - "path": "beat.stats.system.load.norm.1", - "type": "alias" - }, - "15": { - "path": "beat.stats.system.load.norm.15", - "type": "alias" - }, - "5": { - "path": "beat.stats.system.load.norm.5", - "type": "alias" - } - } - } - } - } - } - } - } - } - } - }, - "ccr_auto_follow_stats": { - "properties": { - "follower": { - "properties": { - "failed_read_requests": { - "path": "elasticsearch.ccr.requests.failed.read.count", - "type": "alias" - } - } - }, - "number_of_failed_follow_indices": { - "path": "elasticsearch.ccr.auto_follow.failed.follow_indices.count", - "type": "alias" - }, - "number_of_failed_remote_cluster_state_requests": { - "path": "elasticsearch.ccr.auto_follow.failed.remote_cluster_state_requests.count", - "type": "alias" - }, - "number_of_successful_follow_indices": { - "path": "elasticsearch.ccr.auto_follow.success.follow_indices.count", - "type": "alias" - } - } - }, - "ccr_stats": { - "properties": { - "bytes_read": { - "path": "elasticsearch.ccr.bytes_read", - "type": "alias" - }, - "failed_read_requests": { - "path": "elasticsearch.ccr.requests.failed.read.count", - "type": "alias" - }, - "failed_write_requests": { - "path": "elasticsearch.ccr.requests.failed.write.count", - "type": "alias" - }, - "follower_aliases_version": { - "path": "elasticsearch.ccr.follower.aliases_version", - "type": "alias" - }, - "follower_global_checkpoint": { - "path": "elasticsearch.ccr.follower.global_checkpoint", - "type": "alias" - }, - "follower_index": { - "path": "elasticsearch.ccr.follower.index", - "type": "alias" - }, - "follower_mapping_version": { - "path": "elasticsearch.ccr.follower.mapping_version", - "type": "alias" - }, - "follower_max_seq_no": { - "path": "elasticsearch.ccr.follower.max_seq_no", - "type": "alias" - }, - "follower_settings_version": { - "path": "elasticsearch.ccr.follower.settings_version", - "type": "alias" - }, - "last_requested_seq_no": { - "path": "elasticsearch.ccr.last_requested_seq_no", - "type": "alias" - }, - "leader_global_checkpoint": { - "path": "elasticsearch.ccr.leader.global_checkpoint", - "type": "alias" - }, - "leader_index": { - "path": "elasticsearch.ccr.leader.index", - "type": "alias" - }, - "leader_max_seq_no": { - "path": "elasticsearch.ccr.leader.max_seq_no", - "type": "alias" - }, - "operations_read": { - "path": "elasticsearch.ccr.follower.operations.read.count", - "type": "alias" - }, - "operations_written": { - "path": "elasticsearch.ccr.follower.operations_written", - "type": "alias" - }, - "outstanding_read_requests": { - "path": "elasticsearch.ccr.requests.outstanding.read.count", - "type": "alias" - }, - "outstanding_write_requests": { - "path": "elasticsearch.ccr.requests.outstanding.write.count", - "type": "alias" - }, - "remote_cluster": { - "path": "elasticsearch.ccr.remote_cluster", - "type": "alias" - }, - "shard_id": { - "path": "elasticsearch.ccr.follower.shard.number", - "type": "alias" - }, - "successful_read_requests": { - "path": "elasticsearch.ccr.requests.successful.read.count", - "type": "alias" - }, - "successful_write_requests": { - "path": "elasticsearch.ccr.requests.successful.write.count", - "type": "alias" - }, - "total_read_remote_exec_time_millis": { - "path": "elasticsearch.ccr.total_time.read.remote_exec.ms", - "type": "alias" - }, - "total_read_time_millis": { - "path": "elasticsearch.ccr.total_time.read.ms", - "type": "alias" - }, - "total_write_time_millis": { - "path": "elasticsearch.ccr.total_time.write.ms", - "type": "alias" - }, - "write_buffer_operation_count": { - "path": "elasticsearch.ccr.write_buffer.operation.count", - "type": "alias" - }, - "write_buffer_size_in_bytes": { - "path": "elasticsearch.ccr.write_buffer.size.bytes", - "type": "alias" - } - } - }, - "ceph": { - "properties": { - "cluster_disk": { - "properties": { - "available": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "total": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "cluster_health": { - "properties": { - "overall_status": { - "ignore_above": 1024, - "type": "keyword" - }, - "timechecks": { - "properties": { - "epoch": { - "type": "long" - }, - "round": { - "properties": { - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "value": { - "type": "long" - } - } - } - } - } - } - }, - "cluster_status": { - "properties": { - "degraded": { - "properties": { - "objects": { - "type": "long" - }, - "ratio": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "total": { - "type": "long" - } - } - }, - "misplace": { - "properties": { - "objects": { - "type": "long" - }, - "ratio": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "total": { - "type": "long" - } - } - }, - "osd": { - "properties": { - "epoch": { - "type": "long" - }, - "full": { - "type": "boolean" - }, - "nearfull": { - "type": "boolean" - }, - "num_in_osds": { - "type": "long" - }, - "num_osds": { - "type": "long" - }, - "num_remapped_pgs": { - "type": "long" - }, - "num_up_osds": { - "type": "long" - } - } - }, - "pg": { - "properties": { - "avail_bytes": { - "type": "long" - }, - "data_bytes": { - "type": "long" - }, - "total_bytes": { - "type": "long" - }, - "used_bytes": { - "type": "long" - } - } - }, - "pg_state": { - "properties": { - "count": { - "type": "long" - }, - "state_name": { - "type": "long" - }, - "version": { - "type": "long" - } - } - }, - "traffic": { - "properties": { - "read_bytes": { - "type": "long" - }, - "read_op_per_sec": { - "type": "long" - }, - "write_bytes": { - "type": "long" - }, - "write_op_per_sec": { - "type": "long" - } - } - }, - "version": { - "type": "long" - } - } - }, - "mgr_osd_perf": { - "properties": { - "id": { - "type": "long" - }, - "stats": { - "properties": { - "apply_latency_ms": { - "type": "long" - }, - "apply_latency_ns": { - "type": "long" - }, - "commit_latency_ms": { - "type": "long" - }, - "commit_latency_ns": { - "type": "long" - } - } - } - } - }, - "mgr_osd_pool_stats": { - "properties": { - "client_io_rate": { - "type": "object" - }, - "pool_id": { - "type": "long" - }, - "pool_name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "monitor_health": { - "properties": { - "available": { - "properties": { - "kb": { - "type": "long" - }, - "pct": { - "type": "long" - } - } - }, - "health": { - "ignore_above": 1024, - "type": "keyword" - }, - "last_updated": { - "type": "date" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "store_stats": { - "properties": { - "last_updated": { - "type": "long" - }, - "log": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "misc": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "sst": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "total": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "total": { - "properties": { - "kb": { - "type": "long" - } - } - }, - "used": { - "properties": { - "kb": { - "type": "long" - } - } - } - } - }, - "osd_df": { - "properties": { - "available": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "device_class": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "type": "long" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "pg_num": { - "type": "long" - }, - "total": { - "properties": { - "byte": { - "type": "long" - } - } - }, - "used": { - "properties": { - "byte": { - "type": "long" - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - }, - "osd_tree": { - "properties": { - "children": { - "ignore_above": 1024, - "type": "keyword" - }, - "crush_weight": { - "type": "float" - }, - "depth": { - "type": "long" - }, - "device_class": { - "ignore_above": 1024, - "type": "keyword" - }, - "exists": { - "type": "boolean" - }, - "father": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "type": "long" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "primary_affinity": { - "type": "float" - }, - "reweight": { - "type": "long" - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "type_id": { - "type": "long" - } - } - }, - "pool_disk": { - "properties": { - "id": { - "type": "long" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "stats": { - "properties": { - "available": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "objects": { - "type": "long" - }, - "used": { - "properties": { - "bytes": { - "type": "long" - }, - "kb": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "client": { - "properties": { - "address": { - "ignore_above": 1024, - "type": "keyword" - }, - "as": { - "properties": { - "number": { - "type": "long" - }, - "organization": { - "properties": { - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "bytes": { - "type": "long" - }, - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "geo": { - "properties": { - "city_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "location": { - "type": "geo_point" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "postal_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "timezone": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "ip": { - "type": "ip" - }, - "mac": { - "ignore_above": 1024, - "type": "keyword" - }, - "nat": { - "properties": { - "ip": { - "type": "ip" - }, - "port": { - "type": "long" - } - } - }, - "packets": { - "type": "long" - }, - "port": { - "type": "long" - }, - "registered_domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "subdomain": { - "ignore_above": 1024, - "type": "keyword" - }, - "top_level_domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "user": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "email": { - "ignore_above": 1024, - "type": "keyword" - }, - "full_name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "group": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "hash": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "roles": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "cloud": { - "properties": { - "account": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "availability_zone": { - "ignore_above": 1024, - "type": "keyword" - }, - "image": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "instance": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "machine": { - "properties": { - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "origin": { - "properties": { - "account": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "availability_zone": { - "ignore_above": 1024, - "type": "keyword" - }, - "instance": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "machine": { - "properties": { - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "project": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "provider": { - "ignore_above": 1024, - "type": "keyword" - }, - "region": { - "ignore_above": 1024, - "type": "keyword" - }, - "service": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "project": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "provider": { - "ignore_above": 1024, - "type": "keyword" - }, - "region": { - "ignore_above": 1024, - "type": "keyword" - }, - "service": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "target": { - "properties": { - "account": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "availability_zone": { - "ignore_above": 1024, - "type": "keyword" - }, - "instance": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "machine": { - "properties": { - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "project": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "provider": { - "ignore_above": 1024, - "type": "keyword" - }, - "region": { - "ignore_above": 1024, - "type": "keyword" - }, - "service": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - } - } - }, - "cluster_state": { - "properties": { - "master_node": { - "path": "elasticsearch.cluster.stats.state.master_node", - "type": "alias" - }, - "nodes_hash": { - "path": "elasticsearch.cluster.stats.state.nodes_hash", - "type": "alias" - }, - "state_uuid": { - "path": "elasticsearch.cluster.stats.state.state_uuid", - "type": "alias" - }, - "status": { - "path": "elasticsearch.cluster.stats.status", - "type": "alias" - }, - "version": { - "path": "elasticsearch.cluster.stats.state.version", - "type": "alias" - } - } - }, - "cluster_stats": { - "properties": { - "indices": { - "properties": { - "count": { - "path": "elasticsearch.cluster.stats.indices.total", - "type": "alias" - }, - "shards": { - "properties": { - "total": { - "path": "elasticsearch.cluster.stats.indices.shards.count", - "type": "alias" - } - } - } - } - }, - "nodes": { - "properties": { - "count": { - "properties": { - "total": { - "path": "elasticsearch.cluster.stats.nodes.count", - "type": "alias" - } - } - }, - "jvm": { - "properties": { - "max_uptime_in_millis": { - "path": "elasticsearch.cluster.stats.nodes.jvm.max_uptime.ms", - "type": "alias" - }, - "mem": { - "properties": { - "heap_max_in_bytes": { - "path": "elasticsearch.cluster.stats.nodes.jvm.memory.heap.max.bytes", - "type": "alias" - }, - "heap_used_in_bytes": { - "path": "elasticsearch.cluster.stats.nodes.jvm.memory.heap.used.bytes", - "type": "alias" - } - } - } - } - } - } - } - } - }, - "cluster_uuid": { - "path": "elasticsearch.cluster.id", - "type": "alias" - }, - "code_signature": { - "properties": { - "digest_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "exists": { - "type": "boolean" - }, - "signing_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "team_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "timestamp": { - "type": "date" - }, - "trusted": { - "type": "boolean" - }, - "valid": { - "type": "boolean" - } - } - }, - "consul": { - "properties": { - "agent": { - "properties": { - "autopilot": { - "properties": { - "healthy": { - "type": "boolean" - } - } - }, - "runtime": { - "properties": { - "alloc": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "garbage_collector": { - "properties": { - "pause": { - "properties": { - "current": { - "properties": { - "ns": { - "type": "long" - } - } - }, - "total": { - "properties": { - "ns": { - "type": "long" - } - } - } - } - }, - "runs": { - "type": "long" - } - } - }, - "goroutines": { - "type": "long" - }, - "heap_objects": { - "type": "long" - }, - "malloc_count": { - "type": "long" - }, - "sys": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "container": { - "properties": { - "cpu": { - "properties": { - "usage": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "disk": { - "properties": { - "read": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "write": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "image": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "tag": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "labels": { - "type": "object" - }, - "memory": { - "properties": { - "usage": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "network": { - "properties": { - "egress": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "ingress": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "runtime": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "couchbase": { - "properties": { - "bucket": { - "properties": { - "data": { - "properties": { - "used": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "disk": { - "properties": { - "fetches": { - "type": "double" - }, - "used": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "item_count": { - "type": "long" - }, - "memory": { - "properties": { - "used": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "ops_per_sec": { - "type": "double" - }, - "quota": { - "properties": { - "ram": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "use": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "cluster": { - "properties": { - "hdd": { - "properties": { - "free": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "quota": { - "properties": { - "total": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "total": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "used": { - "properties": { - "by_data": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "value": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - }, - "max_bucket_count": { - "type": "long" - }, - "quota": { - "properties": { - "index_memory": { - "properties": { - "mb": { - "type": "double" - } - } - }, - "memory": { - "properties": { - "mb": { - "type": "double" - } - } - } - } - }, - "ram": { - "properties": { - "quota": { - "properties": { - "total": { - "properties": { - "per_node": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "value": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "used": { - "properties": { - "per_node": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "value": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - }, - "total": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "used": { - "properties": { - "by_data": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "value": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "node": { - "properties": { - "cmd_get": { - "type": "double" - }, - "couch": { - "properties": { - "docs": { - "properties": { - "data_size": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "disk_size": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "spatial": { - "properties": { - "data_size": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "disk_size": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "views": { - "properties": { - "data_size": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "disk_size": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - }, - "cpu_utilization_rate": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "current_items": { - "properties": { - "total": { - "type": "long" - }, - "value": { - "type": "long" - } - } - }, - "ep_bg_fetched": { - "type": "long" - }, - "get_hits": { - "type": "double" - }, - "hostname": { - "ignore_above": 1024, - "type": "keyword" - }, - "mcd_memory": { - "properties": { - "allocated": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "reserved": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "memory": { - "properties": { - "free": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "total": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "ops": { - "type": "double" - }, - "swap": { - "properties": { - "total": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "uptime": { - "properties": { - "sec": { - "type": "long" - } - } - }, - "vb_replica_curr_items": { - "type": "long" - } - } - } - } - }, - "couchdb": { - "properties": { - "server": { - "properties": { - "couchdb": { - "properties": { - "auth_cache_hits": { - "type": "long" - }, - "auth_cache_misses": { - "type": "long" - }, - "database_reads": { - "type": "long" - }, - "database_writes": { - "type": "long" - }, - "open_databases": { - "type": "long" - }, - "open_os_files": { - "type": "long" - }, - "request_time": { - "type": "long" - } - } - }, - "httpd": { - "properties": { - "bulk_requests": { - "type": "long" - }, - "clients_requesting_changes": { - "type": "long" - }, - "requests": { - "type": "long" - }, - "temporary_view_reads": { - "type": "long" - }, - "view_reads": { - "type": "long" - } - } - }, - "httpd_request_methods": { - "properties": { - "COPY": { - "type": "long" - }, - "DELETE": { - "type": "long" - }, - "GET": { - "type": "long" - }, - "HEAD": { - "type": "long" - }, - "POST": { - "type": "long" - }, - "PUT": { - "type": "long" - } - } - }, - "httpd_status_codes": { - "properties": { - "200": { - "type": "long" - }, - "201": { - "type": "long" - }, - "202": { - "type": "long" - }, - "301": { - "type": "long" - }, - "304": { - "type": "long" - }, - "400": { - "type": "long" - }, - "401": { - "type": "long" - }, - "403": { - "type": "long" - }, - "404": { - "type": "long" - }, - "405": { - "type": "long" - }, - "409": { - "type": "long" - }, - "412": { - "type": "long" - }, - "500": { - "type": "long" - } - } - } - } - } - } - }, - "data_stream": { - "properties": { - "dataset": { - "type": "constant_keyword" - }, - "namespace": { - "type": "constant_keyword" - }, - "type": { - "type": "constant_keyword" - } - } - }, - "destination": { - "properties": { - "address": { - "ignore_above": 1024, - "type": "keyword" - }, - "as": { - "properties": { - "number": { - "type": "long" - }, - "organization": { - "properties": { - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "bytes": { - "type": "long" - }, - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "geo": { - "properties": { - "city_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "location": { - "type": "geo_point" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "postal_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "timezone": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "ip": { - "type": "ip" - }, - "mac": { - "ignore_above": 1024, - "type": "keyword" - }, - "nat": { - "properties": { - "ip": { - "type": "ip" - }, - "port": { - "type": "long" - } - } - }, - "packets": { - "type": "long" - }, - "port": { - "type": "long" - }, - "registered_domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "subdomain": { - "ignore_above": 1024, - "type": "keyword" - }, - "top_level_domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "user": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "email": { - "ignore_above": 1024, - "type": "keyword" - }, - "full_name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "group": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "hash": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "roles": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "dll": { - "properties": { - "code_signature": { - "properties": { - "digest_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "exists": { - "type": "boolean" - }, - "signing_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "team_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "timestamp": { - "type": "date" - }, - "trusted": { - "type": "boolean" - }, - "valid": { - "type": "boolean" - } - } - }, - "hash": { - "properties": { - "md5": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha1": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha256": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha512": { - "ignore_above": 1024, - "type": "keyword" - }, - "ssdeep": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "path": { - "ignore_above": 1024, - "type": "keyword" - }, - "pe": { - "properties": { - "architecture": { - "ignore_above": 1024, - "type": "keyword" - }, - "company": { - "ignore_above": 1024, - "type": "keyword" - }, - "description": { - "ignore_above": 1024, - "type": "keyword" - }, - "file_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "imphash": { - "ignore_above": 1024, - "type": "keyword" - }, - "original_file_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "product": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "dns": { - "properties": { - "answers": { - "properties": { - "class": { - "ignore_above": 1024, - "type": "keyword" - }, - "data": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "ttl": { - "type": "long" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - }, - "type": "object" - }, - "header_flags": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "op_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "question": { - "properties": { - "class": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "registered_domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "subdomain": { - "ignore_above": 1024, - "type": "keyword" - }, - "top_level_domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "resolved_ip": { - "type": "ip" - }, - "response_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "docker": { - "properties": { - "container": { - "properties": { - "command": { - "ignore_above": 1024, - "type": "keyword" - }, - "created": { - "type": "date" - }, - "ip_addresses": { - "type": "ip" - }, - "labels": { - "type": "object" - }, - "size": { - "properties": { - "root_fs": { - "type": "long" - }, - "rw": { - "type": "long" - } - } - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "tags": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "cpu": { - "properties": { - "core": { - "properties": { - "*": { - "properties": { - "norm": { - "properties": { - "pct": { - "type": "object" - } - } - }, - "pct": { - "type": "object" - }, - "ticks": { - "type": "object" - } - } - } - } - }, - "kernel": { - "properties": { - "norm": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - }, - "system": { - "properties": { - "norm": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - }, - "total": { - "properties": { - "norm": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "user": { - "properties": { - "norm": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - } - } - }, - "diskio": { - "properties": { - "read": { - "properties": { - "bytes": { - "type": "long" - }, - "ops": { - "type": "long" - }, - "queued": { - "type": "long" - }, - "rate": { - "type": "long" - }, - "service_time": { - "type": "long" - }, - "wait_time": { - "type": "long" - } - } - }, - "summary": { - "properties": { - "bytes": { - "type": "long" - }, - "ops": { - "type": "long" - }, - "queued": { - "type": "long" - }, - "rate": { - "type": "long" - }, - "service_time": { - "type": "long" - }, - "wait_time": { - "type": "long" - } - } - }, - "write": { - "properties": { - "bytes": { - "type": "long" - }, - "ops": { - "type": "long" - }, - "queued": { - "type": "long" - }, - "rate": { - "type": "long" - }, - "service_time": { - "type": "long" - }, - "wait_time": { - "type": "long" - } - } - } - } - }, - "event": { - "properties": { - "action": { - "ignore_above": 1024, - "type": "keyword" - }, - "actor": { - "properties": { - "attributes": { - "type": "object" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "from": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "healthcheck": { - "properties": { - "event": { - "properties": { - "end_date": { - "type": "date" - }, - "exit_code": { - "type": "long" - }, - "output": { - "ignore_above": 1024, - "type": "keyword" - }, - "start_date": { - "type": "date" - } - } - }, - "failingstreak": { - "type": "long" - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "image": { - "properties": { - "created": { - "type": "date" - }, - "id": { - "properties": { - "current": { - "ignore_above": 1024, - "type": "keyword" - }, - "parent": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "labels": { - "type": "object" - }, - "size": { - "properties": { - "regular": { - "type": "long" - }, - "virtual": { - "type": "long" - } - } - }, - "tags": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "info": { - "properties": { - "containers": { - "properties": { - "paused": { - "type": "long" - }, - "running": { - "type": "long" - }, - "stopped": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "images": { - "type": "long" - } - } - }, - "memory": { - "properties": { - "commit": { - "properties": { - "peak": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "fail": { - "properties": { - "count": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "limit": { - "type": "long" - }, - "private_working_set": { - "properties": { - "total": { - "type": "long" - } - } - }, - "rss": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "total": { - "type": "long" - } - } - }, - "stats": { - "properties": { - "*": { - "type": "object" - } - } - }, - "usage": { - "properties": { - "max": { - "type": "long" - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "total": { - "type": "long" - } - } - } - } - }, - "network": { - "properties": { - "inbound": { - "properties": { - "bytes": { - "type": "long" - }, - "dropped": { - "type": "long" - }, - "errors": { - "type": "long" - }, - "packets": { - "type": "long" - } - } - }, - "interface": { - "ignore_above": 1024, - "type": "keyword" - }, - "outbound": { - "properties": { - "bytes": { - "type": "long" - }, - "dropped": { - "type": "long" - }, - "errors": { - "type": "long" - }, - "packets": { - "type": "long" - } - } - } - } - }, - "network_summary": { - "properties": { - "icmp": { - "properties": { - "*": { - "type": "object" - } - } - }, - "ip": { - "properties": { - "*": { - "type": "object" - } - } - }, - "namespace": { - "properties": { - "id": { - "type": "long" - }, - "pid": { - "type": "long" - } - } - }, - "tcp": { - "properties": { - "*": { - "type": "object" - } - } - }, - "udp": { - "properties": { - "*": { - "type": "object" - } - } - }, - "udp_lite": { - "properties": { - "*": { - "type": "object" - } - } - } - } - } - } - }, - "ecs": { - "properties": { - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "elasticsearch": { - "properties": { - "ccr": { - "properties": { - "auto_follow": { - "properties": { - "failed": { - "properties": { - "follow_indices": { - "properties": { - "count": { - "type": "long" - } - } - }, - "remote_cluster_state_requests": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "success": { - "properties": { - "follow_indices": { - "properties": { - "count": { - "type": "long" - } - } - } - } - } - } - }, - "bytes_read": { - "type": "long" - }, - "follower": { - "properties": { - "aliases_version": { - "type": "long" - }, - "global_checkpoint": { - "type": "long" - }, - "index": { - "ignore_above": 1024, - "type": "keyword" - }, - "mapping_version": { - "type": "long" - }, - "max_seq_no": { - "type": "long" - }, - "operations": { - "properties": { - "read": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "operations_written": { - "type": "long" - }, - "settings_version": { - "type": "long" - }, - "shard": { - "properties": { - "number": { - "type": "long" - } - } - }, - "time_since_last_read": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "last_requested_seq_no": { - "type": "long" - }, - "leader": { - "properties": { - "global_checkpoint": { - "type": "long" - }, - "index": { - "ignore_above": 1024, - "type": "keyword" - }, - "max_seq_no": { - "type": "long" - } - } - }, - "read_exceptions": { - "type": "nested" - }, - "remote_cluster": { - "ignore_above": 1024, - "type": "keyword" - }, - "requests": { - "properties": { - "failed": { - "properties": { - "read": { - "properties": { - "count": { - "type": "long" - } - } - }, - "write": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "outstanding": { - "properties": { - "read": { - "properties": { - "count": { - "type": "long" - } - } - }, - "write": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "successful": { - "properties": { - "read": { - "properties": { - "count": { - "type": "long" - } - } - }, - "write": { - "properties": { - "count": { - "type": "long" - } - } - } - } - } - } - }, - "shard_id": { - "type": "long" - }, - "total_time": { - "properties": { - "read": { - "properties": { - "ms": { - "type": "long" - }, - "remote_exec": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "write": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "write_buffer": { - "properties": { - "operation": { - "properties": { - "count": { - "type": "long" - } - } - }, - "size": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - }, - "cluster": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "pending_task": { - "properties": { - "insert_order": { - "type": "long" - }, - "priority": { - "type": "long" - }, - "source": { - "ignore_above": 1024, - "type": "keyword" - }, - "time_in_queue": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "state": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "stats": { - "properties": { - "indices": { - "properties": { - "fielddata": { - "properties": { - "memory": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "shards": { - "properties": { - "count": { - "type": "long" - }, - "docs": { - "properties": { - "total": { - "type": "long" - } - } - }, - "primaries": { - "type": "long" - } - } - }, - "store": { - "properties": { - "size": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "total": { - "type": "long" - } - } - }, - "license": { - "properties": { - "expiry_date_in_millis": { - "type": "long" - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "nodes": { - "properties": { - "count": { - "type": "long" - }, - "data": { - "type": "long" - }, - "fs": { - "properties": { - "available": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "total": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "jvm": { - "properties": { - "max_uptime": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "memory": { - "properties": { - "heap": { - "properties": { - "max": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "master": { - "type": "long" - }, - "stats": { - "properties": { - "data": { - "type": "long" - } - } - } - } - }, - "stack": { - "properties": { - "apm": { - "properties": { - "found": { - "type": "boolean" - } - } - }, - "xpack": { - "properties": { - "ccr": { - "properties": { - "available": { - "type": "boolean" - }, - "enabled": { - "type": "boolean" - } - } - } - } - } - } - }, - "state": { - "properties": { - "master_node": { - "ignore_above": 1024, - "type": "keyword" - }, - "nodes_hash": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_uuid": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "enrich": { - "properties": { - "executed_searches": { - "properties": { - "total": { - "type": "long" - } - } - }, - "executing_policy": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "task": { - "properties": { - "action": { - "ignore_above": 1024, - "type": "keyword" - }, - "cancellable": { - "type": "boolean" - }, - "id": { - "type": "long" - }, - "parent_task_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "task": { - "ignore_above": 1024, - "type": "keyword" - }, - "time": { - "properties": { - "running": { - "properties": { - "nano": { - "type": "long" - } - } - }, - "start": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "queue": { - "properties": { - "size": { - "type": "long" - } - } - }, - "remote_requests": { - "properties": { - "current": { - "type": "long" - }, - "total": { - "type": "long" - } - } - } - } - }, - "index": { - "properties": { - "created": { - "type": "long" - }, - "hidden": { - "type": "boolean" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "primaries": { - "properties": { - "docs": { - "properties": { - "count": { - "type": "long" - }, - "deleted": { - "type": "long" - } - } - }, - "indexing": { - "properties": { - "index_time_in_millis": { - "type": "long" - }, - "index_total": { - "type": "long" - }, - "throttle_time_in_millis": { - "type": "long" - } - } - }, - "merges": { - "properties": { - "total_size_in_bytes": { - "type": "long" - } - } - }, - "query_cache": { - "properties": { - "hit_count": { - "type": "long" - }, - "memory_size_in_bytes": { - "type": "long" - }, - "miss_count": { - "type": "long" - } - } - }, - "refresh": { - "properties": { - "external_total_time_in_millis": { - "type": "long" - }, - "total_time_in_millis": { - "type": "long" - } - } - }, - "request_cache": { - "properties": { - "evictions": { - "type": "long" - }, - "hit_count": { - "type": "long" - }, - "memory_size_in_bytes": { - "type": "long" - }, - "miss_count": { - "type": "long" - } - } - }, - "search": { - "properties": { - "query_time_in_millis": { - "type": "long" - }, - "query_total": { - "type": "long" - } - } - }, - "segments": { - "properties": { - "count": { - "type": "long" - }, - "doc_values_memory_in_bytes": { - "type": "long" - }, - "fixed_bit_set_memory_in_bytes": { - "type": "long" - }, - "index_writer_memory_in_bytes": { - "type": "long" - }, - "memory_in_bytes": { - "type": "long" - }, - "norms_memory_in_bytes": { - "type": "long" - }, - "points_memory_in_bytes": { - "type": "long" - }, - "stored_fields_memory_in_bytes": { - "type": "long" - }, - "term_vectors_memory_in_bytes": { - "type": "long" - }, - "terms_memory_in_bytes": { - "type": "long" - }, - "version_map_memory_in_bytes": { - "type": "long" - } - } - }, - "store": { - "properties": { - "size_in_bytes": { - "type": "long" - } - } - } - } - }, - "recovery": { - "properties": { - "id": { - "type": "long" - }, - "index": { - "properties": { - "files": { - "properties": { - "percent": { - "ignore_above": 1024, - "type": "keyword" - }, - "recovered": { - "type": "long" - }, - "reused": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "size": { - "properties": { - "recovered_in_bytes": { - "type": "long" - }, - "reused_in_bytes": { - "type": "long" - }, - "total_in_bytes": { - "type": "long" - } - } - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "primary": { - "type": "boolean" - }, - "source": { - "properties": { - "host": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "transport_address": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "stage": { - "ignore_above": 1024, - "type": "keyword" - }, - "start_time": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "stop_time": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "target": { - "properties": { - "host": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "transport_address": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "total_time": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "translog": { - "properties": { - "percent": { - "ignore_above": 1024, - "type": "keyword" - }, - "total": { - "type": "long" - }, - "total_on_start": { - "type": "long" - } - } - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "verify_index": { - "properties": { - "check_index_time": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "total_time": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - } - } - }, - "shards": { - "properties": { - "primaries": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "summary": { - "properties": { - "primaries": { - "properties": { - "bulk": { - "properties": { - "operations": { - "properties": { - "count": { - "type": "long" - } - } - }, - "size": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "time": { - "properties": { - "avg": { - "properties": { - "bytes": { - "type": "long" - }, - "ms": { - "type": "long" - } - } - }, - "count": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - } - } - }, - "docs": { - "properties": { - "count": { - "type": "long" - }, - "deleted": { - "type": "long" - } - } - }, - "indexing": { - "properties": { - "index": { - "properties": { - "count": { - "type": "long" - }, - "time": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - } - } - }, - "search": { - "properties": { - "query": { - "properties": { - "count": { - "type": "long" - }, - "time": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - } - } - }, - "segments": { - "properties": { - "count": { - "type": "long" - }, - "memory": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "store": { - "properties": { - "size": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - }, - "total": { - "properties": { - "bulk": { - "properties": { - "operations": { - "properties": { - "count": { - "type": "long" - } - } - }, - "size": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "time": { - "properties": { - "avg": { - "properties": { - "bytes": { - "type": "long" - }, - "ms": { - "type": "long" - } - } - } - } - } - } - }, - "docs": { - "properties": { - "count": { - "type": "long" - }, - "deleted": { - "type": "long" - } - } - }, - "indexing": { - "properties": { - "index": { - "properties": { - "count": { - "type": "long" - }, - "time": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "is_throttled": { - "type": "boolean" - }, - "throttle_time": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "search": { - "properties": { - "query": { - "properties": { - "count": { - "type": "long" - }, - "time": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - } - } - }, - "segments": { - "properties": { - "count": { - "type": "long" - }, - "memory": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "store": { - "properties": { - "size": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "total": { - "properties": { - "bulk": { - "properties": { - "avg_size_in_bytes": { - "type": "long" - }, - "avg_time_in_millis": { - "type": "long" - }, - "total_operations": { - "type": "long" - }, - "total_size_in_bytes": { - "type": "long" - }, - "total_time_in_millis": { - "type": "long" - } - } - }, - "docs": { - "properties": { - "count": { - "type": "long" - }, - "deleted": { - "type": "long" - } - } - }, - "fielddata": { - "properties": { - "evictions": { - "type": "long" - }, - "memory_size_in_bytes": { - "type": "long" - } - } - }, - "indexing": { - "properties": { - "index_time_in_millis": { - "type": "long" - }, - "index_total": { - "type": "long" - }, - "throttle_time_in_millis": { - "type": "long" - } - } - }, - "merges": { - "properties": { - "total_size_in_bytes": { - "type": "long" - } - } - }, - "query_cache": { - "properties": { - "evictions": { - "type": "long" - }, - "hit_count": { - "type": "long" - }, - "memory_size_in_bytes": { - "type": "long" - }, - "miss_count": { - "type": "long" - } - } - }, - "refresh": { - "properties": { - "external_total_time_in_millis": { - "type": "long" - }, - "total_time_in_millis": { - "type": "long" - } - } - }, - "request_cache": { - "properties": { - "evictions": { - "type": "long" - }, - "hit_count": { - "type": "long" - }, - "memory_size_in_bytes": { - "type": "long" - }, - "miss_count": { - "type": "long" - } - } - }, - "search": { - "properties": { - "query_time_in_millis": { - "type": "long" - }, - "query_total": { - "type": "long" - } - } - }, - "segments": { - "properties": { - "count": { - "type": "long" - }, - "doc_values_memory_in_bytes": { - "type": "long" - }, - "fixed_bit_set_memory_in_bytes": { - "type": "long" - }, - "index_writer_memory_in_bytes": { - "type": "long" - }, - "memory_in_bytes": { - "type": "long" - }, - "norms_memory_in_bytes": { - "type": "long" - }, - "points_memory_in_bytes": { - "type": "long" - }, - "stored_fields_memory_in_bytes": { - "type": "long" - }, - "term_vectors_memory_in_bytes": { - "type": "long" - }, - "terms_memory_in_bytes": { - "type": "long" - }, - "version_map_memory_in_bytes": { - "type": "long" - } - } - }, - "store": { - "properties": { - "size_in_bytes": { - "type": "long" - } - } - } - } - }, - "uuid": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "ml": { - "properties": { - "job": { - "properties": { - "data": { - "properties": { - "invalid_date": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "data_counts": { - "properties": { - "invalid_date_count": { - "type": "long" - }, - "processed_record_count": { - "type": "long" - } - } - }, - "forecasts_stats": { - "properties": { - "total": { - "type": "long" - } - } - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "model_size": { - "properties": { - "memory_status": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "node": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "jvm": { - "properties": { - "memory": { - "properties": { - "heap": { - "properties": { - "init": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "max": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "nonheap": { - "properties": { - "init": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "max": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "master": { - "type": "boolean" - }, - "mlockall": { - "type": "boolean" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "process": { - "properties": { - "mlockall": { - "type": "boolean" - } - } - }, - "stats": { - "properties": { - "fs": { - "properties": { - "io_stats": { - "properties": { - "total": { - "properties": { - "operations": { - "properties": { - "count": { - "type": "long" - } - } - }, - "read": { - "properties": { - "operations": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "write": { - "properties": { - "operations": { - "properties": { - "count": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "summary": { - "properties": { - "available": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "free": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "total": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "total": { - "properties": { - "available_in_bytes": { - "type": "long" - }, - "total_in_bytes": { - "type": "long" - } - } - } - } - }, - "indexing_pressure": { - "properties": { - "memory": { - "properties": { - "current": { - "properties": { - "all": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "combined_coordinating_and_primary": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "coordinating": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "primary": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "replica": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "limit_in_bytes": { - "type": "long" - }, - "total": { - "properties": { - "all": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "combined_coordinating_and_primary": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "coordinating": { - "properties": { - "bytes": { - "type": "long" - }, - "rejections": { - "type": "long" - } - } - }, - "primary": { - "properties": { - "bytes": { - "type": "long" - }, - "rejections": { - "type": "long" - } - } - }, - "replica": { - "properties": { - "bytes": { - "type": "long" - }, - "rejections": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "indices": { - "properties": { - "bulk": { - "properties": { - "avg_size": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "avg_time": { - "properties": { - "bytes": { - "type": "long" - }, - "ms": { - "type": "long" - } - } - }, - "operations": { - "properties": { - "total": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "total_size": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "total_time": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "docs": { - "properties": { - "count": { - "type": "long" - }, - "deleted": { - "type": "long" - } - } - }, - "fielddata": { - "properties": { - "memory": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "indexing": { - "properties": { - "index_time": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "index_total": { - "properties": { - "count": { - "type": "long" - } - } - }, - "throttle_time": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "query_cache": { - "properties": { - "memory": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "request_cache": { - "properties": { - "memory": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "search": { - "properties": { - "query_time": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "query_total": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "segments": { - "properties": { - "count": { - "type": "long" - }, - "doc_values": { - "properties": { - "memory": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "fixed_bit_set": { - "properties": { - "memory": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "index_writer": { - "properties": { - "memory": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "memory": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "norms": { - "properties": { - "memory": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "points": { - "properties": { - "memory": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "stored_fields": { - "properties": { - "memory": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "term_vectors": { - "properties": { - "memory": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "terms": { - "properties": { - "memory": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "version_map": { - "properties": { - "memory": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - }, - "store": { - "properties": { - "size": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - }, - "ingest": { - "properties": { - "total": { - "properties": { - "count": { - "type": "long" - }, - "current": { - "type": "long" - }, - "failed": { - "type": "long" - }, - "time_in_millis": { - "type": "long" - } - } - } - } - }, - "jvm": { - "properties": { - "gc": { - "properties": { - "collectors": { - "properties": { - "old": { - "properties": { - "collection": { - "properties": { - "count": { - "type": "long" - }, - "ms": { - "type": "long" - } - } - } - } - }, - "young": { - "properties": { - "collection": { - "properties": { - "count": { - "type": "long" - }, - "ms": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "mem": { - "properties": { - "heap": { - "properties": { - "max": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "long" - }, - "pct": { - "type": "double" - } - } - } - } - }, - "pools": { - "properties": { - "old": { - "properties": { - "max": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "peak": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "peak_max": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "survivor": { - "properties": { - "max": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "peak": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "peak_max": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "young": { - "properties": { - "max": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "peak": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "peak_max": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - } - } - } - } - }, - "os": { - "properties": { - "cgroup": { - "properties": { - "cpu": { - "properties": { - "cfs": { - "properties": { - "quota": { - "properties": { - "us": { - "type": "long" - } - } - } - } - }, - "stat": { - "properties": { - "elapsed_periods": { - "properties": { - "count": { - "type": "long" - } - } - }, - "time_throttled": { - "properties": { - "ns": { - "type": "long" - } - } - }, - "times_throttled": { - "properties": { - "count": { - "type": "long" - } - } - } - } - } - } - }, - "cpuacct": { - "properties": { - "usage": { - "properties": { - "ns": { - "type": "long" - } - } - } - } - }, - "memory": { - "properties": { - "control_group": { - "ignore_above": 1024, - "type": "keyword" - }, - "limit": { - "properties": { - "bytes": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "usage": { - "properties": { - "bytes": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - } - } - }, - "cpu": { - "properties": { - "load_avg": { - "properties": { - "1m": { - "type": "half_float" - } - } - } - } - } - } - }, - "process": { - "properties": { - "cpu": { - "properties": { - "pct": { - "type": "double" - } - } - } - } - }, - "thread_pool": { - "properties": { - "bulk": { - "properties": { - "queue": { - "properties": { - "count": { - "type": "long" - } - } - }, - "rejected": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "get": { - "properties": { - "queue": { - "properties": { - "count": { - "type": "long" - } - } - }, - "rejected": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "index": { - "properties": { - "queue": { - "properties": { - "count": { - "type": "long" - } - } - }, - "rejected": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "search": { - "properties": { - "queue": { - "properties": { - "count": { - "type": "long" - } - } - }, - "rejected": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "write": { - "properties": { - "queue": { - "properties": { - "count": { - "type": "long" - } - } - }, - "rejected": { - "properties": { - "count": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "shard": { - "properties": { - "number": { - "type": "long" - }, - "primary": { - "type": "boolean" - }, - "relocating_node": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "source_node": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "uuid": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "elf": { - "properties": { - "architecture": { - "ignore_above": 1024, - "type": "keyword" - }, - "byte_order": { - "ignore_above": 1024, - "type": "keyword" - }, - "cpu_type": { - "ignore_above": 1024, - "type": "keyword" - }, - "creation_date": { - "type": "date" - }, - "exports": { - "type": "flattened" - }, - "header": { - "properties": { - "abi_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "class": { - "ignore_above": 1024, - "type": "keyword" - }, - "data": { - "ignore_above": 1024, - "type": "keyword" - }, - "entrypoint": { - "type": "long" - }, - "object_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "os_abi": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "imports": { - "type": "flattened" - }, - "sections": { - "properties": { - "chi2": { - "type": "long" - }, - "entropy": { - "type": "long" - }, - "flags": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "physical_offset": { - "ignore_above": 1024, - "type": "keyword" - }, - "physical_size": { - "type": "long" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "virtual_address": { - "type": "long" - }, - "virtual_size": { - "type": "long" - } - }, - "type": "nested" - }, - "segments": { - "properties": { - "sections": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - }, - "type": "nested" - }, - "shared_libraries": { - "ignore_above": 1024, - "type": "keyword" - }, - "telfhash": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "envoyproxy": { - "properties": { - "server": { - "properties": { - "cluster_manager": { - "properties": { - "active_clusters": { - "type": "long" - }, - "cluster_added": { - "type": "long" - }, - "cluster_modified": { - "type": "long" - }, - "cluster_removed": { - "type": "long" - }, - "cluster_updated": { - "type": "long" - }, - "cluster_updated_via_merge": { - "type": "long" - }, - "update_merge_cancelled": { - "type": "long" - }, - "update_out_of_merge_window": { - "type": "long" - }, - "warming_clusters": { - "type": "long" - } - } - }, - "filesystem": { - "properties": { - "flushed_by_timer": { - "type": "long" - }, - "reopen_failed": { - "type": "long" - }, - "write_buffered": { - "type": "long" - }, - "write_completed": { - "type": "long" - }, - "write_failed": { - "type": "long" - }, - "write_total_buffered": { - "type": "long" - } - } - }, - "http2": { - "properties": { - "header_overflow": { - "type": "long" - }, - "headers_cb_no_stream": { - "type": "long" - }, - "rx_messaging_error": { - "type": "long" - }, - "rx_reset": { - "type": "long" - }, - "too_many_header_frames": { - "type": "long" - }, - "trailers": { - "type": "long" - }, - "tx_reset": { - "type": "long" - } - } - }, - "listener_manager": { - "properties": { - "listener_added": { - "type": "long" - }, - "listener_create_failure": { - "type": "long" - }, - "listener_create_success": { - "type": "long" - }, - "listener_modified": { - "type": "long" - }, - "listener_removed": { - "type": "long" - }, - "listener_stopped": { - "type": "long" - }, - "total_listeners_active": { - "type": "long" - }, - "total_listeners_draining": { - "type": "long" - }, - "total_listeners_warming": { - "type": "long" - } - } - }, - "runtime": { - "properties": { - "admin_overrides_active": { - "type": "long" - }, - "deprecated_feature_use": { - "type": "long" - }, - "load_error": { - "type": "long" - }, - "load_success": { - "type": "long" - }, - "num_keys": { - "type": "long" - }, - "num_layers": { - "type": "long" - }, - "override_dir_exists": { - "type": "long" - }, - "override_dir_not_exists": { - "type": "long" - } - } - }, - "server": { - "properties": { - "concurrency": { - "type": "long" - }, - "days_until_first_cert_expiring": { - "type": "long" - }, - "debug_assertion_failures": { - "type": "long" - }, - "dynamic_unknown_fields": { - "type": "long" - }, - "hot_restart_epoch": { - "type": "long" - }, - "live": { - "type": "long" - }, - "memory_allocated": { - "type": "long" - }, - "memory_heap_size": { - "type": "long" - }, - "parent_connections": { - "type": "long" - }, - "state": { - "type": "long" - }, - "static_unknown_fields": { - "type": "long" - }, - "stats_recent_lookups": { - "type": "long" - }, - "total_connections": { - "type": "long" - }, - "uptime": { - "type": "long" - }, - "version": { - "type": "long" - }, - "watchdog_mega_miss": { - "type": "long" - }, - "watchdog_miss": { - "type": "long" - } - } - }, - "stats": { - "properties": { - "overflow": { - "type": "long" - } - } - } - } - } - } - }, - "error": { - "properties": { - "code": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "message": { - "norms": false, - "type": "text" - }, - "stack_trace": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "etcd": { - "properties": { - "api_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "disk": { - "properties": { - "backend_commit_duration": { - "properties": { - "ns": { - "properties": { - "bucket": { - "properties": { - "*": { - "type": "object" - } - } - }, - "count": { - "type": "long" - }, - "sum": { - "type": "long" - } - } - } - } - }, - "mvcc_db_total_size": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "wal_fsync_duration": { - "properties": { - "ns": { - "properties": { - "bucket": { - "properties": { - "*": { - "type": "object" - } - } - }, - "count": { - "type": "long" - }, - "sum": { - "type": "long" - } - } - } - } - } - } - }, - "leader": { - "properties": { - "follower": { - "properties": { - "failed_operations": { - "type": "long" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "latency": { - "properties": { - "ms": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "leader": { - "ignore_above": 1024, - "type": "keyword" - }, - "success_operations": { - "type": "long" - } - } - } - } - }, - "memory": { - "properties": { - "go_memstats_alloc": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "network": { - "properties": { - "client_grpc_received": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "client_grpc_sent": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "self": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "leaderinfo": { - "properties": { - "leader": { - "ignore_above": 1024, - "type": "keyword" - }, - "starttime": { - "ignore_above": 1024, - "type": "keyword" - }, - "uptime": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "recv": { - "properties": { - "appendrequest": { - "properties": { - "count": { - "type": "long" - } - } - }, - "bandwidthrate": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "pkgrate": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "send": { - "properties": { - "appendrequest": { - "properties": { - "count": { - "type": "long" - } - } - }, - "bandwidthrate": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "pkgrate": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "starttime": { - "ignore_above": 1024, - "type": "keyword" - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "server": { - "properties": { - "grpc_handled": { - "properties": { - "count": { - "type": "long" - } - } - }, - "grpc_started": { - "properties": { - "count": { - "type": "long" - } - } - }, - "has_leader": { - "type": "byte" - }, - "leader_changes": { - "properties": { - "count": { - "type": "long" - } - } - }, - "proposals_committed": { - "properties": { - "count": { - "type": "long" - } - } - }, - "proposals_failed": { - "properties": { - "count": { - "type": "long" - } - } - }, - "proposals_pending": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "store": { - "properties": { - "compareanddelete": { - "properties": { - "fail": { - "type": "long" - }, - "success": { - "type": "long" - } - } - }, - "compareandswap": { - "properties": { - "fail": { - "type": "long" - }, - "success": { - "type": "long" - } - } - }, - "create": { - "properties": { - "fail": { - "type": "long" - }, - "success": { - "type": "long" - } - } - }, - "delete": { - "properties": { - "fail": { - "type": "long" - }, - "success": { - "type": "long" - } - } - }, - "expire": { - "properties": { - "count": { - "type": "long" - } - } - }, - "gets": { - "properties": { - "fail": { - "type": "long" - }, - "success": { - "type": "long" - } - } - }, - "sets": { - "properties": { - "fail": { - "type": "long" - }, - "success": { - "type": "long" - } - } - }, - "update": { - "properties": { - "fail": { - "type": "long" - }, - "success": { - "type": "long" - } - } - }, - "watchers": { - "type": "long" - } - } - } - } - }, - "event": { - "properties": { - "action": { - "ignore_above": 1024, - "type": "keyword" - }, - "agent_id_status": { - "ignore_above": 1024, - "type": "keyword" - }, - "category": { - "ignore_above": 1024, - "type": "keyword" - }, - "code": { - "ignore_above": 1024, - "type": "keyword" - }, - "created": { - "type": "date" - }, - "dataset": { - "ignore_above": 1024, - "type": "keyword" - }, - "duration": { - "type": "long" - }, - "end": { - "type": "date" - }, - "hash": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "ingested": { - "type": "date" - }, - "kind": { - "ignore_above": 1024, - "type": "keyword" - }, - "module": { - "ignore_above": 1024, - "type": "keyword" - }, - "original": { - "doc_values": false, - "ignore_above": 1024, - "index": false, - "type": "keyword" - }, - "outcome": { - "ignore_above": 1024, - "type": "keyword" - }, - "provider": { - "ignore_above": 1024, - "type": "keyword" - }, - "reason": { - "ignore_above": 1024, - "type": "keyword" - }, - "reference": { - "ignore_above": 1024, - "type": "keyword" - }, - "risk_score": { - "type": "float" - }, - "risk_score_norm": { - "type": "float" - }, - "sequence": { - "type": "long" - }, - "severity": { - "type": "long" - }, - "start": { - "type": "date" - }, - "timezone": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "url": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "faas": { - "properties": { - "coldstart": { - "type": "boolean" - }, - "execution": { - "ignore_above": 1024, - "type": "keyword" - }, - "trigger": { - "properties": { - "request_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - }, - "type": "nested" - } - } - }, - "fields": { - "type": "object" - }, - "file": { - "properties": { - "accessed": { - "type": "date" - }, - "attributes": { - "ignore_above": 1024, - "type": "keyword" - }, - "code_signature": { - "properties": { - "digest_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "exists": { - "type": "boolean" - }, - "signing_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "team_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "timestamp": { - "type": "date" - }, - "trusted": { - "type": "boolean" - }, - "valid": { - "type": "boolean" - } - } - }, - "created": { - "type": "date" - }, - "ctime": { - "type": "date" - }, - "device": { - "ignore_above": 1024, - "type": "keyword" - }, - "directory": { - "ignore_above": 1024, - "type": "keyword" - }, - "drive_letter": { - "ignore_above": 1, - "type": "keyword" - }, - "elf": { - "properties": { - "architecture": { - "ignore_above": 1024, - "type": "keyword" - }, - "byte_order": { - "ignore_above": 1024, - "type": "keyword" - }, - "cpu_type": { - "ignore_above": 1024, - "type": "keyword" - }, - "creation_date": { - "type": "date" - }, - "exports": { - "type": "flattened" - }, - "header": { - "properties": { - "abi_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "class": { - "ignore_above": 1024, - "type": "keyword" - }, - "data": { - "ignore_above": 1024, - "type": "keyword" - }, - "entrypoint": { - "type": "long" - }, - "object_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "os_abi": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "imports": { - "type": "flattened" - }, - "sections": { - "properties": { - "chi2": { - "type": "long" - }, - "entropy": { - "type": "long" - }, - "flags": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "physical_offset": { - "ignore_above": 1024, - "type": "keyword" - }, - "physical_size": { - "type": "long" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "virtual_address": { - "type": "long" - }, - "virtual_size": { - "type": "long" - } - }, - "type": "nested" - }, - "segments": { - "properties": { - "sections": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - }, - "type": "nested" - }, - "shared_libraries": { - "ignore_above": 1024, - "type": "keyword" - }, - "telfhash": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "extension": { - "ignore_above": 1024, - "type": "keyword" - }, - "fork_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "gid": { - "ignore_above": 1024, - "type": "keyword" - }, - "group": { - "ignore_above": 1024, - "type": "keyword" - }, - "hash": { - "properties": { - "md5": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha1": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha256": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha512": { - "ignore_above": 1024, - "type": "keyword" - }, - "ssdeep": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "inode": { - "ignore_above": 1024, - "type": "keyword" - }, - "mime_type": { - "ignore_above": 1024, - "type": "keyword" - }, - "mode": { - "ignore_above": 1024, - "type": "keyword" - }, - "mtime": { - "type": "date" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "owner": { - "ignore_above": 1024, - "type": "keyword" - }, - "path": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "pe": { - "properties": { - "architecture": { - "ignore_above": 1024, - "type": "keyword" - }, - "company": { - "ignore_above": 1024, - "type": "keyword" - }, - "description": { - "ignore_above": 1024, - "type": "keyword" - }, - "file_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "imphash": { - "ignore_above": 1024, - "type": "keyword" - }, - "original_file_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "product": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "size": { - "type": "long" - }, - "target_path": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "uid": { - "ignore_above": 1024, - "type": "keyword" - }, - "x509": { - "properties": { - "alternative_names": { - "ignore_above": 1024, - "type": "keyword" - }, - "issuer": { - "properties": { - "common_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country": { - "ignore_above": 1024, - "type": "keyword" - }, - "distinguished_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "locality": { - "ignore_above": 1024, - "type": "keyword" - }, - "organization": { - "ignore_above": 1024, - "type": "keyword" - }, - "organizational_unit": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_or_province": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "not_after": { - "type": "date" - }, - "not_before": { - "type": "date" - }, - "public_key_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "public_key_curve": { - "ignore_above": 1024, - "type": "keyword" - }, - "public_key_exponent": { - "doc_values": false, - "index": false, - "type": "long" - }, - "public_key_size": { - "type": "long" - }, - "serial_number": { - "ignore_above": 1024, - "type": "keyword" - }, - "signature_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject": { - "properties": { - "common_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country": { - "ignore_above": 1024, - "type": "keyword" - }, - "distinguished_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "locality": { - "ignore_above": 1024, - "type": "keyword" - }, - "organization": { - "ignore_above": 1024, - "type": "keyword" - }, - "organizational_unit": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_or_province": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "version_number": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "geo": { - "properties": { - "city_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "location": { - "type": "geo_point" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "postal_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "timezone": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "golang": { - "properties": { - "expvar": { - "properties": { - "cmdline": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "heap": { - "properties": { - "allocations": { - "properties": { - "active": { - "type": "long" - }, - "allocated": { - "type": "long" - }, - "frees": { - "type": "long" - }, - "idle": { - "type": "long" - }, - "mallocs": { - "type": "long" - }, - "objects": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "cmdline": { - "ignore_above": 1024, - "type": "keyword" - }, - "gc": { - "properties": { - "cpu_fraction": { - "type": "float" - }, - "next_gc_limit": { - "type": "long" - }, - "pause": { - "properties": { - "avg": { - "properties": { - "ns": { - "type": "long" - } - } - }, - "count": { - "type": "long" - }, - "max": { - "properties": { - "ns": { - "type": "long" - } - } - }, - "sum": { - "properties": { - "ns": { - "type": "long" - } - } - } - } - }, - "total_count": { - "type": "long" - }, - "total_pause": { - "properties": { - "ns": { - "type": "long" - } - } - } - } - }, - "system": { - "properties": { - "obtained": { - "type": "long" - }, - "released": { - "type": "long" - }, - "stack": { - "type": "long" - }, - "total": { - "type": "long" - } - } - } - } - } - } - }, - "graphite": { - "properties": { - "server": { - "properties": { - "example": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "group": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "haproxy": { - "properties": { - "info": { - "properties": { - "busy_polling": { - "type": "long" - }, - "bytes": { - "properties": { - "out": { - "properties": { - "rate": { - "type": "long" - }, - "total": { - "type": "long" - } - } - } - } - }, - "compress": { - "properties": { - "bps": { - "properties": { - "in": { - "type": "long" - }, - "out": { - "type": "long" - }, - "rate_limit": { - "type": "long" - } - } - } - } - }, - "connection": { - "properties": { - "current": { - "type": "long" - }, - "hard_max": { - "type": "long" - }, - "max": { - "type": "long" - }, - "rate": { - "properties": { - "limit": { - "type": "long" - }, - "max": { - "type": "long" - }, - "value": { - "type": "long" - } - } - }, - "ssl": { - "properties": { - "current": { - "type": "long" - }, - "max": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "total": { - "type": "long" - } - } - }, - "dropped_logs": { - "type": "long" - }, - "failed_resolutions": { - "type": "long" - }, - "idle": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "jobs": { - "type": "long" - }, - "listeners": { - "type": "long" - }, - "memory": { - "properties": { - "max": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "peers": { - "properties": { - "active": { - "type": "long" - }, - "connected": { - "type": "long" - } - } - }, - "pipes": { - "properties": { - "free": { - "type": "long" - }, - "max": { - "type": "long" - }, - "used": { - "type": "long" - } - } - }, - "pool": { - "properties": { - "allocated": { - "type": "long" - }, - "failed": { - "type": "long" - }, - "used": { - "type": "long" - } - } - }, - "process_num": { - "type": "long" - }, - "processes": { - "type": "long" - }, - "requests": { - "properties": { - "max": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "run_queue": { - "type": "long" - }, - "session": { - "properties": { - "rate": { - "properties": { - "limit": { - "type": "long" - }, - "max": { - "type": "long" - }, - "value": { - "type": "long" - } - } - } - } - }, - "sockets": { - "properties": { - "max": { - "type": "long" - } - } - }, - "ssl": { - "properties": { - "backend": { - "properties": { - "key_rate": { - "properties": { - "max": { - "type": "long" - }, - "value": { - "type": "long" - } - } - } - } - }, - "cache_misses": { - "type": "long" - }, - "cached_lookups": { - "type": "long" - }, - "frontend": { - "properties": { - "key_rate": { - "properties": { - "max": { - "type": "long" - }, - "value": { - "type": "long" - } - } - }, - "session_reuse": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - }, - "rate": { - "properties": { - "limit": { - "type": "long" - }, - "max": { - "type": "long" - }, - "value": { - "type": "long" - } - } - } - } - }, - "stopping": { - "type": "long" - }, - "tasks": { - "type": "long" - }, - "threads": { - "type": "long" - }, - "ulimit_n": { - "type": "long" - }, - "unstoppable_jobs": { - "type": "long" - }, - "uptime": { - "properties": { - "sec": { - "type": "long" - } - } - }, - "zlib_mem_usage": { - "properties": { - "max": { - "type": "long" - }, - "value": { - "type": "long" - } - } - } - } - }, - "stat": { - "properties": { - "agent": { - "properties": { - "check": { - "properties": { - "description": { - "ignore_above": 1024, - "type": "keyword" - }, - "fall": { - "type": "long" - }, - "health": { - "type": "long" - }, - "rise": { - "type": "long" - } - } - }, - "code": { - "type": "long" - }, - "description": { - "ignore_above": 1024, - "type": "keyword" - }, - "duration": { - "type": "long" - }, - "fall": { - "type": "long" - }, - "health": { - "type": "long" - }, - "rise": { - "type": "long" - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "check": { - "properties": { - "agent": { - "properties": { - "last": { - "type": "long" - } - } - }, - "code": { - "type": "long" - }, - "down": { - "type": "long" - }, - "duration": { - "type": "long" - }, - "failed": { - "type": "long" - }, - "health": { - "properties": { - "fail": { - "type": "long" - }, - "last": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "client": { - "properties": { - "aborted": { - "type": "long" - } - } - }, - "component_type": { - "type": "long" - }, - "compressor": { - "properties": { - "bypassed": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "in": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "out": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "response": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "connection": { - "properties": { - "attempt": { - "properties": { - "total": { - "type": "long" - } - } - }, - "cache": { - "properties": { - "hits": { - "type": "long" - }, - "lookup": { - "properties": { - "total": { - "type": "long" - } - } - } - } - }, - "idle": { - "properties": { - "limit": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "rate": { - "type": "long" - }, - "rate_max": { - "type": "long" - }, - "retried": { - "type": "long" - }, - "reuse": { - "properties": { - "total": { - "type": "long" - } - } - }, - "time": { - "properties": { - "avg": { - "type": "long" - } - } - }, - "total": { - "type": "long" - } - } - }, - "cookie": { - "ignore_above": 1024, - "type": "keyword" - }, - "downtime": { - "type": "long" - }, - "header": { - "properties": { - "rewrite": { - "properties": { - "failed": { - "properties": { - "total": { - "type": "long" - } - } - } - } - } - } - }, - "in": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "last_change": { - "type": "long" - }, - "load_balancing_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "out": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "proxy": { - "properties": { - "id": { - "type": "long" - }, - "mode": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "queue": { - "properties": { - "limit": { - "type": "long" - }, - "time": { - "properties": { - "avg": { - "type": "long" - } - } - } - } - }, - "request": { - "properties": { - "connection": { - "properties": { - "errors": { - "type": "long" - } - } - }, - "denied": { - "type": "long" - }, - "denied_by_connection_rules": { - "type": "long" - }, - "denied_by_session_rules": { - "type": "long" - }, - "errors": { - "type": "long" - }, - "intercepted": { - "type": "long" - }, - "queued": { - "properties": { - "current": { - "type": "long" - }, - "max": { - "type": "long" - } - } - }, - "rate": { - "properties": { - "max": { - "type": "long" - }, - "value": { - "type": "long" - } - } - }, - "redispatched": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "response": { - "properties": { - "denied": { - "type": "long" - }, - "errors": { - "type": "long" - }, - "http": { - "properties": { - "1xx": { - "type": "long" - }, - "2xx": { - "type": "long" - }, - "3xx": { - "type": "long" - }, - "4xx": { - "type": "long" - }, - "5xx": { - "type": "long" - }, - "other": { - "type": "long" - } - } - }, - "time": { - "properties": { - "avg": { - "type": "long" - } - } - } - } - }, - "selected": { - "properties": { - "total": { - "type": "long" - } - } - }, - "server": { - "properties": { - "aborted": { - "type": "long" - }, - "active": { - "type": "long" - }, - "backup": { - "type": "long" - }, - "id": { - "type": "long" - } - } - }, - "service_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "session": { - "properties": { - "current": { - "type": "long" - }, - "limit": { - "type": "long" - }, - "max": { - "type": "long" - }, - "rate": { - "properties": { - "limit": { - "type": "long" - }, - "max": { - "type": "long" - }, - "value": { - "type": "long" - } - } - }, - "total": { - "type": "long" - } - } - }, - "source": { - "properties": { - "address": { - "norms": false, - "type": "text" - } - } - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "throttle": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "tracked": { - "properties": { - "id": { - "type": "long" - } - } - }, - "weight": { - "type": "long" - } - } - } - } - }, - "hash": { - "properties": { - "md5": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha1": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha256": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha512": { - "ignore_above": 1024, - "type": "keyword" - }, - "ssdeep": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "host": { - "properties": { - "architecture": { - "ignore_above": 1024, - "type": "keyword" - }, - "containerized": { - "type": "boolean" - }, - "cpu": { - "properties": { - "usage": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "disk": { - "properties": { - "read": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "write": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "geo": { - "properties": { - "city_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "location": { - "type": "geo_point" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "postal_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "timezone": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "hostname": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "ip": { - "type": "ip" - }, - "mac": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "network": { - "properties": { - "egress": { - "properties": { - "bytes": { - "type": "long" - }, - "packets": { - "type": "long" - } - } - }, - "ingress": { - "properties": { - "bytes": { - "type": "long" - }, - "packets": { - "type": "long" - } - } - } - } - }, - "os": { - "properties": { - "build": { - "ignore_above": 1024, - "type": "keyword" - }, - "codename": { - "ignore_above": 1024, - "type": "keyword" - }, - "family": { - "ignore_above": 1024, - "type": "keyword" - }, - "full": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "kernel": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "platform": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "uptime": { - "type": "long" - } - } - }, - "http": { - "properties": { - "request": { - "properties": { - "body": { - "properties": { - "bytes": { - "type": "long" - }, - "content": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "bytes": { - "type": "long" - }, - "headers": { - "type": "object" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "method": { - "ignore_above": 1024, - "type": "keyword" - }, - "mime_type": { - "ignore_above": 1024, - "type": "keyword" - }, - "referrer": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "response": { - "properties": { - "body": { - "properties": { - "bytes": { - "type": "long" - }, - "content": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "bytes": { - "type": "long" - }, - "code": { - "ignore_above": 1024, - "type": "keyword" - }, - "headers": { - "type": "object" - }, - "mime_type": { - "ignore_above": 1024, - "type": "keyword" - }, - "phrase": { - "ignore_above": 1024, - "type": "keyword" - }, - "status_code": { - "type": "long" - } - } - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "index_recovery": { - "properties": { - "shards": { - "properties": { - "start_time_in_millis": { - "path": "elasticsearch.index.recovery.start_time.ms", - "type": "alias" - }, - "stop_time_in_millis": { - "path": "elasticsearch.index.recovery.stop_time.ms", - "type": "alias" - } - } - } - } - }, - "index_stats": { - "properties": { - "index": { - "path": "elasticsearch.index.name", - "type": "alias" - }, - "primaries": { - "properties": { - "docs": { - "properties": { - "count": { - "path": "elasticsearch.index.primaries.docs.count", - "type": "alias" - } - } - }, - "indexing": { - "properties": { - "index_time_in_millis": { - "path": "elasticsearch.index.primaries.indexing.index_time_in_millis", - "type": "alias" - }, - "index_total": { - "path": "elasticsearch.index.primaries.indexing.index_total", - "type": "alias" - }, - "throttle_time_in_millis": { - "path": "elasticsearch.index.primaries.indexing.throttle_time_in_millis", - "type": "alias" - } - } - }, - "merges": { - "properties": { - "total_size_in_bytes": { - "path": "elasticsearch.index.primaries.merges.total_size_in_bytes", - "type": "alias" - } - } - }, - "refresh": { - "properties": { - "total_time_in_millis": { - "path": "elasticsearch.index.primaries.refresh.total_time_in_millis", - "type": "alias" - } - } - }, - "segments": { - "properties": { - "count": { - "path": "elasticsearch.index.primaries.segments.count", - "type": "alias" - } - } - }, - "store": { - "properties": { - "size_in_bytes": { - "path": "elasticsearch.index.primaries.store.size_in_bytes", - "type": "alias" - } - } - } - } - }, - "total": { - "properties": { - "fielddata": { - "properties": { - "memory_size_in_bytes": { - "path": "elasticsearch.index.total.fielddata.memory_size_in_bytes", - "type": "alias" - } - } - }, - "indexing": { - "properties": { - "index_time_in_millis": { - "path": "elasticsearch.index.total.indexing.index_time_in_millis", - "type": "alias" - }, - "index_total": { - "path": "elasticsearch.index.total.indexing.index_total", - "type": "alias" - }, - "throttle_time_in_millis": { - "path": "elasticsearch.index.total.indexing.throttle_time_in_millis", - "type": "alias" - } - } - }, - "merges": { - "properties": { - "total_size_in_bytes": { - "path": "elasticsearch.index.total.merges.total_size_in_bytes", - "type": "alias" - } - } - }, - "query_cache": { - "properties": { - "memory_size_in_bytes": { - "path": "elasticsearch.index.total.query_cache.memory_size_in_bytes", - "type": "alias" - } - } - }, - "refresh": { - "properties": { - "total_time_in_millis": { - "path": "elasticsearch.index.total.refresh.total_time_in_millis", - "type": "alias" - } - } - }, - "request_cache": { - "properties": { - "memory_size_in_bytes": { - "path": "elasticsearch.index.total.request_cache.memory_size_in_bytes", - "type": "alias" - } - } - }, - "search": { - "properties": { - "query_time_in_millis": { - "path": "elasticsearch.index.total.search.query_time_in_millis", - "type": "alias" - }, - "query_total": { - "path": "elasticsearch.index.total.search.query_total", - "type": "alias" - } - } - }, - "segments": { - "properties": { - "count": { - "path": "elasticsearch.index.total.segments.count", - "type": "alias" - }, - "doc_values_memory_in_bytes": { - "path": "elasticsearch.index.total.segments.doc_values_memory_in_bytes", - "type": "alias" - }, - "fixed_bit_set_memory_in_bytes": { - "path": "elasticsearch.index.total.segments.fixed_bit_set_memory_in_bytes", - "type": "alias" - }, - "index_writer_memory_in_bytes": { - "path": "elasticsearch.index.total.segments.index_writer_memory_in_bytes", - "type": "alias" - }, - "memory_in_bytes": { - "path": "elasticsearch.index.total.segments.memory_in_bytes", - "type": "alias" - }, - "norms_memory_in_bytes": { - "path": "elasticsearch.index.total.segments.norms_memory_in_bytes", - "type": "alias" - }, - "points_memory_in_bytes": { - "path": "elasticsearch.index.total.segments.points_memory_in_bytes", - "type": "alias" - }, - "stored_fields_memory_in_bytes": { - "path": "elasticsearch.index.total.segments.stored_fields_memory_in_bytes", - "type": "alias" - }, - "term_vectors_memory_in_bytes": { - "path": "elasticsearch.index.total.segments.term_vectors_memory_in_bytes", - "type": "alias" - }, - "terms_memory_in_bytes": { - "path": "elasticsearch.index.total.segments.terms_memory_in_bytes", - "type": "alias" - }, - "version_map_memory_in_bytes": { - "path": "elasticsearch.index.total.segments.version_map_memory_in_bytes", - "type": "alias" - } - } - }, - "store": { - "properties": { - "size_in_bytes": { - "path": "elasticsearch.index.total.store.size_in_bytes", - "type": "alias" - } - } - } - } - } - } - }, - "indices_stats": { - "properties": { - "_all": { - "properties": { - "primaries": { - "properties": { - "indexing": { - "properties": { - "index_time_in_millis": { - "path": "elasticsearch.index.summary.primaries.indexing.index.time.ms", - "type": "alias" - }, - "index_total": { - "path": "elasticsearch.index.summary.primaries.indexing.index.count", - "type": "alias" - } - } - } - } - }, - "total": { - "properties": { - "indexing": { - "properties": { - "index_total": { - "path": "elasticsearch.index.summary.total.indexing.index.count", - "type": "alias" - } - } - }, - "search": { - "properties": { - "query_time_in_millis": { - "path": "elasticsearch.index.summary.total.search.query.time.ms", - "type": "alias" - }, - "query_total": { - "path": "elasticsearch.index.summary.total.search.query.count", - "type": "alias" - } - } - } - } - } - } - } - } - }, - "interface": { - "properties": { - "alias": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "job_stats": { - "properties": { - "forecasts_stats": { - "properties": { - "total": { - "path": "elasticsearch.ml.job.forecasts_stats.total", - "type": "alias" - } - } - }, - "job_id": { - "path": "elasticsearch.ml.job.id", - "type": "alias" - } - } - }, - "jolokia": { - "properties": { - "agent": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "secured": { - "type": "boolean" - }, - "server": { - "properties": { - "product": { - "ignore_above": 1024, - "type": "keyword" - }, - "vendor": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "url": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "kafka": { - "properties": { - "broker": { - "properties": { - "address": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "type": "long" - }, - "log": { - "properties": { - "flush_rate": { - "type": "float" - } - } - }, - "mbean": { - "ignore_above": 1024, - "type": "keyword" - }, - "messages_in": { - "type": "float" - }, - "net": { - "properties": { - "in": { - "properties": { - "bytes_per_sec": { - "type": "float" - } - } - }, - "out": { - "properties": { - "bytes_per_sec": { - "type": "float" - } - } - }, - "rejected": { - "properties": { - "bytes_per_sec": { - "type": "float" - } - } - } - } - }, - "replication": { - "properties": { - "leader_elections": { - "type": "float" - }, - "unclean_leader_elections": { - "type": "float" - } - } - }, - "request": { - "properties": { - "channel": { - "properties": { - "queue": { - "properties": { - "size": { - "type": "long" - } - } - } - } - }, - "fetch": { - "properties": { - "failed": { - "type": "float" - }, - "failed_per_second": { - "type": "float" - } - } - }, - "produce": { - "properties": { - "failed": { - "type": "float" - }, - "failed_per_second": { - "type": "float" - } - } - } - } - }, - "session": { - "properties": { - "zookeeper": { - "properties": { - "disconnect": { - "type": "float" - }, - "expire": { - "type": "float" - }, - "readonly": { - "type": "float" - }, - "sync": { - "type": "float" - } - } - } - } - }, - "topic": { - "properties": { - "messages_in": { - "type": "float" - }, - "net": { - "properties": { - "in": { - "properties": { - "bytes_per_sec": { - "type": "float" - } - } - }, - "out": { - "properties": { - "bytes_per_sec": { - "type": "float" - } - } - }, - "rejected": { - "properties": { - "bytes_per_sec": { - "type": "float" - } - } - } - } - } - } - } - } - }, - "consumer": { - "properties": { - "bytes_consumed": { - "type": "float" - }, - "fetch_rate": { - "type": "float" - }, - "in": { - "properties": { - "bytes_per_sec": { - "type": "float" - } - } - }, - "kafka_commits": { - "type": "float" - }, - "max_lag": { - "type": "float" - }, - "mbean": { - "ignore_above": 1024, - "type": "keyword" - }, - "messages_in": { - "type": "float" - }, - "records_consumed": { - "type": "float" - }, - "zookeeper_commits": { - "type": "float" - } - } - }, - "consumergroup": { - "properties": { - "client": { - "properties": { - "host": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "member_id": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "consumer_lag": { - "type": "long" - }, - "error": { - "properties": { - "code": { - "type": "long" - } - } - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "meta": { - "ignore_above": 1024, - "type": "keyword" - }, - "offset": { - "type": "long" - } - } - }, - "partition": { - "properties": { - "id": { - "type": "long" - }, - "offset": { - "properties": { - "newest": { - "type": "long" - }, - "oldest": { - "type": "long" - } - } - }, - "partition": { - "properties": { - "error": { - "properties": { - "code": { - "type": "long" - } - } - }, - "insync_replica": { - "type": "boolean" - }, - "is_leader": { - "type": "boolean" - }, - "leader": { - "type": "long" - }, - "replica": { - "type": "long" - } - } - }, - "topic_broker_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "topic_id": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "producer": { - "properties": { - "available_buffer_bytes": { - "type": "float" - }, - "batch_size_avg": { - "type": "float" - }, - "batch_size_max": { - "type": "long" - }, - "io_wait": { - "type": "float" - }, - "mbean": { - "ignore_above": 1024, - "type": "keyword" - }, - "message_rate": { - "type": "float" - }, - "out": { - "properties": { - "bytes_per_sec": { - "type": "float" - } - } - }, - "record_error_rate": { - "type": "float" - }, - "record_retry_rate": { - "type": "float" - }, - "record_send_rate": { - "type": "float" - }, - "record_size_avg": { - "type": "float" - }, - "record_size_max": { - "type": "long" - }, - "records_per_request": { - "type": "float" - }, - "request_rate": { - "type": "float" - }, - "response_rate": { - "type": "float" - } - } - }, - "topic": { - "properties": { - "error": { - "properties": { - "code": { - "type": "long" - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "kibana": { - "properties": { - "cluster_actions": { - "properties": { - "kibana": { - "properties": { - "status": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "overdue": { - "properties": { - "count": { - "type": "long" - }, - "delay": { - "properties": { - "p50": { - "type": "float" - }, - "p99": { - "type": "float" - } - } - } - } - } - } - }, - "cluster_rules": { - "properties": { - "kibana": { - "properties": { - "status": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "overdue": { - "properties": { - "count": { - "type": "long" - }, - "delay": { - "properties": { - "p50": { - "type": "float" - }, - "p99": { - "type": "float" - } - } - } - } - } - } - }, - "elasticsearch": { - "properties": { - "cluster": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "node_actions": { - "properties": { - "executions": { - "type": "long" - }, - "failures": { - "type": "long" - }, - "kibana": { - "properties": { - "status": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "timeouts": { - "type": "long" - } - } - }, - "node_rules": { - "properties": { - "executions": { - "type": "long" - }, - "failures": { - "type": "long" - }, - "kibana": { - "properties": { - "status": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "timeouts": { - "type": "long" - } - } - }, - "settings": { - "properties": { - "host": { - "ignore_above": 1024, - "type": "keyword" - }, - "index": { - "ignore_above": 1024, - "type": "keyword" - }, - "locale": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "port": { - "type": "long" - }, - "snapshot": { - "type": "boolean" - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "transport_address": { - "ignore_above": 1024, - "type": "keyword" - }, - "uuid": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "stats": { - "properties": { - "concurrent_connections": { - "type": "long" - }, - "host": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "index": { - "ignore_above": 1024, - "type": "keyword" - }, - "kibana": { - "properties": { - "status": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "os": { - "properties": { - "distro": { - "ignore_above": 1024, - "type": "keyword" - }, - "distroRelease": { - "ignore_above": 1024, - "type": "keyword" - }, - "load": { - "properties": { - "15m": { - "type": "half_float" - }, - "1m": { - "type": "half_float" - }, - "5m": { - "type": "half_float" - } - } - }, - "memory": { - "properties": { - "free_in_bytes": { - "type": "long" - }, - "total_in_bytes": { - "type": "long" - }, - "used_in_bytes": { - "type": "long" - } - } - }, - "platform": { - "ignore_above": 1024, - "type": "keyword" - }, - "platformRelease": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "process": { - "properties": { - "event_loop_delay": { - "properties": { - "ms": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "memory": { - "properties": { - "heap": { - "properties": { - "size_limit": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "total": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "uptime": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "resident_set_size": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "uptime": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "request": { - "properties": { - "disconnects": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "response_time": { - "properties": { - "avg": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "max": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "snapshot": { - "type": "boolean" - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "usage": { - "properties": { - "index": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "status": { - "properties": { - "metrics": { - "properties": { - "concurrent_connections": { - "type": "long" - }, - "requests": { - "properties": { - "disconnects": { - "type": "long" - }, - "total": { - "type": "long" - } - } - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "status": { - "properties": { - "overall": { - "properties": { - "state": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - } - } - } - } - }, - "kibana_stats": { - "properties": { - "concurrent_connections": { - "path": "kibana.stats.concurrent_connections", - "type": "alias" - }, - "kibana": { - "properties": { - "response_time": { - "properties": { - "max": { - "path": "kibana.stats.response_time.max.ms", - "type": "alias" - } - } - }, - "status": { - "path": "kibana.stats.kibana.status", - "type": "alias" - }, - "uuid": { - "path": "service.id", - "type": "alias" - } - } - }, - "os": { - "properties": { - "load": { - "properties": { - "15m": { - "path": "kibana.stats.os.load.15m", - "type": "alias" - }, - "1m": { - "path": "kibana.stats.os.load.1m", - "type": "alias" - }, - "5m": { - "path": "kibana.stats.os.load.5m", - "type": "alias" - } - } - }, - "memory": { - "properties": { - "free_in_bytes": { - "path": "kibana.stats.os.memory.free_in_bytes", - "type": "alias" - } - } - } - } - }, - "process": { - "properties": { - "event_loop_delay": { - "path": "kibana.stats.process.event_loop_delay.ms", - "type": "alias" - }, - "memory": { - "properties": { - "heap": { - "properties": { - "size_limit": { - "path": "kibana.stats.process.memory.heap.size_limit.bytes", - "type": "alias" - } - } - }, - "resident_set_size_in_bytes": { - "path": "kibana.stats.process.memory.resident_set_size.bytes", - "type": "alias" - } - } - }, - "uptime_in_millis": { - "path": "kibana.stats.process.uptime.ms", - "type": "alias" - } - } - }, - "requests": { - "properties": { - "disconnects": { - "path": "kibana.stats.request.disconnects", - "type": "alias" - }, - "total": { - "path": "kibana.stats.request.total", - "type": "alias" - } - } - }, - "response_times": { - "properties": { - "average": { - "path": "kibana.stats.response_time.avg.ms", - "type": "alias" - }, - "max": { - "path": "kibana.stats.response_time.max.ms", - "type": "alias" - } - } - }, - "timestamp": { - "path": "@timestamp", - "type": "alias" - } - } - }, - "kubernetes": { - "properties": { - "annotations": { - "properties": { - "*": { - "type": "object" - } - } - }, - "apiserver": { - "properties": { - "audit": { - "properties": { - "event": { - "properties": { - "count": { - "type": "long" - } - } - }, - "rejected": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "client": { - "properties": { - "request": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "etcd": { - "properties": { - "object": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "process": { - "properties": { - "cpu": { - "properties": { - "sec": { - "type": "double" - } - } - }, - "fds": { - "properties": { - "open": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "memory": { - "properties": { - "resident": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "virtual": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "started": { - "properties": { - "sec": { - "type": "double" - } - } - } - } - }, - "request": { - "properties": { - "code": { - "ignore_above": 1024, - "type": "keyword" - }, - "component": { - "ignore_above": 1024, - "type": "keyword" - }, - "content_type": { - "ignore_above": 1024, - "type": "keyword" - }, - "count": { - "type": "long" - }, - "current": { - "properties": { - "count": { - "type": "long" - } - } - }, - "dry_run": { - "ignore_above": 1024, - "type": "keyword" - }, - "duration": { - "properties": { - "us": { - "properties": { - "bucket": { - "properties": { - "*": { - "type": "object" - } - } - }, - "count": { - "type": "long" - }, - "sum": { - "type": "long" - } - } - } - } - }, - "group": { - "ignore_above": 1024, - "type": "keyword" - }, - "handler": { - "ignore_above": 1024, - "type": "keyword" - }, - "host": { - "ignore_above": 1024, - "type": "keyword" - }, - "kind": { - "ignore_above": 1024, - "type": "keyword" - }, - "longrunning": { - "properties": { - "count": { - "type": "long" - } - } - }, - "method": { - "ignore_above": 1024, - "type": "keyword" - }, - "resource": { - "ignore_above": 1024, - "type": "keyword" - }, - "scope": { - "ignore_above": 1024, - "type": "keyword" - }, - "subresource": { - "ignore_above": 1024, - "type": "keyword" - }, - "verb": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "response": { - "properties": { - "size": { - "properties": { - "bytes": { - "properties": { - "bucket": { - "properties": { - "*": { - "type": "object" - } - } - }, - "count": { - "type": "long" - }, - "sum": { - "type": "long" - } - } - } - } - } - } - }, - "watch": { - "properties": { - "events": { - "properties": { - "kind": { - "ignore_above": 1024, - "type": "keyword" - }, - "size": { - "properties": { - "bytes": { - "properties": { - "bucket": { - "properties": { - "*": { - "type": "object" - } - } - }, - "count": { - "type": "long" - }, - "sum": { - "type": "long" - } - } - } - } - } - } - } - } - } - } - }, - "container": { - "properties": { - "cpu": { - "properties": { - "limit": { - "properties": { - "cores": { - "type": "float" - } - } - }, - "request": { - "properties": { - "cores": { - "type": "float" - } - } - }, - "usage": { - "properties": { - "core": { - "properties": { - "ns": { - "type": "double" - } - } - }, - "limit": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "nanocores": { - "type": "double" - }, - "node": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - } - } - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "logs": { - "properties": { - "available": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "capacity": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "inodes": { - "properties": { - "count": { - "type": "double" - }, - "free": { - "type": "double" - }, - "used": { - "type": "double" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "double" - } - } - } - } - }, - "memory": { - "properties": { - "available": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "limit": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "majorpagefaults": { - "type": "double" - }, - "pagefaults": { - "type": "double" - }, - "request": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "rss": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "usage": { - "properties": { - "bytes": { - "type": "double" - }, - "limit": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "node": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - }, - "workingset": { - "properties": { - "bytes": { - "type": "double" - }, - "limit": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "rootfs": { - "properties": { - "available": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "capacity": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "inodes": { - "properties": { - "used": { - "type": "double" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "double" - } - } - } - } - }, - "start_time": { - "type": "date" - }, - "status": { - "properties": { - "last_terminated_reason": { - "ignore_above": 1024, - "type": "keyword" - }, - "phase": { - "ignore_above": 1024, - "type": "keyword" - }, - "ready": { - "type": "boolean" - }, - "reason": { - "ignore_above": 1024, - "type": "keyword" - }, - "restarts": { - "type": "long" - } - } - } - } - }, - "controllermanager": { - "properties": { - "client": { - "properties": { - "request": { - "properties": { - "count": { - "type": "long" - }, - "duration": { - "properties": { - "us": { - "properties": { - "bucket": { - "properties": { - "*": { - "type": "object" - } - } - }, - "count": { - "type": "long" - }, - "sum": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "code": { - "ignore_above": 1024, - "type": "keyword" - }, - "host": { - "ignore_above": 1024, - "type": "keyword" - }, - "leader": { - "properties": { - "is_master": { - "type": "boolean" - } - } - }, - "method": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "node": { - "properties": { - "collector": { - "properties": { - "count": { - "type": "long" - }, - "eviction": { - "properties": { - "count": { - "type": "long" - } - } - }, - "health": { - "properties": { - "pct": { - "type": "long" - } - } - }, - "unhealthy": { - "properties": { - "count": { - "type": "long" - } - } - } - } - } - } - }, - "process": { - "properties": { - "cpu": { - "properties": { - "sec": { - "type": "double" - } - } - }, - "fds": { - "properties": { - "max": { - "properties": { - "count": { - "type": "long" - } - } - }, - "open": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "memory": { - "properties": { - "resident": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "virtual": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "started": { - "properties": { - "sec": { - "type": "double" - } - } - } - } - }, - "url": { - "ignore_above": 1024, - "type": "keyword" - }, - "verb": { - "ignore_above": 1024, - "type": "keyword" - }, - "workqueue": { - "properties": { - "adds": { - "properties": { - "count": { - "type": "long" - } - } - }, - "depth": { - "properties": { - "count": { - "type": "long" - } - } - }, - "longestrunning": { - "properties": { - "sec": { - "type": "double" - } - } - }, - "retries": { - "properties": { - "count": { - "type": "long" - } - } - }, - "unfinished": { - "properties": { - "sec": { - "type": "double" - } - } - } - } - }, - "zone": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "cronjob": { - "properties": { - "active": { - "properties": { - "count": { - "type": "long" - } - } - }, - "concurrency": { - "ignore_above": 1024, - "type": "keyword" - }, - "created": { - "properties": { - "sec": { - "type": "double" - } - } - }, - "deadline": { - "properties": { - "sec": { - "type": "long" - } - } - }, - "is_suspended": { - "type": "boolean" - }, - "last_schedule": { - "properties": { - "sec": { - "type": "double" - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "next_schedule": { - "properties": { - "sec": { - "type": "double" - } - } - }, - "schedule": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "daemonset": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "replicas": { - "properties": { - "available": { - "type": "long" - }, - "desired": { - "type": "long" - }, - "ready": { - "type": "long" - }, - "unavailable": { - "type": "long" - } - } - } - } - }, - "deployment": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "paused": { - "type": "boolean" - }, - "replicas": { - "properties": { - "available": { - "type": "long" - }, - "desired": { - "type": "long" - }, - "unavailable": { - "type": "long" - }, - "updated": { - "type": "long" - } - } - } - } - }, - "event": { - "properties": { - "count": { - "type": "long" - }, - "involved_object": { - "properties": { - "api_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "kind": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "resource_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "uid": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "message": { - "copy_to": "message", - "norms": false, - "type": "text" - }, - "metadata": { - "properties": { - "generate_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "namespace": { - "ignore_above": 1024, - "type": "keyword" - }, - "resource_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "self_link": { - "ignore_above": 1024, - "type": "keyword" - }, - "timestamp": { - "properties": { - "created": { - "type": "date" - } - } - }, - "uid": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "reason": { - "ignore_above": 1024, - "type": "keyword" - }, - "source": { - "properties": { - "component": { - "ignore_above": 1024, - "type": "keyword" - }, - "host": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "timestamp": { - "properties": { - "first_occurrence": { - "type": "date" - }, - "last_occurrence": { - "type": "date" - } - } - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "job": { - "properties": { - "completions": { - "properties": { - "desired": { - "type": "long" - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "owner": { - "properties": { - "is_controller": { - "ignore_above": 1024, - "type": "keyword" - }, - "kind": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "parallelism": { - "properties": { - "desired": { - "type": "long" - } - } - }, - "pods": { - "properties": { - "active": { - "type": "long" - }, - "failed": { - "type": "long" - }, - "succeeded": { - "type": "long" - } - } - }, - "status": { - "properties": { - "complete": { - "ignore_above": 1024, - "type": "keyword" - }, - "failed": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "time": { - "properties": { - "completed": { - "type": "date" - }, - "created": { - "type": "date" - } - } - } - } - }, - "labels": { - "properties": { - "*": { - "type": "object" - } - } - }, - "namespace": { - "ignore_above": 1024, - "type": "keyword" - }, - "node": { - "properties": { - "cpu": { - "properties": { - "allocatable": { - "properties": { - "cores": { - "type": "float" - } - } - }, - "capacity": { - "properties": { - "cores": { - "type": "long" - } - } - }, - "usage": { - "properties": { - "core": { - "properties": { - "ns": { - "type": "double" - } - } - }, - "nanocores": { - "type": "double" - } - } - } - } - }, - "fs": { - "properties": { - "available": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "capacity": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "inodes": { - "properties": { - "count": { - "type": "double" - }, - "free": { - "type": "double" - }, - "used": { - "type": "double" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "double" - } - } - } - } - }, - "hostname": { - "ignore_above": 1024, - "type": "keyword" - }, - "memory": { - "properties": { - "allocatable": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "available": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "capacity": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "majorpagefaults": { - "type": "double" - }, - "pagefaults": { - "type": "double" - }, - "rss": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "usage": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "workingset": { - "properties": { - "bytes": { - "type": "double" - } - } - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "network": { - "properties": { - "rx": { - "properties": { - "bytes": { - "type": "double" - }, - "errors": { - "type": "double" - } - } - }, - "tx": { - "properties": { - "bytes": { - "type": "double" - }, - "errors": { - "type": "double" - } - } - } - } - }, - "pod": { - "properties": { - "allocatable": { - "properties": { - "total": { - "type": "long" - } - } - }, - "capacity": { - "properties": { - "total": { - "type": "long" - } - } - } - } - }, - "runtime": { - "properties": { - "imagefs": { - "properties": { - "available": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "capacity": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "double" - } - } - } - } - } - } - }, - "start_time": { - "type": "date" - }, - "status": { - "properties": { - "disk_pressure": { - "ignore_above": 1024, - "type": "keyword" - }, - "memory_pressure": { - "ignore_above": 1024, - "type": "keyword" - }, - "out_of_disk": { - "ignore_above": 1024, - "type": "keyword" - }, - "pid_pressure": { - "ignore_above": 1024, - "type": "keyword" - }, - "ready": { - "ignore_above": 1024, - "type": "keyword" - }, - "unschedulable": { - "type": "boolean" - } - } - } - } - }, - "persistentvolume": { - "properties": { - "capacity": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "phase": { - "ignore_above": 1024, - "type": "keyword" - }, - "storage_class": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "persistentvolumeclaim": { - "properties": { - "access_mode": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "phase": { - "ignore_above": 1024, - "type": "keyword" - }, - "request_storage": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "storage_class": { - "ignore_above": 1024, - "type": "keyword" - }, - "volume_name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "pod": { - "properties": { - "cpu": { - "properties": { - "usage": { - "properties": { - "limit": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "nanocores": { - "type": "double" - }, - "node": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - } - } - }, - "host_ip": { - "type": "ip" - }, - "ip": { - "type": "ip" - }, - "memory": { - "properties": { - "available": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "major_page_faults": { - "type": "double" - }, - "page_faults": { - "type": "double" - }, - "rss": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "usage": { - "properties": { - "bytes": { - "type": "double" - }, - "limit": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "node": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - }, - "working_set": { - "properties": { - "bytes": { - "type": "double" - }, - "limit": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "network": { - "properties": { - "rx": { - "properties": { - "bytes": { - "type": "double" - }, - "errors": { - "type": "double" - } - } - }, - "tx": { - "properties": { - "bytes": { - "type": "double" - }, - "errors": { - "type": "double" - } - } - } - } - }, - "start_time": { - "type": "date" - }, - "status": { - "properties": { - "phase": { - "ignore_above": 1024, - "type": "keyword" - }, - "ready": { - "ignore_above": 1024, - "type": "keyword" - }, - "scheduled": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "uid": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "proxy": { - "properties": { - "client": { - "properties": { - "request": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "code": { - "ignore_above": 1024, - "type": "keyword" - }, - "handler": { - "ignore_above": 1024, - "type": "keyword" - }, - "host": { - "ignore_above": 1024, - "type": "keyword" - }, - "http": { - "properties": { - "request": { - "properties": { - "count": { - "type": "long" - }, - "duration": { - "properties": { - "us": { - "properties": { - "count": { - "type": "long" - }, - "percentile": { - "properties": { - "*": { - "type": "object" - } - } - }, - "sum": { - "type": "double" - } - } - } - } - }, - "size": { - "properties": { - "bytes": { - "properties": { - "count": { - "type": "long" - }, - "percentile": { - "properties": { - "*": { - "type": "object" - } - } - }, - "sum": { - "type": "long" - } - } - } - } - } - } - }, - "response": { - "properties": { - "size": { - "properties": { - "bytes": { - "properties": { - "count": { - "type": "long" - }, - "percentile": { - "properties": { - "*": { - "type": "object" - } - } - }, - "sum": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "method": { - "ignore_above": 1024, - "type": "keyword" - }, - "process": { - "properties": { - "cpu": { - "properties": { - "sec": { - "type": "double" - } - } - }, - "fds": { - "properties": { - "open": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "memory": { - "properties": { - "resident": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "virtual": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "started": { - "properties": { - "sec": { - "type": "double" - } - } - } - } - }, - "sync": { - "properties": { - "networkprogramming": { - "properties": { - "duration": { - "properties": { - "us": { - "properties": { - "bucket": { - "properties": { - "*": { - "type": "object" - } - } - }, - "count": { - "type": "long" - }, - "sum": { - "type": "long" - } - } - } - } - } - } - }, - "rules": { - "properties": { - "duration": { - "properties": { - "us": { - "properties": { - "bucket": { - "properties": { - "*": { - "type": "object" - } - } - }, - "count": { - "type": "long" - }, - "sum": { - "type": "long" - } - } - } - } - } - } - } - } - } - } - }, - "replicaset": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "replicas": { - "properties": { - "available": { - "type": "long" - }, - "desired": { - "type": "long" - }, - "labeled": { - "type": "long" - }, - "observed": { - "type": "long" - }, - "ready": { - "type": "long" - } - } - } - } - }, - "resourcequota": { - "properties": { - "created": { - "properties": { - "sec": { - "type": "double" - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "quota": { - "type": "double" - }, - "resource": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "scheduler": { - "properties": { - "client": { - "properties": { - "request": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "code": { - "ignore_above": 1024, - "type": "keyword" - }, - "handler": { - "ignore_above": 1024, - "type": "keyword" - }, - "host": { - "ignore_above": 1024, - "type": "keyword" - }, - "http": { - "properties": { - "request": { - "properties": { - "count": { - "type": "long" - }, - "duration": { - "properties": { - "us": { - "properties": { - "count": { - "type": "long" - }, - "percentile": { - "properties": { - "*": { - "type": "object" - } - } - }, - "sum": { - "type": "double" - } - } - } - } - }, - "size": { - "properties": { - "bytes": { - "properties": { - "count": { - "type": "long" - }, - "percentile": { - "properties": { - "*": { - "type": "object" - } - } - }, - "sum": { - "type": "long" - } - } - } - } - } - } - }, - "response": { - "properties": { - "size": { - "properties": { - "bytes": { - "properties": { - "count": { - "type": "long" - }, - "percentile": { - "properties": { - "*": { - "type": "object" - } - } - }, - "sum": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "leader": { - "properties": { - "is_master": { - "type": "boolean" - } - } - }, - "method": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "operation": { - "ignore_above": 1024, - "type": "keyword" - }, - "process": { - "properties": { - "cpu": { - "properties": { - "sec": { - "type": "double" - } - } - }, - "fds": { - "properties": { - "open": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "memory": { - "properties": { - "resident": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "virtual": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "started": { - "properties": { - "sec": { - "type": "double" - } - } - } - } - }, - "result": { - "ignore_above": 1024, - "type": "keyword" - }, - "scheduling": { - "properties": { - "duration": { - "properties": { - "seconds": { - "properties": { - "count": { - "type": "long" - }, - "percentile": { - "properties": { - "*": { - "type": "object" - } - } - }, - "sum": { - "type": "double" - } - } - } - } - }, - "e2e": { - "properties": { - "duration": { - "properties": { - "us": { - "properties": { - "bucket": { - "properties": { - "*": { - "type": "object" - } - } - }, - "count": { - "type": "long" - }, - "sum": { - "type": "long" - } - } - } - } - } - } - }, - "pod": { - "properties": { - "attempts": { - "properties": { - "count": { - "type": "long" - } - } - }, - "preemption": { - "properties": { - "victims": { - "properties": { - "bucket": { - "properties": { - "*": { - "type": "long" - } - } - }, - "count": { - "type": "long" - }, - "sum": { - "type": "long" - } - } - } - } - } - } - } - } - } - } - }, - "selectors": { - "properties": { - "*": { - "type": "object" - } - } - }, - "service": { - "properties": { - "cluster_ip": { - "ignore_above": 1024, - "type": "keyword" - }, - "created": { - "type": "date" - }, - "external_ip": { - "ignore_above": 1024, - "type": "keyword" - }, - "external_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "ingress_hostname": { - "ignore_above": 1024, - "type": "keyword" - }, - "ingress_ip": { - "ignore_above": 1024, - "type": "keyword" - }, - "load_balancer_ip": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "statefulset": { - "properties": { - "created": { - "type": "long" - }, - "generation": { - "properties": { - "desired": { - "type": "long" - }, - "observed": { - "type": "long" - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "replicas": { - "properties": { - "desired": { - "type": "long" - }, - "observed": { - "type": "long" - }, - "ready": { - "type": "long" - } - } - } - } - }, - "storageclass": { - "properties": { - "created": { - "type": "date" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "provisioner": { - "ignore_above": 1024, - "type": "keyword" - }, - "reclaim_policy": { - "ignore_above": 1024, - "type": "keyword" - }, - "volume_binding_mode": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "system": { - "properties": { - "container": { - "ignore_above": 1024, - "type": "keyword" - }, - "cpu": { - "properties": { - "usage": { - "properties": { - "core": { - "properties": { - "ns": { - "type": "double" - } - } - }, - "nanocores": { - "type": "double" - } - } - } - } - }, - "memory": { - "properties": { - "majorpagefaults": { - "type": "double" - }, - "pagefaults": { - "type": "double" - }, - "rss": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "usage": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "workingset": { - "properties": { - "bytes": { - "type": "double" - } - } - } - } - }, - "start_time": { - "type": "date" - } - } - }, - "volume": { - "properties": { - "fs": { - "properties": { - "available": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "capacity": { - "properties": { - "bytes": { - "type": "double" - } - } - }, - "inodes": { - "properties": { - "count": { - "type": "double" - }, - "free": { - "type": "double" - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "used": { - "type": "double" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "double" - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "kvm": { - "properties": { - "dommemstat": { - "properties": { - "id": { - "type": "long" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "stat": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "value": { - "type": "long" - } - } - } - } - }, - "id": { - "type": "long" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "status": { - "properties": { - "state": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "labels": { - "type": "object" - }, - "license": { - "properties": { - "status": { - "path": "elasticsearch.cluster.stats.license.status", - "type": "alias" - }, - "type": { - "path": "elasticsearch.cluster.stats.license.type", - "type": "alias" - } - } - }, - "linux": { - "properties": { - "conntrack": { - "properties": { - "summary": { - "properties": { - "drop": { - "type": "long" - }, - "early_drop": { - "type": "long" - }, - "entries": { - "type": "long" - }, - "found": { - "type": "long" - }, - "ignore": { - "type": "long" - }, - "insert_failed": { - "type": "long" - }, - "invalid": { - "type": "long" - }, - "search_restart": { - "type": "long" - } - } - } - } - }, - "iostat": { - "properties": { - "await": { - "type": "float" - }, - "busy": { - "type": "float" - }, - "queue": { - "properties": { - "avg_size": { - "type": "float" - } - } - }, - "read": { - "properties": { - "await": { - "type": "float" - }, - "per_sec": { - "properties": { - "bytes": { - "type": "float" - } - } - }, - "request": { - "properties": { - "merges_per_sec": { - "type": "float" - }, - "per_sec": { - "type": "float" - } - } - } - } - }, - "request": { - "properties": { - "avg_size": { - "type": "float" - } - } - }, - "service_time": { - "type": "float" - }, - "write": { - "properties": { - "await": { - "type": "float" - }, - "per_sec": { - "properties": { - "bytes": { - "type": "float" - } - } - }, - "request": { - "properties": { - "merges_per_sec": { - "type": "float" - }, - "per_sec": { - "type": "float" - } - } - } - } - } - } - }, - "ksm": { - "properties": { - "stats": { - "properties": { - "full_scans": { - "type": "long" - }, - "pages_shared": { - "type": "long" - }, - "pages_sharing": { - "type": "long" - }, - "pages_unshared": { - "type": "long" - }, - "stable_node_chains": { - "type": "long" - }, - "stable_node_dups": { - "type": "long" - } - } - } - } - }, - "memory": { - "properties": { - "hugepages": { - "properties": { - "default_size": { - "type": "long" - }, - "free": { - "type": "long" - }, - "reserved": { - "type": "long" - }, - "surplus": { - "type": "long" - }, - "total": { - "type": "long" - }, - "used": { - "properties": { - "bytes": { - "type": "long" - }, - "pct": { - "type": "long" - } - } - } - } - }, - "page_stats": { - "properties": { - "direct_efficiency": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "kswapd_efficiency": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "pgfree": { - "properties": { - "pages": { - "type": "long" - } - } - }, - "pgscan_direct": { - "properties": { - "pages": { - "type": "long" - } - } - }, - "pgscan_kswapd": { - "properties": { - "pages": { - "type": "long" - } - } - }, - "pgsteal_direct": { - "properties": { - "pages": { - "type": "long" - } - } - }, - "pgsteal_kswapd": { - "properties": { - "pages": { - "type": "long" - } - } - } - } - }, - "swap": { - "properties": { - "free": { - "type": "long" - }, - "in": { - "properties": { - "pages": { - "type": "long" - } - } - }, - "out": { - "properties": { - "pages": { - "type": "long" - } - } - }, - "readahead": { - "properties": { - "cached": { - "type": "long" - }, - "pages": { - "type": "long" - } - } - }, - "total": { - "type": "long" - }, - "used": { - "properties": { - "bytes": { - "type": "long" - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - } - } - }, - "pageinfo": { - "properties": { - "buddy_info": { - "properties": { - "DMA": { - "properties": { - "0": { - "type": "long" - }, - "1": { - "type": "long" - }, - "10": { - "type": "long" - }, - "2": { - "type": "long" - }, - "3": { - "type": "long" - }, - "4": { - "type": "long" - }, - "5": { - "type": "long" - }, - "6": { - "type": "long" - }, - "7": { - "type": "long" - }, - "8": { - "type": "long" - }, - "9": { - "type": "long" - } - } - } - } - }, - "nodes": { - "properties": { - "*": { - "type": "object" - } - } - } - } - }, - "pressure": { - "properties": { - "cpu": { - "properties": { - "some": { - "properties": { - "10": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "300": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "60": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "total": { - "properties": { - "time": { - "properties": { - "us": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "io": { - "properties": { - "full": { - "properties": { - "10": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "300": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "60": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "total": { - "properties": { - "time": { - "properties": { - "us": { - "type": "long" - } - } - } - } - } - } - }, - "some": { - "properties": { - "10": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "300": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "60": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "total": { - "properties": { - "time": { - "properties": { - "us": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "memory": { - "properties": { - "full": { - "properties": { - "10": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "300": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "60": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "total": { - "properties": { - "time": { - "properties": { - "us": { - "type": "long" - } - } - } - } - } - } - }, - "some": { - "properties": { - "10": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "300": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "60": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "total": { - "properties": { - "time": { - "properties": { - "us": { - "type": "long" - } - } - } - } - } - } - } - } - } - } - }, - "rapl": { - "properties": { - "core": { - "type": "long" - }, - "dram": { - "properties": { - "joules": { - "type": "float" - }, - "watts": { - "type": "float" - } - } - }, - "package": { - "properties": { - "joules": { - "type": "float" - }, - "watts": { - "type": "float" - } - } - }, - "pp0": { - "properties": { - "joules": { - "type": "float" - }, - "watts": { - "type": "float" - } - } - }, - "pp1": { - "properties": { - "joules": { - "type": "float" - }, - "watts": { - "type": "float" - } - } - } - } - } - } - }, - "log": { - "properties": { - "file": { - "properties": { - "path": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "level": { - "ignore_above": 1024, - "type": "keyword" - }, - "logger": { - "ignore_above": 1024, - "type": "keyword" - }, - "origin": { - "properties": { - "file": { - "properties": { - "line": { - "type": "long" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "function": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "syslog": { - "properties": { - "facility": { - "properties": { - "code": { - "type": "long" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "priority": { - "type": "long" - }, - "severity": { - "properties": { - "code": { - "type": "long" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - }, - "type": "object" - } - } - }, - "logstash": { - "properties": { - "elasticsearch": { - "properties": { - "cluster": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "node": { - "properties": { - "jvm": { - "properties": { - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "state": { - "properties": { - "pipeline": { - "properties": { - "hash": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "stats": { - "properties": { - "events": { - "properties": { - "duration_in_millis": { - "type": "long" - }, - "filtered": { - "type": "long" - }, - "in": { - "type": "long" - }, - "out": { - "type": "long" - } - } - }, - "jvm": { - "properties": { - "mem": { - "properties": { - "heap_max_in_bytes": { - "type": "long" - }, - "heap_used_in_bytes": { - "type": "long" - } - } - }, - "uptime_in_millis": { - "type": "long" - } - } - }, - "logstash": { - "properties": { - "uuid": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "os": { - "properties": { - "cgroup": { - "properties": { - "cpu": { - "properties": { - "stat": { - "properties": { - "number_of_elapsed_periods": { - "type": "long" - }, - "number_of_times_throttled": { - "type": "long" - }, - "time_throttled_nanos": { - "type": "long" - } - } - } - } - }, - "cpuacct": { - "properties": { - "usage_nanos": { - "type": "long" - } - } - } - } - }, - "cpu": { - "properties": { - "load_average": { - "properties": { - "15m": { - "type": "long" - }, - "1m": { - "type": "long" - }, - "5m": { - "type": "long" - } - } - } - } - } - } - }, - "pipelines": { - "properties": { - "events": { - "properties": { - "duration_in_millis": { - "type": "long" - }, - "out": { - "type": "long" - } - } - }, - "hash": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "queue": { - "properties": { - "events_count": { - "type": "long" - }, - "max_queue_size_in_bytes": { - "type": "long" - }, - "queue_size_in_bytes": { - "type": "long" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "vertices": { - "properties": { - "duration_in_millis": { - "type": "long" - }, - "events_in": { - "type": "long" - }, - "events_out": { - "type": "long" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "pipeline_ephemeral_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "queue_push_duration_in_millis": { - "type": "float" - } - } - } - }, - "type": "nested" - }, - "process": { - "properties": { - "cpu": { - "properties": { - "percent": { - "type": "double" - } - } - } - } - }, - "queue": { - "properties": { - "events_count": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "logstash_state": { - "properties": { - "pipeline": { - "properties": { - "hash": { - "path": "logstash.node.state.pipeline.hash", - "type": "alias" - }, - "id": { - "path": "logstash.node.state.pipeline.id", - "type": "alias" - } - } - } - } - }, - "logstash_stats": { - "properties": { - "events": { - "properties": { - "duration_in_millis": { - "path": "logstash.node.stats.events.duration_in_millis", - "type": "alias" - }, - "in": { - "path": "logstash.node.stats.events.in", - "type": "alias" - }, - "out": { - "path": "logstash.node.stats.events.out", - "type": "alias" - } - } - }, - "jvm": { - "properties": { - "mem": { - "properties": { - "heap_max_in_bytes": { - "path": "logstash.node.stats.jvm.mem.heap_max_in_bytes", - "type": "alias" - }, - "heap_used_in_bytes": { - "path": "logstash.node.stats.jvm.mem.heap_used_in_bytes", - "type": "alias" - } - } - }, - "uptime_in_millis": { - "path": "logstash.node.stats.jvm.uptime_in_millis", - "type": "alias" - } - } - }, - "logstash": { - "properties": { - "uuid": { - "path": "logstash.node.stats.logstash.uuid", - "type": "alias" - }, - "version": { - "path": "logstash.node.stats.logstash.version", - "type": "alias" - } - } - }, - "os": { - "properties": { - "cgroup": { - "properties": { - "cpuacct": { - "properties": { - "usage_nanos": { - "path": "logstash.node.stats.os.cgroup.cpuacct.usage_nanos", - "type": "alias" - } - } - } - } - }, - "cpu": { - "properties": { - "load_average": { - "properties": { - "15m": { - "path": "logstash.node.stats.os.cpu.load_average.15m", - "type": "alias" - }, - "1m": { - "path": "logstash.node.stats.os.cpu.load_average.1m", - "type": "alias" - }, - "5m": { - "path": "logstash.node.stats.os.cpu.load_average.5m", - "type": "alias" - } - } - }, - "stat": { - "properties": { - "number_of_elapsed_periods": { - "path": "logstash.node.stats.os.cgroup.cpu.stat.number_of_elapsed_periods", - "type": "alias" - }, - "number_of_times_throttled": { - "path": "logstash.node.stats.os.cgroup.cpu.stat.number_of_times_throttled", - "type": "alias" - }, - "time_throttled_nanos": { - "path": "logstash.node.stats.os.cgroup.cpu.stat.time_throttled_nanos", - "type": "alias" - } - } - } - } - } - } - }, - "pipelines": { - "type": "nested" - }, - "process": { - "properties": { - "cpu": { - "properties": { - "percent": { - "path": "logstash.node.stats.process.cpu.percent", - "type": "alias" - } - } - } - } - }, - "queue": { - "properties": { - "events_count": { - "path": "logstash.node.stats.queue.events_count", - "type": "alias" - } - } - }, - "timestamp": { - "path": "@timestamp", - "type": "alias" - } - } - }, - "memcached": { - "properties": { - "stats": { - "properties": { - "bytes": { - "properties": { - "current": { - "type": "long" - }, - "limit": { - "type": "long" - } - } - }, - "cmd": { - "properties": { - "get": { - "type": "long" - }, - "set": { - "type": "long" - } - } - }, - "connections": { - "properties": { - "current": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "evictions": { - "type": "long" - }, - "get": { - "properties": { - "hits": { - "type": "long" - }, - "misses": { - "type": "long" - } - } - }, - "items": { - "properties": { - "current": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "pid": { - "type": "long" - }, - "read": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "threads": { - "type": "long" - }, - "uptime": { - "properties": { - "sec": { - "type": "long" - } - } - }, - "written": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - }, - "message": { - "norms": false, - "type": "text" - }, - "metricset": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "period": { - "type": "long" - } - } - }, - "mongodb": { - "properties": { - "collstats": { - "properties": { - "collection": { - "ignore_above": 1024, - "type": "keyword" - }, - "commands": { - "properties": { - "count": { - "type": "long" - }, - "time": { - "properties": { - "us": { - "type": "long" - } - } - } - } - }, - "db": { - "ignore_above": 1024, - "type": "keyword" - }, - "getmore": { - "properties": { - "count": { - "type": "long" - }, - "time": { - "properties": { - "us": { - "type": "long" - } - } - } - } - }, - "insert": { - "properties": { - "count": { - "type": "long" - }, - "time": { - "properties": { - "us": { - "type": "long" - } - } - } - } - }, - "lock": { - "properties": { - "read": { - "properties": { - "count": { - "type": "long" - }, - "time": { - "properties": { - "us": { - "type": "long" - } - } - } - } - }, - "write": { - "properties": { - "count": { - "type": "long" - }, - "time": { - "properties": { - "us": { - "type": "long" - } - } - } - } - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "queries": { - "properties": { - "count": { - "type": "long" - }, - "time": { - "properties": { - "us": { - "type": "long" - } - } - } - } - }, - "remove": { - "properties": { - "count": { - "type": "long" - }, - "time": { - "properties": { - "us": { - "type": "long" - } - } - } - } - }, - "total": { - "properties": { - "count": { - "type": "long" - }, - "time": { - "properties": { - "us": { - "type": "long" - } - } - } - } - }, - "update": { - "properties": { - "count": { - "type": "long" - }, - "time": { - "properties": { - "us": { - "type": "long" - } - } - } - } - } - } - }, - "dbstats": { - "properties": { - "avg_obj_size": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "collections": { - "type": "long" - }, - "data_file_version": { - "properties": { - "major": { - "type": "long" - }, - "minor": { - "type": "long" - } - } - }, - "data_size": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "db": { - "ignore_above": 1024, - "type": "keyword" - }, - "extent_free_list": { - "properties": { - "num": { - "type": "long" - }, - "size": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "file_size": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "index_size": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "indexes": { - "type": "long" - }, - "ns_size_mb": { - "properties": { - "mb": { - "type": "long" - } - } - }, - "num_extents": { - "type": "long" - }, - "objects": { - "type": "long" - }, - "storage_size": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "metrics": { - "properties": { - "commands": { - "properties": { - "aggregate": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "build_info": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "coll_stats": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "connection_pool_stats": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "count": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "db_stats": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "distinct": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "find": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "get_cmd_line_opts": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "get_last_error": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "get_log": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "get_more": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "get_parameter": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "host_info": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "insert": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "is_master": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "is_self": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "last_collections": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "last_commands": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "list_databased": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "list_indexes": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "ping": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "profile": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "replset_get_rbid": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "replset_get_status": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "replset_heartbeat": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "replset_update_position": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "server_status": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "update": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "whatsmyuri": { - "properties": { - "failed": { - "type": "long" - }, - "total": { - "type": "long" - } - } - } - } - }, - "cursor": { - "properties": { - "open": { - "properties": { - "no_timeout": { - "type": "long" - }, - "pinned": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "timed_out": { - "type": "long" - } - } - }, - "document": { - "properties": { - "deleted": { - "type": "long" - }, - "inserted": { - "type": "long" - }, - "returned": { - "type": "long" - }, - "updated": { - "type": "long" - } - } - }, - "get_last_error": { - "properties": { - "write_timeouts": { - "type": "long" - }, - "write_wait": { - "properties": { - "count": { - "type": "long" - }, - "ms": { - "type": "long" - } - } - } - } - }, - "operation": { - "properties": { - "scan_and_order": { - "type": "long" - }, - "write_conflicts": { - "type": "long" - } - } - }, - "query_executor": { - "properties": { - "scanned_documents": { - "properties": { - "count": { - "type": "long" - } - } - }, - "scanned_indexes": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "replication": { - "properties": { - "apply": { - "properties": { - "attempts_to_become_secondary": { - "type": "long" - }, - "batches": { - "properties": { - "count": { - "type": "long" - }, - "time": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "ops": { - "type": "long" - } - } - }, - "buffer": { - "properties": { - "count": { - "type": "long" - }, - "max_size": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "size": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "executor": { - "properties": { - "counters": { - "properties": { - "cancels": { - "type": "long" - }, - "event_created": { - "type": "long" - }, - "event_wait": { - "type": "long" - }, - "scheduled": { - "properties": { - "dbwork": { - "type": "long" - }, - "exclusive": { - "type": "long" - }, - "failures": { - "type": "long" - }, - "netcmd": { - "type": "long" - }, - "work": { - "type": "long" - }, - "work_at": { - "type": "long" - } - } - }, - "waits": { - "type": "long" - } - } - }, - "event_waiters": { - "type": "long" - }, - "network_interface": { - "ignore_above": 1024, - "type": "keyword" - }, - "queues": { - "properties": { - "free": { - "type": "long" - }, - "in_progress": { - "properties": { - "dbwork": { - "type": "long" - }, - "exclusive": { - "type": "long" - }, - "network": { - "type": "long" - } - } - }, - "ready": { - "type": "long" - }, - "sleepers": { - "type": "long" - } - } - }, - "shutting_down": { - "type": "boolean" - }, - "unsignaled_events": { - "type": "long" - } - } - }, - "initial_sync": { - "properties": { - "completed": { - "type": "long" - }, - "failed_attempts": { - "type": "long" - }, - "failures": { - "type": "long" - } - } - }, - "network": { - "properties": { - "bytes": { - "type": "long" - }, - "getmores": { - "properties": { - "count": { - "type": "long" - }, - "time": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "ops": { - "type": "long" - }, - "reders_created": { - "type": "long" - } - } - }, - "preload": { - "properties": { - "docs": { - "properties": { - "count": { - "type": "long" - }, - "time": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "indexes": { - "properties": { - "count": { - "type": "long" - }, - "time": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "storage": { - "properties": { - "free_list": { - "properties": { - "search": { - "properties": { - "bucket_exhausted": { - "type": "long" - }, - "requests": { - "type": "long" - }, - "scanned": { - "type": "long" - } - } - } - } - } - } - }, - "ttl": { - "properties": { - "deleted_documents": { - "properties": { - "count": { - "type": "long" - } - } - }, - "passes": { - "properties": { - "count": { - "type": "long" - } - } - } - } - } - } - }, - "replstatus": { - "properties": { - "headroom": { - "properties": { - "max": { - "type": "long" - }, - "min": { - "type": "long" - } - } - }, - "lag": { - "properties": { - "max": { - "type": "long" - }, - "min": { - "type": "long" - } - } - }, - "members": { - "properties": { - "arbiter": { - "properties": { - "count": { - "type": "long" - }, - "hosts": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "down": { - "properties": { - "count": { - "type": "long" - }, - "hosts": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "primary": { - "properties": { - "host": { - "ignore_above": 1024, - "type": "keyword" - }, - "optime": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "recovering": { - "properties": { - "count": { - "type": "long" - }, - "hosts": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "rollback": { - "properties": { - "count": { - "type": "long" - }, - "hosts": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "secondary": { - "properties": { - "count": { - "type": "long" - }, - "hosts": { - "ignore_above": 1024, - "type": "keyword" - }, - "optimes": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "startup2": { - "properties": { - "count": { - "type": "long" - }, - "hosts": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "unhealthy": { - "properties": { - "count": { - "type": "long" - }, - "hosts": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "unknown": { - "properties": { - "count": { - "type": "long" - }, - "hosts": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "oplog": { - "properties": { - "first": { - "properties": { - "timestamp": { - "type": "long" - } - } - }, - "last": { - "properties": { - "timestamp": { - "type": "long" - } - } - }, - "size": { - "properties": { - "allocated": { - "type": "long" - }, - "used": { - "type": "long" - } - } - }, - "window": { - "type": "long" - } - } - }, - "optimes": { - "properties": { - "applied": { - "type": "long" - }, - "durable": { - "type": "long" - }, - "last_committed": { - "type": "long" - } - } - }, - "server_date": { - "type": "date" - }, - "set_name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "status": { - "properties": { - "asserts": { - "properties": { - "msg": { - "type": "long" - }, - "regular": { - "type": "long" - }, - "rollovers": { - "type": "long" - }, - "user": { - "type": "long" - }, - "warning": { - "type": "long" - } - } - }, - "background_flushing": { - "properties": { - "average": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "flushes": { - "type": "long" - }, - "last": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "last_finished": { - "type": "date" - }, - "total": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "connections": { - "properties": { - "available": { - "type": "long" - }, - "current": { - "type": "long" - }, - "total_created": { - "type": "long" - } - } - }, - "extra_info": { - "properties": { - "heap_usage": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "page_faults": { - "type": "long" - } - } - }, - "global_lock": { - "properties": { - "active_clients": { - "properties": { - "readers": { - "type": "long" - }, - "total": { - "type": "long" - }, - "writers": { - "type": "long" - } - } - }, - "current_queue": { - "properties": { - "readers": { - "type": "long" - }, - "total": { - "type": "long" - }, - "writers": { - "type": "long" - } - } - }, - "total_time": { - "properties": { - "us": { - "type": "long" - } - } - } - } - }, - "journaling": { - "properties": { - "commits": { - "type": "long" - }, - "commits_in_write_lock": { - "type": "long" - }, - "compression": { - "type": "long" - }, - "early_commits": { - "type": "long" - }, - "journaled": { - "properties": { - "mb": { - "type": "long" - } - } - }, - "times": { - "properties": { - "commits": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "commits_in_write_lock": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "dt": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "prep_log_buffer": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "remap_private_view": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "write_to_data_files": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "write_to_journal": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "write_to_data_files": { - "properties": { - "mb": { - "type": "long" - } - } - } - } - }, - "local_time": { - "type": "date" - }, - "locks": { - "properties": { - "collection": { - "properties": { - "acquire": { - "properties": { - "count": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - } - } - }, - "deadlock": { - "properties": { - "count": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - } - } - }, - "wait": { - "properties": { - "count": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - }, - "us": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - } - } - } - } - }, - "database": { - "properties": { - "acquire": { - "properties": { - "count": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - } - } - }, - "deadlock": { - "properties": { - "count": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - } - } - }, - "wait": { - "properties": { - "count": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - }, - "us": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - } - } - } - } - }, - "global": { - "properties": { - "acquire": { - "properties": { - "count": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - } - } - }, - "deadlock": { - "properties": { - "count": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - } - } - }, - "wait": { - "properties": { - "count": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - }, - "us": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - } - } - } - } - }, - "meta_data": { - "properties": { - "acquire": { - "properties": { - "count": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - } - } - }, - "deadlock": { - "properties": { - "count": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - } - } - }, - "wait": { - "properties": { - "count": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - }, - "us": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - } - } - } - } - }, - "oplog": { - "properties": { - "acquire": { - "properties": { - "count": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - } - } - }, - "deadlock": { - "properties": { - "count": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - } - } - }, - "wait": { - "properties": { - "count": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - }, - "us": { - "properties": { - "R": { - "type": "long" - }, - "W": { - "type": "long" - }, - "r": { - "type": "long" - }, - "w": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "memory": { - "properties": { - "bits": { - "type": "long" - }, - "mapped": { - "properties": { - "mb": { - "type": "long" - } - } - }, - "mapped_with_journal": { - "properties": { - "mb": { - "type": "long" - } - } - }, - "resident": { - "properties": { - "mb": { - "type": "long" - } - } - }, - "virtual": { - "properties": { - "mb": { - "type": "long" - } - } - } - } - }, - "network": { - "properties": { - "in": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "out": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "requests": { - "type": "long" - } - } - }, - "ops": { - "properties": { - "counters": { - "properties": { - "command": { - "type": "long" - }, - "delete": { - "type": "long" - }, - "getmore": { - "type": "long" - }, - "insert": { - "type": "long" - }, - "query": { - "type": "long" - }, - "update": { - "type": "long" - } - } - }, - "latencies": { - "properties": { - "commands": { - "properties": { - "count": { - "type": "long" - }, - "latency": { - "type": "long" - } - } - }, - "reads": { - "properties": { - "count": { - "type": "long" - }, - "latency": { - "type": "long" - } - } - }, - "writes": { - "properties": { - "count": { - "type": "long" - }, - "latency": { - "type": "long" - } - } - } - } - }, - "replicated": { - "properties": { - "command": { - "type": "long" - }, - "delete": { - "type": "long" - }, - "getmore": { - "type": "long" - }, - "insert": { - "type": "long" - }, - "query": { - "type": "long" - }, - "update": { - "type": "long" - } - } - } - } - }, - "process": { - "path": "process.name", - "type": "alias" - }, - "storage_engine": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "uptime": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "version": { - "path": "service.version", - "type": "alias" - }, - "wired_tiger": { - "properties": { - "cache": { - "properties": { - "dirty": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "maximum": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "pages": { - "properties": { - "evicted": { - "type": "long" - }, - "read": { - "type": "long" - }, - "write": { - "type": "long" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "concurrent_transactions": { - "properties": { - "read": { - "properties": { - "available": { - "type": "long" - }, - "out": { - "type": "long" - }, - "total_tickets": { - "type": "long" - } - } - }, - "write": { - "properties": { - "available": { - "type": "long" - }, - "out": { - "type": "long" - }, - "total_tickets": { - "type": "long" - } - } - } - } - }, - "log": { - "properties": { - "flushes": { - "type": "long" - }, - "max_file_size": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "scans": { - "type": "long" - }, - "size": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "syncs": { - "type": "long" - }, - "write": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "writes": { - "type": "long" - } - } - } - } - }, - "write_backs_queued": { - "type": "boolean" - } - } - } - } - }, - "munin": { - "properties": { - "metrics": { - "properties": { - "*": { - "type": "object" - } - } - }, - "plugin": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "mysql": { - "properties": { - "galera_status": { - "properties": { - "apply": { - "properties": { - "oooe": { - "type": "double" - }, - "oool": { - "type": "double" - }, - "window": { - "type": "double" - } - } - }, - "cert": { - "properties": { - "deps_distance": { - "type": "double" - }, - "index_size": { - "type": "long" - }, - "interval": { - "type": "double" - } - } - }, - "cluster": { - "properties": { - "conf_id": { - "type": "long" - }, - "size": { - "type": "long" - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "commit": { - "properties": { - "oooe": { - "type": "double" - }, - "window": { - "type": "long" - } - } - }, - "connected": { - "ignore_above": 1024, - "type": "keyword" - }, - "evs": { - "properties": { - "evict": { - "ignore_above": 1024, - "type": "keyword" - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "flow_ctl": { - "properties": { - "paused": { - "type": "double" - }, - "paused_ns": { - "type": "long" - }, - "recv": { - "type": "long" - }, - "sent": { - "type": "long" - } - } - }, - "last_committed": { - "type": "long" - }, - "local": { - "properties": { - "bf_aborts": { - "type": "long" - }, - "cert_failures": { - "type": "long" - }, - "commits": { - "type": "long" - }, - "recv": { - "properties": { - "queue": { - "type": "long" - }, - "queue_avg": { - "type": "double" - }, - "queue_max": { - "type": "long" - }, - "queue_min": { - "type": "long" - } - } - }, - "replays": { - "type": "long" - }, - "send": { - "properties": { - "queue": { - "type": "long" - }, - "queue_avg": { - "type": "double" - }, - "queue_max": { - "type": "long" - }, - "queue_min": { - "type": "long" - } - } - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "ready": { - "ignore_above": 1024, - "type": "keyword" - }, - "received": { - "properties": { - "bytes": { - "type": "long" - }, - "count": { - "type": "long" - } - } - }, - "repl": { - "properties": { - "bytes": { - "type": "long" - }, - "count": { - "type": "long" - }, - "data_bytes": { - "type": "long" - }, - "keys": { - "type": "long" - }, - "keys_bytes": { - "type": "long" - }, - "other_bytes": { - "type": "long" - } - } - } - } - }, - "performance": { - "properties": { - "events_statements": { - "properties": { - "avg": { - "properties": { - "timer": { - "properties": { - "wait": { - "type": "long" - } - } - } - } - }, - "count": { - "properties": { - "star": { - "type": "long" - } - } - }, - "digest": { - "norms": false, - "type": "text" - }, - "last": { - "properties": { - "seen": { - "type": "date" - } - } - }, - "max": { - "properties": { - "timer": { - "properties": { - "wait": { - "type": "long" - } - } - } - } - }, - "quantile": { - "properties": { - "95": { - "type": "long" - } - } - } - } - }, - "table_io_waits": { - "properties": { - "count": { - "properties": { - "fetch": { - "type": "long" - } - } - }, - "index": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "object": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "schema": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - } - } - }, - "status": { - "properties": { - "aborted": { - "properties": { - "clients": { - "type": "long" - }, - "connects": { - "type": "long" - } - } - }, - "binlog": { - "properties": { - "cache": { - "properties": { - "disk_use": { - "type": "long" - }, - "use": { - "type": "long" - } - } - } - } - }, - "bytes": { - "properties": { - "received": { - "type": "long" - }, - "sent": { - "type": "long" - } - } - }, - "cache": { - "properties": { - "ssl": { - "properties": { - "hits": { - "type": "long" - }, - "misses": { - "type": "long" - }, - "size": { - "type": "long" - } - } - }, - "table": { - "properties": { - "open_cache": { - "properties": { - "hits": { - "type": "long" - }, - "misses": { - "type": "long" - }, - "overflows": { - "type": "long" - } - } - } - } - } - } - }, - "command": { - "properties": { - "delete": { - "type": "long" - }, - "insert": { - "type": "long" - }, - "select": { - "type": "long" - }, - "update": { - "type": "long" - } - } - }, - "connection": { - "properties": { - "errors": { - "properties": { - "accept": { - "type": "long" - }, - "internal": { - "type": "long" - }, - "max": { - "type": "long" - }, - "peer_address": { - "type": "long" - }, - "select": { - "type": "long" - }, - "tcpwrap": { - "type": "long" - } - } - } - } - }, - "connections": { - "type": "long" - }, - "created": { - "properties": { - "tmp": { - "properties": { - "disk_tables": { - "type": "long" - }, - "files": { - "type": "long" - }, - "tables": { - "type": "long" - } - } - } - } - }, - "delayed": { - "properties": { - "errors": { - "type": "long" - }, - "insert_threads": { - "type": "long" - }, - "writes": { - "type": "long" - } - } - }, - "flush_commands": { - "type": "long" - }, - "handler": { - "properties": { - "commit": { - "type": "long" - }, - "delete": { - "type": "long" - }, - "external_lock": { - "type": "long" - }, - "mrr_init": { - "type": "long" - }, - "prepare": { - "type": "long" - }, - "read": { - "properties": { - "first": { - "type": "long" - }, - "key": { - "type": "long" - }, - "last": { - "type": "long" - }, - "next": { - "type": "long" - }, - "prev": { - "type": "long" - }, - "rnd": { - "type": "long" - }, - "rnd_next": { - "type": "long" - } - } - }, - "rollback": { - "type": "long" - }, - "savepoint": { - "type": "long" - }, - "savepoint_rollback": { - "type": "long" - }, - "update": { - "type": "long" - }, - "write": { - "type": "long" - } - } - }, - "innodb": { - "properties": { - "buffer_pool": { - "properties": { - "bytes": { - "properties": { - "data": { - "type": "long" - }, - "dirty": { - "type": "long" - } - } - }, - "dump_status": { - "type": "long" - }, - "load_status": { - "type": "long" - }, - "pages": { - "properties": { - "data": { - "type": "long" - }, - "dirty": { - "type": "long" - }, - "flushed": { - "type": "long" - }, - "free": { - "type": "long" - }, - "latched": { - "type": "long" - }, - "misc": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "pool": { - "properties": { - "reads": { - "type": "long" - }, - "resize_status": { - "type": "long" - }, - "wait_free": { - "type": "long" - } - } - }, - "read": { - "properties": { - "ahead": { - "type": "long" - }, - "ahead_evicted": { - "type": "long" - }, - "ahead_rnd": { - "type": "long" - }, - "requests": { - "type": "long" - } - } - }, - "write_requests": { - "type": "long" - } - } - }, - "rows": { - "properties": { - "deleted": { - "type": "long" - }, - "inserted": { - "type": "long" - }, - "reads": { - "type": "long" - }, - "updated": { - "type": "long" - } - } - } - } - }, - "max_used_connections": { - "type": "long" - }, - "open": { - "properties": { - "files": { - "type": "long" - }, - "streams": { - "type": "long" - }, - "tables": { - "type": "long" - } - } - }, - "opened_tables": { - "type": "long" - }, - "queries": { - "type": "long" - }, - "questions": { - "type": "long" - }, - "threads": { - "properties": { - "cached": { - "type": "long" - }, - "connected": { - "type": "long" - }, - "created": { - "type": "long" - }, - "running": { - "type": "long" - } - } - } - } - } - } - }, - "nats": { - "properties": { - "connection": { - "properties": { - "idle_time": { - "type": "long" - }, - "in": { - "properties": { - "bytes": { - "type": "long" - }, - "messages": { - "type": "long" - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "out": { - "properties": { - "bytes": { - "type": "long" - }, - "messages": { - "type": "long" - } - } - }, - "pending_bytes": { - "type": "long" - }, - "subscriptions": { - "type": "long" - }, - "uptime": { - "type": "long" - } - } - }, - "connections": { - "properties": { - "total": { - "type": "long" - } - } - }, - "route": { - "properties": { - "in": { - "properties": { - "bytes": { - "type": "long" - }, - "messages": { - "type": "long" - } - } - }, - "ip": { - "type": "ip" - }, - "out": { - "properties": { - "bytes": { - "type": "long" - }, - "messages": { - "type": "long" - } - } - }, - "pending_size": { - "type": "long" - }, - "port": { - "type": "long" - }, - "remote_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "subscriptions": { - "type": "long" - } - } - }, - "routes": { - "properties": { - "total": { - "type": "long" - } - } - }, - "server": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "time": { - "type": "date" - } - } - }, - "stats": { - "properties": { - "cores": { - "type": "long" - }, - "cpu": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "http": { - "properties": { - "req_stats": { - "properties": { - "uri": { - "properties": { - "connz": { - "type": "long" - }, - "root": { - "type": "long" - }, - "routez": { - "type": "long" - }, - "subsz": { - "type": "long" - }, - "varz": { - "type": "long" - } - } - } - } - } - } - }, - "in": { - "properties": { - "bytes": { - "type": "long" - }, - "messages": { - "type": "long" - } - } - }, - "mem": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "out": { - "properties": { - "bytes": { - "type": "long" - }, - "messages": { - "type": "long" - } - } - }, - "remotes": { - "type": "long" - }, - "slow_consumers": { - "type": "long" - }, - "total_connections": { - "type": "long" - }, - "uptime": { - "type": "long" - } - } - }, - "subscriptions": { - "properties": { - "cache": { - "properties": { - "fanout": { - "properties": { - "avg": { - "type": "double" - }, - "max": { - "type": "long" - } - } - }, - "hit_rate": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "size": { - "type": "long" - } - } - }, - "inserts": { - "type": "long" - }, - "matches": { - "type": "long" - }, - "removes": { - "type": "long" - }, - "total": { - "type": "long" - } - } - } - } - }, - "network": { - "properties": { - "application": { - "ignore_above": 1024, - "type": "keyword" - }, - "bytes": { - "type": "long" - }, - "community_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "direction": { - "ignore_above": 1024, - "type": "keyword" - }, - "forwarded_ip": { - "type": "ip" - }, - "iana_number": { - "ignore_above": 1024, - "type": "keyword" - }, - "inner": { - "properties": { - "vlan": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - }, - "type": "object" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "packets": { - "type": "long" - }, - "protocol": { - "ignore_above": 1024, - "type": "keyword" - }, - "transport": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "vlan": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "nginx": { - "properties": { - "stubstatus": { - "properties": { - "accepts": { - "type": "long" - }, - "active": { - "type": "long" - }, - "current": { - "type": "long" - }, - "dropped": { - "type": "long" - }, - "handled": { - "type": "long" - }, - "hostname": { - "ignore_above": 1024, - "type": "keyword" - }, - "reading": { - "type": "long" - }, - "requests": { - "type": "long" - }, - "waiting": { - "type": "long" - }, - "writing": { - "type": "long" - } - } - } - } - }, - "node_stats": { - "properties": { - "fs": { - "properties": { - "io_stats": { - "properties": { - "total": { - "properties": { - "operations": { - "path": "elasticsearch.node.stats.fs.io_stats.total.operations.count", - "type": "alias" - }, - "read_operations": { - "path": "elasticsearch.node.stats.fs.io_stats.total.read.operations.count", - "type": "alias" - }, - "write_operations": { - "path": "elasticsearch.node.stats.fs.io_stats.total.write.operations.count", - "type": "alias" - } - } - } - } - }, - "summary": { - "properties": { - "available": { - "properties": { - "bytes": { - "path": "elasticsearch.node.stats.fs.summary.available.bytes", - "type": "alias" - } - } - }, - "total": { - "properties": { - "bytes": { - "path": "elasticsearch.node.stats.fs.summary.total.bytes", - "type": "alias" - } - } - } - } - }, - "total": { - "properties": { - "available_in_bytes": { - "path": "elasticsearch.node.stats.fs.summary.available.bytes", - "type": "alias" - }, - "total_in_bytes": { - "path": "elasticsearch.node.stats.fs.summary.total.bytes", - "type": "alias" - } - } - } - } - }, - "indices": { - "properties": { - "docs": { - "properties": { - "count": { - "path": "elasticsearch.node.stats.indices.docs.count", - "type": "alias" - } - } - }, - "fielddata": { - "properties": { - "memory_size_in_bytes": { - "path": "elasticsearch.node.stats.indices.fielddata.memory.bytes", - "type": "alias" - } - } - }, - "indexing": { - "properties": { - "index_time_in_millis": { - "path": "elasticsearch.node.stats.indices.indexing.index_time.ms", - "type": "alias" - }, - "index_total": { - "path": "elasticsearch.node.stats.indices.indexing.index_total.count", - "type": "alias" - }, - "throttle_time_in_millis": { - "path": "elasticsearch.node.stats.indices.indexing.throttle_time.ms", - "type": "alias" - } - } - }, - "query_cache": { - "properties": { - "memory_size_in_bytes": { - "path": "elasticsearch.node.stats.indices.query_cache.memory.bytes", - "type": "alias" - } - } - }, - "request_cache": { - "properties": { - "memory_size_in_bytes": { - "path": "elasticsearch.node.stats.indices.request_cache.memory.bytes", - "type": "alias" - } - } - }, - "search": { - "properties": { - "query_time_in_millis": { - "path": "elasticsearch.node.stats.indices.search.query_time.ms", - "type": "alias" - }, - "query_total": { - "path": "elasticsearch.node.stats.indices.search.query_total.count", - "type": "alias" - } - } - }, - "segments": { - "properties": { - "count": { - "path": "elasticsearch.node.stats.indices.segments.count", - "type": "alias" - }, - "doc_values_memory_in_bytes": { - "path": "elasticsearch.node.stats.indices.segments.doc_values.memory.bytes", - "type": "alias" - }, - "fixed_bit_set_memory_in_bytes": { - "path": "elasticsearch.node.stats.indices.segments.fixed_bit_set.memory.bytes", - "type": "alias" - }, - "index_writer_memory_in_bytes": { - "path": "elasticsearch.node.stats.indices.segments.index_writer.memory.bytes", - "type": "alias" - }, - "memory_in_bytes": { - "path": "elasticsearch.node.stats.indices.segments.memory.bytes", - "type": "alias" - }, - "norms_memory_in_bytes": { - "path": "elasticsearch.node.stats.indices.segments.norms.memory.bytes", - "type": "alias" - }, - "points_memory_in_bytes": { - "path": "elasticsearch.node.stats.indices.segments.points.memory.bytes", - "type": "alias" - }, - "stored_fields_memory_in_bytes": { - "path": "elasticsearch.node.stats.indices.segments.stored_fields.memory.bytes", - "type": "alias" - }, - "term_vectors_memory_in_bytes": { - "path": "elasticsearch.node.stats.indices.segments.term_vectors.memory.bytes", - "type": "alias" - }, - "terms_memory_in_bytes": { - "path": "elasticsearch.node.stats.indices.segments.terms.memory.bytes", - "type": "alias" - }, - "version_map_memory_in_bytes": { - "path": "elasticsearch.node.stats.indices.segments.version_map.memory.bytes", - "type": "alias" - } - } - }, - "store": { - "properties": { - "size": { - "properties": { - "bytes": { - "path": "elasticsearch.node.stats.indices.store.size.bytes", - "type": "alias" - } - } - }, - "size_in_bytes": { - "path": "elasticsearch.node.stats.indices.store.size.bytes", - "type": "alias" - } - } - } - } - }, - "jvm": { - "properties": { - "gc": { - "properties": { - "collectors": { - "properties": { - "old": { - "properties": { - "collection_count": { - "path": "elasticsearch.node.stats.jvm.gc.collectors.old.collection.count", - "type": "alias" - }, - "collection_time_in_millis": { - "path": "elasticsearch.node.stats.jvm.gc.collectors.old.collection.ms", - "type": "alias" - } - } - }, - "young": { - "properties": { - "collection_count": { - "path": "elasticsearch.node.stats.jvm.gc.collectors.young.collection.count", - "type": "alias" - }, - "collection_time_in_millis": { - "path": "elasticsearch.node.stats.jvm.gc.collectors.young.collection.ms", - "type": "alias" - } - } - } - } - } - } - }, - "mem": { - "properties": { - "heap_max_in_bytes": { - "path": "elasticsearch.node.stats.jvm.mem.heap.max.bytes", - "type": "alias" - }, - "heap_used_in_bytes": { - "path": "elasticsearch.node.stats.jvm.mem.heap.used.bytes", - "type": "alias" - }, - "heap_used_percent": { - "path": "elasticsearch.node.stats.jvm.mem.heap.used.pct", - "type": "alias" - } - } - } - } - }, - "node_id": { - "path": "elasticsearch.node.id", - "type": "alias" - }, - "os": { - "properties": { - "cgroup": { - "properties": { - "cpu": { - "properties": { - "cfs_quota_micros": { - "path": "elasticsearch.node.stats.os.cgroup.cpu.cfs.quota.us", - "type": "alias" - }, - "stat": { - "properties": { - "number_of_elapsed_periods": { - "path": "elasticsearch.node.stats.os.cgroup.cpu.stat.elapsed_periods.count", - "type": "alias" - }, - "number_of_times_throttled": { - "path": "elasticsearch.node.stats.os.cgroup.cpu.stat.times_throttled.count", - "type": "alias" - }, - "time_throttled_nanos": { - "path": "elasticsearch.node.stats.os.cgroup.cpu.stat.time_throttled.ns", - "type": "alias" - } - } - } - } - }, - "cpuacct": { - "properties": { - "usage_nanos": { - "path": "elasticsearch.node.stats.os.cgroup.cpuacct.usage.ns", - "type": "alias" - } - } - }, - "memory": { - "properties": { - "control_group": { - "path": "elasticsearch.node.stats.os.cgroup.memory.control_group", - "type": "alias" - }, - "limit_in_bytes": { - "path": "elasticsearch.node.stats.os.cgroup.memory.limit.bytes", - "type": "alias" - }, - "usage_in_bytes": { - "path": "elasticsearch.node.stats.os.cgroup.memory.usage.bytes", - "type": "alias" - } - } - } - } - }, - "cpu": { - "properties": { - "load_average": { - "properties": { - "1m": { - "path": "elasticsearch.node.stats.os.cpu.load_avg.1m", - "type": "alias" - } - } - } - } - } - } - }, - "process": { - "properties": { - "cpu": { - "properties": { - "percent": { - "path": "elasticsearch.node.stats.process.cpu.pct", - "type": "alias" - } - } - } - } - }, - "thread_pool": { - "properties": { - "bulk": { - "properties": { - "queue": { - "path": "elasticsearch.node.stats.thread_pool.bulk.queue.count", - "type": "alias" - }, - "rejected": { - "path": "elasticsearch.node.stats.thread_pool.bulk.rejected.count", - "type": "alias" - } - } - }, - "get": { - "properties": { - "queue": { - "path": "elasticsearch.node.stats.thread_pool.get.queue.count", - "type": "alias" - }, - "rejected": { - "path": "elasticsearch.node.stats.thread_pool.get.rejected.count", - "type": "alias" - } - } - }, - "index": { - "properties": { - "queue": { - "path": "elasticsearch.node.stats.thread_pool.index.queue.count", - "type": "alias" - }, - "rejected": { - "path": "elasticsearch.node.stats.thread_pool.index.rejected.count", - "type": "alias" - } - } - }, - "search": { - "properties": { - "queue": { - "path": "elasticsearch.node.stats.thread_pool.search.queue.count", - "type": "alias" - }, - "rejected": { - "path": "elasticsearch.node.stats.thread_pool.search.rejected.count", - "type": "alias" - } - } - }, - "write": { - "properties": { - "queue": { - "path": "elasticsearch.node.stats.thread_pool.write.queue.count", - "type": "alias" - }, - "rejected": { - "path": "elasticsearch.node.stats.thread_pool.write.rejected.count", - "type": "alias" - } - } - } - } - } - } - }, - "observer": { - "properties": { - "egress": { - "properties": { - "interface": { - "properties": { - "alias": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "vlan": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "zone": { - "ignore_above": 1024, - "type": "keyword" - } - }, - "type": "object" - }, - "geo": { - "properties": { - "city_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "location": { - "type": "geo_point" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "postal_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "timezone": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "hostname": { - "ignore_above": 1024, - "type": "keyword" - }, - "ingress": { - "properties": { - "interface": { - "properties": { - "alias": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "vlan": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "zone": { - "ignore_above": 1024, - "type": "keyword" - } - }, - "type": "object" - }, - "ip": { - "type": "ip" - }, - "mac": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "os": { - "properties": { - "family": { - "ignore_above": 1024, - "type": "keyword" - }, - "full": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "kernel": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "platform": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "product": { - "ignore_above": 1024, - "type": "keyword" - }, - "serial_number": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "vendor": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "openmetrics": { - "properties": { - "exemplar": { - "properties": { - "*": { - "type": "object" - }, - "labels": { - "properties": { - "*": { - "type": "object" - } - } - } - } - }, - "help": { - "ignore_above": 1024, - "type": "keyword" - }, - "labels": { - "properties": { - "*": { - "type": "object" - } - } - }, - "metrics": { - "properties": { - "*": { - "type": "object" - } - } - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "unit": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "orchestrator": { - "properties": { - "api_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "cluster": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "url": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "namespace": { - "ignore_above": 1024, - "type": "keyword" - }, - "organization": { - "ignore_above": 1024, - "type": "keyword" - }, - "resource": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "organization": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "os": { - "properties": { - "family": { - "ignore_above": 1024, - "type": "keyword" - }, - "full": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "kernel": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "platform": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "package": { - "properties": { - "architecture": { - "ignore_above": 1024, - "type": "keyword" - }, - "build_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "checksum": { - "ignore_above": 1024, - "type": "keyword" - }, - "description": { - "ignore_above": 1024, - "type": "keyword" - }, - "install_scope": { - "ignore_above": 1024, - "type": "keyword" - }, - "installed": { - "type": "date" - }, - "license": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "path": { - "ignore_above": 1024, - "type": "keyword" - }, - "reference": { - "ignore_above": 1024, - "type": "keyword" - }, - "size": { - "type": "long" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "pe": { - "properties": { - "architecture": { - "ignore_above": 1024, - "type": "keyword" - }, - "company": { - "ignore_above": 1024, - "type": "keyword" - }, - "description": { - "ignore_above": 1024, - "type": "keyword" - }, - "file_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "imphash": { - "ignore_above": 1024, - "type": "keyword" - }, - "original_file_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "product": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "php_fpm": { - "properties": { - "pool": { - "properties": { - "connections": { - "properties": { - "accepted": { - "type": "long" - }, - "listen_queue_len": { - "type": "long" - }, - "max_listen_queue": { - "type": "long" - }, - "queued": { - "type": "long" - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "process_manager": { - "ignore_above": 1024, - "type": "keyword" - }, - "processes": { - "properties": { - "active": { - "type": "long" - }, - "idle": { - "type": "long" - }, - "max_active": { - "type": "long" - }, - "max_children_reached": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "slow_requests": { - "type": "long" - }, - "start_since": { - "type": "long" - }, - "start_time": { - "type": "date" - } - } - }, - "process": { - "properties": { - "last_request_cpu": { - "type": "long" - }, - "last_request_memory": { - "type": "long" - }, - "request_duration": { - "type": "long" - }, - "requests": { - "type": "long" - }, - "script": { - "ignore_above": 1024, - "type": "keyword" - }, - "start_since": { - "type": "long" - }, - "start_time": { - "type": "date" - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "postgresql": { - "properties": { - "activity": { - "properties": { - "application_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "backend_start": { - "type": "date" - }, - "backend_type": { - "ignore_above": 1024, - "type": "keyword" - }, - "client": { - "properties": { - "address": { - "ignore_above": 1024, - "type": "keyword" - }, - "hostname": { - "ignore_above": 1024, - "type": "keyword" - }, - "port": { - "type": "long" - } - } - }, - "database": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "oid": { - "type": "long" - } - } - }, - "pid": { - "type": "long" - }, - "query": { - "ignore_above": 1024, - "type": "keyword" - }, - "query_start": { - "type": "date" - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_change": { - "type": "date" - }, - "transaction_start": { - "type": "date" - }, - "user": { - "properties": { - "id": { - "type": "long" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "wait_event": { - "ignore_above": 1024, - "type": "keyword" - }, - "wait_event_type": { - "ignore_above": 1024, - "type": "keyword" - }, - "waiting": { - "type": "boolean" - } - } - }, - "bgwriter": { - "properties": { - "buffers": { - "properties": { - "allocated": { - "type": "long" - }, - "backend": { - "type": "long" - }, - "backend_fsync": { - "type": "long" - }, - "checkpoints": { - "type": "long" - }, - "clean": { - "type": "long" - }, - "clean_full": { - "type": "long" - } - } - }, - "checkpoints": { - "properties": { - "requested": { - "type": "long" - }, - "scheduled": { - "type": "long" - }, - "times": { - "properties": { - "sync": { - "properties": { - "ms": { - "type": "float" - } - } - }, - "write": { - "properties": { - "ms": { - "type": "float" - } - } - } - } - } - } - }, - "stats_reset": { - "type": "date" - } - } - }, - "database": { - "properties": { - "blocks": { - "properties": { - "hit": { - "type": "long" - }, - "read": { - "type": "long" - }, - "time": { - "properties": { - "read": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "write": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - } - } - }, - "conflicts": { - "type": "long" - }, - "deadlocks": { - "type": "long" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "number_of_backends": { - "type": "long" - }, - "oid": { - "type": "long" - }, - "rows": { - "properties": { - "deleted": { - "type": "long" - }, - "fetched": { - "type": "long" - }, - "inserted": { - "type": "long" - }, - "returned": { - "type": "long" - }, - "updated": { - "type": "long" - } - } - }, - "stats_reset": { - "type": "date" - }, - "temporary": { - "properties": { - "bytes": { - "type": "long" - }, - "files": { - "type": "long" - } - } - }, - "transactions": { - "properties": { - "commit": { - "type": "long" - }, - "rollback": { - "type": "long" - } - } - } - } - }, - "statement": { - "properties": { - "database": { - "properties": { - "oid": { - "type": "long" - } - } - }, - "query": { - "properties": { - "calls": { - "type": "long" - }, - "id": { - "type": "long" - }, - "memory": { - "properties": { - "local": { - "properties": { - "dirtied": { - "type": "long" - }, - "hit": { - "type": "long" - }, - "read": { - "type": "long" - }, - "written": { - "type": "long" - } - } - }, - "shared": { - "properties": { - "dirtied": { - "type": "long" - }, - "hit": { - "type": "long" - }, - "read": { - "type": "long" - }, - "written": { - "type": "long" - } - } - }, - "temp": { - "properties": { - "read": { - "type": "long" - }, - "written": { - "type": "long" - } - } - } - } - }, - "rows": { - "type": "long" - }, - "text": { - "ignore_above": 1024, - "type": "keyword" - }, - "time": { - "properties": { - "max": { - "properties": { - "ms": { - "type": "float" - } - } - }, - "mean": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "min": { - "properties": { - "ms": { - "type": "float" - } - } - }, - "stddev": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "total": { - "properties": { - "ms": { - "type": "float" - } - } - } - } - } - } - }, - "user": { - "properties": { - "id": { - "type": "long" - } - } - } - } - } - } - }, - "process": { - "properties": { - "args": { - "ignore_above": 1024, - "type": "keyword" - }, - "args_count": { - "type": "long" - }, - "code_signature": { - "properties": { - "digest_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "exists": { - "type": "boolean" - }, - "signing_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "team_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "timestamp": { - "type": "date" - }, - "trusted": { - "type": "boolean" - }, - "valid": { - "type": "boolean" - } - } - }, - "command_line": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "cpu": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "start_time": { - "type": "date" - } - } - }, - "elf": { - "properties": { - "architecture": { - "ignore_above": 1024, - "type": "keyword" - }, - "byte_order": { - "ignore_above": 1024, - "type": "keyword" - }, - "cpu_type": { - "ignore_above": 1024, - "type": "keyword" - }, - "creation_date": { - "type": "date" - }, - "exports": { - "type": "flattened" - }, - "header": { - "properties": { - "abi_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "class": { - "ignore_above": 1024, - "type": "keyword" - }, - "data": { - "ignore_above": 1024, - "type": "keyword" - }, - "entrypoint": { - "type": "long" - }, - "object_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "os_abi": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "imports": { - "type": "flattened" - }, - "sections": { - "properties": { - "chi2": { - "type": "long" - }, - "entropy": { - "type": "long" - }, - "flags": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "physical_offset": { - "ignore_above": 1024, - "type": "keyword" - }, - "physical_size": { - "type": "long" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "virtual_address": { - "type": "long" - }, - "virtual_size": { - "type": "long" - } - }, - "type": "nested" - }, - "segments": { - "properties": { - "sections": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - }, - "type": "nested" - }, - "shared_libraries": { - "ignore_above": 1024, - "type": "keyword" - }, - "telfhash": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "end": { - "type": "date" - }, - "entity_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "executable": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "exit_code": { - "type": "long" - }, - "hash": { - "properties": { - "md5": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha1": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha256": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha512": { - "ignore_above": 1024, - "type": "keyword" - }, - "ssdeep": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "memory": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "owner": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "parent": { - "properties": { - "args": { - "ignore_above": 1024, - "type": "keyword" - }, - "args_count": { - "type": "long" - }, - "code_signature": { - "properties": { - "digest_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "exists": { - "type": "boolean" - }, - "signing_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "team_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "timestamp": { - "type": "date" - }, - "trusted": { - "type": "boolean" - }, - "valid": { - "type": "boolean" - } - } - }, - "command_line": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "elf": { - "properties": { - "architecture": { - "ignore_above": 1024, - "type": "keyword" - }, - "byte_order": { - "ignore_above": 1024, - "type": "keyword" - }, - "cpu_type": { - "ignore_above": 1024, - "type": "keyword" - }, - "creation_date": { - "type": "date" - }, - "exports": { - "type": "flattened" - }, - "header": { - "properties": { - "abi_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "class": { - "ignore_above": 1024, - "type": "keyword" - }, - "data": { - "ignore_above": 1024, - "type": "keyword" - }, - "entrypoint": { - "type": "long" - }, - "object_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "os_abi": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "imports": { - "type": "flattened" - }, - "sections": { - "properties": { - "chi2": { - "type": "long" - }, - "entropy": { - "type": "long" - }, - "flags": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "physical_offset": { - "ignore_above": 1024, - "type": "keyword" - }, - "physical_size": { - "type": "long" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "virtual_address": { - "type": "long" - }, - "virtual_size": { - "type": "long" - } - }, - "type": "nested" - }, - "segments": { - "properties": { - "sections": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - }, - "type": "nested" - }, - "shared_libraries": { - "ignore_above": 1024, - "type": "keyword" - }, - "telfhash": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "end": { - "type": "date" - }, - "entity_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "executable": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "exit_code": { - "type": "long" - }, - "hash": { - "properties": { - "md5": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha1": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha256": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha512": { - "ignore_above": 1024, - "type": "keyword" - }, - "ssdeep": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "pe": { - "properties": { - "architecture": { - "ignore_above": 1024, - "type": "keyword" - }, - "company": { - "ignore_above": 1024, - "type": "keyword" - }, - "description": { - "ignore_above": 1024, - "type": "keyword" - }, - "file_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "imphash": { - "ignore_above": 1024, - "type": "keyword" - }, - "original_file_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "product": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "pgid": { - "type": "long" - }, - "pid": { - "type": "long" - }, - "start": { - "type": "date" - }, - "thread": { - "properties": { - "id": { - "type": "long" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "title": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "uptime": { - "type": "long" - }, - "working_directory": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "pe": { - "properties": { - "architecture": { - "ignore_above": 1024, - "type": "keyword" - }, - "company": { - "ignore_above": 1024, - "type": "keyword" - }, - "description": { - "ignore_above": 1024, - "type": "keyword" - }, - "file_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "imphash": { - "ignore_above": 1024, - "type": "keyword" - }, - "original_file_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "product": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "pgid": { - "type": "long" - }, - "pid": { - "type": "long" - }, - "start": { - "type": "date" - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - }, - "thread": { - "properties": { - "id": { - "type": "long" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "title": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "uptime": { - "type": "long" - }, - "working_directory": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "prometheus": { - "properties": { - "labels": { - "properties": { - "*": { - "type": "object" - } - } - }, - "metrics": { - "properties": { - "*": { - "type": "object" - } - } - }, - "query": { - "properties": { - "*": { - "type": "object" - } - } - } - } - }, - "rabbitmq": { - "properties": { - "connection": { - "properties": { - "channel_max": { - "type": "long" - }, - "channels": { - "type": "long" - }, - "client_provided": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "frame_max": { - "type": "long" - }, - "host": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "octet_count": { - "properties": { - "received": { - "type": "long" - }, - "sent": { - "type": "long" - } - } - }, - "packet_count": { - "properties": { - "pending": { - "type": "long" - }, - "received": { - "type": "long" - }, - "sent": { - "type": "long" - } - } - }, - "peer": { - "properties": { - "host": { - "ignore_above": 1024, - "type": "keyword" - }, - "port": { - "type": "long" - } - } - }, - "port": { - "type": "long" - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "exchange": { - "properties": { - "auto_delete": { - "type": "boolean" - }, - "durable": { - "type": "boolean" - }, - "internal": { - "type": "boolean" - }, - "messages": { - "properties": { - "publish_in": { - "properties": { - "count": { - "type": "long" - }, - "details": { - "properties": { - "rate": { - "type": "float" - } - } - } - } - }, - "publish_out": { - "properties": { - "count": { - "type": "long" - }, - "details": { - "properties": { - "rate": { - "type": "float" - } - } - } - } - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "node": { - "properties": { - "disk": { - "properties": { - "free": { - "properties": { - "bytes": { - "type": "long" - }, - "limit": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - }, - "fd": { - "properties": { - "total": { - "type": "long" - }, - "used": { - "type": "long" - } - } - }, - "gc": { - "properties": { - "num": { - "properties": { - "count": { - "type": "long" - } - } - }, - "reclaimed": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "io": { - "properties": { - "file_handle": { - "properties": { - "open_attempt": { - "properties": { - "avg": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "count": { - "type": "long" - } - } - } - } - }, - "read": { - "properties": { - "avg": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "bytes": { - "type": "long" - }, - "count": { - "type": "long" - } - } - }, - "reopen": { - "properties": { - "count": { - "type": "long" - } - } - }, - "seek": { - "properties": { - "avg": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "count": { - "type": "long" - } - } - }, - "sync": { - "properties": { - "avg": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "count": { - "type": "long" - } - } - }, - "write": { - "properties": { - "avg": { - "properties": { - "ms": { - "type": "long" - } - } - }, - "bytes": { - "type": "long" - }, - "count": { - "type": "long" - } - } - } - } - }, - "mem": { - "properties": { - "limit": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "mnesia": { - "properties": { - "disk": { - "properties": { - "tx": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "ram": { - "properties": { - "tx": { - "properties": { - "count": { - "type": "long" - } - } - } - } - } - } - }, - "msg": { - "properties": { - "store_read": { - "properties": { - "count": { - "type": "long" - } - } - }, - "store_write": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "proc": { - "properties": { - "total": { - "type": "long" - }, - "used": { - "type": "long" - } - } - }, - "processors": { - "type": "long" - }, - "queue": { - "properties": { - "index": { - "properties": { - "journal_write": { - "properties": { - "count": { - "type": "long" - } - } - }, - "read": { - "properties": { - "count": { - "type": "long" - } - } - }, - "write": { - "properties": { - "count": { - "type": "long" - } - } - } - } - } - } - }, - "run": { - "properties": { - "queue": { - "type": "long" - } - } - }, - "socket": { - "properties": { - "total": { - "type": "long" - }, - "used": { - "type": "long" - } - } - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "uptime": { - "type": "long" - } - } - }, - "queue": { - "properties": { - "arguments": { - "properties": { - "max_priority": { - "type": "long" - } - } - }, - "auto_delete": { - "type": "boolean" - }, - "consumers": { - "properties": { - "count": { - "type": "long" - }, - "utilisation": { - "properties": { - "pct": { - "type": "long" - } - } - } - } - }, - "disk": { - "properties": { - "reads": { - "properties": { - "count": { - "type": "long" - } - } - }, - "writes": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "durable": { - "type": "boolean" - }, - "exclusive": { - "type": "boolean" - }, - "memory": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "messages": { - "properties": { - "persistent": { - "properties": { - "count": { - "type": "long" - } - } - }, - "ready": { - "properties": { - "count": { - "type": "long" - }, - "details": { - "properties": { - "rate": { - "type": "float" - } - } - } - } - }, - "total": { - "properties": { - "count": { - "type": "long" - }, - "details": { - "properties": { - "rate": { - "type": "float" - } - } - } - } - }, - "unacknowledged": { - "properties": { - "count": { - "type": "long" - }, - "details": { - "properties": { - "rate": { - "type": "float" - } - } - } - } - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "shovel": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "vhost": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "redis": { - "properties": { - "info": { - "properties": { - "clients": { - "properties": { - "blocked": { - "type": "long" - }, - "connected": { - "type": "long" - }, - "max_input_buffer": { - "type": "long" - }, - "max_output_buffer": { - "type": "long" - } - } - }, - "cluster": { - "properties": { - "enabled": { - "type": "boolean" - } - } - }, - "commandstats": { - "properties": { - "*": { - "properties": { - "calls": { - "type": "long" - }, - "failed_calls": { - "type": "long" - }, - "rejected_calls": { - "type": "long" - }, - "usec": { - "type": "long" - }, - "usec_per_call": { - "type": "float" - } - } - } - } - }, - "cpu": { - "properties": { - "used": { - "properties": { - "sys": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "sys_children": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "user": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "user_children": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - }, - "memory": { - "properties": { - "active_defrag": { - "properties": { - "is_running": { - "type": "boolean" - } - } - }, - "allocator": { - "ignore_above": 1024, - "type": "keyword" - }, - "allocator_stats": { - "properties": { - "active": { - "type": "long" - }, - "allocated": { - "type": "long" - }, - "fragmentation": { - "properties": { - "bytes": { - "type": "long" - }, - "ratio": { - "type": "float" - } - } - }, - "resident": { - "type": "long" - }, - "rss": { - "properties": { - "bytes": { - "type": "long" - }, - "ratio": { - "type": "float" - } - } - } - } - }, - "fragmentation": { - "properties": { - "bytes": { - "type": "long" - }, - "ratio": { - "type": "float" - } - } - }, - "max": { - "properties": { - "policy": { - "ignore_above": 1024, - "type": "keyword" - }, - "value": { - "type": "long" - } - } - }, - "used": { - "properties": { - "dataset": { - "type": "long" - }, - "lua": { - "type": "long" - }, - "peak": { - "type": "long" - }, - "rss": { - "type": "long" - }, - "value": { - "type": "long" - } - } - } - } - }, - "persistence": { - "properties": { - "aof": { - "properties": { - "bgrewrite": { - "properties": { - "last_status": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "buffer": { - "properties": { - "size": { - "type": "long" - } - } - }, - "copy_on_write": { - "properties": { - "last_size": { - "type": "long" - } - } - }, - "enabled": { - "type": "boolean" - }, - "fsync": { - "properties": { - "delayed": { - "type": "long" - }, - "pending": { - "type": "long" - } - } - }, - "rewrite": { - "properties": { - "buffer": { - "properties": { - "size": { - "type": "long" - } - } - }, - "current_time": { - "properties": { - "sec": { - "type": "long" - } - } - }, - "in_progress": { - "type": "boolean" - }, - "last_time": { - "properties": { - "sec": { - "type": "long" - } - } - }, - "scheduled": { - "type": "boolean" - } - } - }, - "size": { - "properties": { - "base": { - "type": "long" - }, - "current": { - "type": "long" - } - } - }, - "write": { - "properties": { - "last_status": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "loading": { - "type": "boolean" - }, - "rdb": { - "properties": { - "bgsave": { - "properties": { - "current_time": { - "properties": { - "sec": { - "type": "long" - } - } - }, - "in_progress": { - "type": "boolean" - }, - "last_status": { - "ignore_above": 1024, - "type": "keyword" - }, - "last_time": { - "properties": { - "sec": { - "type": "long" - } - } - } - } - }, - "copy_on_write": { - "properties": { - "last_size": { - "type": "long" - } - } - }, - "last_save": { - "properties": { - "changes_since": { - "type": "long" - }, - "time": { - "type": "long" - } - } - } - } - } - } - }, - "replication": { - "properties": { - "backlog": { - "properties": { - "active": { - "type": "long" - }, - "first_byte_offset": { - "type": "long" - }, - "histlen": { - "type": "long" - }, - "size": { - "type": "long" - } - } - }, - "connected_slaves": { - "type": "long" - }, - "master": { - "properties": { - "last_io_seconds_ago": { - "type": "long" - }, - "link_status": { - "ignore_above": 1024, - "type": "keyword" - }, - "offset": { - "type": "long" - }, - "second_offset": { - "type": "long" - }, - "sync": { - "properties": { - "in_progress": { - "type": "boolean" - }, - "last_io_seconds_ago": { - "type": "long" - }, - "left_bytes": { - "type": "long" - } - } - } - } - }, - "role": { - "ignore_above": 1024, - "type": "keyword" - }, - "slave": { - "properties": { - "is_readonly": { - "type": "boolean" - }, - "offset": { - "type": "long" - }, - "priority": { - "type": "long" - } - } - } - } - }, - "server": { - "properties": { - "arch_bits": { - "ignore_above": 1024, - "type": "keyword" - }, - "build_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "config_file": { - "ignore_above": 1024, - "type": "keyword" - }, - "gcc_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "git_dirty": { - "ignore_above": 1024, - "type": "keyword" - }, - "git_sha1": { - "ignore_above": 1024, - "type": "keyword" - }, - "hz": { - "type": "long" - }, - "lru_clock": { - "type": "long" - }, - "mode": { - "ignore_above": 1024, - "type": "keyword" - }, - "multiplexing_api": { - "ignore_above": 1024, - "type": "keyword" - }, - "run_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "tcp_port": { - "type": "long" - }, - "uptime": { - "type": "long" - } - } - }, - "slowlog": { - "properties": { - "count": { - "type": "long" - } - } - }, - "stats": { - "properties": { - "active_defrag": { - "properties": { - "hits": { - "type": "long" - }, - "key_hits": { - "type": "long" - }, - "key_misses": { - "type": "long" - }, - "misses": { - "type": "long" - } - } - }, - "commands_processed": { - "type": "long" - }, - "connections": { - "properties": { - "received": { - "type": "long" - }, - "rejected": { - "type": "long" - } - } - }, - "instantaneous": { - "properties": { - "input_kbps": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ops_per_sec": { - "type": "long" - }, - "output_kbps": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "keys": { - "properties": { - "evicted": { - "type": "long" - }, - "expired": { - "type": "long" - } - } - }, - "keyspace": { - "properties": { - "hits": { - "type": "long" - }, - "misses": { - "type": "long" - } - } - }, - "latest_fork_usec": { - "type": "long" - }, - "migrate_cached_sockets": { - "type": "long" - }, - "net": { - "properties": { - "input": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "output": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "pubsub": { - "properties": { - "channels": { - "type": "long" - }, - "patterns": { - "type": "long" - } - } - }, - "slave_expires_tracked_keys": { - "type": "long" - }, - "sync": { - "properties": { - "full": { - "type": "long" - }, - "partial": { - "properties": { - "err": { - "type": "long" - }, - "ok": { - "type": "long" - } - } - } - } - } - } - } - } - }, - "key": { - "properties": { - "expire": { - "properties": { - "ttl": { - "type": "long" - } - } - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "length": { - "type": "long" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "keyspace": { - "properties": { - "avg_ttl": { - "type": "long" - }, - "expires": { - "type": "long" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "keys": { - "type": "long" - } - } - } - } - }, - "registry": { - "properties": { - "data": { - "properties": { - "bytes": { - "ignore_above": 1024, - "type": "keyword" - }, - "strings": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "hive": { - "ignore_above": 1024, - "type": "keyword" - }, - "key": { - "ignore_above": 1024, - "type": "keyword" - }, - "path": { - "ignore_above": 1024, - "type": "keyword" - }, - "value": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "related": { - "properties": { - "hash": { - "ignore_above": 1024, - "type": "keyword" - }, - "hosts": { - "ignore_above": 1024, - "type": "keyword" - }, - "ip": { - "type": "ip" - }, - "user": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "rule": { - "properties": { - "author": { - "ignore_above": 1024, - "type": "keyword" - }, - "category": { - "ignore_above": 1024, - "type": "keyword" - }, - "description": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "license": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "reference": { - "ignore_above": 1024, - "type": "keyword" - }, - "ruleset": { - "ignore_above": 1024, - "type": "keyword" - }, - "uuid": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "server": { - "properties": { - "address": { - "ignore_above": 1024, - "type": "keyword" - }, - "as": { - "properties": { - "number": { - "type": "long" - }, - "organization": { - "properties": { - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "bytes": { - "type": "long" - }, - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "geo": { - "properties": { - "city_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "location": { - "type": "geo_point" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "postal_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "timezone": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "ip": { - "type": "ip" - }, - "mac": { - "ignore_above": 1024, - "type": "keyword" - }, - "nat": { - "properties": { - "ip": { - "type": "ip" - }, - "port": { - "type": "long" - } - } - }, - "packets": { - "type": "long" - }, - "port": { - "type": "long" - }, - "registered_domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "subdomain": { - "ignore_above": 1024, - "type": "keyword" - }, - "top_level_domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "user": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "email": { - "ignore_above": 1024, - "type": "keyword" - }, - "full_name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "group": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "hash": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "roles": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "service": { - "properties": { - "address": { - "ignore_above": 1024, - "type": "keyword" - }, - "environment": { - "ignore_above": 1024, - "type": "keyword" - }, - "ephemeral_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "hostname": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "node": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "origin": { - "properties": { - "address": { - "ignore_above": 1024, - "type": "keyword" - }, - "environment": { - "ignore_above": 1024, - "type": "keyword" - }, - "ephemeral_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "node": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - }, - "target": { - "properties": { - "address": { - "ignore_above": 1024, - "type": "keyword" - }, - "environment": { - "ignore_above": 1024, - "type": "keyword" - }, - "ephemeral_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "node": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "shard": { - "properties": { - "index": { - "path": "elasticsearch.index.name", - "type": "alias" - }, - "node": { - "path": "elasticsearch.node.id", - "type": "alias" - }, - "primary": { - "path": "elasticsearch.shard.primary", - "type": "alias" - }, - "shard": { - "path": "elasticsearch.shard.number", - "type": "alias" - }, - "state": { - "path": "elasticsearch.shard.state", - "type": "alias" - } - } - }, - "source": { - "properties": { - "address": { - "ignore_above": 1024, - "type": "keyword" - }, - "as": { - "properties": { - "number": { - "type": "long" - }, - "organization": { - "properties": { - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "bytes": { - "type": "long" - }, - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "geo": { - "properties": { - "city_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "location": { - "type": "geo_point" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "postal_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "timezone": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "ip": { - "type": "ip" - }, - "mac": { - "ignore_above": 1024, - "type": "keyword" - }, - "nat": { - "properties": { - "ip": { - "type": "ip" - }, - "port": { - "type": "long" - } - } - }, - "packets": { - "type": "long" - }, - "port": { - "type": "long" - }, - "registered_domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "subdomain": { - "ignore_above": 1024, - "type": "keyword" - }, - "top_level_domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "user": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "email": { - "ignore_above": 1024, - "type": "keyword" - }, - "full_name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "group": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "hash": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "roles": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "source_node": { - "properties": { - "name": { - "path": "elasticsearch.node.name", - "type": "alias" - }, - "uuid": { - "path": "elasticsearch.node.id", - "type": "alias" - } - } - }, - "span": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "stack_stats": { - "properties": { - "apm": { - "properties": { - "found": { - "path": "elasticsearch.cluster.stats.stack.apm.found", - "type": "alias" - } - } - }, - "xpack": { - "properties": { - "ccr": { - "properties": { - "available": { - "path": "elasticsearch.cluster.stats.stack.xpack.ccr.available", - "type": "alias" - }, - "enabled": { - "path": "elasticsearch.cluster.stats.stack.xpack.ccr.enabled", - "type": "alias" - } - } - } - } - } - } - }, - "system": { - "properties": { - "core": { - "properties": { - "core_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "type": "long" - }, - "idle": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - }, - "iowait": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - }, - "irq": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - }, - "mhz": { - "type": "float" - }, - "model_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "model_number": { - "ignore_above": 1024, - "type": "keyword" - }, - "nice": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - }, - "physical_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "softirq": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - }, - "steal": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - }, - "system": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - }, - "total": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "user": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - } - } - }, - "cpu": { - "properties": { - "cores": { - "type": "long" - }, - "idle": { - "properties": { - "norm": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - }, - "iowait": { - "properties": { - "norm": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - }, - "irq": { - "properties": { - "norm": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - }, - "nice": { - "properties": { - "norm": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - }, - "softirq": { - "properties": { - "norm": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - }, - "steal": { - "properties": { - "norm": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - }, - "system": { - "properties": { - "norm": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - }, - "total": { - "properties": { - "norm": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "user": { - "properties": { - "norm": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - } - } - } - } - }, - "diskio": { - "properties": { - "io": { - "properties": { - "ops": { - "type": "long" - }, - "time": { - "type": "long" - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "read": { - "properties": { - "bytes": { - "type": "long" - }, - "count": { - "type": "long" - }, - "time": { - "type": "long" - } - } - }, - "serial_number": { - "ignore_above": 1024, - "type": "keyword" - }, - "write": { - "properties": { - "bytes": { - "type": "long" - }, - "count": { - "type": "long" - }, - "time": { - "type": "long" - } - } - } - } - }, - "entropy": { - "properties": { - "available_bits": { - "type": "long" - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "filesystem": { - "properties": { - "available": { - "type": "long" - }, - "device_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "files": { - "type": "long" - }, - "free": { - "type": "long" - }, - "free_files": { - "type": "long" - }, - "mount_point": { - "ignore_above": 1024, - "type": "keyword" - }, - "options": { - "ignore_above": 1024, - "type": "keyword" - }, - "total": { - "type": "long" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "used": { - "properties": { - "bytes": { - "type": "long" - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - }, - "fsstat": { - "properties": { - "count": { - "type": "long" - }, - "total_files": { - "type": "long" - }, - "total_size": { - "properties": { - "free": { - "type": "long" - }, - "total": { - "type": "long" - }, - "used": { - "type": "long" - } - } - } - } - }, - "load": { - "properties": { - "1": { - "scaling_factor": 100, - "type": "scaled_float" - }, - "15": { - "scaling_factor": 100, - "type": "scaled_float" - }, - "5": { - "scaling_factor": 100, - "type": "scaled_float" - }, - "cores": { - "type": "long" - }, - "norm": { - "properties": { - "1": { - "scaling_factor": 100, - "type": "scaled_float" - }, - "15": { - "scaling_factor": 100, - "type": "scaled_float" - }, - "5": { - "scaling_factor": 100, - "type": "scaled_float" - } - } - } - } - }, - "memory": { - "properties": { - "actual": { - "properties": { - "free": { - "type": "long" - }, - "used": { - "properties": { - "bytes": { - "type": "long" - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - }, - "cached": { - "type": "long" - }, - "free": { - "type": "long" - }, - "swap": { - "properties": { - "free": { - "type": "long" - }, - "total": { - "type": "long" - }, - "used": { - "properties": { - "bytes": { - "type": "long" - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - }, - "total": { - "type": "long" - }, - "used": { - "properties": { - "bytes": { - "type": "long" - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - }, - "network": { - "properties": { - "in": { - "properties": { - "bytes": { - "type": "long" - }, - "dropped": { - "type": "long" - }, - "errors": { - "type": "long" - }, - "packets": { - "type": "long" - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "out": { - "properties": { - "bytes": { - "type": "long" - }, - "dropped": { - "type": "long" - }, - "errors": { - "type": "long" - }, - "packets": { - "type": "long" - } - } - } - } - }, - "network_summary": { - "properties": { - "icmp": { - "properties": { - "*": { - "type": "object" - } - } - }, - "ip": { - "properties": { - "*": { - "type": "object" - } - } - }, - "tcp": { - "properties": { - "*": { - "type": "object" - } - } - }, - "udp": { - "properties": { - "*": { - "type": "object" - } - } - }, - "udp_lite": { - "properties": { - "*": { - "type": "object" - } - } - } - } - }, - "process": { - "properties": { - "cgroup": { - "properties": { - "blkio": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "path": { - "ignore_above": 1024, - "type": "keyword" - }, - "total": { - "properties": { - "bytes": { - "type": "long" - }, - "ios": { - "type": "long" - } - } - } - } - }, - "cgroups_version": { - "type": "long" - }, - "cpu": { - "properties": { - "cfs": { - "properties": { - "period": { - "properties": { - "us": { - "type": "long" - } - } - }, - "quota": { - "properties": { - "us": { - "type": "long" - } - } - }, - "shares": { - "type": "long" - } - } - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "path": { - "ignore_above": 1024, - "type": "keyword" - }, - "pressure": { - "properties": { - "full": { - "properties": { - "10": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "300": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "60": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "total": { - "type": "long" - } - } - }, - "some": { - "properties": { - "10": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "300": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "60": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "total": { - "type": "long" - } - } - } - } - }, - "rt": { - "properties": { - "period": { - "properties": { - "us": { - "type": "long" - } - } - }, - "runtime": { - "properties": { - "us": { - "type": "long" - } - } - } - } - }, - "stats": { - "properties": { - "periods": { - "type": "long" - }, - "system": { - "properties": { - "norm": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "ns": { - "type": "long" - }, - "pct": { - "type": "float" - } - } - }, - "throttled": { - "properties": { - "ns": { - "type": "long" - }, - "periods": { - "type": "long" - }, - "us": { - "type": "long" - } - } - }, - "usage": { - "properties": { - "norm": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "ns": { - "type": "long" - }, - "pct": { - "type": "float" - } - } - }, - "user": { - "properties": { - "norm": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "ns": { - "type": "long" - }, - "pct": { - "type": "float" - } - } - } - } - } - } - }, - "cpuacct": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "path": { - "ignore_above": 1024, - "type": "keyword" - }, - "percpu": { - "type": "object" - }, - "stats": { - "properties": { - "system": { - "properties": { - "norm": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "ns": { - "type": "long" - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "user": { - "properties": { - "norm": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "ns": { - "type": "long" - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - }, - "total": { - "properties": { - "norm": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "ns": { - "type": "long" - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "io": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "path": { - "ignore_above": 1024, - "type": "keyword" - }, - "pressure": { - "properties": { - "full": { - "properties": { - "10": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "300": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "60": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "total": { - "type": "long" - } - } - }, - "some": { - "properties": { - "10": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "300": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "60": { - "properties": { - "pct": { - "type": "float" - } - } - }, - "total": { - "type": "long" - } - } - } - } - }, - "stats": { - "properties": { - "*": { - "properties": { - "*": { - "properties": { - "bytes": { - "type": "object" - }, - "ios": { - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - } - } - } - }, - "memory": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "kmem": { - "properties": { - "failures": { - "type": "long" - }, - "limit": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "usage": { - "properties": { - "bytes": { - "type": "long" - }, - "max": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - }, - "kmem_tcp": { - "properties": { - "failures": { - "type": "long" - }, - "limit": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "usage": { - "properties": { - "bytes": { - "type": "long" - }, - "max": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - }, - "mem": { - "properties": { - "events": { - "properties": { - "fail": { - "type": "long" - }, - "high": { - "type": "long" - }, - "low": { - "type": "long" - }, - "max": { - "type": "long" - }, - "oom": { - "type": "long" - }, - "oom_kill": { - "type": "long" - } - } - }, - "failures": { - "type": "long" - }, - "high": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "limit": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "low": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "max": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "usage": { - "properties": { - "bytes": { - "type": "long" - }, - "max": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - }, - "memsw": { - "properties": { - "events": { - "properties": { - "fail": { - "type": "long" - }, - "high": { - "type": "long" - }, - "low": { - "type": "long" - }, - "max": { - "type": "long" - }, - "oom": { - "type": "long" - }, - "oom_kill": { - "type": "long" - } - } - }, - "failures": { - "type": "long" - }, - "high": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "limit": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "low": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "max": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "usage": { - "properties": { - "bytes": { - "type": "long" - }, - "max": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - }, - "path": { - "ignore_above": 1024, - "type": "keyword" - }, - "stats": { - "properties": { - "*": { - "properties": { - "bytes": { - "type": "object" - } - }, - "type": "object" - }, - "active_anon": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "active_file": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "cache": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "hierarchical_memory_limit": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "hierarchical_memsw_limit": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "inactive_anon": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "inactive_file": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "major_page_faults": { - "type": "long" - }, - "mapped_file": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "page_faults": { - "type": "long" - }, - "pages_in": { - "type": "long" - }, - "pages_out": { - "type": "long" - }, - "rss": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "rss_huge": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "swap": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "unevictable": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - }, - "path": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "cmdline": { - "ignore_above": 2048, - "type": "keyword" - }, - "cpu": { - "properties": { - "start_time": { - "type": "date" - }, - "system": { - "properties": { - "ticks": { - "type": "long" - } - } - }, - "total": { - "properties": { - "norm": { - "properties": { - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - }, - "ticks": { - "type": "long" - }, - "value": { - "type": "long" - } - } - }, - "user": { - "properties": { - "ticks": { - "type": "long" - } - } - } - } - }, - "env": { - "type": "object" - }, - "fd": { - "properties": { - "limit": { - "properties": { - "hard": { - "type": "long" - }, - "soft": { - "type": "long" - } - } - }, - "open": { - "type": "long" - } - } - }, - "memory": { - "properties": { - "rss": { - "properties": { - "bytes": { - "type": "long" - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - }, - "share": { - "type": "long" - }, - "size": { - "type": "long" - } - } - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - }, - "summary": { - "properties": { - "dead": { - "type": "long" - }, - "idle": { - "type": "long" - }, - "parked": { - "type": "long" - }, - "running": { - "type": "long" - }, - "sleeping": { - "type": "long" - }, - "stopped": { - "type": "long" - }, - "total": { - "type": "long" - }, - "unknown": { - "type": "long" - }, - "wake": { - "type": "long" - }, - "wakekill": { - "type": "long" - }, - "zombie": { - "type": "long" - } - } - } - } - }, - "raid": { - "properties": { - "blocks": { - "properties": { - "synced": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "disks": { - "properties": { - "active": { - "type": "long" - }, - "failed": { - "type": "long" - }, - "spare": { - "type": "long" - }, - "states": { - "properties": { - "*": { - "type": "object" - } - } - }, - "total": { - "type": "long" - } - } - }, - "level": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "sync_action": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "service": { - "properties": { - "exec_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "load_state": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "resources": { - "properties": { - "cpu": { - "properties": { - "usage": { - "properties": { - "ns": { - "type": "long" - } - } - } - } - }, - "memory": { - "properties": { - "usage": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "network": { - "properties": { - "in": { - "properties": { - "bytes": { - "type": "long" - }, - "packets": { - "type": "long" - } - } - }, - "out": { - "properties": { - "bytes": { - "type": "long" - }, - "packets": { - "type": "long" - } - } - } - } - }, - "tasks": { - "properties": { - "count": { - "type": "long" - } - } - } - } - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_since": { - "type": "date" - }, - "sub_state": { - "ignore_above": 1024, - "type": "keyword" - }, - "unit_file": { - "properties": { - "state": { - "ignore_above": 1024, - "type": "keyword" - }, - "vendor_preset": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "socket": { - "properties": { - "local": { - "properties": { - "ip": { - "type": "ip" - }, - "port": { - "type": "long" - } - } - }, - "process": { - "properties": { - "cmdline": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "remote": { - "properties": { - "etld_plus_one": { - "ignore_above": 1024, - "type": "keyword" - }, - "host": { - "ignore_above": 1024, - "type": "keyword" - }, - "host_error": { - "ignore_above": 1024, - "type": "keyword" - }, - "ip": { - "type": "ip" - }, - "port": { - "type": "long" - } - } - }, - "summary": { - "properties": { - "all": { - "properties": { - "count": { - "type": "long" - }, - "listening": { - "type": "long" - } - } - }, - "tcp": { - "properties": { - "all": { - "properties": { - "close_wait": { - "type": "long" - }, - "closing": { - "type": "long" - }, - "count": { - "type": "long" - }, - "established": { - "type": "long" - }, - "fin_wait1": { - "type": "long" - }, - "fin_wait2": { - "type": "long" - }, - "last_ack": { - "type": "long" - }, - "listening": { - "type": "long" - }, - "orphan": { - "type": "long" - }, - "syn_recv": { - "type": "long" - }, - "syn_sent": { - "type": "long" - }, - "time_wait": { - "type": "long" - } - } - }, - "memory": { - "type": "long" - } - } - }, - "udp": { - "properties": { - "all": { - "properties": { - "count": { - "type": "long" - } - } - }, - "memory": { - "type": "long" - } - } - } - } - } - } - }, - "uptime": { - "properties": { - "duration": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - }, - "users": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "leader": { - "type": "long" - }, - "path": { - "ignore_above": 1024, - "type": "keyword" - }, - "remote": { - "type": "boolean" - }, - "remote_host": { - "ignore_above": 1024, - "type": "keyword" - }, - "scope": { - "ignore_above": 1024, - "type": "keyword" - }, - "seat": { - "ignore_above": 1024, - "type": "keyword" - }, - "service": { - "ignore_above": 1024, - "type": "keyword" - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "systemd": { - "properties": { - "fragment_path": { - "ignore_above": 1024, - "type": "keyword" - }, - "unit": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "tags": { - "ignore_above": 1024, - "type": "keyword" - }, - "threat": { - "properties": { - "enrichments": { - "properties": { - "indicator": { - "properties": { - "as": { - "properties": { - "number": { - "type": "long" - }, - "organization": { - "properties": { - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "confidence": { - "ignore_above": 1024, - "type": "keyword" - }, - "description": { - "ignore_above": 1024, - "type": "keyword" - }, - "email": { - "properties": { - "address": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "file": { - "properties": { - "accessed": { - "type": "date" - }, - "attributes": { - "ignore_above": 1024, - "type": "keyword" - }, - "code_signature": { - "properties": { - "digest_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "exists": { - "type": "boolean" - }, - "signing_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "team_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "timestamp": { - "type": "date" - }, - "trusted": { - "type": "boolean" - }, - "valid": { - "type": "boolean" - } - } - }, - "created": { - "type": "date" - }, - "ctime": { - "type": "date" - }, - "device": { - "ignore_above": 1024, - "type": "keyword" - }, - "directory": { - "ignore_above": 1024, - "type": "keyword" - }, - "drive_letter": { - "ignore_above": 1, - "type": "keyword" - }, - "elf": { - "properties": { - "architecture": { - "ignore_above": 1024, - "type": "keyword" - }, - "byte_order": { - "ignore_above": 1024, - "type": "keyword" - }, - "cpu_type": { - "ignore_above": 1024, - "type": "keyword" - }, - "creation_date": { - "type": "date" - }, - "exports": { - "type": "flattened" - }, - "header": { - "properties": { - "abi_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "class": { - "ignore_above": 1024, - "type": "keyword" - }, - "data": { - "ignore_above": 1024, - "type": "keyword" - }, - "entrypoint": { - "type": "long" - }, - "object_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "os_abi": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "imports": { - "type": "flattened" - }, - "sections": { - "properties": { - "chi2": { - "type": "long" - }, - "entropy": { - "type": "long" - }, - "flags": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "physical_offset": { - "ignore_above": 1024, - "type": "keyword" - }, - "physical_size": { - "type": "long" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "virtual_address": { - "type": "long" - }, - "virtual_size": { - "type": "long" - } - }, - "type": "nested" - }, - "segments": { - "properties": { - "sections": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - }, - "type": "nested" - }, - "shared_libraries": { - "ignore_above": 1024, - "type": "keyword" - }, - "telfhash": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "extension": { - "ignore_above": 1024, - "type": "keyword" - }, - "fork_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "gid": { - "ignore_above": 1024, - "type": "keyword" - }, - "group": { - "ignore_above": 1024, - "type": "keyword" - }, - "hash": { - "properties": { - "md5": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha1": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha256": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha512": { - "ignore_above": 1024, - "type": "keyword" - }, - "ssdeep": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "inode": { - "ignore_above": 1024, - "type": "keyword" - }, - "mime_type": { - "ignore_above": 1024, - "type": "keyword" - }, - "mode": { - "ignore_above": 1024, - "type": "keyword" - }, - "mtime": { - "type": "date" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "owner": { - "ignore_above": 1024, - "type": "keyword" - }, - "path": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "pe": { - "properties": { - "architecture": { - "ignore_above": 1024, - "type": "keyword" - }, - "company": { - "ignore_above": 1024, - "type": "keyword" - }, - "description": { - "ignore_above": 1024, - "type": "keyword" - }, - "file_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "imphash": { - "ignore_above": 1024, - "type": "keyword" - }, - "original_file_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "product": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "size": { - "type": "long" - }, - "target_path": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "uid": { - "ignore_above": 1024, - "type": "keyword" - }, - "x509": { - "properties": { - "alternative_names": { - "ignore_above": 1024, - "type": "keyword" - }, - "issuer": { - "properties": { - "common_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country": { - "ignore_above": 1024, - "type": "keyword" - }, - "distinguished_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "locality": { - "ignore_above": 1024, - "type": "keyword" - }, - "organization": { - "ignore_above": 1024, - "type": "keyword" - }, - "organizational_unit": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_or_province": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "not_after": { - "type": "date" - }, - "not_before": { - "type": "date" - }, - "public_key_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "public_key_curve": { - "ignore_above": 1024, - "type": "keyword" - }, - "public_key_exponent": { - "doc_values": false, - "index": false, - "type": "long" - }, - "public_key_size": { - "type": "long" - }, - "serial_number": { - "ignore_above": 1024, - "type": "keyword" - }, - "signature_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject": { - "properties": { - "common_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country": { - "ignore_above": 1024, - "type": "keyword" - }, - "distinguished_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "locality": { - "ignore_above": 1024, - "type": "keyword" - }, - "organization": { - "ignore_above": 1024, - "type": "keyword" - }, - "organizational_unit": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_or_province": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "version_number": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "first_seen": { - "type": "date" - }, - "geo": { - "properties": { - "city_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "location": { - "type": "geo_point" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "postal_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "timezone": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "ip": { - "type": "ip" - }, - "last_seen": { - "type": "date" - }, - "marking": { - "properties": { - "tlp": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "modified_at": { - "type": "date" - }, - "port": { - "type": "long" - }, - "provider": { - "ignore_above": 1024, - "type": "keyword" - }, - "reference": { - "ignore_above": 1024, - "type": "keyword" - }, - "registry": { - "properties": { - "data": { - "properties": { - "bytes": { - "ignore_above": 1024, - "type": "keyword" - }, - "strings": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "hive": { - "ignore_above": 1024, - "type": "keyword" - }, - "key": { - "ignore_above": 1024, - "type": "keyword" - }, - "path": { - "ignore_above": 1024, - "type": "keyword" - }, - "value": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "scanner_stats": { - "type": "long" - }, - "sightings": { - "type": "long" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "url": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "extension": { - "ignore_above": 1024, - "type": "keyword" - }, - "fragment": { - "ignore_above": 1024, - "type": "keyword" - }, - "full": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "original": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "password": { - "ignore_above": 1024, - "type": "keyword" - }, - "path": { - "ignore_above": 1024, - "type": "keyword" - }, - "port": { - "type": "long" - }, - "query": { - "ignore_above": 1024, - "type": "keyword" - }, - "registered_domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "scheme": { - "ignore_above": 1024, - "type": "keyword" - }, - "subdomain": { - "ignore_above": 1024, - "type": "keyword" - }, - "top_level_domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "username": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "x509": { - "properties": { - "alternative_names": { - "ignore_above": 1024, - "type": "keyword" - }, - "issuer": { - "properties": { - "common_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country": { - "ignore_above": 1024, - "type": "keyword" - }, - "distinguished_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "locality": { - "ignore_above": 1024, - "type": "keyword" - }, - "organization": { - "ignore_above": 1024, - "type": "keyword" - }, - "organizational_unit": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_or_province": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "not_after": { - "type": "date" - }, - "not_before": { - "type": "date" - }, - "public_key_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "public_key_curve": { - "ignore_above": 1024, - "type": "keyword" - }, - "public_key_exponent": { - "doc_values": false, - "index": false, - "type": "long" - }, - "public_key_size": { - "type": "long" - }, - "serial_number": { - "ignore_above": 1024, - "type": "keyword" - }, - "signature_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject": { - "properties": { - "common_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country": { - "ignore_above": 1024, - "type": "keyword" - }, - "distinguished_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "locality": { - "ignore_above": 1024, - "type": "keyword" - }, - "organization": { - "ignore_above": 1024, - "type": "keyword" - }, - "organizational_unit": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_or_province": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "version_number": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - }, - "type": "object" - }, - "matched": { - "properties": { - "atomic": { - "ignore_above": 1024, - "type": "keyword" - }, - "field": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "index": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - }, - "type": "nested" - }, - "framework": { - "ignore_above": 1024, - "type": "keyword" - }, - "group": { - "properties": { - "alias": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "reference": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "indicator": { - "properties": { - "as": { - "properties": { - "number": { - "type": "long" - }, - "organization": { - "properties": { - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "confidence": { - "ignore_above": 1024, - "type": "keyword" - }, - "description": { - "ignore_above": 1024, - "type": "keyword" - }, - "email": { - "properties": { - "address": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "file": { - "properties": { - "accessed": { - "type": "date" - }, - "attributes": { - "ignore_above": 1024, - "type": "keyword" - }, - "code_signature": { - "properties": { - "digest_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "exists": { - "type": "boolean" - }, - "signing_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "team_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "timestamp": { - "type": "date" - }, - "trusted": { - "type": "boolean" - }, - "valid": { - "type": "boolean" - } - } - }, - "created": { - "type": "date" - }, - "ctime": { - "type": "date" - }, - "device": { - "ignore_above": 1024, - "type": "keyword" - }, - "directory": { - "ignore_above": 1024, - "type": "keyword" - }, - "drive_letter": { - "ignore_above": 1, - "type": "keyword" - }, - "elf": { - "properties": { - "architecture": { - "ignore_above": 1024, - "type": "keyword" - }, - "byte_order": { - "ignore_above": 1024, - "type": "keyword" - }, - "cpu_type": { - "ignore_above": 1024, - "type": "keyword" - }, - "creation_date": { - "type": "date" - }, - "exports": { - "type": "flattened" - }, - "header": { - "properties": { - "abi_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "class": { - "ignore_above": 1024, - "type": "keyword" - }, - "data": { - "ignore_above": 1024, - "type": "keyword" - }, - "entrypoint": { - "type": "long" - }, - "object_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "os_abi": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "imports": { - "type": "flattened" - }, - "sections": { - "properties": { - "chi2": { - "type": "long" - }, - "entropy": { - "type": "long" - }, - "flags": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "physical_offset": { - "ignore_above": 1024, - "type": "keyword" - }, - "physical_size": { - "type": "long" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "virtual_address": { - "type": "long" - }, - "virtual_size": { - "type": "long" - } - }, - "type": "nested" - }, - "segments": { - "properties": { - "sections": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - }, - "type": "nested" - }, - "shared_libraries": { - "ignore_above": 1024, - "type": "keyword" - }, - "telfhash": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "extension": { - "ignore_above": 1024, - "type": "keyword" - }, - "fork_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "gid": { - "ignore_above": 1024, - "type": "keyword" - }, - "group": { - "ignore_above": 1024, - "type": "keyword" - }, - "hash": { - "properties": { - "md5": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha1": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha256": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha512": { - "ignore_above": 1024, - "type": "keyword" - }, - "ssdeep": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "inode": { - "ignore_above": 1024, - "type": "keyword" - }, - "mime_type": { - "ignore_above": 1024, - "type": "keyword" - }, - "mode": { - "ignore_above": 1024, - "type": "keyword" - }, - "mtime": { - "type": "date" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "owner": { - "ignore_above": 1024, - "type": "keyword" - }, - "path": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "pe": { - "properties": { - "architecture": { - "ignore_above": 1024, - "type": "keyword" - }, - "company": { - "ignore_above": 1024, - "type": "keyword" - }, - "description": { - "ignore_above": 1024, - "type": "keyword" - }, - "file_version": { - "ignore_above": 1024, - "type": "keyword" - }, - "imphash": { - "ignore_above": 1024, - "type": "keyword" - }, - "original_file_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "product": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "size": { - "type": "long" - }, - "target_path": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "uid": { - "ignore_above": 1024, - "type": "keyword" - }, - "x509": { - "properties": { - "alternative_names": { - "ignore_above": 1024, - "type": "keyword" - }, - "issuer": { - "properties": { - "common_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country": { - "ignore_above": 1024, - "type": "keyword" - }, - "distinguished_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "locality": { - "ignore_above": 1024, - "type": "keyword" - }, - "organization": { - "ignore_above": 1024, - "type": "keyword" - }, - "organizational_unit": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_or_province": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "not_after": { - "type": "date" - }, - "not_before": { - "type": "date" - }, - "public_key_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "public_key_curve": { - "ignore_above": 1024, - "type": "keyword" - }, - "public_key_exponent": { - "doc_values": false, - "index": false, - "type": "long" - }, - "public_key_size": { - "type": "long" - }, - "serial_number": { - "ignore_above": 1024, - "type": "keyword" - }, - "signature_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject": { - "properties": { - "common_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country": { - "ignore_above": 1024, - "type": "keyword" - }, - "distinguished_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "locality": { - "ignore_above": 1024, - "type": "keyword" - }, - "organization": { - "ignore_above": 1024, - "type": "keyword" - }, - "organizational_unit": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_or_province": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "version_number": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "first_seen": { - "type": "date" - }, - "geo": { - "properties": { - "city_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "continent_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "country_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "location": { - "type": "geo_point" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "postal_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_iso_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "region_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "timezone": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "ip": { - "type": "ip" - }, - "last_seen": { - "type": "date" - }, - "marking": { - "properties": { - "tlp": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "modified_at": { - "type": "date" - }, - "port": { - "type": "long" - }, - "provider": { - "ignore_above": 1024, - "type": "keyword" - }, - "reference": { - "ignore_above": 1024, - "type": "keyword" - }, - "registry": { - "properties": { - "data": { - "properties": { - "bytes": { - "ignore_above": 1024, - "type": "keyword" - }, - "strings": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "hive": { - "ignore_above": 1024, - "type": "keyword" - }, - "key": { - "ignore_above": 1024, - "type": "keyword" - }, - "path": { - "ignore_above": 1024, - "type": "keyword" - }, - "value": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "scanner_stats": { - "type": "long" - }, - "sightings": { - "type": "long" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "url": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "extension": { - "ignore_above": 1024, - "type": "keyword" - }, - "fragment": { - "ignore_above": 1024, - "type": "keyword" - }, - "full": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "original": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "password": { - "ignore_above": 1024, - "type": "keyword" - }, - "path": { - "ignore_above": 1024, - "type": "keyword" - }, - "port": { - "type": "long" - }, - "query": { - "ignore_above": 1024, - "type": "keyword" - }, - "registered_domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "scheme": { - "ignore_above": 1024, - "type": "keyword" - }, - "subdomain": { - "ignore_above": 1024, - "type": "keyword" - }, - "top_level_domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "username": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "x509": { - "properties": { - "alternative_names": { - "ignore_above": 1024, - "type": "keyword" - }, - "issuer": { - "properties": { - "common_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country": { - "ignore_above": 1024, - "type": "keyword" - }, - "distinguished_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "locality": { - "ignore_above": 1024, - "type": "keyword" - }, - "organization": { - "ignore_above": 1024, - "type": "keyword" - }, - "organizational_unit": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_or_province": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "not_after": { - "type": "date" - }, - "not_before": { - "type": "date" - }, - "public_key_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "public_key_curve": { - "ignore_above": 1024, - "type": "keyword" - }, - "public_key_exponent": { - "doc_values": false, - "index": false, - "type": "long" - }, - "public_key_size": { - "type": "long" - }, - "serial_number": { - "ignore_above": 1024, - "type": "keyword" - }, - "signature_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject": { - "properties": { - "common_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country": { - "ignore_above": 1024, - "type": "keyword" - }, - "distinguished_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "locality": { - "ignore_above": 1024, - "type": "keyword" - }, - "organization": { - "ignore_above": 1024, - "type": "keyword" - }, - "organizational_unit": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_or_province": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "version_number": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "software": { - "properties": { - "alias": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "platforms": { - "ignore_above": 1024, - "type": "keyword" - }, - "reference": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "tactic": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "reference": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "technique": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "reference": { - "ignore_above": 1024, - "type": "keyword" - }, - "subtechnique": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "reference": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - } - } - }, - "timeseries": { - "properties": { - "instance": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "timestamp": { - "path": "@timestamp", - "type": "alias" - }, - "tls": { - "properties": { - "cipher": { - "ignore_above": 1024, - "type": "keyword" - }, - "client": { - "properties": { - "certificate": { - "ignore_above": 1024, - "type": "keyword" - }, - "certificate_chain": { - "ignore_above": 1024, - "type": "keyword" - }, - "hash": { - "properties": { - "md5": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha1": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha256": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "issuer": { - "ignore_above": 1024, - "type": "keyword" - }, - "ja3": { - "ignore_above": 1024, - "type": "keyword" - }, - "not_after": { - "type": "date" - }, - "not_before": { - "type": "date" - }, - "server_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject": { - "ignore_above": 1024, - "type": "keyword" - }, - "supported_ciphers": { - "ignore_above": 1024, - "type": "keyword" - }, - "x509": { - "properties": { - "alternative_names": { - "ignore_above": 1024, - "type": "keyword" - }, - "issuer": { - "properties": { - "common_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country": { - "ignore_above": 1024, - "type": "keyword" - }, - "distinguished_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "locality": { - "ignore_above": 1024, - "type": "keyword" - }, - "organization": { - "ignore_above": 1024, - "type": "keyword" - }, - "organizational_unit": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_or_province": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "not_after": { - "type": "date" - }, - "not_before": { - "type": "date" - }, - "public_key_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "public_key_curve": { - "ignore_above": 1024, - "type": "keyword" - }, - "public_key_exponent": { - "doc_values": false, - "index": false, - "type": "long" - }, - "public_key_size": { - "type": "long" - }, - "serial_number": { - "ignore_above": 1024, - "type": "keyword" - }, - "signature_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject": { - "properties": { - "common_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country": { - "ignore_above": 1024, - "type": "keyword" - }, - "distinguished_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "locality": { - "ignore_above": 1024, - "type": "keyword" - }, - "organization": { - "ignore_above": 1024, - "type": "keyword" - }, - "organizational_unit": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_or_province": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "version_number": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "curve": { - "ignore_above": 1024, - "type": "keyword" - }, - "established": { - "type": "boolean" - }, - "next_protocol": { - "ignore_above": 1024, - "type": "keyword" - }, - "resumed": { - "type": "boolean" - }, - "server": { - "properties": { - "certificate": { - "ignore_above": 1024, - "type": "keyword" - }, - "certificate_chain": { - "ignore_above": 1024, - "type": "keyword" - }, - "hash": { - "properties": { - "md5": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha1": { - "ignore_above": 1024, - "type": "keyword" - }, - "sha256": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "issuer": { - "ignore_above": 1024, - "type": "keyword" - }, - "ja3s": { - "ignore_above": 1024, - "type": "keyword" - }, - "not_after": { - "type": "date" - }, - "not_before": { - "type": "date" - }, - "subject": { - "ignore_above": 1024, - "type": "keyword" - }, - "x509": { - "properties": { - "alternative_names": { - "ignore_above": 1024, - "type": "keyword" - }, - "issuer": { - "properties": { - "common_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country": { - "ignore_above": 1024, - "type": "keyword" - }, - "distinguished_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "locality": { - "ignore_above": 1024, - "type": "keyword" - }, - "organization": { - "ignore_above": 1024, - "type": "keyword" - }, - "organizational_unit": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_or_province": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "not_after": { - "type": "date" - }, - "not_before": { - "type": "date" - }, - "public_key_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "public_key_curve": { - "ignore_above": 1024, - "type": "keyword" - }, - "public_key_exponent": { - "doc_values": false, - "index": false, - "type": "long" - }, - "public_key_size": { - "type": "long" - }, - "serial_number": { - "ignore_above": 1024, - "type": "keyword" - }, - "signature_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject": { - "properties": { - "common_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country": { - "ignore_above": 1024, - "type": "keyword" - }, - "distinguished_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "locality": { - "ignore_above": 1024, - "type": "keyword" - }, - "organization": { - "ignore_above": 1024, - "type": "keyword" - }, - "organizational_unit": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_or_province": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "version_number": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - }, - "version_protocol": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "trace": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "traefik": { - "properties": { - "health": { - "properties": { - "response": { - "properties": { - "avg_time": { - "properties": { - "us": { - "type": "long" - } - } - }, - "count": { - "type": "long" - }, - "status_codes": { - "properties": { - "*": { - "type": "object" - } - } - } - } - }, - "uptime": { - "properties": { - "sec": { - "type": "long" - } - } - } - } - } - } - }, - "transaction": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "url": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "extension": { - "ignore_above": 1024, - "type": "keyword" - }, - "fragment": { - "ignore_above": 1024, - "type": "keyword" - }, - "full": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "original": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "password": { - "ignore_above": 1024, - "type": "keyword" - }, - "path": { - "ignore_above": 1024, - "type": "keyword" - }, - "port": { - "type": "long" - }, - "query": { - "ignore_above": 1024, - "type": "keyword" - }, - "registered_domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "scheme": { - "ignore_above": 1024, - "type": "keyword" - }, - "subdomain": { - "ignore_above": 1024, - "type": "keyword" - }, - "top_level_domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "username": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "user": { - "properties": { - "changes": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "email": { - "ignore_above": 1024, - "type": "keyword" - }, - "full_name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "group": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "hash": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "roles": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "effective": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "email": { - "ignore_above": 1024, - "type": "keyword" - }, - "full_name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "group": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "hash": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "roles": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "email": { - "ignore_above": 1024, - "type": "keyword" - }, - "full_name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "group": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "hash": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "roles": { - "ignore_above": 1024, - "type": "keyword" - }, - "target": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "email": { - "ignore_above": 1024, - "type": "keyword" - }, - "full_name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "group": { - "properties": { - "domain": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "hash": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "roles": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "user_agent": { - "properties": { - "device": { - "properties": { - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "original": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "os": { - "properties": { - "family": { - "ignore_above": 1024, - "type": "keyword" - }, - "full": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "kernel": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "platform": { - "ignore_above": 1024, - "type": "keyword" - }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "uwsgi": { - "properties": { - "status": { - "properties": { - "core": { - "properties": { - "id": { - "type": "long" - }, - "read_errors": { - "type": "long" - }, - "requests": { - "properties": { - "offloaded": { - "type": "long" - }, - "routed": { - "type": "long" - }, - "static": { - "type": "long" - }, - "total": { - "type": "long" - } - } - }, - "worker_pid": { - "type": "long" - }, - "write_errors": { - "type": "long" - } - } - }, - "total": { - "properties": { - "exceptions": { - "type": "long" - }, - "pid": { - "type": "long" - }, - "read_errors": { - "type": "long" - }, - "requests": { - "type": "long" - }, - "write_errors": { - "type": "long" - } - } - }, - "worker": { - "properties": { - "accepting": { - "type": "long" - }, - "avg_rt": { - "type": "long" - }, - "delta_requests": { - "type": "long" - }, - "exceptions": { - "type": "long" - }, - "harakiri_count": { - "type": "long" - }, - "id": { - "type": "long" - }, - "pid": { - "type": "long" - }, - "requests": { - "type": "long" - }, - "respawn_count": { - "type": "long" - }, - "rss": { - "type": "long" - }, - "running_time": { - "type": "long" - }, - "signal_queue": { - "type": "long" - }, - "signals": { - "type": "long" - }, - "status": { - "ignore_above": 1024, - "type": "keyword" - }, - "tx": { - "type": "long" - }, - "vsz": { - "type": "long" - } - } - } - } - } - } - }, - "vlan": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "vsphere": { - "properties": { - "datastore": { - "properties": { - "capacity": { - "properties": { - "free": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "total": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "long" - }, - "pct": { - "scaling_factor": 1000, - "type": "scaled_float" - } - } - } - } - }, - "fstype": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "host": { - "properties": { - "cpu": { - "properties": { - "free": { - "properties": { - "mhz": { - "type": "long" - } - } - }, - "total": { - "properties": { - "mhz": { - "type": "long" - } - } - }, - "used": { - "properties": { - "mhz": { - "type": "long" - } - } - } - } - }, - "memory": { - "properties": { - "free": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "total": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "used": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "network_names": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "virtualmachine": { - "properties": { - "cpu": { - "properties": { - "free": { - "properties": { - "mhz": { - "type": "long" - } - } - }, - "total": { - "properties": { - "mhz": { - "type": "long" - } - } - }, - "used": { - "properties": { - "mhz": { - "type": "long" - } - } - } - } - }, - "custom_fields": { - "type": "object" - }, - "host": { - "properties": { - "hostname": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "memory": { - "properties": { - "free": { - "properties": { - "guest": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "total": { - "properties": { - "guest": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - }, - "used": { - "properties": { - "guest": { - "properties": { - "bytes": { - "type": "long" - } - } - }, - "host": { - "properties": { - "bytes": { - "type": "long" - } - } - } - } - } - } - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "network_names": { - "ignore_above": 1024, - "type": "keyword" - }, - "os": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - }, - "vulnerability": { - "properties": { - "category": { - "ignore_above": 1024, - "type": "keyword" - }, - "classification": { - "ignore_above": 1024, - "type": "keyword" - }, - "description": { - "fields": { - "text": { - "norms": false, - "type": "text" - } - }, - "ignore_above": 1024, - "type": "keyword" - }, - "enumeration": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "reference": { - "ignore_above": 1024, - "type": "keyword" - }, - "report_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "scanner": { - "properties": { - "vendor": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "score": { - "properties": { - "base": { - "type": "float" - }, - "environmental": { - "type": "float" - }, - "temporal": { - "type": "float" - }, - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "severity": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "windows": { - "properties": { - "perfmon": { - "properties": { - "instance": { - "ignore_above": 1024, - "type": "keyword" - }, - "metrics": { - "properties": { - "*": { - "properties": { - "*": { - "type": "object" - } - } - } - } - } - } - }, - "service": { - "properties": { - "display_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "exit_code": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "path_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "pid": { - "type": "long" - }, - "start_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "start_type": { - "ignore_above": 1024, - "type": "keyword" - }, - "state": { - "ignore_above": 1024, - "type": "keyword" - }, - "uptime": { - "properties": { - "ms": { - "type": "long" - } - } - } - } - } - } - }, - "x509": { - "properties": { - "alternative_names": { - "ignore_above": 1024, - "type": "keyword" - }, - "issuer": { - "properties": { - "common_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country": { - "ignore_above": 1024, - "type": "keyword" - }, - "distinguished_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "locality": { - "ignore_above": 1024, - "type": "keyword" - }, - "organization": { - "ignore_above": 1024, - "type": "keyword" - }, - "organizational_unit": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_or_province": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "not_after": { - "type": "date" - }, - "not_before": { - "type": "date" - }, - "public_key_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "public_key_curve": { - "ignore_above": 1024, - "type": "keyword" - }, - "public_key_exponent": { - "doc_values": false, - "index": false, - "type": "long" - }, - "public_key_size": { - "type": "long" - }, - "serial_number": { - "ignore_above": 1024, - "type": "keyword" - }, - "signature_algorithm": { - "ignore_above": 1024, - "type": "keyword" - }, - "subject": { - "properties": { - "common_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "country": { - "ignore_above": 1024, - "type": "keyword" - }, - "distinguished_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "locality": { - "ignore_above": 1024, - "type": "keyword" - }, - "organization": { - "ignore_above": 1024, - "type": "keyword" - }, - "organizational_unit": { - "ignore_above": 1024, - "type": "keyword" - }, - "state_or_province": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "version_number": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "zookeeper": { - "properties": { - "connection": { - "properties": { - "interest_ops": { - "type": "long" - }, - "queued": { - "type": "long" - }, - "received": { - "type": "long" - }, - "sent": { - "type": "long" - } - } - }, - "mntr": { - "properties": { - "approximate_data_size": { - "type": "long" - }, - "ephemerals_count": { - "type": "long" - }, - "followers": { - "type": "long" - }, - "hostname": { - "ignore_above": 1024, - "type": "keyword" - }, - "latency": { - "properties": { - "avg": { - "type": "long" - }, - "max": { - "type": "long" - }, - "min": { - "type": "long" - } - } - }, - "learners": { - "type": "long" - }, - "max_file_descriptor_count": { - "type": "long" - }, - "num_alive_connections": { - "type": "long" - }, - "open_file_descriptor_count": { - "type": "long" - }, - "outstanding_requests": { - "type": "long" - }, - "packets": { - "properties": { - "received": { - "type": "long" - }, - "sent": { - "type": "long" - } - } - }, - "pending_syncs": { - "type": "long" - }, - "server_state": { - "ignore_above": 1024, - "type": "keyword" - }, - "synced_followers": { - "type": "long" - }, - "version": { - "path": "service.version", - "type": "alias" - }, - "watch_count": { - "type": "long" - }, - "znode_count": { - "type": "long" - } - } - }, - "server": { - "properties": { - "connections": { - "type": "long" - }, - "count": { - "type": "long" - }, - "epoch": { - "type": "long" - }, - "latency": { - "properties": { - "avg": { - "type": "long" - }, - "max": { - "type": "long" - }, - "min": { - "type": "long" - } - } - }, - "mode": { - "ignore_above": 1024, - "type": "keyword" - }, - "node_count": { - "type": "long" - }, - "outstanding": { - "type": "long" - }, - "received": { - "type": "long" - }, - "sent": { - "type": "long" - }, - "version_date": { - "type": "date" - }, - "zxid": { - "ignore_above": 1024, - "type": "keyword" - } - } - } - } - } - } - }, - "settings": { - "index": { - "mapping": { - "total_fields": { - "limit": "10000" - } - }, - "max_docvalue_fields_search": "200", - "query": { - "default_field": [ - "message", - "tags", - "agent.ephemeral_id", - "agent.id", - "agent.name", - "agent.type", - "agent.version", - "as.organization.name", - "client.address", - "client.as.organization.name", - "client.domain", - "client.geo.city_name", - "client.geo.continent_name", - "client.geo.country_iso_code", - "client.geo.country_name", - "client.geo.name", - "client.geo.region_iso_code", - "client.geo.region_name", - "client.mac", - "client.registered_domain", - "client.top_level_domain", - "client.user.domain", - "client.user.email", - "client.user.full_name", - "client.user.group.domain", - "client.user.group.id", - "client.user.group.name", - "client.user.hash", - "client.user.id", - "client.user.name", - "cloud.account.id", - "cloud.availability_zone", - "cloud.instance.id", - "cloud.instance.name", - "cloud.machine.type", - "cloud.provider", - "cloud.region", - "container.id", - "container.image.name", - "container.image.tag", - "container.name", - "container.runtime", - "destination.address", - "destination.as.organization.name", - "destination.domain", - "destination.geo.city_name", - "destination.geo.continent_name", - "destination.geo.country_iso_code", - "destination.geo.country_name", - "destination.geo.name", - "destination.geo.region_iso_code", - "destination.geo.region_name", - "destination.mac", - "destination.registered_domain", - "destination.top_level_domain", - "destination.user.domain", - "destination.user.email", - "destination.user.full_name", - "destination.user.group.domain", - "destination.user.group.id", - "destination.user.group.name", - "destination.user.hash", - "destination.user.id", - "destination.user.name", - "dns.answers.class", - "dns.answers.data", - "dns.answers.name", - "dns.answers.type", - "dns.header_flags", - "dns.id", - "dns.op_code", - "dns.question.class", - "dns.question.name", - "dns.question.registered_domain", - "dns.question.subdomain", - "dns.question.top_level_domain", - "dns.question.type", - "dns.response_code", - "dns.type", - "ecs.version", - "error.code", - "error.id", - "error.message", - "error.stack_trace", - "error.type", - "event.action", - "event.category", - "event.code", - "event.dataset", - "event.hash", - "event.id", - "event.kind", - "event.module", - "event.outcome", - "event.provider", - "event.timezone", - "event.type", - "file.device", - "file.directory", - "file.extension", - "file.gid", - "file.group", - "file.hash.md5", - "file.hash.sha1", - "file.hash.sha256", - "file.hash.sha512", - "file.inode", - "file.mode", - "file.name", - "file.owner", - "file.path", - "file.target_path", - "file.type", - "file.uid", - "geo.city_name", - "geo.continent_name", - "geo.country_iso_code", - "geo.country_name", - "geo.name", - "geo.region_iso_code", - "geo.region_name", - "group.domain", - "group.id", - "group.name", - "hash.md5", - "hash.sha1", - "hash.sha256", - "hash.sha512", - "host.architecture", - "host.geo.city_name", - "host.geo.continent_name", - "host.geo.country_iso_code", - "host.geo.country_name", - "host.geo.name", - "host.geo.region_iso_code", - "host.geo.region_name", - "host.hostname", - "host.id", - "host.mac", - "host.name", - "host.os.family", - "host.os.full", - "host.os.kernel", - "host.os.name", - "host.os.platform", - "host.os.version", - "host.type", - "http.request.body.content", - "http.request.method", - "http.request.referrer", - "http.response.body.content", - "http.version", - "log.level", - "log.logger", - "log.origin.file.name", - "log.origin.function", - "log.syslog.facility.name", - "log.syslog.severity.name", - "network.application", - "network.community_id", - "network.direction", - "network.iana_number", - "network.name", - "network.protocol", - "network.transport", - "network.type", - "observer.geo.city_name", - "observer.geo.continent_name", - "observer.geo.country_iso_code", - "observer.geo.country_name", - "observer.geo.name", - "observer.geo.region_iso_code", - "observer.geo.region_name", - "observer.hostname", - "observer.mac", - "observer.name", - "observer.os.family", - "observer.os.full", - "observer.os.kernel", - "observer.os.name", - "observer.os.platform", - "observer.os.version", - "observer.product", - "observer.serial_number", - "observer.type", - "observer.vendor", - "observer.version", - "organization.id", - "organization.name", - "os.family", - "os.full", - "os.kernel", - "os.name", - "os.platform", - "os.version", - "package.architecture", - "package.checksum", - "package.description", - "package.install_scope", - "package.license", - "package.name", - "package.path", - "package.version", - "process.args", - "process.executable", - "process.hash.md5", - "process.hash.sha1", - "process.hash.sha256", - "process.hash.sha512", - "process.name", - "process.thread.name", - "process.title", - "process.working_directory", - "server.address", - "server.as.organization.name", - "server.domain", - "server.geo.city_name", - "server.geo.continent_name", - "server.geo.country_iso_code", - "server.geo.country_name", - "server.geo.name", - "server.geo.region_iso_code", - "server.geo.region_name", - "server.mac", - "server.registered_domain", - "server.top_level_domain", - "server.user.domain", - "server.user.email", - "server.user.full_name", - "server.user.group.domain", - "server.user.group.id", - "server.user.group.name", - "server.user.hash", - "server.user.id", - "server.user.name", - "service.ephemeral_id", - "service.id", - "service.name", - "service.node.name", - "service.state", - "service.type", - "service.version", - "source.address", - "source.as.organization.name", - "source.domain", - "source.geo.city_name", - "source.geo.continent_name", - "source.geo.country_iso_code", - "source.geo.country_name", - "source.geo.name", - "source.geo.region_iso_code", - "source.geo.region_name", - "source.mac", - "source.registered_domain", - "source.top_level_domain", - "source.user.domain", - "source.user.email", - "source.user.full_name", - "source.user.group.domain", - "source.user.group.id", - "source.user.group.name", - "source.user.hash", - "source.user.id", - "source.user.name", - "threat.framework", - "threat.tactic.id", - "threat.tactic.name", - "threat.tactic.reference", - "threat.technique.id", - "threat.technique.name", - "threat.technique.reference", - "trace.id", - "transaction.id", - "url.domain", - "url.extension", - "url.fragment", - "url.full", - "url.original", - "url.password", - "url.path", - "url.query", - "url.registered_domain", - "url.scheme", - "url.top_level_domain", - "url.username", - "user.domain", - "user.email", - "user.full_name", - "user.group.domain", - "user.group.id", - "user.group.name", - "user.hash", - "user.id", - "user.name", - "user_agent.device.name", - "user_agent.name", - "user_agent.original.text", - "user_agent.original", - "user_agent.os.family", - "user_agent.os.full", - "user_agent.os.kernel", - "user_agent.os.name", - "user_agent.os.platform", - "user_agent.os.version", - "user_agent.version", - "cloud.image.id", - "host.os.build", - "host.os.codename", - "kubernetes.pod.name", - "kubernetes.pod.uid", - "kubernetes.namespace", - "kubernetes.node.name", - "kubernetes.node.hostname", - "kubernetes.replicaset.name", - "kubernetes.deployment.name", - "kubernetes.statefulset.name", - "kubernetes.container.name", - "process.owner.id", - "process.owner.name.text", - "process.owner.name", - "jolokia.agent.version", - "jolokia.agent.id", - "jolokia.server.product", - "jolokia.server.version", - "jolokia.server.vendor", - "jolokia.url", - "fields.*" - ] - }, - "refresh_interval": "5s" - } - } - } - } - } -} \ No newline at end of file diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/config.feature_flags.ts b/x-pack/test_serverless/api_integration/test_suites/observability/config.feature_flags.ts index 3668b6742c828..a78f876361480 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/config.feature_flags.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/config.feature_flags.ts @@ -21,7 +21,6 @@ export default createTestConfig({ services, // add feature flags kbnServerArgs: [ - '--xpack.infra.enabled=true', '--xpack.security.roleManagementEnabled=true', // needed to check composite feautures in /observability/platform_security/authorization.ts ], // load tests in the index file diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/index.feature_flags.ts b/x-pack/test_serverless/api_integration/test_suites/observability/index.feature_flags.ts index 3cd47636831f3..7ed6ca9517ac4 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/index.feature_flags.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/index.feature_flags.ts @@ -10,7 +10,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('Serverless observability API - feature flags', function () { loadTestFile(require.resolve('./custom_threshold_rule')); - loadTestFile(require.resolve('./infra')); loadTestFile(require.resolve('./platform_security')); }); } diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/infra/asset_count.ts b/x-pack/test_serverless/api_integration/test_suites/observability/infra/asset_count.ts deleted file mode 100644 index 99ee61ccf2b67..0000000000000 --- a/x-pack/test_serverless/api_integration/test_suites/observability/infra/asset_count.ts +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import type { - GetInfraAssetCountRequestBodyPayloadClient, - GetInfraAssetCountResponsePayload, - GetInfraAssetCountRequestParamsPayload, -} from '@kbn/infra-plugin/common/http_api'; -import type { RoleCredentials } from '../../../../shared/services'; -import type { FtrProviderContext } from '../../../ftr_provider_context'; - -import { DATES, ARCHIVE_NAME } from './constants'; - -const timeRange = { - from: DATES.serverlessTestingHostDateString.min, - to: DATES.serverlessTestingHostDateString.max, -}; - -export default function ({ getService }: FtrProviderContext) { - const esArchiver = getService('esArchiver'); - const supertestWithoutAuth = getService('supertestWithoutAuth'); - const svlUserManager = getService('svlUserManager'); - const svlCommonApi = getService('svlCommonApi'); - - const fetchHostsCount = async ({ - params, - body, - roleAuthc, - }: { - params: GetInfraAssetCountRequestParamsPayload; - body: GetInfraAssetCountRequestBodyPayloadClient; - roleAuthc: RoleCredentials; - }): Promise => { - const { assetType } = params; - const response = await supertestWithoutAuth - .post(`/api/infra/${assetType}/count`) - .set(svlCommonApi.getInternalRequestHeader()) - .set(roleAuthc.apiKeyHeader) - .send(body) - .expect(200); - return response.body; - }; - - describe('API /api/infra/{assetType}/count', () => { - let roleAuthc: RoleCredentials; - describe('works', () => { - describe('with host', () => { - before(async () => { - roleAuthc = await svlUserManager.createM2mApiKeyWithRoleScope('admin'); - return esArchiver.load(ARCHIVE_NAME); - }); - after(async () => { - await svlUserManager.invalidateM2mApiKeyWithRoleScope(roleAuthc); - return esArchiver.unload(ARCHIVE_NAME); - }); - - it('received data', async () => { - const infraHosts = await fetchHostsCount({ - params: { assetType: 'host' }, - body: { - query: { - bool: { - must: [], - filter: [], - should: [], - must_not: [], - }, - }, - from: timeRange.from, - to: timeRange.to, - }, - roleAuthc, - }); - - if (infraHosts) { - const { count, assetType } = infraHosts; - expect(count).to.equal(1); - expect(assetType).to.be('host'); - } else { - throw new Error('Hosts count response should not be empty'); - } - }); - }); - }); - }); -} diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/infra/constants.ts b/x-pack/test_serverless/api_integration/test_suites/observability/infra/constants.ts deleted file mode 100644 index 368ff72a388c2..0000000000000 --- a/x-pack/test_serverless/api_integration/test_suites/observability/infra/constants.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export const DATES = { - serverlessTestingHost: { - min: 1679873400139, - max: 1680027672003, - }, - serverlessTestingHostDateString: { - min: '2023-03-26T23:30:00.139Z', - max: '2023-03-28T23:30:00.139Z', - }, -}; - -export const ARCHIVE_NAME = 'x-pack/test/functional/es_archives/infra/serverless_testing_host'; diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/infra/index.ts b/x-pack/test_serverless/api_integration/test_suites/observability/infra/index.ts deleted file mode 100644 index 6db6e330c3022..0000000000000 --- a/x-pack/test_serverless/api_integration/test_suites/observability/infra/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { FtrProviderContext } from '../../../ftr_provider_context'; - -export default function ({ loadTestFile }: FtrProviderContext) { - describe('Infra UI', function () { - // all these tests are failing on MKI: - // Error: expected 200 "OK", got 404 "Not Found" - this.tags(['failsOnMKI']); - - loadTestFile(require.resolve('./metadata')); - loadTestFile(require.resolve('./snapshot')); - loadTestFile(require.resolve('./processes')); - loadTestFile(require.resolve('./infra')); - loadTestFile(require.resolve('./asset_count')); - }); -} diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/infra/infra.ts b/x-pack/test_serverless/api_integration/test_suites/observability/infra/infra.ts deleted file mode 100644 index c4cbfd45663b1..0000000000000 --- a/x-pack/test_serverless/api_integration/test_suites/observability/infra/infra.ts +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import type { - GetInfraMetricsRequestBodyPayloadClient, - GetInfraMetricsResponsePayload, -} from '@kbn/infra-plugin/common/http_api'; -import type { RoleCredentials } from '../../../../shared/services'; -import type { FtrProviderContext } from '../../../ftr_provider_context'; - -import { DATES, ARCHIVE_NAME } from './constants'; - -const timeRange = { - from: DATES.serverlessTestingHostDateString.min, - to: DATES.serverlessTestingHostDateString.max, -}; - -export default function ({ getService }: FtrProviderContext) { - const esArchiver = getService('esArchiver'); - const supertestWithoutAuth = getService('supertestWithoutAuth'); - const svlUserManager = getService('svlUserManager'); - const svlCommonApi = getService('svlCommonApi'); - - const fetchInfraHosts = async ( - body: GetInfraMetricsRequestBodyPayloadClient, - roleAuthc: RoleCredentials - ): Promise => { - const response = await supertestWithoutAuth - .post('/api/metrics/infra/host') - .set(svlCommonApi.getInternalRequestHeader()) - .set(roleAuthc.apiKeyHeader) - .send(body) - .expect(200); - return response.body; - }; - - describe('API /metrics/infra/host', () => { - let roleAuthc: RoleCredentials; - describe('works', () => { - describe('with host asset', () => { - before(async () => { - roleAuthc = await svlUserManager.createM2mApiKeyWithRoleScope('admin'); - return esArchiver.load(ARCHIVE_NAME); - }); - after(async () => { - await svlUserManager.invalidateM2mApiKeyWithRoleScope(roleAuthc); - return esArchiver.unload(ARCHIVE_NAME); - }); - - it('received data', async () => { - const infraHosts = await fetchInfraHosts( - { - limit: 100, - metrics: ['rxV2', 'txV2', 'memory', 'cpuV2', 'diskSpaceUsage', 'memoryFree'], - query: { - bool: { - must: [], - filter: [], - should: [], - must_not: [], - }, - }, - from: timeRange.from, - to: timeRange.to, - }, - roleAuthc - ); - - if (infraHosts) { - const { nodes } = infraHosts; - expect(nodes.length).to.equal(1); - const firstNode = nodes[0]; - expect(firstNode).to.eql({ - metadata: [ - { - name: 'host.os.name', - value: 'macOS', - }, - { - name: 'cloud.provider', - value: null, - }, - { - name: 'host.ip', - value: '192.168.1.79', - }, - ], - metrics: [ - { - name: 'rxV2', - value: 17886.18845261874, - }, - { - name: 'txV2', - value: 18216.85858680644, - }, - { - name: 'memory', - value: 0.9490000000000001, - }, - { - name: 'cpuV2', - value: 0.124, - }, - { - name: 'diskSpaceUsage', - value: null, - }, - { - name: 'memoryFree', - value: 1753829376, - }, - ], - hasSystemMetrics: true, - name: 'serverless-host', - }); - } else { - throw new Error('Hosts response should not be empty'); - } - }); - }); - }); - }); -} diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/infra/metadata.ts b/x-pack/test_serverless/api_integration/test_suites/observability/infra/metadata.ts deleted file mode 100644 index c50fe1bcb4928..0000000000000 --- a/x-pack/test_serverless/api_integration/test_suites/observability/infra/metadata.ts +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import type { - InfraMetadata, - InfraMetadataRequest, -} from '@kbn/infra-plugin/common/http_api/metadata_api'; -import type { RoleCredentials } from '../../../../shared/services'; -import type { FtrProviderContext } from '../../../ftr_provider_context'; - -import { DATES, ARCHIVE_NAME } from './constants'; - -const timeRange = { - from: DATES.serverlessTestingHost.min, - to: DATES.serverlessTestingHost.max, -}; - -export default function ({ getService }: FtrProviderContext) { - const esArchiver = getService('esArchiver'); - const supertestWithoutAuth = getService('supertestWithoutAuth'); - const svlUserManager = getService('svlUserManager'); - const svlCommonApi = getService('svlCommonApi'); - - const fetchMetadata = async ( - body: InfraMetadataRequest, - roleAuthc: RoleCredentials - ): Promise => { - const response = await supertestWithoutAuth - .post('/api/infra/metadata') - .set(svlCommonApi.getInternalRequestHeader()) - .set(roleAuthc.apiKeyHeader) - .send(body) - .expect(200); - return response.body; - }; - - describe('API /infra/metadata', () => { - let roleAuthc: RoleCredentials; - describe('works', () => { - describe('Host asset type', () => { - before(async () => { - roleAuthc = await svlUserManager.createM2mApiKeyWithRoleScope('admin'); - await esArchiver.load(ARCHIVE_NAME); - }); - after(async () => { - await esArchiver.unload(ARCHIVE_NAME); - await svlUserManager.invalidateM2mApiKeyWithRoleScope(roleAuthc); - }); - it('with serverless existing host', async () => { - const metadata = await fetchMetadata( - { - sourceId: 'default', - nodeId: 'serverless-host', - nodeType: 'host', - timeRange, - }, - roleAuthc - ); - - if (metadata) { - expect(metadata.features.length).to.be(4); - expect(metadata.name).to.equal('serverless-host'); - expect(metadata.hasSystemIntegration).to.equal(true); - expect(new Date(metadata.info?.timestamp ?? '')?.getTime()).to.be.above(timeRange.from); - expect(new Date(metadata.info?.timestamp ?? '')?.getTime()).to.be.below(timeRange.to); - expect(metadata.info?.agent).to.eql({ - ephemeral_id: '64624d22-1eeb-4267-ac92-b11a1d09c0ba', - id: '3ce5be59-af6a-4668-8f6d-90282a3f820e', - name: 'serverless-host', - type: 'metricbeat', - version: '8.5.0', - }); - expect(metadata.info?.host).to.eql({ - hostname: 'serverless-host', - os: { - build: '22D68', - family: 'darwin', - kernel: '22.3.0', - name: 'macOS', - platform: 'darwin', - type: 'macos', - version: '13.2.1', - }, - id: '47B6A5A5-3134-516A-831B-A9BCA597470C', - ip: [ - 'fe80::3cdd:4bff:fe37:4ce2', - 'fe80::3cdd:4bff:fe37:4ce3', - 'fe80::3cdd:4bff:fe37:4ce1', - 'fe80::bcd0:74ff:fe6e:f2d2', - 'fe80::10cb:77ec:4d5f:e2c7', - 'fd00::47e:cfa4:41d8:c1f6', - '192.168.1.79', - '2003:cd:373d:9600:1f:71d7:cd48:92d4', - '2003:cd:373d:9600:98e0:7ccf:7d02:9ca', - '2003:cd:373d:9600:58a5:f02:405:6cd8', - '2003:cd:373d:9600:f068:9ad1:7ed4:d706', - 'fe80::1ca7:1dff:fe98:2d66', - 'fe80::1ca7:1dff:fe98:2d66', - 'fe80::564c:747a:5670:520c', - 'fe80::205d:bb00:46bf:10e1', - 'fe80::ce81:b1c:bd2c:69e', - ], - mac: [ - '1E-A7-1D-98-2D-66', - '36-5D-68-05-71-00', - '36-5D-68-05-71-04', - '36-5D-68-05-71-08', - '3E-DD-4B-37-4C-C1', - '3E-DD-4B-37-4C-C2', - '3E-DD-4B-37-4C-C3', - '3E-DD-4B-37-4C-E1', - '3E-DD-4B-37-4C-E2', - '3E-DD-4B-37-4C-E3', - 'BC-D0-74-6E-F2-D2', - 'BE-D0-74-6E-F2-D2', - ], - name: 'serverless-host', - architecture: 'arm64', - }); - } else { - throw new Error('Metadata should never be empty'); - } - }); - }); - }); - }); -} diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/infra/processes.ts b/x-pack/test_serverless/api_integration/test_suites/observability/infra/processes.ts deleted file mode 100644 index da811f1482bad..0000000000000 --- a/x-pack/test_serverless/api_integration/test_suites/observability/infra/processes.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import { - ProcessListAPIRequestRT, - ProcessListAPIResponseRT, -} from '@kbn/infra-plugin/common/http_api/host_details/process_list'; -import { decodeOrThrow } from '@kbn/io-ts-utils'; -import type { RoleCredentials } from '../../../../shared/services'; - -import type { FtrProviderContext } from '../../../ftr_provider_context'; -import { DATES, ARCHIVE_NAME } from './constants'; - -export default function ({ getService }: FtrProviderContext) { - const esArchiver = getService('esArchiver'); - const supertestWithoutAuth = getService('supertestWithoutAuth'); - const svlUserManager = getService('svlUserManager'); - const svlCommonApi = getService('svlCommonApi'); - - describe('API /metrics/process_list', () => { - let roleAuthc: RoleCredentials; - before(async () => { - roleAuthc = await svlUserManager.createM2mApiKeyWithRoleScope('admin'); - await esArchiver.load(ARCHIVE_NAME); - }); - after(async () => { - await esArchiver.unload(ARCHIVE_NAME); - await svlUserManager.invalidateM2mApiKeyWithRoleScope(roleAuthc); - }); - - it('works', async () => { - const response = await supertestWithoutAuth - .post('/api/metrics/process_list') - .set(svlCommonApi.getInternalRequestHeader()) - .set(roleAuthc.apiKeyHeader) - .send( - ProcessListAPIRequestRT.encode({ - hostTerm: { - 'host.name': 'serverless-host', - }, - sourceId: 'default', - to: DATES.serverlessTestingHost.max, - sortBy: { - name: 'cpu', - isAscending: false, - }, - searchFilter: [ - { - match_all: {}, - }, - ], - }) - ) - .expect(200); - - const { processList, summary } = decodeOrThrow(ProcessListAPIResponseRT)(response.body); - - expect(processList.length).to.be(3); - expect(summary.total).to.be(313); - }); - }); -} diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/infra/snapshot.ts b/x-pack/test_serverless/api_integration/test_suites/observability/infra/snapshot.ts deleted file mode 100644 index 21d902213a08c..0000000000000 --- a/x-pack/test_serverless/api_integration/test_suites/observability/infra/snapshot.ts +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import type { - SnapshotNodeResponse, - SnapshotRequest, -} from '@kbn/infra-plugin/common/http_api/snapshot_api'; -import type { RoleCredentials } from '../../../../shared/services'; -import type { FtrProviderContext } from '../../../ftr_provider_context'; - -import { DATES, ARCHIVE_NAME } from './constants'; - -export default function ({ getService }: FtrProviderContext) { - const esArchiver = getService('esArchiver'); - const supertestWithoutAuth = getService('supertestWithoutAuth'); - const svlUserManager = getService('svlUserManager'); - const svlCommonApi = getService('svlCommonApi'); - - const fetchSnapshot = async ( - body: SnapshotRequest, - roleAuthc: RoleCredentials - ): Promise => { - const response = await supertestWithoutAuth - .post('/api/metrics/snapshot') - .set(svlCommonApi.getInternalRequestHeader()) - .set(roleAuthc.apiKeyHeader) - .send(body) - .expect(200); - return response.body; - }; - - describe('API /metrics/snapshot', () => { - let roleAuthc: RoleCredentials; - - describe('Snapshot nodes', () => { - const { min, max } = DATES.serverlessTestingHost; - before(async () => { - roleAuthc = await svlUserManager.createM2mApiKeyWithRoleScope('admin'); - await esArchiver.load(ARCHIVE_NAME); - }); - after(async () => { - await esArchiver.unload(ARCHIVE_NAME); - await svlUserManager.invalidateM2mApiKeyWithRoleScope(roleAuthc); - }); - - it('should work', async () => { - const snapshot = await fetchSnapshot( - { - sourceId: 'default', - timerange: { - to: max, - from: min, - interval: '10m', - }, - metrics: [{ type: 'cpu' }], - nodeType: 'host', - groupBy: [], - includeTimeseries: false, - }, - roleAuthc - ); - - if (!snapshot) { - return; - } - - expect(snapshot).to.have.property('nodes'); - - const { nodes } = snapshot; - expect(nodes.length).to.equal(1); - if (snapshot) { - const firstNode = nodes[0]; - expect(firstNode).to.have.property('path'); - expect(firstNode.path.length).to.equal(1); - expect(firstNode.path[0]).to.eql({ - value: 'serverless-host', - label: 'serverless-host', - ip: '192.168.1.79', - os: 'macOS', - cloudProvider: null, - }); - } - }); - }); - }); -} diff --git a/x-pack/test_serverless/tsconfig.json b/x-pack/test_serverless/tsconfig.json index ed9a78fde0f6f..1263efc17cf38 100644 --- a/x-pack/test_serverless/tsconfig.json +++ b/x-pack/test_serverless/tsconfig.json @@ -32,7 +32,6 @@ "@kbn/telemetry-plugin", "@kbn/telemetry-collection-xpack-plugin", "@kbn/telemetry-tools", - "@kbn/infra-plugin", "@kbn/observability-plugin", "@kbn/data-forge", "@kbn/ftr-common-functional-services", From f988de272608bcb93b8a22f35c945f28dff50a91 Mon Sep 17 00:00:00 2001 From: "Eyo O. Eyo" <7893459+eokoneyo@users.noreply.github.com> Date: Tue, 5 Nov 2024 21:00:03 +0100 Subject: [PATCH 55/57] fix for flaky sample data test (#199005) ## Summary Closes https://github.com/elastic/kibana/issues/187473, https://github.com/elastic/kibana/issues/112103 ### Checklist - [x] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed --- test/functional/page_objects/home_page.ts | 62 +++++++++++++---------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/test/functional/page_objects/home_page.ts b/test/functional/page_objects/home_page.ts index 31a162a8800d6..4bdf99a9b7b35 100644 --- a/test/functional/page_objects/home_page.ts +++ b/test/functional/page_objects/home_page.ts @@ -91,40 +91,46 @@ export class HomePageObject extends FtrService { async addSampleDataSet(id: string) { await this.openSampleDataAccordion(); - const isInstalled = await this.isSampleDataSetInstalled(id); - if (!isInstalled) { + await this.retry.waitFor('sample data to be installed', async () => { + // count for the edge case where some how installation completes just before the retry occurs + if (await this.isSampleDataSetInstalled(id)) { + return true; + } + this.log.debug(`Attempting to add sample data: ${id}`); - await this.retry.waitFor('sample data to be installed', async () => { - // Echoing the adjustments made to 'removeSampleDataSet', as we are seeing flaky test cases here as well - // https://github.com/elastic/kibana/issues/52714 - await this.testSubjects.waitForEnabled(`addSampleDataSet${id}`); - await this.common.sleep(1010); - await this.testSubjects.click(`addSampleDataSet${id}`); - await this.common.sleep(1010); - await this._waitForSampleDataLoadingAction(id); - return await this.isSampleDataSetInstalled(id); - }); - } + + // Echoing the adjustments made to 'removeSampleDataSet', as we are seeing flaky test cases here as well + // https://github.com/elastic/kibana/issues/52714 + await this.testSubjects.waitForEnabled(`addSampleDataSet${id}`); + await this.common.sleep(1010); + await this.testSubjects.click(`addSampleDataSet${id}`); + await this.common.sleep(1010); + await this._waitForSampleDataLoadingAction(id); + return await this.isSampleDataSetInstalled(id); + }); } async removeSampleDataSet(id: string) { await this.openSampleDataAccordion(); - const isInstalled = await this.isSampleDataSetInstalled(id); - if (isInstalled) { + await this.retry.waitFor('sample data to be removed', async () => { + // account for the edge case where some how data is uninstalled just before the retry occurs + if (!(await this.isSampleDataSetInstalled(id))) { + return true; + } + this.log.debug(`Attempting to remove sample data: ${id}`); - await this.retry.waitFor('sample data to be removed', async () => { - // looks like overkill but we're hitting flaky cases where we click but it doesn't remove - await this.testSubjects.waitForEnabled(`removeSampleDataSet${id}`); - // https://github.com/elastic/kibana/issues/65949 - // Even after waiting for the "Remove" button to be enabled we still have failures - // where it appears the click just didn't work. - await this.common.sleep(1010); - await this.testSubjects.click(`removeSampleDataSet${id}`); - await this.common.sleep(1010); - await this._waitForSampleDataLoadingAction(id); - return !(await this.isSampleDataSetInstalled(id)); - }); - } + + // looks like overkill but we're hitting flaky cases where we click but it doesn't remove + await this.testSubjects.waitForEnabled(`removeSampleDataSet${id}`); + // https://github.com/elastic/kibana/issues/65949 + // Even after waiting for the "Remove" button to be enabled we still have failures + // where it appears the click just didn't work. + await this.common.sleep(1010); + await this.testSubjects.click(`removeSampleDataSet${id}`); + await this.common.sleep(1010); + await this._waitForSampleDataLoadingAction(id); + return !(await this.isSampleDataSetInstalled(id)); + }); } // loading action is either uninstall and install From 7a3a2b3cb8525acca46481508663d6fd98c5b27b Mon Sep 17 00:00:00 2001 From: Tim Sullivan Date: Tue, 5 Nov 2024 13:08:05 -0700 Subject: [PATCH 56/57] [unified_doc_viewer / unified_search] clean up SASS compilation warnings (#198876) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary This PR cleans up two noisy warnings seen when building Kibana: ``` [2024-11-04 21:26:37] │ warn worker stderr DEPRECATION WARNING: Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0. [2024-11-04 21:26:37] │ warn worker stderr [2024-11-04 21:26:37] │ warn worker stderr Recommendation: math.div($euiSizeXS, 2) or calc($euiSizeXS / 2) [2024-11-04 21:26:37] │ warn worker stderr [2024-11-04 21:26:37] │ warn worker stderr More info and automated migrator: https://sass-lang.com/d/slash-div [2024-11-04 21:26:37] │ warn worker stderr [2024-11-04 21:26:37] │ warn worker stderr ╷ [2024-11-04 21:26:37] │ warn worker stderr 94 │ padding: $euiSizeXS / 2 0 0 $euiSizeXS; [2024-11-04 21:26:37] │ warn worker stderr │ ^^^^^^^^^^^^^^ [2024-11-04 21:26:37] │ warn worker stderr ╵ [2024-11-04 21:26:37] │ warn worker stderr file:///home/tim/kibana/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.scss 94:14 root stylesheet [2024-11-04 21:26:37] │ warn worker stderr [2024-11-04 21:35:27] │ warn worker stderr DEPRECATION WARNING: Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0. [2024-11-04 21:35:27] │ warn worker stderr [2024-11-04 21:35:27] │ warn worker stderr Recommendation: math.div($euiSizeM, 2) or calc($euiSizeM / 2) [2024-11-04 21:35:27] │ warn worker stderr [2024-11-04 21:35:27] │ warn worker stderr More info and automated migrator: https://sass-lang.com/d/slash-div [2024-11-04 21:35:27] │ warn worker stderr [2024-11-04 21:35:27] │ warn worker stderr ╷ [2024-11-04 21:35:27] │ warn worker stderr 11 │ padding-block: $euiSizeM / 2; [2024-11-04 21:35:27] │ warn worker stderr │ ^^^^^^^^^^^^^ [2024-11-04 21:35:27] │ warn worker stderr ╵ [2024-11-04 21:35:27] │ warn worker stderr file:///home/tim/kibana/src/plugins/unified_search/public/filter_bar/filter_item/filter_item.scss 11:18 root stylesheet ``` --- .../public/components/doc_viewer_table/table.scss | 2 +- .../public/filter_bar/filter_item/filter_item.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.scss b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.scss index 19d556b0b142a..64e700c73fca5 100644 --- a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.scss +++ b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.scss @@ -90,7 +90,7 @@ } & [data-gridcell-column-id='pin_field'] .euiDataGridRowCell__content { - padding: $euiSizeXS / 2 0 0 $euiSizeXS; + padding: calc($euiSizeXS / 2) 0 0 $euiSizeXS; } .kbnDocViewer__fieldsGrid__pinAction { diff --git a/src/plugins/unified_search/public/filter_bar/filter_item/filter_item.scss b/src/plugins/unified_search/public/filter_bar/filter_item/filter_item.scss index 7a14dd3a64ef3..85c5b6bb9278f 100644 --- a/src/plugins/unified_search/public/filter_bar/filter_item/filter_item.scss +++ b/src/plugins/unified_search/public/filter_bar/filter_item/filter_item.scss @@ -7,7 +7,7 @@ .globalFilterItem { line-height: $euiSize; color: $euiTextColor; - padding-block: $euiSizeM / 2; + padding-block: calc($euiSizeM / 2); white-space: normal; /* 1 */ &:not(.globalFilterItem-isDisabled) { From c36940080b62287beaa37047f8b08f7f451f1765 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 5 Nov 2024 21:11:06 +0000 Subject: [PATCH 57/57] skip flaky suite (#198866) --- .../tests/transactions/transactions_groups_alerts.spec.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_alerts.spec.ts b/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_alerts.spec.ts index 7468437d8bc72..6c009682e1421 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_alerts.spec.ts +++ b/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_alerts.spec.ts @@ -137,7 +137,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { after(() => apmSynthtraceEsClient.clean()); - describe('Transaction groups with avg transaction duration alerts', () => { + // FLAKY: https://github.com/elastic/kibana/issues/198866 + describe.skip('Transaction groups with avg transaction duration alerts', () => { let ruleId: string; let alerts: ApmAlertFields[];